Upload de Evidências
Este guia descreve como realizar o upload de evidências associadas a uma venda para as concessionárias.
🔐 Autenticação
A API exige autenticação via token JWT no cabeçalho:
Authorization: Bearer {token}
📬 Endpoint
PUT /sales/{saleId}/evidences
Content-Type: application/json
Authorization: Bearer {token}
Substitua
{saleId}
pelo ID da venda retornado na criação da venda (NewSale).
📥 Corpo da Requisição
Exemplo de Requisição para Upload de Documento
{
"fileName": "documento.pdf",
"fileFormat": "application/pdf",
"type": "application/pdf",
"evidenceType": "DOC_CONTRATANTE"
}
Exemplo de Requisição para Upload de Áudio
{
"fileName": "audio.mp3",
"fileFormat": "audio/mpeg",
"type": "audio/mpeg",
"evidenceType": "POV"
}
Campos
Campo | Tipo | Obrigatório | Descrição |
---|---|---|---|
fileName | string | Sim | Nome do arquivo que será enviado. |
fileFormat | string | Sim | Formato do arquivo (ex: application/pdf , audio/mpeg ). |
type | string | Sim | Tipo técnico do arquivo (application/pdf , audio/mpeg ). |
evidenceType | string | Sim* | Tipo de evidência (veja abaixo). Obrigatório para o grupo NEOENERGIA. |
Valores válidos para evidenceType
POV
– Áudio do contratanteAUT
– Áudio do responsável financeiroDOC_CONTRATANTE
– Documento do contratante (PDF)DOC_RESPONSAVEL_FINANCEIRO
– Documento do responsável financeiro (PDF)
O campo
evidenceType
é obrigatório para vendas vinculadas ao grupo NEOENERGIA.🧾 Exemplo de Requisição
POST /sales/5e9183cb-56c3-4f03-8bbf-f3b12e932ab8/evidences
{
"fileName": "rg_contratante.pdf",
"fileFormat": "application/pdf",
"type": "application/pdf",
"evidenceType": "DOC_CONTRATANTE"
}
📤 Resposta de Sucesso
{
"id": "5cd9efc2-ceeb-4a10-84e8-0a9b737c1081",
"url": "https://url.amazonaws.com/",
"fields": {
"bucket": "bucket",
"X-Amz-Algorithm": "AWS4-HMAC-SHA256",
"X-Amz-Credential": "ASIASaooaslN3FIDY/20250616/sa-east-1/s3/aws4_request",
"X-Amz-Date": "20250616T152103Z",
"X-Amz-Security-Token": "IQoJb3JpZ2lasdkodaskdsa2AC7imGYU0Ma55UCv6HUnclMaBn/7+cEhTV81QcngIhALOF9QYG+gjZMMPjn8z9Irvoaksoksa1MzExMzIxIgzdYTzzjYDsyD0M+gAqjAMFy7MmQelgMeaoksoasmvfM3LkYUIsvtzF8dOatFWsMDeNJ37mqCuGS+Mn7DUJpiryOhkyc+Y+dyzP1as8AUxQ8apsppsapsgxgJiKMb+zg0JLEDax1RQ8re1mfasasCW5oLDSDi9NyVfo/D4gE2nBVQwsBqjwm5/X89edqjidHasdCjmQFOuj9oc9xR3KoKSNUePwU4n8VvBsKFJyHJNtBElrzePGUdd/kUehfaz9NnPXy/tVUxskv2CA7yLvYadNgQoAj9y5+F5rWXR4ZVczwXmEYcsLxG0IhJgs9tmMPG6JvT5rOCGalYqs9oMeYadFWcg/i7JDYxZ2nY1laaqLUwoOrAwgY6nAGJ6l+y8fp18ejl4w8USAF9raddadakdhvboMi5Tmoq00Kct5PdGgKjdo1aJz9TGrOOwfHT6bEU5AgSwHsAFNHHjXKRg9+SCN53zXGs5bnaddadadShh44qR7m88cTylAblypGQRZMKwDT9oWDXcIVWru0StVVhkP+TPo8Q6rM=",
"key": "3/0197794c-c6bd-7fff-a396-cd46234220/0197794f-1036-7555-b55c-916215c78e2e/test_mp3_pov.mp3",
"Policy": "eyJleHBpcmF0aW9uIjoiMjAyNS0123323aXRpb25zIjpbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsMCwxMDQ4NTc2MF0seyJhY2wiOiJwcml2YXRlIn0seyJidWNrZXQiOiJtb3Rvci1yY2UtbWFuYWdlci12Mi1kZXZlbG9wLXVzZXItZmlsZXMtYXJFhczhBVXhROGtFWGhzS3hReHhnSmNIQ1V6b3p2UnV6V2112323RURheDFSUThyZTFtZkFjbVhLWDJCUkNXNW9MRFNEaTlOeVZmby9ENGdFMm5CVlF3c0JxandtNS9YODllZHFqaUd2MFhXa1232321krRTh0UWNXemhjWThuRXlBVTlPYkVjeCtTczVDZk5WWVBMbkVmaWRIcWw2UmVaNXlnRmlsUkNqbVFGT3VqOW9jOXhSM0tvS111232zS0ZKeUhKTnRCRWxyemVQR1VkZC9rVWVoZmF6OU5uUFh5L3RWVXhza3YyVzTUx0OFBXWFJXZDVHRXI2dDFFQlpTaGg0NHFSN204OGNUeWxBYmx5cEdRUlpNS3dEVDlvV0RYY0lWV3J1MF1Yy05MTYyMTVjNzhlMmUvdGVzdF9tcDNfcG92Lm1wMyJ9XX0=",
"X-Amz-Signature": "ce1076eab82c7d112323e69601a5ae61040e13e08f49a2d141751"
}
}
❌ Erros Comuns
Código | Motivo |
---|---|
400 | Corpo da requisição ausente ou inválido |
400 | Parâmetro saleId não informado |
400 | Campo evidenceType ausente para vendas do grupo NEOENERGIA |
404 | Venda não encontrada |
📌 Observações
- Cada concessionária solicita os documentos que julgam ser necessários para efetuar uma venda:
Concessionária | Documentos |
---|---|
CPFL | POV, AUT (Caso responsável financeiro seja diferente do contratante) |
NEOENERGIA | DOC_CONTRATANTE, POV |
O upload real deve ser feito para o bucket S3 com os dados gerados pela api de evidencias chamada anteriormente e um registro da evidência será armazenado na base com os metadados fornecidos..
Exemplo de upload para o s3 utilizando os dados fornecidos anteriormente
Exemplo de uso dos dados acima para enviar os dados para um bucket s3.
curl --location '{{url}}' \
--form 'bucket="{{fields.bucket}}"' \
--form 'X-Amz-Algorithm="{{fields.X-Amz-Algorithm}}"' \
--form 'X-Amz-Credential="{{fields.X-Amz-Credential}}"' \
--form 'X-Amz-Date="{{fields.X-Amz-Date}}"' \
--form 'X-Amz-Security-Token="{{fields.X-Amz-Security-Token}}"' \
--form 'key="{{fields.key}}"' \
--form 'Policy="{{fields.Policy}}"' \
--form 'acl="private"' \
--form 'X-Amz-Signature="{{fields.X-Amz-Signature}}"' \
--form '"file=@/path/to/yourfile.mp3"'
🛠️ Suporte
Entre em contato com o time responsável pela API de vendas caso surjam dúvidas ou problemas com o upload.