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
{
"source_pond_id": 1,
"destination_pond_id": 2,
"batch_id": 5,
"quantity": 50000,
"average_weight": 8.5,
"transfer_date": "2026-02-15T10:30:00Z",
"reason": "Repicagem",
"notes": "Transferência para reduzir densidade"
}
CampoTipoObrigatórioDescrição
source_pond_idintegerID do tanque de origem
destination_pond_idintegerID do tanque de destino
batch_idintegerID do lote sendo transferido
quantityintegerNúmero de animais transferidos
average_weightnumberPeso médio no momento da transferência (g)
transfer_datedatetimeData/hora da transferência (ISO 8601 UTC)
reasonstringMotivo da transferência
notesstringObservações adicionais
{
"id": 1,
"source_pond_id": 1,
"destination_pond_id": 2,
"batch_id": 5,
"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": 1
}

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,
"source_pond_id": 1,
"destination_pond_id": 2,
"quantity": 50000,
"transfer_date": "2026-02-15T10:30:00Z",
"reason": "Repicagem"
}
],
"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
}
]
}

{
"source_pond_id": 1,
"destination_pond_id": 2,
"batch_id": 5,
"quantity": 100000,
"reason": "Repicagem - superlotação",
"notes": "Dividindo lote para manter densidade adequada"
}
{
"source_pond_id": 3,
"destination_pond_id": 4,
"batch_id": 5,
"quantity": 150000,
"average_weight": 15.0,
"reason": "Transferência para engorda",
"notes": "Movendo para tanque de engorda maior"
}

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