# Fetches a signed URL for uploading evidence to a control. The file key returned from this endpoint should be used in the POST /controls/{id}/documents endpoint to associate the uploaded file with the control. Endpoint: GET /api/v1/controls/{id}/upload-url/{period} Version: 1.0.0 Security: x-api-key ## Path parameters: - `id` (string, required) The internal unique identifier for the control Example: "61d325c84a9f97631731a690" - `period` (string, required) The specfic period of the control to attach evidence to ## Response 200 fields (application/json): - `data` (object) Response containing a presigned upload URL and file key for evidence upload. - `data.uploadUrl` (string, required) Presigned URL for uploading evidence Example: "https://production-large-payload-store.s3.us-west-2.amazonaws.com/a1b2c3d4-e5f6-7890-abcd-ef1234567890?..." - `data.fileKey` (string, required) The S3 key or file identifier for the uploaded file Example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890" ## Response 400 fields (application/json): - `message` (string) Reason for the errors related to incorrect query keys or values that are out of bound Example: "filter[month] is required" - `name` (string) BadRequest Example: "BadRequest" - `status` (integer) The HTTP status code. Example: 400 ## Response 401 fields (application/json): - `message` (string) Reason for the unauthorized error. Example: "Token is invalid." - `name` (string) Unauthorized Example: "Unauthorized" - `status` (integer) The HTTP status code. Example: 401 ## Response 403 fields (application/json): - `message` (string) Reason for the forbidden error. Example: "User does not have permission to access requested project." - `name` (string) Forbidden Example: "Forbidden" - `status` (integer) The HTTP status code. Example: 403 ## Response 413 fields (application/json): - `message` (string) Response size is greater than 1MB Example: "Payload too large." - `name` (string) PayloadTooLarge Example: "PayloadTooLarge" - `status` (integer) The HTTP status code. Example: 413 ## Response 500 fields (application/json): - `message` (string) Reason for the internal server error. Example: "An unexpected error occurred." - `name` (string) InternalServerError Example: "InternalServerError" - `status` (integer) The HTTP status code. Example: 500