# API Reference v1

Base URL: `/api/v1`

## Auth

- `POST /register`
- `POST /login`
- `POST /logout` (auth)
- `GET /me` (auth)

## Empleos (auth)

- `GET /jobs`
- `POST /jobs`
- `GET /jobs/{id}`
- `PUT/PATCH /jobs/{id}`
- `DELETE /jobs/{id}`

## Habitaciones (auth)

- `GET /housing-listings`
- `POST /housing-listings`
- `GET /housing-listings/{id}`
- `PUT/PATCH /housing-listings/{id}`
- `DELETE /housing-listings/{id}`

## Rutas compartidas (auth)

- `GET /ride-offers`
- `POST /ride-offers`
- `GET /ride-offers/{id}`
- `PUT/PATCH /ride-offers/{id}`
- `DELETE /ride-offers/{id}`

## Matching y recomendaciones (auth)

- `GET /recommendations`
- `POST /recommendations/generate`

## Marketplace servicios Fase 3 (auth)

- `GET /service-categories`
- `POST /service-categories` (admin/moderador)
- `GET /service-companies`
- `POST /service-companies`
- `GET /service-offers`
- `POST /service-offers`
- `GET /service-requests`
- `POST /service-requests`
- `POST /service-requests/{id}/dispatch`
- `POST /service-matches/{id}/respond` (empresa)
- `POST /service-requests/{id}/matches/{matchId}/accept` (usuario)
- `POST /service-requests/{id}/complete`

## Admin KPIs y moderacion (auth admin/moderador)

- `GET /admin/kpis/services` (admin)
- `GET /admin/kpis/commissions?days=30` (admin)
- `GET /admin/moderation/service-requests?moderation_status=needs_review&min_risk=40` (admin/moderador)
- `POST /admin/moderation/service-requests/{id}/review`
- `GET /admin/moderation/audit-logs?action=service_request_reviewed`
- `GET /admin/fraud-config` (admin/moderador)
- `PUT /admin/fraud-config` (solo admin)

## Reportes de fraude (auth)

- `GET /fraud-reports` (propios, o todos si admin/moderador)
- `POST /fraud-reports`
- `GET /fraud-reports/{id}`
- `PUT /fraud-reports/{id}` (admin/moderador)
- `DELETE /fraud-reports/{id}` (admin/moderador)

## Incidencias internas / SLA (auth)

- `GET /support-tickets` (usuarios: propios, staff: todos)
- `POST /support-tickets`
- `GET /support-tickets/{id}`
- `PUT /support-tickets/{id}` (staff o cierre por reportero)
- `POST /support-tickets/{id}/assign` (staff)
- `GET /support-tickets/{id}/comments`
- `POST /support-tickets/{id}/comments`

## SLA tickets

- `critical`: 4h
- `high`: 12h
- `medium`: 24h
- `low`: 48h

Comando operativo:
- `php artisan support:notify-sla-overdue`

## Notas antifraude

- Cada `service-request` calcula:
  - `risk_score`
  - `fraud_flags`
  - `moderation_status` (`clean`, `needs_review`, `blocked`)
- Solicitudes `blocked` o `needs_review` no pueden ejecutar `dispatch` hasta revision manual.
