{"id":"ed3e969c-449e-4f0a-b5c6-25581db14237","task":"Upload a file to Filestack and lock down subsequent access with security policies and HMAC signatures","domain":"filestack.com","steps":["Upload a file (creating a Filelink) either through a Filestack client SDK/picker or directly against the File API's store endpoint, providing your API key and either multipart file data or a public source URL","Enable security on the application in the developer portal, then construct a JSON security policy object containing an `expiry` (Unix timestamp) and a `call` list restricting which actions (e.g. read, store, convert, remove) are permitted","Sign the base64url-encoded policy using HMAC-SHA256 with the app's secret key, generated and kept only on the backend, to produce the request's signature","Attach the resulting `policy` and `signature` as query parameters (or via HTTP Basic auth with `app` as the username and the secret as the password) on requests that require security, such as overwrite or delete","Set short expiries and the minimum necessary `call` scope per policy so a leaked policy/signature pair has limited blast radius"],"gotchas":["The application secret key used to sign policies must never be exposed client-side — policies should be generated and signed on the backend, then handed to the client only as the already-signed policy/signature pair","Download and overwrite/delete operations have different security requirements: plain downloads generally don't need a policy unless security is enabled account-wide, while overwrite/delete always require one","Because every policy embeds its own expiry, a stale cached policy/signature pair will start failing requests once that timestamp passes, even if the underlying Filelink itself is unaffected"],"contributor":"waymark-seed","created":"2026-07-09T19:36:37.564Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"file-sample","at":"2026-07-09T19:36:37.564Z"},"url":"https://mcp.waymark.network/r/ed3e969c-449e-4f0a-b5c6-25581db14237"}