Specimen List
Specimen endpoint
» click to learn about Filtering, Ordering and more...
Accepted filters:
- search: Search in the following fields: name, code, description, owner__full_name, responsible_person__full_name, catalogue_number, vendor, status, owned_by__name, batch_number, organism, risk_group, pubmed_id, publication. (^startswith, $regex, =exact)
- deleted: Deleted (exact)
- deleted_by: Deleted by (exact)
- deleted_date: Deleted date (exact)
- type: Filter by the protocol type e.g. extract (exact)
- model_type: Filter by the protocol type e.g. extract (exact)
- owner: Owner Username (exact)
- owned_by: Filter on list of owned by group names [OR] (exact)
- public: Public (exact)
- name: Name starts with (istartswith)
- description: Description contains (icontains)
- query: Search filter on the name property (exact)
- created_by: Created by Username (exact)
- modified_by: Modified by Username (exact)
- id: ID (exact)
- code: Code contains (icontains)
- stock_locations: Stock locations Short name contains (icontains)
- responsible_person: Responsible Person Username contains (icontains)
- catalogue_number: Catalogue # contains (icontains)
- vendor: Origin/Vendor contains (icontains)
- status: Status (exact)
- maintained: Maintained (exact)
- batch_number: Batch # (exact)
- organism: Organism contains (icontains)
- risk_group: Risk Group contains (icontains)
- pubmed_id: PubMed ID contains (icontains)
- publication: Publication contains (icontains)
Advanced Filtering
You can also filter using a json object to process all search parameters. Currently this filter supports the syntax as produced/used by the http://summitroute.github.io/react-structured-filter/ search UI.
Example
?query_expression={"category":"name","operator":"contains","value":"Y00"},
{"category":"amount","operator":">","value":"10"},
{"category":"type__name","operator":"exact","value":"ANTIBODY"}
» more info about the query_expression param..
Preset mappings
- stock_locations: stock_locations__name
- responsible_person: responsible_person__username
- deleted: <function filter_deleted at 0x7f45063b6710>
- deleted_by: deleted_by__username
- type: type__name
- owner: owner__username
- owned_by: owned_by__name
- notes: notes__content
- created_by: created_by__username
- modified_by: modified_by__username
- stock: stock__name
- linked_stock: linked_stock__name
- shipments: shipmentitems__shipment__name
- protocol_list: protocol_list__name
Operators
- ==
- =
- >=
- >
- <=
- <
- contains
- icontains
- exact
- iexact
- startswith
- istartswith
- endswith
- iendswith
Permission filtering
Based on the current logged in user you can filter for objects that have a particular permission set:
- can_change: True/False, show objects that you can change
- can_delete: True/False, show objects that you can delete
# not applicable - will raise NotAcceptable:
- can_view: as this is always True, you can only view items you are allowed to see
Ordering
You can order on practically any field even spanning relations.
# reverse order on owner username
?ordering=-owner
# order on related field
?ordering=category__version
Specimen endpoint
API endpoint that allows stocks to be viewed or edited.
None None None
The default modelviewset used in this project
Add JSONPatch like functionality to bulk update items.
### Bulk Delete
This view also allows for one to bulk delete items. The url needs to be appended by ``/bulk_delete/`` and the ids
need to be given by multiple query_params:
```
{current_url}/bulk_delete/?id=<id_1>,id=<id_2>
```
GET /api/v2/stocks/specimen/?format=api&ordering=-vendor
{
"previous": null,
"next": null,
"current": 1,
"total": 1,
"total_pages": 1,
"results": [
{
"code": {
"name": "code",
"value": "",
"category": "property"
},
"model_type": {
"name": "model_type",
"category": "property",
"value": "CELLLINE"
},
"maintained": {
"name": "maintained",
"value": true,
"category": "property"
},
"responsible_person": {
"name": "responsible_person",
"value": null,
"category": "property"
},
"catalogue_number": {
"name": "catalogue_number",
"category": "property",
"value": ""
},
"vendor": {
"name": "vendor",
"category": "property",
"value": ""
},
"status": {
"name": "status",
"value": {
"value": "AVAILABLE",
"label": "AVAILABLE"
},
"category": "property"
},
"stock_locations": {
"name": "stock_locations",
"value": [],
"category": "property"
},
"deleted": {
"name": "deleted",
"value": false,
"category": "property"
},
"deleted_by": {
"name": "deleted_by",
"value": null,
"category": "property"
},
"deleted_date": {
"name": "deleted_date",
"value": null,
"category": "property"
},
"produced": {
"name": "produced",
"value": "",
"category": "property"
},
"type": {
"name": "type",
"value": {
"name": "CELLLINE",
"id": "294dcccd-e233-4815-97fc-dfe008583654"
},
"category": "property"
},
"owner": {
"name": "owner",
"value": {
"id": 3,
"username": "demo",
"full_name": "Demo User"
},
"category": "property"
},
"owned_by": {
"name": "owned_by",
"value": {
"id": 2,
"name": "Demo"
},
"category": "property"
},
"public": {
"name": "public",
"value": true,
"category": "property"
},
"permissions": {
"name": "permissions",
"value": {
"public": true,
"actions": {},
"allowed": [
"view"
]
},
"category": "property"
},
"notes": {
"name": "notes",
"category": "property",
"value": 0
},
"choice_label": {
"name": "choice_label",
"category": "property",
"value": "Balb/c"
},
"model_name": {
"name": "model_name",
"category": "property",
"value": "specimen"
},
"app_name": {
"name": "app_name",
"category": "property",
"value": "stocks"
},
"name": {
"name": "name",
"value": {
"id": "a7ea1cb8-d07a-4193-a4eb-e0e5e3292275",
"name": "Balb/c",
"model_name": "specimen",
"app_name": "stocks",
"model_type": "CELLLINE"
},
"category": "property"
},
"description": {
"name": "description",
"category": "property",
"value": ""
},
"id": {
"name": "id",
"category": "property",
"value": "a7ea1cb8-d07a-4193-a4eb-e0e5e3292275"
},
"created": {
"name": "created",
"value": "2025-12-16T09:33:22.277900+01:00",
"category": "property"
},
"modified": {
"name": "modified",
"value": "2025-12-16T09:33:22.281110+01:00",
"category": "property"
},
"created_by": {
"name": "created_by",
"value": {
"id": 3,
"username": "demo",
"full_name": "Demo User"
},
"category": "property"
},
"modified_by": {
"name": "modified_by",
"value": {
"id": 3,
"username": "demo",
"full_name": "Demo User"
},
"category": "property"
},
"stock": {
"name": "stock",
"value": {},
"category": "property"
},
"linked_stock": {
"name": "linked_stock",
"value": [],
"category": "property"
},
"batch_number": {
"name": "batch_number",
"value": "",
"category": "property"
},
"organism": {
"name": "organism",
"value": {
"id": "eec5e217-ffc2-41b9-bcf6-5e436114313d",
"name": "Mouse",
"label": "Mouse (Mus musculus)",
"description": "Mus musculus",
"dbxref_id": "Mus musculus"
},
"category": "property"
},
"risk_group": {
"name": "risk_group",
"value": {
"id": "e46b6a63-2539-4d86-bbb1-5b662fae7c29",
"name": "RG1",
"label": "RG1 (Biological agent that are not associated with disease in healthy adult humans or animals)",
"description": "Biological agent that are not associated with disease in healthy adult humans or animals",
"dbxref_id": ""
},
"category": "property"
},
"pubmed_id": {
"name": "pubmed_id",
"value": [],
"category": "property"
},
"publication": {
"name": "publication",
"category": "property",
"value": ""
},
"shipments": {
"name": "shipments",
"category": "property",
"value": []
},
"protocol_list": {
"name": "protocol_list",
"category": "property",
"value": {}
},
"stocks_cellline_celltype": {
"value": {}
},
"stocks_cellline_culture_media": {
"value": ""
},
"stocks_cellline_genotype": {
"value": ""
},
"stocks_cellline_passage_number": {
"value": null
}
}
]
}