...
Required parameters are marked with "*"
...
- status_reason
Validation
Validate token
- Verify the validity of access token
- Return 401 in case validation fails
- Check if token is not expired
- in case error return 401 - "Token is expired"
...
- Check if user is active
- in case error return 403 - (user is not active)
- check nhs_legal_entity is active
- in case error return 403 - (Client is not active)
- Check user role = "NHS ADMIN SIGNER"
- in case error return 403 "User is not allowed to perform this action"
Validate scopes
- Check user scopes in order to perform this action (scope = 'contract_requests:update')
- Return 403 in case invalid scope(s) "Your scope does not allow to access this resource. Missing allowances: contract_requests:update"
Digital signature
Decode content that is encrypted in an electronic digital signature.
Use Digital signature WS. Method checks digital signature and returns result.
Validate EDRPOU
- Check that EDRPOU in Certificate details exists and not empty
- in case of error return 422 error ('Invalid EDRPOU in DS')
- Check that EDRPOU in Certificate details is equal to EDPOU in legal entity
- Get client_id from token.
- Find prm.legal_entities id by client_id
- Compare EDRPOU in Certificate with legal_entities.edrpou
- In case validation fails - generate 422 error
- Check that SURNAME in Certificate details is equal to LAST_NAME in Party
- Get user_id → user_parties.party_id → parties.last_name and compare to surname from DS
- Convert prm.parties.LAST_NAME and Certificate details.SURNAME to uppercase
- Compare prm.parties.LAST_NAME and Certificate details.SURNAME as Cyrillic letters
- In case validation fails - generate 422 error
- Get user_id → user_parties.party_id → parties.last_name and compare to surname from DS
...
- Check that all fields are present in signed content
- "id"
- "contractor_legal_entity":
- "id"
- "name"
- "edrpou"
- "next_status"
- "status_reason"
- "text"
- Check next_status='DECLINED'
- Validate contract request id.
- Check contract_requests.id = $.id
- in case error return 404 ("Contract request with id=$id doesn't exist")
- Check contract_requests.id = $.id
- Validate contractor_legal_entity_id
- Legal_entities.id = $.contractor_legal_entity.id and Legal_entities.status='ACTIVE' and is_active=true,
- in case error return 422 ("Legal entity in contract request should be active")
- $contractor_legal_entity.edrpou in request=prm.legal_entities.edrpou
- $contractor_legal_entity.name in request=prm.legal_entities.name
- Legal_entities.id = $.contractor_legal_entity.id and Legal_entities.status='ACTIVE' and is_active=true,
Validate contract request status
...
field | value |
---|---|
status | DECLINED |
status_reason | $.status_reason |
updated_at | now() |
updated_by | $.user_id |
nhs_signer_id | $.user_id |
nhs_legal_entity_id | $.client_id |
Save signed contract request to media storage
Get url for contract request upload.
ParameterSourceaction 'GET' bucket 'CONTRACT_REQUEST' resource_id : CONTRACT_REQUEST_ID resource_name : CONTRACT_REQUEST_DECLINED timestamp :TIMESTAMP - Upload signed declaration to media storage
...