Create Onboarding Movement
Creates a new onboarding movement request to assign hardware to an employee.
Prerequisites
Before creating an onboarding movement, you must first query the hardware in storage endpoint to:
- Get the required
hardwareIdsfor the items you want to assign - Check hardware availability in storage
- Verify hardware details (type, model, etc.)
Authentication
This endpoint requires authentication. See Authentication for details.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| companyCode | string | Yes | Company code for one of your managed companies |
| countryCode | string | Yes | Country code in ISO 3166-1 alpha-2 format |
| hardwareIds | array | Yes | Array of hardware IDs to assign |
| expectedDate | string | No | Expected date for the movement (YYYY-MM-DD) |
| employeeEmail | string | One of | Email of an existing employee |
| employee | object | One of | New employee details (see Employee Properties) |
Employee Properties (When Creating New Employee)
| Property | Type | Required | Description |
|---|---|---|---|
| firstName | string | Yes | First name of the employee |
| lastName | string | Yes | Last name of the employee |
| string | Yes | Email address of the employee | |
| phone | string | Yes | Phone number with country code |
| governmentDNI | string | Yes | Government-issued identification number |
| address | string | Yes | Primary address |
| city | string | Yes | City of residence |
| postCode | string | Yes | Postal code |
| countryCode | string | Yes | Country code in ISO 3166-1 alpha-2 format |
| addressExtraInfo | string | No | Additional address information |
Request
Production URL: https://orchestrator.tecspal.com/
Sandbox URL: https://tecspal-orchestrator.sandbox.lexartlabs.uy/
Endpoint: POST /movement_requests/onboarding
Example Request
{
"data": {
"companyCode": "DM1",
"countryCode": "UY",
"hardwareIds": ["2069ab49-bce8-4e9d-a7a6-fb4805b33ba4"],
"expectedDate": "2024-04-10",
// "email": "john_doe@email.com", // For existing employee
"employee": {
"firstName": "John",
"lastName": "Doe",
"email": "john_doe@email.com",
"phone": "+598 99999999",
"governmentDNI": "DNI123",
"address": "Plaza Independencia 848",
"city": "Montevideo",
"addressExtraInfo": "",
"postCode": "11100",
"countryCode": "UY"
}
},
"request": "movement_requests/onboarding",
"vendor": "tecspal",
"verb": "POST"
}
Response Schema
| Property | Type | Description |
|---|---|---|
| statusCode | number | HTTP status code of the response |
| message | string | Description of the response status |
| envelop | array | Array containing the list of movement requests |
Movement Request Properties
| Property | Type | Description |
|---|---|---|
| id | string | Unique identifier of the order |
| movementRequestNumber | number | Request number |
| createdAt | string | ISO timestamp when the request was created |
| updatedAt | string | ISO timestamp when the request was last updated |
| type | string | Type of request (e.g., OFFBOARDING) |
| status | string | Status of the request (e.g., PROCESSING) |
| eta | string | null | Estimated time of arrival (nullable) |
| sendTo | string | Destination type (e.g., STORAGE) |
| handledBy | string | The team or person handling the request |
| expectedDate | string | Expected date for completion |
| factoryReset | boolean | Whether a factory reset is required |
| trackingLink | string | null | Link for tracking (nullable) |
| dateCompleted | string | null | Date when the request was completed (nullable) |
| apiClientRequesterName | string | Name of the API client requester |
| requesterEmail | string | null | Email of the user who created the request |
| toEmployeeId | string | null | ID of the employee who should receive the hardware |
| fromEmployeeId | string | null | ID of the employee returning the hardware |
| movementRequestStatusHistoric | array | Status change history of the request |
| toEmployee | object | null | Details of the employee the request is for (nullable) |
| fromEmployee | object | null | Employee initiating the request |
| storage | object | Storage details |
| companyName | string | Name of the company |
| hardwares | array | List of hardware items related to the request |
toEmployee Properties
| Property | Type | Description |
|---|---|---|
| id | string | Unique identifier of the employee |
| firstName | string | First name of the employee |
| lastName | string | Last name of the employee |
| countryCode | string | Country code of the employee |
| string | Email of the employee | |
| address | string | Full address of the employee |
| addressExtraInfo | string | Extra address information (nullable) |
| postCode | string | Postal code of the employee's address |
storage Properties
| Property | Type | Description |
|---|---|---|
| id | string | Unique identifier of the storage |
| countryCode | string | Country code of the storage |
hardwares Properties
| Property | Type | Description |
|---|---|---|
| id | string | Unique ID of the hardware |
| description | string | Description or notes |
| serialNumber | string | Serial number of the hardware |
| brand | string | Hardware brand (if applicable) |
| name | string | Name of the hardware (from model or hardwareType) |
| ram | string | RAM configuration (if applicable) |
| diskSpace | string | Disk size (if applicable) |
| displaySize | string | Display size (if applicable) |
| processor | string | Processor (if applicable) |
| image | string | URL to the image |
Example Response
{
"envelop": [
{
"id": "f133e0cc-45b7-4059-9305-8caa671c8e96",
"movementRequestNumber": 50001002,
"createdAt": "2025-04-14T15:57:21.361Z",
"updatedAt": "2025-04-14T15:57:21.361Z",
"type": "ONBOARDING",
"status": "PROCESSING",
"eta": null,
"sendTo": "EMPLOYEE",
"handledBy": "TECSPAL",
"expectedDate": "2025-12-10",
"factoryReset": false,
"trackingLink": null,
"dateCompleted": null,
"apiClientRequesterName": "EXAMPLE API CLIENT",
"toEmployee": {
"id": "36338fd7-dc0a-497d-a957-e80b4c9a25eb",
"firstName": "john",
"lastName": "Doe",
"countryCode": "UY",
"email": "john_doe99@email.com",
"address": "Plaza Independencia 848, Montevidéu, Uruguai",
"addressExtraInfo": "",
"postCode": "11100"
},
"fromEmployee": null,
"storage": {
"id": "f5d253a3-e494-4614-9c8e-001789def712",
"countryCode": "UY"
},
"companyName": "Larian Studios",
"hardwares": [
{
"id": "2069ab49-bce8-4e9d-a7a6-fb4805b33ba4",
"description": "New",
"serialNumber": "SN123456",
"brand": "Apple",
"name": "MacBook Pro",
"ram": "16GB",
"diskSpace": "512GB",
"displaySize": "16 inch",
"processor": "M1 Pro",
"image": "https://a-us.storyblok.com/f/1001855/789x500/82ee51ba4d/macbook-pro-16.png"
}
]
}
],
"message": "Request successful",
"statusCode": 201
}
Error Responses
Bad Request (400)
{
"details": [
{
"field": "hardwareIds",
"message": "At least one hardware ID is required"
}
],
"error": "Bad Request",
"message": "Invalid request data",
"statusCode": 400
}
Conflict (409)
{
"error": "Conflict",
"message": "Employee with this email already exists",
"statusCode": 409
}
Notes
- You must provide either an existing employee's email or complete details for a new employee
- All hardware items must be available (not assigned to other employees)
- The movement request will be created with "PROCESSING" status
- Hardware will be marked as "in movement" until the request is completed