December 21, 2023
CDD Vault Update (December 2023 #3): New Password Algorithm and API Parameter Updates (ELN, Plates, Runs)
New Password Algorithm
CDD Vault will now use the Zxcvbn password algorithm when users set their passwords. This algorithm analyzes a proposed password and gives it a rating based on how hard it is for hacking software to guess. CDD Vault will require a zxcvbn score of 4 (out of 4).
Update ELN Entries via the API
A new PUT ELN Entries
API call can be used to modify the content of existing ELN Entries. Update the title, project, ELN fields and even the body; adding links, text, and files using a new parameter, append_to_body
.
This new parameter is an array of JSON objects, each with a specific type
and associated parameters:
- TEXT: { "type": "text", "text": "required text goes here" }
- LINK: { "type": "link", "url": "required URL goes here, same scheme rules as frontend", "label": "optional label override goes here" }
- FILE: { "type": "file", "file": <file id> }
This API call:
PUT .../vaults/<vault_id>/eln/entries/<entry_id>
... using this JSON:
{"append_to_body": [
{"type": "text", "text": "Description of this experiment"},
{"type": "link", "url": "https://www.collaborativedrug.com", "label": "This is a link to CDD"},
{"type": "file", "file": 12345}
]}
... will append the content to the existing ELN Entry.
The POST ELN Entries
API call can now update the status of an ELN Entry. As an example, to reopen a finalized ELN entry.
For Vaults with Witnessing enabled, these parameters may be used
- { status_action: submit, witness: required user id }
- { status_action: approve }
- { status_action: reject, reason: required string }
- { status_action: cancel }
For Vaults without Witnessing, this parameter may be used:
- { status_action: finalize }
And these parameters are available for all ELN enabled Vaults:
- { status_action: reopen, reason: (string, required) }
- { status_action: discard }
To submit an Entry for witnessing use this API call:
POST .../vaults/<vault_id>/eln/entries/<eln_entry_id>/status
... using this JSON:
{
"status_action":"submit",
"witness":"10276"
}
To reject an ELN Entry use this API call:
POST .../vaults/<vault_id>/eln/entries/<eln_entry_id>/status
... using this JSON:
{
"status_action":"reject",
"reason":"Not enough data"
}
To approve/finalize an ELN Entry use this API call:
POST .../vaults/<vault_id>/eln/entries/<eln_entry_id>/status
... using this JSON:
{
"status_action":"approve"
}.
PUT Runs API Update
Values for custom Run Fields may be updated using PUT Runs.
PUT .../vaults/4493/runs/649838
... using this JSON:
{
"run_fields":
{"CRO":"Graceland CRO"}
}
... will update the value of the CRO Run field for the specified Run.
New PUT/POST Calls for the Plates API Endpoint
The new PUT and POST endpoints are now supported for creating/updating Plate objects.
POST .../vaults/4493/plates
PUT .../vaults/4493/plates/12345
When creating a new Plate, the name
and projects
parameters must be included.
This JSON will create a new Plate:
{ "name": "New Plate 20231219",
"projects":["Internal Data"] }
The following JSON is returned:{
"id": 1239120,
"class": "plate",
"created_at": "2023-12-20T15:46:00.000Z",
"modified_at": "2023-12-20T15:46:00.000Z",
"name": "CW Plate 20231219",
"volume": 0.0,
"concentration": 0.0
}
These parameters can also be used when creating/updating Plates:
- concentration
- concentration_unit_label
- volume
- volume_unit_label
- location
To associate Batches to the various Plate Wells, either when creating the Plate or updating a Plate, use the wells
parameter (which must be an array).
The JSON for using the concentration
, volume
and location
parameters, along with the well
parameter, should resemble:
{ "name": "CW Plate 20231219e",
"projects":["Internal Data"],
"concentration":"10",
"concentration_unit_label":"uM",
"volume":"100",
"volume_unit_label":"mL",
"location":"LabB",
"wells":[
{"pos":"A01","batch":142517171},
{"pos":"A02","batch":126705604},
{"pos":"A03","batch":126705581}
]
}
Note: The GET Plates
API call also has an only_ids
parameter for returning only the internal Plate IDs.
GET .../vaults/4493/plates
… using JSON like this:
{ "only_ids":"true" }
… returns the following JSON results:
{
"count": 5,
"offset": 0,
"page_size": 50,
"objects": [
282199,
282200,
306728,
366630,
537940
]
}
This blog is authored by members of the CDD Vault community. CDD Vault is a hosted drug discovery informatics platform that securely manages both private and external biological and chemical data. It provides core functionality including chemical registration, data visualization, inventory, and electronic lab notebook capabilities.