8.5. Consultazione e Gestione Gruppi e Affiliazione via REST¶
Di seguito una breve spiegazione dell'API REST relativa alla consultazione e gestione dei gruppi e delle affiliazioni del personale ai gruppi, comprende i metodi per la visualizzazione, la creazione, la modifica, la disattivazione e la cancellazione dei gruppi ed i metodi per la gestione delle associazioni "temporizzate" delle persone ai gruppi.
Ogni sede potrà utilizzare l'API accedendo con un utente apposito opportunamente configurato ai soli dati della propria sede.
Gli esempi sono per semplicità basati sulla httpie ed utilizzano la demo disponibile all'indirizzo https://epas-demo.devel.iit.cnr.it .
8.5.1. Permessi¶
Per poter accedere a queste interfaccie REST è necessario utilizzare un utente che abbia il ruolo di Gestore anagrafica per la sede su cui si vuole effettuare le operazioni (lo stesso ruolo utilizzato per la gestione delle persone e dei gruppi).
Su https://epas-demo.devel.iit.cnr.it potete per esempio creare un nuovo utente associato alla vostra sede tipo istituto_xxx_registry_manager (cambiate il nome o in futuro andrà in conflitto con quello di altri istituti) ed una volta creato l'utente assegnateli il ruolo Gestore Anagrafica.
Inoltre è possibile utilizzare un utente di sistema con ruolo di Gestore anagrafica per accedere alle informazioni sulle persone di tutte le sedi. Questo utente è utiizzato per l'eventuale integrazione con sistemi esterni (per esempio di rendicontazione) a livello di tutte le sedi. L'utente di sistema con ruolo di Gestore anagrafica non può essere creato dalle singole sedi ma può essere creato tra un utente con ruolo di Amministratore di ePAS.
L'autenticazione da utilizzare è come per gli altri servizi REST quella Basic Auth.
8.5.2. Group Create¶
La creazione di una persona è possibile tramite una HTTP POST all'indirizzo /rest/v2/persons/create.
$ http -a istituto_xxx_registry_manager
POST https://epas-demo.devel.iit.cnr.it/rest/v2/groups/create
name="Gruppo Test" description="Gruppo di test" officeId=101
managerId=1234 externalId="gruppoTestExId"
La risposta alla creazione del gruppo sarà del tipo:
{
"description": "Gruppo di test",
"endDate": null,
"externalId": "gruppoTestExId",
"id": 4,
"manager": {
"email": "galileo.galilei@cnr.it",
"eppn": "galileo.galilei@cnr.it",
"fiscalCode": "GLLGLL74P10G702B",
"fullname": "Galilei Galileo",
"id": 1234,
"number": "9802"
},
"name": "Gruppo Test",
"office": {
"code": "044000",
"codeId": "223400",
"id": 101,
"name": "IIT - Pisa"
},
"people": []
}
Le uniche cosa da notare sono la necessità di indicare il campo officeId (101 nell'esempio) ed il campo managerId (l'id del responsabile del gruppo).
8.5.3. Group Show¶
La visualizzazione dei dati di un gruppo è tramite una HTTP GET all'indirizzo /rest/v2/groups/show.
Per individuare il gruppo è possibile utilizzare solo il campo id.
$ http -a istituto_xxx_registry_manager
GET https://epas-demo.devel.iit.cnr.it/rest/v2/groups/show?id=101
{
"description": "Gruppo di di test",
"endDate": null,
"id": 4,
"externalId": "gruppoTestExId",
"manager": {
"email": "galileo.galilei@cnr.it",
"eppn": "galileo.galilei@cnr.it",
"fiscalCode": "GLLGLL74P10G702B",
"fullname": "Galilei Galileo",
"id": 1234,
"number": "9802"
},
"name": "Gruppo Test",
"office": {
"code": "074000",
"codeId": "225200",
"id": 201,
"name": "ISTI - Pisa"
},
"people": []
}
La stessa GET può essere effettuata passando l'id del gruppo nel modo seguente:
$ http -a istituto_xxx_registry_manager
GET https://epas-demo.devel.iit.cnr.it/rest/v2/groups/show/101
8.5.4. Group List¶
La lista dei gruppi di un ufficio è possibile tramite una HTTP GET all'indirizzo /rest/v2/groups/list.
Per individuare l'ufficio è possibile utilizzare una delle due chiavi candidate presenti sugli uffici:
id, codeId (corrisponde al sede id di Attestati).
$ http -a istituto_xxx_registry_manager
GET https://epas-demo.devel.iit.cnr.it/rest/v2/groups/list?id=101
[
{
"description": "Gruppo di test",
"endDate": null,
"id": 4,
"externalId": "gruppoTestExId",
"manager": {
"email": "galileo.galilei@cnr.it",
"eppn": "galileo.galilei@cnr.it",
"fiscalCode": "GLLGLL74P10G702B",
"fullname": "Galilei Galileo",
"id": 1234,
"number": "9802"
},
"name": "Gruppo Test"
}
]
8.5.5. Group Update¶
La modifica di un gruppo è possibile tramite una HTTP PUT all'indirizzo /rest/v2/groups/update.
Per individuare il gruppo è possibile utilizzare solo il campo id.
$ http -a istituto_xxx_registry_manager
PUT https://epas-demo.devel.iit.cnr.it/rest/v2/groups/update?id=4
name="Gruppo Test" description="Gruppo di test" officeId=101 managerId=1235 externalId="gruppoTestExId
8.5.6. Group Delete¶
La cancellazione di un gruppo è possibile tramite una HTTP DELETE all'indirizzo /rest/v2/groups/delete
Per individuare il gruppo da eliminare si utilizza lo stesso parametro previsti per la show: id.
$ http -a istituto_xxx_registry_manager
DELETE https://epas-demo.devel.iit.cnr.it/rest/v2/gropus/delete?id=4
8.5.7. Gestione delle Associazioni ai gruppi¶
La gestione delle associazione ai gruppi è effettuata con degli endpoint separati.
I metodi sono:
/rest/v2/affiliations/byGroup
/rest/v2/affiliations/byPerson
/rest/v2/affiliations/show
/rest/v2/affiliations/create
/rest/v2/affiliations/update
/rest/v2/affiliations/delete
8.5.8. Affiliation Create¶
$ http -a istituto_xxx_registry_manager
POST https://epas-demo.devel.iit.cnr.it/rest/v2/affiliations/create
groupId=4 personId=1235 percentage=80.0 beginDate=2020-10-12
{
"beginDate": "2020-10-12",
"endDate": null,
"externalId": null,
"group": {
"description": "Gruppo ISTI di test",
"endDate": null,
"id": 4,
"externalId": "gruppoTestExId",
"manager": {
"email": "galileo.galilei@cnr.it",
"eppn": "galileo.galilei@cnr.it",
"fiscalCode": "GLLGLL74P10G702B",
"fullname": "Galilei Galileo",
"id": 1234,
"number": "9802"
},
"name": "Gruppo Test"
},
"id": 4,
"percentage": 80.0,
"person": {
"email": "leonardo.fibonacci@cnr.it",
"eppn": "leonardo.fibonacci@cnr.it",
"fiscalCode": "FBNLRD74P10G702G",
"fullname": "Fibonacci Leonardo",
"id": 1235,
"number": "9801"
}
}
8.5.9. Affiliation byGroup or byPerson¶
Affiliation byGroup
http -a istituto_xxx_registry_manager
GET https://epas-demo.devel.iit.cnr.it/rest/v2/affiliations/byGroup
id==4 includeInactive==true
[
{
"beginDate": "2020-10-12",
"endDate": null,
"externalId": null,
"group": {
"description": "Gruppo di test",
"endDate": null,
"id": 4,
"externalId": "gruppoTestExId",
"manager": {
"email": "galileo.galilei@cnr.it",
"eppn": "galileo.galilei@cnr.it",
"fiscalCode": "GLLGLL74P10G702B",
"fullname": "Galilei Galileo",
"id": 1234,
"number": "9802"
},
"name": "Gruppo Test"
},
"id": 4,
"percentage": 80.0,
"person": {
"email": "leonardo.fibonacci@cnr.it",
"eppn": "leonardo.fibonacci@cnr.it",
"fiscalCode": "FBNLRD74P10G702G",
"fullname": "Fibonacci Leonardo",
"id": 1235,
"number": "9801"
}
}
]
Il parametro includeInactive è opzionale, se passato ed uguale a true mostra anche le affiliazioni che non sono più attive alla data corrente.
Affiliation byPerson
$ http -a istituto_xxx_registry_manager
GET https://epas-demo.devel.iit.cnr.it/rest/v2/affiliations/byPerson
id==4298
La persona può essere individuata passando i soliti parametri identificativi delle persone:
id, email, eppn, perseoPersonId, fiscalCode, number.
8.5.10. Affiliation Show¶
$ http -a istituto_xxx_registry_manager
GET https://epas-demo.devel.iit.cnr.it/rest/v2/affiliations/show
id==4
8.5.11. Affiliation Update¶
$ http -a istituto_xxx_registry_manager
PUT https://epas-demo.devel.iit.cnr.it/rest/v2/affiliations/update
id==4 groupId=4 personId=1235 percentage=80.0 beginDate=2020-10-12 endDate=2021-01-31
8.5.12. Affiliation Delete¶
$ http -a istituto_xxx_registry_manager
DELETE https://epas-demo.devel.iit.cnr.it/rest/v2/affiliations/delete
id==4