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