Skip to main content

Quote Order

Creates a quote order for hardware equipment. This does not require a catalog model.
You provide the hardware specifications (brand, type, RAM, etc.) and the system generates a quote line for each item.

Prerequisites

No catalog lookup is required. However, you must:

  • Provide either companyCode (for an existing company) or a company object (to create/update company information).
  • When sendTo is "EMPLOYEE", you must provide either employeeEmail or an employee object.

Authentication

This endpoint requires authentication. See Authentication for details.

Parameters

ParameterTypeRequiredDescription
countryCodestringYesCountry code in ISO 3166-1 alpha-2 format
sendTostringYesDestination: "EMPLOYEE", "STORAGE", "OFFICE" or "QUOTE_ONLY"
companyCodestringConditionalRequired if company object is not provided
companyobjectConditionalRequired if companyCode is not provided
hardwaresarrayYesArray of hardware items to quote
employeeEmailstringConditionalRequired when sendTo is "EMPLOYEE" and employee is not provided
employeeobjectConditionalRequired when sendTo is "EMPLOYEE" and employeeEmail is not provided
poNumberstringNoPurchase Order number for reference
clientNamestringNoName of the client for this order. Will be stored in the order and later added to hardware notes/description when delivered
ABMIdstringNoABM identifier. Will be added as a comment in the order along with the clientName
autoQuotebooleanNoIf true, automatically generates quote prices and updates order status to QUOTED. Sandbox/testing environments only.

Hardware Item Properties (Quote)

PropertyTypeRequiredDescription
brandenum(Brand)ConditionalRequired for MACBOOK and PC. Not allowed for warranty types. One of: ACER, ASUS, DELL, HP, LENOVO, SAMSUNG, LG, VAIO, MICROSOFT
hardwareType"MACBOOK" | "PC" | "EXTENDED_WARRANTY_MAC" | "EXTENDED_WARRANTY_WINDOWS"YesUsed to resolve hardwareTypeId internally
ramstringNoe.g. "16GB". Not allowed for warranty types.
diskSizestringNoe.g. "512GB". Not allowed for warranty types.
displaySizestringNoe.g. "15.6". Not allowed for warranty types.
modelstringNoe.g. "Latitude 5420". Not allowed for warranty types.
processorstringNoe.g. "i7-1165G7". Not allowed for warranty types.
amountnumberYesQuantity
externalItemIdstringNoExternal item identifier for integration purposes
notesstringNoOptional notes for the hardware item

Note: The hardwareType is used to look up the hardwareTypeId. The image will be copied from the hardwareType if not provided.

Warranty Hardware Types

For warranty hardware types (EXTENDED_WARRANTY_MAC and EXTENDED_WARRANTY_WINDOWS), the following restrictions apply:

  • Required fields: hardwareType, amount
  • Optional fields: externalItemId, notes
  • Prohibited fields: brand, ram, diskSize, displaySize, model, processor

These fields are not allowed for warranty types and will result in a validation error if provided.

Company Properties (When Creating/Updating Company)

PropertyTypeRequiredDescription
namestringYesCompany name
companyCodestringYesUnique code for the company
countryCodestringYesCountry code in ISO 3166-1 alpha-2 format
legalNumberstringYesLegal identification number of the company
contactEmailstringYesPrimary contact email for the company
phonestringYesPhone number with country code

Employee Properties (When Creating/Updating Employee)

PropertyTypeRequiredDescription
firstNamestringYesFirst name of the employee
lastNamestringYesLast name of the employee
emailstringYesEmail address of the employee
phonestringYesPhone number with country code
governmentDNIstringYesGovernment-issued identification number
addressstringYesPrimary address
citystringYesCity of residence
addressExtraInfostringNoAdditional address information
postCodestringYesPostal/ZIP code
countryCodestringYesCountry code in ISO 3166-1 alpha-2 format

Request

Production URL: https://orchestrator.tecspal.com/
Sandbox URL: https://tecspal-orchestrator.sandbox.lexartlabs.uy/
Endpoint: POST /orders/quote

Example Request

Standard Hardware Request

{
"data": {
"countryCode": "UY",
"sendTo": "STORAGE",
"companyCode": "DM1",
"poNumber": "PO-2024-12345",
"clientName": "Acme Corporation",
"ABMId": "ABM-12345",
"hardwares": [
{
"brand": "DELL",
"hardwareType": "PC",
"ram": "16GB",
"diskSize": "512GB",
"displaySize": "15.6",
"model": "Latitude 5420",
"processor": "i7-1165G7",
"amount": 1,
"externalItemId": "EXT-12345"
},
{
"brand": "MICROSOFT",
"hardwareType": "PC",
"ram": "32GB",
"diskSize": "1TB",
"displaySize": "15",
"model": "Surface Laptop 5",
"processor": "i7-1265U",
"amount": 2
}
]
},
"request": "orders/quote",
"vendor": "tecspal",
"verb": "POST"
}

Warranty Hardware Request

{
"data": {
"countryCode": "UY",
"sendTo": "STORAGE",
"companyCode": "DM1",
"hardwares": [
{
"hardwareType": "EXTENDED_WARRANTY_MAC",
"amount": 1,
"externalItemId": "daslkda-23123",
"notes": "Extended warranty for MacBook Pro"
},
{
"hardwareType": "EXTENDED_WARRANTY_WINDOWS",
"amount": 2,
"externalItemId": "warranty-456",
"notes": "Extended warranty for Windows laptops"
}
]
},
"request": "orders/quote",
"vendor": "tecspal",
"verb": "POST"
}

Response Schema

PropertyTypeDescription
statusCodenumberHTTP status code of the response
messagestringDescription of the response status
enveloparrayArray containing the order data

Order Properties

PropertyTypeDescription
idstringUnique identifier of the order
orderNumbernumberOrder number
createdAtstringISO timestamp when order was created
updatedAtstringISO timestamp when order was last updated
statusstringStatus of the order (e.g. PENDING)
datestring | nullDelivery date (if available)
etastring | nullEstimated delivery date
trackingLinkstring | nullLink for tracking the order
countryCodestringCountry code (e.g. UY)
sendTostringRecipient type (e.g. EMPLOYEE, STORAGE)
currencystringCurrency used (e.g. USD)
dateCompletedstring | nullDate the order was completed
apiClientRequesterNamestringName of the API client that submitted the request
companyNamestringName of the company
clientNamestring | nullClient name for this order (if provided)
descriptionstring | nullNotes or description entered for the order
employeeProfileobject | nullEmployee profile info, if applicable
hardwaresarrayList of hardware items requested
poNumberstring | nullPurchase Order number, if provided
resellerIdsarrayArray of reseller IDs matching the order's country (only for API-created orders)

hardwares Properties

PropertyTypeDescription
idstringHardware ID
amountnumberQuantity of the item
notesstring | nullNotes associated with the item
poNumberstring | nullPurchase Order number, if provided
quotedUnitPricestring | nullQuoted price per unit (if available)
createdAtstringISO timestamp when item was added
catalogModelIdstring | nullOptional catalog model reference
brandstringBrand name
namestringName of the hardware
ramstringRAM configuration (if applicable)
diskSpacestringDisk size (if applicable)
displaySizestringDisplay size (if applicable)
processorstringProcessor (if applicable)
imagestringURL to the image
externalItemIdstring | nullExternal item identifier (if provided)

resellerIds Properties

PropertyTypeDescription
idstringUnique identifier of the reseller ID
codestringReseller code
countryCodestringCountry code matching the reseller's location

Note: resellerIds is only populated for orders created via the API (when apiClientRequesterName is not null). For orders created through the web interface, this field will be an empty array.

Example Response

{
"envelop": [
{
"id": "1ae94b8b-054e-4e84-8b22-7b9eaf168fdf",
"orderNumber": 10001010,
"createdAt": "2025-08-13T20:25:15.914Z",
"updatedAt": "2025-08-13T20:25:15.914Z",
"status": "PENDING",
"date": null,
"eta": null,
"trackingLink": null,
"countryCode": "UY",
"sendTo": "STORAGE",
"currency": "USD",
"dateCompleted": null,
"description": null,
"apiClientRequesterName": "EXAMPLE API CLIENT\t",
"companyName": "Larian Studios",
"clientName": "Acme Corporation",
"poNumber": "PO-2024-12345",
"employeeProfile": null,
"resellerIds": [
{
"id": "uuid-1",
"code": "RESELLER-001",
"countryCode": "UY"
},
{
"id": "uuid-2",
"code": "RESELLER-002",
"countryCode": "UY"
}
],
"hardwares": [
{
"id": "ac1b5975-1ff7-4eee-a5ce-a05d4933571b",
"amount": 1,
"notes": null,
"quotedUnitPrice": null,
"createdAt": "2025-08-13T20:25:15.920Z",
"catalogModelId": null,
"brand": "DELL",
"name": "Latitude 5420",
"ram": "16GB",
"diskSpace": "512GB",
"displaySize": "15.6",
"processor": "i7-1165G7",
"image": "https://a-us.storyblok.com/f/1001855/1969x1515/a3eebe8012/generic-laptop.png",
"externalItemId": "EXT-12345"
}
]
}
],
"message": "Request successful",
"statusCode": 201
}

Error Responses

Missing Required Field (400)

{
"error": "Bad Request",
"message": "Missing required field: companyCode",
"statusCode": 400
}

Unauthorized (401)

{
"error": "Unauthorized",
"message": "Unauthorized access",
"statusCode": 401
}

Notes

  • This endpoint returns a pending quote order. The quote is not fulfilled or shipped.
  • Use hardwareType to define the hardware classification; no catalog model lookup is required.
  • If sendTo is "STORAGE", no employee data is required.
  • When autoQuote is false or not provided, the order is created with PENDING status and no prices.
  • When autoQuote is true, the system automatically:
    • Generates quote prices for all hardware items
    • Updates the order status to QUOTED
    • Returns the order with prices already filled
  • Requests using autoQuote: true are only accepted in sandbox/testing environments (NODE_ENV set to development, dev or staging). Production requests with autoQuote will be rejected.
  • If clientName is provided, it will be stored in the order and later added to hardware notes/description when the order is delivered.
  • If ABMId is provided, it will be added as a comment in the order along with the clientName (if provided). The comment format will be: ABMId: {ABMId} and/or Client Name: {clientName}.
  • Warranty types: For EXTENDED_WARRANTY_MAC and EXTENDED_WARRANTY_WINDOWS, only hardwareType, amount, externalItemId, and notes are allowed. Providing brand, ram, diskSize, displaySize, model, or processor will result in a validation error.