Skip to main content

AIR Projects

Per-project document uploads via presigned object storage (upload-init → PUT to returned URL → upload-complete) so bytes never cross the API process.

📄️Save a developer choice

Records that a topic does not apply, or that one control gap is accepted. `accept_gap` requires `controlId`; `not_applicable` must not send one. The assessment must belong to the project. A later choice for the same topic or control replaces the earlier one. The choice remembers the evidence and the seriousness the scan showed for the topic. Later scans judge it; the scan it was recorded on does not. A 'does not apply' stands while the topic is raised on that same evidence, and comes back (`posture: conflicts` with `cameBackBecause`) when the topic is more serious, cites evidence not seen before, or is due for review after six months. Requires project write access.