API de Movidesk - Servicios
20 min
Creado por Rafael Frigotto en 18/08/2017 16:47
Actualizado por Karine Moreira en 24/09/2024 16:31
Importante: Nuestras API tienen un límite de 10 solicitudes por minuto para garantizar un uso saludable. Si tienes un escenario específico que requiere aumentar el uso, contacta a nuestro equipo de soporte para análisis de viabilidad. Más información sobre horarios y límites de las API
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
Parámetros: token

Para permitir y simplificar consultas con filtros, la API utiliza el protocolo abierto OData. Los filtros posibles son:
• $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.

¿Te ha útil este artículo?
Vistos recientemente