{"components":{"securitySchemes":{"vauToken":{"bearerFormat":"vau_\u003crandom\u003e","description":"A vau_ API token minted in a vault's access register (read-only | read-write, role-capped, optional expiry; shown once). Vault-scoped: one token = one vault. Custody actions (accept, trash, delete gallery, members, export-everything, token mint/revoke) are session-only and always 403 for tokens.","scheme":"bearer","type":"http"}}},"info":{"description":"The MINIMAL public surface of vau (your media vault): the canonical \"Import \u0026 manage\" workflow — port a project's assets in, organize them into galleries, and share. Authenticate with a vau_ bearer token minted in a vault's access register (read-only | read-write, role-capped, optional expiry; shown once) and send it as `Authorization: Bearer vau_…`. Tokens are vault-scoped: one token = one vault = minimal blast radius. This is a deliberate MINIMAL cut, not the full token allowlist: low-level plumbing (favorite, rename) and the entire session-only Custody surface (accept, trash, delete gallery, add/remove members, export-everything, token mint/revoke — NO token may ever call these) are intentionally absent. See /llms.txt and docs/16-ai-compat.md.","title":"vau — public API","version":"1.13"},"openapi":"3.1.0","paths":{"/api/media/{id}/collections":{"post":{"operationId":"mediaAddCollection","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Response per docs/10-contract.md (JSON; errors are {\"error\":\"...\"})."}},"security":[{"vauToken":[]}],"summary":"Add media to a gallery","tags":["token"],"x-auth":"token","x-token-forbidden":false}},"/api/media/{id}/collections/{collectionId}":{"delete":{"operationId":"mediaRemoveCollection","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"collectionId","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Response per docs/10-contract.md (JSON; errors are {\"error\":\"...\"})."}},"security":[{"vauToken":[]}],"summary":"Remove media from a gallery","tags":["token"],"x-auth":"token","x-token-forbidden":false}},"/api/media/{id}/original":{"get":{"operationId":"mediaOriginal","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Response per docs/10-contract.md (JSON; errors are {\"error\":\"...\"})."}},"security":[{"vauToken":[]}],"summary":"Download the original","tags":["token"],"x-auth":"token","x-token-forbidden":false}},"/api/media/{id}/posts":{"post":{"operationId":"mediaAddPost","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Response per docs/10-contract.md (JSON; errors are {\"error\":\"...\"})."}},"security":[{"vauToken":[]}],"summary":"Mark media posted","tags":["token"],"x-auth":"token","x-token-forbidden":false}},"/api/media/{id}/posts/{postId}":{"delete":{"operationId":"mediaRemovePost","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"postId","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Response per docs/10-contract.md (JSON; errors are {\"error\":\"...\"})."}},"security":[{"vauToken":[]}],"summary":"Unmark a posted record","tags":["token"],"x-auth":"token","x-token-forbidden":false}},"/api/media/{id}/thumb":{"get":{"operationId":"mediaThumb","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Response per docs/10-contract.md (JSON; errors are {\"error\":\"...\"})."}},"security":[{"vauToken":[]}],"summary":"Media thumbnail","tags":["token"],"x-auth":"token","x-token-forbidden":false}},"/api/shares/{id}/revoke":{"post":{"operationId":"shareRevoke","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Response per docs/10-contract.md (JSON; errors are {\"error\":\"...\"})."}},"security":[{"vauToken":[]}],"summary":"Revoke a share","tags":["token"],"x-auth":"token","x-token-forbidden":false}},"/api/vaults/{id}/collections":{"get":{"operationId":"collectionList","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Response per docs/10-contract.md (JSON; errors are {\"error\":\"...\"})."}},"security":[{"vauToken":[]}],"summary":"List galleries","tags":["token"],"x-auth":"token","x-token-forbidden":false},"post":{"operationId":"collectionCreate","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Response per docs/10-contract.md (JSON; errors are {\"error\":\"...\"})."}},"security":[{"vauToken":[]}],"summary":"Create a gallery","tags":["token"],"x-auth":"token","x-token-forbidden":false}},"/api/vaults/{id}/files":{"post":{"operationId":"intakeRegisterFile","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Response per docs/10-contract.md (JSON; errors are {\"error\":\"...\"})."}},"security":[{"vauToken":[]}],"summary":"Owner intake: register a file","tags":["token"],"x-auth":"token","x-token-forbidden":false}},"/api/vaults/{id}/files/{fileId}/complete":{"post":{"operationId":"intakeComplete","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"fileId","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Response per docs/10-contract.md (JSON; errors are {\"error\":\"...\"})."}},"security":[{"vauToken":[]}],"summary":"Owner intake: complete a file","tags":["token"],"x-auth":"token","x-token-forbidden":false}},"/api/vaults/{id}/files/{fileId}/part-url":{"get":{"operationId":"intakePartURL","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"fileId","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Response per docs/10-contract.md (JSON; errors are {\"error\":\"...\"})."}},"security":[{"vauToken":[]}],"summary":"Owner intake: presigned part URL","tags":["token"],"x-auth":"token","x-token-forbidden":false}},"/api/vaults/{id}/media":{"get":{"operationId":"mediaList","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Response per docs/10-contract.md (JSON; errors are {\"error\":\"...\"})."}},"security":[{"vauToken":[]}],"summary":"List media","tags":["token"],"x-auth":"token","x-token-forbidden":false}},"/api/vaults/{id}/shares":{"post":{"operationId":"shareCreate","parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"default":{"description":"Response per docs/10-contract.md (JSON; errors are {\"error\":\"...\"})."}},"security":[{"vauToken":[]}],"summary":"Create a share","tags":["token"],"x-auth":"token","x-token-forbidden":false}}},"servers":[{"description":"Same origin as this document.","url":"/"}],"tags":[{"description":"vau_ API token (Authorization: Bearer vau_…) or cookie session.","name":"token"}]}