Data acquisition API endpoint
Table of contents
Fields
| Field | Description | 
|---|---|
| id | UUID identificator formatted as a string | 
| type | string [required]. See options below | 
| notes | string [max length: 500] | 
| session | related session ID formatted as a string [required] | 
| procedures | list of related procedure IDs formatted as strings | 
| equipment | list of related equipment IDs formatted as strings | 
| details | JSON object mapped to the internal type_jsonfield. See accepted schemas below | 
| image | URL string pointing to an uploaded image (read-only) | 
| order | optional positive integer controlling display order within a session | 
Types of data acquisition
A detailed list of the available type options and accepted schemas for the details field can be found in the Data acquisition schemas documentation.
List view
- Allowed portals: public, private
- Request method: GET
- URL: https://www.brainstem.org/api/private/modules/dataacquisition
- Data: None
- Responses: 200OK;403Not allowed;404Not found
Use example (using Python API)
resp = client.load_model('dataacquisition')
Response example
{'dataacquisition': [
    {
        'id': 'b3a6f43b-63f9-41cf-8fc2-5303e958d521',
        'notes': 'main arena cameras',
        'session': '1f7f103b-e949-405a-9b01-ddda3b2f10cf',
        'procedures': ['087b71c4-6785-437c-b8ef-e35a82a8463e'],
        'equipment': ['2f68c9ad-9b4e-49b3-947a-47a4feae0d70'],
        'type': 'BehavioralTracking',
        'details': {
            'fileName': 'session1_tracking.mp4',
            'format': 'mp4',
            'compression': 'h264',
            'frameRate': 60,
            'nFrames': 54000,
            'verticalResolution': 1080,
            'horizontalResolution': 1920
        },
        'image': 'https://images.brainstem.org/tracking.png',
        'order': 0
    },
    {
        'id': '6b7d3eb1-0360-4c40-944b-83e285f8f8a7',
        'notes': 'acute probe recording',
        'session': '1f7f103b-e949-405a-9b01-ddda3b2f10cf',
        'procedures': ['dedef2d7-00ae-4967-8e93-a9d65a20dfce'],
        'equipment': ['5b032f95-3f5b-4a27-9680-5f8f671dba22'],
        'type': 'ExtracellularEphys',
        'details': {
            'fileName': 'session1_probe.dat',
            'format': 'binary',
            'type': 'int16',
            'nChannels': 64,
            'sr': 30000,
            'nSamples': 180000000,
            'electrodeGroups': [
                {'channels': [0, 2, 4], 'label': 'anterior'}
            ],
            'channelTags': [
                {'tag': 'good', 'channels': [0, 2], 'groups': [0]}
            ]
        },
        'image': None,
        'order': 1
    }
]}
Add
- Allowed portals: private
- Request method: POST
- URL: https://www.brainstem.org/api/private/modules/dataacquisition
- Data: JSON dictionary containing at least the required fields.
- Responses: 201OK;400Bad request;403Not allowed;404Not found
Use example (using Python API)
resp = client.save_model(
    "dataacquisition",
    data={
        "type": "ExtracellularEphys",
        "session": "1f7f103b-e949-405a-9b01-ddda3b2f10cf",
        "procedures": ["087b71c4-6785-437c-b8ef-e35a82a8463e"],
        "equipment": ["5b032f95-3f5b-4a27-9680-5f8f671dba22"],
        "notes": "acute probe recording",
        "details": {
            "fileName": "session1_probe.dat",
            "format": "binary",
            "type": "int16",
            "nChannels": 64,
            "sr": 30000,
            "nSamples": 180000000,
            "electrodeGroups": [
                {"channels": [0, 2, 4], "label": "anterior"},
                {"channels": [1, 3, 5], "label": "posterior"}
            ],
            "channelTags": [
                {"tag": "artifact", "channels": [1, 5], "groups": [1]},
                {"tag": "good", "channels": [0, 2], "groups": [0]}
            ]
        }
    }
)
Response example
{'dataacquisition': {
    'id': 'b0e4ed13-f2f1-4845-8772-24978539d0bd',
    'notes': 'acute probe recording',
    'session': '1f7f103b-e949-405a-9b01-ddda3b2f10cf',
    'procedures': ['087b71c4-6785-437c-b8ef-e35a82a8463e'],
    'equipment': ['5b032f95-3f5b-4a27-9680-5f8f671dba22'],
    'type': 'ExtracellularEphys',
    'details': {
        'fileName': 'session1_probe.dat',
        'format': 'binary',
        'type': 'int16',
        'nChannels': 64,
        'sr': 30000,
        'nSamples': 180000000,
        'electrodeGroups': [
            {'channels': [0, 2, 4], 'label': 'anterior'},
            {'channels': [1, 3, 5], 'label': 'posterior'}
        ],
        'channelTags': [
            {'tag': 'artifact', 'channels': [1, 5], 'groups': [1]},
            {'tag': 'good', 'channels': [0, 2], 'groups': [0]}
        ]
    },
    'image': None,
    'order': 0
}}
Detail
- Allowed portals: public, private
- Request method: GET
- URL: https://www.brainstem.org/api/private/modules/dataacquisition/<id>/
- Data: None
- Responses: 200OK;403Not allowed;404Not found
Use example (using Python API)
resp = client.load_model('dataacquisition', id='b0e4ed13-f2f1-4845-8772-24978539d0bd')
Response example
{'dataacquisition': {
    'id': 'b0e4ed13-f2f1-4845-8772-24978539d0bd',
    'notes': 'acute probe recording',
    'session': '1f7f103b-e949-405a-9b01-ddda3b2f10cf',
    'procedures': ['087b71c4-6785-437c-b8ef-e35a82a8463e'],
    'equipment': ['5b032f95-3f5b-4a27-9680-5f8f671dba22'],
    'type': 'ExtracellularEphys',
    'details': {
        'fileName': 'session1_probe.dat',
        'format': 'binary',
        'type': 'int16',
        'nChannels': 64,
        'sr': 30000,
        'nSamples': 180000000,
        'electrodeGroups': [
            {'channels': [0, 2, 4], 'label': 'anterior'},
            {'channels': [1, 3, 5], 'label': 'posterior'}
        ],
        'channelTags': [
            {'tag': 'artifact', 'channels': [1, 5], 'groups': [1]},
            {'tag': 'good', 'channels': [0, 2], 'groups': [0]}
        ]
    },
    'image': None,
    'order': 0
}}
Change
- Allowed portals: private
- Request method: PATCH
- URL: https://www.brainstem.org/api/private/modules/dataacquisition/<id>/
- Data: dictionary containing the fields to be updated
- Responses: 200OK;400Bad request;403Not allowed;404Not found
Use example (using Python API)
resp = client.save_model(
    "dataacquisition",
    id="b0e4ed13-f2f1-4845-8772-24978539d0bd",
    data={"notes": "re-run with higher gain", "equipment": ["5b032f95-3f5b-4a27-9680-5f8f671dba22"]}
)
Response example
{'dataacquisition': {
    'id': 'b0e4ed13-f2f1-4845-8772-24978539d0bd',
    'notes': 're-run with higher gain',
    'session': '1f7f103b-e949-405a-9b01-ddda3b2f10cf',
    'procedures': ['087b71c4-6785-437c-b8ef-e35a82a8463e'],
    'equipment': ['5b032f95-3f5b-4a27-9680-5f8f671dba22'],
    'type': 'ExtracellularEphys',
    'details': {
        'fileName': 'session1_probe.dat',
        'format': 'binary',
        'type': 'int16',
        'nChannels': 64,
        'sr': 30000,
        'nSamples': 180000000,
        'electrodeGroups': [
            {'channels': [0, 2, 4], 'label': 'anterior'},
            {'channels': [1, 3, 5], 'label': 'posterior'}
        ],
        'channelTags': [
            {'tag': 'artifact', 'channels': [1, 5], 'groups': [1]},
            {'tag': 'good', 'channels': [0, 2], 'groups': [0]}
        ]
    },
    'image': None,
    'order': 0
}}
Delete
- Allowed portals: private
- Request method: DELETE
- URL: https://www.brainstem.org/api/private/modules/dataacquisition/<id>/
- Data: None
- Responses: 204OK;400Bad request;403Not allowed;404Not found
400 is returned when the data acquisition is still referenced by an epoch in the same session.
Use example (using Python API)
resp = client.delete_model("dataacquisition", id="b0e4ed13-f2f1-4845-8772-24978539d0bd")