Skip to main content

REST API: Units

How to retrieve and manage measurement units

Gustavo Vera avatar
Written by Gustavo Vera
Updated over 3 weeks ago

1. Overview

Units let you express recipe quantities and purchase formats naturally.
You can define universal conversions (e.g., 1 kg = 1000 g).
Avoid product-specific assumptions (e.g., “1 bottle = 750 ml”), because that varies by product.


1.1 REST API: Login

Authenticate first; the login returns a token you must include in all requests.

[email protected] password=XXXXXXX  url=https://www.tspoonlab.com/recipes/api authenticate="username=$username&password=$password"  echo -n 'rememberme:' > rememberme.txt curl -v --data "$authenticate" "$url/login" >> rememberme.txt

Use the token in subsequent calls:

curl -X PUT -v -H "$(cat rememberme.txt)" "$url/integration/call"

1.2 Select a Cost Center / Restaurant

Most unit queries run in the context of a cost center.

Get cost centers and IDs, then add idOrderCenter to headers:

echo -n 'order:351583444167656299610202XXXXXXXXXXXX' >> rememberme.txt

Headers example

rememberme:aGVucnkudXBzYWxsLmRAZXXXXXXXXXXXXXXXXXX order:351583444167656299610202XXXXXXXXXXXX

1.3 List units

Endpoint

GET https://www.tspoonlab.com/recipes/api/listUnitsPaged?filter=&rows=50&start=0

Params

  • filter (string, optional)

  • rows, start (int, required) – pagination

Response

class Unit {   private String id;   private String descr; // unit name }

1.4 Get a unit (with usage)

Endpoint

GET https://www.tspoonlab.com/recipes/api/unit/{idUnit}/num/{numElements}
  • idUnit: unit ID (from previous call)

  • numElements: number of related records to return

Response (key fields)

public class Unit extends EntityBaseDescr {   private String id;   private String descr;    private boolean defecte;        // default for weight (e.g., kg)   private boolean defectePlat;    // default for dishes (e.g., Rac)   private boolean defecteMenu;    // default for menus (e.g., Pax)   private boolean defecteDetall;  // default for recipe detail (e.g., kg/g)   private boolean defecteFormat;  // default for vendor format (purchase)    private List<EntityBaseBool> listVendors;   private List<EntityBaseBool> listCustomers;   private List<EntityBaseComponent> listDetails;    // recipe lines using this unit   private List<EntityBaseComponent> listComponents; // products/recipes using this unit    private long listVendorsCount;   private long listCustomersCount;   private long listDetailsCount;   private long listComponentsCount;    private List<UnitConversion> listConversions;     // defined conversions (e.g., kg↔g) }  public class EntityBaseBool extends EntityBaseDescr {   private String id;   private String descr;   private boolean defecte; }  public class EntityBaseComponent extends EntityBaseDescr {   private String id;   private String descr;   private Short type;  // 0=ingredient/product, 1=intermediate, 2=material, 3=dish/final   private Long color;  // color for ingredient families }

Related paged endpoints (to fetch full lists):

GET https://www.tspoonlab.com/recipes/api/unit/{idUnit}/components/paged?filter=&rows=20&start=0 GET https://www.tspoonlab.com/recipes/api/unit/{idUnit}/details/paged?filter=&rows=20&start=0 GET https://www.tspoonlab.com/recipes/api/unit/{idUnit}/vendors/paged?filter=&rows=20&start=0 GET https://www.tspoonlab.com/recipes/api/unit/{idUnit}/customers/paged?filter=&rows=20&start=0

1.5 Create a unit

Endpoint

POST https://www.tspoonlab.com/recipes/api/unit

Body

public class NewUnit {   String descr;   boolean defecte;       // default for weight   Boolean defectePlat;   // default for dishes   Boolean defecteMenu;   // default for menus   Boolean defecteDetall; // default for recipe detail   Boolean defecteFormat; // default for vendor formats }

1.6 Delete a unit

Endpoint

DELETE https://www.tspoonlab.com/recipes/api/unit/{idUnit}

A unit cannot be deleted if it’s in use in recipes, ingredients, dishes, menus, purchases, or vendors.


Notes

  • Required headers:

    • rememberme (login token)

    • order (cost center)

  • Conversions must be universal (product-agnostic).

  • Always use pagination when fetching related entities.

Did this answer your question?