Protocol membership invitation API endpoint Table of contents Endpoints Fields List Add Detail Change Delete Custom actions Endpoints Private portal: https://www.brainstem.org/api/private/personal_attributes/protocolmembershipinvitation/ (needs a token; one record: append <id>/)Public portal: not availableResponse keys: protocolmembershipinvitation (detail, create, update), protocolmembershipinvitations (list)Permissions: see the permissions page 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 idUUID string [read-only] inviteeuser id [required] protocolprotocol id [required] can_changeboolean manage_protocolboolean own_protocolboolean
List Allowed portals: privateRequest method: GETURL: https://www.brainstem.org/api/private/personal_attributes/protocolmembershipinvitation/Responses: 200 OK; 401 Not authenticated; 403 Not allowedresp = client . load ( ' protocolmembershipinvitation ' , load_all = True )
records = resp [ ' protocolmembershipinvitations ' ]
resp = client . load ( 'protocolmembershipinvitation' , 'load_all' , true );
records = resp . protocolmembershipinvitations ;
Response example {
"protocolmembershipinvitations" : [
{
"id" : "<id>" ,
"invitee" : "<user-id>" ,
"protocol" : "<protocol-id>" ,
"can_change" : true ,
"manage_protocol" : true ,
"own_protocol" : true
}
],
"meta" : {
"page" : 1 ,
"per_page" : 100 ,
"total_results" : 1 ,
"total_pages" : 1
}
}
Add Allowed portals: privateRequest method: POSTURL: https://www.brainstem.org/api/private/personal_attributes/protocolmembershipinvitation/Data: JSON object with at least the required fieldsResponses: 201 Created; 400 Bad request (validation errors per field); 403 Not allowedresp = client . save ( ' protocolmembershipinvitation ' , data = { " invitee " : " <user-id> " , " protocol " : " <protocol-id> " })
record = resp . json ()[ ' protocolmembershipinvitation ' ]
created = client . save ( struct ( 'invitee' , '<user-id>' , 'protocol' , '<protocol-id>' ), 'protocolmembershipinvitation' );
record = created . protocolmembershipinvitation ;
Detail Allowed portals: privateRequest method: GETURL: https://www.brainstem.org/api/private/personal_attributes/protocolmembershipinvitation/<id>/Responses: 200 OK; 403 Not allowed; 404 Not foundresp = client . load ( ' protocolmembershipinvitation ' , id = ' <id> ' )
record = resp . json ()[ ' protocolmembershipinvitation ' ]
out = client . load ( 'protocolmembershipinvitation' , 'id' , '<id>' );
record = out . protocolmembershipinvitation ;
Response example {
"protocolmembershipinvitation" : {
"id" : "<id>" ,
"invitee" : "<user-id>" ,
"protocol" : "<protocol-id>" ,
"can_change" : true ,
"manage_protocol" : true ,
"own_protocol" : true
}
}
Change Allowed portals: privateRequest method: PATCHURL: https://www.brainstem.org/api/private/personal_attributes/protocolmembershipinvitation/<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: 200 OK; 400 Bad request; 403 Not allowed; 404 Not foundresp = client . save ( ' protocolmembershipinvitation ' , id = ' <id> ' , data = { " can_change " : True })
client . save ( struct ( 'id' , '<id>' , 'can_change' , true ), 'protocolmembershipinvitation' , 'method' , 'patch' );
Delete Allowed portals: privateRequest method: DELETEURL: https://www.brainstem.org/api/private/personal_attributes/protocolmembershipinvitation/<id>/Responses: 204 Deleted; 400 Still referenced by other records; 403 Not allowed; 404 Not foundresp = client . delete ( ' protocolmembershipinvitation ' , id = ' <id> ' )
client . delete ( '<id>' , 'protocolmembershipinvitation' );
Custom actions Action Request accept_invitationPOST /api/private/personal_attributes/protocolmembershipinvitation/<id>/accept/ cancel_invitationPOST /api/private/personal_attributes/protocolmembershipinvitation/<id>/cancel/ reject_invitationPOST /api/private/personal_attributes/protocolmembershipinvitation/<id>/reject/