Pular para o conteúdo

Endpoints de Transferência de Lotes

A API de Transferência de Lotes gerencia a movimentação de populações de camarão entre tanques. Isso é essencial para operações de repicagem, remanejamento ou divisão de lotes.


Cria um novo registro de transferência entre tanques.

POST /api/v1/transfers/
Authorization: Bearer {token}
Content-Type: application/json
{
"batch_id": "batch-uuid",
"from_pond_id": "pond-uuid-1",
"to_pond_id": "pond-uuid-2"
}
CampoTipoObrigatórioDescrição
batch_idUUIDID do lote sendo transferido
from_pond_idUUIDID do viveiro de origem
to_pond_idUUIDID do viveiro de destino
transfer_datedateData da transferência (padrão: dia atual)
population_countintegerPopulação no momento (calculado se omitido)
avg_weightnumberPeso médio (calculado se omitido)
{
"id": "transfer-uuid",
"batch_id": "batch-uuid",
"farm_id": "farm-uuid",
"from_pond_id": "pond-uuid-1",
"to_pond_id": "pond-uuid-2",
"population_count": 50000,
"avg_weight": 8.5,
"biomass_kg": 425.0,
"transfer_date": "2026-02-15T10:30:00Z",
"performed_by": "Joao Silva",
"accumulated_feed_kg": 340.0,
"accumulated_feed_cost": 5100.0,
"accumulated_operational_cost": 1200.0,
"days_in_previous_pond": 45,
"created_at": "2026-02-15T10:35:00Z"
}

Obtém detalhes de uma transferência específica.

ParâmetroTipoDescrição
idintegerID da transferência
GET /api/v1/transfers/1
Authorization: Bearer {token}
{
"id": 1,
"source_pond": {
"id": 1,
"name": "Tanque A1"
},
"destination_pond": {
"id": 2,
"name": "Tanque A2"
},
"batch": {
"id": 5,
"name": "Lote 2026-A"
},
"quantity": 50000,
"average_weight": 8.5,
"biomass_transferred": 425.0,
"transfer_date": "2026-02-15T10:30:00Z",
"reason": "Repicagem",
"notes": "Transferência para reduzir densidade",
"created_at": "2026-02-15T10:35:00Z",
"created_by": {
"id": 1,
"name": "João Silva"
}
}

Atualiza um registro de transferência existente.

ParâmetroTipoDescrição
idintegerID da transferência
PUT /api/v1/transfers/1
Authorization: Bearer {token}
Content-Type: application/json
{
"quantity": 48000,
"notes": "Atualizado: mortalidade de 2000 durante transferência"
}
{
"id": 1,
"quantity": 48000,
"notes": "Atualizado: mortalidade de 2000 durante transferência",
"updated_at": "2026-02-15T11:00:00Z"
}

Exclui um registro de transferência.

ParâmetroTipoDescrição
idintegerID da transferência
DELETE /api/v1/transfers/1
Authorization: Bearer {token}

Lista todas as transferências de um lote específico.

ParâmetroTipoDescrição
batch_idintegerID do lote
ParâmetroTipoDescrição
skipintegerRegistros a pular (paginação)
limitintegerMáximo de registros (padrão: 100)
GET /api/v1/transfers/batch/5?skip=0&limit=50
Authorization: Bearer {token}
{
"items": [
{
"id": 1,
"from_pond_id": "pond-uuid-1",
"to_pond_id": "pond-uuid-2",
"population_count": 50000,
"avg_weight": 8.5,
"biomass_kg": 425.0,
"transfer_date": "2026-02-15T10:30:00Z",
"performed_by": "Joao Silva"
}
],
"total": 1,
"skip": 0,
"limit": 50
}

Obtém o histórico completo de movimentação de um lote.

ParâmetroTipoDescrição
batch_idintegerID do lote
GET /api/v1/transfers/batch/5/history
Authorization: Bearer {token}
{
"batch_id": 5,
"batch_name": "Lote 2026-A",
"total_transfers": 3,
"total_quantity_moved": 150000,
"history": [
{
"id": 1,
"date": "2026-02-15T10:30:00Z",
"from": "Tanque A1",
"to": "Tanque A2",
"quantity": 50000,
"average_weight": 8.5,
"reason": "Repicagem"
},
{
"id": 2,
"date": "2026-03-01T08:00:00Z",
"from": "Tanque A2",
"to": "Tanque A3",
"quantity": 50000,
"average_weight": 12.0,
"reason": "Remanejamento"
}
],
"current_locations": [
{
"pond_id": 2,
"pond_name": "Tanque A2",
"quantity": 45000
},
{
"pond_id": 3,
"pond_name": "Tanque A3",
"quantity": 48000
}
]
}

{
"batch_id": "batch-uuid",
"from_pond_id": "pond-uuid-1",
"to_pond_id": "pond-uuid-2"
}
{
"batch_id": "batch-uuid",
"from_pond_id": "pond-uuid-3",
"to_pond_id": "pond-uuid-4",
"avg_weight": 15.0
}

CódigoDescrição
400Dados de transferência inválidos
404Transferência, lote ou tanque não encontrado
409Conflito - quantidade excede população disponível
422Erro de validação