L'endpoint di ricerca permette di cercare organizzazioni non profit utilizzando query Elasticsearch v9 completamente personalizzabili.
POST https://nitro.italianonprofit.it/api/v1/organizations/search
L'endpoint richiede autenticazione tramite:
Authorization: Bearer <token>Authorization: Bearer <api-key> o X-API-Key: <api-key>{
"index": "organization-serp*",
"body": {
"query": {
"match": {
"name": "associazione"
}
},
"size": 10,
"from": 0
}
}
Campi:
index (obbligatorio): Nome dell'indice Elasticsearch. Deve iniziare con:
organization-serp* - Per ricerche full-text su organizzazioniorganization-entity* - Per ricerche su entità organizzazionimap-serp* - Per ricerche geografichebody (obbligatorio): Body completo della query Elasticsearch che può includere:
query: La query Elasticsearch (obbligatoria)size: Numero di risultati da restituire (default: 10)from: Offset per la paginazione (default: 0)sort: Ordinamento risultatiaggs: Aggregazioni per analisi dati{
"status": "success",
"data": {
"results": [
{
"id": "123",
"name": "Associazione Esempio",
"tax_code": "12345678901",
"legal_status": "APS",
...
}
],
"total": 42,
"index": "organization-serp*",
"version": "v9"
},
"meta": {
"requestId": "uuid-unico",
"timestamp": "2024-01-15T10:30:00.000Z"
}
}
Campi della risposta:
results: Array con i risultati della ricercatotal: Numero totale di risultati trovatiindex: Indice interrogatoversion: Versione Elasticsearch utilizzata (v9)Indice ottimizzato per ricerche full-text su organizzazioni. Ideale per:
Indice con dati strutturati delle organizzazioni. Ideale per:
Indice geografico per ricerche basate su posizione. Ideale per:
curl -X POST https://nitro.italianonprofit.it/api/v1/organizations/search \
-H "Authorization: Bearer <tuo-token>" \
-H "Content-Type: application/json" \
-d '{
"index": "organization-serp*",
"body": {
"query": {
"match": {
"name": "associazione"
}
},
"size": 20
}
}'
curl -X POST https://nitro.italianonprofit.it/api/v1/organizations/search \
-H "Authorization: Bearer <tuo-token>" \
-H "Content-Type: application/json" \
-d '{
"index": "organization-entity*",
"body": {
"query": {
"bool": {
"must": [
{
"match": {
"name": "associazione"
}
}
],
"filter": [
{
"term": {
"legal_status": "APS"
}
},
{
"range": {
"founded_year": {
"gte": 2020
}
}
}
]
}
},
"size": 10,
"sort": [
{
"name.keyword": {
"order": "asc"
}
}
]
}
}'
curl -X POST https://nitro.italianonprofit.it/api/v1/organizations/search \
-H "Authorization: Bearer <tuo-token>" \
-H "Content-Type: application/json" \
-d '{
"index": "organization-entity*",
"body": {
"query": {
"term": {
"tax_code": "12345678901"
}
},
"size": 1
}
}'
curl -X POST https://nitro.italianonprofit.it/api/v1/organizations/search \
-H "Authorization: Bearer <tuo-token>" \
-H "Content-Type: application/json" \
-d '{
"index": "organization-entity*",
"body": {
"query": {
"match_all": {}
},
"size": 0,
"aggs": {
"per_status": {
"terms": {
"field": "legal_status.keyword",
"size": 10
}
}
}
}
}'
curl -X POST https://nitro.italianonprofit.it/api/v1/organizations/search \
-H "Authorization: Bearer <tuo-token>" \
-H "Content-Type: application/json" \
-d '{
"index": "map-serp*",
"body": {
"query": {
"bool": {
"must": [
{
"match": {
"name": "associazione"
}
}
],
"filter": [
{
"term": {
"region": "Lombardia"
}
}
]
}
}
}
}'
Per gestire grandi set di risultati, usa i parametri from e size:
{
"index": "organization-serp*",
"body": {
"query": {
"match_all": {}
},
"from": 0,
"size": 20
}
}
Pagina 1: from: 0, size: 20 (risultati 1-20)
Pagina 2: from: 20, size: 20 (risultati 21-40)
Pagina 3: from: 40, size: 20 (risultati 41-60)
Puoi ordinare i risultati usando il campo sort:
{
"index": "organization-serp*",
"body": {
"query": {
"match": {
"name": "associazione"
}
},
"sort": [
{
"name.keyword": {
"order": "asc"
}
},
{
"_score": {
"order": "desc"
}
}
]
}
}
Se l'indice o il body non sono validi:
{
"status": "error",
"error": {
"code": "VALIDATION_ERROR",
"message": "Dati non validi",
"details": {
"index": {
"_errors": [
"L'indice deve iniziare con 'map-serp' o 'organization-entity' o 'organization-serp'"
]
}
}
}
}
Se Elasticsearch non è disponibile:
{
"status": "error",
"error": {
"code": "ELASTICSEARCH_UNAVAILABLE",
"message": "Elasticsearch v9 non disponibile",
"details": {
"version": "v9"
}
}
}
organization-serp* per ricerche full-text, organization-entity* per query strutturatesize per limitare il numero di risultati (default: 10, max consigliato: 100)from e sizestatus nella rispostaAggiornamento Token
Come rinnovare i token di accesso usando i refresh token
Trasparenza delle Organizzazioni Non Profit
Il programma di trasparenza di italianonprofit.it è un sistema volontario che permette alle organizzazioni non profit italiane di rendere pubblici i propri dati organizzativi, economici e di impatto sociale attraverso la compilazione di moduli strutturati.