Passa al contenuto principale

Newspapers API


Definizione e Scopo​

Newspapers API è un prodotto di Nearby Community che permette a testate giornalistiche registrate e portali di informazione riconosciuti di pubblicare automaticamente le proprie notizie all'interno di Nearby Community.

Il servizio funziona come un webhook: ogni volta che una notizia viene pubblicata (o aggiornata) sul portale della testata, il sistema editoriale invia una richiesta all'endpoint di Nearby Community, che si occupa di indicizzare il contenuto e di renderlo visibile agli utenti in base alla posizione geografica indicata ed alle preferenze in ambito di notizie.

Lo scopo del servizio è quindi duplice:

  • Sincronizzazione in tempo reale — le notizie compaiono nel feed di Nearby Community pochi istanti dopo la pubblicazione, senza necessità di importazioni manuali o di feed RSS interrogati periodicamente.
  • Distribuzione geolocalizzata — ogni notizia viene associata a un luogo, così da essere mostrata prioritariamente agli utenti che si trovano nelle vicinanze o che seguono quell'area.
Attenzione

L'integrazione è push: è la testata a inviare i dati a Nearby Community, che non effettua alcuna operazione di scraping o polling sul sito di origine.

Endpoint​

L'unico endpoint per la pubblicazione delle notizie su Nearby Community è definito come:

	https://webhooks.nearbycommunity.it/newspapers_webhook/submit
ValoreSignificato
MetodoPOST
ProtocolloHTTPS
Content-Typeapplication/json
CharsetUTF-8
Importante

Ogni richiesta deve contenere una sola notizia. Per pubblicare più notizie è necessario effettuare più chiamate, una per ciascun articolo.


Autenticazione​

Per la riuscita della connessione al servizio è necessario autenticarsi mediante Headers con la key x-newspapers-authorization come di seguito:

	{
"Content-Type": "application/json; charset=UTF-8",
"x-newspapers-authorization": "LA_TUA_API_KEY"
}
Attenzione

La API KEY viene rilasciata da Nearby Community in fase di attivazione della testata ed è univoca per ogni editore: è tramite questa chiave che il sistema riconosce l'autore della notizia e la associa all'account corretto.

Attenzione

La API KEY è un dato riservato. Non deve essere inserita in codice lato client (JavaScript di frontend, app mobile, repository pubbliche) e va utilizzata esclusivamente da server a server. In caso di compromissione è necessario richiederne immediatamente la revoca e la sostituzione tramite una mail a support@nearbycommunity.it.

Attenzione

Se l'header è assente, malformato o contiene una chiave non valida o revocata, la richiesta viene rifiutata automaticamente.


Parametri​

I parametri da inviare vengono inviati tramite un body json come di seguito:

	{
"newspaper_url": string,
"newspaper_image": string,
"newspaper_title": string,
"newspaper_text": string,
"newspaper_location": string
}
Attenzione

Tutti i campi sono obbligatori e non possono essere vuoti o falsy.

Campo newspaper_url​

Deve puntare alla pagina pubblica dell'articolo. Poiché il valore funge da chiave univoca, l'invio di una notizia con un URL già presente aggiorna il contenuto esistente anziché crearne uno nuovo: è quindi la modalità corretta per propagare correzioni e aggiornamenti.

Esempio​
	"newspaper_url": "https://www.esempio.it/cronaca/nuova-ciclabile-corso-italia"

Campo newspaper_image​

L'url dell'immagine dell'articolo, deve essere raggiungibile pubblicamente (nessuna autenticazione, nessun blocco) e servita in HTTPS. Sono ammessi i formati jpg, jpeg, png e webp.

Esempio​
	"newspaper_image": "https://www.esempio.it/media/ciclabile.jpg"
Attenzione

Un URL immagine non raggiungibile non blocca la pubblicazione, ma penalizza la resa della notizia nel feed e la sposta più in basso.

Campo newspaper_title​

Il titolo dell'articolo, testo semplice senza tag HTML e senza entità codificate

Esempio​
	"newspaper_title": "Inaugurata la nuova pista ciclabile di Corso Italia"

Campo newspaper_text​

Un estratto dell'articolo, testo semplice senza tag HTML e senza entità codificate. Non è necessario trasmettere l'intero articolo: è sufficiente e consigliato inviare l'anteprima, poiché la lettura completa avviene sul sito della testata, reindirizzato tramite newspaper_url.

Esempio​
	"newspaper_text": "Il taglio del nastro si è tenuto questa mattina alla presenza del sindaco. Il tratto collega la stazione al centro storico per un totale di 3,2 chilometri."

Campo newspaper_location​

Formato con Indirizzo o Città​

È possibile inserire direttamente il nome della città o l'indirizzo del luogo, in questo modo il server di Nearby Community effettua un reverse geocoding ed assegna direttamente le coordinate alla notizia in modo da visualizzarla correttamente nella mappa

Esempio​
	"newspaper_location": "Milano, MI"
	"newspaper_location": "Piazza del Duomo, Milano, MI"
	"newspaper_location": "Piazza del Duomo 43, Milano, MI"

Formato con Coordinate​

È possibile inserire direttamente una stringa contente le coordinate in formato "longitudine,latitudine" avente come separatore la virgola ",". È permesso usare i simboli "+" e "-" per identificare coordinate positive o negative, non sono ammessi spazi, lettere o altri simboli.

Esempio​
	"newspaper_location": "9.1900,45.4642"
Importante

Il formato con le coordinate è preferibile, in quanto evita le ambiguità tra i toponimi e garantisce il posizionamento preciso sulla mappa

Invio della richiesta con cURL​

	curl -X POST https://webhooks.nearbycommunity.it/newspapers_webhook/submit \
-H "Content-Type: application/json" \
-H "x-newspapers-authorization: LA_TUA_API_KEY" \
-d '{
"newspaper_url": "https://www.esempio.it/cronaca/nuova-ciclabile-corso-italia",
"newspaper_image": "https://www.esempio.it/media/ciclabile.jpg",
"newspaper_title": "Inaugurata la nuova pista ciclabile di Corso Italia",
"newspaper_text": "Il taglio del nastro si è tenuto questa mattina alla presenza del sindaco. Il tratto collega la stazione al centro storico per un totale di 3,2 chilometri.",
"newspaper_location": "9.1900,45.4642"
}'

Risposta​

La risposta che si riceve dal server è di tipo:

	{
response: 'success' | 'no-data' | 'error',
data: string | null,
message?: string | null
}

Proprietà response​

ValoreSignificato
successLa richiesta è stata eseguita correttamente e la risposta è valida
no-dataNon sono stati forniti sufficienti dati per l'esecuzione della richiesta
errorSi è verificato un errore nel server o nella richiesta

Proprietà data​

ValoreSignificato
stringID univoco della notizia appena creata sul server
nullIn caso di response: no-data oppure response error

Proprietà message​

Campo opzionale che descrive l'esito in forma leggibile. È tipicamente valorizzato nei casi no-data ed error, dove indica il motivo del mancato inserimento, e va utilizzato per il logging lato editore, o per, eventualmente richiedere assistenza.

ValoreSignificato
undefinedValore ottimale, tutto è stato eseguito correttamente
nullValore ottimale, tutto è stato eseguito correttamente
error-missing-authenticationEsiste un problema con l'autenticazione, potrebbe essere un problema di header oppure di api key errata
error-missing-urlValore per newspaper_url mancante, impossibile procedere con la richiesta
error-missing-imageValore per newspaper_image mancante, impossibile procedere con la richiesta
error-missing-titleValore per newspaper_title mancante, impossibile procedere con la richiesta
error-missing-textValore per newspaper_text mancante, impossibile procedere con la richiesta
error-missing-locationValore per newspaper_location mancante, impossibile procedere con la richiesta
error-genericValore che indica un errore generico lato server

Gestione Retry​

In caso di risposta no-data, error, o di mancata risposta del server, ripetere la chiamata con un ritardo progressivo (ad esempio 5s, 30s, 5 minuti) anziché insistere immediatamente. Il server tende a blacklistare chiamate identiche simultaee o immediatamente sucessive.

Importante

Conservare response, data e message di ogni chiamata semplifica la diagnosi di eventuali notizie non comparse nel feed.