# certificate resources ### :question:what is the problem? #### Admin - [ ] verification - [ ] accept / reject request - [ ] get request status when not verified - [ ] get list of certs - [ ] create new cert - [ ] get one cert detail - [ ] update cert (only expiration date) #### Consumer - [ ] get list certs - [ ] share cert ### :heavy_check_mark: What is the solution? #### Admin - [ ] verification - [ ] _route_: `/cert/verify/{app_id}`, `POST` - [ ] _request_: `app_id`, `jwt`, [VerifyInfoExpectModel](#VerifyInfoExpectModel) - [ ] _response_: `verify info submitted successfully` - [ ] accept / reject request - [ ] _route_: `/cert/verify/{app_id}/status`, `POST` - [ ] _request_: `app_id`, `secret_key for BE` - [ ] _response_: `app successfully verified for certificate` - [ ] get request status when not verified - [ ] _route_: `/cert/verify/{app_id}/status`, `GET` - [ ] _request_: `app_id` - [ ] _response_: [GetVerifyRequestStatus](#GetVerifyRequestStatus) - [ ] get list of certs - [ ] _route_: `/cert?app_id=app_id`, `GET` - [ ] _request_: `app_id`, `jwt` - [ ] _response_: [AdminGetCertsListResponseModel](#AdminGetCertsListResponseModel) - [ ] create new cert - [ ] _route_: `/cert`, `POST` - [ ] _request_: `app_id`, `jwt`, [CreateCertExpectModel](#CreateCertExpectModel) - [ ] _response_: `certificate created successfully` - [ ] get one cert detail - [ ] _route_: `/cert/{cert_id}`, `GET` - [ ] _request_: `app_id`, `cert_id`, `jwt` - [ ] _response_: [AdminGetCertResponseModel](#AdminGetCertResponseModel) - [ ] update cert (only expiration date) - [ ] _route_: `/cert/{cert_id}`, `PUT` - [ ] _request_: `app_id`, `cert_id`, `jwt`, [UpdateCertExpectModel](#UpdateCertExpectModel) - [ ] _response_: `certificate updated successfully` - [ ] add users to cert - [ ] _route_: `/cert/{cert_id}/users`, `POST` - [ ] _request_: `app_id`, `cert_id`, `jwt`, [PostAddUsersToCertExpectModel](#PostAddUsersToCertExpectModel) - [ ] _response_: `users added to cert successfully` #### Consumer - [ ] get list certs - [ ] _route_: `/cert/consumer/{user_id}`, `GET` - [ ] _request_: `user_id`, `app_adr`, `jwt` - [ ] _response_: [ConsumerGetCertsListResponseModel](#ConsumerGetCertsListResponseModel) - [ ] get detail of shared cert - [ ] _route_: `/cert/share/{cert_uid}/{user_id}`, `GET` - [ ] _request_: `user_id`, `cert_uid`, `jwt` - [ ] _response_: [ConsumerGetCertResponseModel](#ConsumerGetCertResponseModel) #### CreateCertExpectModel ```json= { "app_id": "id of app", "uid": "unique id", "users": "list of users' id", "accent_color": "hex color code", "title": "title of cert", "issue_date": "start date time of cert, datetime as iso", "expiration_date": "expire date of cert, datetime as iso", "desc": "markdown filename" } ``` #### UpdateCertExpectModel ```json= { "expiration_date": "expire date of cert" } ``` #### ConsumerGetCertResponseModel ```json= { "_id": "id of cert", "uid": "unique id of cert", "app_id": "id of app", "accent_color": "hex color code", "title": "title of cert", "issue_date": "datetime as iso", "expiration_date": "datetime as iso", "desc": "filename" } ``` #### AdminGetCertResponseModel ```json= { "_id": "id of cert", "uid": "unique id of cert", "app_id": "id of app", "accent_color": "hex color code", "title": "title of cert", "users": "list of users' id", "issue_date": "datetime as iso", "expiration_date": "datetime as iso", "desc": "filename" } ``` #### ConsumerGetCertsListResponseModel ```json= [ { "_id": "id of cert", "uid": "unique id of cert", "app_id": "id of app", "accent_color": "hex color code", "title": "title of cert", "users": "list of users' id", "issue_date": "datetime as iso", "expiration_date": "datetime as iso", "desc": "filename" } ] ``` #### AdminGetCertsListResponseModel ```json= [ { "_id": "id of cert", "uid": "unique id of cert", "app_id": "id of app", "accent_color": "hex color code", "title": "title of cert", "users": "list of users' id", "issue_date": "datetime as iso", "expiration_date": "datetime as iso", "desc": "filename" } ] ``` ###### formDAta #### VerifyInfoExpectModel ```json= { "name": "required, string", "family": "required, string", "international_id": "required, string", "birth_date": "required, string", "email": "required, string", "mobile": "required, string", "city": "required, string", "province": "required, string", "id_card": "image file", "intro_letter": "required for legal, image file", "selfi": "required, image file" "company_name": "required, string", "company_phone": "required, string", "company_address": "required, string", "logo": "required, image file", "ceo_sign": "required, string", "documents": "required, compressed files zip or rar", "desc": "optional, string" } ``` #### GetVerifyRequestStatus ```json { "status": `submitted`, `checking`, `declined`, `accepted` "messages": ["message1", "message2", "messagen"] } ``` #### PostAddUsersToCertExpectModel ```json { "users": ["user_id1", "user_id2", "user_idn"] } ```