file-ops

Shared-vault file operations

File operations inside a shared vault mirror the private-vault file API but live under user.sharedVault(id).file.

All operations require the vault to be unsealed and membership with the appropriate role.

Queries (read)

Any member role.

list

query($vaultId: ID!) {
  user {
    sharedVault(id: $vaultId) {
      file {
        list { id label fileName fileSize mimeType version }
      }
    }
  }
}

get

query($vaultId: ID!, $fileId: ID!) {
  user {
    sharedVault(id: $vaultId) {
      file {
        get(id: $fileId) {
          metadata { id label fileName fileSize mimeType }
          content  { downloadUrl }
        }
      }
    }
  }
}

versions

query($vaultId: ID!, $fileId: ID!) {
  user {
    sharedVault(id: $vaultId) {
      file {
        versions(id: $fileId) { version fileSize audit { updatedAt } }
      }
    }
  }
}

Mutations (write)

Requires OWNER, MANAGER, or EDITOR.

upload (multipart)

curl -X POST https://api.test.geena.eu/graphql \
  -H "Authorization: Bearer $TOKEN" \
  -F operations='{"query":"mutation($v: ID!, $i: FileUploadInput!) { user { sharedVault(id: $v) { file { upload(input: $i) { id label } } } } }","variables":{"v":"v1a2-...","i":{"label":"Contract","file":null}}}' \
  -F map='{"0":["variables.i.file"]}' \
  -F 0=@/path/to/contract.pdf

See private-vault upload for an explanation of the multipart request spec.

delete

mutation($vaultId: ID!, $fileId: ID!) {
  user {
    sharedVault(id: $vaultId) {
      file {
        delete(id: $fileId)
      }
    }
  }
}