| Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente |
| apireference:api [2024/04/08 14:03] – marcomerlino | apireference:api [2024/04/08 14:38] (versione attuale) – marcomerlino |
|---|
| 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 | **query**: un campo testuale per effettuare una ricerca su tutti i campi testuali ricercabili a seconda del contesto |
| contesto | **filter**: una struttura di espressioni di ricerca |
| filter: una struttura di espressioni di ricerca | **sort**: un oggetto contenente un campo "field" (stringa, codice di campo) e un campo "desc" (boolean) |
| sort: un oggetto contenente un campo "field" (stringa, codice di campo) e un campo "desc" (boolean) | **offset**: un numero intero |
| offset: un numero intero | **limit**: un numero intero, limitato da "search_max" |
| limit: un numero intero, limitato da "search_max" | **format**: una stringa, definisce l'output scope e può essere: |
| format: una stringa, definisce l'output scope e può essere: | * undefined o "default": viene ritornato tutto l'oggetto; |
| undefined o "default": viene ritornato tutto l'oggetto | * "related": viene ritornato tutto l'oggetto, e viene ritornato un oggetto contenente gli oggetti relazionati organizzati per modello (in maniera opportunistica e |
| "related": viene ritornato tutto l'oggetto, e viene ritornato un oggetto contenente gli oggetti | * implementation-dependent, senza alcuna garanzia, alcuni microservizi potrebbero rifiutarsi di implementarlo, o implementarlo sulla base dell'origin della relazione) |
| relazionati organizzati per modello (in maniera opportunistica e implementation-dependent, senza | * "count": ritorna solo il numero dei risultati |
| alcuna garanzia, alcuni microservizi potrebbero rifiutarsi di implementarlo, o implementarlo sulla | * "autocomplete": ritorna solo i campi "uuid" e "memo", imposta come contesto di ricerca libera i soli campi marcati per l'autocomplete |
| base dell'origin della relazione) | * “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 |
| "count": ritorna solo il numero dei risultati | mnemonica |
| "autocomplete": ritorna solo i campi "uuid" e "memo", imposta come contesto di ricerca libera | **inputformat**: una string, definisce il comportamento del parser della query di ricerca, e può essere: |
| i soli campi marcati per l'autocomplete | * undefined o “default”: la query di ricerca viene parserizzata normalmente |
| - “ui”: ritorna tutti i campi di tipo “uuid” e “uuid[]” (ad eccezione del campo con codice “uuid” | * “ui”: tutti i campi di tipo “uuid” o “uuid[]” useranno la funzione “contains” e conterranno una ricerca testuale da applicare sul modello relativo |
| del modello master della ricerca) sostituiti con la rispettiva stringa mnemonica | |
| inputformat: una string, definisce il comportamento del parser della query di ricerca, e può essere: | E' possibile estendere i format qui specificati con format specifici per microservizio, in tal senso viene riservata una nomenclatura per il formato come: "codicemicroservizio_codicemodello_implementationdependant". |
| - undefined o “default”: la query di ricerca viene parserizzata normalmente | |
| - “ui”: tutti i campi di tipo “uuid” o “uuid[]” useranno la funzione “contains” e conterranno una | Per quanto riguarda l'autocomplete è ammissibile che lo stesso, allo scopo di valutare la stringa di ricerca ignori i campi marcati come "autocomplete" e si limiti a: |
| ricerca testuale da applicare sul modello relativo | |
| E' possibile estendere i format qui specificati con format specifici per microservizio, in tal senso viene | * saper riconoscere e ricercare un uuid |
| riservata una nomenclatura per il formato come: | * saper ricercare la stringa di ricerca nel campo memo in startswith e/o in contain |
| "codicemicroservizio_codicemodello_implementationdependant". | |
| Per quanto riguarda l'autocomplete è ammissibile che lo stesso, allo scopo di valutare la stringa di | questa eventuale limitazione è giustificabile per singolo modello di microservizio allo scopo di privilegiare le performance rispetto all'accuratezza. |
| ricerca ignori i campi marcati come "autocomplete" e si limiti a: | |
| - 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'accuratezza. | |
| Il formato di autocomplete dovrà utilizzare i filtri e il limit ma ignorerà il campo offset e l'ordinamento. | Il formato di autocomplete dovrà utilizzare i filtri e il limit ma ignorerà il campo offset e l'ordinamento. |
| L'offset sarà sempre 0, l'ordinamento a tendere sarà dato dal peso del risultato nella ricerca full-text e | L'offset sarà sempre 0, l'ordinamento a tendere sarà dato dal peso del risultato nella ricerca full-text e per ora sarà dipendente dall'implementazione. |
| per ora sarà dipendente dall'implementazione. | |
| La risposta potrà essere: | La risposta potrà essere: |
| - un array di oggetti | |
| - un numero | * un array di oggetti |
| - un oggetto di errore | * un numero |
| | * un oggetto di errore |
| Esempio di definizione: | Esempio di definizione: |
| "search":{"name":"Search | |
| objects","method":"POST","url":"/api/product/search/","params":[],"data":"object","respon | "search":{"name":"Search objects","method":"POST","url":"/api/product/search/","params":[],"data":"object","response":"array","capabilities":{"search" ["cap_MODEL_search","cap_MODEL_search_own"]}} |
| se":"array","capabilities":{"search":["cap_MODEL_search","cap_MODEL_search_own"]}} | |
| Esempio d’uso: | Esempio d’uso: |
| | |
| curl -s -X POST -H "Content-Type: application/json" https://pim.neosidea.com/api/product/search/ | curl -s -X POST -H "Content-Type: application/json" https://pim.neosidea.com/api/product/search/ |
| { | { |
| "query":"Vino Barricato", | "query":"Vino Barricato", |
| "filter":{ | "filter":{ |
| "func":"and", | "func":"and", |
| "fields":[ | "fields":[ |
| { | { |
| "func":"or", | "func":"or", |
| "fields":[ | "fields":[ |
| { | { |
| "func":"eq", | "func":"eq", |
| "field":"brand", | "field":"brand", |
| "value":"1fedee56-4841-4a17-b867-b339849c9b37", | "value":"1fedee56-4841-4a17-b867-b339849c9b37", |
| }, | }, |
| { | { |
| "func":"startswith", | "func":"startswith", |
| "field":"name", | "field":"name", |
| "value":"Barolo" | "value":"Barolo" |
| }, | },] |
| ] | }, |
| }, | { |
| { | "field":"year", |
| "field":"year", | "func":"gt", |
| "func":"gt", | "value":2016 |
| "value":2016 | }] |
| } | }, |
| ] | "format":"related", |
| }, | "sort":{ |
| "format":"related", | "field":"publishrequest", |
| "sort":{ | "desc":true |
| "field":"publishrequest", | }, |
| "desc":true | "offset":0, |
| }, | "limit":10 |
| "offset":0, | |
| "limit":10 | |
| } | } |
| | |
| Risposta: | Risposta: |
| | |
| { | { |
| "result":[ | "result":[ |
| { | { |
| "uuid":"7020f592-20f5-48dd-9295-481b3ffb3c87", | "uuid":"7020f592-20f5-48dd-9295-481b3ffb3c87", |
| "created":1710164142000, | "created":1710164142000, |
| "name":"Nuovo prodotto 1" | "name":"Nuovo prodotto 1" |
| API Microservizi v1.0.2 | "committed":1710164142001 |
| "committed":1710164142001 | }, |
| }, | { |
| { | "uuid":91f177cf-1e2d-48fd-be4c-76c1835acab8", |
| "uuid":91f177cf-1e2d-48fd-be4c-76c1835acab8", | "created":1710164142000, |
| "created":1710164142000, | "name":"Nuovo prodotto 2" |
| "name":"Nuovo prodotto 2" | "committed":1710164142001 |
| "committed":1710164142001 | },], |
| }, | "related":{ |
| ], | "brand":[ |
| "related":{ | { |
| "brand":[ | "uuid":"7020f592-20f5-48dd-9295-481b3ffb3c87", |
| { | "created":1710164142000, |
| "uuid":"7020f592-20f5-48dd-9295-481b3ffb3c87", | "name":"Brand 1" |
| "created":1710164142000, | "committed":1710164142001 |
| "name":"Brand 1" | },], |
| "committed":1710164142001 | "category":[ |
| }, | { |
| ], | "uuid":"7020f592-20f5-48dd-9295-481b3ffb3c87", |
| "category":[ | "created":1710164142000, |
| { | "name":"Categoria 1" |
| "uuid":"7020f592-20f5-48dd-9295-481b3ffb3c87", | "committed":1710164142001 |
| "created":1710164142000, | }, |
| "name":"Categoria 1" | { |
| "committed":1710164142001 | "uuid":"7020f592-20f5-48dd-9295-481b3ffb3c87", |
| }, | "created":1710164142000, |
| { | "name":"Categoria 2" |
| "uuid":"7020f592-20f5-48dd-9295-481b3ffb3c87", | "committed":1710164142001 |
| "created":1710164142000, | },], |
| "name":"Categoria 2" | } |
| "committed":1710164142001 | |
| }, | |
| ], | |
| } | |
| } | } |
| | |
| Esempio di risposta con format autocomplete: | Esempio di risposta con format autocomplete: |
| | |
| { | { |
| "result":[ | "result":[ |
| {"uuid":"7020f592-20f5-48dd-9295-481b3ffb3c87","memo":"Vino 1"}, | {"uuid":"7020f592-20f5-48dd-9295-481b3ffb3c87","memo":"Vino 1"}, |
| {"uuid":"7020f592-20f5-48dd-9295-481b3ffb3c87","memo":"Vino 2"}, | {"uuid":"7020f592-20f5-48dd-9295-481b3ffb3c87","memo":"Vino 2"}, |
| ] | ] |
| } | } |
| | |
| Esempio di risposta con format count: | Esempio di risposta con format count: |
| | |
| {"result":127} | {"result":127} |
| 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 "GENERATO" e "CANCELLATO" | 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 "GENERATO" e "CANCELLATO" |
| A differenza delle api viste precedentemente la stessa deve essere implementata sia a livello di | * non consente di personalizzare la ricerca (non riceve nemmeno un postdata), di conseguenza ritorna sempre gli oggetti così come sono |
| 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, di job di | 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, di job di materializzazione del backup, o di split dello stesso per accomodarne le risorse di generazione. A tendere questi aspetti dovranno essere presi in considerazione |
| 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 array di oggetti |
| - un oggetto di errore | * un oggetto di errore |
| Esempio di definizione: | Esempio di definizione: |
| "backup":{"name":"Backup | |
| objects","method":"GET","url":"/api/product/backup/","params":[],"data":[],"response":"ar | "backup":{"name":"Backup objects","method":"GET","url":"/api/product/backup/","params":[],"data":[],"response":"array","capabilities":{"backup":["cap_admin"]}} |
| ray","capabilities":{"backup":["cap_admin"]}} | |
| Esempio d’uso: | Esempio d’uso: |
| | |
| curl -s https://pim.neosidea.com/api/product/backup/ | curl -s https://pim.neosidea.com/api/product/backup/ |
| | |
| Risposta: | Risposta: |
| { | { |
| "result":[ | "result":[ |
| {...}, | {...}, |
| {...}, | {...}, |
| {...}, | {...}, |
| ] | ] |
| } | } |
| 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, se mancanti non vengono ripristinati gli | 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, se mancanti non vengono ripristinati gli oggetti, se presenti non ne viene verificata una precedente generazione |
| - non viene aggiornato l'oggetto, ad esempio, con una data di ultima modifica | * non vengono effettuati controlli di consistenza |
| Come l'api di backup la stessa deve essere implementata sia a livello di modello che a livello di | * non viene aggiornato l'oggetto, ad esempio, con una data di ultima modifica |
| 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 |
| | * un oggetto di errore |
| Esempio di definizione: | Esempio di definizione: |
| "restore":{"name":"Restore | |
| objects","method":"POST","url":"/api/product/restore/","params":[],"data":"array","respon | "restore":{"name":"Restore objects","method":"POST","url":"/api/product/restore/","params":[],"data":"array","response":"boolean","capabilities":{"restore":["cap_admin"]}} |
| se":"boolean","capabilities":{"restore":["cap_admin"]}} | |
| Esempio d’uso: | Esempio d’uso: |
| | |
| curl -s -X POST -H "Content-Type: application/json" https://pim.neosidea.com/api/product/backup/ | curl -s -X POST -H "Content-Type: application/json" https://pim.neosidea.com/api/product/backup/ |
| [ | [ |
| {...}, | {...}, |
| {...}, | {...}, |
| {...}, | {...}, |
| ] | ] |
| API Microservizi v1.0.2 | |
| Risposta: | Risposta: |
| | |
| {"result":true} | {"result":true} |
| Esempio finale di Manifesto | |
| Url: | ==== Esempio finale di Manifesto ==== |
| https://pim.neosidea.com/api/manifest.json | |
| | |
| | Url: https://pim.neosidea.com/api/manifest.json |
| Contenuto: | Contenuto: |
| | |
| { | { |
| "code":"pim", | "code":"pim", |
| "name":{ | "name":{ |
| "it":"Gestione delle informazioni dei prodotti", | "it":"Gestione delle informazioni dei prodotti", |
| "en":"Product Information Management" | "en":"Product Information Management" |
| | }, |
| | "config":{ |
| | "search_max":100, |
| | "create_max":100, |
| | "load_max":100, |
| | "save_max":100, |
| | "multiuuid_max":100, |
| | "uncommitted_max":86400000, |
| | "locale":[ |
| | "it", |
| | "en" |
| | ] |
| }, | }, |
| "config":{ | "schema":{ |
| "search_max":100, | "manufacturer":{ |
| "create_max":100, | "name":{"it":"Produttore"}, |
| "load_max":100, | "fields":{ |
| "save_max":100, | "name":{"name":"Nome","type":"text","unique":true,"required":true,"sort":true,"search":true,"autocomplete":true} |
| "multiuuid_max":100, | "address":{"name":"Indirizzo Postale","type":"text","search":true,} |
| "uncommitted_max":86400000, | {, |
| "locale":[ | "api":{ |
| "it", | "new":{"name":"Create new objects","method":"GET","url":"/api/manufacturer/create/","params |
| "en" | [{"code":"num","name":"Numero","type":"positiveinteger","required":true}],"response":"array","capabilites":{}}, |
| ] | "save":{"name":"Save objects","method":"POST","url":"/api/manufacturer/save/","params":[],"data":"array","response":"boolean","capabilities":{"commit" |
| }, | ["cap_MODEL_create","cap_MODEL_create_own"],"edit":["cap_MODEL_edit","cap_MODEL_edit_own"],"delete":["cap_MODEL_delete","cap_MODEL_delete_own"]}}, |
| "schema":{ | "load":{"name":"Load objects","method":"POST","url":"/api/manufacturer/load/","params":[],"data":"array","response":"array","capabilites":{}}, |
| "manufacturer":{ | "search":{"name":"Search objects","method":"POST","url":"/api/manufacturer/search/","params":[],"data":"object","response":"array","capabilities":{"search" |
| "name":{"it":"Produttore"}, | ["cap_MODEL_search","cap_MODEL_search_own"]}},"backup":{"name":"Backup objects","method":"GET","url":"/api/manufacturer/backup/","params":[],"data":[],"response |
| "fields":{ | ":"array","capabilities":{"backup":["cap_admin"]}},"restore":{"name":"Restore objects","method":"POST","url":"/api/manufacturer/restore/","params": |
| "name":{"name":"Nome","type":"text","unique":true,"required":true,"sort":true,"sea | [],"data":"array","response":"boolean"} |
| rch":true,"autocomplete":true} | }, |
| "address":{"name":"Indirizzo | "sort":{ |
| Postale","type":"text","search":true,} | "field":"name"; |
| {, | "desc":false, |
| "api":{ | } |
| "new":{"name":"Create new | }, |
| objects","method":"GET","url":"/api/manufacturer/create/","params":[{"code":"num","name": | "product":{ |
| "Numero","type":"positiveinteger","required":true}],"response":"array","capabilites":{}}, | "name":{"it":"Prodotto"}, |
| "save":{"name":"Save | "fields":[...] |
| objects","method":"POST","url":"/api/manufacturer/save/","params":[],"data":"array","resp | "api":[...], |
| onse":"boolean","capabilities":{"commit":["cap_MODEL_create","cap_MODEL_create_own"],"edi | “ui”:[ |
| t":["cap_MODEL_edit","cap_MODEL_edit_own"],"delete":["cap_MODEL_delete","cap_MODEL_delete | { |
| _own"]}}, | “name”:”Informazioni Principali”, |
| "load":{"name":"Load | “format”:12, |
| objects","method":"POST","url":"/api/manufacturer/load/","params":[],"data":"array","resp | “fields”:[ |
| onse":"array","capabilites":{}}, | {“field”:”brand”}, |
| "search":{"name":"Search | {“field”:”name”}, |
| objects","method":"POST","url":"/api/manufacturer/search/","params":[],"data":"object","r | ] |
| esponse":"array","capabilities":{"search":["cap_MODEL_search","cap_MODEL_search_own"]}}, | }, |
| "backup":{"name":"Backup | { |
| objects","method":"GET","url":"/api/manufacturer/backup/","params":[],"data":[],"response | “name”:”Informazioni Aggiuntive”, |
| ":"array","capabilities":{"backup":["cap_admin"]}}, | “format”:6, |
| "restore":{"name":"Restore | “fields”:[ |
| objects","method":"POST","url":"/api/manufacturer/restore/","params":[],"data":"array","r | {“field”:”issinglevintage”}, |
| esponse":"boolean"} | {“field”:”year”},] |
| }, | }] |
| "sort":{ | "sort":{ |
| "field":"name"; | "field":"committed"; |
| "desc":false, | "desc":true, |
| } | } |
| }, | }, |
| "product":{ | "productvariant":{ |
| "name":{"it":"Prodotto"}, | "name":{"it":"VarianteProdotto"}, |
| "fields":[...] | "fields":[...], |
| API Microservizi v1.0.2 | "api":[...], |
| "api":[...], | "firstclass":false, |
| “ui”:[ | "dependson":"product", |
| { | }, |
| “name”:”Informazioni Principali”, | }, |
| “format”:12, | "api":{ |
| “fields”:[ | "manifest":{"name":"Micro Service Manifest","method":"GET","url":"/api/manifest.json","params":[],"data":[],"response":"object","capabilities":{}} |
| {“field”:”brand”}, | "backup":{"name":"Backup objects","method":"GET","url":"/api/backup/","params":[],"data":[],"response":"array","capabilities":{"backup":["cap_admin"]}}"restore |
| {“field”:”name”}, | {"name":"Restore objects","method":"POST","url":"/api/restore/","params":[],"data":"array","response":"boolean","capabilities":{"restore":["cap_admin"]}} |
| ] | } |
| }, | |
| { | |
| “name”:”Informazioni Aggiuntive”, | |
| “format”:6, | |
| “fields”:[ | |
| {“field”:”issinglevintage”}, | |
| {“field”:”year”}, | |
| ] | |
| } | |
| ] | |
| "sort":{ | |
| "field":"committed"; | |
| "desc":true, | |
| } | |
| }, | |
| "productvariant":{ | |
| "name":{"it":"VarianteProdotto"}, | |
| "fields":[...], | |
| "api":[...], | |
| "firstclass":false, | |
| "dependson":"product", | |
| }, | |
| }, | |
| "api":{ | |
| "manifest":{"name":"Micro Service | |
| Manifest","method":"GET","url":"/api/manifest.json","params":[],"data":[],"response":"obj | |
| ect","capabilities":{}} | |
| "backup":{"name":"Backup | |
| objects","method":"GET","url":"/api/backup/","params":[],"data":[],"response":"array","ca | |
| pabilities":{"backup":["cap_admin"]}} | |
| "restore":{"name":"Restore | |
| objects","method":"POST","url":"/api/restore/","params":[],"data":"array","response":"boo | |
| lean","capabilities":{"restore":["cap_admin"]}} | |
| } | |
| } | } |
| |