Developers

Connettore di dati#

Il connettore di dati popola un sito NAMES LEGAL con dati che esistono già altrove, senza codice da parte del titolare del sito. Il titolare collega una fonte nella propria console (Integrazioni → Importa i miei dati), collega le colonne ai campi trascinandole, esegue una prova e avvia. Le fonti possono essere file o un'API — la Sua.

Questa pagina è per gli sviluppatori di applicazioni che desiderano diventare una fonte: cosa si aspetta NAMES LEGAL dalla Sua API e come rendere automatico il collegamento.

Come il connettore legge la Sua API#

Il titolare del sito inserisce:

  • l'indirizzo della Sua API,
  • una modalità di autenticazione e il relativo secret,
  • facoltativamente, dove si trova l'elenco nella Sua risposta (data.items).

NAMES LEGAL chiama quindi la Sua API tramite HTTPS con GET, segue la paginazione e trasforma ogni oggetto in una scheda. Gli oggetti annidati vengono appiattiti (author.name), gli elenchi di valori semplici vengono uniti con virgole.

Autenticazione#

Modalità Cosa viene inviato
Nessuna niente
Chiave in un'intestazione <Header-Name>: <key> (predefinito X-API-Key)
Chiave nell'indirizzo ?<param>=<key> (predefinito api_key)
Token Bearer Authorization: Bearer <token>
Nome utente e password Authorization: Basic …

I secret vengono memorizzati crittografati e non vengono più mostrati nella console. Fornisca ai titolari dei siti una chiave di sola lettura limitata al contenuto pubblicato: il connettore legge soltanto.

Individuazione dell'elenco#

Se non viene fornito alcun percorso, il connettore utilizza, in ordine: l'array items, quindi il primo array di oggetti trovato nella risposta. Funziona anche un semplice array JSON.

Paginazione#

Uno qualsiasi dei seguenti metodi viene seguito automaticamente, fino a 200 pagine:

  • un'intestazione HTTP Link: <…>; rel="next";
  • un URL della pagina successiva nel corpo: next, next_url, next_page_url, links.next, meta.next, pagination.next;
  • un cursore nel corpo: next_cursor, meta.next_cursor, pagination.next_cursor — rinviato come ?cursor=.

Si interrompe restituendo un elenco vuoto o nessun link successivo.

Limiti#

  • 5.000 schede per set di dati e sincronizzazione.
  • 10 MB per risposta, 15 secondi per richiesta.
  • Gli indirizzi devono essere pubblici: indirizzi privati e di rete locale vengono rifiutati, reindirizzamenti inclusi. In caso di reindirizzamento verso un altro host, la Sua chiave non viene inoltrata.

Il formato feed di NAMES LEGAL#

Esponga i Suoi dati in questo formato e il titolare del sito non avrà nulla da collegare: ogni raccolta diventa un set di dati già collegato alla sezione corrispondente del sito.

1. Un indice#

GET https://app.example.com/api/names-legal/
{
  "names_legal_feed": 1,
  "collections": {
    "team": "https://app.example.com/api/names-legal/team/",
    "services": "https://app.example.com/api/names-legal/programmes/",
    "blog": "https://app.example.com/api/names-legal/news/"
  }
}

I nomi delle raccolte sono le chiavi di sezione elencate nel riferimento dei campi più sotto (team, services, blog, events, faq, jobs…). Gli URL possono essere relativi all'indice.

2. Un elenco per ciascuna raccolta#

{
  "items": [
    {
      "id": "T-104",
      "first_name": "Awa",
      "last_name": "Diop",
      "position": "Mathematics teacher",
      "short_bio": "Twelve years of teaching.",
      "profile_image": "https://app.example.com/media/staff/104.jpg",
      "email": "a.diop@example.com"
    }
  ],
  "next": null
}

Regole:

  • id — un identificatore stabile, diverso per ogni scheda. È ciò che permette a una scheda modificata di aggiornare la stessa voce invece di crearne una nuova.
  • I nomi dei campi sono quelli del riferimento dei campi.
  • I campi tradotti hanno una chiave per ogni lingua: title_fr, title_en, description_de… Una chiave senza suffisso va alla lingua predefinita del sito.
  • Immagini e file sono URL pubblici. Vengono scaricati una volta e scaricati di nuovo solo quando l'URL cambia. I link di condivisione di Google Drive e Dropbox sono accettati.
  • Le categorie sono indicate per nome ("category": "Bachelor"); le categorie mancanti vengono create.
  • Le date sono in ISO 8601. I booleani sono true/false.
  • I campi di testo formattato accettano HTML; viene ripulito (nessuno script, nessun gestore di eventi). Il testo semplice diventa paragrafi.
  • Restituisca solo ciò che può essere pubblicato: bozze e dati privati non dovrebbero comparire nel feed.

Mantenere il sito aggiornato#

Il titolare del sito sceglie, per ciascuna sezione:

Opzione Effetto
Ogni ora / ogni giorno NAMES LEGAL legge la Sua API secondo una pianificazione.
Solo su richiesta Un pulsante nella console.
Webhook Lei chiama l'indirizzo webhook del sito dopo ogni modifica: sincronizzazione entro un minuto. Veda Webhook.

Scelgono inoltre cosa succede quando una scheda è cambiata da entrambe le parti (vincono i Suoi dati, vince il sito, oppure viene chiesto), e cosa succede quando una scheda scompare dal Suo feed (eliminazione dal sito, occultamento, o conservazione). Una sincronizzazione che rimuoverebbe una quota rilevante di una sezione si interrompe e chiede prima conferma.

La scrittura verso la Sua applicazione ("il mio sito → la mia fonte") non è ancora disponibile: il connettore legge soltanto.

Riferimento dei campi#

Generato direttamente dalla piattaforma; è sempre aggiornato. I campi obbligatori devono essere presenti in ogni scheda (per un campo tradotto, in almeno una lingua).

Dimensione della squadra team

CampoTipo di campoObbligatorioUno per lingua
first_name
Nome
text ≤ 100
last_name
Cognome
text ≤ 100
position
Posizione
text ≤ 150
short_bio
Breve biografia
longtext ≤ 300
bio
Bio
html
profile_image
Immagine del profilo
image ≤ 100
email
E-mail
email ≤ 254
phone
Telefono
text ≤ 20
linkedin
Linkedin
url ≤ 200
website
Sito web personale
url ≤ 200
specialties
Specializzazioni
text ≤ 200
education
Istruzione
text ≤ 200
location
Posizione
text ≤ 100
years_experience
Anni di esperienza
int
order
Ordine
int

Servizi services

CampoTipo di campoObbligatorioUno per lingua
title
Titolo
text ≤ 100 title_fr, title_en
description
Descrizione
longtext description_fr, description_en
icon
Icona
text ≤ 50
category
Categoria
category
is_featured
Servizio in evidenza
bool
order
Ordine
int

Progetti projects

CampoTipo di campoObbligatorioUno per lingua
title
Titolo
text ≤ 150 title_fr, title_en
description
Descrizione breve
longtext description_fr, description_en
detailed_description
Descrizione dettagliata
html detailed_description_fr, detailed_description_en
category
Categoria
category
image
Immagine in evidenza
image ≤ 100
client
Cliente
text ≤ 100 client_fr, client_en
project_date
Data del progetto
text ≤ 20
duration
Durata
text ≤ 50 duration_fr, duration_en
project_url
Url del progetto live
url ≤ 200
technologies
Tecnologie
text ≤ 200 technologies_fr, technologies_en
tags
Tag
text ≤ 200 tags_fr, tags_en
status
Stato
choice ≤ 20
completed, in_progress, on_hold, planning
is_featured
Progetto in evidenza
bool
order
Ordine
int

Blog / notizie blog

CampoTipo di campoObbligatorioUno per lingua
title
Titolo
text ≤ 200 title_fr, title_en
excerpt
Estratto
longtext ≤ 500 excerpt_fr, excerpt_en
content
Contatto
html content_fr, content_en
category
Categoria
category
featured_image
Immagine in evidenza
image ≤ 100
published_date
Data pubblicata
datetime
status
Stato
choice ≤ 20
draft, published, featured
order
Ordine
int

Eventi events

CampoTipo di campoObbligatorioUno per lingua
title
Titolo
text ≤ 200 title_fr, title_en
description
Descrizione
html description_fr, description_en
start_date
Data di inizio
datetime
end_date
Data di fine
datetime
location
Posizione
text ≤ 200 location_fr, location_en
is_online
È online
bool
event_type
Tipo di evento
choice ≤ 20
conference, workshop, webinar, seminar, training, meeting
registration_url
Url di registrazione
url ≤ 200
meeting_url
Incontro url
url ≤ 200
featured_image
Immagine in evidenza
image ≤ 100
is_featured
In evidenza
bool
order
Ordine
int

FAQ faq

CampoTipo di campoObbligatorioUno per lingua
question
Domanda
text ≤ 300 question_fr, question_en
answer
Risposta
html answer_fr, answer_en
category
Categoria
category
is_featured
In evidenza
bool
order
Ordine
int

Offerte di lavoro jobs

CampoTipo di campoObbligatorioUno per lingua
title
Titolo della posizione
text ≤ 200
category
Categoria
category
description
Descrizione della posizione
html
requirements
Requisiti
html
responsibilities
Responsabilità
html
benefits
Benefici
html
location
Posizione
text ≤ 200
contract_type
Tipo di contratto
choice ≤ 20
full_time, part_time, contract, freelance, internship, temporary
experience_level
Livello di esperienza
choice ≤ 20
entry, junior, mid, senior, lead, executive
remote_option
Opzione di lavoro da remoto
choice ≤ 20
onsite, remote, hybrid
application_deadline
Application deadline
date
is_active
Attivo
bool

Risorse resources

CampoTipo di campoObbligatorioUno per lingua
title
Titolo
text ≤ 200 title_fr, title_en
description
Descrizione
html description_fr, description_en
file
File
file ≤ 100
resource_type
Tipo di risorsa
choice ≤ 20
guide, ebook, whitepaper, template, checklist, case_study
thumbnail
Miniatura
image ≤ 100
order
Ordine
int

Pubblicazioni publications

CampoTipo di campoObbligatorioUno per lingua
title
Titolo
text ≤ 255 title_fr, title_en
authors
Autori
text ≤ 255 authors_fr, authors_en
year
Anno
text ≤ 10
journal
Diario
text ≤ 255 journal_fr, journal_en
abstract
Astratto
html abstract_fr, abstract_en
link
Collegamento
url ≤ 200
category
Categoria
category
is_featured
Pubblicazione in evidenza
bool
order
Ordine
int

Testimonianze testimonials

CampoTipo di campoObbligatorioUno per lingua
name
Nome
text ≤ 100 name_fr, name_en
position
Posizione
text ≤ 100 position_fr, position_en
testimonial
Testimonial
longtext testimonial_fr, testimonial_en
rating
Valutazione
int
image
Immagine
image ≤ 100
order
Ordine
int

Competenze skills

CampoTipo di campoObbligatorioUno per lingua
name
Nome
text ≤ 100 name_fr, name_en
level
Livello
int
order
Ordine
int

Cifre chiave stats

CampoTipo di campoObbligatorioUno per lingua
title
Titolo
text ≤ 100 title_fr, title_en
value
Valore
text ≤ 20
icon
Icona
text ≤ 50
order
Ordine
int