Samples API Changelog

Release notes for both breaking and non-breaking changes

Written by Margot Sylvain

Last published at: January 24th, 2024

 Released Jan 24, 2024

Added field aliases in the documentation

✅  Non-Breaking Change

You can now see the field alias in the schema of the API documentation.

 

We also moved the deliveryType field under the sampleStatus field. 

 

Released Dec 28, 2023

Added deliveryType in the sendouts-report response

✅  Non-Breaking Change

GET /v1/sendout-report  and GET /v1/sendout-samples-report now return the deliveryType in the response

Released Oct 26, 2023

Create samples with location

✅  Non-Breaking Change

You can now create samples with location information. Unverified samples can have their location field imported via the API. 

 

Released Dec 21, 2022

Import images using external URL

✅  Non-Breaking Change

Before today, there was no way to import images via API using an external URL. 

You can now use external URLs to import images in all endpoints that have the Image parameter. Note that the image URLs must be publicly accessible.

  • Create master sample
  • Update master sample
  • Create inventory sample
  • Update inventory sample

The previous method of uploading images to the Sample Images endpoint still exists as of today.

Best Practice Tip

Note that there is an increased processing time to extract images from external URLs.

Therefore, we recommend creating a separate process to add or update images since the increased processing time for could create significant delays of the creation or update of other sample data. 

 

 

 

Released March 9, 2022

Sample Location Endpoint improvements

✅  Non-Breaking Change

With this update, you can now update a Sample's Physical Location via the Main API. We've also added additional ways to update the Sample Location. You can now use Sample ID, Barcode, or External Serial in addition to the existing method which was External RFID

Read more about how the feature works here

 

 

Added Department Country in the sendouts-report response

✅  Non-Breaking Change

GET /v1/sendout-samples-report now returns the Department Country in the response

 "departmentCountry": "string",

 

 

 

 


March 9, 2022

New field Sample Workflow Status

✅  Non-Breaking Change

With this update, you can now edit, create and search Sample Workflow Status. Read more about how the feature works here

  • Create inventory Samples POST /v1/inventory-samples
    • workflowStatus and can be a string or null (same as empty). Is required only if is set from Sample Field Settings. If it is not locked from Sample Field Settings then any new value will be created else they have to create the values before.
  • Search inventory samples GET /v1/inventory-samples
    • workflowStatus is an array of strings so they need to send an array. It will try to find any sample that contain any of the values sent in array.
  • Read inventory sample GET /v1/inventory-samples/{id}
    • workflowStatus and will always output as string back.
  • Update inventory sample PUT /v1/inventory-samples/{id}
    • workflowStatus and can be a string or null (same as empty). Even if it s required they can remove it from payload and will not be updated. Is the same logic as other field because we allow partial updates.  If it is not locked from Sample Field Settings then any new value will be created else they have to create the values before.

 

July 25, 2021

Addition of Looks being sent out

✅  Non-Breaking Change

With this update, you can now search by and also get Looks Being Sent Out.

  • Search Looks Being Sent Out GET /v1/sendouts-report and GET /v1/sendout-samples-report
  • Read Looks Being Sent Out  GET /v1/sendout-samples-report
    **In the response it appears as outgoingLooks



 

May 12, 2021

Allow multi value search for Department and Barcode

✅  Non-Breaking Change

With this update, you can now perform a multi-search with the Department & Barcode field for the following endpoints:

  • Search inventory samples GET /v1/inventory-samples
  • Search send-out samples GET /v1/sendout-samples-report
  • Search send-outs GET /v1/sendouts-report

 

Allow search & get Creation History fields

✅  Non-Breaking Change

In the endpoint GET /v1/inventory-samples

  • orderBy now includes importedCreationDate, inventoryCreationDate
  • Search by importedCreationDate, inventoryCreationDate
  • Response includes: importedCreationDate, inventoryCreatedBy, inventoryCreationDate, inventoryCreationMethodinventoryDataSource

 

In the endpoint GET /v1/master-samples

  • Response includes: masterListCreatedBy, masterListCreationDate, masterListCreationMethod, masterListDataSource 

 

 


 

May 6, 2021

Renaming & updating the scope of a the fields loanedFromDelivery & loanedFromDepartment

🚨  Breaking Change

This change affects the following endpoints

  • Search inventory samples GET /v1/inventory-samples
  • Read  inventory sample  GET /v1/inventory-samples/{id}


In the response, we have renamed 2 fields

loanedFromDelivery used to display the delivery # from which it was received from, but only in the case of a loan. This field now will include the delivery # regardless of if it is a loan or transfer. Thus, the field has been renamed to  receivedFromDelivery

The same applies to the field loanedFromDepartment . This field now will display the department in which the sample had been received from regardless of if it was a loan or transfer. Thus, the field has been renamed to receivedFromDepartment

 

Search for samples by receivedFromDelivery

✅  Non-Breaking Change

This change affects the following endpoints

  • Search inventory samples GET /v1/inventory-samples

Provide a delivery number in the receivedFromDelivery search parameter to get a list of samples that had been received from it.


 

April 21, 2021

✅  Non-Breaking Change

In this update we expose two new API endpoints to allow our customers to link/unlink an Inventory sample to/from a Master List sample. The endpoints look like this:

To link: POST /v1/inventory-samples/{id}/link 

To unlink: POST /v1/inventory-samples/{id}/unlink 

  • The endpoints are visible only for customers that have master list enabled.
  • Calling the link endpoint will try to find a master sample based on the inventory sample external SKU value. If found, it will be linked with the inventory sample, if not, an error will be raised.
  • Calling the unlink endpoint will try to break the link between the inventory sample and the master sample, in case there is one, if no link is present, nothing happens ( no error is raised ).
  • The above endpoints can be viewed and tested on the API documentation page.
  • The API key performing the requests must have sample edit privileges in order to link or unlink, otherwise an error will be raised

 

Additionally, the Create Inventory Sample (POST /v1/inventory-samples) endpoint has been modified with the following behavior: 

When submitting an externalSKU that does not yet exist in master list, instead of raising an error we accept the user input and create an unlinked inventory sample, with the SKU present.

It was already the case that submitting a valid externalSKU while creating a brand new sample (or editing one), would establish a link between the inventory sample and the master list record identified by that SKU. This has not changed.

For complete transparency on Creating/Editing inventory samples in relation to Master List, please refer to the table below:

Action 

Scenario 

Outcome

Create inventory sample 

ExternalSKU not found in master list

Sample is created with supplied externalSKU but no link to master list. (new)

Create inventory sample 

ExternalSKU exists in master list

Sample is created with supplied externalSKU and linked, cascade is fired automatically.

Edit inventory sample which is not yet linked to master list 

new ExternalSKU not found in master list

Sample is updated with supplied externalSKU but no link to master list.

Edit inventory sample which is not yet linked to master list 

new ExternalSKU exists in master list

Sample is updated with supplied externalSKU and linked, cascade is fired automatically.

Edit inventory sample which is already linked to master list 

ExternalSKU gets cleared

Relationship to master list record gets unlinked, sample gets updated not to have an externalSKU

Edit inventory sample which is already linked to master list 

new ExternalSKU not found in master list 

User receives an error

Edit inventory sample which is already linked to master list 

new ExternalSKU exists in master list

Sample is updated with supplied externalSKU and linked to the newly identifier master list record, cascade is fired automatically.


 

 

March 9th, 2021

Send Out reports now support billingCountry

✅  Non-Breaking Change

billingCountry aka Recipient Country is now included in the filters & output of both Send Out Reports sendouts-report & sendout-samples-report

For backward compatibility: both billing and shipment country filters support either string or array (for multiple value searches).

*Documentation has been changed to reflect the array (multi-valued) searching format.*


 

 

February 24th, 2021

Requesting API now supports 1 transaction

✅  Non-Breaking Change

We've upgraded the Requesting API to support the concept of a temporary request to prevent validation error timeouts.

Suggested steps to create a request:

1. POST /v2/requests  with default payload + property: isTemporary: true  would flag the request as temporary and keep it invisible from users as well as prevent any email notifications from being triggered.

2. For each style you wish to mark as requested you:
POST /v2/requests/{requestNumber}/styles (ASYNC)

3. In case any of the requests from step 2 encountered errors, this request should be deleted. You can do so using:
DELETE /v2/requests/{requestNumber}

4. If no errors have occurred in step2, and you transferred to us all requested samples, it is time to convert this request from Temporary to Pending. Making it visible to users and triggering email notifications to all subscribed users. You can do so by doing a

PUT /v2/requests/{requestNumber}  with payload: confirmTemporary: true