L'API CAF Jesi Carico Gestionale consente l'upload sicuro di file CSV contenenti dati di carichi di merce e relative DDT di accompagno. Questo documento fornisce tutte le informazioni tecniche necessarie per sviluppare un client di integrazione.
L'API utilizza un sistema di autenticazione basato su API Key. La chiave deve essere fornita in ogni richiesta.
Per ottenere le chiavi API valide:
Le chiavi API hanno il seguente formato:
your-api-key-here-1234567890abcdef| Parametro | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
api_key |
string | ✅ Sì | Chiave di autenticazione API |
file |
file | ✅ Sì | File CSV da caricare (max 10MB) |
description |
string | ❌ No | Descrizione opzionale del file |
multipart/form-dataPOST.csv,)text/csv, text/plain, application/csvCodice_Carico,Data_Carico,Destinatario,Peso_Kg,Numero_DDT,Data_DDT
C001,2025-01-15,Azienda XYZ Srl,1250.5,DDT001,2025-01-15
C002,2025-01-15,Ditta ABC Snc,890.0,DDT002,2025-01-15
{
"success": true,
"message": "File caricato con successo",
"data": {
"filename": "carichi_20250724_143022_a1b2c3d4.csv",
"original_name": "carichi.csv",
"size": 2048,
"description": "Carichi gennaio 2025",
"upload_path": "/path/to/uploads/carichi_20250724_143022_a1b2c3d4.csv",
"upload_time": "2025-07-24 14:30:22"
},
"timestamp": "2025-07-24 14:30:22"
}
{
"success": false,
"error": "Descrizione dell'errore",
"timestamp": "2025-07-24 14:30:22"
}
| Codice | Significato | Azione Consigliata |
|---|---|---|
| 200 | Successo | Operazione completata |
| 400 | Errore validazione | Verificare formato file/parametri |
| 401 | Autenticazione fallita | Verificare API key |
| 405 | Metodo non supportato | Utilizzare POST |
| 500 | Errore server | Riprovare più tardi |
<?php
function uploadFileToCAF($filePath, $description = '') {
// IMPORTANTE: Sostituire con la chiave API reale ottenuta da CAF Jesi
$apiKey = $_ENV['CAF_API_KEY'] ?? 'your-api-key-here';
$apiUrl = 'https://caricogestionale.caf-jesi.it/api.php';
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $apiUrl,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => [
'api_key' => $apiKey,
'file' => new CURLFile($filePath),
'description' => $description
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_SSL_VERIFYPEER => true
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return [
'http_code' => $httpCode,
'response' => json_decode($response, true)
];
}
// Utilizzo
$result = uploadFileToCAF('/path/to/carichi.csv', 'Carichi gennaio 2025');
if ($result['response']['success']) {
echo "Upload completato: " . $result['response']['data']['filename'];
} else {
echo "Errore: " . $result['response']['error'];
}
?>
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class CAFApiClient
{
private readonly HttpClient _httpClient;
private readonly string _apiKey = "caf-jesi-2025-api-key-1234567890abcdef";
private readonly string _apiUrl = "https://caricogestionale.caf-jesi.it/api.php";
public CAFApiClient()
{
_httpClient = new HttpClient();
}
public async Task<ApiResponse> UploadFileAsync(string filePath, string description = "")
{
using var form = new MultipartFormDataContent();
form.Add(new StringContent(_apiKey), "api_key");
form.Add(new StringContent(description), "description");
var fileContent = new ByteArrayContent(File.ReadAllBytes(filePath));
fileContent.Headers.ContentType =
new System.Net.Http.Headers.MediaTypeHeaderValue("text/csv");
form.Add(fileContent, "file", Path.GetFileName(filePath));
var response = await _httpClient.PostAsync(_apiUrl, form);
var jsonResponse = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<ApiResponse>(jsonResponse);
}
}
public class ApiResponse
{
public bool Success { get; set; }
public string Message { get; set; }
public string Error { get; set; }
public FileData Data { get; set; }
public DateTime Timestamp { get; set; }
}
import requests
import json
class CAFApiClient:
def __init__(self):
self.api_key = "caf-jesi-2025-api-key-1234567890abcdef"
self.api_url = "https://caricogestionale.caf-jesi.it/api.php"
def upload_file(self, file_path, description=""):
"""
Carica un file CSV tramite API
Args:
file_path (str): Percorso del file CSV
description (str): Descrizione opzionale
Returns:
dict: Risposta dell'API
"""
try:
with open(file_path, 'rb') as file:
files = {'file': file}
data = {
'api_key': self.api_key,
'description': description
}
response = requests.post(
self.api_url,
data=data,
files=files,
timeout=30
)
return {
'status_code': response.status_code,
'response': response.json()
}
except requests.exceptions.RequestException as e:
return {
'status_code': 0,
'error': str(e)
}
# Utilizzo
client = CAFApiClient()
result = client.upload_file('/path/to/carichi.csv', 'Carichi gennaio 2025')
if result['response']['success']:
print(f"Upload completato: {result['response']['data']['filename']}")
else:
print(f"Errore: {result['response']['error']}")
{"success": false, "error": "Chiave API non valida o mancante."}
api_key{"success": false, "error": "Estensione file non consentita. Estensioni consentite: csv"}
.csvUtilizzare una logica di retry per errori temporanei con backoff esponenziale.
Validare il file localmente prima dell'upload per ridurre errori API.
Implementare logging dettagliato per debug e monitoraggio operazioni.
Per verificare che l'API sia attiva:
Un file CSV di esempio è disponibile: