Challenge Overview
In this challenge series we are looking to develop a file service - a reusable service where a Source system can upload a file using http(s) and in return gets a technical handle (URL). The Technical handle is transmitted via Integration to the Destination which can use the handle to download the file. Service will have a security model that will allow uploader to set access permissions for the uploaded file. Destination services will have the option to register for webhook events for new files.
Here is a system diagram:
In a previous challenge we have defined service architecture. High level of endpoints supported by the service (/v1/fileservice/ path prefix)
Here is a system diagram:
In a previous challenge we have defined service architecture. High level of endpoints supported by the service (/v1/fileservice/ path prefix)
- /integrations – Manage integrations and systems within each integration
- /auth – Authentication – gives JWT bearer tokens
- /files – file uploads and downloads
- /eventListeners – Event management api (registering for webhook callbacks)
- /auditRecords – audit logs
Scope of this challenge is implementing eventListeners, auditRecords endpoints and the tickets listed in the project repository. This includes updating existing endpoints to create necessary events and audit records. List of supported event
See challenge forum to get access to the project repository and service architecture docs. Use develop branch as base.
Non functional requirements for the service are:
- Filesize shall only be limited by underlying file-storage system
- Md5checksums shall be calculated at file upload
- Md5Checksums shall be compared if provided at upload
- File retention (days it should be kept) can be set by source system at upload, but can never exceed x days
- Filenames stored on underlying MUST be decoupled from source filenames (i.e. technically generated)
- If file-system is used for file-storage, the folders MUST not contain more than 1000 files per folder ( Linux folder operations becomes slower and slower if NFS shared folders contain more than 1000 files )
Final Submission Guidelines
Submit the updated swagger api
Submit the updated code (git patch)
Submit the updated Deployment guide
Submit updated postman collection