Labcollector Web Service Application Programming Interface Software User Guide

Labcollector Web Service Application Programming Interface Software User Guide

LabCollector - logoVersion 2.0 – November 2021
Web Service Application Programming Interface Software
User Guide

Web Service Application Programming Interface Software

LabCollector Web Service Application Programming Interface Software

INTRODUCTION

The LabCollector Web Service Application Programming Interface (API) allows third-party applications to interact with LabCollector’s database (modules) and add- ons (ELN and LSM).
The API is based on a Representational State Transfer (REST) architecture allowing access to resources through Uniform Resource Identifier (URI) and actions on them.
Note: Since June 2017 API v1 was discontinued and all new evolutions are in API v2.

LABCOLLECTOR API

2-1. API setup
First of all, you have to declare your application in your LabCollector software. To access the application declaration setup form, log in to LabCollector with super-administrator rights and go to Admin > Setup page. Then select the Web Service API link. LabCollector Web Service Application Programming Interface Software - API setupYou are now on the Web Service API applications management page. To declare a new application, simply complete this form: LabCollector Web Service Application Programming Interface Software - API setup 1

  • Name: name of your application.
  • Modules connected to this application: select modules in which the application can access.
  • Default operator: select the contact that will be the default operator if you don’t want to insert this information in each request.
  • IP Restriction: security option allows you to declare a list of IP addresses, which will be allowed you to perform requests on the API.

The Application list shows all the applications for your LabCollector and you can, at any time, modify their scope.
You have also access to the Token which is necessary to identify your application during requests to the API. LabCollector Web Service Application Programming Interface Software - API setup 2

Note: To use this feature, you need to activate Curl on your PHP preferences. In Linux, install the PHP-Curl package.
On windows and with our automatic installer, edit PHP.ini and uncomment extensions for Curl (extension=php_curl.dll).
2-2. Requests
The dialog between third-party applications and the LabCollector web service API is based on the HTTP 1.1 protocol.
2-2-1. API Method
You can send HTTP or HTTPS requests to the web service with a method to act on a resource.

  • GET method for reading a resource
  • POST method to create a new resource
  • PUT method to modify a resource
  • DELETE method to delete a resource

2-2-2. Headers
A request to the API requires some specific HTTP/HTTPS headers:

  • The Accept header defines the desired response format of your request, text/XML, or application/JSON.
  • The X-LC-APP-Auth header is where you put your application token which is necessary to authorize your request to the API.
  • The X-LC-APP-Charset header defines the character encoding of your application. It allows the API to send back the response with the appropriate encoding and to correctly convert your POST and PUT requests to the LabCollector’s character encoding (ISO 8859-1).

2-2-3. Tool
You can try to retrieve data from or send data to the API with some software app as Postman (https://www.getpostman.com/).

Uniform Resource Identifier (URI)

2-3-1. GET method
General
Each LabCollector module data is identified by a unique URI (see annex for a complete list of the module’s URI):
[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE] This request replies to the list of all data in a module.
You can do searching into module data by adding parameters to your URI. You can pass a parameter with a keyword matching a field value, like:[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]?name=[KEYWORD]e.g.
[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]?name=First%20Record
This request returns the records where their name value contains the “First Record” keyword.
They are some custom parameters that the API uses to perform searching and filtering actions.
Custom parameters

  • The record_id parameter to specify data by its ID:

[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]?record_id=[RECORD_ID]
e.g. [PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]?record_id=1,19
This request returns records with ID 1 and ID 19. You can specify multiple IDs by separating them with a comma.

  • The by_keywords parameter performs a keyword search:

[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]?by_keywords=[KEYWORD]
e.g. [PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]?by_keywords=cell
This request performs a search into all fields of all records and returns matching cells. You can specify multiple keywords by separating them with a comma.

  • The by_keywords parameter performs a keyword search:

[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]?by_keywords=[KEYWORD]
e.g. [PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]?by_keywords=cell
This request performs a search into all fields of all records and returns a matching cell. You can specify multiple keywords by separating them with a comma.

  • The fields parameters, If you want to retrieve only some fields values in the API response:

[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]?fields=[FIELD1],[FIELD2]
e.g. [PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]?fields=count,name
This request returns all records from the module but with only count and name fields. You can specify multiple fields by separating them with a comma.
The request accepts now multiple values separated by a comma, for custom fields of type “select”LabCollector Web Service Application Programming Interface Software - device

  • The search_on parameter allows you to search for data. And you can use it to search by date range as follow:

[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]&
search_on=date_field&from=XXXXXX&to=ZZZZZZ
If you only use FROM, the result will give all dates bigger than the FROM date. If you only use too, it will return all the value until this date. LabCollector Web Service Application Programming Interface Software - device 1

  • The sort_by parameter allows you to sort your search:

[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]?sort_by=[FIELD1]_DESC
e.g. [PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]?sort_by=name_DESC
This request returns all records sorted in descending order on the name field. You can specify multiple sort_by separating them with a comma and specified order ascendant  _ASC” or descendant “_DESC” for each field.

  • The limit_to parameter allows you to limit the number of results:

[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]?limit_to=0,10
This request returns 10 records beginning at index 0. If you do not specify the index, only the number of results indicated is returned.
The API also returns two custom fields in the header response, “X-LC-QUERY-RESULT” containing the number of results returned in the body response and “X-LC-QUERY- TOTAL” containing the total of records matching your search.
Each record also has a unique URI:
[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]/[DATA_ID]
This request replies a unique record. [DATA_ID] must match the unique ID of the record you want to retrieve.
Storage
You also have Tube Sorter filtering functions for every item linked to storage:
[PATH_TO_LABCOLLECTOR]/webservice/index.php?v=2&action=tube_sorter&box_i d=[BOX_ID]
e.g. [PATH_TO_LABCOLLECTOR]/webservice/index.php?v=2&action=tube_sorter&box_i d=34
This request returns storage info on box ID 34 like tube sorter. You can specify multiple IDs by separating them with a comma. LabCollector Web Service Application Programming Interface Software - device 2

[PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=tube_sorter&box_i d=[BOX_ID]&record_name=[RECORD_NAME]
e.g. [PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=tube_sorter&box_i d=206&record_name=ST-260
[PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=tube_sorter&recor d_name=[RECORD_NAME]
e.g. [PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=tube_sorter&recor d_name=ST-260
These requests perform filtering on a record named ST-260. You can specify multiple record names by separating them with a comma. You can also specify box ID, here 206.[PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=tube_sorter&box_n ame=[BOX_NAME]
e.g. [PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=tube_sorter&box_n ame=test-rack_06
This request performs filtering on box test-rack_06. You can specify multiple box names by separating them with a comma.
Other search parameters to action=tube_sorter can be:

  • location_id
  • location_name
  • facility_id
  • facility_name
    It will return empty boxes as well.
  • The storage_sec parameter allows retrieving information about secondary storage.

[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]&data_id=[DATA_ID]& fields=storage_sec LabCollector Web Service Application Programming Interface Software - device 3

Product lot

  • The action get lot allows retrieving lot and reagent info

[PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=getLot
[PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=getLot&lo t_id=1/LT
[PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=getLot&ch em_id=2
Optional parameters are lot_id (in format 1 or 1/LT) and chem_id. If it doesn’t receive parameters, then it retrieves all active lots.
Recipe
[PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=getRecipe s
[PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=getRecipe &recipe_id=[record_id]
e.g. [PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=getRecipe &recipe_id=509
[PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=getRecipe Logs
[PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=getRecipe Report&log_id=[record_id]
e.g. [PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action=getRecipe Report&log_id=1218
IDs are examples but are mandatory in these calls.
get recipes prints the following info: id, name, description, category LabCollector Web Service Application Programming Interface Software - device 4

get recipes prints the following info for that recipe_id: id, name, description, category, and then the components LabCollector Web Service Application Programming Interface Software - device 5getRecipeLogs prints the following info: id, name, description, category LabCollector Web Service Application Programming Interface Software - device 6getRecipeReport prints the report PDF for that log_id under the format base64 that can be decoded into PDF. LabCollector Web Service Application Programming Interface Software - device 7

2-3-2. POST method
To create a new resource, simply send a request with the POST method to the desired module URI:
[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]
Your parameter keys have to match the field’s name.
Check for uniqueness fields that have been added, when creating new records (POST) or update (PUT)
If exists a different record with the same value for a field Uniqueness, API will not complete the action and will return code 409 (Conflict), and the text: Value for field ‘XXX’ must be unique. Value ‘YYY’ already exists in table ‘ZZZ’. (see screenshot) LabCollector Web Service Application Programming Interface Software - device 8

Note: project_code field can be used in POST and PUT and it expects text (not id). You can now create a new project code if it does not exist and if the operator has permissions enough (administrator or super-administrator).

  • The action addBox allows you to create a box

[PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2&action= addBox

  • Required parameters:
    o name
    o type (must be a valid type: box, box_nogrid, plate, microplate, visit be, bag, shelf part)
    o equipment (supports id or name and must exist in LabCollector storage).
    o size (depends on the type of box: should be numeric for a visit be, and the format (A:1.H:8) for a box, a plate, and a microplate)
  • Optional parameters:
    o description
    o rack
    o keeper

2-3-3. PUT method
To modify a resource, simply send a request with the PUT method to the desired record URI:
[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]/[DATA_ID]
Your parameter keys have to match the field’s name you want to modify.
For the following actions, note that for PUT requests, parameters must be on the body (not in the URL).
The URL is [PATH_TO_LABCOLLECTOR]/webservice/index.PHP?v=2
The headers are: X-LC-APP-Auth, Accept.

  • Remove Volume
    – Parameters:
    o removeVolume (mandatory)
    o barcode, unique_code, or aliquot_barcode (one of them must be present)
    o quantity (mandatory)
    – Response: OK
  • Remove Storage
    – Parameters:
    o remote storage (mandatory)
    o barcode, unique_code, or aliquot_barcode (one of them must be present)
    – Response: OK
  • Add Registry Book
    – URL:
    [PATH_TO_LABCOLLECTOR]/webservice/index.php?v=2&module=[m odule]
    – Parameters:
    o addRegistryBook (mandatory)
    o record_id (mandatory)
    o date (mandatory, format yy yy/mm/dd or yyyy-mm-dd)
    o comments (mandatory)
    o operator (optional, if it does not send the API default operator will be used)
    o action (optional, must be a valid ‘Storage Action Type’ defined in LC
    >Admin >Preferences > Process & Actions Type)
    – Response: OK
  • Add Secondary storage
    – Parameters:
    o add secondary storage (mandatory)
    o barcode (mandatory)
    o box_id (mandatory)
    o box_details (mandatory only for the box with grid divider, tube tray, and microplate. If the box is without a grid, a bag, a visit be or a shelf part, it is not required)
    o unique_code (optional)
    o volume (optional)
    o comments (optional)
    o cap_color (optional)

Note: An error message is returned if mandatory parameters are not present; if the barcode does not exist; if the unique_code is present, but it isn’t unique; and, if the color is present but it doesn’t exist.
If the parameter box_details is not received and the type of box needs position (box with grid, tube tray, or microplate), an error message is returned. LabCollector Web Service Application Programming Interface Software - device 9LabCollector Web Service Application Programming Interface Software - device10Note: project_code field can be used in POST and PUT and it expects text (not id). You can now create a new project code if it does not exist and if the operator has permissions enough (administrator or super-administrator).
2-3-4. DELETE method
To delete a resource, simply send a request with the DELETE method to the desired record URI:
[PATH_TO_LABCOLLECTOR]/webservice/v2/[MODULE]/[DATA_ID]

API ERROR MESSAGES

Message Response codeDescription 
Requires application authentication to access the Web Service’401 UnauthorizedThe request either does not have the header parameter X- LC-APP-Auth or does not have a valid value
‘Invalid Action xxx’400 Bad RequestParameter action has a different value to ‘tube_sorter’
or ‘NetBackup’
Missing Search Parameters!400 Bad RequestThe request contains the parameter Action=tube_sorter
but it is missing at least one of the following parameters: box_id, box_name, record_name, unique_code, barcode, aliquot_barcode
Module “XXX” does not exist!’400 Bad RequestThe value of  the parameter ‘module’ is not a GB collector module
Module “XXX” does not share this data!’403 ForbiddenThe value of the parameter ‘module’ is not checked on
LabCollector > Admin > Setup > Web service
‘The format of the request is not accepted!’415 Unsupported Media TypeThe parameter Accept is used, but the value is not one of the accepted values: application/XML or application/JSON
(Empty)406 Not AcceptableThe method must be one of the following: GET, POST,  PUT, DELETE
‘No data found.’404 Not FoundNo data was found with this request’s parameters
‘OK.’200 OKRecord updated successfully
‘Conflict.’409 ConflictThe record could not be updated because there is a
conflict in data
No organisms value for this module404 Not FoundOnly the modules “strains”, “samples” and  microarrays”
have an organism value – you have chosen an incorrect
module
No categories value for this module404 Not FoundOnly the module ‘docs’ has categories – you have chosen
an incorrect module
Webservice requires user authentication401 UnauthorizedDeprecated
Your IP is not allowed to access this Web Service’401 UnauthorizedThe client IP is not in the list of authorized IPs for this
Webservices (LC > Admin > Setup > Web service)
Error during your request, the following information is mandatory to create a new
record: X, Y, Z ‘
400 Bad RequestAttempt to post new data without mandatory fields X, Y,
Z
An error has occurred during your request, the following information is mandatory to remove volume: unique_code or barcode or aliquot_barcode, quantity,  quantity400 Bad RequestAttempt to remove volume without mandatory
parameters: unique_code or barcode or aliquot_barcode,
quantity
An error has occurred during your request, the following information is mandatory to
remove storage: unique_codeor barcode or
aliquot_barcode, quantity ‘
400 Bad RequestAttempt to remove storage without a mandatory
parameter: unique_code or barcode or aliquot_barcode
200 OKThe data requested was returned successfully

LABCOLLECTOR WEB SERVICE API – ANNEX

The URI system of the API uses a simple and clean URL. Be sure to enable the rewrite engine from Apache to use the URI referenced in the following table. If the LabCollector server does not support the rewrite engine please use the full URL pattern for your request (secondary URL of each line).

UMModuleDescription
webservice/v2/strains webservice/index.PHP?v=2&module=strai nsGET POSTStrains & CellsList of all records
webservice/v2/strains/(DATA JD] webservice/index.PHP?v=2&module=strai ns&data jd.[DATA _ID]GET PUTStrains & CellsUnique record
webservice/v2/strains/custom fields webservice/index.php?v=2&module=strai ns&getModuleCustomFields=1GETStrains & CellsList of custom fields
webservice/v2/strains/organisms webservice/index.PHP?v=2&module=strai ns&getModuleOrganisms=1GETStrains & Cells organismsList of
webservice/v2/plasmids webservice/index.php?v=2&module=plas midsGET POSTPlasmidsList of all records
webservice/v2/plasmids/IDATAjD] webservice/index.php?v=2&module=plasmids&data _id=IDATA _ID]GET PUTPlasmidsUnique record
webservice/v2/plasmids/custom fields webservice/index.PHP?v=2&module=plas mids&getModuleCustomFields=1GETPlasmids fieldsList of custom
webservice/v2/primers webservice/index.PHP?v=2&module=pri mersGET POSTPrimersList of all records
webservice/v2/primers/[DATA JD] webservice/index.PHP?v=2&module=pri mers&data _idADATA _ID]PUT GETPrimersUnique record
webservice/v2/primers/custom fieldsGETPrimersList of custom fields
webservice/index.PHP?v=2&module=pri mers&getModuleCustomFields=1
webservice/v2/chemicals webservice/index.PHP?v=2&module=che micalsGET POSTReagents & SuppliesList of all records
webservice/v2/chemicals/IDATA _ID] webservice/index.PHP?v=2&module=che micals&data_idADATA _ID]GET PUTReagents & SuppliesUnique record
webservice/v2/chemicals/custom fields webservice/index.PHP?v=2&module=che micals&getModuleCustomFields=1GETReagents & Supplies fieldsList of custom
webservice/v2/samples webservice/index.PHP?v=2&module=sam piesGET POSTSamplesList of all records
webservice/v2/samples/IDATA_ID) web service/index.PHP?v=2&module=sam ples&data_id=[DATA _ID]GET PUTSamplesUnique record
webservice/v2/samples/custom fields webservice/index.PHP?v=2&module=sam ples&getModuleCustomFields=1GETSamplesList of custom fields
webservice/v2/samples/organisms webservice/index.php?v=2&module=sam ples&getModuleOrganisms=1GETSamplesList of organisms
webservice/v2/samples/types webservice/index.PHP?v=2&module=sam ples&getModuleTypes=1GETSamplesList of sample types
webservice/v2/antibodies webservice/index.PHP?v=2&module=anti bodiesGET POSTAntibodiesList of all records
webservice/v2/antibodies/(DATA _iDi webservice/index.PHP?v=2&module=anti bodies&data_id=IDATA _ID]GET PUTAntibodiesUnique record
webservice/v2/antibodies/custom fields webservice/index.PHP?v=2&module=anti bodies&getModuleCustomFields=1GETAntibodies fieldsList of custom
webservice/v2/sequences webservice/index.PHP?v=2&module=seq uencesGET POSTSequencesList of all records
webservice/v2/sequences/(DATA _iDI webservice/index.PHP?v=2&module=seq uences&data _icHCIATA JD]GET
PUT
SequencesUnique record
webservice/v2/sequences/custom fields webservice/index.PHP?v=2&module=seq uences&getModuleCustomFields=1GETSequences fieldsList of custom
webservice/v2/animals webservice/index.PHP?v=2&module=ani matsGET POSTAnimalsList of all records
webservice/v2/animals/(DATA JD] webservice/index.PHP?v=2&module=ani mals&data _ick[DATA JD]GET PUTAnimalsUnique record
webservice/v2/animals/custom fields webservice/index.PHP?v=2&module=ani malsketModuleCustomFields=1GETAnimalsList of custom fields
webservice/v2/equipments webservice/index.php?v=2&module=equi pmentsGET POSTEquipmentList of all records
webservice/v2/equipments/PATA _el Webservice/index.php?v=2&module=equi pments&data _idADATA _ID]GET PUTEquipmentUnique record
webservice/v2/equipments/custom fields webservice/index.PHP?v=2&module=equi pments&getModuleCustomFields=1GETEquipment fieldsList of custom
webservice/v2/structures webservice/index.PHP?v=2&module=stru curesGET POSTChemical StructuresList of all records
webservice/v2/structures/(DATA_ID] webservice/index.PHP?v=2&module=stru ctures&data jd=(DATA JD]GET PUTChemical StructuresUnique record
webservice/v2/structures/custom fields webservice/index.PHP?v=2&module=stru cturesketModuleCustomFields=1GETChemical StructuresList of custom fields
webservice/v2/docs webservice/index.PHP?v=2&module=docsGET POSTDocumentsList of all records
webservice/v2/docs/(DATA JD] webservice/index.PHP?v=2&module=docs &data _idADATA _ID]GET PUTDocumentsUnique record
webservice/v2/docs/custom fields webservice/index.php?v=2&module=docs &getModuleCustomFields=1GETDocumentsList of custom fields
webservice/v2/docs/categories webservice/index.PHP?v=2&module=docs &getModuleCategories=1GETDocuments categoriesList of
webservice/v2/book webservice/index.PHP?v=2&module=abo okGET POSTAddress BookList of all records
webservice/v2/book/(DATA _ID] webservice/index.php?v=2&module=abo ok&data_idADATA _ID]GET PUTAddress BookUnique record
webservice/v2/book/custom fields webservice/index.PHP?v=2&module=abo ok&getModuleCustomFields=1GETAddress BookList of custom fields
webservice/v2/book/categories webservice/index.PHP?v=2&module=abo ok&getModuleCategories=1GETAddress Book categoriesList of
webservice/v2/microarrays webservice/index.PHP?v=2&module=micr arraysGET POSTMicroarraysList of all records
webservice/v2/microarrays/(DATA_ID] webservice/index.PHP?v=2&module=micr oarrays&data_id=[DATA _ID]GET PUTMicroarraysUnique record
webservice/v2/microarrays/custom fields webservice/index.PHP?v=2&module=micr oarrays&getModuleCustomFields=1GETMicroarraysList of custom fields
webservice/v2/microarrays/organisms webservice/index.PHP?v=2&module=micr oarrays&getModuleOrganisms=1GETMicroarrays organismsList of
webservice/v2/(CUSTOM_MODULE_NAM El
webservice/index.PHP?v=2&module=ECU STOM_MODULE_NAMEI
GET POSTCustom ModuleList of all records
webservice/v2/(CUSTOM_MODULE_NAM EMIDATA _ID]
webservice/index.PHP?v=2&module=[CU STOM_MODULE_NAME] &data_id=[DATA _ID]
GET PUTCustom ModuleUnique record
webservice/v2/(CUSTOM_MODULE_NAM Elicustomfields webservice/index.PHP?v=2&module=[CU STOM_MODULE_NAME184getModuleCust omFields=1GETCustom ModuleList of custom fields

LabCollector - logo 1

http://[email protected]
AgileBio USA
5473 Kearny Villa Road Suite 255
San Diego, CA 92123
USA
Tel: 347 368 1315
Fax: (800) 453 9128
http://www.agilebio.com
AgileBio Headquarters
75 rue de Lourmel
75015 Paris
FRANCE
Tel: 01 41 79 15 85
Fax: 01 72 70 40 22

References

Documents / Resouces

Download manual
Here you can download full pdf version of manual, it may contain additional safety instructions, warranty information, FCC rules, etc.


Related Manuals