{"id":1894,"date":"2026-04-12T13:29:00","date_gmt":"2026-04-12T13:29:00","guid":{"rendered":"https:\/\/developers.maplink.global\/error-messages-planning\/"},"modified":"2025-08-04T21:20:47","modified_gmt":"2025-08-04T21:20:47","slug":"error-messages-planning","status":"publish","type":"post","link":"https:\/\/developers.maplink.global\/es\/error-messages-planning\/","title":{"rendered":"Error messages &#8211; Planning"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Errores de validaci\u00f3n<\/h2>\n\n\n\n<p>Los siguientes mensajes de error pueden aparecer debido a par\u00e1metros omitidos o introducidos incorrectamente. El c\u00f3digo de error devuelto por la API ser\u00e1 400 (Bad Request) y el JSON devuelto tendr\u00e1 la siguiente estructura:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n    \"logId\": \"5e8f64f0-0ece-4e26-84c3-7ff889eff092\",\n    \"message\": \"Validation failed\",\n    \"errors\": [\n        \"sites may not be empty\",\n        \"operations[0].customerSite reference not found\",\n        \"operations[1].customerSite reference not found\"\n    ]\n}<\/pre>\n\n\n\n<p>La siguiente tabla muestra las validaciones aplicadas a cada entidad y el mensaje de error devuelto:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Par\u00e1metro<\/strong><\/td><td><strong>Validaciones<\/strong><\/td><td><strong>Mensajes de error<\/strong><\/td><\/tr><tr><td>sites<\/td><td>notEmpty<\/td><td>may not be empty<\/td><\/tr><tr><td>depots<\/td><td>notEmpty<\/td><td>may not be empty<\/td><\/tr><tr><td>operations<\/td><td>notEmpty<\/td><td>may not be empty<\/td><\/tr><tr><td>vehicleTypes<\/td><td>notEmpty<\/td><td>may not be empty<\/td><\/tr><tr><td>vehicles<\/td><td>notEmpty<\/td><td>may not be empty<\/td><\/tr><tr><td>products<\/td><td>notEmpty<\/td><td>may not be empty<\/td><\/tr><tr><td>legislationProfiles<\/td><td>notEmpty<\/td><td>may not be empty<\/td><\/tr><tr><td>logisticConstraints<\/td><td>notEmpty<\/td><td>may not be empty<\/td><\/tr><tr><td>optimizationProfile<\/td><td>notBlank<\/td><td>is mandatory<\/td><\/tr><tr><td>optimizationProfile<\/td><td>invalid profile<\/td><td>optimizationProfile {name} not found<\/td><\/tr><tr><td>tripsProfile<\/td><td>notBlank<\/td><td>is mandatory<\/td><\/tr><tr><td>startDate<\/td><td>notNull<\/td><td>is mandatory<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Tabla de reglas de validaci\u00f3n para entidades principales<\/figcaption><\/figure>\n\n\n\n<p>Las siguientes tablas muestran las validaciones aplicadas para cada entidad espec\u00edfica:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td colspan=\"3\"><strong>operations<\/strong><\/td><\/tr><tr><td><strong><strong>Par\u00e1metro<\/strong><\/strong><\/td><td><strong>Validaciones<\/strong><\/td><td><strong><strong>Mensajes de error<\/strong><\/strong><\/td><\/tr><tr><td>id<\/td><td>notBlank, unique<\/td><td>is mandatory, already exists<\/td><\/tr><tr><td>weight<\/td><td>notNull, notNegative<\/td><td>is mandatory, may not be negative<\/td><\/tr><tr><td>volume<\/td><td>notNull, notNegative<\/td><td>is mandatory, may not be negative<\/td><\/tr><tr><td>product<\/td><td>notBlank, validReference<\/td><td>is mandatory, reference not found<\/td><\/tr><tr><td>type<\/td><td>notBlank, isContainedIn<\/td><td>is mandatory, does not have a valid value. Allowed values: [COLLECTION, DELIVERY]<\/td><\/tr><tr><td>priority<\/td><td>notNegative<\/td><td>may not be negative<\/td><\/tr><tr><td>depotSite<\/td><td>notBlank, validReference<\/td><td>is mandatory, reference not found<\/td><\/tr><tr><td>customerSite<\/td><td>notBlank, validReference<\/td><td>is mandatory, reference not found<\/td><\/tr><tr><td>customerTimeWindows<\/td><td>notEmpty<\/td><td>may not be empty<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Tabla de reglas de validaci\u00f3n para el par\u00e1metro operations<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td colspan=\"3\"><strong>vehicles<\/strong><\/td><\/tr><tr><td><strong><strong>Par\u00e1metro<\/strong><\/strong><\/td><td><strong>Validaciones<\/strong><\/td><td><strong><strong>Mensajes de error<\/strong><\/strong><\/td><\/tr><tr><td>name<\/td><td>notBlank, unique<\/td><td>is mandatory, already exists<\/td><\/tr><tr><td>vehicleType<\/td><td>notBlank, validReference<\/td><td>is mandatory, reference not found<\/td><\/tr><tr><td>legislationProfile<\/td><td>notBlank, validReference<\/td><td>is mandatory, reference not found<\/td><\/tr><tr><td>availablePeriods<\/td><td>notEmpty<\/td><td>may not be empty<\/td><\/tr><tr><td>priority<\/td><td>notNegative<\/td><td>may not be negative<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Tabla de reglas de validaci\u00f3n para el par\u00e1metro vehicle<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td colspan=\"3\"><strong>vehicleTypes<\/strong><\/td><\/tr><tr><td><strong><strong>Par\u00e1metro<\/strong><\/strong><\/td><td><strong>Validaciones<\/strong><\/td><td><strong><strong><strong>Mensajes de error<\/strong><\/strong><\/strong><\/td><\/tr><tr><td>name<\/td><td>notNull, unique<\/td><td>is mandatory, already exists<\/td><\/tr><tr><td>maxWeight<\/td><td>notNull, notNegative<\/td><td>is mandatory, may not be negative<\/td><\/tr><tr><td>maxVolume<\/td><td>notNull, notNegative<\/td><td>is mandatory, may not be negative<\/td><\/tr><tr><td>size<\/td><td>notNegative<\/td><td>may not be negative<\/td><\/tr><tr><td>maxSitesNumber<\/td><td>notNegative<\/td><td>may not be negative<\/td><\/tr><tr><td>compartmentsAccessMode<\/td><td>notNull, isContainedIn<\/td><td>is mandatory, does not have a valid value. Allowed values: [ALL_COMPARTMENTS, REAR_ACCESS]<\/td><\/tr><tr><td>trip.calculationMode<\/td><td>notNull<\/td><td>is mandatory<\/td><\/tr><tr><td>trip.toll.vehicleType<\/td><td>notNull<\/td><td>is mandatory<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Tabla de reglas de validaci\u00f3n para el par\u00e1metro vehicleTypes<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td colspan=\"3\"><strong>sites<\/strong>\u00a0y\u00a0<strong>depots<\/strong><\/td><\/tr><tr><td><strong><strong>Par\u00e1metro<\/strong><\/strong><\/td><td><strong>Validaciones<\/strong><\/td><td><strong><strong><strong>Mensajes de error<\/strong><\/strong><\/strong><\/td><\/tr><tr><td>name<\/td><td>notBlank, unique<\/td><td>is mandatory, already exists<\/td><\/tr><tr><td>coordinates<\/td><td>notNull<\/td><td>is mandatory<\/td><\/tr><tr><td>coordinates.latitude<\/td><td>notNull, range(-90, 90)<\/td><td>is mandatory, must be between -90 and 90<\/td><\/tr><tr><td>coordinates.longitude<\/td><td>notNull, range(-180, 180)<\/td><td>is mandatory, must be between -180 and 180<\/td><\/tr><tr><td>logisticConstraints<\/td><td>notBlank, validReference<\/td><td>is mandatory, reference not found<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Tabla de reglas de validaci\u00f3n para el par\u00e1metros sites y depots<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td colspan=\"3\"><strong>legislationProfile<\/strong><\/td><\/tr><tr><td><strong><strong>Par\u00e1metro<\/strong><\/strong><\/td><td><strong>Validaciones<\/strong><\/td><td><strong><strong><strong>Mensajes de error<\/strong><\/strong><\/strong><\/td><\/tr><tr><td>name<\/td><td>notBlank, unique<\/td><td>is mandatory, already exists<\/td><\/tr><tr><td>maxContinuousDrivingTime<\/td><td>greaterThanZero<\/td><td>must be greater than zero<\/td><\/tr><tr><td>drivingPauseDuration<\/td><td>greaterThanZero<\/td><td>must be greater than zero<\/td><\/tr><tr><td>maxContinuousWorkingTime<\/td><td>greaterThanZero<\/td><td>must be greater than zero<\/td><\/tr><tr><td>workingPauseDuration<\/td><td>greaterThanZero<\/td><td>must be greater than zero<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Tabla de reglas de validaci\u00f3n para el par\u00e1metro legislationProfile<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td colspan=\"3\"><strong>callback<\/strong><\/td><\/tr><tr><td><strong><strong>Par\u00e1metro<\/strong><\/strong><\/td><td><strong>Validaciones<\/strong><\/td><td><strong><strong><strong>Mensajes de error<\/strong><\/strong><\/strong><\/td><\/tr><tr><td>url<\/td><td>notNull<\/td><td>is mandatory<\/td><\/tr><tr><td>url<\/td><td>Invalid url<\/td><td>does not have a valid value. Example of allowed values: http:\/\/www.foo.br, https:\/\/www.foo.br, http:\/\/www.foo.br\/bar<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Tabla de reglas de validaci\u00f3n para el par\u00e1metro callback<\/figcaption><\/figure>\n\n\n\n<p>Las validaciones a continuaci\u00f3n se aplican a las ventanas de tiempo descritas en los par\u00e1metros <code>vehicles[n].availablePeriods<\/code>,\u00a0<code>operations[n].customerTimeWindows<\/code>\u00a0y\u00a0<code>operations[n].depotTimeWindows<\/code>:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td colspan=\"3\"><strong>timeWindow<\/strong><\/td><\/tr><tr><td><strong><strong><strong>Par\u00e1metro<\/strong><\/strong><\/strong><\/td><td><strong><strong>Validaciones<\/strong><\/strong><\/td><td><strong><strong><strong><strong>Mensajes de error<\/strong><\/strong><\/strong><\/strong><\/td><\/tr><tr><td>start<\/td><td>notNull<\/td><td>is mandatory<\/td><\/tr><tr><td>end<\/td><td>notNull<\/td><td>is mandatory<\/td><\/tr><tr><td>start, end<\/td><td>start &lt; end<\/td><td>must have the start less than to the end<\/td><\/tr><tr><td>start, end<\/td><td>start != end<\/td><td>must not start the same as the end<\/td><\/tr><tr><td>end<\/td><td>end &lt; startDate<\/td><td>must have at least one timeWindow with end after problem\u2019s startDate<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Tabla de reglas de validaci\u00f3n para par\u00e1metros relacionados con la ventana de tiempo.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Errores de procesamiento<\/h2>\n\n\n\n<p>Los siguientes mensajes de error pueden aparecer al consultar el estado del procesamiento de la solicitud a trav\u00e9s de los endpints<a href=\"https:\/\/api.maplink.global\/planning\/v1\/events?jobId={{planningId}}\u00a0e\u00a0https:\/\/api.maplink.global\/planning\/v1\/jobs\/{{planningId}}.\"> <\/a><a href=\"https:\/\/api.maplink.global\/planning\/v1\/events?jobId={{planningId}}\">https:\/\/api.maplink.global\/planning\/v1\/events?jobId={{planningId}}<\/a> y <a href=\"https:\/\/api.maplink.global\/planning\/v1\/jobs\/{{planningId}}.\">https:\/\/api.maplink.global\/planning\/v1\/jobs\/{{planningId}}.<\/a><\/p>\n\n\n\n<p>El mensaje de error sigue la siguiente estructura:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n        \"id\": \"688d267a74be5d22a1ac9002\",\n        \"jobId\": \"688d26787766ef668397ff50\",\n        \"type\": \"ERROR\",\n        \"description\": \"{'logId':'db496388-c45a-4902-af42-0971578cbb38','errors':[{'code':'TECHNICAL_ERROR','description':'global.maplink.matrixinprocessor.exception.ProcessException: [ProcessError(code=INVALID_SITE_POSITION, description=Some sites have not been positionned, detail=[Cliente1])]'}]}\",\n        \"createdAt\": 1754080890262\n    }<\/pre>\n\n\n\n<p>El evento retorna con el <code>type<\/code> igual a <code>ERROR<\/code> y se pueden devolver los siguientes mensajes en la <code>description<\/code>:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Mensaje de error<\/strong><\/td><td><strong>Causa<\/strong><\/td><\/tr><tr><td>{\u2018logId\u2019:\u2019<strong>{{logId}}<\/strong>\u2018,\u2019errors\u2019:<br>[{\u2018code\u2019:\u2019TECHNICAL_ERROR\u2019,\u2019description\u2019:\u2019Not possible to create route between sites&nbsp;<strong>{{siteId}}<\/strong>&nbsp;and&nbsp;<strong>{{siteId}}<\/strong>\u2018}]}<\/td><td>No se pudo encontrar una ruta entre los dos puntos. El punto podr\u00eda estar mal ubicado o no existir ninguna ruta, como un punto en una calle sin salida de un solo sentido.<\/td><\/tr><tr><td>Error in process MRS: Cannot find point&nbsp;<strong>{{latitude}}<\/strong>,<strong>{{longitude}}<\/strong><\/td><td>No se pudo encontrar la ubicaci\u00f3n de las coordenadas proporcionadas. Algunas coordenadas podr\u00edan no ser v\u00e1lidas, por ejemplo, al caer al oc\u00e9ano.<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Tabla de mensajes de error de procesamiento<\/figcaption><\/figure>\n\n\n\n<p>Ejemplo de una ruta con un mensaje de error:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[\n    {\n        \"id\": \"688d29735e59ee6e88b67adb\",\n        \"jobId\": \"688d29737766ef668397ff52\",\n        \"type\": \"STATUS_CHANGE\",\n        \"description\": \"ENQUEUED\",\n        \"createdAt\": 1754081651310\n    },\n    {\n        \"id\": \"688d297374be5d22a1ac900b\",\n        \"jobId\": \"688d29737766ef668397ff52\",\n        \"type\": \"STATUS_CHANGE\",\n        \"description\": \"CONVERT_TO_MATRIX\",\n        \"createdAt\": 1754081651314\n    },\n    {\n        \"id\": \"688d29735e59ee6e88b67adc\",\n        \"jobId\": \"688d29737766ef668397ff52\",\n        \"type\": \"PERCENT_CHANGE\",\n        \"description\": \"1\",\n        \"createdAt\": 1754081651317\n    },\n    {\n        \"id\": \"688d297308fc0e441d9e9d23\",\n        \"jobId\": \"688d29737766ef668397ff52\",\n        \"type\": \"STATUS_CHANGE\",\n        \"description\": \"PROCESSING\",\n        \"createdAt\": 1754081651339\n    },\n    {\n        \"id\": \"688d29745e59ee6e88b67add\",\n        \"jobId\": \"688d29737766ef668397ff52\",\n        \"type\": \"ERROR\",\n        \"description\": \"{'logId':'e687f91b-e4ce-4cbf-b6c5-8e304e281617','errors':[{'code':'TECHNICAL_ERROR','description':Not possible to create route between sites OP-1 and OP-2'}]},\n        \"createdAt\": 1754081652037\n    }\n]<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Errores de validaci\u00f3n Los siguientes mensajes de error pueden aparecer debido a par\u00e1metros omitidos o introducidos incorrectamente. El c\u00f3digo de error devuelto por la API ser\u00e1 400 (Bad Request) y el JSON devuelto tendr\u00e1 la siguiente estructura: La siguiente tabla muestra las validaciones aplicadas a cada entidad y el mensaje de error devuelto: Par\u00e1metro Validaciones [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[147],"tags":[],"class_list":["post-1894","post","type-post","status-publish","format-standard","hentry","category-planning-es"],"acf":[],"_links":{"self":[{"href":"https:\/\/developers.maplink.global\/es\/wp-json\/wp\/v2\/posts\/1894","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developers.maplink.global\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/developers.maplink.global\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/developers.maplink.global\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/developers.maplink.global\/es\/wp-json\/wp\/v2\/comments?post=1894"}],"version-history":[{"count":10,"href":"https:\/\/developers.maplink.global\/es\/wp-json\/wp\/v2\/posts\/1894\/revisions"}],"predecessor-version":[{"id":3521,"href":"https:\/\/developers.maplink.global\/es\/wp-json\/wp\/v2\/posts\/1894\/revisions\/3521"}],"wp:attachment":[{"href":"https:\/\/developers.maplink.global\/es\/wp-json\/wp\/v2\/media?parent=1894"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/developers.maplink.global\/es\/wp-json\/wp\/v2\/categories?post=1894"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/developers.maplink.global\/es\/wp-json\/wp\/v2\/tags?post=1894"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}