1. login
Interface address: /api/account/login
Request type: POST
Post structure:
{
    "userName": "leocard@gmail.com", 
    "password": "opq8080"            
}
Response:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

2. to get info of loginuser after login
Interface address: /api/account/getLoginUser
Request type: GET
Response:
{
    "success": true,
    "data": {
        "userId": 1,               
        "userName": "admin",       
        "occupiedSpace": 9999.0,    
        "otherInfo": null,          
        "roleId": 1,                
        "roleName": "admin",       
        "menuList": [               
            "notice",
            "data_analysis_setup",
            "data_analysis_result",
            "account_setting"
        ]
    },
    "errMsg": null
}

3. create a new account
Interface address: /api/account/create
Request type: POST
Post structure:
{
    "userName": "leocard@gmail.com",    
    "password": "opq8080",              
    "occupiedSpace": 5000,              
    "otherInfo": "polito student",      
    "roleId": 1                        1 for visitor, 2 for user, 3 for admin
}
Response:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

4. update the info of member
Interface address: /api/account/update
Request type: POST
Post structure:
{
    "userId": 2,                        
    "userName": "siqicai7@gmail.com",
    "password": "csq970504",
    "occupiedSpace": 5000,
    "otherInfo": "polito student",
    "roleId": 3
}
Response:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

5. delete a member
Interface address: /api/account/delete
Request type: POST
Post structure:
{
    "userId": 3    
}
Response:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

6. get page list of member
Interface address: /api/account/getMemberPageList
Request type: POST
Post structure:
{
    "pageIndex": 1,
    "pageSize": 10
}
Response:
{
    "success": true,
    "data": {
        "content": [
            {
                "py/object": "entity.LoginUser",
                "userId": 1,
                "userName": "admin",
                "occupiedSpace": 9999.0,
                "otherInfo": null,
                "roleId": 1,
                "roleName": "admin",
                "menuList": [
                    "notice",
                    "data_analysis_setup",
                    "data_analysis_result",
                    "account_setting"
                ]
            }
        ],
        "pageIndex": 1,
        "pageSize": 10,
        "totalCount": 1
    },
    "errMsg": null
}

7. visitor submit a application for user access
Interface address: /api/account/apply
Request type: POST
Post structure:
{
    "reason": "for course study"
}
Response:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

8. admin approve the application from visitor
Interface address: /api/account/approve
Request type: POST
Post structure:
{
    "applyFormId": "6c4794ab-7505-46ba-a889-ae54eb5d4206", 
    "action": "agree"                                       agree or reject
}
Response:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

9. get page list of notice
Interface address: /api/notice/getNoticePageList
Request type: POST
Post structure:
{
    "pageIndex": 1,
    "pageSize": 10
}
Response:
{
    "success": true,
    "data": {
        "content": [
            {
                "py/object": "entity.Notice",
                "userId": 1,
                "userName": "admin",
                "content": "test message",     
                "readFlag": false               
            }
        ],
        "pageIndex": 1,
        "pageSize": 10,
        "totalCount": 1
    },
    "errMsg": null
}

10. get the detail of single notice
Interface address: /api/notice/view?id=3
Request type: GET
Get param: id
Response:
{
    "py/object": "entity.ResultEntity",
    "success": true,
    "data": {
        "userId": 1,
        "userName": "admin",
        "content": "test message",
        "readFlag": true
    },
    "errMsg": null
}

12. get page list of apply form
Interface address: /api/account/getApplyPageList
Request type: POST
Post structure:
{
    "pageIndex": 1,
    "pageSize": 10
}
Response:
{
    "success": true,
    "data": {
        "content": [
            {
                "applyFormId": "6c4794ab-7505-46ba-a889-ae54eb5d4206", 
                "userId": 2,            
                "userName": "siqicai",  
                "reason": "test",       
                "statusId": 1,         
                "statusName": "process end",
                "createDateTime": "2022-12-22 16:12:26",
                "processUserId": 2,             
                "processUserName": "siqicai",
                "processDateTime": "2022-40-24 10:40:30",  
                "action": "agree"   agree or reject
            }
        ],
        "pageIndex": 1,
        "pageSize": 10,
        "totalCount": 1
    },
    "errMsg": null
}

13. upload the single dataset file by file url
Interface address: /api/file/upload
Request type: POST
Post structure: form-data
url: https://dati.regione.campania.it/catalogo/resources/arpac_dati_centraline_Gennaio2019_Avellino.csv
Response:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

14. batch upload dataset files from txt, ignore the first line because it is a name of city
Interface address: /api/file/batchUpload
Request type: POST
Post structure: form-data
file: veneto_db.txt
Response:
{
    "py/object": "entity.ResultEntity",
    "success": true,
    "data": [
        {
            "py/object": "entity.UploadResult",
            "url": "http://dati.veneto.it/SpodCkanApi/api/3/datastore/dump/bdabbf3a-abfd-48b9-be5d-bad3ca92e146.csv", 
            "result": "upload done"                                                                                   
        },
        {
            "py/object": "entity.UploadResult",
            "url": "http://dati.veneto.it/SpodCkanApi/api/3/datastore/dump/605c8483-cfa4-44d0-a70e-ca4ac8b0de92.csv",
            "result": "upload done"
        },
        {
            "py/object": "entity.UploadResult",
            "url": "http://dati.veneto.it/SpodCkanApi/api/3/datastore/dump/de707d2e-75da-4500-8de3-1fb05f6de7c4.csv",
            "result": "upload done"
        },
        {
            "py/object": "entity.UploadResult",
            "url": "http://dati.veneto.it/SpodCkanApi/api/3/datastore/dump/21aae809-bc58-42d8-aeff-593046fb82d4.csv",
            "result": "upload failed"
        }
    ],
    "errMsg": null
}

15. download the file
Interface address: /api/file/download?id=37
Request type: GET
Get param: id is fileId

16. get page list of file uploaded
Interface address: /api/file/getFilePageList
Request type: POST
Post structure: 
{
    "pageIndex": 1,
    "pageSize": 10
}
Response:
{
    "success": true,
    "data": {
        "content": [
            {
                "id": 18,
                "fileName": "bdabbf3a-abfd-48b9-be5d-bad3ca92e146.csv",
                "filePath": "setup\\0a4c1131-17dc-4e6f-908a-9a53d04ac38f.csv",
                "fileUrl": "http://dati.veneto.it/SpodCkanApi/api/3/datastore/dump/bdabbf3a-abfd-48b9-be5d-bad3ca92e146.csv",
                "fileSize": 18.32
            },
            {
                "id": 19,
                "fileName": "605c8483-cfa4-44d0-a70e-ca4ac8b0de92.csv",
                "filePath": "setup\\3e3751e3-4815-4f5c-83da-f5029713f442.csv",
                "fileUrl": "http://dati.veneto.it/SpodCkanApi/api/3/datastore/dump/605c8483-cfa4-44d0-a70e-ca4ac8b0de92.csv",
                "fileSize": 2.68
            }
        ],
        "pageIndex": 1,
        "pageSize": 10,
        "totalCount": 2
    },
    "errMsg": null
}

17. delete the dataset file
Interface address: /api/file/delete?fileId=41
Request type: GET
Get param: fileId
Response:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

18. save a dataset setup
Interface address: /api/setup/save
Request type: POST
Post structure:
{
    "setupId": null,     
    "setupName": "test01", 
    "fileIdList": [
        1
    ],
    "measures": [
        "Can Open",
        "Com-I-DevA",
        "Com-I-5",
        "Acc-I-4",
        "Con-I-3",
        "Con-I-2-DevB",
        "Con-I-4-DevC",
        "Error"
    ]
}
Response:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

19. get the detail of a analysis setup
Interface address: /api/setup/getDetail?setupId=087a0079-ef43-4a1e-964b-7f82e567524c
Request type: GET
Get param: setupId
Response:
{
    "success": true,
    "data": {
        "setupId": "087a0079-ef43-4a1e-964b-7f82e567524c",
        "setupName": "test01",
        "createUserId": 1,
        "createUserName": "admin",
        "createDateTime": "2022-58-24 14:58:27",
        "fileList": [
            {
                "id": 41,
                "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                "filePath": "setup\\7bf38798-bb84-40ee-b03f-12e5cac96f7c.csv",
                "fileUrl": "http://dati.veneto.it/SpodCkanApi/api/3/datastore/dump/21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                "fileSize": 0.93
            }
        ],
        "measureList": [
            "Can Open",
            "Com-I-DevA",
            "Com-I-5",
            "Acc-I-4",
            "Con-I-3",
            "Con-I-2-DevB",
            "Con-I-4-DevC",
            "Error"
        ]
    },
    "errMsg": null
}

20. delete a setup
Interface address: /api/setup/delete?id=087a0079-ef43-4a1e-964b-7f82e567524c
Request type: GET
Response:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

21. get page list of setup
Interface address: /api/setup/getSetupPageList
Request type: POST
Post structure: 
{
    "pageIndex": 1,
    "pageSize": 10
}
Response:
{
    "success": true,
    "data": {
        "content": [
            {
                "setupId": "087a0079-ef43-4a1e-964b-7f82e567524c",
                "setupName": "test01",
                "createUserId": 1,
                "createUserName": "admin",
                "createDateTime": "2022-58-24 14:58:27"
            }
        ],
        "pageIndex": 1,
        "pageSize": 10,
        "totalCount": 1
    },
    "errMsg": null
}

22. do analysis by the setup
Interface address: /api/setup/analysis
Request type: POST
Post structure: 
{
    "fileIdList": [ which datasets
        41
    ],
    "measures": [ which measures
        "Can Open",
        "Com-I-DevA",
        "Com-I-5",
        "Acc-I-4",
        "Con-I-3",
        "Con-I-2-DevB",
        "Con-I-4-DevC",
        "Error"
    ]
}
Response:
{
    "success": true,
    "data": {
        "resultByDateset": [
            {
                "fileId": 41,
                "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                "measureList": [
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Can Open",
                        "value": "1"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Com-I-DevA",
                        "value": "0.083"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Com-I-5",
                        "value": "1.0"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Acc-I-4",
                        "value": "0.094"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Con-I-3",
                        "value": "0.75"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Con-I-2-DevB",
                        "value": "0.0"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Con-I-4-DevC",
                        "value": "1.0"
                    }
                ]
            }
        ],
        "resultByMeasure": [
            {
                "measure": "Can Open", 
                "datasetList": [ 
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 41,
                        "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                        "value": "1"
                    }
                ]
            },
            {
                "measure": "Com-I-DevA",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 41,
                        "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                        "value": "0.083"
                    }
                ]
            },
            {
                "measure": "Com-I-5",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 41,
                        "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                        "value": "1.0"
                    }
                ]
            },
            {
                "measure": "Acc-I-4",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 41,
                        "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                        "value": "0.094"
                    }
                ]
            },
            {
                "measure": "Con-I-3",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 41,
                        "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                        "value": "0.75"
                    }
                ]
            },
            {
                "measure": "Con-I-2-DevB",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 41,
                        "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                        "value": "0.0"
                    }
                ]
            },
            {
                "measure": "Con-I-4-DevC",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 41,
                        "fileName": "21aae809-bc58-42d8-aeff-593046fb82d4.csv",
                        "value": "1.0"
                    }
                ]
            }
        ]
    },
    "errMsg": null
}

23. save a analysis result
Interface address: /api/result/save
Request type: POST
Post structure: 
{
    "resultName": "test_save_result02",
    "resultContent": {                 
        "fileList": [                  
            {
                "id": 1,
                "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                "filePath": "setup\\1363369e-d3e5-43bf-a104-8150a516a5ad.csv",
                "fileUrl": "http://goodpa.regione.marche.it:80/dataset/fc0b0300-c420-4326-941b-c02f9cfc6701/resource/429c9de2-e1f3-4e28-b5df-da7f33d53614/download/comunedicollialmetauroanagrafeimmigratianno.csv",
                "fileSize": 0.78
            }
        ],
        "resultByDateset": [            
            {
                "py/object": "entity.AnalysisResultByDataset",
                "fileId": 1,
                "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                "measureList": [
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Can Open",
                        "value": "1"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Com-I-DevA",
                        "value": "0.0"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Com-I-5",
                        "value": "1.0"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Acc-I-4",
                        "value": "0.02"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Con-I-3",
                        "value": "0.431"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Con-I-2-DevB",
                        "value": "0.0"
                    },
                    {
                        "py/object": "entity.MeasureEntity",
                        "measure": "Con-I-4-DevC",
                        "value": "1.0"
                    }
                ]
            }
        ],
        "resultByMeasure": [
            {
                "py/object": "entity.AnalysisResultByMeasure",
                "measure": "Can Open",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "1"
                    }
                ]
            },
            {
                "py/object": "entity.AnalysisResultByMeasure",
                "measure": "Com-I-DevA",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.0"
                    }
                ]
            },
            {
                "py/object": "entity.AnalysisResultByMeasure",
                "measure": "Com-I-5",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "1.0"
                    }
                ]
            },
            {
                "py/object": "entity.AnalysisResultByMeasure",
                "measure": "Acc-I-4",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.02"
                    }
                ]
            },
            {
                "py/object": "entity.AnalysisResultByMeasure",
                "measure": "Con-I-3",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.431"
                    }
                ]
            },
            {
                "py/object": "entity.AnalysisResultByMeasure",
                "measure": "Con-I-2-DevB",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.0"
                    }
                ]
            },
            {
                "py/object": "entity.AnalysisResultByMeasure",
                "measure": "Con-I-4-DevC",
                "datasetList": [
                    {
                        "py/object": "entity.DatasetEntity",
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "1.0"
                    }
                ]
            }
        ]
    }
}
Response:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

24. get the detail of a analysis result
Interface address: /api/result/getDetail?resultId=d1831c5f-995c-41a9-9fd8-333ea36c1e20
Request type: GET
Get param: resultId
Response:
{
    "success": true,
    "data": {
        "fileList": [
            {
                "id": 1,
                "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                "filePath": "setup\\1363369e-d3e5-43bf-a104-8150a516a5ad.csv",
                "fileUrl": "http://goodpa.regione.marche.it:80/dataset/fc0b0300-c420-4326-941b-c02f9cfc6701/resource/429c9de2-e1f3-4e28-b5df-da7f33d53614/download/comunedicollialmetauroanagrafeimmigratianno.csv",
                "fileSize": 0.78
            }
        ],
        "resultByDateset": [
            {
                "fileId": 1,
                "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                "measureList": [
                    {
                        "measure": "Can Open",
                        "value": "1"
                    },
                    {
                        "measure": "Com-I-DevA",
                        "value": "0.0"
                    },
                    {
                        "measure": "Com-I-5",
                        "value": "1.0"
                    },
                    {
                        "measure": "Acc-I-4",
                        "value": "0.02"
                    },
                    {
                        "measure": "Con-I-3",
                        "value": "0.431"
                    },
                    {
                        "measure": "Con-I-2-DevB",
                        "value": "0.0"
                    },
                    {
                        "measure": "Con-I-4-DevC",
                        "value": "1.0"
                    }
                ]
            }
        ],
        "resultByMeasure": [
            {
                "measure": "Can Open",
                "datasetList": [
                    {
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "1"
                    }
                ]
            },
            {
                "measure": "Com-I-DevA",
                "datasetList": [
                    {
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.0"
                    }
                ]
            },
            {
                "measure": "Com-I-5",
                "datasetList": [
                    {
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "1.0"
                    }
                ]
            },
            {
                "measure": "Acc-I-4",
                "datasetList": [
                    {
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.02"
                    }
                ]
            },
            {
                "measure": "Con-I-3",
                "datasetList": [
                    {
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.431"
                    }
                ]
            },
            {
                "measure": "Con-I-2-DevB",
                "datasetList": [
                    {
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "0.0"
                    }
                ]
            },
            {
                "measure": "Con-I-4-DevC",
                "datasetList": [
                    {
                        "fileId": 1,
                        "fileName": "comunedicollialmetauroanagrafeimmigratianno.csv",
                        "value": "1.0"
                    }
                ]
            }
        ]
    },
    "errMsg": null
}

25. get page list of analysis result
Interface address: /api/result/getAnalysisResultPageList
Request type: POST
Post structure: 
{
    "pageIndex": 1,
    "pageSize": 10
}
Response:
{
    "py/object": "entity.ResultEntity",
    "success": true,
    "data": {
        "py/object": "entity.AnalysisResultPageList",
        "content": [
            {
                "py/object": "entity.AnalysisResult",
                "resultId": "d1831c5f-995c-41a9-9fd8-333ea36c1e20",
                "resultName": "test_save_result02",
                "createUserId": 1,
                "createUserName": "admin",
                "createDateTime": "2022-37-24 15:37:38"
            }
        ],
        "pageIndex": 1,
        "pageSize": 10,
        "totalCount": 1
    },
    "errMsg": null
}

26. delete a analysis result
Interface address: /api/result/delete?resultId=d1831c5f-995c-41a9-9fd8-333ea36c1e20
Request type: POST
Response:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

27. logout
Interface address: /api/account/logout
Request type: GET

28. rename a analysis result
Interface address: /api/result/rename
Request type: POST
Post structure:
{
    "resultId": "d1831c5f-995c-41a9-9fd8-333ea36c1e20", 
    "resultName": "test-result"                         
}
Response:
{
    "success": true,
    "data": "success",
    "errMsg": ""
}

29. download a analysis result, the file will be named by the name of analysis result
Interface address: /api/result/download
Request type: POST
Post structure:
{
    "resultId": "84f9e7be-ee0f-4336-ac16-deadf561fa7b"
}