<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Files :: Geena User API</title>
    <link>https://docs.test.geena.eu/user/files/index.html</link>
    <description>Files (private vault) Binary files (PDFs, images, etc.) stored in the caller’s private vault. Content is in MinIO; metadata is in PostgreSQL. Vault must be unsealed.&#xA;Queries: list, get, versions Mutations: upload, delete Actual binary download is HTTP, not GraphQL: GET /user/file/:fileID/download (Bearer JWT).</description>
    <generator>Hugo</generator>
    <language>en</language>
    <atom:link href="https://docs.test.geena.eu/user/files/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>list</title>
      <link>https://docs.test.geena.eu/user/files/list/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.test.geena.eu/user/files/list/index.html</guid>
      <description>user.file.list Lists files in the caller’s private vault (latest version metadata only).&#xA;Auth Bearer JWT + unsealed vault.&#xA;Input input FileListWhereInput { pagination: PaginationInput } GraphQL query { user { file { list { id label fileName fileSize mimeType version audit { updatedAt } } } } } curl curl -X POST https://api.test.geena.eu/graphql \ -H &#34;Authorization: Bearer $TOKEN&#34; \ -H &#34;Content-Type: application/json&#34; \ -d &#39;{&#34;query&#34;:&#34;{ user { file { list { id label fileName fileSize mimeType } } } }&#34;}&#39;</description>
    </item>
    <item>
      <title>get</title>
      <link>https://docs.test.geena.eu/user/files/get/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.test.geena.eu/user/files/get/index.html</guid>
      <description>user.file.get Returns file metadata plus a short-lived download URL. Binary content is not returned inline — download it separately via the URL.&#xA;Auth Bearer JWT + unsealed vault.&#xA;Arguments Arg Type Description id ID! File UUID GraphQL query($id: ID!) { user { file { get(id: $id) { metadata { id label fileName fileSize mimeType version } content { downloadUrl } } } } } Response { &#34;data&#34;: { &#34;user&#34;: { &#34;file&#34;: { &#34;get&#34;: { &#34;metadata&#34;: { &#34;id&#34;: &#34;a1b2...&#34;, &#34;label&#34;: &#34;ID scan&#34;, &#34;fileName&#34;: &#34;passport.pdf&#34;, &#34;fileSize&#34;: 182344, &#34;mimeType&#34;: &#34;application/pdf&#34;, &#34;version&#34;: 1 }, &#34;content&#34;: { &#34;downloadUrl&#34;: &#34;/user/file/a1b2.../download&#34; } } } } } } downloadUrl is a relative path on the API host. Append it to the base URL and call with the same Bearer token:</description>
    </item>
    <item>
      <title>versions</title>
      <link>https://docs.test.geena.eu/user/files/versions/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.test.geena.eu/user/files/versions/index.html</guid>
      <description>user.file.versions Returns all historical versions of a file (metadata only, newest first).&#xA;Auth Bearer JWT + unsealed vault.&#xA;GraphQL query($id: ID!) { user { file { versions(id: $id) { id version fileName fileSize audit { updatedAt updatedBy } } } } } curl curl -X POST https://api.test.geena.eu/graphql \ -H &#34;Authorization: Bearer $TOKEN&#34; \ -H &#34;Content-Type: application/json&#34; \ -d &#39;{ &#34;query&#34;: &#34;query($id: ID!) { user { file { versions(id: $id) { version fileSize audit { updatedAt } } } } }&#34;, &#34;variables&#34;: { &#34;id&#34;: &#34;a1b2-...&#34; } }&#39;</description>
    </item>
    <item>
      <title>upload</title>
      <link>https://docs.test.geena.eu/user/files/upload/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.test.geena.eu/user/files/upload/index.html</guid>
      <description>user.file.upload Uploads a binary file into the caller’s private vault. Content is encrypted with a vault-scoped DEK and stored in MinIO.&#xA;Auth Bearer JWT + unsealed vault.&#xA;Input input FileUploadInput { label: String! file: Upload! # GraphQL multipart spec } GraphQL multipart File upload uses the GraphQL multipart request spec. You send a multipart POST with three parts:</description>
    </item>
    <item>
      <title>delete</title>
      <link>https://docs.test.geena.eu/user/files/delete/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://docs.test.geena.eu/user/files/delete/index.html</guid>
      <description>user.file.delete Soft-deletes a file. All versions are marked deleted atomically; MinIO objects are cleaned up out of band.&#xA;Auth Bearer JWT + unsealed vault.&#xA;GraphQL mutation($id: ID!) { user { file { delete(id: $id) } } } Returns the deleted file’s id on success.</description>
    </item>
  </channel>
</rss>