Create Offboarding Movement
Creates a new offboarding movement request to return hardware from an employee to storage.
Prerequisites
Before creating an offboarding movement, you should first query either:
This allows you to:
- View all hardware items currently assigned to the employee
- Get the
hardwareIdsfor specific items you want to return - Verify employee details before initiating the offboarding process
Note: If you don't specify any hardwareIds in your request, the system will automatically include all hardware items assigned to the employee as part of the offboarding movement.
Authentication
This endpoint requires authentication. See Authentication for details.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| expectedDate | string | No | Expected date for the movement (YYYY-MM-DD) |
| handledBy | string | Yes | Who handles the movement (TECSPAL, COMPANY) |
| factoryReset | boolean | No | Whether hardware needs factory reset |
| companyCode | string | One of | Company code for one of your managed companies |
| company | object | One of | New Company details (see Company Properties) |
| employeeEmail | string | One of | Email of an existing employee |
| employee | object | One of | New employee details (see Employee Properties) |
| hardwares | object | Yes | Hardware details (see Hardware 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 |
| addressExtraInfo | string | No | Additional address information |
| postCode | string | Yes | Postal code |
| countryCode | string | Yes | Country code in ISO 3166-1 alpha-2 format |
Company Properties (When Creating New Company)
| Property | Type | Description |
|---|---|---|
| name | string | Name of the company |
| companyCode | string | Unique code representing the company |
| countryCode | string | Country code of the company |
| legalNumber | string | Legal number of the company |
| contactEmail | string | Contact email address of the company |
| phone | string | Phone number of the company |
Hardware Properties
| Property | Type | Required | Description |
|---|---|---|---|
| hardwareIds | array | No | IDs of existing hardware to return |
| newHardwares | array | No | Details of additional hardware to return |
New Hardware Properties
| Property | Type | Required | Description |
|---|---|---|---|
| serialNumber | string | Yes | Serial number of the hardware |
| description | string | No | Description of the hardware |
| dateBought | string | Yes | Purchase date in ISO format |
| hardwareType | string | Yes | Type of hardware |
| newHardware | boolean | No | Whether the hardware is new |
| externalReference | string | No | External reference code |
Request
Production URL: https://orchestrator.tecspal.com/
Sandbox URL: https://tecspal-orchestrator.sandbox.lexartlabs.uy/
Endpoint: POST /movement_requests/offboarding
Example Request
{
"data": {
"countryCode": "UY",
"handledBy": "TECSPAL",
"expectedDate": "2024-12-21",
"factoryReset": false,
"hardwares": {
"hardwareIds": ["335dea85-b83a-489a-9b80-414f625cd17b"],
"newHardwares": [
{
"serialNumber": "987654",
"description": "Dell inspiron",
"dateBought": "2023-12-18T21:38:58.069Z",
"hardwareType": "MONITOR",
"newHardware": false,
"externalReference": "externalCode123"
}
]
},
// "companyCode": "DM1", For existing company
"company": {
"name": "Larian Studios",
"companyCode": "DM1",
"countryCode": "UY",
"legalNumber": "123456",
"contactEmail": "larianstudios@email.com",
"phone": "+598 8888888"
},
// "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/offboarding",
"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 |
fromEmployee 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": "b861eb3d-6d04-41cb-b5b2-efde278e36b8",
"movementRequestNumber": 50001006,
"createdAt": "2025-04-14T14:50:08.363Z",
"updatedAt": "2025-04-14T14:50:08.363Z",
"type": "OFFBOARDING",
"status": "PROCESSING",
"eta": null,
"sendTo": "STORAGE",
"handledBy": "TECSPAL",
"expectedDate": "2025-12-21",
"factoryReset": false,
"trackingLink": null,
"dateCompleted": null,
"apiClientRequesterName": "EXAMPLE API CLIENT",
"toEmployee": null,
"fromEmployee": {
"id": "0a86b6c2-7373-42fa-a44a-70857cef0f90",
"firstName": "John",
"lastName": "Doe",
"countryCode": "UY",
"email": "john_doe@email.com",
"address": "Plaza Independencia 848, Montevidéu, Uruguai",
"addressExtraInfo": "Praça Independência",
"postCode": "11100"
},
"storage": {
"id": "f5d253a3-e494-4614-9c8e-001789def712",
"countryCode": "UY"
},
"companyName": "Larian Studios",
"hardwares": [
{
"id": "335dea85-b83a-489a-9b80-414f625cd17b",
"description": "Something",
"serialNumber": "123",
"brand": "Samsung",
"name": "MONITOR",
"image": "https://a-us.storyblok.com/f/1001855/405x366/dd53bc39ef/generic-monitor.png"
},
{
"id": "10e8d06a-5d85-4f57-9116-61dfe6ed8426",
"description": "Dell inspiron",
"serialNumber": "987654",
"brand": "Dell",
"name": "MONITOR",
"image": "https://a-us.storyblok.com/f/1001855/405x366/dd53bc39ef/generic-monitor.png"
}
]
}
],
"message": "Request successful",
"statusCode": 201
}
Error Responses
Bad Request (400)
{
"details": [
{
"field": "employeeEmail",
"message": "Employee email is required"
}
],
"error": "Bad Request",
"message": "Invalid request data",
"statusCode": 400
}
Not Found (404)
{
"error": "Not Found",
"message": "Employee not found",
"statusCode": 404
}
Notes
- If no
hardwareIdsare provided, all hardware assigned to the employee will be included - New hardware can be added to the movement request using the
newHardwaresarray - The movement request will be created with "PROCESSING" status
- Hardware will be marked as "in movement" until the request is completed
- When
handledByis "TECSPAL", Tecspal's logistics team will manage the return - When
handledByis "COMPANY", the company is responsible for returning the hardware