Epoch API endpoint

A stretch of a session, such as a baseline or a stimulation block, with the behavior, data acquisition and manipulations recorded in it.

Table of contents

  1. Endpoints
  2. Fields
  3. List
  4. Add
  5. Detail
  6. Change
  7. Delete
  8. Data model

Endpoints

  • Private portal: https://www.brainstem.org/api/private/stem/epoch/ (needs a token; one record: append <id>/)
  • Public portal: https://www.brainstem.org/api/public/stem/epoch/ (read-only, public projects, no token)
  • Response keys: epochs (detail, create, update), epochs (list)
  • Permissions: inherited through session → projects (from project)

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.

FieldDescription
idUUID string [read-only]
namestring [required]; max 100 characters
startduration; nullable
endduration; nullable
ordernumber. Position of the epoch within its session’s epoch list.
sessionsession id [required]
behaviorbehavior id; nullable
dataacquisitionslist of dataacquisition ids
manipulationslist of manipulation ids
dataacquisitioncomputed [read-only]
manipulationcomputed [read-only]

List

  • Allowed portals: private, public
  • Request method: GET
  • URL: https://www.brainstem.org/api/private/stem/epoch/
  • Responses: 200 OK; 401 Not authenticated; 403 Not allowed

Use example (Python API tool)

resp = client.load('epoch', load_all=True)
records = resp['epochs']

Use example (MATLAB API tool)

resp = client.load('epoch', 'load_all', true);
records = resp.epochs;

Response example

{
    "epochs": [
        {
            "id": "<id>",
            "name": "Epoch 1",
            "start": "01:00:00",
            "end": "01:00:00",
            "order": 1,
            "session": "<session-id>",
            "behavior": "<behavior-id>",
            "dataacquisitions": [
                "<dataacquisition-id>"
            ],
            "manipulations": [
                "<manipulation-id>"
            ],
            "dataacquisition": null,
            "manipulation": null
        }
    ],
    "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/stem/epoch/
  • Data: JSON object with at least the required fields
  • Responses: 201 Created; 400 Bad request (validation errors per field); 403 Not allowed

Use example (Python API tool)

resp = client.save('epoch', data={"name": "Epoch 1", "session": "<session-id>"})
record = resp.json()['epochs']

Use example (MATLAB API tool)

created = client.save(struct('name', 'Epoch 1', 'session', '<session-id>'), 'epoch');
record = created.epochs;

Detail

  • Allowed portals: private, public
  • Request method: GET
  • URL: https://www.brainstem.org/api/private/stem/epoch/<id>/
  • Responses: 200 OK; 403 Not allowed; 404 Not found

Use example (Python API tool)

resp = client.load('epoch', id='<id>')
record = resp.json()['epochs']

Use example (MATLAB API tool)

out = client.load('epoch', 'id', '<id>');
record = out.epochs;

Response example

{
    "epochs": {
        "id": "<id>",
        "name": "Epoch 1",
        "start": "01:00:00",
        "end": "01:00:00",
        "order": 1,
        "session": "<session-id>",
        "behavior": "<behavior-id>",
        "dataacquisitions": [
            "<dataacquisition-id>"
        ],
        "manipulations": [
            "<manipulation-id>"
        ],
        "dataacquisition": null,
        "manipulation": null
    }
}

Change

  • Allowed portals: private
  • Request method: PATCH
  • URL: https://www.brainstem.org/api/private/stem/epoch/<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 found

Use example (Python API tool)

resp = client.save('epoch', id='<id>', data={"name": "Epoch 1 (renamed)"})

Use example (MATLAB API tool)

client.save(struct('id', '<id>', 'name', 'Epoch 1 (renamed)'), 'epoch', 'method', 'patch');

Delete

  • Allowed portals: private
  • Request method: DELETE
  • URL: https://www.brainstem.org/api/private/stem/epoch/<id>/
  • Responses: 204 Deleted; 400 Still referenced by other records; 403 Not allowed; 404 Not found

Use example (Python API tool)

resp = client.delete('epoch', id='<id>')

Use example (MATLAB API tool)

client.delete('<id>', 'epoch');

Data model

The fields are described for the web forms on the Epoch data model page.