Skip to main content

Catalogs

Read-only endpoints that expose your company's configuration catalogs and return the real IDs that task creation needs. Before creating a task, your integration queries these catalogs to resolve which origin, product, coverage, service, cause, geography, finalization, form, and dynamic fields it can send.

Every catalog returns the real ID alongside the human-readable name — so you can reference each entry exactly when building a task payload.

Prerequisites

All endpoints require a valid JWT token, API key, and tenant header. See Authentication.

Cascade pattern

Several catalogs are hierarchical: a child catalog is filtered by its parent's ID, passed in the path. For example, to list the products of an origin you call /catalogs/origins/{proid}/products; to list cities you walk country → department → city → zone. Always list a level to discover the IDs you'll feed into the next level — there is no name-based lookup.

Common notes
  • IDs are opaque strings (BigInt) — never parse them as numbers. Pass them back exactly as received.
  • Active records only. Every catalog returns active entries; inactive ones are never listed.
  • No pagination. Catalogs are small — the full flat list is returned. The name query filter narrows results by a case-insensitive substring match.
  • Rate limit: all catalog endpoints share a budget of 60 req/min (sliding window).
  • Response envelope: { success, data, meta } where meta.count is the number of rows.

Geographic

The geographic catalogs form a strict four-level cascade: Country → Department → City → Zone. Each level is filtered by the IDs of the levels above it, all passed in the path.

Countries

GET/apidev/v1/catalogs/countries
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the country name. Omit to list all.

Response Fields

FieldTypeDescription
paiidstringCountry ID (use in task creation).
namestringCountry name.
gmtnumberTimezone offset (whole hours).
curl -s "https://$TENANT/apidev/v1/catalogs/countries" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Example Response

{
"success": true,
"data": [
{ "paiid": "1", "name": "Uruguay", "gmt": -3 },
{ "paiid": "2", "name": "Argentina", "gmt": -3 }
],
"meta": { "count": 2 }
}

Departments of a Country

GET/apidev/v1/catalogs/countries/{paiid}/departments
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Path Parameters

ParameterTypeRequiredDescription
paiidstringYesCountry ID (parent).

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the department name.

Response Fields

FieldTypeDescription
paiidstringCountry ID (parent).
paideplinstringDepartment ID (use in task creation).
namestringDepartment name.
curl -s "https://$TENANT/apidev/v1/catalogs/countries/1/departments" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Example Response

{
"success": true,
"data": [
{ "paiid": "1", "paideplin": "4", "name": "Montevideo" },
{ "paiid": "1", "paideplin": "5", "name": "Canelones" }
],
"meta": { "count": 2 }
}

Cities of a Department

GET/apidev/v1/catalogs/countries/{paiid}/departments/{paideplin}/cities
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Path Parameters

ParameterTypeRequiredDescription
paiidstringYesCountry ID.
paideplinstringYesDepartment ID.

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the city name.

Response Fields

FieldTypeDescription
paiidstringCountry ID.
paideplinstringDepartment ID.
paidepciulinstringCity ID (use in task creation).
namestringCity name.
curl -s "https://$TENANT/apidev/v1/catalogs/countries/1/departments/4/cities?name=mont" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Example Response

{
"success": true,
"data": [
{ "paiid": "1", "paideplin": "4", "paidepciulin": "21", "name": "Montevideo" }
],
"meta": { "count": 1 }
}

Zones of a City

GET/apidev/v1/catalogs/countries/{paiid}/departments/{paideplin}/cities/{paidepciulin}/zones
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Path Parameters

ParameterTypeRequiredDescription
paiidstringYesCountry ID.
paideplinstringYesDepartment ID.
paidepciulinstringYesCity ID.

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the zone name.

Response Fields

FieldTypeDescription
paiidstringCountry ID.
paideplinstringDepartment ID.
paidepciulinstringCity ID.
paidepciuzonlinstringZone ID (use in task creation).
namestringZone name.

Example Response

{
"success": true,
"data": [
{ "paiid": "1", "paideplin": "4", "paidepciulin": "21", "paidepciuzonlin": "7", "name": "Centro" }
],
"meta": { "count": 1 }
}

Special Places

Points of interest defined for your company. Returns only the places the integration user is allowed to see.

GET/apidev/v1/catalogs/special-places
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the place name.

Response Fields

FieldTypeDescription
lugespidstringSpecial place ID.
namestringPlace name.
latstring | nullLatitude (raw decimal string).
lngstring | nullLongitude (raw decimal string).

Example Response

{
"success": true,
"data": [
{ "lugespid": "31", "name": "Central Warehouse", "lat": "-34.8721", "lng": "-56.1234" }
],
"meta": { "count": 1 }
}

Special Place Types

GET/apidev/v1/catalogs/special-place-types
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the type name.

Response Fields

FieldTypeDescription
idstringSpecial place type ID.
namestringType name.

Example Response

{
"success": true,
"data": [
{ "id": "1", "name": "Warehouse" },
{ "id": "2", "name": "Branch office" }
],
"meta": { "count": 2 }
}

Domain

Classification catalogs used to describe a task: where it comes from, what product and coverage apply, the service requested, and its cause/subcause.

Origins

Origins (procedences) — the source that generates a task.

GET/apidev/v1/catalogs/origins
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the origin name.

Response Fields

FieldTypeDescription
proidstringOrigin ID (use in task creation).
namestringOrigin name.
statestringAlways "A" (active).
curl -s "https://$TENANT/apidev/v1/catalogs/origins" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Example Response

{
"success": true,
"data": [
{ "proid": "12", "name": "Seguros ACME", "state": "A" }
],
"meta": { "count": 1 }
}

Products of an Origin

GET/apidev/v1/catalogs/origins/{proid}/products
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Path Parameters

ParameterTypeRequiredDescription
proidstringYesOrigin ID (parent).

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the product name.

Response Fields

FieldTypeDescription
proidstringOrigin ID (parent).
protipclilinstringProduct ID (use in task creation).
namestringProduct name.
curl -s "https://$TENANT/apidev/v1/catalogs/origins/12/products?name=gru" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Example Response

{
"success": true,
"data": [
{ "proid": "12", "protipclilin": "3", "name": "Light Tow Truck" },
{ "proid": "12", "protipclilin": "7", "name": "Heavy Tow Truck" }
],
"meta": { "count": 2 }
}

Coverages of a Product

GET/apidev/v1/catalogs/origins/{proid}/products/{protipclilin}/coverages
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Path Parameters

ParameterTypeRequiredDescription
proidstringYesOrigin ID.
protipclilinstringYesProduct ID.

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the coverage name.

Response Fields

FieldTypeDescription
proidstringOrigin ID.
protipclilinstringProduct ID.
procoblinstringCoverage ID (use in task creation).
namestringCoverage name.
monthly_quotanumberConfigured monthly quota.
yearly_quotanumberConfigured yearly quota.
quota_controlstring | nullQuota control flag/code.

Example Response

{
"success": true,
"data": [
{
"proid": "12",
"protipclilin": "7",
"procoblin": "5",
"name": "Premium Coverage",
"monthly_quota": 4,
"yearly_quota": 24,
"quota_control": "S"
}
],
"meta": { "count": 1 }
}

Services

Services (prestaciones) — the type of service requested for a task.

GET/apidev/v1/catalogs/services
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the service name.

Response Fields

FieldTypeDescription
prestaidstringService ID (use in task creation).
namestringService name.
requires_destinationbooleanWhether a destination cause/subcause is required.
statestringAlways "A" (active).

Example Response

{
"success": true,
"data": [
{ "prestaid": "20", "name": "Roadside Assistance", "requires_destination": false, "state": "A" }
],
"meta": { "count": 1 }
}

Causes of a Service

Returns only the causes assigned to the service — not the general cause catalog. This is what task creation expects.

GET/apidev/v1/catalogs/services/{prestaid}/causes
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Path Parameters

ParameterTypeRequiredDescription
prestaidstringYesService ID (parent).

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the cause name.

Response Fields

FieldTypeDescription
prestaidstringService ID (parent).
cauidstringCause ID (use in task creation).
namestringCause name.
assigned_subcausesnumberHow many subcauses are assigned under this service.

Example Response

{
"success": true,
"data": [
{ "prestaid": "20", "cauid": "8", "name": "Flat Tire", "assigned_subcauses": 3 }
],
"meta": { "count": 1 }
}
Assigned vs general

Listing causes by service guarantees you only get causes that the service actually accepts. A cause that exists in the general catalog but is not assigned to the service would be rejected at task creation.


Subcauses of a Cause

GET/apidev/v1/catalogs/causes/{cauid}/subcauses
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Path Parameters

ParameterTypeRequiredDescription
cauidstringYesCause ID (parent).

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the subcause name.

Response Fields

FieldTypeDescription
cauidstringCause ID (parent).
causubcaulinstringSubcause ID (use in task creation).
namestringSubcause name.
priority_namestring | nullAssociated priority name (may be null).

Example Response

{
"success": true,
"data": [
{ "cauid": "8", "causubcaulin": "15", "name": "Front Left", "priority_name": "High" }
],
"meta": { "count": 1 }
}

Reasons

Service reasons (motivos) — used in the simple task-creation mode.

GET/apidev/v1/catalogs/reasons
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the reason name.

Response Fields

FieldTypeDescription
motidstringReason ID (use in task creation).
namestringReason name.

Example Response

{
"success": true,
"data": [
{ "motid": "3", "name": "Vehicle breakdown" }
],
"meta": { "count": 1 }
}

Priorities

GET/apidev/v1/catalogs/priorities
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the priority name.

Response Fields

FieldTypeDescription
priidstringPriority ID.
namestringPriority name.
valuenumberNumeric ordering value (typically 1–3).

Example Response

{
"success": true,
"data": [
{ "priid": "1", "name": "High", "value": 1 },
{ "priid": "2", "name": "Medium", "value": 2 }
],
"meta": { "count": 2 }
}

Task Statuses

GET/apidev/v1/catalogs/task-statuses
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the status name.

Response Fields

FieldTypeDescription
idstringStatus ID.
codestringStatus code (SA, ASI, ACE, INI, USU, FIN, CAN).
namestringHuman-readable status label.

Example Response

{
"success": true,
"data": [
{ "id": "1", "code": "SA", "name": "Unassigned" },
{ "id": "6", "code": "FIN", "name": "Finished" }
],
"meta": { "count": 2 }
}

Shifts

GET/apidev/v1/catalogs/shifts
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the shift name.

Response Fields

FieldTypeDescription
turidstringShift ID (use in task reserve).
namestringShift name.

Example Response

{
"success": true,
"data": [
{ "turid": "1", "name": "Morning" },
{ "turid": "2", "name": "Night" }
],
"meta": { "count": 2 }
}

Resources

Operational catalogs: end reasons, forms, form lists, vehicle types, and the two flota-sensitive catalogs (providers and devices) that require a dedicated permission.

End Reasons

GET/apidev/v1/catalogs/end-reasons
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the end reason name.

Response Fields

FieldTypeDescription
finseridstringEnd reason ID.
namestringEnd reason name.
successfulbooleanWhether it marks the task as successful.
pendingbooleanWhether it leaves the task pending.

Example Response

{
"success": true,
"data": [
{ "finserid": "3", "name": "Resolved on site", "successful": true, "pending": false }
],
"meta": { "count": 1 }
}

End Reasons by Products

Resolve the end reasons for several products in a single call. The request body is a filter (it is read-only and cacheable, not a mutation), which is why this endpoint uses POST.

POST/apidev/v1/catalogs/products/end-reasons
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Request Body

FieldTypeRequiredDescription
productsarrayYes1 to 50 product pairs.
products[].proidstringYesOrigin ID.
products[].protipclilinstringYesProduct ID.

Response Fields

data is an array grouped by product. If a product has no configured end reasons, it falls back to all active ones.

FieldTypeDescription
proidstringOrigin ID of the requested product.
protipclilinstringProduct ID of the requested product.
end_reasons[].finseridstringEnd reason ID.
end_reasons[].namestringEnd reason name.
curl -s -X POST "https://$TENANT/apidev/v1/catalogs/products/end-reasons" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
-H "Content-Type: application/json" \
-d '{ "products": [ { "proid": "12", "protipclilin": "7" } ] }'

Example Response

{
"success": true,
"data": [
{
"proid": "12",
"protipclilin": "7",
"end_reasons": [
{ "finserid": "3", "name": "Resolved on site" },
{ "finserid": "8", "name": "Towed to workshop" }
]
}
],
"meta": { "count": 1 }
}

Forms

GET/apidev/v1/catalogs/forms
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the form name.

Response Fields

FieldTypeDescription
formidstringForm ID.
namestringForm name.

Example Response

{
"success": true,
"data": [
{ "formid": "9", "name": "Damage Report" }
],
"meta": { "count": 1 }
}

Forms of a Product

Forms enabled for a specific product.

GET/apidev/v1/catalogs/products/{proid}/{protipclilin}/forms
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Path Parameters

ParameterTypeRequiredDescription
proidstringYesOrigin ID.
protipclilinstringYesProduct ID.

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the form name.

Response Fields

FieldTypeDescription
formidstringForm ID.
namestringForm name.
requiredbooleanWhether the form is mandatory for the product.

Example Response

{
"success": true,
"data": [
{ "formid": "9", "name": "Damage Report", "required": true }
],
"meta": { "count": 1 }
}

Form Lists

Form/OAV option lists. Each list is referenced by the list_id of a dynamic field.

GET/apidev/v1/catalogs/form-lists
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the list name.

Response Fields

FieldTypeDescription
forlisidstringList ID (referenced by oav-fields.list_id).
namestringList name.

Example Response

{
"success": true,
"data": [
{ "forlisid": "5", "name": "Vehicle Colors" }
],
"meta": { "count": 1 }
}

Vehicle Types

GET/apidev/v1/catalogs/vehicle-types
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the vehicle type name.

Response Fields

FieldTypeDescription
tipvehidstringVehicle type ID (use in task creation).
namestringVehicle type name.

Example Response

{
"success": true,
"data": [
{ "tipvehid": "1", "name": "Car" },
{ "tipvehid": "2", "name": "Motorcycle" }
],
"meta": { "count": 2 }
}

Providers

Sensitive catalog

Providers expose person/fleet links to the company. This endpoint requires the dedicated APICLI_FLEET_DEVICES_READ permission, not APICLI_CATALOGS_READ.

GET/apidev/v1/catalogs/providers
PermissionAPICLI_FLEET_DEVICES_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the provider name.

Response Fields

FieldTypeDescription
preidstringProvider ID (use in task reserve).
namestringProvider name.

Example Response

{
"success": true,
"data": [
{ "preid": "30", "name": "North Region Towing" }
],
"meta": { "count": 1 }
}

Devices

Sensitive catalog

Devices expose fleet links to the company. This endpoint requires APICLI_FLEET_DEVICES_READ. Returns only the devices the integration user is allowed to see.

GET/apidev/v1/catalogs/devices
PermissionAPICLI_FLEET_DEVICES_READ
Rate Limit60 req/min (sliding window)

Query Parameters

ParameterTypeRequiredDescription
namestringNoPartial, case-insensitive match on the device name.

Response Fields

FieldTypeDescription
vehidstringDevice ID (use in task reserve).
namestringDevice name.
platestring | nullLicense plate / alias.
vehicle_typestring | nullVehicle type name.
providerstring | nullProvider name.

Example Response

{
"success": true,
"data": [
{
"vehid": "104820579301",
"name": "Movil 10",
"plate": "ABC123",
"vehicle_type": "Tow Truck",
"provider": "North Region Towing"
}
],
"meta": { "count": 1 }
}

OAV

OAV (dynamic fields) define the custom fields a product requires. This is the key catalog for building a task payload: cross it against your dynamic_fields to avoid OAV_REQUIRED_MISSING, OAV_TYPE_MISMATCH, and OAV_LIST_VALUE_INVALID errors at task creation.

Dynamic Fields of a Product

Returns each dynamic field of the product with its type, whether it's required, and — when the field is a list — its valid options resolved in the same response.

GET/apidev/v1/catalogs/products/{proid}/{protipclilin}/oav-fields
PermissionAPICLI_CATALOGS_READ
Rate Limit60 req/min (sliding window)

Path Parameters

ParameterTypeRequiredDescription
proidstringYesOrigin ID.
protipclilinstringYesProduct ID.

Response Fields

FieldTypeDescription
item_idstringDynamic field ID.
labelstringHuman-readable field name.
typestringTEXT, NUMBER, BOOLEAN, DATE, DATETIME, or LISTA.
requiredbooleanWhether the field is mandatory to create the task.
readonlybooleanInformational read-only flag.
ordernumberDisplay order.
list_idstring | nullWhen type is LISTA, the option list ID.
list_optionsarrayValid options when type is LISTA; empty otherwise. Each: { value, label }.
curl -s "https://$TENANT/apidev/v1/catalogs/products/12/7/oav-fields" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Example Response

{
"success": true,
"data": [
{
"item_id": "42",
"label": "Policy",
"type": "TEXT",
"required": true,
"readonly": false,
"order": 1,
"list_id": null,
"list_options": []
},
{
"item_id": "55",
"label": "Damage Type",
"type": "LISTA",
"required": true,
"readonly": false,
"order": 2,
"list_id": "9",
"list_options": [
{ "value": "MEC", "label": "Mechanical" },
{ "value": "ELE", "label": "Electrical" }
]
}
],
"meta": { "count": 2 }
}
List options come resolved

When a field's type is LISTA, its valid options are already nested under list_options. You don't need to call Form Lists separately to validate a dynamic field — use list_options[].value as the accepted value.


Errors

All catalog endpoints use the modern error envelope: { success: false, error: { code, message, hint } }. See Error Handling for the full reference.

CodeHTTPDescription
INVALID_ID400A path ID is not a valid identifier.
INVALID_BODY400products[] is empty, missing, or exceeds 50 (on End Reasons by Products).
UNAUTHORIZED401Missing, invalid, or expired tenant / Authorization / X-API-Key.
FORBIDDEN403Token lacks APICLI_CATALOGS_READ (or APICLI_FLEET_DEVICES_READ on providers/devices).
NOT_FOUND404A cascade parent does not exist in your company.
RATE_LIMITED429Exceeded 60 req/min.
INTERNAL_ERROR500Unexpected server error.