Skip to main content

Overview

The Bodycams API manages body-worn cameras including inventory tracking, states, delivery management, and equipment assignment to personnel. Each bodycam has a unique code, serial number, and tracks its current state (available, delivered, lost, maintenance, or decommissioned).

Endpoints

List Bodycams

Retrieve a paginated list of bodycams with filtering options.
GET /bodycams
texto
string
Search by code, serial number, IMEI, brand, or model
estado
string
Filter by state: disponible, entregada, perdida, mantenimiento, dada_baja
page
integer
default:"1"
Page number (10 items per page)
Response
bodycams
array
Array of bodycam objects
Example Request
curl -X GET "https://your-domain.com/bodycams?texto=BC001&estado=disponible" \
  -H "Cookie: your-session-cookie"

Create Bodycam

Create a new bodycam record.
POST /bodycams
Request Body
codigo
string
required
Unique bodycam code
numero_serie
string
required
Unique serial number
marca
string
required
Brand/manufacturer
modelo
string
required
Model name
estado
string
required
Initial state: disponible, entregada, perdida, mantenimiento, dada_baja
imei
string
IMEI number
numero_tarjeta_sd
string
SD card serial number
numero_bateria
string
Battery serial number
fecha_adquisicion
date
Acquisition date
observaciones
text
Additional observations
Example Request
curl -X POST "https://your-domain.com/bodycams" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "Cookie: your-session-cookie" \
  -d "codigo=BC001" \
  -d "numero_serie=SN123456789" \
  -d "marca=Axon" \
  -d "modelo=Body 3" \
  -d "estado=disponible" \
  -d "fecha_adquisicion=2024-01-15"
Response Redirects to /bodycams with success message: “Bodycam creada exitosamente” Validation Rules
  • codigo must be unique
  • numero_serie must be unique
  • estado must be one of: disponible, entregada, perdida, mantenimiento, dada_baja

Show Bodycam

Retrieve details of a specific bodycam.
GET /bodycams/{id}
id
integer
required
Bodycam ID
Response Returns a view with complete bodycam details including delivery history.

Update Bodycam

Update an existing bodycam record.
PUT /bodycams/{id}
id
integer
required
Bodycam ID to update
Request Body Same parameters as create endpoint. Validation Rules
  • codigo must be unique (excluding current record)
  • numero_serie must be unique (excluding current record)
  • estado must be one of: disponible, entregada, perdida, mantenimiento, dada_baja
Example Request
curl -X PUT "https://your-domain.com/bodycams/123" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "Cookie: your-session-cookie" \
  -d "codigo=BC001" \
  -d "numero_serie=SN123456789" \
  -d "marca=Axon" \
  -d "modelo=Body 3" \
  -d "estado=mantenimiento" \
  -d "observaciones=Battery replacement needed"
Response Redirects to /bodycams with success message: “Bodycam actualizada exitosamente”

Delete Bodycam

Delete a bodycam record.
DELETE /bodycams/{id}
id
integer
required
Bodycam ID to delete
Response Redirects to /bodycams with success message: “Bodycam eliminada exitosamente”

Bodycam States

The system tracks five possible states for each bodycam:
disponible
state
Available for assignment
entregada
state
Delivered to personnel
perdida
state
Lost or missing
mantenimiento
state
Under maintenance or repair
dada_baja
state
Decommissioned/retired

Model Methods

The Bodycam model provides several helper methods:

Check Availability

$bodycam->estaDisponible() // Returns true if state is 'disponible'
$bodycam->estaEntregada()  // Returns true if state is 'entregada'

Change State

$bodycam->marcarComoEntregada()   // Sets state to 'entregada'
$bodycam->marcarComoDisponible()  // Sets state to 'disponible'
$bodycam->marcarComoPerdida()     // Sets state to 'perdida'

Get Formatted Data

$bodycam->estado_formateado    // Returns human-readable state name
$bodycam->codigo_completo       // Returns "CODE - SERIAL_NUMBER"

Query Scopes

Bodycam::disponibles()->get()              // Only available bodycams
Bodycam::entregadas()->get()               // Only delivered bodycams
Bodycam::porCodigo('BC001')->get()         // Search by code
Bodycam::porSerie('SN123')->get()          // Search by serial number

Error Codes

400
error
Bad Request - Validation error or missing required fields
401
error
Unauthorized - Authentication required
403
error
Forbidden - Missing permissions (ver-bodycam, crear-bodycam, editar-bodycam, borrar-bodycam)
404
error
Not Found - Bodycam not found
422
error
Unprocessable Entity - Duplicate code/serial or invalid state
For bodycam delivery management, see:
  • POST /entrega-bodycams - Create delivery
  • GET /entrega-bodycams/{id} - View delivery
  • GET /entrega-bodycams/{id}/devolver - Return bodycams
  • GET /entrega-bodycams/exportar/excel - Export deliveries

Models

Bodycam Model

Represents a body-worn camera device. Constants
  • ESTADO_DISPONIBLE = 'disponible'
  • ESTADO_ENTREGADA = 'entregada'
  • ESTADO_PERDIDA = 'perdida'
  • ESTADO_MANTENIMIENTO = 'mantenimiento'
  • ESTADO_DADA_BAJA = 'dada_baja'
Relationships
  • entregasActuales - BelongsToMany EntregaBodycam (current deliveries)
  • entregasHistoricas - BelongsToMany EntregaBodycam (all deliveries)
  • detalleEntregas - HasMany DetalleEntregaBodycam
  • detalleDevoluciones - HasMany DetalleDevolucionBodycam
Source Code Reference Controller: app/Http/Controllers/BodycamController.php:1-114 Model: app/Models/Bodycam.php:1-132

Build docs developers (and LLMs) love