Saltar a contenido

Crear incidencia

POST /apientidades/v1/incidencias

Crea una nueva incidencia para comunicar un problema o solicitud al Comisionado de Transparencia.

Body de la petición

{
  "titulo": "Error al acceder al portal",
  "descripcion": "Al intentar acceder al portal de transparencia aparece un error 500. El problema ocurre desde las 10:00 de hoy.",
  "tipo": 3,
  "declaracionId": 5001,
  "usuarioId": 501
}

Campos del body

Campo Tipo Obligatorio Descripción
titulo string Título breve de la incidencia (máx 500 caracteres)
descripcion string Descripción detallada del problema (máx 10 000 caracteres)
tipo int No Tipo de incidencia, valor entre 0 y 6 (ver tabla). Por defecto 0 (Otros)
declaracionId int No ID de la declaración vinculada. Omitir si la incidencia es general
usuarioId int ID del usuario que reporta. Debe ser un usuario activo de la entidad autenticada (obtener con GET /usuarios)

usuarioId ahora es obligatorio

A partir de la versión 3.0.1 el campo usuarioId es obligatorio al crear una incidencia. Antes existía un fallback al "primer usuario activo de la entidad", pero atribuía autoría a un usuario aleatorio y generaba trazas confusas. Ahora el cliente debe indicar explícitamente qué usuario reporta la incidencia.

Valores de tipo

Valor Tipo
0 Otros
1 PublicidadActiva
2 SoporteWeb
3 Técnicas
4 Usuarios
5 TransparenciaVoluntaria
6 DerechoAcceso

Ejemplo de petición

# Paso 1: obtener un usuarioId válido de la entidad
USUARIO_ID=$(curl -s -H "Authorization: Bearer $TOKEN" \
  "https://apientidades-pro.transparenciacanarias.org/apientidades/v1/usuarios" \
  | jq -r '.data[0].id')

# Paso 2: crear la incidencia
curl -s -X POST \
  "https://apientidades-pro.transparenciacanarias.org/apientidades/v1/incidencias" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{
    \"titulo\": \"Error al acceder al portal de transparencia\",
    \"descripcion\": \"Al intentar acceder a la sección de presupuestos aparece un error 500. El problema ocurre desde las 10:00 de hoy.\",
    \"tipo\": 3,
    \"declaracionId\": 5001,
    \"usuarioId\": $USUARIO_ID
  }" | jq .
import requests

BASE_URL = "https://apientidades-pro.transparenciacanarias.org/apientidades/v1"
headers = {
    "Authorization": f"Bearer {token}",
    "Content-Type": "application/json"
}

# Paso 1: obtener un usuarioId valido de la entidad (obligatorio)
usuarios = requests.get(f"{BASE_URL}/usuarios", headers=headers).json()
if not usuarios.get("data"):
    raise RuntimeError("La entidad no tiene usuarios activos")
usuario_id = usuarios["data"][0]["id"]

# Paso 2: crear la incidencia
payload = {
    "titulo": "Error al acceder al portal de transparencia",
    "descripcion": "Al intentar acceder a la sección de presupuestos aparece un error 500.",
    "tipo": 3,
    "declaracionId": 5001,
    "usuarioId": usuario_id
}

response = requests.post(f"{BASE_URL}/incidencias", headers=headers, json=payload)

if response.status_code == 201:
    result = response.json()
    print(f"Incidencia creada: id={result['id']} idhistorico={result['idhistorico']}")
    # Guardar idhistorico si vas a subir adjuntos al mensaje inicial
else:
    print(f"Error {response.status_code}: {response.json()}")
// Paso 1: obtener un usuarioId valido de la entidad
var usuariosResp = await client.GetAsync($"{baseUrl}/usuarios");
var usuariosJson = JsonConvert.DeserializeObject<dynamic>(
    await usuariosResp.Content.ReadAsStringAsync());
int usuarioId = (int)usuariosJson.data[0].id;

// Paso 2: crear la incidencia
var payload = new
{
    titulo = "Error al acceder al portal de transparencia",
    descripcion = "Al intentar acceder a la sección de presupuestos aparece un error 500.",
    tipo = 3,
    declaracionId = 5001,
    usuarioId = usuarioId
};

var content = new StringContent(
    JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json");

var response = await client.PostAsync($"{baseUrl}/incidencias", content);

if (response.StatusCode == HttpStatusCode.Created)
{
    var json = await response.Content.ReadAsStringAsync();
    var result = JsonConvert.DeserializeObject<dynamic>(json);
    Console.WriteLine($"Incidencia creada: id={result.id} idhistorico={result.idhistorico}");
}

Respuesta exitosa (201 Created)

{
  "id": 201,
  "idhistorico": 987,
  "message": "Incidencia creada correctamente."
}
Campo Tipo Descripción
id int ID de la incidencia creada
idhistorico int ID del mensaje inicial del histórico. Úselo para adjuntar ficheros al mensaje de apertura con POST /incidencias/{id}/adjuntos
message string Mensaje de confirmación

Validaciones

Validación Límite Error
Título Obligatorio, máx 500 chars 400
Descripción Obligatoria, máx 10 000 chars 400
Tipo 0-6 400 "Tipo de incidencia debe ser 0-6"
declaracionId Debe pertenecer a la entidad 400 "no pertenece a esta entidad"
usuarioId Obligatorio y debe ser un usuario activo de la entidad 400 "usuarioId es obligatorio" o "no es un usuario autorizado"
Sanitización HTML Tags HTML eliminados Prevención XSS

Sanitización HTML

El título y la descripción se sanitizan automáticamente: se eliminan todos los tags HTML para prevenir ataques XSS. Envíe texto plano, no HTML.

Errores posibles

Código Descripción
400 Validación fallida (ver tabla)
401 Token ausente, expirado o inválido