Upsert REST API will be available in the coming release of Calem R2024a. It is more intuitive than current data update APIs. A user may use the API to add or update a record in Calem, similar to the data upload utility (see this blog).
1. Fields
Fields are identified by field names, labels, or other means. Data dictionary (Admin | Report | Data Dictionary) is the source of field names and labels.
Calem uses the formats of the field names to determine database values. Here is the summary of the rules.
| Data base field names. It is the "Field" in data dictionary. For instance, Item table (cm_in) has the following field names: "in_no" – item number "vendor_site_id" – vendor site Id |
Raw values must be provided for database field names. For example, "in_no" of "cm_in" (Item table) is the item number, the value is the item number such as "01-01-001". "vendor_site_id" of "cm_in" (Item table) is a lookup field. Lookup fields have a suffix of "_id". The value is the Id of a vendor site such as "213c5375-6aaa-a17f-92ed-a7e713fcecc4". |
| A join field name. It is "lookup field name"+"_". For instance, "vendor_site_id_" is the equivalent of field label "Vendor site". |
For lookup fields it is cleaner and intuitive to use this format. Alternatively, one can use direct Id field (with Id values), or labels below. |
| Field labels. It is the "label" of a field in data dictionary. Calem recommends the use of field names in interface specification since field labels are subject to changes in future releases. For instance, Item table (cm_in) has the following field labels: "Item #" for "in_no" "Vendor site" for "vendor_site_id" | The field names and values must be same as an export of a report in Calem: • The field names are field labels. • The values for non-lookup fields are database values; • For dropdown lookups, the values can the English labels, or database values. For instance, the database value "wos_new" (work order status) is transformed to "New" (the English label) in an excel export. "wos_new" is also acceptable. • For table lookups, the value must be the primary key corresponding to the lookup Id. For instance, the value for "Vendor site" (the label for "vendor_site_id" field) must be "Acme" (the vendor site (primary key) for record Id "213c5375-6aaa-a17f-92ed-a7e713fcecc4". |
| Datetime field type based on data dictionary. For instance, inventory transaction datetime. | The value needs to be your local time. The format may be one of the two below. • 19-character format of "yyyy-mm-dd M:i:s" such as "2024-04-20 14:30:00". • Local date time format such as "4/20/24 2:30 pm" for US locale. |
| Date field type based on data dictionary. For instance, asset purchase date. | The value needs to be your local time. The format may be one of the two below. • 10-character format of "yyyy-mm-dd" such as "2024-04-20". • Local date format such as "4/20/24" for US locale. |
2. Data Payload
The "POST" operation is used for upsert: An insert is attempted. If a key violation is incurred from insertion, an update is attempted.
{
"table": "cm_in_site",
"data": {
"site_id_": "Site-001",
"in_id_": "IN-001",
"description": "In-001-Desc",
"status_id": "ins_active",
"note": "In-001-Spec",
"uom_id_": "U001",
"order_type_id": "in_order_minmax",
"min_level": "5",
"max_level": "10"
}
}
{
"table": "cm_in_site",
"data": {
"Site": "Site-001",
"Item": "IN-001",
"Description": "In-001-Desc",
"Status": "ins_active",
"Specification": "In-001-Spec",
"Stock Unit": "U001",
"Order Type": "in_order_minmax",
"Min": "5",
"Max": "10"
}
}
{
"status": 0,
"data": {
"id": "013c5375-6aaa-a17f-92ed-a7e713fcecc4",
"asset_no": "A084346",
"note": "Asset Note",
"etc": "etc"
}
}
3. Service Address
The service address uses virtual table "cm_vt_ld_so" with your Calem service. For instance,
Additional Resources
By accepting you will be accessing a service provided by a third-party external to https://calemeam.com/