Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Prossima revisione | Revisione precedente | ||
| apireference:api [2024/04/08 13:49] – creata marcomerlino | apireference:api [2024/04/08 14:38] (versione attuale) – marcomerlino | ||
|---|---|---|---|
| Linea 4: | Linea 4: | ||
| Di seguito esemplificheremo le api di base | Di seguito esemplificheremo le api di base | ||
| - | Creazione oggetti | + | |
| - | Questa api consentirà di richiedere al backend la generazione di un determinato numero di oggetti di | + | ==== Creazione oggetti |
| - | un determinato modello (fino a un massimo di " | + | |
| - | " | + | Questa api consentirà di richiedere al backend la generazione di un determinato numero di oggetti di un determinato modello (fino a un massimo di " |
| - | Da un punto di vista di Access Control questa api NON necessita di verifiche (chiunque, anche senza | + | |
| - | token può richiedere delle generazioni, | + | Da un punto di vista di Access Control questa api NON necessita di verifiche (chiunque, anche senza token può richiedere delle generazioni, |
| La risposta potrà essere: | La risposta potrà essere: | ||
| - | - un array di oggetti generati | + | |
| - | - un oggetto di errore | + | * un array di oggetti generati |
| + | | ||
| Esempio di definizione: | Esempio di definizione: | ||
| - | " | + | |
| - | objects"," | + | " |
| - | ro"," | + | |
| Esempio d’uso: | Esempio d’uso: | ||
| + | |||
| curl -s https:// | curl -s https:// | ||
| + | |||
| { | { | ||
| - | " | + | " |
| - | { | + | { |
| - | " | + | |
| - | " | + | |
| - | }, | + | }, |
| - | { | + | { |
| - | " | + | |
| - | " | + | |
| - | } | + | } |
| - | ] | + | |
| } | } | ||
| - | Salvataggio dati | + | |
| - | Questa api consentirà di aggiornare degli oggetti, è possibile passare un array di oggetti (anche solo | + | ==== Salvataggio dati ==== |
| - | parziali, procedendo ad applicare i cambi) (fino a un massimo di save_max oggetti), e provvederà ad | + | |
| - | effettuare le verifiche di consistenza, | + | Questa api consentirà di aggiornare degli oggetti, è possibile passare un array di oggetti (anche solo parziali, procedendo ad applicare i cambi) (fino a un massimo di save_max oggetti), e provvederà ad effettuare le verifiche di consistenza, |
| La risposta potrà essere: | La risposta potrà essere: | ||
| - | - un esito positivo (json " | + | |
| - | - un oggetto di errore | + | * un esito positivo (json " |
| - | Non è incluso in questa api (ma lo sarà successivamente) la possibilità che la stessa ritorni uno o più | + | |
| - | job id. | + | |
| - | E' possibile passare a questa interfaccia oggetti privi di Identificativo (che quindi non sono passati | + | Non è incluso in questa api (ma lo sarà successivamente) la possibilità che la stessa ritorni uno o più job id. |
| - | nello stato " | + | |
| - | di semplificazione/ | + | E' possibile passare a questa interfaccia oggetti privi di Identificativo (che quindi non sono passati nello stato " |
| - | API Microservizi v1.0.2 | + | d'uso di questa funzione può essere un api per salvare dei log). Se invece il campo committed non fosse valorizzato verrà ritornato un errore come controllo di sicurezza. |
| - | sarà responsabile di generarli, applicare i valori, e salvarli, ciònonostante in quello scenario il backend | + | Da un punto di vista di Access Control questa api può richiedere (ma non necessariamente, |
| - | non è tenuto (e nella specifica corrente non prevede) a ritornare gli identificativi generati (un esempio | + | |
| - | d'uso di questa funzione può essere un api per salvare dei log). Se invece il campo committed non | + | * cap_MODEL_create |
| - | fosse valorizzato verrà ritornato un errore come controllo di sicurezza. | + | |
| - | Da un punto di vista di Access Control questa api può richiedere (ma non necessariamente, | + | |
| - | anche essere aperta a tutti, compresi client senza token) almeno una delle seguenti capabilities: | + | |
| - | - cap_MODEL_create | + | |
| - | - cap_MODEL_create_own | + | |
| - | - cap_MODEL_edit | + | |
| - | - cap_MODEL_edit_own | + | |
| - | - cap_MODEL_delete | + | |
| - | - cap_MODEL_delete_own | + | |
| a seconda che stia committando, | a seconda che stia committando, | ||
| - | La differenza tra le capabilities di base e quelle own sta su una verifica dell' | + | |
| - | quindi: | + | La differenza tra le capabilities di base e quelle own sta su una verifica dell' |
| cap_MODEL_edit consentirà di modificare tutti gli oggetti | cap_MODEL_edit consentirà di modificare tutti gli oggetti | ||
| cap_MODEL_edit_own consentirà di modificare solo gli oggetti il cui owner sia l' | cap_MODEL_edit_own consentirà di modificare solo gli oggetti il cui owner sia l' | ||
| - | MODEL nell' | + | MODEL nell' |
| - | di modelli non-first class, il backend potrebbe verificare la capability di un oggetto padre. | + | La presente specifica si limita ad enunciare e descrivere la granularità delle capabilities a livello utente, sarà compito delle successive release andare a dettagliare un uso più granulare delle stesse, tipo la possibilità di assegnare delle capability e ownership di gruppo singole e/o multiple e gestire l' |
| - | La presente specifica si limita ad enunciare e descrivere la granularità delle capabilities a livello | + | Non ci sono garanzie di transazionalità sull' |
| - | utente, sarà compito delle successive release andare a dettagliare un uso più granulare delle stesse, | + | |
| - | tipo la possibilità di assegnare delle capability e ownership di gruppo singole e/o multiple e gestire | + | |
| - | l' | + | |
| - | Non ci sono garanzie di transazionalità sull' | + | |
| - | inconsistenza sul singolo oggetto. Nel caso in cui l' | + | |
| - | salvataggio, | + | |
| Esempio di definizione: | Esempio di definizione: | ||
| - | " | + | |
| - | objects"," | + | " |
| - | :" | + | |
| - | cap_MODEL_edit"," | + | |
| - | ]}} | + | |
| Esempio d’uso: | Esempio d’uso: | ||
| - | curl -s -X POST -H " | + | |
| - | https:// | + | curl -s -X POST -H " |
| [ | [ | ||
| - | { | + | { |
| - | " | + | " |
| - | " | + | " |
| - | " | + | " |
| - | " | + | " |
| - | }, | + | |
| - | ]’ | + | ] |
| - | API Microservizi v1.0.2 | + | |
| Risposta: | Risposta: | ||
| + | |||
| {" | {" | ||
| - | Caricamento dati | + | |
| - | Questa api consente di caricare il contenuto di alcuni oggetti di un determinato modello (Attenzione: | + | ==== Caricamento dati ==== |
| - | allo stato attuale la stessa non è multi-modello, | + | |
| - | successiva/ | + | |
| + | Questa api consente di caricare il contenuto di alcuni oggetti di un determinato modello (Attenzione: | ||
| La risposta potrà essere: | La risposta potrà essere: | ||
| - | - un array di oggetti | + | |
| - | - un oggetto di errore | + | * un array di oggetti |
| - | Da un punto di vista di Access Control questa api NON necessita di verifiche (chiunque, anche senza | + | |
| - | token può richiedere il caricamento di oggetti, sarà oggetto di analisi future lo studio di eventuali ratelimiter, da un punto di vista di sicurezza i campi " | + | |
| - | sarà possibile accederci con chiamate custom, e la possibilità di scansione è mitigata unicamente | + | Da un punto di vista di Access Control questa api NON necessita di verifiche (chiunque, anche senza token può richiedere il caricamento di oggetti, sarà oggetto di analisi future lo studio di eventuali rate-limiter, da un punto di vista di sicurezza i campi " |
| - | dalla dimensione dello spazio di generazione degli identificativo). | + | |
| Esempio di definizione: | Esempio di definizione: | ||
| - | " | + | |
| - | objects"," | + | " |
| - | :" | + | |
| Esempio d’uso: | Esempio d’uso: | ||
| + | |||
| curl -s -X POST -H " | curl -s -X POST -H " | ||
| - | https:// | + | https:// |
| - | [" | + | |
| Risposta: | Risposta: | ||
| { | { | ||
| - | " | + | " |
| - | { | + | { |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, | + | }, |
| - | { | + | { |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, | + | }, |
| - | { | + | { |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, | + | }, |
| - | ] | + | |
| } | } | ||
| - | API Microservizi v1.0.2 | + | |
| - | Ricerca dati | + | ==== Ricerca dati ==== |
| - | Questa api consentirà di ricercare oggetti di un determinato tipo, Saranno ricercabili solo gli oggetti in | + | |
| - | stato " | + | Questa api consentirà di ricercare oggetti di un determinato tipo, Saranno ricercabili solo gli oggetti in stato " |
| - | seguito descritto. | + | Da un punto di vista di Access Control questa api potrà richiedere una capability tipo cap_MODEL_search, |
| - | Da un punto di vista di Access Control questa api potrà richiedere una capability tipo | + | |
| - | cap_MODEL_search, | + | |
| - | richiesto). | + | |
| La stessa accetta i seguenti parametri: | La stessa accetta i seguenti parametri: | ||
| - | query: un campo testuale per effettuare una ricerca su tutti i campi testuali ricercabili a seconda del | + | |
| - | contesto | + | **query**: un campo testuale per effettuare una ricerca su tutti i campi testuali ricercabili a seconda del contesto |
| - | filter: una struttura di espressioni di ricerca | + | **filter**: una struttura di espressioni di ricerca |
| - | sort: un oggetto contenente un campo " | + | **sort**: un oggetto contenente un campo " |
| - | offset: un numero intero | + | **offset**: un numero intero |
| - | limit: un numero intero, limitato da " | + | **limit**: un numero intero, limitato da " |
| - | format: una stringa, definisce l' | + | **format**: una stringa, definisce l' |
| - | undefined o " | + | |
| - | " | + | |
| - | relazionati organizzati per modello (in maniera opportunistica e implementation-dependent, | + | * implementation-dependent, |
| - | alcuna garanzia, alcuni microservizi potrebbero rifiutarsi di implementarlo, | + | |
| - | base dell' | + | |
| - | " | + | |
| - | " | + | mnemonica |
| - | i soli campi marcati per l' | + | **inputformat**: una string, definisce il comportamento del parser della query di ricerca, e può essere: |
| - | - “ui”: ritorna tutti i campi di tipo “uuid” e “uuid[]” (ad eccezione del campo con codice “uuid” | + | |
| - | del modello master della ricerca) sostituiti con la rispettiva stringa mnemonica | + | |
| - | inputformat: | + | |
| - | - undefined o “default”: | + | E' possibile estendere i format qui specificati con format specifici per microservizio, |
| - | - “ui”: tutti i campi di tipo “uuid” o “uuid[]” useranno la funzione “contains” e conterranno una | + | |
| - | ricerca testuale da applicare sul modello relativo | + | Per quanto riguarda l' |
| - | E' possibile estendere i format qui specificati con format specifici per microservizio, | + | |
| - | riservata una nomenclatura per il formato come: | + | * saper riconoscere e ricercare un uuid |
| - | " | + | |
| - | Per quanto riguarda l' | + | |
| - | ricerca ignori i campi marcati come " | + | questa eventuale limitazione è giustificabile per singolo modello di microservizio allo scopo di privilegiare le performance rispetto all' |
| - | - saper riconoscere e ricercare un uuid | + | |
| - | - saper ricercare la stringa di ricerca nel campo memo in startswith e/o in contain | + | |
| - | API Microservizi v1.0.2 | + | |
| - | questa eventuale limitazione è giustificabile per singolo modello di microservizio allo | + | |
| - | scopo di privilegiare le performance rispetto all' | + | |
| Il formato di autocomplete dovrà utilizzare i filtri e il limit ma ignorerà il campo offset e l' | Il formato di autocomplete dovrà utilizzare i filtri e il limit ma ignorerà il campo offset e l' | ||
| - | L' | + | L' |
| - | per ora sarà dipendente dall' | + | |
| La risposta potrà essere: | La risposta potrà essere: | ||
| - | - un array di oggetti | + | |
| - | - un numero | + | * un array di oggetti |
| - | - un oggetto di errore | + | |
| + | | ||
| Esempio di definizione: | Esempio di definizione: | ||
| - | " | + | |
| - | objects"," | + | " |
| - | se":" | + | |
| Esempio d’uso: | Esempio d’uso: | ||
| + | |||
| curl -s -X POST -H " | curl -s -X POST -H " | ||
| { | { | ||
| - | " | + | " |
| - | " | + | |
| - | " | + | " |
| - | " | + | " |
| - | { | + | |
| - | " | + | " |
| - | " | + | " |
| - | { | + | |
| - | " | + | " |
| - | " | + | " |
| - | " | + | " |
| - | }, | + | |
| - | { | + | { |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, | + | },] |
| - | ] | + | |
| - | }, | + | |
| - | { | + | " |
| - | " | + | " |
| - | " | + | " |
| - | " | + | |
| - | } | + | |
| - | ] | + | " |
| - | }, | + | " |
| - | " | + | |
| - | " | + | |
| - | " | + | }, |
| - | " | + | |
| - | }, | + | |
| - | " | + | |
| - | " | + | |
| } | } | ||
| + | |||
| Risposta: | Risposta: | ||
| + | |||
| { | { | ||
| - | " | + | " |
| - | { | + | { |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | API Microservizi v1.0.2 | + | |
| - | " | + | }, |
| - | }, | + | |
| - | { | + | " |
| - | " | + | " |
| - | " | + | " |
| - | " | + | " |
| - | " | + | |
| - | }, | + | |
| - | ], | + | " |
| - | " | + | |
| - | " | + | " |
| - | { | + | " |
| - | " | + | " |
| - | " | + | " |
| - | " | + | |
| - | " | + | " |
| - | }, | + | |
| - | ], | + | " |
| - | " | + | " |
| - | { | + | " |
| - | " | + | " |
| - | " | + | |
| - | " | + | { |
| - | " | + | |
| - | }, | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | },], |
| - | " | + | |
| - | " | + | |
| - | }, | + | |
| - | ], | + | |
| - | } | + | |
| } | } | ||
| + | |||
| Esempio di risposta con format autocomplete: | Esempio di risposta con format autocomplete: | ||
| + | |||
| { | { | ||
| - | " | + | " |
| - | {" | + | {" |
| - | {" | + | {" |
| - | ] | + | |
| } | } | ||
| + | |||
| Esempio di risposta con format count: | Esempio di risposta con format count: | ||
| + | |||
| {" | {" | ||
| - | Backup | + | |
| - | Questa api richiede la capability cap_admin, è analoga alla funzione di ricerca ma con le seguenti | + | ==== Backup |
| - | caratteristiche: | + | |
| - | - ricerca su tutti gli oggetti, compresi quelli in stato " | + | Questa api richiede la capability cap_admin, è analoga alla funzione di ricerca ma con le seguenti caratteristiche: |
| - | - non consente di personalizzare la ricerca (non riceve nemmeno un postdata), di conseguenza ritorna | + | |
| - | sempre gli oggetti così come sono | + | * ricerca su tutti gli oggetti, compresi quelli in stato " |
| - | A differenza delle api viste precedentemente la stessa deve essere implementata sia a livello di | + | |
| - | modello che a livello di microservizio (in modo da consentire un backup totale o parziale) | + | |
| - | In questa revisione della specifica non saranno approfonditi aspetti di backup incrementale, | + | A differenza delle api viste precedentemente la stessa deve essere implementata sia a livello di modello che a livello di microservizio (in modo da consentire un backup totale o parziale) |
| - | materializzazione del backup, o di split dello stesso per accomodarne le risorse di generazione. A | + | In questa revisione della specifica non saranno approfonditi aspetti di backup incrementale, |
| - | tendere questi aspetti dovranno essere presi in considerazione | + | |
| La risposta potrà essere: | La risposta potrà essere: | ||
| - | API Microservizi v1.0.2 | + | |
| - | - un array di oggetti | + | |
| - | - un oggetto di errore | + | |
| Esempio di definizione: | Esempio di definizione: | ||
| - | " | + | |
| - | objects"," | + | " |
| - | ray"," | + | |
| Esempio d’uso: | Esempio d’uso: | ||
| + | |||
| curl -s https:// | curl -s https:// | ||
| + | |||
| Risposta: | Risposta: | ||
| { | { | ||
| - | " | + | " |
| - | {...}, | + | {...}, |
| - | {...}, | + | {...}, |
| - | {...}, | + | {...}, |
| - | ] | + | |
| } | } | ||
| - | Ripristino | + | |
| - | Questa api richiede la capability cap_admin, è analoga alla funzione di save ma con le seguenti | + | ==== Ripristino |
| - | caratteristiche: | + | |
| - | - non vengono verificati gli identificativi e, di conseguenza, | + | Questa api richiede la capability cap_admin, è analoga alla funzione di save ma con le seguenti caratteristiche: |
| - | oggetti, se presenti non ne viene verificata una precedente generazione | + | |
| - | - non vengono effettuati controlli di consistenza | + | * non vengono verificati gli identificativi e, di conseguenza, |
| - | - non viene aggiornato l' | + | |
| - | Come l'api di backup la stessa deve essere implementata sia a livello di modello che a livello di | + | |
| - | microservizio (in modo da consentire un ripristino totale o parziale) | + | |
| + | Come l'api di backup la stessa deve essere implementata sia a livello di modello che a livello di microservizio (in modo da consentire un ripristino totale o parziale) | ||
| La risposta potrà essere: | La risposta potrà essere: | ||
| - | - un boolean di conferma | + | |
| - | - un oggetto di errore | + | * un boolean di conferma |
| + | | ||
| Esempio di definizione: | Esempio di definizione: | ||
| - | " | + | |
| - | objects"," | + | " |
| - | se":" | + | |
| Esempio d’uso: | Esempio d’uso: | ||
| + | |||
| curl -s -X POST -H " | curl -s -X POST -H " | ||
| [ | [ | ||
| - | {...}, | + | {...}, |
| - | {...}, | + | |
| - | {...}, | + | |
| ] | ] | ||
| - | API Microservizi v1.0.2 | + | |
| Risposta: | Risposta: | ||
| + | |||
| {" | {" | ||
| - | Esempio finale di Manifesto | + | |
| - | Url: | + | ==== Esempio finale di Manifesto |
| - | https:// | + | |
| + | |||
| + | Url: https:// | ||
| Contenuto: | Contenuto: | ||
| + | |||
| { | { | ||
| - | " | + | " |
| - | " | + | |
| - | " | + | " |
| - | " | + | " |
| + | }, | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ] | ||
| }, | }, | ||
| - | " | + | " |
| - | " | + | " |
| - | " | + | " |
| - | " | + | " |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | [{" |
| - | ] | + | |
| - | }, | + | [" |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | ":" |
| - | " | + | |
| - | rch": | + | |
| - | " | + | " |
| - | Postale"," | + | |
| - | {, | + | |
| - | " | + | } |
| - | " | + | |
| - | objects"," | + | |
| - | " | + | |
| - | " | + | |
| - | objects"," | + | |
| - | onse":" | + | |
| - | t": | + | { |
| - | _own" | + | |
| - | " | + | |
| - | objects"," | + | |
| - | onse":" | + | |
| - | " | + | |
| - | objects"," | + | |
| - | esponse":" | + | }, |
| - | " | + | |
| - | objects"," | + | “name”: |
| - | ":" | + | “format”: |
| - | " | + | “fields”: |
| - | objects"," | + | {“field”: |
| - | esponse":" | + | {“field”: |
| - | }, | + | |
| - | " | + | " |
| - | " | + | " |
| - | " | + | " |
| - | } | + | |
| - | }, | + | |
| - | " | + | " |
| - | " | + | " |
| - | " | + | " |
| - | API Microservizi v1.0.2 | + | " |
| - | " | + | " |
| - | “ui”: | + | |
| - | { | + | |
| - | “name”: | + | |
| - | “format”: | + | " |
| - | “fields”: | + | " |
| - | {“field”: | + | " |
| - | {“field”: | + | |
| - | ] | + | |
| - | }, | + | |
| - | { | + | |
| - | “name”: | + | |
| - | “format”: | + | |
| - | “fields”: | + | |
| - | {“field”: | + | |
| - | {“field”: | + | |
| - | ] | + | |
| - | } | + | |
| - | ] | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | }, | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, | + | |
| - | }, | + | |
| - | " | + | |
| - | " | + | |
| - | Manifest"," | + | |
| - | ect"," | + | |
| - | " | + | |
| - | objects"," | + | |
| - | pabilities": | + | |
| - | " | + | |
| - | objects"," | + | |
| - | lean"," | + | |
| - | } | + | |
| } | } | ||