Expedientes
CRUD para expedientes jurídicos con campos específicos del ámbito legal
curl "https://app.getplea.com/api/cases?status=open&caseType=civil&limit=10" \
-H "Authorization: Bearer TOKEN" \
-H "x-organization-id: ORG_ID"
const cases = await fetch('/api/cases?status=open&caseType=civil&limit=10', {
headers: {
'Authorization': 'Bearer TOKEN',
'x-organization-id': 'ORG_ID'
}
}).then(r => r.json());
[
{
"id": "case-uuid-1",
"caseNumber": "2026/0042",
"caseType": "civil",
"status": "open",
"description": "Reclamación de cantidad por impago de servicios profesionales",
"clientId": "client-uuid-1",
"clientName": "Elena Martínez Ruiz",
"opposingParty": "Construcciones Norte S.L.",
"judicialBody": "Juzgado de Primera Instancia",
"judicialBodyNumber": "12",
"judicialDistrict": "Madrid",
"procedureType": "Juicio ordinario",
"courtFileNumber": "0042/26",
"assignedLawyerId": "user-uuid-1",
"assignedLawyerName": "Ana López Fernández",
"createdAt": "2026-01-20T10:00:00Z"
}
]
curl https://app.getplea.com/api/cases/case-uuid-1 \
-H "Authorization: Bearer TOKEN" \
-H "x-organization-id: ORG_ID"
const caseDetail = await fetch('/api/cases/case-uuid-1', {
headers: {
'Authorization': 'Bearer TOKEN',
'x-organization-id': 'ORG_ID'
}
}).then(r => r.json());
{
"id": "case-uuid-1",
"caseNumber": "2026/0042",
"caseType": "civil",
"status": "open",
"description": "Reclamación de cantidad por impago de servicios profesionales",
"clientId": "client-uuid-1",
"client": {
"id": "client-uuid-1",
"name": "Elena Martínez Ruiz",
"email": "elena.martinez@email.com"
},
"opposingParty": "Construcciones Norte S.L.",
"judicialBody": "Juzgado de Primera Instancia",
"judicialBodyNumber": "12",
"judicialDistrict": "Madrid",
"procedureType": "Juicio ordinario",
"courtFileNumber": "0042/26",
"assignedLawyerId": "user-uuid-1",
"tasks": 5,
"documents": 8,
"invoices": 2,
"createdAt": "2026-01-20T10:00:00Z",
"updatedAt": "2026-03-05T14:30:00Z"
}
{
"error": "Not Found",
"message": "Expediente no encontrado"
}
curl -X POST https://app.getplea.com/api/cases \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-H "x-organization-id: ORG_ID" \
-d '{
"caseNumber": "2026/0100",
"caseType": "laboral",
"clientId": "client-uuid-1",
"opposingParty": "Empresa Tecnológica S.A.",
"status": "open",
"description": "Despido improcedente. Reclamación de indemnización.",
"judicialBody": "Juzgado de lo Social",
"judicialBodyNumber": "3",
"judicialDistrict": "Madrid",
"procedureType": "Despido",
"assignedLawyerId": "user-uuid-1"
}'
const newCase = await fetch('/api/cases', {
method: 'POST',
headers: {
'Authorization': 'Bearer TOKEN',
'Content-Type': 'application/json',
'x-organization-id': 'ORG_ID'
},
body: JSON.stringify({
caseNumber: '2026/0100',
caseType: 'laboral',
clientId: 'client-uuid-1',
opposingParty: 'Empresa Tecnológica S.A.',
status: 'open',
description: 'Despido improcedente. Reclamación de indemnización.',
judicialBody: 'Juzgado de lo Social',
judicialBodyNumber: '3',
judicialDistrict: 'Madrid',
procedureType: 'Despido',
assignedLawyerId: 'user-uuid-1'
})
}).then(r => r.json());
{
"id": "case-uuid-new",
"caseNumber": "2026/0100",
"caseType": "laboral",
"status": "open",
"description": "Despido improcedente. Reclamación de indemnización.",
"clientId": "client-uuid-1",
"opposingParty": "Empresa Tecnológica S.A.",
"judicialBody": "Juzgado de lo Social",
"judicialBodyNumber": "3",
"judicialDistrict": "Madrid",
"procedureType": "Despido",
"assignedLawyerId": "user-uuid-1",
"createdAt": "2026-03-07T12:00:00Z"
}
{
"error": "Bad Request",
"message": "El número de expediente '2026/0100' ya existe"
}
curl -X PATCH https://app.getplea.com/api/cases/case-uuid-1 \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
-H "x-organization-id: ORG_ID" \
-d '{"status": "in_progress", "courtFileNumber": "0042/26"}'
await fetch('/api/cases/case-uuid-1', {
method: 'PATCH',
headers: {
'Authorization': 'Bearer TOKEN',
'Content-Type': 'application/json',
'x-organization-id': 'ORG_ID'
},
body: JSON.stringify({
status: 'in_progress',
courtFileNumber: '0042/26'
})
});
{
"id": "case-uuid-1",
"caseNumber": "2026/0042",
"status": "in_progress",
"courtFileNumber": "0042/26",
"updatedAt": "2026-03-07T12:30:00Z"
}
curl -X DELETE https://app.getplea.com/api/cases/case-uuid-1 \
-H "Authorization: Bearer TOKEN" \
-H "x-organization-id: ORG_ID"
await fetch('/api/cases/case-uuid-1', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer TOKEN',
'x-organization-id': 'ORG_ID'
}
});
{
"message": "Expediente eliminado correctamente"
}
curl https://app.getplea.com/api/cases/case-uuid-1/activity \
-H "Authorization: Bearer TOKEN" \
-H "x-organization-id: ORG_ID"
const activity = await fetch('/api/cases/case-uuid-1/activity', {
headers: {
'Authorization': 'Bearer TOKEN',
'x-organization-id': 'ORG_ID'
}
}).then(r => r.json());
[
{
"id": "activity-1",
"type": "status_change",
"description": "Estado cambiado de 'open' a 'in_progress'",
"userId": "user-uuid-1",
"userName": "Ana López",
"createdAt": "2026-03-05T14:30:00Z"
},
{
"id": "activity-2",
"type": "document_added",
"description": "Documento 'Demanda.pdf' añadido",
"userId": "user-uuid-1",
"userName": "Ana López",
"createdAt": "2026-03-04T10:15:00Z"
},
{
"id": "activity-3",
"type": "comment",
"description": "Vista oral programada para el 15 de abril",
"userId": "user-uuid-2",
"userName": "Pedro Martín",
"createdAt": "2026-03-03T09:00:00Z"
}
]
curl "https://app.getplea.com/api/cases/export-altas?dateFrom=2026-01-01&dateTo=2026-03-31" \
-H "Authorization: Bearer TOKEN" \
-H "x-organization-id: ORG_ID" \
-o expedientes.csv
Content-Type: text/csv
Content-Disposition: attachment; filename="expedientes-altas.csv"
caseNumber,caseType,status,clientName,opposingParty,createdAt
2026/0042,civil,open,Elena Martínez,Construcciones Norte S.L.,2026-01-20
2026/0100,laboral,open,Elena Martínez,Empresa Tecnológica S.A.,2026-03-07
Endpoints para gestionar expedientes (casos legales). Incluye campos específicos como órgano judicial, número de autos, tipo de procedimiento y parte contraria.
GET /api/cases
Lista los expedientes de la organización con filtros opcionales.
Número máximo de resultados. Default: 50.
Desplazamiento para paginación.
Filtrar por estado: open, in_progress, closed, archived.
Filtrar por tipo: civil, penal, laboral, mercantil, administrativo, familiar.
Filtrar por UUID del cliente.
Filtrar por UUID del abogado asignado.
Fecha de inicio del rango (ISO 8601).
Fecha fin del rango (ISO 8601).
GET /api/cases/:id
Obtiene los detalles completos de un expediente.
UUID del expediente.
POST /api/cases
Crea un nuevo expediente.
Número de expediente (único dentro de la organización).
Tipo de procedimiento: civil, penal, laboral, mercantil, administrativo, familiar.
UUID del cliente asociado.
Nombre de la parte contraria.
Estado inicial: open, in_progress. Default: open.
Descripción del caso.
Nombre del órgano judicial (ej: "Juzgado de Primera Instancia").
Número del órgano judicial.
Partido judicial.
Tipo de procedimiento (ej: "Juicio ordinario", "Monitorio").
Número de autos en formato 0000/00.
UUID del abogado responsable.
PATCH /api/cases/:id
Actualiza un expediente existente. Solo se envían los campos que cambian.
UUID del expediente.
DELETE /api/cases/:id
Elimina un expediente.
UUID del expediente a eliminar.
GET /api/cases/:id/activity
Obtiene el historial de actividad de un expediente (cambios, comentarios, eventos).
UUID del expediente.
GET /api/cases/export-altas
Exporta los expedientes en formato CSV para informes de altas.
Fecha de inicio (ISO 8601).
Fecha fin (ISO 8601).
Last updated today