Todas as rotas exigem o header x-api-key.
/api/uploadDescrição
Envia um arquivo via multipart/form-data para o bucket OCI.
Request — form-data
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| file | File | sim | Arquivo a ser enviado |
| name | string | não | Nome do objeto no bucket. Padrão: nome original do arquivo |
Response 200
{ "success": true, "objectName": "imagens/foto.jpg" }Exemplo Flutter
import 'dart:io';
import 'package:http/http.dart' as http;
Future<void> uploadFile(File file) async {
final uri = Uri.parse('https://seu-dominio.com/api/upload');
final request = http.MultipartRequest('POST', uri)
..headers['x-api-key'] = 'SUA_API_KEY'
..files.add(await http.MultipartFile.fromPath(
'file',
file.path,
filename: file.uri.pathSegments.last,
));
final response = await request.send();
if (response.statusCode == 200) {
print('Upload realizado com sucesso!');
} else {
print('Erro no upload: ${response.statusCode}');
}
}/api/upload-base64Descrição
Envia um arquivo codificado em base64 via application/json. Aceita base64 puro ou data URL.
Request — JSON body
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | sim | Nome do objeto no bucket |
| data | string | sim | Conteúdo do arquivo em base64 ou data URL |
| content_type | string | não | MIME type. Padrão: application/octet-stream |
Response 200
{ "success": true, "objectName": "imagens/foto.jpg" }Exemplo Flutter
import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;
Future<void> uploadBase64(File file) async {
final uri = Uri.parse('https://seu-dominio.com/api/upload-base64');
final bytes = await file.readAsBytes();
final base64Data = base64Encode(bytes);
final response = await http.post(
uri,
headers: {
'x-api-key': 'SUA_API_KEY',
'Content-Type': 'application/json',
},
body: jsonEncode({
'name': file.uri.pathSegments.last,
'content_type': 'image/jpeg',
'data': base64Data,
}),
);
if (response.statusCode == 200) {
print('Upload realizado com sucesso!');
} else {
print('Erro no upload: ${response.statusCode}');
}
}/api/downloadDescrição
Gera uma URL temporária (Pre-Authenticated Request) para download direto do OCI. Válida por 1 hora.
Query params
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | sim | Nome do objeto no bucket |
Response 200
{ "url": "https://objectstorage...", "expires_at": "2026-05-04T13:00:00.000Z" }Exemplo Flutter
import 'dart:convert';
import 'package:http/http.dart' as http;
Future<String> getDownloadUrl(String objectName) async {
final uri = Uri.parse(
'https://seu-dominio.com/api/download?name=${Uri.encodeComponent(objectName)}',
);
final response = await http.get(
uri,
headers: {'x-api-key': 'SUA_API_KEY'},
);
final body = jsonDecode(response.body);
return body['url']; // URL temporária válida por 1 hora
}