Crear incidencia
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 | Sí | Título breve de la incidencia (máx 500 caracteres) |
descripcion |
string | Sí | 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 | Sí | 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)
| 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 |