API

Utilizza gli endpoint di Citylog per estrarre dati e valori.

🔰 Quickstart

Per testare velocemente le API pubbliche (no-auth) puoi usare direttamente /rifiuti/no-auth o altri endpoint GET.

1. Ottieni segnalazioni (NO AUTH)
GET /rifiuti/no-auth?city=Brescia
curl -X GET "https://api.citylog.cloud/rifiuti/no-auth?city=Brescia"
2. Invia una segnalazione (API key)
POST /api/reports/
curl -X POST "https://api.citylog.cloud/api/reports/" \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"latitude":45.46421,"longitude":9.19001,"type":"rifiuti","image_url":"https://..."}'

🔐 Autenticazione

Alcuni endpoint (creazione, modifiche, cancellazioni) richiedono un token di autenticazione. L'autenticazione attuale utilizza token in header: Authorization: Token YOUR_API_KEY.

Esempio header
-H "Authorization: Token YOUR_API_KEY"

Richiedi la chiave via pannello amministrativo dell'associazione o endpoint dedicato (se abilitato).

🔗 Endpoint Principali

Metodo Endpoint Descrizione
GET /rifiuti/no-auth?city=NAME Restituisce segnalazioni pubbliche di rifiuti per città.
GET /piantumazioni/no-auth?city=NAME Elenco piantumazioni segnalate.
GET /tronchi/no-auth?city=NAME Tronchi e ceppaie registrati.
GET /censimento/no-auth?city=NAME Censimento alberi e patrimonio verde.
POST /api/reports/ Crea una nuova segnalazione (richiede token).
Parametri comuni: city (string), lat, lon, radius (metri), limit, offset.

📡 Esempi (curl | Python | JavaScript)

curl -X GET "https://api.citylog.cloud/rifiuti/no-auth?city=Brescia&limit=50"
import requests
r = requests.get("https://api.citylog.cloud/rifiuti/no-auth", params={"city":"Brescia","limit":50})
print(r.json())fetch("https://api.citylog.cloud/rifiuti/no-auth?city=Brescia&limit=50")
  .then(r => r.json()).then(console.log)
curl -X POST "https://api.citylog.cloud/api/reports/" \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"latitude":45.521,"longitude":10.212,"address":"Via Trieste 10","type":"rifiuti","image_url":"https://..."}'import requests, json
headers = {"Authorization":"Token YOUR_API_KEY","Content-Type":"application/json"}
payload = {"latitude":45.521,"longitude":10.212,"address":"Via Trieste 10","type":"rifiuti","image_url":"https://..."}
r = requests.post("https://api.citylog.cloud/api/reports/", headers=headers, json=payload)
print(r.status_code, r.json())fetch("https://api.citylog.cloud/api/reports/", {
  method:"POST",
  headers:{"Authorization":"Token YOUR_API_KEY","Content-Type":"application/json"},
  body: JSON.stringify({"latitude":45.521,"longitude":10.212,"address":"Via Trieste 10","type":"rifiuti","image_url":"https://..."})
}).then(r=>r.json()).then(console.log)

▶️ Try it (GET pubblico)

Esegui rapidamente una richiesta GET pubblica (NO AUTH). Inserisci la città (es. Brescia) e premi Invia.

Risultato...

📦 Strutture di risposta (JSON)

Esempio di oggetto segnalazione restituito da /rifiuti/no-auth e endpoint analoghi:

{
  "id": 1022,
  "latitude": 45.521002,
  "longitude": 10.212443,
  "address": "Via Trieste, Brescia",
  "type": "rifiuti",
  "image_url": "https://citylog.cloud/img/abc123.jpg",
  "timestamp": "2025-01-22T13:20:10Z",
  "tags": ["ingombrante","tessili"],
  "zone": "Centro"
}
Campi aggiuntivi: verified (bool), accuracy (metri), source (app/web).

❗ Errori & Rate limits

400Bad Request — parametri mancanti o invalidi.
401Unauthorized — token mancante o non valido.
404Not Found — risorsa inesistente.
429Too Many Requests — superati i limiti. Attendere e riprovare.
500Internal Server Error — problema lato server.
Rate limits
Limite pubblicato (esempio): 60 req/min per IP per endpoint no-auth; limiti più stringenti per endpoint autenticati.

📘 Best Practices

  • Usa sempre HTTPS per tutte le chiamate.
  • Evita polling intensivo: usa caching e query con limit e offset.
  • Per integrazioni, richiedi una API key e usa header di autorizzazione.
  • Filtra per bounding box o radius per ridurre payload.
  • Rispetta la privacy: non esporre dati personali; le immagini devono rispettare le policy del progetto.