https://api.movidesk.com/public/v1
Servicios
URL: /services Métodos: GET / POST / PATCH / DELETE
Diseño
service
Propiedad | Tipo | Tamaño | Obligatorio | Descripción |
---|---|---|---|---|
id | int | Campo Identificador único del servicio (solo lectura). | ||
name | string | 128 | ✓ | Campo Nombre del servicio. |
description | string | Campo descripción. | ||
parentServiceId | int | Campo id que representa el servicio padre. | ||
serviceForTicketType | int | ✓ | Disponible para tickets del tipo. Público = 0, Interno = 1, Públicos e internos = 2. | |
isVisible | int | ✓ | Visible para: Agente = 1, Cliente = 2, Agente y Cliente = 3. | |
allowSelection | int | ✓ | Permitir la selección para: Agente = 1, Cliente = 2, Agente y Cliente = 3. | |
allowFinishTicket | bool | ✓ | Al desmarcar este parámetro, el ticket no podrá ser concluido si tiene este ítem seleccionado. El agente debe elegir un nuevo ítem antes de finalizar el ticket. | |
isActive | bool | ✓ | Servicios deshabilitados no estarán visibles para la selección dentro de los tickets. Desmarca esta opción si no deseas que el servicio esté disponible en el sistema. | |
automationMacro | string | 64 | Nombre de la macro que debe ejecutarse automáticamente al seleccionar el servicio. | |
defaultCategory | string | 128 | Nombre de la categoría que debe aparecer como predeterminada al seleccionar el servicio en el ticket. | |
defaultUrgency | string | 128 | Nombre de la urgencia que debe aparecer como predeterminada al seleccionar el servicio en el ticket. | |
allowAllCategories | bool | ✓ | Permite seleccionar todas las categorías. | |
categories | array | 128 | * | Lista con los nombres de las categorías del servicio. Debe ser informado cuando el campo allowAllCategories sea falso. |
Trabajando con los datos
Para acceder a los datos es necesario generar previamente una clave para la API.
Para generar una clave para la API (token), accede a Movidesk, ve a Configuraciones / Cuenta / Parámetros y en la pestaña de entorno haz clic en el botón "Generar nueva clave" si aún no tienes una creada.
Puedes repetir esta operación siempre que desees generar una nueva clave de acceso, pero recuerda que al generar una nueva clave, todos los programas que utilicen la clave antigua dejarán de funcionar.
Todo el flujo de datos (Visualización/Inserción/Modificación) debe tener el formato JSON como el ejemplo a continuación:
{
"id": 5778,
"name": "Demostración",
"description": "Servicio de prueba",
"parentServiceId": 5707,
"serviceForTicketType": 1,
"isVisible": 3,
"allowSelection": 3,
"allowFinishTicket": true,
"isActive": true,
"automationMacro": "Aplicar adjunto",
"defaultCategory": "Solo opciones internas",
"defaultUrgency": "Baja",
"allowAllCategories": false,
"categories": [
"Solo opciones internas",
"Problema",
"Sugerencia"
]
}
Obteniendo datos
Método GET
Obteniendo un único servicio
GET: /services
Parámetros: id, token
Ejemplo:
Obteniendo el servicio con el id 5712
GET: https://api.movidesk.com/public/v1/services?token=4242a18d-3e12-498c-937c-930bef3de3fa&id=5712
Retorno:
{
"id": 5712,
"name": "TI",
"description": null,
"parentServiceId": null,
"serviceForTicketType": 2,
"isVisible": 3,
"allowSelection": 3,
"allowFinishTicket": true,
"isActive": true,
"automationMacro": null,
"defaultCategory": "Problema",
"defaultUrgency": "Media",
"allowAllCategories": true,
"categories": []
}
Obteniendo una lista de servicios
GET: /services
Parámetros: token
Ejemplo:
Obteniendo una lista de servicios
GET: https://api.movidesk.com/public/v1/services?token=4242a18d-3e12-498c-937c-930bef3de3fa
Respuesta:
[
{
"id": 5711,
"name": "SAC",
"description": null,
"parentServiceId": null,
"serviceForTicketType": 2,
"isVisible": 3,
"allowSelection": 1,
"allowFinishTicket": true,
"isActive": true,
"automationMacro": null,
"defaultCategory": null,
"defaultUrgency": null,
"allowAllCategories": true,
"categories": []
},
{
"id": 5712,
"name": "TI",
"description": null,
"parentServiceId": null,
"serviceForTicketType": 2,
"isVisible": 3,
"allowSelection": 3,
"allowFinishTicket": true,
"isActive": true,
"automationMacro": null,
"defaultCategory": "Problema",
"defaultUrgency": "Media",
"allowAllCategories": true,
"categories": []
}
... Otros elementos de la lista
]
Obteniendo servicios con filtros
GET: /services
Para permitir y simplificar consultas con filtros, la API utiliza el protocolo abierto OData. Los filtros posibles son:
Parámetros: token
• $filter: la expresión especificada con este filtro se evalúa para cada elemento en el resultado de la consulta y solo los elementos en los que el resultado de la expresión sea verdadero se incluirán en la respuesta final;
• $orderby: permite que los elementos del resultado de la consulta se ordenen de manera ascendente (asc) o descendente (desc). Si no se especifica asc o desc, el predeterminado será asc;
• $top: permite especificar el número de elementos que deben incluirse en la respuesta de la consulta;
• $skip: permite especificar la cantidad de elementos que deben ser ignorados y no incluidos en la respuesta de la consulta;
• $select: permite especificar propiedades específicas de los elementos que deben ser incluidas en la respuesta de la consulta;
• $expand: permite expandir las colecciones secundarias de los elementos consultados.
Ejemplos:
Obteniendo una lista de servicios que tenga un id determinado:
GET: https://api.movidesk.com/public/v1/services?token=4242a18d-3e12-498c-937c-930bef3de3fa&$filter=id eq 5779
Respuesta:
[
{
"id": 5779,
"name": "5779",
"description": null,
"parentServiceId": 5778,
"serviceForTicketType": 0,
"isVisible": 0,
"allowSelection": 0,
"allowFinishTicket": false,
"isActive": true,
"automationMacro": null,
"defaultCategory": null,
"defaultUrgency": null,
"allowAllCategories": false,
"categories": []
}
]
Obteniendo una lista de servicios que no estén activos, ordenados de manera descendente según el id:
GET: https://api.movidesk.com/public/v1/services?token=4242a18d-3e12-498c-937c-930bef3de3fa&$filter=isActive eq false&$orderby=id desc
Respuesta:
[
{
"id": 5788,
"name": "prueba 1",
"description": null,
"parentServiceId": 5785,
"serviceForTicketType": 0,
"isVisible": 0,
"allowSelection": 0,
"allowFinishTicket": false,
"isActive": false,
"automationMacro": null,
"defaultCategory": null,
"defaultUrgency": null,
"allowAllCategories": false,
"categories": []
},
{
"id": 5787,
"name": "prueba 1",
"description": null,
"parentServiceId": 5785,
"serviceForTicketType": 0,
"isVisible": 0,
"allowSelection": 0,
"allowFinishTicket": false,
"isActive": false,
"automationMacro": null,
"defaultCategory": null,
"defaultUrgency": null,
"allowAllCategories": false,
"categories": []
}
]
Obteniendo una lista de servicios que no estén activos y ordenados de forma descendente según el id, y filtrando el retorno para obtener solo 10 servicios, pero omitiendo los primeros 10 (utilizado para la paginación del retorno, en este caso para obtener la segunda página):
GET: https://api.movidesk.com/public/v1/services?token=4242a18d-3e12-498c-937c-930bef3de3fa&$filter=isActive eq false&$orderby=id desc&$top=100&$skip=10
Respuesta:
[
{
{
"id": 102,
"name": "prueba 1",
"description": null,
"parentServiceId": 5785,
"serviceForTicketType": 0,
"isVisible": 0,
"allowSelection": 0,
"allowFinishTicket": false,
"isActive": false,
"automationMacro": null,
"defaultCategory": null,
"defaultUrgency": null,
"allowAllCategories": false,
"categories": []
},
{
"id": 101,
"name": "prueba 1",
"description": null,
"parentServiceId": 5785,
"serviceForTicketType": 0,
"isVisible": 0,
"allowSelection": 0,
"allowFinishTicket": false,
"isActive": false,
"automationMacro": null,
"defaultCategory": null,
"defaultUrgency": null,
"allowAllCategories": false,
"categories": []
}, ... Otros 8 elementos de la lista ordenados de forma descendente según el id y que no estén activos. ]
Obteniendo id y el nombre de los servicios que no estén activos, ordenados de forma descendente según el id y filtrando el retorno para obtener solo 10 servicios, pero omitiendo los primeros 10 (utilizado para la paginación del retorno, en este caso para obtener la segunda página):
GET: https://api.movidesk.com/public/v1/services?token=4242a18d-3e12-498c-937c-930bef3de3fa&$filter=isActive eq false&$select=name,id&$orderby=id desc&$top=10&$skip=10
Respuesta:
[
{
"id": 102,
"name": "Demostración"
},
{
"id": 101,
"name": "Decimotercero"
} ... Otros 8 elementos de la lista ordenados de forma descendente según el id y que no estén activos.
]
Insertando datos
Método POST
POST: /services
Parámetros: token, returnAllProperties (valor por defecto es false)
Headers: Content-Type: application/json
Cuerpo del post: {objeto JSON}
Ejemplo:
POST: https://api.movidesk.com/public/v1/services?token=4242a18d-3e12-498c-937c-930bef3de3fa&returnAllProperties=false Headers: Content-Type: application/json RequestBody: {
"id": 5707,
"name": "Prueba 01",
"description": "Prueba del servicio",
"parentServiceId": 5707,
"serviceForTicketType": 1,
"isVisible": 3,
"allowSelection": 3,
"allowFinishTicket": true,
"isActive": true,
"automationMacro": "Aplicar anexo",
"defaultCategory": "Problema",
"defaultUrgency": "Media",
"allowAllCategories": false,
"categories": [
"Problema",
"Sugerencia",
"No añade adjunto",
"Solicitud de servicio"
]
}
Respuesta: Estado 200 y en el cuerpo el id del servicio insertado.
Actualizando datos
Método PATCH
A diferencia de la inserción de datos (POST), la actualización se realiza de forma parcial. Por lo tanto, es necesario enviar al servidor solo los datos que se desean cambiar.
Sin embargo, la modificación de las listas (objetos hijos) siempre sobrescribe todos los ítems de la lista.
PATCH: /services
Parámetros: token, id
Headers: Content-Type: application/json
Cuerpo: {objeto JSON}
Ejemplos:
Cambiando el nombre del servicio con id 1
PATCH: https://api.movidesk.com/public/v1/services?token=4242a18d-3e12-498c-937c-930bef3de3fa&id=1 Headers: Content-Type: application/json RequestBody: { "name": "prueba" }
Respuesta: Estado 200
En el ejemplo anterior, solo se modifica el campo Name, los demás campos permanecen inalterados
Eliminando servicios
Método DELETE
DELETE: /services
Parámetros: token, id
Headers: Content-Type: application/json
Cuerpo del post: {objeto JSON}
Ejemplos:
Eliminando el servicio con id 1
DELETE: https://api.movidesk.com/public/v1/services?token=4242a18d-3e12-498c-937c-930bef3de3fa&id=1 Headers: Content-Type: application/json
Respuesta: Estado 200
Ejemplo de código fuente en el lenguaje C# para llamar a la API
Método POST
try
{
var servicio = new
{
isActive = true
};
var json = JsonConvert.SerializeObject(servicio);
var response = await SendAsync("https://api.movidesk.com/public/v1/services
?token=SEUTOKEN",
json, "POST", "application/json");
}
catch (WebException ex)
{
var response = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
}
public static async Task<string> SendAsync(string uri, string content, string method, string contentType)
{
var req = WebRequest.Create(uri);
req.ContentType = contentType;
req.Method = method;
using (var stream = await req.GetRequestStreamAsync())
using (var streamWriter = new StreamWriter(stream))
{
await streamWriter.WriteAsync(content);
}
var httpResponse = (HttpWebResponse)await req.GetResponseAsync();
using (var stream = httpResponse.GetResponseStream())
{
if (stream == null)
return null;
using (var streamReader = new StreamReader(stream))
{
return await streamReader.ReadToEndAsync();
}
}
}
En el ejemplo anterior, la inserción del servicio no se realizará ya que hay varios errores en el cuerpo de la solicitud. Los errores están detallados en la variable response y deben ser corregidos siguiendo esta documentación.