REST API di Cometa

Le REST API di Cometa mettono a disposizione diverse funzionalità che sono raggruppate nelle voci di menù di questa pagina.

Il token di autenticazione viene restituito dal metodo di login ed ha una sua validità temporale.
Il token deve essere passato generalmente nell'header della richiesta col nome: "token". E' richiesto per tutti i metodi eccetto login
Alternativamente il token può essere passato anche come parametro "token" nell'url della richiesta, utile quando non si può passare nessun header alla richiesta.
Si può verificare la validità del token con il metodo checktoken.
Se il token è scaduto occorre recuperarne un'altro semplicemente effettuando il login.
Si seguito sarà indicato con UT l'utente Cometa e con CL il Cliente.
In qualsiasi metodo in prametro id può essere specificato anche nel path dell'URL con la solita notazione [metodo]/[valore parametro id]?...

Metodi presenti un questa sezione:

METODO HTTP Verb PARAMETRI RISULTATO
login POST, GET xx-www-form-urlencoded
parametro descrizione default obbligatorio
username nome utente login SI
password password utente login SI
id codice Cliente di Cometa SI

application/json
{
"username":"",
"password":"",
"id": ""
}

Il metodo ritorna il seguente oggetto JSON:
{
  "token": "541bee22-edf2-4c04-98a1-66222b55d759",
  "passwordDaCambiare": false,
  "nominativo": "ACCENTURE",
  "clienteCometa": "OCN",
  "cliente": true,
  "utente": false,
  "capoProgetto": true,
  "responsabileDiStruttura": true,
  "approvatoreGiustificativi": true,
  "moduliAbilitati": [
        "TASKS"
    ],
  "permessi": [
    {
      "nome": "Cometa Cliente",
      "descrizione": "Accesso come Cliente",
      "inserimento": true,
      "lettura": true,
      "modifica": true,
      "eliminazione": true,
      "esecuzione": true
    }
  ]
}
  • token: è il token di autenticazione necessario da passare nell'header delle api che lo richiedono
  • passwordDaCambiare: obbligo per l'utente di cambiare la password
  • nominativo: Nominativo dell'utente/cliente di cliente collegato
  • clienteCometa: nome del cliente dell'istanza di Cometa
  • cliente: true se chi si collega è un cliente di cliente Cometa
  • utente: true se chi si collega è un utente di cliente Cometa
  • permessi: un array di oggetti che rappresentano i permessi associati all'utente collegato
login/resetPassword POST, GET

Invia un mail all'utente con il link da cliccare per resettare la password

xx-www-form-urlencoded
parametro descrizione default obbligatorio
username nome utente login SI
id codice Cliente di Cometa SI

application/json
{
"username":"",
"id": ""
}

Il metodo ritorna il seguente oggetto JSON:
{
    "successo": true,
    "messaggio": null
}
  • successo: true se il cambio password è andato a buon fine
  • messaggio: messaggio di errore nel caso successo sia false
checkToken POST, GET Il metodo ritorna il seguente oggetto JSON:
{
    "valido": true,
    "nominativo": "Parenti Emanuele",
    "clienteCometa": "OCN",
    "cliente": false,
    "utente": false,
    "capoProgetto": true,
    "responsabileDiStruttura": true,
    "approvatoreGiustificativi": true,
    "moduliAbilitati": [
        "TASKS"
    ],
    "permessi": [
        {
            "nome": "Documenti",
            "descrizione": "",
            "inserimento": true,
            "lettura": true,
            "modifica": true,
            "eliminazione": true,
            "esecuzione": true
        },
        {
            "nome": "Giustificativi",
            "descrizione": "",
            "inserimento": false,
            "lettura": false,
            "modifica": false,
            "eliminazione": false,
            "esecuzione": true
        },
        {
            "nome": "Inserimento ore",
            "descrizione": "",
            "inserimento": true,
            "lettura": true,
            "modifica": true,
            "eliminazione": true,
            "esecuzione": true
        },
        {
            "nome": "Rubrica",
            "descrizione": "",
            "inserimento": false,
            "lettura": false,
            "modifica": false,
            "eliminazione": false,
            "esecuzione": false
        }
    ]
}
  • valido: true se il token è ancora valido
cambioPassword POST, GET xx-www-form-urlencoded
parametro descrizione default obbligatorio
username nome utente login SI
oldPassword password attuale SI
password nuova password SI

application/json
{
    "username":"",
    "password":"",
    "oldPassword": ""
}
Il metodo ritorna il seguente oggetto JSON:
{
    "successo": true,
    "messaggio": null
}
  • successo: true se il cambio password è andato a buon fine
  • messaggio: messaggio di errore nel caso successo sia false
contratto POST, GET Il metodo ritorna il seguente oggetto JSON:
{
    "oreGiornaliere": "08:00:00"
}
deleteToken POST, GET true o false
Metodi presenti un questa sezione:
  • notifiche metodo per la gestione delle notifiche
METODO HTTP Verb PARAMETRI RISULTATO
notifiche POST Interrogazione notifiche. I record vengono ritornati in ordine di data descrescente.

application/json

Viene richiesto un oggetto JSON anche parziale del seguente tipo:
{
    "pagina": 1,                               
    "recordPerPagina": 100,
    "filtri": {
        "tipi": [
            "SCADENZIARIO",
            "TIMESHEET"
        ],
        "cestinata": false,
        "letta": null,
        "testo": null,
        "dataInizio": "2017-01-01T00:00:00",
        "dataFine": null
    }
}
parametro descrizione default obbligatorio
pagina pagina di record richiesta 1
recordPerPagina n° di record da recuperare 30
tipi tipologia di notifiche null, vengono ritornate tutte le tipologie
cestinata eliminata dall'utente false
letta notifica letta null
testo testo di ricerca in oggetto testo della notifica null
dataInizio data di partenza di ricerca null
dataFine data di fine di ricerca null

La data è nel fomato ISO yyyy-mm-ddTHH:mm:ss
Date valide possono essere:
  • 2017-12-5
  • 2017-12-5T15:12:00


Le tipologie di notifiche possono essere:
  • TIMESHEET: notifica la necessità di dover firmare/approvare i timesheet (UT)
  • CONTRATTI: notifica la scdenza dei contratti (UT)
  • PAGAMENTO_PRATICHE: notifica il sollecito al pagamento pratica (UT, CL)
  • SCADENZA_NOTULE: notifica il sollecito al pagamento di una notula (UT, CL)
  • SCADENZIARIO: notifica una scadenza pianificata nello scadenziario (UT, CL)
  • GIUSTIFICATIVI: notifica i giustificativi: richiesta/approvazione (UT)
  • ASSENZE: notifica i giustificativi in atto (UT)
  • DELEGA_CASSETTO_FISCALE: notifica la scadenza della delega del cassetto fiscale (CL)
  • SMART_CARD: notifica le diverse scadenze di una smart card (UT)
  • PRATICHE_LEGALI: notifica le pratiche dimenticate (UT)
  • ALERT_PAGAMENTO_PRATICHE: notifica pratiche da pagare dimenticate (UT)
  • INSOLUTO: notifica notula insulta dalla banca (UT)
Ritorna un oggetto json del tipo:
{
    "totaleRecord": 999,
    "parametriDiRicerca": {
        "pagina": 1,
        "recordPerPagina": 100,
        "filtri": {
            "tipi": [
                "SCADENZIARIO"
            ],
            "cestinata": false,
            "letta": null,
            "testo": null,
            "dataInizio": "2017-01-01T00:00:00",
            "dataFine": null
        }
    },
    "notifiche": [
        {
            "priorita": 1,
            "id": "ftwD0zJXIlLrilhNmarilw%3d%3d",
            "oggetto": "SCADENZIARIO YYY",
            "tipologia": "SCADENZIARIO",
            "testo": "Tipo notifica: SCADENZIARIO n° 101",
            "data": "2017-09-11T16:55:23.257",
            "letta": false,
            "cancellata": false,
            "allegati": []
        },
        {
            "priorita": 3,
            "id": "EG8Ls6JR3w0Kkk1kWV0Mtg%3d%3d",
            "oggetto": "SCADENZIARIO XXX",
            "tipologia": "SCADENZIARIO",
            "testo": "Tipo notifica: SCADENZIARIO n° 99",
            "data": "2017-09-11T16:55:23.257",
            "letta": false,
            "cancellata": false,
            "allegati": []
        },
    ....
    ]
    
}
Nel risultato vengono riportati i parametri di ricerca utilizzati, il totale dei record che corrispondo alla ricerca e il le notifiche trovate in base al numero di pagina e ai record per pagina.
Il campo priorità della notifica è a importanza crescente. 1 = poco importante, 10 = molto importante.
PUT Modifica lo stato di una notifica

xx-www-form-urlencoded

parametro descrizione default obbligatorio
id id del record id notifica SI
letta imposta la notifca in stato letta true
cestinata imposta la notifica in stato cestinata false

application/json

{
    "id": "",
    "letta": "",
    "cestinata": ""
}
Il metodo ritorna il seguente oggetto JSON:
{
    "successo": true,
    "messaggio": null
}
  • successo: true se è andato a buon fine
  • messaggio: messaggio di errore nel caso successo sia false
DELETE Elimina la notifica definitivamente per l'utente

xx-www-form-urlencoded

parametro descrizione default obbligatorio
id id del record id notifica SI

application/json

{
    "id": "",
}
Il metodo ritorna il seguente oggetto JSON:
{
    "successo": true,
    "messaggio": null
}
  • successo: true se è andato a buon fine
  • messaggio: messaggio di errore nel caso successo sia false

In questa sezione sono raggruppati i metodi per la gestione del timesheet.
Attenzione che se il giorno è bloccato, si possono solo visualizzare i dati sia per quanto riguarda le ore che le note spese.

Metodi presenti un questa sezione:

METODO HTTP Verb PARAMETRI RISULTATO
timesheet/commesse POST Recupera le commesse dell'utente disponibili per l'inserimento delle ore in un determinato periodo temporale

xx-www-form-urlencoded

parametro descrizione default obbligatorio
dataInizio Data di inizio per l'inserimento delle ore SI
dataFine Data di fine l'inserimento delle ore SI

application/json

{
    "dataInizio": "yyyy-mm-dd",
    "dataFine": "yyyy-mm-dd"
}

Per ogni commessa vengono elencate le tipologie di ore che l'utente può inserire.
Le tipologie di ore ammesse possono essere:
  • ORE_ORDINARIE: Inserimento ore ordinarie
  • ORE_REPERIBILITA: Inserimento ore di reperibilità
  • ORE_INTERVENTO_REPERIBILITA: Inserimento ore di intervento in reperibilità
  • ORE_INTERVENTO_REPERIBILITA_NOTTURNE: Inserimento ore notturne
  • ORE_STRAORDINARIO: Inserimento ore di straordinario
  • ORE_STRAORDINARIO_NOTTURNO: Inserimento ore di strordinario notturno
  • RIPOSO_COMPENSATIVO: Inserimento ore di riposo compensativo
Il metodo ritorna il seguente risultato JSON:
[
  {
    "id": "n6Rt92Lfp1W3hNn76EK2ig%3d%3d",
    "descrizione": "Rinnovo annuale ...",
    "cliente": "BNL",
    "idCliente": "xiqfS2TmC14Zo5n8YLDTGw%3d%3d",
    "settore": "Finance & bankingtt",
    "codice": 759,
    "tipologieOreAmmesse": [
      "ORE_ORDINARIE",
      "ORE_REPERIBILITA",
      "ORE_INTERVENTO_REPERIBILITA",
      "ORE_INTERVENTO_REPERIBILITA_NOTTURNE",
      "ORE_STRAORDINARIO",
      "ORE_STRAORDINARIO_NOTTURNO",
      "RIPOSO_COMPENSATIVO"
    ],
    "attivita": [
      {
        "id": "PUPj%2bMdnFse7YPYamYiNeA%3d%3d",
        "descrizione": "Rinnovo annuale..."
      },
      {
        "id": "VNGzkOTegrEK1OicyHWquw%3d%3d",
        "descrizione": "attività 2"
      }
    ]
  },
  {
    "id": "ZVPbzPA0Csl%2fJds9NC%2fxbQ%3d%3d",
    "descrizione": "offera test",
    "cliente": "AAA",
    "idCliente": "xiqfS2TmC14Zo5n8YLDTGw%3d%3d",
    "settore": "Insurance",
    "codice": 775,
    "tipologieOreAmmesse": [
      "ORE_ORDINARIE",
      "ORE_REPERIBILITA",
      "ORE_INTERVENTO_REPERIBILITA",
      "ORE_INTERVENTO_REPERIBILITA_NOTTURNE",
      "ORE_STRAORDINARIO",
      "ORE_STRAORDINARIO_NOTTURNO",
      "RIPOSO_COMPENSATIVO"
    ],
    "attivita": [
      {
        "id": "Ts3JgRhcs%2bmugYGWKZGYXQ%3d%3d",
        "descrizione": "aaaa"
      }
    ]
  }
]
POST Recupera il riepilogo delle attività svolte dalla risorsa in un determinato giorno

xx-www-form-urlencoded

parametro descrizione default obbligatorio
giorno Giorno da elaborare SI

application/json

{
    "giorno": "yyyy-mm-dd"    
}
Il metodo ritorna il seguente risultato JSON:
{
  "bloccato": "false",
  "attivita": [
    {
      "id": "Ts3JgRhcs%2bmugYGWKZGYXQ%3d%3d",
      "commessa": "offera test",
      "codiceCommessa": "775",
      "idCommessa": "ZVPqzPA0lsl%2fJds9NC%2fxbQ%3d%3d",
      "descrizioneAttivita": "aaaa",
      "daFatturare": false,
      "trasferta": false,
      "cliente": "AAA",
      "idCliente": "xiqfS2TmC14Zo5n8YLDTGw%3d%3d",
      "tipoAttivita": "Insurance",
      "note": "",
      "totaleOre": "04:00:00",
      "oreOrdinarie": "04:00:00",
      "oreDaRecuperare": "00:00:00",
      "oreStraordinario": "00:00:00",
      "totaleOreStraordinarioFestivo": "00:00:00",
      "oreStraordinarioFestivoDiurno": "00:00:00",
      "oreStraordinarioFestivoNotturno": "00:00:00",
      "oreReperibilitaFestiva": "00:00:00",
      "totaleOreInterventoReperibilitaFestiva": "00:00:00",
      "oreInterventoReperibilitaFestivaDiurne": "00:00:00",
      "oreInterventoReperibilitaFestivaNotturne": "00:00:00",
      "oreReperibilita": "00:00:00",
      "oreStraordinarioNotturno": "00:00:00",
      "oreInterventoReperibilita": "00:00:00",
      "oreInterventoReperibilitaNotturne": "00:00:00"
    },
    {
      "id": "VNGzkOTegrEK1OicyHWquw%3d%3d",
      "commessa": "Rinnovo annuale manutenzione licenze prodotti Adobe (ex Jetform)",
      "codiceCommessa": "795",
      "idCommessa": "ZVPbzPA0Csl%2fJds9NC%2fxbQ%3d%3d",
      "descrizioneAttivita": "attività 2",
      "daFatturare": false,
      "trasferta": false,
      "cliente": "BNL",
      "tipoAttivita": "Finance & bankingtt",
      "note": "",
      "totaleOre": "01:00:00",
      "oreOrdinarie": "01:00:00",
      "oreDaRecuperare": "00:00:00",
      "oreStraordinario": "00:00:00",
      "totaleOreStraordinarioFestivo": "00:00:00",
      "oreStraordinarioFestivoDiurno": "00:00:00",
      "oreStraordinarioFestivoNotturno": "00:00:00",
      "oreReperibilitaFestiva": "00:00:00",
      "totaleOreInterventoReperibilitaFestiva": "00:00:00",
      "oreInterventoReperibilitaFestivaDiurne": "00:00:00",
      "oreInterventoReperibilitaFestivaNotturne": "00:00:00",
      "oreReperibilita": "00:00:00",
      "oreStraordinarioNotturno": "00:00:00",
      "oreInterventoReperibilita": "00:00:00",
      "oreInterventoReperibilitaNotturne": "00:00:00"
    }
  ],
  "giustificativi": [
    {
      "riposoCompensativo": false,
      "descrizione": "Ferie",
      "stato": "R",
      "ore": "02:00:00"
    },
    {
      "riposoCompensativo": false,
      "descrizione": "Infortunio",
      "stato": "A",
      "ore": "01:00:00"
    }
  ],
 "tasks": [
    {
        "oreOrdinarie": "00:30:00",
        "oreDaRecuperare": "00:00:00",
        "oreStraordinario": "00:00:00",
        "oreStraordinarioFestivoDiurno": "00:00:00",
        "oreStraordinarioFestivoNotturno": "00:00:00",
        "oreReperibilita": "00:00:00",
        "oreReperibilitaFestiva": "00:00:00",
        "oreInterventoReperibilita": "00:00:00",
        "oreInterventoReperibilitaNotturne": "00:00:00",
        "oreInterventoReperibilitaFestivaDiurne": "00:00:00",
        "oreInterventoReperibilitaFestivaNotturne": "00:00:00",
        "oreInterventoReperibilitaFestiva": "00:00:00",
        "oreStraordinarioNotturno": "00:00:00",
        "idCommessa": "v6xRKZueM380vgbG%2bwriew%3d%3d",
        "idAttivita": "UCcxUOC9qr8sOvqKuQ9rlg%3d%3d",
        "numero":43,
        "id": "t2%2b81zYVmguR43bqt5Zvqg%3d%3d",
        "titoloCompleto": "Task #6: cia bello (52 - La rustica)",
        "titolo": "cia bello",
        "cliente": "EDS",
        "totaleOre": 128.0,
        "commessa": "La rustica",
        "descrizione": ""
    }
    ...
    ],
  "timbratura": {
    "giustificativi": [],
    "oreOrdinarie": "00:00:00",
    "oreStraordinario": "00:00:00",
    "oreGiustificate": "00:00:00",
    "convalidato": false,
    "presente": false,
    "codiceTurnoOrdinario": null,
    "codiceCausaleOrdinario": null,
    "descrizioneCausaleOrdinario": null,
    "descrizioneTurnoOrdinario": null,
    "codiceTurnoStraOrdinario": null,
    "codiceCausaleStraOrdinario": null,
    "descrizioneCausaleStraOrdinario": null,
    "descrizioneTurnoStraOrdinario": null,
    "totaleOre": "00:00:00"
  },
  "data": "2017-10-03T00:00:00",
  "oreGiustificateTimbrature": "00:00:00",
  "totaleOreRecuperate": 0.0,
  "totaleOre": 12.0,
  "totaleOreGustificativi": 3.0,
  "totaleOreGustificativiApprovateRichieste": 3.0,
  "totaleOreLavorate": 9.0,
  "totaleOreOrdinarie": 5.0,
  "totaleOreTasks": 0.0,
  "totaleOreDaRecuperare": 0.0,
  "totaleOreStraordinario": 0.0,
  "totaleOreStraordinarioFestivo": 0.0,
  "totaleOreStraordinarioFestivoDiurno": 0.0,
  "totaleOreStraordinarioFestivoNotturno": 0.0,
  "totaleOreReperibilitaFestiva": 0.0,
  "totaleOreInterventoReperibilitaNotturne": 0.0,
  "totaleOreInterventoReperibilita": 0.0,
  "totaleOreInterventoReperibilitaFestivaDiurne": 0.0,
  "totaleOreInterventoReperibilitaFestivaNotturne": 0.0,
  "totaleOreInterventoReperibilitaFestiva": 0.0,
  "totaleOreReperibilita": 0.0,
  "totaleOreStraordinarioNotturno": 0.0
}
timesheet/riepilogomensile POST Recupera il riepilogo delle attività svolte dalla risorsa in un determinato mese

xx-www-form-urlencoded

parametro descrizione default obbligatorio
anno Anno SI
mese Mese SI
attivitaInserite true o false per ritornare solo i giorni con attivita o no
IDCommessa filtro per commessa

application/json

{
    "anno": "2017",
    "mese": "10",
    "attivitaInserite": "true",
    "idCommessa": "n6Rt92Lfp1W3hNn76EK2ig%3d%3d",
}
Il metodo ritorna il seguente risultato JSON:
{
  "giorni": [
    {
      "bloccato":"false",
      "attivita": [],
      "giustificativi": [],
      "tasks": [
        {
            "oreOrdinarie": "00:30:00",
            "oreDaRecuperare": "00:00:00",
            "oreStraordinario": "00:00:00",
            "oreStraordinarioFestivoDiurno": "00:00:00",
            "oreStraordinarioFestivoNotturno": "00:00:00",
            "oreReperibilita": "00:00:00",
            "oreReperibilitaFestiva": "00:00:00",
            "oreInterventoReperibilita": "00:00:00",
            "oreInterventoReperibilitaNotturne": "00:00:00",
            "oreInterventoReperibilitaFestivaDiurne": "00:00:00",
            "oreInterventoReperibilitaFestivaNotturne": "00:00:00",
            "oreInterventoReperibilitaFestiva": "00:00:00",
            "oreStraordinarioNotturno": "00:00:00",
            "idCommessa": "v6xRKZueM380vgbG%2bwriew%3d%3d",
            "idAttivita": "UCcxUOC9qr8sOvqKuQ9rlg%3d%3d",
            "numero":43,
            "id": "t2%2b81zYVmguR43bqt5Zvqg%3d%3d",
            "titoloCompleto": "Task #6: cia bello (52 - La rustica)",
            "titolo": "cia bello",
            "cliente": "EDS",
            "totaleOre": 128.0,
            "commessa": "La rustica",
            "descrizione": ""
        }
        ...
        ],
      "timbratura": {
        "giustificativi": [],
        "oreOrdinarie": "00:00:00",
        "oreStraordinario": "00:00:00",
        "oreGiustificate": "00:00:00",
        "convalidato": false,
        "presente": false,
        "codiceTurnoOrdinario": null,
        "codiceCausaleOrdinario": null,
        "descrizioneCausaleOrdinario": null,
        "descrizioneTurnoOrdinario": null,
        "codiceTurnoStraOrdinario": null,
        "codiceCausaleStraOrdinario": null,
        "descrizioneCausaleStraOrdinario": null,
        "descrizioneTurnoStraOrdinario": null,
        "totaleOre": "00:00:00"
      },
      "data": "2017-10-01T00:00:00",
      "oreGiustificateTimbrature": "00:00:00",
      "totaleOreRecuperate": 0.0,
      "totaleOre": 0.0,
      "totaleOreGustificativi": 0.0,
      "totaleOreGustificativiApprovateRichieste": 0.0,
      "totaleOreLavorate": 0.0,
      "totaleOreOrdinarie": 0.0,
      "totaleOreDaRecuperare": 0.0,
      "totaleOreStraordinario": 0.0,
      "totaleOreStraordinarioFestivo": 0.0,
      "totaleOreStraordinarioFestivoDiurno": 0.0,
      "totaleOreStraordinarioFestivoNotturno": 0.0,
      "totaleOreReperibilitaFestiva": 0.0,
      "totaleOreInterventoReperibilitaNotturne": 0.0,
      "totaleOreInterventoReperibilita": 0.0,
      "totaleOreInterventoReperibilitaFestivaDiurne": 0.0,
      "totaleOreInterventoReperibilitaFestivaNotturne": 0.0,
      "totaleOreInterventoReperibilitaFestiva": 0.0,
      "totaleOreReperibilita": 0.0,
      "totaleOreStraordinarioNotturno": 0.0
    },
	.... così per tutti i giorni del mese
  ],
  "risorsa": "Parenti Emanuele",
  "dataInzio": "2017-10-01T00:00:00",
  "dataFine": "2017-10-31T00:00:00",
  "timbratureAbilitate": false,
  "oreDaRecuperare": "00:00:00",
  "oreRecuperate": "00:00:00",
  "oreDaRecuperareRimanenti": "00:00:00",
  "totaleOre": 128.0,
  "totaleOreTasks": 0.0,
  "totaleOreOrdinarie": 93.0,
  "totaleOreDaRecuperare": 0.0,
  "totaleOreRecuperate": 0.0,
  "totaleOreStraordinario": 0.0,
  "totaleOreStraordinarioFestivo": 0.0,
  "totaleOreInterventoReperibilitaFestiva": 0.0,
  "totaleOreInterventoReperibilita": 0.0,
  "totaleOreInterventoReperibilitaNotturne": 0.0,
  "totaleOreReperibilita": 0.0,
  "totaleOreReperibilitaFestiva": 0.0,
  "totaleOreStraordinarioNotturno": 0.0,
  "totaleOreLavorate": 113.0,
  "totaleTrasferte": 0,
  "totaleOreGiustificativi": 15.0,
  "totaleDiarie": 0
}
timesheet POST Si occupa dell'inserimento/modifica delle ore in un'attività.

xx-www-form-urlencoded

parametro descrizione default obbligatorio
idAttivita ID dell'attività recuperato dal servizio timesheet/commesse SI
giorno Giorno in cui segnare le ore; formato: yyyy-mm-dd SI
ore Ore da segnare formato: hh:mm:ss SI
tipologiaOre Tipologia delle ore. L'elenco si recupera con il servizio commesse SI
trasferta Indica se è trasferta
note Le note descrittive dell'attività svolta

application/json

{
    "idAttivita":"PUPj%2bMdnFse7YPYamYiNeA%3d%3d",
    "giorno":"2017-10-10",
    "note": "test inserimento da mobile",
    "ore":"01:30:00",
    "tipologiaOre":"ORE_ORDINARIE",
    "trasferta":"true"
}

N.B nel campo ora i secondi devono sempre essere 00
Possono essere passate anche 00:00:00 ore per svuotare il campo. Se nella giornata risultante per quell'attività le ore totali risulteranno a zero allora sarà eliminato il record dell'attività.
Il metodo ritorna il seguente risultato JSON:
{
    "successo": true,
    "messaggio": ""
}
In caso di errore
{
    "successo": false,
    "messaggio": "[Il tipo di errore]"
}
DELETE Elimina completamente un'attività dal timesheet

xx-www-form-urlencoded

parametro descrizione default obbligatorio
idAttivita ID dell'attività recuperato dal servizio timesheet/commesse SI
giorno Giorno in cui segnare le ore; formato: yyyy-mm-dd SI

application/json

{
    "idAttivita":"PUPj%2bMdnFse7YPYamYiNeA%3d%3d",
    "giorno":"2017-10-10"
}


Il metodo ritorna il seguente risultato JSON:
{
    "successo": true,
    "messaggio": ""
}
In caso di errore
{
    "successo": false,
    "messaggio": "[Il tipo di errore]"
}
timesheet/firma POST Firma del timesheet

xx-www-form-urlencoded

parametro descrizione default obbligatorio
anno Anno del timesheet da firmare SI
Mese Mese del timesheet da firmare SI
firmaConfermata Forza la firma del timsheet nel caso ci siano solo avvertenze false

application/json

{
    "anno":"2017",
    "mese":"10"
}
Nel caso il risultato ritorni delle avvertenze deve essere visualizzata l'avvertenza e richiesto all'utente di confermare la firma del timesheet, effettuando la stessa richiesta per la firma ma impostando il parametro "firmaConfermata":"true".
Il metodo ritorna il seguente risultato JSON in caso di successo:
{
    "successo": true,
    "errori": null,
    "avvertenze": null
}
In caso di errore
{
  "errori": [
    {
      "giorno": "2017-11-02T00:00:00",
      "descrizione": "Nel giorno 02/11/2017 sono state segnate 6,50 ore in meno del dovuto."
    },
    {
      "giorno": "2017-11-03T00:00:00",
      "descrizione": "Nel giorno 03/11/2017 sono state segnate 6,50 ore in meno del dovuto."
    }
....
    ],
    "successo": false,
    "avvertenze":null
}
In caso di avvertenze
{
  "errori": null,
  "avvertenze": [
    "Il timesheet è incompleto, vuoi firmare ugualmente?"
  ],
  "successo": false
}
La gestione delle note spese segue una logica che dipende da vari parametri:

Parametri generali:
  • valuteAbilitate: se è true allora bisogna dare la possibilità all'utente di scegliere la valuta dell'importo della spesa, altrimenti no. Di dfault deve essere impostata la valuta di default.
Parametri della tipologia di spesa:
  • fissa: in questo caso l'utente non potrà inserire nulla. La quantità sarà impostata a 1, l'importo unitario sarà impostato al valore recuperato dalla tipologia di spesa e la valuta (se abilitata) sarà impostata a quella di default.
  • rimborsoKm: indica che si tratta di un rimborso chilometrico. In questo caso bisogna proporre in automatico i km utilizzando il servizio timesheet/km. Tale servizio cerca di recuperare, se le informazioni sono sufficienti, i km di andata e ritorno dal cliente associato alla commessa di cui si sta inserendo le nota spese.
  • indennitaKm: indennita chilometrica. Obbliga a fissare l'importo unitario di rimborso sulla base dell'importo associato alle varie categorie di automobile configurate. La categoria di automobile di default è quella associata all'utente, ma comunque si deve lasicare la possibilità all'utente di scegliere la categoria.
  • indennitaTrasferta: indennità di trasferta. Obbliga a fissare l'importo unitario a 1, l'importo della nota spese in base alla zona che dovrà essere scelta dall'utente.

Metodi presenti un questa sezione:

METODO HTTP Verb PARAMETRI RISULTATO
timesheet/tipologiaspese POST
{
  "valuteAbilitate": true,
  "tipologieDiSpesa": [
    {
      "id": 1,
      "descrizione": "Pranzo (Trasf)",
      "fissa": false,
      "importo": 0.0,
      "romborsoKm": false,
      "indennitaKm": false,
      "indennitaTrasferta": false
    },
    {
      "id": 14,
      "descrizione": "rimborso km",
      "fissa": false,
      "importo": 0.0,
      "romborsoKm": true,
      "indennitaKm": true,
      "indennitaTrasferta": false
    },
    {
      "id": 15,
      "descrizione": "indennità trasferta",
      "fissa": false,
      "importo": 0.0,
      "romborsoKm": false,
      "indennitaKm": false,
      "indennitaTrasferta": true
    }
    ....
  ],
  "valute": [
    {
      "id": "CZK",
      "descrizione": "Corona Ceca",
      "default": false
    },
    {
      "id": "DKK",
      "descrizione": "Corona Danese",
      "default": false
    }
    ....
  ],
  "idClasseAutomobileUtente": 3,
  "zone": [
    {
      "id": 2,
      "descrizione": "Estero",
      "importoRimborso": 100.0
    },
    {
      "id": 1,
      "descrizione": "Italia",
      "importoRimborso": 10.0
    }
  ],
  "classiAutomobili": [
    {
      "id": 1,
      "descrizione": "fino a 1000 cc",
      "importoRimborso": 0.5
    },
    {
      "id": 2,
      "descrizione": "fino a 1600 cc",
      "importoRimborso": 0.8
    },
    {
      "id": 3,
      "descrizione": "oltre 1600 cc",
      "importoRimborso": 1.1
    }
  ]
}
timesheet/km POST xx-www-form-urlencoded

parametro descrizione default obbligatorio
idCliente L'id del cliente di cui calcolare la distanza di andata e ritorno SI
application/json
{
    "idCliente":"OCID3fsdyXDmMwS8aOnN3g%3d%3d"
}
Ritorna un numero reale secco che rappresenta la distanza (andata e ritorno) in Km es:
250.34
POST xx-www-form-urlencoded

parametro descrizione default obbligatorio
idAttivita L'id dell'attività su cui sono state segnate le note spese SI
giorno Giorno in cui sono state segnate le note spese SI
application/json
{
    "giorno" :"2017-10-02",
    "idAttivita": "Ts3JgRhcs%2bmugYGWKZGYXQ%3d%3d"
}
Ritorna l'elenco delle note spese:
[
    {
      "id": "eqVBOUK87YBOtHBpuRpgaQ%3d%3d",
      "idTipoSpesa": 15,
      "codiceCommessa": 150,
      "tipoSpesa": "a indennità trasferta",
      "importoUnitario": 100.0,
      "quantita": 1.0,
      "idValuta": "EUR",
      "idZona": 2,
      "idClasseAutomobile": 0,
      "aziendale": false,
      "documentoFileName": "",
      "documentoBase64FileData": null,
      "note": "",
      "data": "2017-10-02T00:00:00",
      "totale": 100.0,
      "cliente": "AAA",
      "tipoAttivita": "Insurance",
      "attivitaDescrizione": "aaaa",
      "commessaDescrizione": "offera test",
      "idAttivita": "Ts3JgRhcs%2bmugYGWKZGYXQ%3d%3d",
      "idCommessa": "ZVPbzPA0Csl%2fJds9NC%2fxbQ%3d%3d"
    }
    ....
]
timesheet/spese/riepilogomensile POST xx-www-form-urlencoded

parametro descrizione default obbligatorio
anno Anno di cui ottenere il riepilogo SI
mese Mese di cui ottenere il riepilogo SI
application/json
{
    "anno" :"2017",
    "mese": "10"
}
Ritorna l'elenco delle note spese di tutto un mese:
{
  "noteSpese": [
    {
      "id": "eqVBOUK87YBOtHBpuRpgaQ%3d%3d",
      "idTipoSpesa": 15,
      "codiceCommessa":"150",
      "tipoSpesa": "a indennità trasferta",
      "importoUnitario": 100.0,
      "quantita": 1.0,
      "idValuta": "EUR",
      "idZona": 2,
      "idClasseAutomobile": 0,
      "aziendale": false,
      "documentoFileName": "",
      "documentoBase64FileData": null,
      "note": "",
      "data": "2017-10-02T00:00:00",
      "totale": 100.0,
      "cliente": "AAA",
      "tipoAttivita": "Insurance",
      "attivitaDescrizione": "aaaa",
      "commessaDescrizione": "offera test",
      "idAttivita": "Ts3JgRhcs%2bmugYGWKZGYXQ%3d%3d",
      "idCommessa": "ZVPbzPA0Csl%2fJds9NC%2fxbQ%3d%3d"
    }
    ...
  ],
  "totale": 261.48
}
timesheet/spese/nota POST Inserimento di una nota spesa.

parametro descrizione default obbligatorio
idAttivita L'id dell'attività su cui sono state segnate le note spese SI
giorno Giorno in cui sono state segnate le note spese SI
nota La nota di spesa SI

application/json
{
    "giorno" :"2017-10-02",
    "idAttivita": "Ts3JgRhcs%2bmugYGWKZGYXQ%3d%3d",
    "nota":{
        "idTipoSpesa": "14",
        "importoUnitario": "2.3",
        "quantita": "15",
        "idValuta":"",
        "idZona":"",
        "idClasseAutomobile":"",
        "note":"",
        "documentoFileName":"",
        "documentoBase64FileData":" codifica base 64",
        "aziendale":"true/false",
		
    }
}
Un messaggio di risultato generico dell'operazione
{
    "successo": true,
    "messaggio": null
}
PUT Modifica di una nota spesa.

parametro descrizione default obbligatorio
idNota L'id della nota di spesa SI
nota La nota di spesa SI

application/json
{
    "idNota": "Ts3JgRhcs%2bmugYGWKZGYXQ%3d%3d",
    "nota":{
        "idTipoSpesa": "14",
        "importoUnitario": "2.3",
        "quantita": "15",
        "idValuta":"",
        "idZona":"",
        "idClasseAutomobile":"",
        "note":"",
        "documentoFileName":"",
        "documentoBase64FileData":" codifica base 64",
        "aziendale":"true/false",
		
    }
}
Un messaggio di risultato generico dell'operazione
{
    "successo": true,
    "messaggio": null
}
DELETE Eliminazione di una nota spesa.

parametro descrizione default obbligatorio
idNota L'id della nota di spesa SI

application/json
{
    "idnota" :"iqDVaJ8sl5DeyNi5lMT0xg%3d%3d"
}
Un messaggio di risultato generico dell'operazione
{
    "successo": true,
    "messaggio": null
}
timesheet/spese/nota/eliminaallegato DELETE Elimina il documento allegato a una nota spesa.

parametro descrizione default obbligatorio
idNota L'id della nota di spesa SI

application/json
{
    "idNota": "Ts3JgRhcs%2bmugYGWKZGYXQ%3d%3d"
}
Un messaggio di risultato generico dell'operazione
{
    "successo": true,
    "messaggio": null
}
timesheet/spese/download GET, POST xx-www-form-urlencoded

parametro descrizione default obbligatorio
idSpesa L'id della spesa SI
mode il modo in cui di vuole scaricare il file. I valori ammessi sono:
  • attachment
  • inline
attachment
application/json
{
    "idspesa":"0Xd8VTvbU4cJsO7d2d6JIg%3d%3d",
    "mode":"inline"
}
Il file in binario in caso di successo.
In caso di insuccesso
{
    "successo": false,
    "messaggio": "File non trovato"
}
I giustificativi possono essere richiesti, approvati, annullati, negati.
I giustificativi non possono essere eliminati, questo per non perdere traccia di ciò che è stato richiesto. I giustificativi possono essere modificati fino a che sono in stato RICHIESTO.
Metodi presenti un questa sezione:
METODO HTTP Verb PARAMETRI RISULTATO
giustificativi/ricerca POST Interrogazione giustificativi. I record vengono ritornati in ordine di data richiesta descrescente.

application/json

Viene richiesto un oggetto JSON anche parziale o nullo del seguente tipo:
{
    "pagina": 1,                               
    "recordPerPagina": 30,
    "filtri": {
        "stato":"R",
        "dataDa":"2018-02-05",
        "dataA":"2018-02-05",
        "tipo":"PROPRI",    
        
    }
}
parametro descrizione default obbligatorio
pagina pagina di record richiesta 1
recordPerPagina n° di record da recuperare 30
stato stato del giustificativo null, vengono ritornate tutti gli stati.
Gli stati ammessi sono:
  • R: richiesto
  • A: approvato
  • N: negato
  • X: annullato
dataDa data di filtro di partenza del giustificativo
dataA data di filtro di fine del giustificativo
tipo Tipologia dei giustificativi da recuperare PROPRI, Le tipologie ammesse sono:
  • PROPRI: giustificativi personali
  • ALTRUI: giustificativi di cui si è responsabili dell'approvazione

La data è nel fomato ISO yyyy-mm-ddTHH:mm:ss
Date valide possono essere:
  • 2017-12-5
  • 2017-12-5T15:12:00
Ritorna un oggetto json del tipo:
{
  "totaleRecord": 1,
  "parametriDiRicerca": {
    "filtri": {
      "stato": "R",
      "dataDa": "2018-02-05T00:00:00",
      "dataA": "2018-02-05T00:00:00"
    },
    "pagina": 1,
    "recordPerPagina": 30
  },
  "giustificativi": [
    {
      "id": "ZmuZW5WBmNaC%2frgen%2fZt%2fw%3d%3d",
      "richiedente": "Abballe Silvia",
      "approvatore": "Bestiani Sergio",
      "idApprovatore": "RyBCQyd6drmPACbyWCzT3w%3d%3d",
      "stato": "R",
      "tipoGiustificativo": "Ferie",
      "idTipoGiustificativo": "hXJJz0cBfSy6osmFSgVDTw%3d%3d",
      "giornoRichiestoDal": "2018-02-05T00:00:00",
      "giornoRichiestoAl": "2018-02-05T00:00:00",
      "giornoApprovatoDal": "2018-02-05T00:00:00",
      "giornoApprovatoAl": "2018-02-05T00:00:00",
      "oreRichieste": "04:00:00",
      "oreApprovate": "04:00:00",
      "orarioInizioMattino": "09:00:00",
      "orarioInizioPomeriggio": null,
      "orarioFineMattino": "13:00:00",
      "orarioFinePomeriggio": null
    },
    ...
  ]
}
Nel risultato vengono riportati i parametri di ricerca utilizzati, il totale dei record che corrispondo alla ricerca e i giustificativi trovati in base al numero di pagina e ai record per pagina.
giustificativi/info POST Recupera tutte le tipologie di giustificativi disponibili.

Tra gli approvatori disponibili quello che ha default a true deve essere preimpostato come default in fase di inserimento.

Nei tipi di giustificativo i campi
  • inserimentoOrarioConsentito: indica che si possono inserire gli orari
  • inserimentoOrarioObbligatorio: indica che si devono inserire gli orario
Ritorna un oggetto json del tipo:
{
  "tipiGiustificativo": [
    {
      "id": "CpZ52z2R1Et8%2fNruZomjyg%3d%3d",
      "descrizione": "Allattamento",
      "inserimentoOrarioConsentito": true,
      "inserimentoOrarioObbligatorio": true,
      "colore": "AntiqueWhite"
    },
    {
      "id": "hXJJz0cBfSy6osmFSgVDTw%3d%3d",
      "descrizione": "Ferie",
      "inserimentoOrarioConsentito": true,
      "inserimentoOrarioObbligatorio": false,
      "colore": "Sienna"
    },
    {
      "id": "%2bhXASM3iGtVw2r47AAnfKg%3d%3d",
      "descrizione": "Infortunio",
      "inserimentoOrarioConsentito": false,
      "inserimentoOrarioObbligatorio": false,
      "colore": "RoyalBlue"
    },
    {
      "id": "XmSpkUWxwAnNXIistdVoqA%3d%3d",
      "descrizione": "Lavoro da casa",
      "inserimentoOrarioConsentito": false,
      "inserimentoOrarioObbligatorio": false,
      "colore": "RoyalBlue"
    },
    {
      "id": "%2frbtLtY0Da6gWhwBvkE9yg%3d%3d",
      "descrizione": "Licenza Matrimoniale",
      "inserimentoOrarioConsentito": false,
      "inserimentoOrarioObbligatorio": false,
      "colore": ""
    },
    {
      "id": "t2%2b81zYVmguR43bqt5Zvqg%3d%3d",
      "descrizione": "Lutto",
      "inserimentoOrarioConsentito": false,
      "inserimentoOrarioObbligatorio": false,
      "colore": "RoyalBlue"
    },
    {
      "id": "F4CpyMRL5Xv1H7D%2f%2bF9yOQ%3d%3d",
      "descrizione": "Malattia",
      "inserimentoOrarioConsentito": false,
      "inserimentoOrarioObbligatorio": false,
      "colore": "RoyalBlue"
    },
    ...
  ],
  "approvatori": [
    {
      "id": "nKI260lcS8T4AGEbI2%2bYag%3d%3d",
      "nominativo": "adm Marangoni",
      "default": false
    },
    {
      "id": "kso%2fXxRWH7GGH1D1y6teWQ%3d%3d",
      "nominativo": "Alagia Giancarlo",
      "default": false
    },
    {
      "id": "1bX1CftBga2FSSkSRKWZkQ%3d%3d",
      "nominativo": "Alghisi Mariangela",
      "default": true
    },
    ...
  ]
}
giustificativi POST Inserisce un nuovo giustificativo.

application/json

Viene richiesto un oggetto JSON anche parziale o nullo del seguente tipo:
{
    "IDTipoGiustificativo": "hXJJz0cBfSy6osmFSgVDTw%3d%3d",                               
    "IDApprovatore": "RyBCQyd6drmPACbyWCzT3w%3d%3d",
    "GiornoInizio":"2018-02-08",
    "GiornoFine":"2018-02-09",
    "Ore":"08:00:00",
    "Continuazione":"false",
    "NumeroProtocollo":"XXX",
    "OrarioInizioMattino":"09:00:00",
    "OrarioFineMattino":"13:00:00",
    "OrarioInizioPomeriggio":"14:00:00",
    "OrarioFinePomeriggio":"18:00:00"
}
parametro descrizione default obbligatorio
IDTipoGiustificativo id del tipo digiustificativo SI
IDApprovatore id della risorsa approvatore SI
GiornoInizio giorno in cui il giustificativo inizia SI
GiornoFine giorno in cui il giustificativo termina SI
Ore Ore del gisutificativo intese come ore al giorno SI
Continuazione Per la malattia indica se è la continuazione di un'altro giustificativo
NumeroProtocollo Per gisutificativo di tipo malattia
OrarioInizioMattino Orario di inizio mattutino Se previsto dal tipo giustificativo
OrarioFineMattino Orario di fine mattutino Se previsto dal tipo giustificativo
OrarioInizioPomeriggio Ore del gisutificativo intese come ore al giorno Orario di inizio pomeridiano Se previsto dal tipo giustificativo
OrarioFinePomeriggio Ore del gisutificativo intese come ore al giorno Orario di fine pomeridiano Se previsto dal tipo giustificativo

La data è nel fomato ISO yyyy-mm-dd
Date valide possono essere:
  • 2017-12-5
Ritorna un oggetto json del tipo:
in caso di successo

{
  "successo": "true",
  "messaggio": ""
}

in caso di errore

{
  "successo": "false",
  "messaggio": "messaggio dell'errore"
}
PUT Aggiorna un giustificativo se si trova ancora in stato RICHIESTO.

application/json

Viene richiesto un oggetto JSON anche parziale o nullo del seguente tipo:
{
    "IDGiustificativo":"S1nVCmMJ0WxVFr3eqQnJ7A%3d%3d",
    "IDTipoGiustificativo": "hXJJz0cBfSy6osmFSgVDTw%3d%3d",                               
    "IDApprovatore": "RyBCQyd6drmPACbyWCzT3w%3d%3d",
    "GiornoInizio":"2018-02-08",
    "GiornoFine":"2018-02-09",
    "Ore":"08:00:00",
    "Continuazione":"false",
    "NumeroProtocollo":"XXX",
    "OrarioInizioMattino":"09:00:00",
    "OrarioFineMattino":"13:00:00",
    "OrarioInizioPomeriggio":"14:00:00",
    "OrarioFinePomeriggio":"18:00:00"
}
parametro descrizione default obbligatorio
IDGiustificativo id del giustificativo da modificare SI
IDTipoGiustificativo id del tipo di giustificativo SI
IDApprovatore id della risorsa approvatore SI
GiornoInizio giorno in cui il giustificativo inizia SI
GiornoFine giorno in cui il giustificativo termina SI
Ore Ore del gisutificativo intese come ore al giorno SI
Continuazione Per la malattia indica se è la continuazione di un'altro giustificativo
NumeroProtocollo Per gisutificativo di tipo malattia
OrarioInizioMattino Orario di inizio mattutino Se previsto dal tipo giustificativo
OrarioFineMattino Orario di fine mattutino Se previsto dal tipo giustificativo
OrarioInizioPomeriggio Ore del gisutificativo intese come ore al giorno Orario di inizio pomeridiano Se previsto dal tipo giustificativo
OrarioFinePomeriggio Ore del gisutificativo intese come ore al giorno Orario di fine pomeridiano Se previsto dal tipo giustificativo

La data è nel fomato ISO yyyy-mm-dd
Date valide possono essere:
  • 2017-12-5
Ritorna un oggetto json del tipo:
in caso di successo

{
  "successo": "true",
  "messaggio": ""
}

in caso di errore

{
  "successo": "false",
  "messaggio": "messaggio dell'errore"
}
giustificativi/approva POST Approva un giustificativo.

application/json

Viene richiesto un oggetto JSON anche parziale o nullo del seguente tipo:
{
    "IDGiustificativo":"S1nVCmMJ0WxVFr3eqQnJ7A%3d%3d",
}
parametro descrizione default obbligatorio
IDGiustificativo id del giustificativo da modificare SI
Ritorna un oggetto json del tipo:
in caso di successo

{
  "successo": "true",
  "messaggio": ""
}

in caso di errore

{
  "successo": "false",
  "messaggio": "messaggio dell'errore"
}
giustificativi/nega POST Nega un giustificativo.

application/json

Viene richiesto un oggetto JSON anche parziale o nullo del seguente tipo:
{
    "IDGiustificativo":"S1nVCmMJ0WxVFr3eqQnJ7A%3d%3d",
}
parametro descrizione default obbligatorio
IDGiustificativo id del giustificativo da modificare SI
Ritorna un oggetto json del tipo:
in caso di successo

{
  "successo": "true",
  "messaggio": ""
}

in caso di errore

{
  "successo": "false",
  "messaggio": "messaggio dell'errore"
}
giustificativi/annulla POST Annulla un giustificativo.

application/json

Viene richiesto un oggetto JSON anche parziale o nullo del seguente tipo:
{
    "IDGiustificativo":"S1nVCmMJ0WxVFr3eqQnJ7A%3d%3d",
}
parametro descrizione default obbligatorio
IDGiustificativo id del giustificativo da modificare SI
Ritorna un oggetto json del tipo:
in caso di successo

{
  "successo": "true",
  "messaggio": ""
}

in caso di errore

{
  "successo": "false",
  "messaggio": "messaggio dell'errore"
}

In questa sezione sono esposti i metodi necessari alla gestione delle ore nei task.
Per recuperare il tipo di operazioni (inserimento, modifica, lettura) che l'utente può effettuare si rimanda al permesso "Tasks", recuperato in fase di login.
Dal login si evince anche se l'utente collegato è un cliente o una risorsa.
E' una risorsa se utente = true, è un cliente se cliente = true

Quello che in questo manuale viene indicato con commessa/e in fase di visualizzazione per uniformità con l'applicativo web deve essere etichettato con 'Oggetto'.

In fase di inserimento di un task si deve prima richiedere il cliente con il metodo tasks/clienti e poi la commessa con tasks/commesse.
Nel caso l'utente collegato sia un cliente o la lista dei clienti ritornati contenga un solo elemento, allora bisogna richiedere solo la commessa (oggetto).

Per conoscere quali campi l'utente collegato può inserire in un nuovo task lo si recupera dal metodo tasks/info oggetto campiInseribili.

Per conoscere quali campi l'utente collegato può modificare di un task lo si recupera dall'oggetto task risultato di una ricerca nell'oggetto campiModificabili.

Metodi presenti un questa sezione:
METODO HTTP Verb PARAMETRI RISULTATO
tasks POST Inserimento di un task

application/json

Viene richiesto un oggetto JSON anche parziale o nullo del seguente tipo:
{
    "idCommessa":"mu%2b7%2b003%2bFOVfGmeq6HnTQ%3d%3d",
    "idAttivita":"TDmtle2lHx6tUbBIe6eJBA%3d%3d",
    "idRisorsaAssegnata":"xiqfS2TmC14Zo5n8YLDTGw%3d%3d",
    "idReferente":"eUJax1EvTl4cpJVA9mejjA%3d%3d",
    "titolo":"test mobile",
    "idStato":"F4CpyMRL5Xv1H7D%2f%2bF9yOQ%3d%3d",
    "idPriorita":"F4CpyMRL5Xv1H7D%2f%2bF9yOQ%3d%3d",
    "idTracker":"hXJJz0cBfSy6osmFSgVDTw%3d%3d",
    "visibileAlCliente":"true",
    "dataInizioPrevista":"",
    "dataFinePrevista":"",
    "oreStimate":"",
    "descrizione":"si prega di correggere"
}
parametro descrizione default obbligatorio
IDCommessa id della commessa (oggetto) del task 1
IDAttivita ID attivita della commessa
IDRisorsaAssegnata ID della risorsa assegnataria
IDReferente ID del referente del Cliente
Titolo Titolo del task 1
IDStato ID dello stato del task 1
IDPriorita ID della priorità del task 1
IDTracker ID tracker del task
VisibileAlCliente indica se il task deve essere visibile al cliente, tale opzione è valida solo per i task non inseriti dal cliente stesso
DataInizioPrevista Data di inizio prevista
DataFinePrevista Data di fine prevista
OreStimate Ore stimate
Descrizione Descrizione del task 1
Ritorna un oggetto json del tipo:
{
    "successo": true,
    "messaggio": null,
    "idAttivita": "KYzmBy72yMFE0loRFyfLQw%3d%3d"
    "idTask":"aYcnzy72yamf0loRFyfLQw%3d%3d"
}
L'id dell'attività tornato è utile nel caso si voglia allegare dei file al task.
Per allegare i file occorre utilizzare il metodo tasks/allegato/upload che richiede l'id dell'attività su cui allegare i file.
PUT Modifica di un task

application/json

Viene richiesto un oggetto JSON anche parziale o nullo del seguente tipo:
{
    "id":"alftle2lHx6tUbBIe6eJBA%3d%3d" 
    "idAttivita":"TDmtle2lHx6tUbBIe6eJBA%3d%3d",
    "idRisorsaAssegnata":"xiqfS2TmC14Zo5n8YLDTGw%3d%3d",
    "idReferente":"eUJax1EvTl4cpJVA9mejjA%3d%3d",
    "titolo":"test mobile",
    "idStato":"F4CpyMRL5Xv1H7D%2f%2bF9yOQ%3d%3d",
    "idPriorita":"F4CpyMRL5Xv1H7D%2f%2bF9yOQ%3d%3d",
    "idTracker":"hXJJz0cBfSy6osmFSgVDTw%3d%3d",
    "visibileAlCliente":"true",
    "dataInizioPrevista":"",
    "dataFinePrevista":"",
    "oreStimate":"",
    "descrizione":"abbiamo corretto"
}
parametro descrizione default obbligatorio
ID id del task 1
IDAttivita ID attivita della commessa
IDRisorsaAssegnata ID della risorsa assegnataria
IDReferente ID del referente del Cliente
Titolo Titolo del task 1
IDStato ID dello stato del task 1
IDPriorita ID della priorità del task 1
IDTracker ID tracker del task
VisibileAlCliente indica se il task deve essere visibile al cliente, tale opzione è valida solo per i task non inseriti dal cliente stesso
DataInizioPrevista Data di inizio prevista
DataFinePrevista Data di fine prevista
OreStimate Ore stimate
Descrizione Descrizione del task 1
Ritorna un oggetto json del tipo:
{
    "successo": true,
    "messaggio": null,
    "idAttivita": "KYzmBy72yMFE0loRFyfLQw%3d%3d"
    "idTask":"aYcnzy72yamf0loRFyfLQw%3d%3d"
}
L'id dell'attività tornato è utile nel caso si voglia allegare dei file al task.
Per allegare i file occorre utilizzare il metodo tasks/allegato/upload che richiede l'id dell'attività su cui allegare i file.
tasks/ricerca POST Interrogazione tasks. I record vengono ritornati in ordine di ID decrescente.

application/json

Viene richiesto un oggetto JSON anche parziale o nullo del seguente tipo:
{
    "pagina": 1,                               
    "recordPerPagina": 30,
    "filtri": {
        "ID":"XXX",
        "IDCliente":"XXX",
        "IDCommessa":"XXX",
        "IDStato":"XXX",
        "IDPriorita":"XXX",
        "IDTracker":"XXX",
        "Titolo":"",
        "Oggetto":"",
        "Cliente":"",
        "tipo":"PROPRI"
    }
}


L'oggetto "campiModificabili" indica quali campi può modificare l'utente collegato.
parametro descrizione default obbligatorio
pagina pagina di record richiesta 1
recordPerPagina n° di record da recuperare 30
ID ID del task
IDCliente ID del cliente del task
IDCommessa ID della commessa (oggetto) del task
IDStato ID dello stato del task
IDPriorita ID della priorità del task
IDTracker ID tracker del task
Oggetto testo anche parziale dell'oggetto del task
tipo Tipologia del task da recuperare PROPRI, Le tipologie ammesse sono:
  • PROPRI: task assegnati alla risorsa
  • ALTRUI: task assegnati ad altre risorse ma che l'utente può vedere
  • TUTTI: tutti i task che l'utente può vedere
Ritorna un oggetto json del tipo:
{
    "totaleRecord": 1,
    "parametriDiRicerca": {
        "filtri": {
            "id": null,
            "idStato": null,
            "idPriorita": null,
            "idTracker": null,
            "titolo": null,
            "oggetto": null,
            "cliente": "intesa",
            "tipo": "TUTTI",
            "idCliente": null,
            "idCommessa": null
        },
        "pagina": 1,
        "recordPerPagina": 30
    },
    "tasks": [
        {
            "descrizione": "Altra prova",
            "id": "hXJJz0cBfSy6osmFSgVDTw%3d%3d",
            "idCliente": "Gbat5GZq8ZKuB94slp7a2w%3d%3d",
            "idCommessa": "391OJqER7ruNDpJwMthfhA%3d%3d",
            "numero": 2,
            "cliente": "INTESA SAN PAOLO",
            "titolo": "Aridai",
            "oggetto": "26 - Intesa san Paolo Servizi professionali",
            "attivita": "",
            "stato": "Commenti",
            "coloreStato": "",
            "tracker": "Debug",
            "priorita": "Alta",
            "colorePriorita": "Red",
            "creatore": "Abballe Silvia",
            "oreStimate": null,
            "dataInizioPrevista": null,
            "dataFinePrevista": null,
            "tipologieOreAmmesse": [
                "ORE_ORDINARIE"
            ],
            "ore": 0,
            "ultimoCommento": "prova",
            "creatoDalCliente": false,
            "bloccato": false,
            "campiModificabili": {
                "idCommessa": false,
                "idAttivita": true,
                "idRisorsaAssegnata": true,
                "idReferente": true,
                "titolo": true,
                "idStato": true,
                "idPriorita": true,
                "idTracker": true,
                "visibileAlCliente": true,
                "dataInizioPrevista": true,
                "dataFinePrevista": true,
                "oreStimate": true,
                "descrizione": true
            },
            "tasksCollegati": [
                {
                    "id": "HV5WTsJgnHGnxfJR%2bzpz%2bA%3d%3d",
                    "valore": "40"
                },
                {
                    "id": "jpG1UWSdEFAkcdyvg0Hgsw%3d%3d",
                    "valore": "41"
                },
                {
                    "id": "U6iV19RlL%2bix6rLZ%2fRwqyg%3d%3d",
                    "valore": "42"
                },
                {
                    "id": "K8IL4ILX185br1i8Du7H7w%3d%3d",
                    "valore": "43"
                }
            ]
        }
    ],
    "clienti": [
        {
            "id": "Gbat5GZq8ZKuB94slp7a2w%3d%3d",
            "descrizione": "INTESA SAN PAOLO"
        }
    ],
    "commesse": [
        {
            "id": "391OJqER7ruNDpJwMthfhA%3d%3d",
            "descrizione": "26 - Intesa san Paolo Servizi professionali"
        }
    ]
}
Nel risultato vengono riportati i parametri di ricerca utilizzati, il totale dei record che corrispondo alla ricerca e i tasks trovati in base al numero di pagina e ai record per pagina.
tasks/cronologia POST Recupera la cronologia delle attività sul task:
La prima attività corrisponde al primo inserimento e rappresenta anche la descrizione generale del task.

Viene richiesto un oggetto JSON del seguente tipo:
{
    "id":"F4CpyMRL5Xv1H7D%2f%2bF9yOQ%3d%3d",
}
parametro descrizione default obbligatorio
id id del task SI
Ritorna un oggetto json del tipo:
{
    "attivita": [
        {
            "risorsa": true,
            "cliente": false,
            "id": "F4CpyMRL5Xv1H7D%2f%2bF9yOQ%3d%3d",
            "codice": 1,
            "data": "2018-02-14T23:15:11.85",
            "descrizione": "
    \r\n\t
  1. \r\n\t\tTesto di prova ciao a tutti e quanti
  2. \r\n
\r\n", "stato": "Inserito", "attore": "Abballe Silvia", "ordine": 1, "dettaglioCreazione": "Creato da Abballe Silvia mercoledì 14 febbraio 2018, 6 mesi fa", "dataTempo": "mercoledì 14 febbraio 2018 alle 23:15, 6 mesi fa", "allegati": [ { "filename": "carta_itentita_dentro.png", "fileSize": 1500414, "fileSizeString": "1,43 MB", "id": "F4CpyMRL5Xv1H7D%2f%2bF9yOQ%3d%3d" }, { "filename": "comuni.sql", "fileSize": 2667414, "fileSizeString": "2,54 MB", "id": "hXJJz0cBfSy6osmFSgVDTw%3d%3d" }, { "filename": "script_16.0.10.sql", "fileSize": 55, "fileSizeString": "55 B", "id": "EX0Ja9M%2bez9uY9qngwtJmw%3d%3d" }, { "filename": "script_16.0.11.sql", "fileSize": 589, "fileSizeString": "589 B", "id": "%2fsDwt%2bG9RlyxrJ1j87oNOQ%3d%3d" } ] }, { "risorsa": true, "cliente": false, "id": "hXJJz0cBfSy6osmFSgVDTw%3d%3d", "codice": 2, "data": "2018-02-14T23:25:45.49", "descrizione": "ariprova", "stato": "Inserito", "attore": "Abballe Silvia", "ordine": 2, "dettaglioCreazione": "Creato da Abballe Silvia mercoledì 14 febbraio 2018, 6 mesi fa", "dataTempo": "mercoledì 14 febbraio 2018 alle 23:25, 6 mesi fa", "allegati": [ { "filename": "carta_itentita_dentro.png", "fileSize": 1500414, "fileSizeString": "1,43 MB", "id": "%2bdnRvrUqHBHUGXpYRIClbg%3d%3d" }, { "filename": "img20180102_15022842.pdf", "fileSize": 152286, "fileSizeString": "148,72 KB", "id": "t2%2b81zYVmguR43bqt5Zvqg%3d%3d" }, { "filename": "TAG.docx", "fileSize": 14798, "fileSizeString": "14,45 KB", "id": "OwHNGmtCvO0%2bAMfCf28vZw%3d%3d" } ] }, .... ] }
tasks/allegato GET, POST xx-www-form-urlencoded

parametro descrizione default obbligatorio
id L'id dell'allegato SI
mode il modo in cui di vuole scaricare il file. I valori ammessi sono:
  • attachment
  • inline
attachment
application/json
{
    "id":"0Xd8VTvbU4cJsO7d2d6JIg%3d%3d",
    "mode":"inline"
}
Il file in binario in caso di successo.
In caso di insuccesso
{
    "successo": false,
    "messaggio": "File non trovato"
}
tasks/allegato/upload POST
parametro descrizione default obbligatorio
idAttivita L'id dell'attività del task a cui associare l'allegato SI
allegatoFileName nome del file dell'allegato SI
allegatoBase64FileData codifica base 64 SI


application/json
{
    "idTask":"F4CpyMRL5Xv1H7D%2f%2bF9yOQ%3d%3d",
	"idAttivita":"F4CpyMRL5Xv1H7D%2f%2bF9yOQ%3d%3d",
	"allegatoFilename":"icona.png",
	"allegatoBase64Filedata":"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8...."
}


Quando si esegue un upload di più file è necessario impostare come parametri idTask e idAttivita quelli restituiti dall'ultimo upload eseguito.
Questo perchè non viene sempre creata una nuova attività nel task, ma solamente al cambio di stato o se è stato inserito qualcosa nella descrizione o se si è caricato un file.
Siccome per mobile il caricamento multiplo di file è un'operazione successiva alla modifica, potrebbe essere che l'idAttivita ritornato sia 0 per cui l'upload di un file genera inizialmente la nuova attività sul task.
Per non generare poi n attività quanti sono i file che si vogliono caricare, è necessario passare l'idAttività generato dall' upload.
Un messaggio di risultato dell'operazione
{
    "successo": true,
    "messaggio": "",
    "idTask": "xxxxxxxxxx",
    "idAttivita": "xxxxxxxxxxx",
}


tasks/info POST Info sui tasks

E' importante utilizzare l'oggetto "campiInseribili" che a seconda dell'utente collegato indica quali campi l'utente può inserire in un nuovo task
Ritorna un oggetto json del tipo:
{
    "stati": [
        {
            "iniziale": false,
            "completato": true,
            "coloreNome": "PaleGoldenrod",
            "coloreEsadecimale": "#EEE8AA",
            "coloreRGB": "238,232,170",
            "id": "OwHNGmtCvO0%2bAMfCf28vZw%3d%3d",
            "descrizione": "Annullato"
        },
        {
            "iniziale": false,
            "completato": true,
            "coloreNome": "DarkGreen",
            "coloreEsadecimale": "#006400",
            "coloreRGB": "0,100,0",
            "id": "%2bdnRvrUqHBHUGXpYRIClbg%3d%3d",
            "descrizione": "Chiuso"
        },
        {
            "iniziale": false,
            "completato": false,
            "coloreNome": "",
            "coloreEsadecimale": "#000000",
            "coloreRGB": "0,0,0",
            "id": "hXJJz0cBfSy6osmFSgVDTw%3d%3d",
            "descrizione": "Commenti"
        },
        {
            "iniziale": false,
            "completato": false,
            "coloreNome": "",
            "coloreEsadecimale": "#000000",
            "coloreRGB": "0,0,0",
            "id": "%2fsDwt%2bG9RlyxrJ1j87oNOQ%3d%3d",
            "descrizione": "Da pubblicare"
        },
        {
            "iniziale": false,
            "completato": false,
            "coloreNome": "",
            "coloreEsadecimale": "#000000",
            "coloreRGB": "0,0,0",
            "id": "EX0Ja9M%2bez9uY9qngwtJmw%3d%3d",
            "descrizione": "In lavorazione"
        },
        {
            "iniziale": true,
            "completato": false,
            "coloreNome": "Red",
            "coloreEsadecimale": "#FF0000",
            "coloreRGB": "255,0,0",
            "id": "F4CpyMRL5Xv1H7D%2f%2bF9yOQ%3d%3d",
            "descrizione": "Inserito"
        }
    ],
    "trackers": [
        {
            "id": "hXJJz0cBfSy6osmFSgVDTw%3d%3d",
            "descrizione": "Bug fixing"
        },
        {
            "id": "F4CpyMRL5Xv1H7D%2f%2bF9yOQ%3d%3d",
            "descrizione": "Debug"
        },
        {
            "id": "EX0Ja9M%2bez9uY9qngwtJmw%3d%3d",
            "descrizione": "Nuova funzionalità"
        }
    ],
    "priorita": [
        {
            "coloreNome": "Red",
            "coloreEsadecimale": "#FF0000",
            "coloreRGB": "255,0,0",
            "id": "F4CpyMRL5Xv1H7D%2f%2bF9yOQ%3d%3d",
            "descrizione": "Alta"
        },
        {
            "coloreNome": "Cornsilk",
            "coloreEsadecimale": "#FFF8DC",
            "coloreRGB": "255,248,220",
            "id": "EX0Ja9M%2bez9uY9qngwtJmw%3d%3d",
            "descrizione": "Bassa"
        },
        {
            "coloreNome": "Orange",
            "coloreEsadecimale": "#FFA500",
            "coloreRGB": "255,165,0",
            "id": "hXJJz0cBfSy6osmFSgVDTw%3d%3d",
            "descrizione": "Media"
        },
        {
            "coloreNome": "OliveDrab",
            "coloreEsadecimale": "#6B8E23",
            "coloreRGB": "107,142,35",
            "id": "%2fsDwt%2bG9RlyxrJ1j87oNOQ%3d%3d",
            "descrizione": "Normale"
        }
    ],
    "campiInseribili": {
        "idCommessa": true,
        "idAttivita": true,
        "idRisorsaAssegnata": false,
        "idReferente": false,
        "titolo": true,
        "idStato": true,
        "idPriorita": true,
        "idTracker": false,
        "visibileAlCliente": false,
        "dataInizioPrevista": true,
        "dataFinePrevista": true,
        "oreStimate": false,
        "descrizione": true
    }
}
tasks/ore POST Metodo per inserire/modificare le ore in un task application/json

Viene richiesto un oggetto JSON anche parziale o nullo del seguente tipo:
{
    "idTask":"t2%2b81zYVmguR43bqt5Zvqg%3d%3d",
    "giorno":"2018-3-4",
    "ore":"01:30:00",
    "tipologiaOre":"ORE_REPERIBILITA",
    "descrizione":"test"
    
}
parametro descrizione default obbligatorio
idTask Codice del task SI
giorno Giorno SI
ore Ore SI
tipologiaOre Tipologia delle ore SI
descrizione descrizione attività

Le tipologie di ore ammesse possono essere:
  • ORE_ORDINARIE: Inserimento ore ordinarie
  • ORE_REPERIBILITA: Inserimento ore di reperibilità
  • ORE_INTERVENTO_REPERIBILITA: Inserimento ore di intervento in reperibilità
  • ORE_INTERVENTO_REPERIBILITA_NOTTURNE: Inserimento ore notturne
  • ORE_STRAORDINARIO: Inserimento ore di straordinario
  • ORE_STRAORDINARIO_NOTTURNO: Inserimento ore di strordinario notturno
Ritorna un oggetto json del tipo:
In caso si successo
{
    "successo": true,
    "messaggio": "OK"
}

In caso di errore
{
    "successo": false,
    "messaggio": "messaggio d'errore"
}
DELETE Metodo per eliminare le ore in un task application/json

Viene richiesto un oggetto JSON del seguente tipo:
{
    "idTask":"t2%2b81zYVmguR43bqt5Zvqg%3d%3d",
    "giorno":"2018-3-4",
}
parametro descrizione default obbligatorio
idTask Codice del task SI
giorno Giorno SI
Ritorna un oggetto json del tipo:
In caso si successo
{
    "successo": true,
    "messaggio": "OK"
}

In caso di errore
{
    "successo": false,
    "messaggio": "messaggio d'errore"
}
tasks/clienti POST Clienti a cui associare un task:

Viene richiesto un oggetto JSON del seguente tipo:
{
    "nominativo":""
}
parametro descrizione default obbligatorio
nominativo nome anche parziale del cliente
Ritorna un oggetto json del tipo:
[
    {
        "id": "wfBywOmBlubdngVnHjvk7g%3d%3d",
        "nome": "Auxilia Finance s.r.l.",
        "referenti": []
    },
    {
        "id": "ErGatWVHlUeEz3Jqw28Hjw%3d%3d",
        "nome": "Banca Popolare di Milano",
        "referenti": []
    },
    {
        "id": "rskSvcfhtzjIsJOJARgQmQ%3d%3d",
        "nome": "Banca Popolare Emilia Romagna",
        "referenti": []
    },
    {
        "id": "xiqfS2TmC14Zo5n8YLDTGw%3d%3d",
        "nome": "IL SOLE 24ORE",
        "referenti": [
            {
                "id": "qjITLQLywHUhTZ78RC7hzA%3d%3d",
                "nominativo": "Golia Attilio"
            },
            {
                "id": "vwgmgoKRH4%2bxMQ98TV1SjA%3d%3d",
                "nominativo": "Mengozzi Paolo"
            },
            {
                "id": "4NsAaujLgCCq%2fCAmAF3GUQ%3d%3d",
                "nominativo": "Parenti Emanuele"
            }
        ]
    }
]
tasks/commesse POST Commesse (oggetto) del task:

Viene richiesto un oggetto JSON del seguente tipo:
{
	"idCliente":"xiqfS2TmC14Zo5n8YLDTGw%3d%3d",
	"descrizione":""
}
parametro descrizione default obbligatorio
IDCliente Identificativo del cliente SI
Descrizione Descrizione della commessa
Ritorna un oggetto json del tipo:
[
    {
        "id": "ZgCJwWLtBKQJIXVENVP0mw%3d%3d",
        "descrizione": "Database Administration",
        "cliente": null,
        "idCliente": null,
        "settore": null,
        "codice": 116,
        "tipologieOreAmmesse": [],
        "attivita": [
            {
                "id": "76zugPbJRCveCU5ZmWeDyg%3d%3d",
                "descrizione": "dba",
                "risorse": [
                    {
                        "id": "7HhASB811d3MmMB4CcCoBQ%3d%3d",
                        "nominativo": "Gellera Lara",
                        "default": false
                    },
                    {
                        "id": "o5iyQiV7l1HmFuz1yhuBBQ%3d%3d",
                        "nominativo": "Lombardi Marco",
                        "default": false
                    },
                    {
                        "id": "nbN4VAuP7H5CtVUrMve7iQ%3d%3d",
                        "nominativo": "More' Roberta",
                        "default": false
                    }
                ]
            },
            {
                "id": "cKjew%2b0ldh%2bnw4evpZMqdQ%3d%3d",
                "descrizione": "dba - non fatturabile",
                "risorse": [
                    {
                        "id": "YfpBOGKbbphrP3j8H9rJFQ%3d%3d",
                        "nominativo": "Basso Stefano",
                        "default": false
                    },
                    {
                        "id": "nbN4VAuP7H5CtVUrMve7iQ%3d%3d",
                        "nominativo": "More' Roberta",
                        "default": false
                    }
                ]
            }
        ]
    },
    {
        "id": "hhakvBrbVxIzeL6%2fLCjENA%3d%3d",
        "descrizione": "Presidio / Monitoring",
        "cliente": null,
        "idCliente": null,
        "settore": null,
        "codice": 271,
        "tipologieOreAmmesse": [],
        "attivita": [
            {
                "id": "u5ci50nG6iTHlmLqc%2fHEyg%3d%3d",
                "descrizione": "Presidio sistemistico remoto BPM",
                "risorse": [
                    {
                        "id": "7EiZX%2f7SFVdcQexiA%2fwWEw%3d%3d",
                        "nominativo": "Turatti Cristina",
                        "default": false
                    }
                ]
            },
            {
                "id": "uLDpdkLlzU6iVlrgRV8pEQ%3d%3d",
                "descrizione": "Avviamento attività Presidio",
                "risorse": [
                    {
                        "id": "7EiZX%2f7SFVdcQexiA%2fwWEw%3d%3d",
                        "nominativo": "Turatti Cristina",
                        "default": false
                    }
                ]
            }
        ]
    }
]
In questa sezione sono esposti i metodi per gestire le informazione dell'utente
Metodi presenti un questa sezione:
METODO HTTP Verb PARAMETRI RISULTATO
utente/foto POST Consente di inserire la foto dell'utente

application/json

Viene richiesto un oggetto JSON del seguente tipo:
{
    "base64FileData":""
}
parametro descrizione default obbligatorio
base64FileData Immagine in formato base64
Ritorna un oggetto json del tipo:
In caso si successo
{
    "successo": true,
    "messaggio": ""
}

In caso di errore
{
    "successo": false,
    "messaggio": "messaggio d'errore"
}
DELETE Consente di eliminare la foto dell'utente Ritorna un oggetto json del tipo:
In caso si successo
{
    "successo": true,
    "messaggio": ""
}

In caso di errore
{
    "successo": false,
    "messaggio": "messaggio d'errore"
}
utente/foto/download POST Consente di scaricare la foto dell'utente Ritorna un oggetto json del tipo:
In caso si successo lo stream di byte dell'immagine


In caso di errore
{
    "successo": false,
    "messaggio": "messaggio d'errore"
}

Per esecuire i serivi presenti in questa sezione è necessario utilizzare un utente che abbia il permesso "Accesso API"

Metodi presenti un questa sezione:
  • timbrature metodo per inserire le timbrature e in generale le ore della risorsa compresi quindi anche le ore giustificate
METODO HTTP Verb PARAMETRI RISULTATO
timbrature POST Questo metodo consente di inserire le timbrature/ore delle risorse.

application/json

Viene richiesto un oggetto JSON anche parziale del seguente tipo:
{
   "data":"2020-03-02",
   "matricola":"200",
   "timbrature":[
      {
         "causale":"FERIE",
         "descrizione":"Ferie",
         "minuti":"120"
      },
      {
         "causale":"ORD",
         "descrizione":"Ore ordinarie",
         "minuti":"180"
      },
      {
         "causale":"STRA",
         "descrizione":"Ore straordinario",
         "minuti":"3"
      },
      {
         "ingresso":"true",
         "minuti":"1000"
      },
      {
         "uscita":"true",
         "minuti":"1123"
      }
   ]
}

parametro descrizione default obbligatorio
data Data di riferimento della timbratura/ore SI
matricola matricola della risorsa SI
timbrature array di oggetti ti tipo timbratura SI

La data è nel fomato ISO yyyy-mm-dd
Date valide possono essere:
  • 2017-12-5
  • 2020-01-25

L'oggetto timbratura contiene i seguenti campi:
parametro descrizione default obbligatorio
causale Codice che identifica la tipologia di ore SI
descrizione descrizione della tipologia di ore
minuti numero di minuti SI
entrata identifica un timbratura di ingresso
uscita identifica un timbratura in uscita

L'oggetto timbratura può essere utilizzato per passare le timbrature così come sono state ricevute dal sistema di rilevamento delle presente, ossia indicando "ingresso", "uscita". Il numero di timbrature in ingresso deve essere uguale al numero di timbrature in uscita. In questo caso si può omettere la causale in quanto sarà COMETA ad associare le ore alla causale configurata come marcatura.
Le ore saranno calcolare come differenza tra i minuti di uscita e i minuti di ingresso.

Più in generale se non si vuole utilizzare il sistema di ingresso e uscita, e per tutte le ore che non possono essere gestite da un sistema di rilevamento delle presenze come ad esempio i giustificativi occorre specificare la causale con la relativa descrizione e in questo caso le ore saranno calcolatre sulla base dei minuti.

Attenzione!
Tutte le causali che non sono presenti in COMETA saranno aggiunte in automatico e impostate come ore ordinarie.
Il consiglio è quindi quello di andare a configurare correttamente ogni causale in COMETA al termine della prima importazione o comunque verificare che in COMETA siano configurate bene tutte le causali.

Ritorna un oggetto json del tipo in caso di successo:
{
  "successo": true,
  "messaggio": null
}
In caso di errore:
{
  "successo": false,
  "messaggio": "Descrizione dell'errore"
}

To run the services in this section you need to use a user that has permission "Accesso API".

The authentication token is returned by the login method and has a time validity.
The token must generally be passed in the request header with the name: "token". It is required for all methods except login
Alternatively, the token can also be passed as a "token" parameter in the request url, useful when no header can be passed to the request.
You can check the validity of the token with the checktoken method.
If the token has expired, you must retrieve another one simply by logging in.

Endpoint: https://www.cometasoftware.com/cometaapi/

The procedure consists of:

  1. Login with a service user with the right permissions and get token
  2. Get orders in order to create a task
  3. Create Task and store somewhere the id to link Jira Task with Cometa Task
  4. Finally you can insert/modify/delete hours

Methods present in this section:
  • login this method allows login and get token for all other requests
  • jira/orders this method allows to get orders from Cometa in order to get Order ID and Activity ID
  • jira/task/create this method allows to create a Comets a Task from e Jira Task
  • jira/task/status this method allows to change status of the task
  • jira/task/statusList this method allows retrieve the list of available task status
  • jira/timesheet this method allows retrieve status of timesheet
  • jira/task/time (POST, DELETE) this method allows to insert/update/delete worked hours
  • jira/holidays this method allows to get holidays
  • jira/resource this method allows to get infoof resoruce
METHOD HTTP Verb PARAMETERS RESPONSE
login POST, GET
parameter description default mandatory
username nome utente login SI
password password utente login SI
id codice Cliente di Cometa SI

application/json
{
"username":"",
"password":"",
"id": ""
}

{
  "token": "541bee22-edf2-4c04-98a1-66222b55d759",
 ....
}
  • token: it is the authentication token needed to be passed in the header of the APIs.
    Skip the rest, you only need this.
jira/orders POST This method allows to get orders from Cometa in order to get Order ID and Activity ID.

application/json
{
        "filters": {
            "status": "opened",
            "id": null,
            "description": null,
            "customer": "lexis",
            "resourceEmail": "emanuele.parenti@acdsolutions.it"
        },
        "page": 1,
        "recordsPerPage": 50
    }


parameter description default mandatory
filters.status Status of order. Available status are: OPENED, CLOSED, STAND BY, CLOSING OPENED
filters.id Order ID
filters.description Order description
filters.customer Customer of th order
filters.resourceEmail Filters the orders and activities on which the resource is enabled to enter hours
page Page number if result are longer than recordsPerpage 1
recordsPerPage The maximum number of orders returned from one request 50

The reults are sorted by ID:
{
    "serachParameters": {
        "filters": {
            "status": "opened",
            "id": null,
            "description": null,
            "customer": "lexis",
            "resourceEmail": "emanuele.parenti@acdsolutions.it"
        },
        "page": 1,
        "recordsPerPage": 50
    },
    "recordsCount": 1,
    "recordsCountReturned": 1,
    "orders": [
        {
            "id": 1155,
            "description": "",
            "status": "OPENED",
            "startDate": "2023-09-01T00:00:00",
            "endDate": "0001-01-01T00:00:00",
            "expectedEndDate": "2024-06-30T00:00:00",
            "tipology": "VipES",
            "projectLeader": "Ruiz Santiago",
            "businessUnitLeader": "Ullivarri Luis",
            "businessUnit": "",
            "customer": "LEXIS NEXIS",
            "finalCustomer": "",
            "offer": "ESP-230901 - SELF SERVICE PORTAL FOR BANK DATA VALIDATION",
            "activities": [
                {
                    "id": 6645,
                    "description": "SOFTWARE DEVELOPMENT"
                },
                {
                    "id": 5815,
                    "description": "UX/UI DESIGN"
                }
            ]
        }
    ],
    "success": true,
    "message": null
}
  • serachParameters: parameters used to produce the result: sent in the request
  • recordsCount: total record found
  • recordsCountReturned: total record returned
  • orders: array of order
  • success: true if ok
  • message: if success is false then it contains the error description
jira/task/create POST This method allows create e Task in Cometa from a Jira Task.

application/json

{
    "idOrder":"1155",
    "idTaskJira":"2345",
    "idOrderActivity":"6645",
    "title":"Prova Task Jira",
    "description":"Task per inserimento ore da Jira",
    "statusCode":"100"
}
parameter description default mandatory
idOrder Id Cometa Order retrieved by orders method YES
idTaskJira ID Task Jira YES
idOrderActivity the id Activity o the order YES
title Title of the task YES
description Description of the task YES
statusCode Code of status: you can set and configure it in Cometa.
In Cometa go to: Projects->Task management->Status and configure or choose the status you want to use.
YES


{
    "idTask": 10919,
    "success": true,
    "message": null
}
  • idTask: id Task Cometa
  • success: true if ok
  • message: if success is false then it contains the error description
jira/task/status POST This method allows to change the status of a Task.

application/json

{
    "idTask":"10922",
    "idTaskJira":"2345",
    "statusCode":"100"
}
parameter description default mandatory
idTask Id Task Cometa YES
idTaskJira ID Task Jira YES
statusCode Code of status: you can set and configure it in Cometa.
In Cometa go to: Projects->Task management->Status and configure or choose the status you want to use.
YES


{
    "success": true,
    "message": null
}
  • success: true if ok
  • message: if success is false then it contains the error description
jira/timesheet POST This method allows to change the status of a timesheet.

application/json

{
    "resourceEmail":"emanuele.parenti@acdsolutions.it",
    "date":"2025-05-01"
}
parameter description default mandatory
resourceEmail The email of the resource YES
date The date of timesheet YES


{
    "status": "SIGNED",
    "success": true,
    "message": null
}
  • success: true if ok
  • message: if success is false then it contains the error description
  • status: possible result values are:
    1. SIGNED: hours can't be modified
    2. BILLED: hours can't be modified
    3. APPROVED: hours can't be modified
    4. NONE: hours can be modified
jira/task/time POST This method allows ti insert/modify hours in Cometa.

application/json

{
    "hoursType":"ORDINARY",
    "idTask":"10922",
    "idTaskJira":"2345",
    "day":"2025-01-22",
    "hours":"00:30",
    "resourceEmail":"emanuele.parenti@acdsolutions.it",
}
parameter description default mandatory
hoursType allowed values are specified below YES
idTask ID Task Cometa YES
idTaskJira ID Task Jira YES
day Allowed format is yyyy-MM-dd YES
hours Allowed format is: HH:mm YES
resourceEmail The email of the resource used to link Cometa resource YES

Hours type are:
  • ORDINARY
  • EXTRA
  • NIGHT EXTRA
  • AVAILABILITY
  • AVAILABILITY INTERVENTION
  • NIGHT AVAILABILITY INTERVENTION

{
    "success": true,
    "message": null
}
  • success: true if ok
  • message: if success is false then it contains the error description
jira/task/time DELETE This method allows to delete hours in Cometa.

application/json

{
    "hoursType":"ORDINARY",
    "idTask":"10922",
    "idTaskJira":"2345",
    "day":"2025-01-22",
    "resourceEmail":"emanuele.parenti@acdsolutions.it",
}
parameter description default mandatory
hoursType Allowed values are specified below YES
idTask ID Task Cometa YES
idTaskJira ID Task Jira YES
day Allowed format is yyyy-MM-dd YES
resourceEmail The email of the resource used to link Cometa resource YES

Hours type are:
  • ORDINARY
  • EXTRA
  • NIGHT EXTRA
  • AVAILABILITY
  • AVAILABILITY INTERVENTION
  • NIGHT AVAILABILITY INTERVENTION

{
    "success": true,
    "message": null
}
  • success: true if ok
  • message: if success is false then it contains the error description
jira/holidays POST This method allows to get holidays.

application/json

{
    "resourceEmail":"emanuele.parenti@acdsolutions.it",
    "fromDay":"2025-01-22",
    "toDay":"2025-10-22",
    "includeSunday":"false",
    "includeEaster":"true",
}
parameter description default mandatory
resourceEmail The email of the resource used to link Cometa resource YES
fromDay The initial day to calculate holidays. Allowed format is yyyy-MM-dd YES
toDay The final day to calculate holidays. Allowed format is yyyy-MM-dd YES
includeSunday Retrieve or not Sunday true
includeEaster Retrieve or not Easter true

{
    "searchParameters": {
        "resourceEmail": "emanuele.parenti@acdsolutions.it",
        "fromDay": "2025-01-22T00:00:00",
        "toDay": "2025-10-22T00:00:00",
        "includeSunday": false,
        "includeEaster": true
    },
    "holidays": [
        {
            "day": "2025-04-20T00:00:00",
            "description": "Pasqua",
            "dayOfTheWeek": "Sunday",
            "dayOfTheWeekNumber": 0
        },
        {
            "day": "2025-04-21T00:00:00",
            "description": "Lunedì dell'Angelo",
            "dayOfTheWeek": "Monday",
            "dayOfTheWeekNumber": 1
        },
        {
            "day": "2025-04-25T00:00:00",
            "description": "liberazione",
            "dayOfTheWeek": "Friday",
            "dayOfTheWeekNumber": 5
        },
        {
            "day": "2025-05-01T00:00:00",
            "description": "festa del lavoro",
            "dayOfTheWeek": "Thursday",
            "dayOfTheWeekNumber": 4
        },
        {
            "day": "2025-06-02T00:00:00",
            "description": "festa della repubblica",
            "dayOfTheWeek": "Monday",
            "dayOfTheWeekNumber": 1
        },
        {
            "day": "2025-08-15T00:00:00",
            "description": "Assunzione",
            "dayOfTheWeek": "Friday",
            "dayOfTheWeekNumber": 5
        }
    ],
    "success": true,
    "message": null
}
jira/task/statusList POST This method allows to get available task status.

application/json

{
    
    "statuses": [
        {
            "code": "AAAX",
            "description": "S0 - New",
            "initial": true,
            "completed": false,
            "colorName": "Red",
            "colorHexadecimal": "#FF0000",
            "colorRGB": "255,0,0"
        },
        {
            "code": "XXX",
            "description": "S1 - Get Evaluation",
            "initial": false,
            "completed": false,
            "colorName": "Red",
            "colorHexadecimal": "#FF0000",
            "colorRGB": "255,0,0"
        },
....
    ],
    "success": true,
    "message": null
}
jira/resource POST This method allows to get info of resource.

application/json

{
    "resourceEmail":"emanuele.parenti@acdsolutions.it",
}
parameter description default mandatory
resourceEmail The email of the resource YES


{
    "nominative": "URSAN DRAGOS GIOVANI",
    "surname": "URSAN",
    "name": "DRAGOS GIOVANI",
    "user": "dragosgiovani.ursan",
    "role": "BE Software Developer Junior",
    "relationShipType": "EMPLOYEE",
    "headquarters": "VIA SASSETTI 32",
    "contract": "Contratto tempo indeterminato",
    "internalReference": "COSIMI STEFANO",
    "email": "dragos.ursan@fabrick.com",
    "starOftWorkability": "2022-03-21T00:00:00",
    "endOfWorkability": "2125-12-31T00:00:00",
    "enabled": true,
    "success": true,
    "message": null
}
  • success: true if ok
  • message: if success is false then it contains the error description