Introduction
Bramble provides an API which makes it easy for developers to integrate external systems with our platform.
Our API is designed to handle the data integration needs for your business or application while making the integration process as painless as possible.
Through the API you can you seamlessly synchronize your key workflow events with Bramble check-ins, inventory volumes, quality scores and much more.
We designed the Bramble API around REST principles influenced by the JSON API specification.
This version of our API reference is auto-generated from an Open API specification.
API Endpoint
All API calls must be made to https://api.SUBDOMAIN.brmbl.io/v1
.
JSON-only
All responses will be in JSON. Input
data passed through the request body can be form-encoded or JSON-encoded. If
using a JSON body, please specify the Content-Type
header as
application/json
.
In the API dates are represented as ISO8601. Each entity like entries or groups has a unique integer ID.
Pagination
The Bramble API supports two ways to paginate collections. The most common way to paginate is through offset-based pagination which is often used where the list of items is of a fixed, predetermined length.
In most cases we will paginate requests returning more than 100 results. You can
control pagination with the page
parameter (object). Pages start at
1
and the first page will be returned if no page is specified.
curl https://api.YOURDOMAIN.brmbl.io/v1/groups?page[number]=3&page[size]=10 \
-H "authorization: Bearer ACCESS_TOKEN"
Most endpoints will return meta.pagination
information in the response (see the example on the right).
"meta": {
"pagination": {
"page_number": 1,
"page_size": 25,
"total_entries": 1,
"total_pages": 1
}
}
In some cases an API endpoint supports marker-based pagination, either as an alternative to offset-based pagination or as a full replacement. Marker-based pagination is often used in cases where the length of the total set of items is either changing frequently, or where the total length might not be known upfront.
Sorting
Where an API returns a collection of items it often supports sorting of API responses.
Use the sort
query parameters to sort the collection. Use a hyphen prefix to sort in
Both the field and the direction to sort on is defined by the sort
query
parameter. Check the API endpoint's documentation for the possible options for
this value.
curl https://api.YOURDOMAIN.brmbl.io/v1/users/?sort=full_name,-inserted_at \
-H "authorization: Bearer ACCESS_TOKEN"
Working with Dates
When working with dates, the Bramble API endpoints expect the following:
Dates in ISO 8601 format (YYYY-MM-DD
). For example, date_happened
in the TaskEvent type.
Timestamps (date and time) in RFC 3339 format. For example, a UTC time
2022-01-15T00:00:00Z
.
An offset from UTC time indicates a time zone, such as
2013-01-15T00:00:00-08:00
(8 hours behind UTC time).
Clients must account for daylight savings time when providing offset dates.
Versioning
We follow the Global URL versioning scheme. This means that major changes to our API will be versioned in order to maintain backwards compatibility with existing integrations.
In order to notify consumers of upcoming upgrades, deprecated operations will be annotated using the OpenAPI spec
Getting Help or Contributing
We've made this document open source. Please report any issues or suggestions in the API doc issues. Any pull requests to improve this document are welcome too! If you need help using the API or need to discuss anything sensitive please message us at support@brmbl.io.
Errors
Each API call returns an HTTP status code that reflects the nature of the response. We have done our best to follow the HTTP status code conventions.
Any request that did not succeed will return a 4xx or 5xx error. The 4xx range means there was a problem with the request, like a missing parameter. The 5xx range means that something went wrong on our end.
Codes
The Bramble API returns the following HTTP status codes:
Code | Description |
---|---|
200 OK | Request succeeded |
201 Created | A resource was created |
204 No Content | Request succeeded but there is no response body |
400 Bad Request | Invalid request parameters |
401 Unauthorized | Incorrect or missing API key |
403 Forbidden | You do not have permission to view a resource or perform an action |
404 Not Found | The specified resource could not be found |
409 Conflict | The requested change cannot be done, because it conflicts with the Brmbl internal state of the resource |
422 Unprocessable Entity | The request body you sent is missing fields / fields have the wrong data type |
500 Internal Server Error | There was a problem on our end |
Response format
Error responses are separated into two categories:
- General errors like Internal Server Error or Authentication Error
- Client input related errors like JSON Error or Conflict Error
All error responses will have an errors
array field, containing objects with these attributes:
Parameter | Description |
---|---|
detail | Explanation of the error |
source.pointer | Available when a specific request parameter was responsible |
title | A concise summary of the error |
type | (If available), a machine readable type of error, for example "AUTHENTICATION_FAILED" |
Rate Limits
Each request is tracked by its unique IP. The limit is 1000 requests per minute. Hitting the limit will block further requests for that minute.
Please contact your Account Manager or Customer Success to request a limit increase.
Authentication
All calls to Bramble APIs are authenticated with an API key that an admin can generate within your Bramble app. Allowed resources can be customized per API key.
Please keep your API keys private.
API Keys created should never be exposed in untrusted contexts. Never put an API Key in client-side JavaScript, embed it in a web page, or otherwise allow users to access it. If an API Key is exposed, lost, or stolen, then it is compromised. Revoke compromised keys immediately from your Integration Settings page to prevent unauthorized access.
apiKey
Header: Authorization
Enter the token with the Bearer:
prefix, e.g. "Bearer brmbl_ZLXZ4PYn_E34CJQSRtlmf0CXLsKFjMOf7".
Checkins
Creates a checkin for a user
Request: Create a checkin
curl -X POST https://api.COMPANY.brmbl.io/v1/checkins \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_62sNelGk_nZswPhbpKtSJNm3NYg8M1UA1" \
-d @- << EOF
{
"date": "2022-02-23",
"user_id": "55791",
"work_location": "distributed"
}
EOF
Response: 201 Created
{
"data": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "2023-08-30T07:58:44Z",
"updated_at": "2023-08-30T07:58:44Z",
"work_location": "distributed"
},
"id": "18733",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/checkins/18733"
},
"relationships": {
"user": {
"data": {
"id": "55791",
"type": "users"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/users/55791",
"self": "http://api.COMPANY.brmbl.io/v1/checkins/18733/relationships/user"
}
}
},
"type": "checkins"
},
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/checkins/18733"
}
}
Response: 422 Unprocessable Entity
{
"errors": [
{
"detail": "Invalid format. Expected :date",
"source": {
"pointer": "/date"
},
"title": "Invalid value"
}
]
}
Response: 409 Conflict
{
"errors": [
{
"detail": "already entered on this day",
"source": {
"pointer": ":date"
},
"title": "Conflict"
}
]
}
You can create a checkin for a user per day.
A Checkin is used to track where you plan on doing work, and is also referenced in how we create the entries.
Request
POST /v1/checkins
Responses
Status | Description | Schema |
---|---|---|
201 | Checkin | |
401 | Authentication Error | |
404 | Not Found Error | |
409 | Conflict | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Fetch a checkin by ID
Request: Returns a checkin
curl -X GET https://api.COMPANY.brmbl.io/v1/checkins/18734 \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_niKJ26DQ_s7BQyYcRPPBWlwWEhuYjxMhE" \
Response: 200 OK
{
"data": {
"attributes": {
"date": "2020-01-01",
"inserted_at": "2023-08-30T07:58:44Z",
"updated_at": "2023-08-30T07:58:44Z",
"work_location": "office"
},
"id": "18734",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/checkins/18734"
},
"relationships": {
"user": {
"data": {
"id": "55793",
"type": "users"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/users/55793",
"self": "http://api.COMPANY.brmbl.io/v1/checkins/18734/relationships/user"
}
}
},
"type": "checkins"
},
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/checkins/18734"
}
}
Returns the checkin identified by an internal Bramble ID.
Request
GET /v1/checkins/{id}
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
id |
Checkin ID | path | integer | true | 233 | |
include |
Comma separated list of relationships to include. | query | array | false | user | |
fields |
Comma separated list of fields to return. | query | object | false |
Responses
Status | Description | Schema |
---|---|---|
200 | Checkin | |
401 | Authentication Error | |
404 | Not Found Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Cost Categories
Retrieve a cost category
Request: Returns a cost category
curl -X GET https://api.COMPANY.brmbl.io/v1/cost_categories/5829 \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_Et8II6Oh_oTC4R1tQ0LqywotgZP6nDFjC" \
Response: 200 OK
{
"data": {
"attributes": {
"description": "pt-xJQtlE5W",
"inserted_at": "2023-08-30T07:58:44Z",
"name": "Auto",
"state": "active",
"updated_at": "2023-08-30T07:58:44Z"
},
"id": "5829",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/cost_categories/5829"
},
"relationships": {},
"type": "cost_categories"
},
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/cost_categories/5829"
}
}
You can fetch the details of a single cost category.
Request
GET /v1/cost_categories/{id}
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
id |
Cost category ID to retrieve. | path | integer | true | 233 |
Responses
Status | Description | Schema |
---|---|---|
200 | Cost Category Response | |
401 | Authentication Error | |
404 | Not Found Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
List all cost categories
Request: List of cost categories
curl -X GET https://api.COMPANY.brmbl.io/v1/cost_categories?page[number]=1&page[size]=2&sort=name&fields[cost_categories]=name,state \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_xyHAwnfS_XbLg0lOl50xsxaR7Mi2NztpE" \
Response: 200 OK
{
"data": [
{
"attributes": {
"name": "Auto",
"state": "active"
},
"id": "5821",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/cost_categories/5821"
},
"relationships": {},
"type": "cost_categories"
},
{
"attributes": {
"name": "Property",
"state": "active"
},
"id": "5822",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/cost_categories/5822"
},
"relationships": {},
"type": "cost_categories"
}
],
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/cost_categories?fields%5Bcost_categories%5D=name%2Cstate&page%5Bnumber%5D=1&page%5Bsize%5D=2&sort=name"
},
"meta": {
"pagination": {
"page_number": 1,
"page_size": 2,
"total_entries": 2,
"total_pages": 1
}
}
}
Response: 422 Unprocessable Entity
{
"errors": [
{
"detail": "Unexpected field: FOO",
"source": {
"pointer": "/FOO"
},
"title": "Invalid value"
}
]
}
You can fetch a list of all cost categories.
You can optionally filter the list by state.
Request
GET /v1/cost_categories
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
state |
Filter cost categories by given states (comma-separated) | query | array | false | active,archived | |
page |
query | Page | false | |||
sort |
Comma separated list of fields to sort by. Prefixing a field with a minus sign (-) sorts descending. | query | array | false | -name,updated_at,-state | |
fields |
Comma separated list of fields to return. | query | object | false |
Responses
Status | Description | Schema |
---|---|---|
200 | Cost Categories | |
401 | Authentication Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Entries
Creates a user's entry
Request: Create a production task entry
curl -X POST https://api.COMPANY.brmbl.io/v1/entries \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_yNgF4YRT_qiqTuppPzH9V9Km4bQKcWNq5" \
-d @- << EOF
{
"date": "2022-02-23",
"production_task_id": 14949,
"user_id": "55566",
"volume": 1
}
EOF
Response: 201 Created
{
"data": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "2023-08-30T07:58:41Z",
"minutes": "10.00",
"updated_at": "2023-08-30T07:58:41Z",
"volume": 1
},
"id": "110591",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/entries/110591"
},
"relationships": {
"production_task": {
"data": {
"id": "14949",
"type": "production_tasks"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/production_tasks/14949",
"self": "http://api.COMPANY.brmbl.io/v1/entries/110591/relationships/production_task"
}
},
"user": {
"data": {
"id": "55566",
"type": "users"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/users/55566",
"self": "http://api.COMPANY.brmbl.io/v1/entries/110591/relationships/user"
}
}
},
"type": "entries"
},
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/entries/110591"
}
}
Response: 422 Unprocessable Entity
{
"errors": [
{
"detail": "Failed to cast value to one of: no schemas validate",
"source": {
"pointer": "/"
},
"title": "Invalid value"
}
]
}
Response: 409 Conflict
{
"errors": [
{
"detail": "already entered on this day",
"source": {
"pointer": ":production_task_id"
},
"title": "Conflict"
}
]
}
Request: Create a supporting task entry
curl -X POST https://api.COMPANY.brmbl.io/v1/entries \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_L2YVZYtN_w7od4FFCh9jA0pK62SYThRJw" \
-d @- << EOF
{
"date": "2022-02-23",
"minutes": 450,
"supporting_task_id": 13275,
"user_id": "55594"
}
EOF
Response: 201 Created
{
"data": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "2023-08-30T07:58:41Z",
"minutes": "450",
"updated_at": "2023-08-30T07:58:41Z",
"volume": null
},
"id": "110607",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/entries/110607"
},
"relationships": {
"supporting_task": {
"data": {
"id": "13275",
"type": "supporting_tasks"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/supporting_tasks/13275",
"self": "http://api.COMPANY.brmbl.io/v1/entries/110607/relationships/supporting_task"
}
},
"user": {
"data": {
"id": "55594",
"type": "users"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/users/55594",
"self": "http://api.COMPANY.brmbl.io/v1/entries/110607/relationships/user"
}
}
},
"type": "entries"
},
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/entries/110607"
}
}
Response: 422 Unprocessable Entity
{
"errors": [
{
"detail": "Failed to cast value to one of: no schemas validate",
"source": {
"pointer": "/"
},
"title": "Invalid value"
}
]
}
Response: 409 Conflict
{
"errors": [
{
"detail": "already entered on this day",
"source": {
"pointer": ":supproting_task_id"
},
"title": "Conflict"
}
]
}
Creates user's entry for a day, could be a production task or supporting task.
Request
POST /v1/entries
Responses
Status | Description | Schema |
---|---|---|
201 | Entry Response | |
401 | Authentication Error | |
404 | Not Found Error | |
409 | Conflict | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Retrieve an entry.
Request: Returns an entry
curl -X GET https://api.COMPANY.brmbl.io/v1/entries/110578 \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_ld9z3Dzr_qAM4SkZsyQZtClJg5FAotZr1" \
Response: 200 OK
{
"data": {
"attributes": {
"date": "2020-01-01",
"inserted_at": "2023-08-30T07:58:40Z",
"minutes": "150.00",
"updated_at": "2023-08-30T07:58:40Z",
"volume": 15
},
"id": "110578",
"links": {
"self": "http://company.brmbl.io/v1/entries/110578"
},
"relationships": {},
"type": "entries"
},
"included": [],
"links": {
"self": "http://company.brmbl.io/v1/entries/110578"
}
}
Request: Returns an entry
curl -X GET https://api.COMPANY.brmbl.io/v1/entries/110579?include=production_task \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_7uVRbAmY_8EKulipnpKzbREG3d9dRYMco" \
Response: 200 OK
{
"data": {
"attributes": {
"date": "2020-01-01",
"inserted_at": "2023-08-30T07:58:40Z",
"minutes": "150.00",
"updated_at": "2023-08-30T07:58:40Z",
"volume": 15
},
"id": "110579",
"links": {
"self": "http://company.brmbl.io/v1/entries/110579"
},
"relationships": {
"production_task": {
"data": {
"id": "14942",
"type": "production_tasks"
},
"links": {
"related": "http://company.brmbl.io/v1/production_tasks/14942",
"self": "http://company.brmbl.io/v1/entries/110579/relationships/production_task"
}
}
},
"type": "entries"
},
"included": [
{
"attributes": {
"description": "pt-EhWTRVZt",
"improvement_category": "rpa",
"inserted_at": "2023-08-30T07:58:40Z",
"name": "TaskB",
"state": "detached",
"updated_at": "2023-08-30T07:58:40Z"
},
"id": "14942",
"links": {
"self": "http://company.brmbl.io/v1/production_tasks/14942"
},
"relationships": {},
"type": "production_tasks"
}
],
"links": {
"self": "http://company.brmbl.io/v1/entries/110579"
}
}
Request: Returns an entry
curl -X GET https://api.COMPANY.brmbl.io/v1/entries/110580?include=supporting_task \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_7uVRbAmY_8EKulipnpKzbREG3d9dRYMco" \
Response: 200 OK
{
"data": {
"attributes": {
"date": "2020-01-01",
"inserted_at": "2023-08-30T07:58:40Z",
"minutes": "60.00",
"updated_at": "2023-08-30T07:58:40Z",
"volume": null
},
"id": "110580",
"links": {
"self": "http://company.brmbl.io/v1/entries/110580"
},
"relationships": {
"supporting_task": {
"data": {
"id": "13260",
"type": "supporting_tasks"
},
"links": {
"related": "http://company.brmbl.io/v1/supporting_tasks/13260",
"self": "http://company.brmbl.io/v1/entries/110580/relationships/supporting_task"
}
}
},
"type": "entries"
},
"included": [
{
"attributes": {
"category": "MEET",
"description": "45hA8ar3",
"inserted_at": "2023-08-30T07:58:40Z",
"name": "45hA8ar3",
"state": "active",
"updated_at": "2023-08-30T07:58:40Z"
},
"id": "13260",
"links": {
"self": "http://company.brmbl.io/v1/supporting_tasks/13260"
},
"relationships": {},
"type": "supporting_tasks"
}
],
"links": {
"self": "http://company.brmbl.io/v1/entries/110580"
}
}
You can fetch the details of a single entry.
Request
GET /v1/entries/{id}
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
id |
Entry ID to retrieve. | path | integer | true | 233 | |
include |
Comma separated list of relationships to include. | query | array | false | users | |
fields |
Comma separated list of fields to return. | query | object | false |
Responses
Status | Description | Schema |
---|---|---|
200 | Entry Response | |
401 | Authentication Error | |
404 | Not Found Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
List all entries
Request: List of entries (filtered by date)
curl -X GET https://api.COMPANY.brmbl.io/v1/entries?date=2020-01-02&page[number]=1&page[size]=10&sort=date&fields[entries]=volume,date \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_N2jnRjUS_ZFoh5Rj0yxYn0ydrCqEF4kHl" \
Response: 200 OK
{
"data": [
{
"attributes": {
"date": "2020-01-02",
"volume": 15
},
"id": "110583",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/entries/110583"
},
"relationships": {},
"type": "entries"
},
{
"attributes": {
"date": "2020-01-02",
"volume": 20
},
"id": "110584",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/entries/110584"
},
"relationships": {},
"type": "entries"
}
],
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/entries?date=2020-01-02&fields%5Bentries%5D=volume%2Cdate&page%5Bnumber%5D=1&page%5Bsize%5D=10&sort=date"
},
"meta": {
"pagination": {
"page_number": 1,
"page_size": 10,
"total_entries": 2,
"total_pages": 1
}
}
}
You can fetch a list of all entries.
Request
GET /v1/entries
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
date |
Filter results for this date | query | string | false | 2022-02-28 | |
user_id |
Filter results with this Bramble user ID | query | integer | false | 12 | |
page |
query | Page | false | |||
sort |
Comma separated list of fields to sort by. Prefixing a field with a minus sign (-) sorts descending. | query | array | false | -date,-volume | |
include |
Comma separated list of relationships to include. | query | array | false | users | |
fields |
Comma separated list of fields to return. | query | object | false |
Responses
Status | Description | Schema |
---|---|---|
200 | Entries | |
401 | Authentication Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Updates a user's entry
Request: Update a supporting task entry. Note that this will replace the existing values.
curl -X PUT https://api.COMPANY.brmbl.io/v1/entries/110604 \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_7zvayYPk_wfdRrpaPdjANEzKcB7bA9ZB0" \
-d @- << EOF
{
"date": "2022-02-23",
"production_task_id": 14960,
"user_id": "55589",
"volume": 1
}
EOF
Response: 201 Created
{
"data": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "2023-08-30T07:58:41Z",
"minutes": "10.00",
"updated_at": "2023-08-30T07:58:41Z",
"volume": 1
},
"id": "110604",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/entries/110604"
},
"relationships": {
"production_task": {
"data": {
"id": "14960",
"type": "production_tasks"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/production_tasks/14960",
"self": "http://api.COMPANY.brmbl.io/v1/entries/110604/relationships/production_task"
}
},
"user": {
"data": {
"id": "55589",
"type": "users"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/users/55589",
"self": "http://api.COMPANY.brmbl.io/v1/entries/110604/relationships/user"
}
}
},
"type": "entries"
},
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/entries/110604"
}
}
Response: 422 Unprocessable Entity
{
"errors": [
{
"detail": "Failed to cast value to one of: no schemas validate",
"source": {
"pointer": "/"
},
"title": "Invalid value"
}
]
}
Response: 409 Conflict
{
"errors": [
{
"detail": "entry is locked",
"source": {
"pointer": ":date"
},
"title": "Conflict"
}
]
}
Request: Update a supporting task entry. Note that this will replace the existing values.
curl -X PUT https://api.COMPANY.brmbl.io/v1/entries/110601 \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_doZV70LF_pCNGDKeIVccXyjxx6hbGg5aK" \
-d @- << EOF
{
"date": "2022-02-23",
"minutes": 450,
"supporting_task_id": 13271,
"user_id": "55583"
}
EOF
Response: 201 Created
{
"data": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "2023-08-30T07:58:41Z",
"minutes": "450",
"updated_at": "2023-08-30T07:58:41Z",
"volume": null
},
"id": "110601",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/entries/110601"
},
"relationships": {
"supporting_task": {
"data": {
"id": "13271",
"type": "supporting_tasks"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/supporting_tasks/13271",
"self": "http://api.COMPANY.brmbl.io/v1/entries/110601/relationships/supporting_task"
}
},
"user": {
"data": {
"id": "55583",
"type": "users"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/users/55583",
"self": "http://api.COMPANY.brmbl.io/v1/entries/110601/relationships/user"
}
}
},
"type": "entries"
},
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/entries/110601"
}
}
Updates user's entry for a day, could be a production task or supporting task.
Request
PATCH /v1/entries/{id}
Responses
Status | Description | Schema |
---|---|---|
201 | Entry Response | |
401 | Authentication Error | |
404 | Not Found Error | |
409 | Conflict | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Groups
Retrieve a group
Request: Returns a group
curl -X GET https://api.COMPANY.brmbl.io/v1/groups/51200?include=users \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_3H7NvQs4_0YlRzERUHG6IeZMfMc9oyyO5" \
Response: 200 OK
{
"data": {
"attributes": {
"inserted_at": "2023-08-30T07:58:42Z",
"name": "Sales",
"state": "active",
"updated_at": "2023-08-30T07:58:42Z"
},
"id": "51200",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/groups/51200"
},
"relationships": {
"users": {
"data": [
{
"id": "55621",
"type": "users"
}
],
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/users",
"self": "http://api.COMPANY.brmbl.io/v1/groups/51200/relationships/users"
}
}
},
"type": "groups"
},
"included": [
{
"attributes": {
"account_role": null,
"email": "edwina_leannon@muller.org",
"full_name": "Some User",
"inserted_at": "2023-08-30T07:58:42Z",
"preferred_first_name": "Some",
"state": "invited",
"team_role": "team_contributor",
"timezone": "Etc/UTC",
"updated_at": "2023-08-30T07:58:42Z"
},
"id": "55621",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/users/55621"
},
"relationships": {},
"type": "users"
}
],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/groups/51200"
}
}
You can fetch the details of a single group, using it's Bramble ID.
Request
GET /v1/groups/{id}
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
id |
The ID of the group to fetch | path | integer | true | 233 | |
include |
Comma separated list of relationships to include. | query | array | false | parent,users | |
fields |
Comma separated list of fields to return. | query | object | false |
Responses
Status | Description | Schema |
---|---|---|
200 | Group Response | |
401 | Authentication Error | |
404 | Not Found Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
List all groups
Request: List of groups (filtered by parent_id)
curl -X GET https://api.COMPANY.brmbl.io/v1/groups?ancestors_id=51180&page[number]=1&page[size]=2&sort=name&fields[groups]=name,state \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_1uojE1Bc_uuInQBa5fVqqCBDUzni6VdBa" \
Response: 200 OK
{
"data": [
{
"attributes": {
"name": "division",
"state": "active"
},
"id": "51181",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/groups/51181"
},
"relationships": {},
"type": "groups"
},
{
"attributes": {
"name": "root",
"state": "active"
},
"id": "51180",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/groups/51180"
},
"relationships": {},
"type": "groups"
}
],
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/groups?ancestors_id=51180&fields%5Bgroups%5D=name%2Cstate&page%5Bnumber%5D=1&page%5Bsize%5D=2&sort=name"
},
"meta": {
"pagination": {
"page_number": 1,
"page_size": 2,
"total_entries": 3,
"total_pages": 2
}
}
}
Response: 422 Unprocessable Entity
{
"errors": [
{
"detail": "Unexpected field: FOO",
"source": {
"pointer": "/FOO"
},
"title": "Invalid value"
}
]
}
You can fetch a list of all groups.
You can optionally filter the list by group status, or by to all groups that are descendant from a given parent group (using root_group_ids
).
Request
GET /v1/groups
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
ancestors_id |
Filter groups who have these IDs above them in the group hierarchy | query | array | false | 1,51,42 | |
parent_id |
Filter groups who have these IDs above them in the group hierarchy | query | array | false | 1,51,42 | |
state |
Filter groups by given states (comma-separated) | query | array | false | active,archived | |
page |
query | Page | false | |||
sort |
Comma separated list of fields to sort by. Prefixing a field with a minus sign (-) sorts descending. | query | array | false | -name,updated_at,-state | |
include |
Comma separated list of relationships to include. | query | array | false | parent,users | |
fields |
Comma separated list of fields to return. | query | object | false |
Responses
Status | Description | Schema |
---|---|---|
200 | Groups | |
401 | Authentication Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Identities
Retrieve a source
Request: Details on a given source
curl -X GET https://api.COMPANY.brmbl.io/v1/sources/1671 \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_i3KN4vgb_LI4BRmbpNLhFn9iNQ3rfdEbS" \
Response: 200 OK
{
"data": {
"description": "Guidewire data source",
"id": 1671,
"name": "guidewire",
"state": "active",
"type": "source"
}
}
You can fetch the details of a single source, using it's Bramble ID.
Request
GET /v1/sources/{id}
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
id |
The ID of the source to fetch | path | integer | true | 233 |
Responses
Status | Description | Schema |
---|---|---|
200 | Source Response | |
401 | Authentication Error | |
404 | Not Found Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
List all sources
Request: List of sources (filtered and sorted)
curl -X GET https://api.COMPANY.brmbl.io/v1/sources?page[number]=1&page[size]=10&sort=name&state=active,archived,suspended&term=guidewire \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_ZG3iRSLr_X7lXX19pplgbitSIPevtH2Mv" \
Response: 200 OK
{
"data": [
{
"description": "Guidewire data source",
"id": 1669,
"name": "Active Source",
"state": "active",
"type": "source"
},
{
"description": "Guidewire data source",
"id": 1670,
"name": "Archived Source",
"state": "archived",
"type": "source"
},
{
"description": "Guidewire data source",
"id": 1668,
"name": "Suspended Source",
"state": "suspended",
"type": "source"
}
],
"meta": {
"pagination": {
"page_number": 1,
"page_size": 10,
"total_entries": 3,
"total_pages": 1
}
}
}
Response: 422 Unprocessable Entity
{
"errors": [
{
"detail": "Unexpected field: FOO",
"source": {
"pointer": "/FOO"
},
"title": "Invalid value"
}
]
}
You can fetch a list of all sources.
You can optionally filter the list by source status.
Request
GET /v1/sources
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
state |
Filter sources by given states (comma-separated) | query | array | false | active,archived | |
term |
Only show sources with names or descriptions containing this term | query | string | false | file | |
page |
query | Page | false | |||
sort |
Comma separated list of fields to sort by. Prefixing a field with a minus sign (-) sorts descending. | query | array | false | -name,updated_at,-state |
Responses
Status | Description | Schema |
---|---|---|
200 | Sources | |
401 | Authentication Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Search for a production task id given a source id and a JSON payload
Request: Search for task identity
curl -X POST https://api.COMPANY.brmbl.io/v1/task/identities/1682/search \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_2q9JahyR_zuxaNKzzezFcDj4cKmbHv4wi" \
-d @- << EOF
{
"client": "bank1",
"state": "new"
}
EOF
Response: 200 OK
{
"data": {
"id": "605",
"production_task_id": 15023,
"source_id": 1682,
"value": {
"client": "bank1",
"state": "new"
}
}
}
Response: 422 Unprocessable Entity
{
"errors": [
{
"detail": "Object property count 0 is less than minProperties: 1",
"source": {
"pointer": "/"
},
"title": "Invalid value"
}
]
}
Response: 404 Not Found
{
"errors": [
{
"code": "40401",
"detail": "Could not find task identity matching: {\"client\":\"nonexistent\",\"state\":\"new\"}",
"status": "404",
"title": "Resource Not Found"
}
]
}
You can search for a production task id given a source id and a JSON payload containing the unstructured data to search for.
Request
POST /v1/task/identities/{source_id}/search
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
source_id |
The ID of the source to search in | path | string | true | 233 | |
test |
Is it a test query? (not counted in stats) | query | boolean | false | true |
Responses
Status | Description | Schema |
---|---|---|
200 | Task Identity | |
401 | Authentication Error | |
404 | Not Found Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Search for a user id given a source id and a JSON payload
Request: Search for user identity
curl -X POST https://api.COMPANY.brmbl.io/v1/user/identities/1658/search \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_EyIYlyiX_GuVAyLQfm1Fpcbh97UMxcVP0" \
-d @- << EOF
{
"uid": "glennr"
}
EOF
Response: 200 OK
{
"data": {
"id": "631",
"source_id": 1658,
"user_id": 55733,
"value": {
"uid": "glennr"
}
}
}
Response: 422 Unprocessable Entity
{
"errors": [
{
"detail": "Object property count 0 is less than minProperties: 1",
"source": {
"pointer": "/"
},
"title": "Invalid value"
}
]
}
Response: 404 Not Found
{
"errors": [
{
"code": "40401",
"detail": "Could not find user identity matching: {\"uid\":\"nonexistent\"}",
"status": "404",
"title": "Resource Not Found"
}
]
}
You can search for a user id given a source id and a JSON payload containing the unstructured data to search for.
Request
POST /v1/user/identities/{source_id}/search
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
source_id |
The ID of the source to search in | path | string | true | 233 | |
test |
Is it a test query? (not counting in stats) | query | boolean | false | true |
Responses
Status | Description | Schema |
---|---|---|
200 | User Identity | |
401 | Authentication Error | |
404 | Not Found Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Production Tasks
Retrieve a production task
Request: Retrieve a production task
curl -X GET https://api.COMPANY.brmbl.io/v1/production_tasks/15016 \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_wB3AQJGe_tYaj8CHIcJeCLMRHXrgdBeJY" \
Response: 200 OK
{
"data": {
"attributes": {
"description": "pt-G4Jz3N9f",
"improvement_category": "rpa",
"inserted_at": "2023-08-30T07:58:44Z",
"name": "Customer Outreach",
"state": "active",
"updated_at": "2023-08-30T07:58:44Z"
},
"id": "15016",
"links": {
"self": "http://www.example.com/v1/production_tasks/15016"
},
"relationships": {},
"type": "production_tasks"
},
"included": [],
"links": {
"self": "http://www.example.com/v1/production_tasks/15016"
}
}
You can fetch the details of a single production task.
Request
GET /v1/production_tasks/{id}
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
id |
Production task ID to retrieve. | path | integer | true | 233 |
Responses
Status | Description | Schema |
---|---|---|
200 | ProductionTask | |
401 | Authentication Error | |
404 | Not Found Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
List all Production Tasks
Request: List all production tasks (filtered).
curl -X GET https://api.COMPANY.brmbl.io/v1/production_tasks?improvement_category=core \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_1SkOv6vK_oegknBlnuq20aWw9YJVTGGqh" \
Response: 200 OK
{
"data": [
{
"attributes": {
"description": "pt-yrowEd1g",
"improvement_category": "core",
"inserted_at": "2023-08-30T07:58:44Z",
"name": "Lodge Claim",
"state": "active",
"updated_at": "2023-08-30T07:58:44Z"
},
"id": "15020",
"links": {
"self": "http://www.example.com/v1/production_tasks/15020"
},
"relationships": {
"process": {
"data": {
"id": "9195",
"type": "process"
},
"links": {
"related": "http://www.example.com/v1/process/9195",
"self": "http://www.example.com/v1/production_tasks/15020/relationships/process"
}
}
},
"type": "production_tasks"
}
],
"included": [],
"links": {
"self": "http://www.example.com/v1/production_tasks?improvement_category=core"
},
"meta": {
"pagination": {
"page_number": 1,
"page_size": 25,
"total_entries": 1,
"total_pages": 1
}
}
}
You can fetch a list of all production tasks.
Request
GET /v1/production_tasks
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
group_id |
Filter the tasks owned by the given group(s). | query | array | false | 1, 2, 3 | |
improvement_category |
Filter the tasks in given continuous improvement category(ies). | query | array | false | core,rpa | |
process_id |
Filter by Process(es) | query | array | false | 1,2,3 | |
state |
Filter by the task status. | query | array | false | active,archived | |
page |
query | Page | false | |||
sort |
Comma separated list of fields to sort by. Prefixing a field with a minus sign (-) sorts descending. | query | array | false | -name,ideal_task_time | |
include |
Comma separated list of relationships to include. | query | array | false | process | |
fields |
Comma separated list of fields to return. | query | object | false |
Responses
Status | Description | Schema |
---|---|---|
200 | Production Tasks | |
401 | Authentication Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Quality Scores
Create a Quality score
Request: Create a quality score
curl -X POST https://api.COMPANY.brmbl.io/v1/quality_scores \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_QLsJWkZP_oowGeYcwALnjPXfjqtPfGRCY" \
-d @- << EOF
{
"date": "2022-02-23",
"note": null,
"score": 0.95,
"user_id": "55687"
}
EOF
Response: 201 Created
{
"data": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "2023-08-30T07:58:43Z",
"note": null,
"score": 0.95,
"updated_at": "2023-08-30T07:58:43Z"
},
"id": "1793",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/quality_scores/1793"
},
"relationships": {
"user": {
"data": {
"id": "55687",
"type": "users"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/users/55687",
"self": "http://api.COMPANY.brmbl.io/v1/quality_scores/1793/relationships/user"
}
}
},
"type": "quality_scores"
},
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/quality_scores/1793"
}
}
Response: 422 Unprocessable Entity
{
"errors": [
{
"detail": "Invalid format. Expected :date",
"source": {
"pointer": "/date"
},
"title": "Invalid value"
}
]
}
Response: 409 Conflict
{
"errors": [
{
"detail": "already entered on this day",
"source": {
"pointer": ":user_id"
},
"title": "Conflict"
}
]
}
You can create a quality score for a user, for a particular day.
Request
POST /v1/quality_scores
Responses
Status | Description | Schema |
---|---|---|
201 | Quality Score Response | |
401 | Authentication Error | |
404 | Not Found Error | |
409 | Conflict | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Retrieve a quality score
Request: Retrieve a quality score
curl -X GET https://api.COMPANY.brmbl.io/v1/quality_scores/1792 \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_AWlk4k5m_PNtWlSca4zM4jQGTej6TFE2N" \
Response: 200 OK
{
"data": {
"attributes": {
"date": "2023-01-01",
"inserted_at": "2023-08-30T07:58:43Z",
"note": null,
"score": 0.5,
"updated_at": "2023-08-30T07:58:43Z"
},
"id": "1792",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/quality_scores/1792"
},
"relationships": {
"user": {
"data": {
"id": "55685",
"type": "users"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/users/55685",
"self": "http://api.COMPANY.brmbl.io/v1/quality_scores/1792/relationships/user"
}
}
},
"type": "quality_scores"
},
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/quality_scores/1792"
}
}
Response: 404 Not Found
{
"errors": [
{
"code": "40401",
"detail": "Could not find quality score with id: 1800",
"status": "404",
"title": "Resource Not Found"
}
]
}
You can fetch the details of a single quality score.
Request
GET /v1/quality_scores/{id}
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
id |
Quality score ID to retrieve. | path | integer | true | 233 | |
include |
Comma separated list of relationships to include. | query | array | false | user | |
fields |
Comma separated list of fields to return. | query | object | false |
Responses
Status | Description | Schema |
---|---|---|
200 | Quality Score Response | |
401 | Authentication Error | |
404 | Not Found Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
List all quality scores
Request: List of quality scores (filtered by date)
curl -X GET https://api.COMPANY.brmbl.io/v1/quality_scores?date=2023-01-02&page[number]=1&page[size]=10&sort=score&fields[quality_scores]=score,date \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_nEUA2IVO_su72Tedq6Ml1ROHmNY7z9eY2" \
Response: 200 OK
{
"data": [
{
"attributes": {
"date": "2023-01-02",
"score": 0.25
},
"id": "1780",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/quality_scores/1780"
},
"relationships": {
"user": {
"data": {
"id": "55671",
"type": "users"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/users/55671",
"self": "http://api.COMPANY.brmbl.io/v1/quality_scores/1780/relationships/user"
}
}
},
"type": "quality_scores"
},
{
"attributes": {
"date": "2023-01-02",
"score": 0.5
},
"id": "1781",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/quality_scores/1781"
},
"relationships": {
"user": {
"data": {
"id": "55672",
"type": "users"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/users/55672",
"self": "http://api.COMPANY.brmbl.io/v1/quality_scores/1781/relationships/user"
}
}
},
"type": "quality_scores"
}
],
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/quality_scores?date=2023-01-02&fields%5Bquality_scores%5D=score%2Cdate&page%5Bnumber%5D=1&page%5Bsize%5D=10&sort=score"
},
"meta": {
"pagination": {
"page_number": 1,
"page_size": 10,
"total_entries": 2,
"total_pages": 1
}
}
}
You can fetch a list of all quality scores.
Request
GET /v1/quality_scores
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
date |
Filter results scored for this date | query | string | false | 2022-02-28 | |
user_id |
Filter results with this Bramble user ID | query | integer | false | 12 | |
page |
query | Page | false | |||
sort |
Comma separated list of fields to sort by. Prefixing a field with a minus sign (-) sorts descending. | query | array | false | -date,-score | |
include |
Comma separated list of relationships to include. | query | array | false | user | |
fields |
Comma separated list of fields to return. | query | object | false |
Responses
Status | Description | Schema |
---|---|---|
200 | Quality Scores | |
401 | Authentication Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Service Level Scores
Create a Service Level score
Request: Create a service level
curl -X POST https://api.COMPANY.brmbl.io/v1/service_levels \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_NX00w2jh_YPssWC0taxFyKUfZ6JCNFq0W" \
-d @- << EOF
{
"date": "2022-02-23",
"note": null,
"production_task_id": 14980,
"score": 0.55
}
EOF
Response: 201 Created
{
"data": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "2023-08-30T07:58:42Z",
"note": null,
"score": 0.55,
"updated_at": "2023-08-30T07:58:42Z"
},
"id": "1383",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/service_levels/1383"
},
"relationships": {
"production_task": {
"data": {
"id": "14980",
"type": "production_tasks"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/production_tasks/14980",
"self": "http://api.COMPANY.brmbl.io/v1/service_levels/1383/relationships/production_task"
}
}
},
"type": "service_levels"
},
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/service_levels/1383"
}
}
Response: 422 Unprocessable Entity
{
"errors": [
{
"detail": "Invalid format. Expected :date",
"source": {
"pointer": "/date"
},
"title": "Invalid value"
}
]
}
Response: 409 Conflict
{
"errors": [
{
"detail": "already entered on this day",
"source": {
"pointer": ":production_task_id"
},
"title": "Conflict"
}
]
}
You can create a service level score for a task.
A service level ranks the SLA for a Production Task on a specific date.
If a Service level score already exists for the given task+date then a 422 error will be returned.
Request
POST /v1/service_levels
Responses
Status | Description | Schema |
---|---|---|
201 | Service Level Response | |
401 | Authentication Error | |
404 | Not Found Error | |
409 | Conflict | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Retrieve a service level
Request: Retrieve a service level
curl -X GET https://api.COMPANY.brmbl.io/v1/service_levels/1382 \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_H43lHVTq_dpK1bgR4ibt2YV4TyyK1c3c5" \
Response: 200 OK
{
"data": {
"attributes": {
"date": "2020-01-01",
"inserted_at": "2023-08-30T07:58:42Z",
"note": null,
"score": 0.1,
"updated_at": "2023-08-30T07:58:42Z"
},
"id": "1382",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/service_levels/1382"
},
"relationships": {
"production_task": {
"data": {
"id": "14979",
"type": "production_tasks"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/production_tasks/14979",
"self": "http://api.COMPANY.brmbl.io/v1/service_levels/1382/relationships/production_task"
}
}
},
"type": "service_levels"
},
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/service_levels/1382"
}
}
Response: 404 Not Found
{
"errors": [
{
"code": "40401",
"detail": "Could not find service level with id: 1390",
"status": "404",
"title": "Resource Not Found"
}
]
}
You can fetch the details of a single service level score.
Request
GET /v1/service_levels/{id}
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
id |
The ID of the Service level to fetch | path | integer | true | 233 | |
include |
Comma separated list of relationships to include. | query | array | false | production_task | |
fields |
Comma separated list of fields to return. | query | object | false |
Responses
Status | Description | Schema |
---|---|---|
200 | Service Level Response | |
401 | Authentication Error | |
404 | Not Found Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
List all service levels
Request: List all service levels, filtered.
curl -X GET https://api.COMPANY.brmbl.io/v1/service_levels?date=2023-01-01,2023-01-02&page[number]=1&page[size]=100&sort=-score,date&fields[service_levels]=score \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_QAamI0BN_176AP4iH2uSZUB9GV9fHDgFH" \
Response: 200 OK
{
"data": [
{
"attributes": {
"score": 0.9
},
"id": "1371",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/service_levels/1371"
},
"relationships": {
"production_task": {
"data": {
"id": "14971",
"type": "production_tasks"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/production_tasks/14971",
"self": "http://api.COMPANY.brmbl.io/v1/service_levels/1371/relationships/production_task"
}
}
},
"type": "service_levels"
},
{
"attributes": {
"score": 0.5
},
"id": "1370",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/service_levels/1370"
},
"relationships": {
"production_task": {
"data": {
"id": "14970",
"type": "production_tasks"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/production_tasks/14970",
"self": "http://api.COMPANY.brmbl.io/v1/service_levels/1370/relationships/production_task"
}
}
},
"type": "service_levels"
}
],
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/service_levels?date=2023-01-01%2C2023-01-02&fields%5Bservice_levels%5D=score&page%5Bnumber%5D=1&page%5Bsize%5D=100&sort=-score%2Cdate"
},
"meta": {
"pagination": {
"page_number": 1,
"page_size": 100,
"total_entries": 2,
"total_pages": 1
}
}
}
You can fetch a list of all service level scores.
You can optionally filter the list by score date and production task.
You can also optionally request the page and page size to limit and paginate through the results.
Request
GET /v1/service_levels
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
date |
Filter results scored for this date | query | array | false | 2022-02-28,2022-02-29 | |
fields |
Comma separated list of fields to return. | query | object | false | ||
include |
Comma separated list of relationships to include. | query | array | false | production_task | |
page |
query | Page | false | |||
production_task_id |
Filter results by task id | query | array | false | 12 | |
sort |
Comma separated list of fields to sort by. Prefixing a field with a minus sign (-) sorts descending. | query | array | false | -date,-score |
Responses
Status | Description | Schema |
---|---|---|
200 | Service Levels | |
401 | Authentication Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Task Input
Adjust an inventory balance
Request: Create a task input
curl -X POST https://api.COMPANY.brmbl.io/v1/task_inputs \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_Q1EQnyeg_lCm45gn2twwSFisxjpca3ydn" \
-d @- << EOF
{
"date": "2022-02-23",
"group_id": "51282",
"production_task_id": 14999,
"volume": 1
}
EOF
Response: 201 Created
{
"data": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "2023-08-30T07:58:43Z",
"updated_at": "2023-08-30T07:58:43Z",
"volume": 1
},
"id": "1221",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/task_inputs/1221"
},
"relationships": {
"production_task": {
"data": {
"id": "14999",
"type": "production_tasks"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/production_tasks/14999",
"self": "http://api.COMPANY.brmbl.io/v1/task_inputs/1221/relationships/production_task"
}
}
},
"type": "task_inputs"
},
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/task_inputs/1221"
}
}
Response: 422 Unprocessable Entity
{
"errors": [
{
"detail": "Invalid format. Expected :date",
"source": {
"pointer": "/date"
},
"title": "Invalid value"
}
]
}
You can adjust an inventory balance by creating a Task Input.
A Task Input is used to manage the workload in a task queue. It represents incoming or queued work items from the source system. You can adjust the volume of work using this API. Negative volumes are allowed, allowing you to decrease the inventory balance for a task."
Request
POST /v1/task_inputs
Responses
Status | Description | Schema |
---|---|---|
201 | Task Input | |
401 | Authentication Error | |
404 | Not Found Error | |
409 | Conflict | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Retrieve a task input
Request: Retrieve a task input
curl -X GET https://api.COMPANY.brmbl.io/v1/task_inputs/1220 \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_FFPFviAW_arrCKTvbGjBQX0YYsPxGZTUM" \
Response: 200 OK
{
"data": {
"attributes": {
"date": "2020-01-01",
"inserted_at": "2023-08-30T07:58:43Z",
"updated_at": "2023-08-30T07:58:43Z",
"volume": 10
},
"id": "1220",
"links": {
"self": "http://www.example.com/v1/task_inputs/1220"
},
"relationships": {
"production_task": {
"data": {
"id": "14998",
"type": "production_tasks"
},
"links": {
"related": "http://www.example.com/v1/production_tasks/14998",
"self": "http://www.example.com/v1/task_inputs/1220/relationships/production_task"
}
}
},
"type": "task_inputs"
},
"included": [],
"links": {
"self": "http://www.example.com/v1/task_inputs/1220"
}
}
Response: 404 Not Found
{
"errors": [
{
"code": "40401",
"detail": "Could not find task input with id: 1227",
"status": "404",
"title": "Resource Not Found"
}
]
}
You can fetch the details of a single Task Input (AKA inventory adjustment).
Request
GET /v1/task_inputs/{id}
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
id |
Task input ID | path | integer | true | 233 | |
include |
Comma separated list of relationships to include. | query | array | false | production_task | |
fields |
Comma separated list of fields to return. | query | object | false |
Responses
Status | Description | Schema |
---|---|---|
200 | Task Input | |
401 | Authentication Error | |
404 | Not Found Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
List all task inputs
Request: List all inventory adjustments (filtered)
curl -X GET https://api.COMPANY.brmbl.io/v1/task_inputs?date=2020-01-02&page[number]=1&page[size]=2&sort=date&fields[task_inputs]=volume \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_p4C7XTxe_KTQBbMHmju4i1r1FiIW2i3wt" \
Response: 200 OK
{
"data": [
{
"attributes": {
"volume": 20
},
"id": "1208",
"links": {
"self": "http://www.example.com/v1/task_inputs/1208"
},
"relationships": {
"production_task": {
"data": {
"id": "14989",
"type": "production_tasks"
},
"links": {
"related": "http://www.example.com/v1/production_tasks/14989",
"self": "http://www.example.com/v1/task_inputs/1208/relationships/production_task"
}
}
},
"type": "task_inputs"
},
{
"attributes": {
"volume": 40
},
"id": "1209",
"links": {
"self": "http://www.example.com/v1/task_inputs/1209"
},
"relationships": {
"production_task": {
"data": {
"id": "14990",
"type": "production_tasks"
},
"links": {
"related": "http://www.example.com/v1/production_tasks/14990",
"self": "http://www.example.com/v1/task_inputs/1209/relationships/production_task"
}
}
},
"type": "task_inputs"
}
],
"included": [],
"links": {
"self": "http://www.example.com/v1/task_inputs?date=2020-01-02&fields%5Btask_inputs%5D=volume&page%5Bnumber%5D=1&page%5Bsize%5D=2&sort=date"
},
"meta": {
"pagination": {
"page_number": 1,
"page_size": 2,
"total_entries": 2,
"total_pages": 1
}
}
}
You can fetch a list of all task inputs.
The list can be filtered by date, or production_task_id, or a combination of those.
The list is currently limited to the latest 50 adjustments.
Request
GET /v1/task_inputs
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
date |
Filter inputs for this date | query | string | false | 2022-02-28 | |
production_task_id |
Filter inputs for this task id | query | integer | false | 12 | |
page |
query | Page | false | |||
sort |
Comma separated list of fields to sort by. Prefixing a field with a minus sign (-) sorts descending. | query | array | false | -date,-volume | |
include |
Comma separated list of relationships to include. | query | array | false | production_task | |
fields |
Comma separated list of fields to return. | query | object | false |
Responses
Status | Description | Schema |
---|---|---|
200 | Task Input | |
401 | Authentication Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Users
List all users
Request: Returns a list of users, filtered
curl -X GET https://api.COMPANY.brmbl.io/v1/users?email=bob@foo.com,frank@foo.com&sort=-full_name&page[number]=1&page[size]=3 \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_PQmucVyL_gO7MgeqzwL5MSV7rRspTZuYj" \
Response: 200 OK
{
"data": [
{
"attributes": {
"account_role": null,
"email": "frank@foo.com",
"full_name": "Frank Furter",
"inserted_at": "2023-08-30T07:58:43Z",
"preferred_first_name": "Frank",
"state": "invited",
"team_role": "team_owner",
"timezone": "America/Los_Angeles",
"updated_at": "2023-08-30T07:58:43Z"
},
"id": "55749",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/users/55749"
},
"relationships": {
"group": {
"data": {
"id": "51302",
"type": "groups"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/groups/51302",
"self": "http://api.COMPANY.brmbl.io/v1/users/55749/relationships/group"
}
}
},
"type": "users"
},
{
"attributes": {
"account_role": "account_owner",
"email": "bob@foo.com",
"full_name": "Bob Owner",
"inserted_at": "2023-08-30T07:58:43Z",
"preferred_first_name": "Bob",
"state": "invited",
"team_role": null,
"timezone": "Etc/UTC",
"updated_at": "2023-08-30T07:58:43Z"
},
"id": "55748",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/users/55748"
},
"relationships": {
"group": {
"data": {
"id": "51301",
"type": "groups"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/groups/51301",
"self": "http://api.COMPANY.brmbl.io/v1/users/55748/relationships/group"
}
}
},
"type": "users"
}
],
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/users?email=bob%40foo.com%2Cfrank%40foo.com&page%5Bnumber%5D=1&page%5Bsize%5D=3&sort=-full_name"
},
"meta": {
"pagination": {
"page_number": 1,
"page_size": 3,
"total_entries": 2,
"total_pages": 1
}
}
}
Returns a list of users.
Request
GET /v1/users
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
email |
Filter by email(s) | query | array | false | example@brmbl.io,foo@bar.com | |
group_id |
Filter users in these groups, including groups above these in hierarchy | query | array | false | 1,51,42 | |
page |
query | Page | false | |||
sort |
Comma separated list of fields to sort by. Prefixing a field with a minus sign (-) sorts descending. | query | array | false | -email,updated_at | |
include |
Comma separated list of relationships to include. | query | array | false | group | |
fields |
Comma separated list of fields to return. | query | object | false |
Responses
Status | Description | Schema |
---|---|---|
200 | Task Input | |
401 | Authentication Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Fetch a user by ID
Request: Successful request returns the user
curl -X GET https://api.COMPANY.brmbl.io/v1/users/55747 \
-H "Content-type: application/json" \
-H "Authorization: Bearer bramble_0IJFCJDz_6b4BCctuTfv26nm06iSjDUc2" \
Response: 200 OK
{
"data": {
"attributes": {
"account_role": null,
"email": "cristina.oreilly@lehner.biz",
"full_name": "Jane Doe",
"inserted_at": "2023-08-30T07:58:43Z",
"preferred_first_name": "Something",
"state": "invited",
"team_role": "team_owner",
"timezone": "Africa/Abidjan",
"updated_at": "2023-08-30T07:58:43Z"
},
"id": "55747",
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/users/55747"
},
"relationships": {
"group": {
"data": {
"id": "51300",
"type": "groups"
},
"links": {
"related": "http://api.COMPANY.brmbl.io/v1/groups/51300",
"self": "http://api.COMPANY.brmbl.io/v1/users/55747/relationships/group"
}
}
},
"type": "users"
},
"included": [],
"links": {
"self": "http://api.COMPANY.brmbl.io/v1/users/55747"
}
}
Response: 404 Not Found
{
"errors": [
{
"code": "40401",
"detail": "Could not find user with id: 55857",
"status": "404",
"title": "Resource Not Found"
}
]
}
Returns the user identified by an internal Bramble ID.
Request
GET /v1/users/{id}
Parameters
Parameter | Description | In | Type | Required | Default | Example |
---|---|---|---|---|---|---|
id |
User ID | path | integer | true | 233 | |
include |
Comma separated list of relationships to include. | query | array | false | group | |
fields |
Comma separated list of fields to return. | query | object | false |
Responses
Status | Description | Schema |
---|---|---|
200 | User | |
401 | Authentication Error | |
404 | Not Found Error | |
422 | Unprocessible Entity | |
500 | Internal Server Error |
Models
ServiceLevel
Service Level
{
"attributes": {
"date": "2022-02-23",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"note": null,
"score": 0.55,
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "281",
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/service_levels/4"
},
"relationships": {
"production_task": {
"data": {
"id": "2",
"type": "production_tasks"
},
"links": {
"related": "https://api.COMPANY.brmbl.io/v1/production_tasks/2",
"self": "https://api.COMPANY.brmbl.io/v1/service_levels/4/relationships/production_task"
}
}
},
"type": "service_levels"
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
id |
The id of the Service Level. | string | true | |
type |
always "service_levels" | string | true | |
attributes.date |
Which day was this score given? | string | date | false |
attributes.inserted_at |
The timestamp of when this resource was created. | string | date-time | false |
attributes.note |
An optional note. | string | false | |
attributes.score |
A percentage (as a floating point number between 0 and 1) rating a production task's service level for this date. | number | float | false |
attributes.updated_at |
The last updated timestamp of this resource. | string | date-time | false |
relationships.production_task.data.id |
The unique identifier | string | true | |
relationships.production_task.data.type |
string | true | ||
relationships.production_task.links.related |
Link for the relationship itself | string | uri | false |
relationships.production_task.links.self |
Link for the relationship itself | string | uri | false |
TaskInput
Task inputs record the volume of incoming work for a given task. They act as a log of adjustments to the balance of a task backlog, recording either new work arriving in a task queue, or reconciliation events that correct the inventory balance. Negative volumes are permitted.
{
"attributes": {
"date": "2022-02-23",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"updated_at": "2023-01-01T00:00:00.000000Z",
"volume": 1
},
"id": "281",
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/task_inputs/4"
},
"relationships": {
"production_task": {
"data": {
"id": "2",
"type": "production_tasks"
},
"links": {
"related": "https://api.COMPANY.brmbl.io/v1/production_tasks/2",
"self": "https://api.COMPANY.brmbl.io/v1/task_inputs/4/relationships/production_task"
}
}
},
"type": "task_inputs"
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
id |
The id of the Task Input. | string | true | |
type |
always "task_inputs" | string | true | |
attributes.date |
When did this input event happen? | string | date | false |
attributes.volume |
The amount to adjust the task inventory by. Usually a positive integer, but negative values are permitted. | integer | int32 | false |
relationships.production_task.data.id |
The unique identifier | string | true | |
relationships.production_task.data.type |
string | true | ||
relationships.production_task.links.related |
Link for the relationship itself | string | uri | false |
relationships.production_task.links.self |
Link for the relationship itself | string | uri | false |
Group
Groups are teams of users in Bramble. Groups are arranged in a tree hierarchy (using parent_group_id).
{
"attributes": {
"inserted_at": "1970-01-01T00:00:00.000000Z",
"name": "North America",
"state": "active",
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "54",
"relationships": {
"parent": {
"data": {
"id": "2",
"type": "groups"
},
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/groups/4/relationships/parent"
}
}
},
"type": "groups"
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
id |
The id of the group. | string | true | |
type |
value is always "groups" | string | true | |
attributes.inserted_at |
The timestamp of when this resource was created. | string | date-time | false |
attributes.name |
The name of the group | string | false | |
attributes.state |
The current status | string | false | |
attributes.updated_at |
The last updated timestamp of this resource. | string | date-time | false |
relationships.parent.data.id |
The unique identifier | string | true | |
relationships.parent.data.type |
string | true | ||
relationships.parent.links.self |
Link for the relationship itself | string | uri | false |
TaskIdentity
Task identities map incoming free-form data to a production task. They're specific to a data source.
{
"id": "281",
"production_task_id": 3,
"source_id": 1,
"value": {
"client": "bank1",
"state": "new"
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
id |
ID for a Task Identity object | string | false | |
production_task_id |
Bramble internal production task id | integer | false | |
source_id |
Bramble internal source id | integer | false | |
value |
Any arbitrary object | object | false |
User
A user in Bramble, often an Individual Contributor (IC) or Manager. Can also be other system users like Account Owners/Admins. Non-owners/admins are associated with one Group.
{
"attributes": {
"email": "jane-doe12@brmbl.io",
"full_name": "Jane Doe",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"preferred_first_name": "Jane",
"state": "active",
"team_role": "team_contributor",
"timezone": "Africa/Abidjan",
"type": "users",
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "23",
"relationships": {
"parent": {
"data": {
"id": "2",
"type": "groups"
},
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/users/4/relationships/group"
}
}
},
"type": "users"
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
id |
The id of the user. | string | true | |
type |
value is always "users" | string | true | |
attributes.account_role |
Account-level role | string | false | |
attributes.email |
A user's email. This is a unique value and can be used to find a user via the api/users endpoint. | string | false | |
attributes.full_name |
The user's first and last name. | string | false | |
attributes.inserted_at |
The timestamp of when this resource was created. | string | date-time | false |
attributes.preferred_first_name |
The user's preferred name. | string | false | |
attributes.state |
The current status | string | false | |
attributes.team_role |
Team-level role | string | false | |
attributes.timezone |
The user's preferred timezone. | string | false | |
attributes.type |
value is always "users" | string | false | |
attributes.updated_at |
The last updated timestamp of this resource. | string | date-time | false |
relationships.group.data.id |
The unique identifier | string | true | |
relationships.group.data.type |
string | true | ||
relationships.group.links.self |
Link for the relationship itself | string | uri | false |
Source
A data Source. e.g. a file, a web service, etc.
{
"description": "Data coming from call-center software",
"id": 34,
"name": "Call-center",
"state": "active"
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
description |
The source's description. | string | false | |
id |
Bramble internal source id | integer | false | |
name |
The source's name. | string | false | |
state |
The source's state. | string | false |
CostCategory
Cost Categories provide additional insight and delineation of organizational production costs i.e how much it's costing to complete work for Category 'X' versus 'Y'.
{
"attributes": {
"description": "sample description",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"name": "Auto",
"state": "active",
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "54",
"type": "cost_categories"
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
id |
The id of the cost category. | string | true | |
type |
value is always "cost_categories" | string | true | |
attributes.description |
The description of the cost category | string | false | |
attributes.inserted_at |
The timestamp of when this resource was created. | string | date-time | false |
attributes.name |
The name of the cost category | string | false | |
attributes.state |
The current state | string | false | |
attributes.updated_at |
The last updated timestamp of this resource. | string | date-time | false |
QualityScore
The overall score of the quality of a user's work on the given date. If your organization has a quality framework in place, your Front-line managers are usually responsible for measuring quality scores for IC's on a regular basis. This API allows Bramble to receive these quality scores from an external system.
{
"attributes": {
"date": "2022-02-23",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"note": null,
"score": 0.95,
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "281",
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/quality_scores/4"
},
"relationships": {
"user": {
"data": {
"id": "2",
"type": "users"
},
"links": {
"related": "https://api.COMPANY.brmbl.io/v1/users/2",
"self": "https://api.COMPANY.brmbl.io/v1/quality_scores/4/relationships/user"
}
}
},
"type": "quality_scores"
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
id |
The id of the Quality Score. | string | true | |
type |
always "quality_scores" | string | true | |
attributes.date |
The date for which this score was given | string | date | false |
attributes.note |
An optional note. | string | false | |
attributes.score |
A percentage (as a floating point number between 0 and 1) rating the persons performance on the given day | number | float | false |
relationships.user.data.id |
The unique identifier | string | true | |
relationships.user.data.type |
string | true | ||
relationships.user.links.related |
Link for the relationship itself | string | uri | false |
relationships.user.links.self |
Link for the relationship itself | string | uri | false |
Pagination
Pagination metadata
{
"count": 2,
"current_page": 1,
"per_page": 2,
"total": 50,
"total_pages": 25
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
count |
Number of records in the current page | integer | int64 | false |
current_page |
Current page number | integer | int64 | false |
per_page |
Number of records per page | integer | int64 | false |
total |
Total number of records | integer | int64 | false |
total_pages |
Total number of pages | integer | int64 | false |
Page
{
"number": 2,
"size": 100
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
number |
Page number to retrieve | integer | int32 | false |
size |
Number of items per page | integer | int32 | false |
UserIdentity
User identities map incoming free-form data to a Bramble user. They're specific to a data source.
{
"id": "281",
"source_id": 1,
"user_id": 3,
"value": {
"uid": "glennr"
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
id |
ID for a User Identity object | string | false | |
source_id |
Bramble internal source id | integer | false | |
user |
The id of the user. | string | false | |
value |
Any arbitrary object | object | false |
SupportingTask
Supporting Tasks are regular (often planned) business activities that may only indirectly contribute to business outcomes.
{
"category": "meeting",
"id": 32,
"inserted_at": "2023-06-14T06:00:47Z",
"name": "Test supporting task",
"state": "active",
"type": "supporting_tasks",
"updated_at": "2023-06-14T06:00:47Z"
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
category |
supporting task's category | string | false | |
id |
Bramble internal supporting task id | integer | false | |
inserted_at |
The timestamp of when this resource was created. | string | date-time | false |
name |
The production task's name. | string | false | |
state |
The production task's state. | string | false | |
type |
always "supporting_tasks" | string | false | |
updated_at |
The last updated timestamp of this resource. | string | date-time | false |
Meta
Metadata about the response
{
"pagination": {
"count": 2,
"current_page": 1,
"per_page": 2,
"total": 50,
"total_pages": 25
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
pagination.count |
Number of records in the current page | integer | int64 | false |
pagination.current_page |
Current page number | integer | int64 | false |
pagination.per_page |
Number of records per page | integer | int64 | false |
pagination.total |
Total number of records | integer | int64 | false |
pagination.total_pages |
Total number of pages | integer | int64 | false |
Entry
Entries are a way to record how a user spends their time during the course of the day.
Property | Description | Type | Format | Required |
---|---|---|---|---|
id |
The id of the entry. | string | true | |
type |
value is always "entries" | string | true | |
attributes.date |
When did this entry event happen? | string | date | false |
attributes.inserted_at |
The timestamp of when this resource was created. | string | date-time | false |
attributes.minutes |
The amount of time spent on a task. Usually a positive integer, but negative values are permitted. | integer | int32 | false |
attributes.updated_at |
The last updated timestamp of this resource. | string | date-time | false |
attributes.volume |
The number of times the task is completed. Usually a positive integer, but negative values are permitted. | integer | int32 | false |
relationships.production_task.data.id |
The unique identifier | string | true | |
relationships.production_task.data.type |
string | true | ||
relationships.production_task.links.related |
Link for the relationship itself | string | uri | false |
relationships.production_task.links.self |
Link for the relationship itself | string | uri | false |
relationships.supporting_task.data.id |
The unique identifier | string | true | |
relationships.supporting_task.data.type |
string | true | ||
relationships.supporting_task.links.related |
Link for the relationship itself | string | uri | false |
relationships.supporting_task.links.self |
Link for the relationship itself | string | uri | false |
relationships.user.data.id |
The unique identifier | string | true | |
relationships.user.data.type |
string | true | ||
relationships.user.links.related |
Link for the relationship itself | string | uri | false |
relationships.user.links.self |
Link for the relationship itself | string | uri | false |
Checkin
This is a way to record a user checking-in for a day, and also allows user to set which type of work location they did.
{
"attributes": {
"date": "2022-02-23",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"updated_at": "2023-01-01T00:00:00.000000Z",
"work_location": "distributed"
},
"id": "23",
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/users/4"
},
"relationships": {
"user": {
"data": {
"id": "2",
"type": "users"
},
"links": {
"related": "https://api.COMPANY.brmbl.io/v1/users/2",
"self": "https://api.COMPANY.brmbl.io/v1/checkins/4/relationships/user"
}
}
},
"type": "checkins"
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
id |
The id of the checkin. | string | true | |
type |
value is always "checkins" | string | true | |
attributes.date |
Which day was this checkin created? | string | date | false |
attributes.inserted_at |
The timestamp of when this resource was created. | string | date-time | false |
attributes.updated_at |
The last updated timestamp of this resource. | string | date-time | false |
attributes.work_location |
where the work is done. | string | false | |
relationships.user.data.id |
The unique identifier | string | true | |
relationships.user.data.type |
string | true | ||
relationships.user.links.related |
Link for the relationship itself | string | uri | false |
relationships.user.links.self |
Link for the relationship itself | string | uri | false |
ProductionTask
A Production Task represents the primary, measurable, unit of work in a Process
{
"group_id": 1,
"id": 34,
"improvement_category": "rpa",
"inserted_at": "2023-06-14T06:00:47Z",
"name": "Test Task",
"process_id": 1,
"state": "active",
"type": "production_tasks",
"updated_at": "2023-06-14T06:00:47Z"
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
group_id |
Bramble group identifier. | integer | false | |
id |
Bramble internal production task id | integer | false | |
improvement_category |
production task's CI(continous improvement) category | string | false | |
inserted_at |
The timestamp of when this resource was created. | string | date-time | false |
name |
The production task's name. | string | false | |
process_id |
Bramble process identifier. | integer | false | |
state |
The production task's state. | string | false | |
type |
always "production_tasks" | string | false | |
updated_at |
The last updated timestamp of this resource. | string | date-time | false |
Error Models
AuthenticationError
{
"errors": [
{
"detail": "Please check your client id and secret key, and make sure your credentials are active.",
"source": {
"pointer": "header: authorization => id, mac"
},
"title": "Authentication Failed",
"type": "AUTHENTICATION_FAILED"
}
]
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
errors |
array(any) | true |
NotFoundError
{
"errors": [
{
"detail": "The requested resource does not exist.",
"status": 404,
"title": "Resource Not Found"
}
]
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
errors |
array(any) | true |
ConflictError
{
"errors": [
{
"detail": "Must be unique: production_task_id + date",
"source": {
"pointer": "/production_task_id"
},
"title": "Validation Failed"
}
]
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
errors |
array(any) | true |
InternalServerError
{
"errors": [
{
"detail": "Server Error: we could not complete your request",
"title": "Unexpected Server Error",
"type": "UNEXPECTED_ERROR"
}
]
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
errors |
array(any) | true |
Request Models
EntryParams
Input parameters for Entries, can be either a production task or supporting task parameters
{
"oneOf": [
{
"$ref": "#/components/schemas/ProductionTaskEntryParams"
},
{
"$ref": "#/components/schemas/SupportingTaskEntryParams"
}
]
}
SupportingTaskEntryParams
Input parameters for Supporting Task Entries
{
"date": "2022-02-23",
"minutes": 450,
"supporting_task_id": 432,
"user_id": "234"
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
date |
When did this entry event happen? | string | date | true |
minutes |
The amount of time spent on a task. Usually a positive integer, but negative values are permitted. | integer | int32 | true |
supporting_task_id |
Bramble internal supporting task id | integer | true | |
user_id |
The id of the user. | string | true |
IdentitySearchParams
Free-form input parameters for searching user_identity or task_identity
{
"uid": "glennr"
}
Property | Description | Type | Format | Required |
---|
ServiceLevelParams
Input params for a Service Level
{
"date": "2022-02-23",
"production_task_id": "34",
"score": 0.55
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
date |
Which day was this score given? | string | date | true |
note |
An optional note. | string | false | |
production_task_id |
Bramble internal production task id | integer | true | |
score |
A percentage (as a floating point number between 0 and 1) rating a production task's service level for this date. | number | float | true |
ProductionTaskEntryParams
Input parameters for Production Task Entries
{
"date": "2022-02-23",
"production_task_id": 432,
"user_id": "234",
"volume": 1
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
date |
When did this entry event happen? | string | date | true |
production_task_id |
Bramble internal production task id | integer | true | |
user_id |
The id of the user. | string | true | |
volume |
The number of times the task is completed. Usually a positive integer, but negative values are permitted. | integer | int32 | true |
CheckinParams
Input parameters for Checkin
{
"date": "2022-02-23",
"user_id": 432,
"work_location": "office"
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
date |
Which day was this checkin created? | string | date | true |
user_id |
The id of the user. | string | true | |
work_location |
where the work is done. | string | true |
TaskInputParams
Input parameters for Task Inputs
{
"date": "2022-02-23",
"group_id": "234",
"production_task_id": "432",
"volume": 1
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
date |
When did this input event happen? | string | date | true |
group_id |
The id of the group. | string | true | |
production_task_id |
Bramble internal production task id | integer | true | |
volume |
The amount to adjust the task inventory by. Usually a positive integer, but negative values are permitted. | integer | int32 | true |
QualityScoreParams
Input params for Quality Score
{
"date": "2022-02-23",
"score": 0.95,
"user_id": "234"
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
date |
The date for which this score was given | string | date | true |
note |
An optional note. | string | false | |
score |
A percentage (as a floating point number between 0 and 1) rating the persons performance on the given day | number | float | true |
user_id |
The id of the user. | string | true |
Response Models
CostCategoryResponse
A Bramble Cost Category.
{
"data": {
"attributes": {
"description": "sample description",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"name": "Auto",
"state": "active",
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "54",
"type": "cost_categories"
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
CostCategory | false |
ProductionTaskEntryResponse
Production Task Entry Response
{
"data": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"minutes": 60,
"updated_at": "2023-01-01T00:00:00.000000Z",
"volume": 1
},
"id": "54",
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/entries/4"
},
"relationships": {
"production_task": {
"data": {
"id": "2",
"type": "production_tasks"
},
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/entries/4/relationships/production_task"
}
},
"user": {
"data": {
"id": "1",
"type": "users"
},
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/entries/4/relationships/user"
}
}
},
"type": "entries"
},
"included": [],
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/entries/4"
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
Entry | true | ||
included |
Included resource objects (compound documents) | array(any) | false | |
links.self |
Link for the relationship itself | string | uri | false |
JsonErrorResponse
Property | Description | Type | Format | Required |
---|---|---|---|---|
errors |
array(any) | true |
GroupsResponse
Group List Response
{
"data": [
{
"attributes": {
"inserted_at": "1970-01-01T00:00:00.000000Z",
"name": "North America",
"state": "active",
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "54",
"relationships": {
"parent": {
"data": {
"id": "2",
"type": "groups"
},
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/groups/4/relationships/parent"
}
}
},
"type": "groups"
}
],
"meta": {
"pagination": {
"count": 2,
"current_page": 1,
"per_page": 2,
"total": 50,
"total_pages": 25
}
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
Generic Data Wrapper | array(any) | false | |
meta.pagination.count |
Number of records in the current page | integer | int64 | false |
meta.pagination.current_page |
Current page number | integer | int64 | false |
meta.pagination.per_page |
Number of records per page | integer | int64 | false |
meta.pagination.total |
Total number of records | integer | int64 | false |
meta.pagination.total_pages |
Total number of pages | integer | int64 | false |
UserResponse
User Response
{
"data": {
"attributes": {
"email": "jane-doe12@brmbl.io",
"full_name": "Jane Doe",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"preferred_first_name": "Jane",
"state": "active",
"team_role": "team_contributor",
"timezone": "Africa/Abidjan",
"type": "users",
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "23",
"relationships": {
"parent": {
"data": {
"id": "2",
"type": "groups"
},
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/users/4/relationships/group"
}
}
},
"type": "users"
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
User | false |
UsersResponse
User List Response
{
"data": [
{
"attributes": {
"email": "jane-doe12@brmbl.io",
"full_name": "Jane Doe",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"preferred_first_name": "Jane",
"state": "active",
"team_role": "team_contributor",
"timezone": "Africa/Abidjan",
"type": "users",
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "23",
"relationships": {
"parent": {
"data": {
"id": "2",
"type": "groups"
},
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/users/4/relationships/group"
}
}
},
"type": "users"
}
]
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
Generic Data Wrapper | array(any) | false |
ProductionTaskResponse
Production Task Response
{
"data": {
"group_id": 1,
"id": 34,
"improvement_category": "rpa",
"inserted_at": "2023-06-14T06:00:47Z",
"name": "Test Task",
"process_id": 1,
"state": "active",
"type": "production_tasks",
"updated_at": "2023-06-14T06:00:47Z"
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
ProductionTask | false |
TaskInputsResponse
Task Input List Response
{
"data": [
{
"production_task": {
"group_id": 1,
"id": 34,
"improvement_category": "rpa",
"inserted_at": "2023-06-14T06:00:47Z",
"name": "Test Task",
"process_id": 1,
"state": "active",
"type": "production_tasks",
"updated_at": "2023-06-14T06:00:47Z"
},
"task_input": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"updated_at": "2023-01-01T00:00:00.000000Z",
"volume": 1
},
"id": "281",
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/task_inputs/4"
},
"relationships": {
"production_task": {
"data": {
"id": "2",
"type": "production_tasks"
},
"links": {
"related": "https://api.COMPANY.brmbl.io/v1/production_tasks/2",
"self": "https://api.COMPANY.brmbl.io/v1/task_inputs/4/relationships/production_task"
}
}
},
"type": "task_inputs"
}
}
]
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
Generic Data Wrapper | array(any) | false |
ServiceLevelsResponse
Service Level List Response
{
"data": [
{
"attributes": {
"date": "2022-02-23",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"note": null,
"score": 0.55,
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "281",
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/service_levels/4"
},
"relationships": {
"production_task": {
"data": {
"id": "2",
"type": "production_tasks"
},
"links": {
"related": "https://api.COMPANY.brmbl.io/v1/production_tasks/2",
"self": "https://api.COMPANY.brmbl.io/v1/service_levels/4/relationships/production_task"
}
}
},
"type": "service_levels"
}
],
"meta": {
"pagination": {
"count": 2,
"current_page": 1,
"per_page": 2,
"total": 50,
"total_pages": 25
}
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
Generic Data Wrapper | array(any) | false | |
meta.pagination.count |
Number of records in the current page | integer | int64 | false |
meta.pagination.current_page |
Current page number | integer | int64 | false |
meta.pagination.per_page |
Number of records per page | integer | int64 | false |
meta.pagination.total |
Total number of records | integer | int64 | false |
meta.pagination.total_pages |
Total number of pages | integer | int64 | false |
GroupResponse
A Bramble Group.
{
"data": {
"attributes": {
"inserted_at": "1970-01-01T00:00:00.000000Z",
"name": "North America",
"state": "active",
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "54",
"relationships": {
"parent": {
"data": {
"id": "2",
"type": "groups"
},
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/groups/4/relationships/parent"
}
}
},
"type": "groups"
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
Group | false |
CostCategoriesResponse
Cost Categories List Response
{
"data": [
{
"attributes": {
"description": "sample description",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"name": "Auto",
"state": "active",
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "54",
"type": "cost_categories"
}
],
"meta": {
"pagination": {
"count": 2,
"current_page": 1,
"per_page": 2,
"total": 50,
"total_pages": 25
}
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
Generic Data Wrapper | array(any) | false | |
meta.pagination.count |
Number of records in the current page | integer | int64 | false |
meta.pagination.current_page |
Current page number | integer | int64 | false |
meta.pagination.per_page |
Number of records per page | integer | int64 | false |
meta.pagination.total |
Total number of records | integer | int64 | false |
meta.pagination.total_pages |
Total number of pages | integer | int64 | false |
UserIdentityResponse
User Identity Response
{
"data": {
"id": "281",
"source_id": 1,
"user_id": 3,
"value": {
"uid": "glennr"
}
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
UserIdentity | false |
SourceResponse
A response object representing a data Source.
{
"data": {
"description": "Data coming from call-center software",
"id": 34,
"name": "Call-center",
"state": "active"
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
Source | false |
SupportingTaskEntryResponse
Supporting Task Entry Response
{
"data": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"minutes": 450,
"updated_at": "2023-01-01T00:00:00.000000Z",
"volume": null
},
"id": "54",
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/entries/4"
},
"relationships": {
"supporting_task": {
"data": {
"id": "2",
"type": "supporting_tasks"
},
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/entries/4/relationships/supporting_task"
}
},
"user": {
"data": {
"id": "1",
"type": "users"
},
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/entries/4/relationships/user"
}
}
},
"type": "entries"
},
"included": [],
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/entries/4"
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
Entry | true | ||
included |
Included resource objects (compound documents) | array(any) | false | |
links.self |
Link for the relationship itself | string | uri | false |
ServiceLevelResponse
Service Level Response
{
"data": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"note": null,
"score": 0.55,
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "281",
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/service_levels/4"
},
"relationships": {
"production_task": {
"data": {
"id": "2",
"type": "production_tasks"
},
"links": {
"related": "https://api.COMPANY.brmbl.io/v1/production_tasks/2",
"self": "https://api.COMPANY.brmbl.io/v1/service_levels/4/relationships/production_task"
}
}
},
"type": "service_levels"
},
"included": [],
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/service_levels/4"
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
ServiceLevel | true | ||
included |
Included resource objects (compound documents) | array(any) | false | |
links.self |
Link for the relationship itself | string | uri | false |
TaskInputResponse
Task Input Response
{
"data": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"updated_at": "2023-01-01T00:00:00.000000Z",
"volume": 1
},
"id": "281",
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/task_inputs/4"
},
"relationships": {
"production_task": {
"data": {
"id": "2",
"type": "production_tasks"
},
"links": {
"related": "https://api.COMPANY.brmbl.io/v1/production_tasks/2",
"self": "https://api.COMPANY.brmbl.io/v1/task_inputs/4/relationships/production_task"
}
}
},
"type": "task_inputs"
},
"included": [],
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/task_inputs/4"
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
TaskInput | true | ||
included |
Included resource objects (compound documents) | array(any) | false | |
links.self |
Link for the relationship itself | string | uri | false |
QualityScoresResponse
Quality Score List Response
{
"data": [
{
"attributes": {
"date": "2022-02-23",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"note": null,
"score": 0.95,
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "281",
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/quality_scores/4"
},
"relationships": {
"user": {
"data": {
"id": "2",
"type": "users"
},
"links": {
"related": "https://api.COMPANY.brmbl.io/v1/users/2",
"self": "https://api.COMPANY.brmbl.io/v1/quality_scores/4/relationships/user"
}
}
},
"type": "quality_scores"
}
],
"meta": {
"pagination": {
"count": 2,
"current_page": 1,
"per_page": 2,
"total": 50,
"total_pages": 25
}
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
Generic Data Wrapper | array(any) | false | |
meta.pagination.count |
Number of records in the current page | integer | int64 | false |
meta.pagination.current_page |
Current page number | integer | int64 | false |
meta.pagination.per_page |
Number of records per page | integer | int64 | false |
meta.pagination.total |
Total number of records | integer | int64 | false |
meta.pagination.total_pages |
Total number of pages | integer | int64 | false |
ProductionTasksResponse
Production Task List Response
{
"data": [
{
"group_id": 1,
"id": 34,
"improvement_category": "rpa",
"inserted_at": "2023-06-14T06:00:47Z",
"name": "Test Task",
"process_id": 1,
"state": "active",
"type": "production_tasks",
"updated_at": "2023-06-14T06:00:47Z"
}
],
"meta": {
"pagination": {
"count": 2,
"current_page": 1,
"per_page": 2,
"total": 50,
"total_pages": 25
}
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
Generic Data Wrapper | array(any) | false | |
meta.pagination.count |
Number of records in the current page | integer | int64 | false |
meta.pagination.current_page |
Current page number | integer | int64 | false |
meta.pagination.per_page |
Number of records per page | integer | int64 | false |
meta.pagination.total |
Total number of records | integer | int64 | false |
meta.pagination.total_pages |
Total number of pages | integer | int64 | false |
SourcesResponse
Source List Response
{
"data": [
{
"description": "Data coming from call-center software",
"id": 34,
"name": "Call-center",
"state": "active"
}
],
"meta": {
"pagination": {
"count": 2,
"current_page": 1,
"per_page": 2,
"total": 50,
"total_pages": 25
}
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
Generic Data Wrapper | array(any) | false | |
meta.pagination.count |
Number of records in the current page | integer | int64 | false |
meta.pagination.current_page |
Current page number | integer | int64 | false |
meta.pagination.per_page |
Number of records per page | integer | int64 | false |
meta.pagination.total |
Total number of records | integer | int64 | false |
meta.pagination.total_pages |
Total number of pages | integer | int64 | false |
TaskIdentityResponse
Task Identity Response
{
"data": {
"id": "281",
"production_task_id": 3,
"source_id": 1,
"value": {
"client": "bank1",
"state": "new"
}
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
TaskIdentity | false |
CheckinResponse
Checkin Response
{
"data": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"updated_at": "2023-01-01T00:00:00.000000Z",
"work_location": "distributed"
},
"id": "23",
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/users/4"
},
"relationships": {
"user": {
"data": {
"id": "2",
"type": "users"
},
"links": {
"related": "https://api.COMPANY.brmbl.io/v1/users/2",
"self": "https://api.COMPANY.brmbl.io/v1/checkins/4/relationships/user"
}
}
},
"type": "checkins"
},
"included": [],
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/checkins/4"
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
Checkin | true | ||
included |
Included resource objects (compound documents) | array(any) | false | |
links.self |
Link for the relationship itself | string | uri | false |
EntriesResponse
Entry List Response
{
"data": [
{
"attributes": {
"date": "2020-04-20",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"minutes": 0,
"updated_at": "1970-01-01T00:00:00.000000Z",
"volume": 0
},
"id": "",
"relationships": {
"production_task": {
"data": {
"id": "123",
"type": "production_tasks"
},
"links": {
"related": "https://api.COMPANY.brmbl.io/production_tasks/123",
"self": "https://api.COMPANY.brmbl.io/entries/1/relationships/production_task"
}
},
"supporting_task": {
"data": {
"id": "123",
"type": "supporting_tasks"
},
"links": {
"related": "https://api.COMPANY.brmbl.io/supporting_tasks/123",
"self": "https://api.COMPANY.brmbl.io/entries/1/relationships/supporting_task"
}
},
"user": {
"data": {
"id": "123",
"type": "users"
},
"links": {
"related": "https://api.COMPANY.brmbl.io/users/123",
"self": "https://api.COMPANY.brmbl.io/entries/1/relationships/user"
}
}
},
"type": "entries"
}
],
"meta": {
"pagination": {
"count": 2,
"current_page": 1,
"per_page": 2,
"total": 50,
"total_pages": 25
}
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
Generic Data Wrapper | array(any) | false | |
meta.pagination.count |
Number of records in the current page | integer | int64 | false |
meta.pagination.current_page |
Current page number | integer | int64 | false |
meta.pagination.per_page |
Number of records per page | integer | int64 | false |
meta.pagination.total |
Total number of records | integer | int64 | false |
meta.pagination.total_pages |
Total number of pages | integer | int64 | false |
QualityScoreResponse
A User's Quality Score.
{
"data": {
"attributes": {
"date": "2022-02-23",
"inserted_at": "1970-01-01T00:00:00.000000Z",
"note": null,
"score": 0.95,
"updated_at": "2023-01-01T00:00:00.000000Z"
},
"id": "281",
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/quality_scores/4"
},
"relationships": {
"user": {
"data": {
"id": "2",
"type": "users"
},
"links": {
"related": "https://api.COMPANY.brmbl.io/v1/users/2",
"self": "https://api.COMPANY.brmbl.io/v1/quality_scores/4/relationships/user"
}
}
},
"type": "quality_scores"
},
"included": [],
"links": {
"self": "https://api.COMPANY.brmbl.io/v1/quality_scores/4"
}
}
Property | Description | Type | Format | Required |
---|---|---|---|---|
data |
QualityScore | true | ||
included |
Included resource objects (compound documents) | array(any) | false | |
links.self |
Link for the relationship itself | string | uri | false |
EntryResponse
Can either be a Production Task or Supporting Task Entry response
{
"oneOf": [
{
"$ref": "#/components/schemas/ProductionTaskEntryResponse"
},
{
"$ref": "#/components/schemas/SupportingTaskEntryResponse"
}
]
}