curl --request GET \
--url https://api.example.com/v0/records/{record_id}/versions/{version_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/v0/records/{record_id}/versions/{version_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.example.com/v0/records/{record_id}/versions/{version_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v0/records/{record_id}/versions/{version_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v0/records/{record_id}/versions/{version_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v0/records/{record_id}/versions/{version_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v0/records/{record_id}/versions/{version_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"record_id": "<string>",
"version_id": "<string>",
"manifest": {
"kind": "manifest",
"parts": [
{
"key": "<string>",
"role": "<string>",
"content": {
"kind": "text",
"text": "<string>"
},
"parent_key": "<string>",
"extensions": {}
}
],
"relations": [
{
"type": "<string>",
"target": {
"corpus_id": "<string>",
"namespace": "<string>",
"record_key": "<string>"
},
"source_target_revision": "<string>"
}
]
},
"availability": {
"state": "materialized",
"is_current": true,
"searchable": true
},
"relations": [
{
"source_reference": {
"type": "<string>",
"target": {
"corpus_id": "<string>",
"namespace": "<string>",
"record_key": "<string>"
},
"source_target_revision": "<string>"
},
"status": "available",
"target_record_id": "<string>",
"target_version_id": "<string>"
}
],
"processing": {
"state": "queued",
"phase": "materialization",
"message": "<string>"
},
"accepted_at": "2023-11-07T05:31:56Z",
"extensions": {},
"provenance": {
"source_blob_ids": [
"<string>"
],
"producer": "<string>",
"producer_version": "<string>",
"normalization": {
"plugin_id": "<string>",
"plugin_version": "<string>",
"plugin_api": "<string>",
"contribution": "normalizer",
"invocation_id": "<string>",
"idempotency_key": "<string>",
"input_sha256": "<string>",
"fallback": {
"code": "<string>",
"message": "<string>"
}
}
},
"diagnostics": [
{
"code": "<string>",
"message": "<string>",
"retryable": true,
"plugin": "<string>",
"contribution": "<string>",
"invocation_id": "<string>"
}
]
}{
"code": "<string>",
"message": "<string>",
"retryable": true,
"field": "<string>",
"resync_url": "<string>"
}Get version
Authorized immutable source Manifest plus separate live availability and relation expansion. Available links supply current eligible target Record and Version IDs; unavailable links reveal no resolved target IDs or absence/access reason. Historical lookup grants no new rights.
curl --request GET \
--url https://api.example.com/v0/records/{record_id}/versions/{version_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/v0/records/{record_id}/versions/{version_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.example.com/v0/records/{record_id}/versions/{version_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v0/records/{record_id}/versions/{version_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v0/records/{record_id}/versions/{version_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v0/records/{record_id}/versions/{version_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v0/records/{record_id}/versions/{version_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"record_id": "<string>",
"version_id": "<string>",
"manifest": {
"kind": "manifest",
"parts": [
{
"key": "<string>",
"role": "<string>",
"content": {
"kind": "text",
"text": "<string>"
},
"parent_key": "<string>",
"extensions": {}
}
],
"relations": [
{
"type": "<string>",
"target": {
"corpus_id": "<string>",
"namespace": "<string>",
"record_key": "<string>"
},
"source_target_revision": "<string>"
}
]
},
"availability": {
"state": "materialized",
"is_current": true,
"searchable": true
},
"relations": [
{
"source_reference": {
"type": "<string>",
"target": {
"corpus_id": "<string>",
"namespace": "<string>",
"record_key": "<string>"
},
"source_target_revision": "<string>"
},
"status": "available",
"target_record_id": "<string>",
"target_version_id": "<string>"
}
],
"processing": {
"state": "queued",
"phase": "materialization",
"message": "<string>"
},
"accepted_at": "2023-11-07T05:31:56Z",
"extensions": {},
"provenance": {
"source_blob_ids": [
"<string>"
],
"producer": "<string>",
"producer_version": "<string>",
"normalization": {
"plugin_id": "<string>",
"plugin_version": "<string>",
"plugin_api": "<string>",
"contribution": "normalizer",
"invocation_id": "<string>",
"idempotency_key": "<string>",
"input_sha256": "<string>",
"fallback": {
"code": "<string>",
"message": "<string>"
}
}
},
"diagnostics": [
{
"code": "<string>",
"message": "<string>",
"retryable": true,
"plugin": "<string>",
"contribution": "<string>",
"invocation_id": "<string>"
}
]
}{
"code": "<string>",
"message": "<string>",
"retryable": true,
"field": "<string>",
"resync_url": "<string>"
}Authorizations
API key, not necessarily a JWT. Server derives Organization, permitted actions and Corpus scope; every resource access is authorized.
Path Parameters
11Response
Successful response
11Unique Part keys, acyclic parent references within this Manifest, and verified same-Organization Blobs are checked before atomic publication. These semantic constraints need server validation in addition to JSON Schema.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Live read view, not a Receipt lifecycle or public workflow identifier. blocked means an outstanding contribution needs intervention; diagnostics describe why. idle means no work currently pending, not a promise of final enrichment. Phase is omitted when idle; required and optional progress do not override Version Availability.
Show child attributes
Show child attributes
When Quivr accepted the revision this Version publishes, before any processing.
Keys are plugin namespaces. Data is validated against the installed schema version; source data is not a computed Annotation.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Why the Version needs attention. A quarantined Version lists its reason first. A Version published through an optional route's fallback lists the normalizer failure it fell back from, and a recorded normalizer_conflict is listed on the Version whose output was kept. Omitted when there is nothing to report.
20Show child attributes
Show child attributes