Skip to content

Arquivos

Diversos serviços nossos esperam receber documentos para que a análise seja realizada. O envio destes pode ser realizado de três maneiras:

  1. Multipart - form-data

O arquivo pode ser enviado na requisição como "multipart/form-data". Essa maneira é a mais recomendada e pode ser facilmente implementada nas diversas linguagens e ferramentas.

shell
curl --request POST \
  --url 'https://example-url.nxcd.app/endpoint' \
  --header 'Authorization: ApiKey <TOKEN>' \
  --header 'Content-Type: multipart/form-data' \
  --form 'frente=@/documento-frente-exemplo.jpg' \
  --form 'verso=@/documento-verso-exemplo.jpg'
js
const form = new FormData();
form.append("frente", "./documento-frente-exemplo.jpg");
form.append("verso", "./documento-verso-exemplo.jpg");

const options = {
  method: 'POST',
  headers: {
    'Content-Type': 'multipart/form-data; boundary=---011000010111000001101001',
    Authorization: 'ApiKey <TOKEN>'
  }
};

options.body = form;

fetch('https://example-url.nxcd.app/endpoint', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
js
import axios from "axios";

const form = new FormData();
form.append("frente", "./documento-frente-exemplo.jpg");
form.append("verso", "./documento-verso-exemplo.jpg");

const options = {
  method: 'POST',
  url: 'https://example-url.nxcd.app/endpoint',
  params: {
  },
  headers: {
    'Content-Type': 'multipart/form-data; boundary=---011000010111000001101001',
    Authorization: 'ApiKey <TOKEN>'
  },
  data: '[form]'
};

axios.request(options).then(function (response) {
  console.log(response.data);
}).catch(function (error) {
  console.error(error);
});
python
import requests

url = "https://example-url.nxcd.app/endpoint"

querystring = {}

payload = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"frente\"; filename=\"documento-frente-exemplo.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"verso\"; filename=\"documento-verso-exemplo.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n\r\n-----011000010111000001101001--\r\n"
headers = {
    "Content-Type": "multipart/form-data; boundary=---011000010111000001101001",
    "Authorization": "<TOKEN>"
}

response = requests.request("POST", url, data=payload, headers=headers, params=querystring)

print(response.text)
elixir
response = HTTPoison.post!(
  "https://example-url.nxcd.app/endpoint",
  {:multipart, [
    {:file, "/documento-frente-exemplo.jpg", {"form-data", [{:name, "frente"}, {:filename, Path.basename("/documento-frente-exemplo.jpg")}]}, []},
    {:file, "/documento-verso-exemplo.jpg", {"form-data", [{:name, "verso"}, {:filename, Path.basename("/documento-verso-exemplo.jpg")}]}, []}
  ]},
  [
    {"Authorization", "ApiKey <TOKEN>"},
    {"Content-Type", "multipart/form-data"}
  ]
)
dart
import 'package:http/http.dart' as http;

void main() async {
  final url = Uri.parse('https://example-url.nxcd.app/endpoint');

  final req = http.MultipartRequest('POST', url)
    ..files.add(await http.MultipartFile.fromPath(
      'frente', '/documento-frente-exemplo.jpg'))
    ..files.add(await http.MultipartFile.fromPath(
      'verso', '/documento-verso-exemplo.jpg'));

  req.headers['Authorization'] = 'ApiKey <TOKEN>';
  req.headers['Content-Type'] = 'multipart/form-data';

  final stream = await req.send();
  final res = await http.Response.fromStream(stream);
  final status = res.statusCode;
  if (status != 200) throw Exception('http.send error: statusCode= $status');

  print(res.body);
}
  1. Base64

O envio pode ser feito através do base64 da imagem original, enviando-o em formato JSON no body da requisição, conforme abaixo:

json
{
  "base64": {
    "arquivo1": "BASE_64_1_AQUI",
    "arquivo2": "BASE_64_2_AQUI"
  }
}
  1. Link Externo - URL

É possível também enviar a URL da imagem e nossos serviços realizarão o download dela. O envio pode ser realizado da seguinte maneira:

json
{
  "urls": {
    "arquivo1": "URL_AQUI",
    "arquivo2": "URL_AQUI"
  }
}

WARNING

Vale ressaltar a importância dos cuidados que devem ser tomados ao utilizar esse formato. Como nosso serviço irá buscar essa imagem, a URL deverá estar pública. Dessa forma, é de extrema importância adicionar políticas de acesso e/ou tempo de expiração para essas URL's, por exemplo. Além disso deve-se compreender que o tempo da requisição será mais longo que nos outros formatos, pois dependerá do tempo de download do arquivo pelo servidor na URL enviada.

Nextcode | Soluções em Verificação de Identidade