Journal approval API endpoint
A request to add or change a shared journal, reviewed before it takes effect.
Table of contents
Endpoints
- Private portal:
https://www.brainstem.org/api/private/dissemination/journalapproval/(needs a token; one record: append<id>/) - Public portal: not available
- Response keys:
journal_approval(detail, create, update),journal_approvals(list) - Permissions: see the permissions page
Form-only inputs (sent on create or update, not returned in responses):
merge_to_id[required].
Fields
[required] fields must be sent on create; [read-only] fields are returned but cannot be set. A nestable relation can be traversed in filters (filter{field.other}) and sideloaded with include[]=field.*; other relations can only be compared with ids (filter{field}=<id>). See the query syntax.
| Field | Description |
|---|---|
id | UUID string [read-only] |
name | string [required]; max 500 characters |
description | string; max 2000 characters; nullable |
website | string; max 200 characters; nullable |
comments | string; nullable |
instance_id | UUID string [required]; nullable |
action | one of Add, Change [required] |
reviewer | user id [required]; nullable |
status | one of Pending, Accepted, Rejected, Cancelled, HoldForRejection, HoldForMerge, Merged, ChangesRequired [required] |
List
- Allowed portals: private
- Request method: GET
- URL:
https://www.brainstem.org/api/private/dissemination/journalapproval/ - Responses:
200OK;401Not authenticated;403Not allowed
Use example (Python API tool)
resp = client.load('journalapproval', load_all=True)
records = resp['journal_approvals']
Use example (MATLAB API tool)
resp = client.load('journalapproval', 'load_all', true);
records = resp.journal_approvals;
Response example
{
"journal_approvals": [
{
"id": "<id>",
"name": "Journal approval 1",
"description": "",
"website": "",
"comments": "",
"instance_id": "<id>",
"action": "Add",
"reviewer": "<user-id>",
"status": "Pending"
}
],
"meta": {
"page": 1,
"per_page": 100,
"total_results": 1,
"total_pages": 1
}
}
Add
- Allowed portals: private
- Request method: POST
- URL:
https://www.brainstem.org/api/private/dissemination/journalapproval/ - Data: JSON object with at least the required fields
- Responses:
201Created;400Bad request (validation errors per field);403Not allowed
Use example (Python API tool)
resp = client.save('journalapproval', data={"name": "Journal approval 1", "instance_id": "<id>", "action": "Add", "reviewer": "<user-id>", "status": "Pending", "merge_to_id": "<merge_to_id>"})
record = resp.json()['journal_approval']
Use example (MATLAB API tool)
created = client.save(struct('name', 'Journal approval 1', 'instance_id', '<id>', 'action', 'Add', 'reviewer', '<user-id>', 'status', 'Pending', 'merge_to_id', '<merge_to_id>'), 'journalapproval');
record = created.journal_approval;
Detail
- Allowed portals: private
- Request method: GET
- URL:
https://www.brainstem.org/api/private/dissemination/journalapproval/<id>/ - Responses:
200OK;403Not allowed;404Not found
Use example (Python API tool)
resp = client.load('journalapproval', id='<id>')
record = resp.json()['journal_approval']
Use example (MATLAB API tool)
out = client.load('journalapproval', 'id', '<id>');
record = out.journal_approval;
Response example
{
"journal_approval": {
"id": "<id>",
"name": "Journal approval 1",
"description": "",
"website": "",
"comments": "",
"instance_id": "<id>",
"action": "Add",
"reviewer": "<user-id>",
"status": "Pending"
}
}
Change
- Allowed portals: private
- Request method: PATCH
- URL:
https://www.brainstem.org/api/private/dissemination/journalapproval/<id>/ - Data: JSON object with the fields to change. Lists (
projects,tags, …) and JSON payloads (details, coordinates) are replaced as a whole: read the record first and send the full list or object. - Responses:
200OK;400Bad request;403Not allowed;404Not found
Use example (Python API tool)
resp = client.save('journalapproval', id='<id>', data={"name": "Journal approval 1 (renamed)"})
Use example (MATLAB API tool)
client.save(struct('id', '<id>', 'name', 'Journal approval 1 (renamed)'), 'journalapproval', 'method', 'patch');
Delete
- Allowed portals: private
- Request method: DELETE
- URL:
https://www.brainstem.org/api/private/dissemination/journalapproval/<id>/ - Responses:
204Deleted;400Still referenced by other records;403Not allowed;404Not found
Use example (Python API tool)
resp = client.delete('journalapproval', id='<id>')
Use example (MATLAB API tool)
client.delete('<id>', 'journalapproval');
Custom actions
| Action | Request |
|---|---|
accept_approval | PATCH, POST /api/private/dissemination/journalapproval/<id>/accept/ |
cancel_approval | PATCH, POST /api/private/dissemination/journalapproval/<id>/cancel/ |
hold_for_merge_approval | PATCH, POST /api/private/dissemination/journalapproval/<id>/hold_for_merge/ |
hold_for_rejection_approval | PATCH, POST /api/private/dissemination/journalapproval/<id>/hold_for_rejection/ |
merge_approval | PATCH, POST /api/private/dissemination/journalapproval/<id>/merge/ |
reject_approval | PATCH, POST /api/private/dissemination/journalapproval/<id>/reject/ |
changes_required_approval | PATCH, POST /api/private/dissemination/journalapproval/<id>/require_changes/ |
Approval requests are reviewed by the admin team of the taxonomy or resource. The actions move a request through its lifecycle: accept, reject, require_changes, hold_for_merge, merge (merge into an existing record given by merge_to_id) and cancel (by the submitter).