{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/hubs/{hub_uuid}":{"get":{"tags":["Hubs"],"summary":"Read Hub","operationId":"get_hub","parameters":[{"name":"hub_uuid","in":"path","required":true,"schema":{"type":"string","title":"Hub Uuid"}},{"name":"expand","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Expand"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Hubs"],"summary":"Update Hub","operationId":"update_hub","security":[{"Keycloak":[]}],"parameters":[{"name":"hub_uuid","in":"path","required":true,"schema":{"type":"string","title":"Hub Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}},"requestBody":{"required":true,"content":{"application/ld+json":{"schema":{"type":"object"},"example":{"@context":{"bf":"http://id.loc.gov/ontologies/bibframe/","bflc":"http://id.loc.gov/ontologies/bflc/","rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","rdfs":"http://www.w3.org/2000/01/rdf-schema#"},"@id":"https://api.sinopia.io/resources/example-hub-0001","@type":"bf:Hub","rdfs:label":"Austen, Jane, 1775-1817. Pride and prejudice","bf:title":{"@type":"bf:Title","bf:mainTitle":"Pride and prejudice"},"bf:language":{"@id":"http://id.loc.gov/vocabulary/languages/eng"},"bflc:aap":"Austen, Jane, 1775-1817. Pride and prejudice"}},"application/vnd.sinopia+json":{"schema":{"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"hub_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hub Id"}},"title":"HubUpdateSchema","type":"object"},"example":{"data":"{\"@context\": {\"bf\": \"http://id.loc.gov/ontologies/bibframe/\", \"bflc\": \"http://id.loc.gov/ontologies/bflc/\", \"rdf\": \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\", \"rdfs\": \"http://www.w3.org/2000/01/rdf-schema#\"}, \"@id\": \"https://api.sinopia.io/resources/example-hub-0001\", \"@type\": \"bf:Hub\", \"rdfs:label\": \"Austen, Jane, 1775-1817. Pride and prejudice\", \"bf:title\": {\"@type\": \"bf:Title\", \"bf:mainTitle\": \"Pride and prejudice\"}, \"bf:language\": {\"@id\": \"http://id.loc.gov/vocabulary/languages/eng\"}, \"bflc:aap\": \"Austen, Jane, 1775-1817. Pride and prejudice\"}"}}}}},"delete":{"tags":["Hubs"],"summary":"Delete Hub","operationId":"delete_hub","security":[{"Keycloak":[]}],"parameters":[{"name":"hub_uuid","in":"path","required":true,"schema":{"type":"string","title":"Hub Uuid"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}}}},"/hubs/{hub_uuid}/embeddings":{"get":{"tags":["Hubs"],"summary":"Get Hub Embedding","operationId":"get_hub_embedding","parameters":[{"name":"hub_uuid","in":"path","required":true,"schema":{"type":"string","title":"Hub Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Hubs"],"summary":"Create Hub Embedding","operationId":"new_hub_embedding","security":[{"Keycloak":[]}],"parameters":[{"name":"hub_uuid","in":"path","required":true,"schema":{"type":"string","title":"Hub Uuid"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}}}},"/hubs/":{"post":{"tags":["Hubs"],"summary":"Create Hub","operationId":"create_hub","requestBody":{"content":{"application/ld+json":{"schema":{"type":"object"},"example":{"@context":{"bf":"http://id.loc.gov/ontologies/bibframe/","bflc":"http://id.loc.gov/ontologies/bflc/","rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","rdfs":"http://www.w3.org/2000/01/rdf-schema#"},"@id":"https://api.sinopia.io/resources/example-hub-0001","@type":"bf:Hub","rdfs:label":"Austen, Jane, 1775-1817. Pride and prejudice","bf:title":{"@type":"bf:Title","bf:mainTitle":"Pride and prejudice"},"bf:language":{"@id":"http://id.loc.gov/vocabulary/languages/eng"},"bflc:aap":"Austen, Jane, 1775-1817. Pride and prejudice"}},"application/vnd.sinopia+json":{"schema":{"properties":{"data":{"type":"string","title":"Data"}},"type":"object","required":["data"],"title":"HubCreateSchema"},"example":{"data":"{\"@context\": {\"bf\": \"http://id.loc.gov/ontologies/bibframe/\", \"bflc\": \"http://id.loc.gov/ontologies/bflc/\", \"rdf\": \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\", \"rdfs\": \"http://www.w3.org/2000/01/rdf-schema#\"}, \"@id\": \"https://api.sinopia.io/resources/example-hub-0001\", \"@type\": \"bf:Hub\", \"rdfs:label\": \"Austen, Jane, 1775-1817. Pride and prejudice\", \"bf:title\": {\"@type\": \"bf:Title\", \"bf:mainTitle\": \"Pride and prejudice\"}, \"bf:language\": {\"@id\": \"http://id.loc.gov/vocabulary/languages/eng\"}, \"bflc:aap\": \"Austen, Jane, 1775-1817. Pride and prejudice\"}"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubSchema"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}},"security":[{"Keycloak":[]}]}},"/works/{work_uuid}":{"get":{"tags":["Works"],"summary":"Read Work","operationId":"get_work","parameters":[{"name":"work_uuid","in":"path","required":true,"schema":{"type":"string","title":"Work Uuid"}},{"name":"expand","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Expand"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Works"],"summary":"Update Work","operationId":"update_work","security":[{"Keycloak":[]}],"parameters":[{"name":"work_uuid","in":"path","required":true,"schema":{"type":"string","title":"Work Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}},"requestBody":{"required":true,"content":{"application/ld+json":{"schema":{"type":"object"},"example":{"@context":{"bf":"http://id.loc.gov/ontologies/bibframe/","bflc":"http://id.loc.gov/ontologies/bflc/","rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","rdfs":"http://www.w3.org/2000/01/rdf-schema#"},"@id":"https://api.sinopia.io/resources/example-work-0001","@type":["bf:Work","bf:Text"],"rdfs:label":"Pride and prejudice","bf:title":{"@type":"bf:Title","bf:mainTitle":"Pride and prejudice"},"bf:language":{"@id":"http://id.loc.gov/vocabulary/languages/eng"},"bf:content":{"@id":"http://id.loc.gov/vocabulary/contentTypes/txt"},"bf:contribution":{"@type":"bf:Contribution","bf:agent":{"@type":"bf:Agent","rdfs:label":"Austen, Jane, 1775-1817"},"bf:role":{"@id":"http://id.loc.gov/vocabulary/relators/aut"}},"bf:classification":{"@type":"bf:ClassificationLcc","bf:classificationPortion":"PR4034"}}},"application/vnd.sinopia+json":{"schema":{"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"}},"title":"WorkUpdateSchema","type":"object"},"example":{"data":"{\"@context\": {\"bf\": \"http://id.loc.gov/ontologies/bibframe/\", \"bflc\": \"http://id.loc.gov/ontologies/bflc/\", \"rdf\": \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\", \"rdfs\": \"http://www.w3.org/2000/01/rdf-schema#\"}, \"@id\": \"https://api.sinopia.io/resources/example-work-0001\", \"@type\": [\"bf:Work\", \"bf:Text\"], \"rdfs:label\": \"Pride and prejudice\", \"bf:title\": {\"@type\": \"bf:Title\", \"bf:mainTitle\": \"Pride and prejudice\"}, \"bf:language\": {\"@id\": \"http://id.loc.gov/vocabulary/languages/eng\"}, \"bf:content\": {\"@id\": \"http://id.loc.gov/vocabulary/contentTypes/txt\"}, \"bf:contribution\": {\"@type\": \"bf:Contribution\", \"bf:agent\": {\"@type\": \"bf:Agent\", \"rdfs:label\": \"Austen, Jane, 1775-1817\"}, \"bf:role\": {\"@id\": \"http://id.loc.gov/vocabulary/relators/aut\"}}, \"bf:classification\": {\"@type\": \"bf:ClassificationLcc\", \"bf:classificationPortion\": \"PR4034\"}}"}}}}},"delete":{"tags":["Works"],"summary":"Delete Work","operationId":"delete_work","security":[{"Keycloak":[]}],"parameters":[{"name":"work_uuid","in":"path","required":true,"schema":{"type":"string","title":"Work Uuid"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}}}},"/works/{work_uuid}/embeddings":{"get":{"tags":["Works"],"summary":"Get Work Embedding","operationId":"get_work_embedding","parameters":[{"name":"work_uuid","in":"path","required":true,"schema":{"type":"string","title":"Work Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Works"],"summary":"Create Work Embedding","operationId":"new_work_embedding","security":[{"Keycloak":[]}],"parameters":[{"name":"work_uuid","in":"path","required":true,"schema":{"type":"string","title":"Work Uuid"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}}}},"/works/":{"post":{"tags":["Works"],"summary":"Create Work","operationId":"get_works","requestBody":{"content":{"application/ld+json":{"schema":{"type":"object"},"example":{"@context":{"bf":"http://id.loc.gov/ontologies/bibframe/","bflc":"http://id.loc.gov/ontologies/bflc/","rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","rdfs":"http://www.w3.org/2000/01/rdf-schema#"},"@id":"https://api.sinopia.io/resources/example-work-0001","@type":["bf:Work","bf:Text"],"rdfs:label":"Pride and prejudice","bf:title":{"@type":"bf:Title","bf:mainTitle":"Pride and prejudice"},"bf:language":{"@id":"http://id.loc.gov/vocabulary/languages/eng"},"bf:content":{"@id":"http://id.loc.gov/vocabulary/contentTypes/txt"},"bf:contribution":{"@type":"bf:Contribution","bf:agent":{"@type":"bf:Agent","rdfs:label":"Austen, Jane, 1775-1817"},"bf:role":{"@id":"http://id.loc.gov/vocabulary/relators/aut"}},"bf:classification":{"@type":"bf:ClassificationLcc","bf:classificationPortion":"PR4034"}}},"application/vnd.sinopia+json":{"schema":{"properties":{"hub_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hub Id"},"data":{"type":"string","title":"Data"}},"type":"object","required":["data"],"title":"WorkCreateSchema"},"example":{"data":"{\"@context\": {\"bf\": \"http://id.loc.gov/ontologies/bibframe/\", \"bflc\": \"http://id.loc.gov/ontologies/bflc/\", \"rdf\": \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\", \"rdfs\": \"http://www.w3.org/2000/01/rdf-schema#\"}, \"@id\": \"https://api.sinopia.io/resources/example-work-0001\", \"@type\": [\"bf:Work\", \"bf:Text\"], \"rdfs:label\": \"Pride and prejudice\", \"bf:title\": {\"@type\": \"bf:Title\", \"bf:mainTitle\": \"Pride and prejudice\"}, \"bf:language\": {\"@id\": \"http://id.loc.gov/vocabulary/languages/eng\"}, \"bf:content\": {\"@id\": \"http://id.loc.gov/vocabulary/contentTypes/txt\"}, \"bf:contribution\": {\"@type\": \"bf:Contribution\", \"bf:agent\": {\"@type\": \"bf:Agent\", \"rdfs:label\": \"Austen, Jane, 1775-1817\"}, \"bf:role\": {\"@id\": \"http://id.loc.gov/vocabulary/relators/aut\"}}, \"bf:classification\": {\"@type\": \"bf:ClassificationLcc\", \"bf:classificationPortion\": \"PR4034\"}}"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkSchema"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}},"security":[{"Keycloak":[]}]}},"/instances/{instance_uuid}":{"get":{"tags":["Instances"],"summary":"Read Instance","operationId":"get_instance","parameters":[{"name":"instance_uuid","in":"path","required":true,"schema":{"type":"string","title":"Instance Uuid"}},{"name":"expand","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Expand"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstanceSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Instances"],"summary":"Update Instance","operationId":"update_instance","security":[{"Keycloak":[]}],"parameters":[{"name":"instance_uuid","in":"path","required":true,"schema":{"type":"string","title":"Instance Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstanceSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}},"requestBody":{"required":true,"content":{"application/ld+json":{"schema":{"type":"object"},"example":{"@context":{"bf":"http://id.loc.gov/ontologies/bibframe/","bflc":"http://id.loc.gov/ontologies/bflc/","rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","rdfs":"http://www.w3.org/2000/01/rdf-schema#"},"@id":"https://api.sinopia.io/resources/example-instance-0001","@type":["bf:Instance","bf:Print"],"rdfs:label":"Pride and prejudice (Penguin Classics, 2003)","bf:title":{"@type":"bf:Title","bf:mainTitle":"Pride and prejudice"},"bf:provisionActivity":{"@type":"bf:Publication","bf:agent":{"@type":"bf:Agent","rdfs:label":"Penguin Books"},"bf:place":{"@type":"bf:Place","rdfs:label":"London"},"bf:date":"2003"},"bf:identifiedBy":{"@type":"bf:Isbn","rdf:value":"9780141439518"},"bf:extent":{"@type":"bf:Extent","rdfs:label":"435 pages"}}},"application/vnd.sinopia+json":{"schema":{"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"work_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Work Id"}},"title":"InstanceUpdateSchema","type":"object"},"example":{"data":"{\"@context\": {\"bf\": \"http://id.loc.gov/ontologies/bibframe/\", \"bflc\": \"http://id.loc.gov/ontologies/bflc/\", \"rdf\": \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\", \"rdfs\": \"http://www.w3.org/2000/01/rdf-schema#\"}, \"@id\": \"https://api.sinopia.io/resources/example-instance-0001\", \"@type\": [\"bf:Instance\", \"bf:Print\"], \"rdfs:label\": \"Pride and prejudice (Penguin Classics, 2003)\", \"bf:title\": {\"@type\": \"bf:Title\", \"bf:mainTitle\": \"Pride and prejudice\"}, \"bf:provisionActivity\": {\"@type\": \"bf:Publication\", \"bf:agent\": {\"@type\": \"bf:Agent\", \"rdfs:label\": \"Penguin Books\"}, \"bf:place\": {\"@type\": \"bf:Place\", \"rdfs:label\": \"London\"}, \"bf:date\": \"2003\"}, \"bf:identifiedBy\": {\"@type\": \"bf:Isbn\", \"rdf:value\": \"9780141439518\"}, \"bf:extent\": {\"@type\": \"bf:Extent\", \"rdfs:label\": \"435 pages\"}}"}}}}},"delete":{"tags":["Instances"],"summary":"Delete Instance","operationId":"delete_instance","security":[{"Keycloak":[]}],"parameters":[{"name":"instance_uuid","in":"path","required":true,"schema":{"type":"string","title":"Instance Uuid"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}}}},"/instances/{instance_uuid}/embeddings":{"get":{"tags":["Instances"],"summary":"Get Instance Embedding","operationId":"get_instance_embedding","parameters":[{"name":"instance_uuid","in":"path","required":true,"schema":{"type":"string","title":"Instance Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Instances"],"summary":"Create Instance Embedding","operationId":"new_instance_embedding","security":[{"Keycloak":[]}],"parameters":[{"name":"instance_uuid","in":"path","required":true,"schema":{"type":"string","title":"Instance Uuid"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}}}},"/instances/":{"post":{"tags":["Instances"],"summary":"Create Instance","operationId":"new_instance","requestBody":{"content":{"application/ld+json":{"schema":{"type":"object"},"example":{"@context":{"bf":"http://id.loc.gov/ontologies/bibframe/","bflc":"http://id.loc.gov/ontologies/bflc/","rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","rdfs":"http://www.w3.org/2000/01/rdf-schema#"},"@id":"https://api.sinopia.io/resources/example-instance-0001","@type":["bf:Instance","bf:Print"],"rdfs:label":"Pride and prejudice (Penguin Classics, 2003)","bf:title":{"@type":"bf:Title","bf:mainTitle":"Pride and prejudice"},"bf:provisionActivity":{"@type":"bf:Publication","bf:agent":{"@type":"bf:Agent","rdfs:label":"Penguin Books"},"bf:place":{"@type":"bf:Place","rdfs:label":"London"},"bf:date":"2003"},"bf:identifiedBy":{"@type":"bf:Isbn","rdf:value":"9780141439518"},"bf:extent":{"@type":"bf:Extent","rdfs:label":"435 pages"}}},"application/vnd.sinopia+json":{"schema":{"properties":{"work_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Work Id"},"data":{"type":"string","title":"Data"}},"type":"object","required":["data"],"title":"InstanceCreateSchema"},"example":{"data":"{\"@context\": {\"bf\": \"http://id.loc.gov/ontologies/bibframe/\", \"bflc\": \"http://id.loc.gov/ontologies/bflc/\", \"rdf\": \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\", \"rdfs\": \"http://www.w3.org/2000/01/rdf-schema#\"}, \"@id\": \"https://api.sinopia.io/resources/example-instance-0001\", \"@type\": [\"bf:Instance\", \"bf:Print\"], \"rdfs:label\": \"Pride and prejudice (Penguin Classics, 2003)\", \"bf:title\": {\"@type\": \"bf:Title\", \"bf:mainTitle\": \"Pride and prejudice\"}, \"bf:provisionActivity\": {\"@type\": \"bf:Publication\", \"bf:agent\": {\"@type\": \"bf:Agent\", \"rdfs:label\": \"Penguin Books\"}, \"bf:place\": {\"@type\": \"bf:Place\", \"rdfs:label\": \"London\"}, \"bf:date\": \"2003\"}, \"bf:identifiedBy\": {\"@type\": \"bf:Isbn\", \"rdf:value\": \"9780141439518\"}, \"bf:extent\": {\"@type\": \"bf:Extent\", \"rdfs:label\": \"435 pages\"}}"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstanceSchema"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}},"security":[{"Keycloak":[]}]}},"/resources/":{"get":{"tags":["Resources"],"summary":"Read Other Resources","description":"Accessor function that searches for an existing uri or returns a\nslice of other resources with limit and offsets","operationId":"get_other_resources","parameters":[{"name":"uri","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Resources"],"summary":"Create Other Resource","operationId":"new_other_resource","security":[{"Keycloak":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtherResourceCreateSchema"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtherResourceSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}}}},"/resources/{resource_id}":{"get":{"tags":["Resources"],"summary":"Read Other Resource","operationId":"get_resource","parameters":[{"name":"resource_id","in":"path","required":true,"schema":{"type":"integer","title":"Resource Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtherResourceSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Resources"],"summary":"Update Other Resource","operationId":"update_other_resource","security":[{"Keycloak":[]}],"parameters":[{"name":"resource_id","in":"path","required":true,"schema":{"type":"integer","title":"Resource Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtherResourceUpdateSchema"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtherResourceSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}}},"delete":{"tags":["Resources"],"summary":"Delete Other Resource","operationId":"delete_other_resource","security":[{"Keycloak":[]}],"parameters":[{"name":"resource_id","in":"path","required":true,"schema":{"type":"integer","title":"Resource Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}}}},"/profiles/":{"get":{"tags":["Profiles"],"summary":"Read Profiles","description":"Search for an existing profile by uri, or return a slice of profiles\nwith limit and offset.","operationId":"get_profiles","parameters":[{"name":"uri","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Profiles"],"summary":"Create Profile","operationId":"new_profile","security":[{"Keycloak":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileCreateSchema"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}}}},"/profiles/{profile_uuid}":{"get":{"tags":["Profiles"],"summary":"Read Profile","operationId":"get_profile","parameters":[{"name":"profile_uuid","in":"path","required":true,"schema":{"type":"string","title":"Profile Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Profiles"],"summary":"Update Profile","operationId":"update_profile","security":[{"Keycloak":[]}],"parameters":[{"name":"profile_uuid","in":"path","required":true,"schema":{"type":"string","title":"Profile Uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdateSchema"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}}},"delete":{"tags":["Profiles"],"summary":"Delete Profile","operationId":"delete_profile","security":[{"Keycloak":[]}],"parameters":[{"name":"profile_uuid","in":"path","required":true,"schema":{"type":"string","title":"Profile Uuid"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}}}},"/hubs/{hub_uuid}/versions":{"get":{"tags":["Versions"],"summary":"Read Hub Versions","description":"List every stored version of a Hub, oldest first.","operationId":"get_hub_versions","parameters":[{"name":"hub_uuid","in":"path","required":true,"schema":{"type":"string","title":"Hub Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionListSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hubs/{hub_uuid}/version/{version_id}":{"get":{"tags":["Versions"],"summary":"Read Hub Version","description":"Return one historical version of a Hub as stored JSON-LD.","operationId":"get_hub_version","parameters":[{"name":"hub_uuid","in":"path","required":true,"schema":{"type":"string","title":"Hub Uuid"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"integer","description":"The integer version id, as returned by the versions list. Example: 42","title":"Version Id"},"description":"The integer version id, as returned by the versions list. Example: 42"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/works/{work_uuid}/versions":{"get":{"tags":["Versions"],"summary":"Read Work Versions","description":"List every stored version of a Work, oldest first.","operationId":"get_work_versions","parameters":[{"name":"work_uuid","in":"path","required":true,"schema":{"type":"string","title":"Work Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionListSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/works/{work_uuid}/version/{version_id}":{"get":{"tags":["Versions"],"summary":"Read Work Version","description":"Return one historical version of a Work as stored JSON-LD.","operationId":"get_work_version","parameters":[{"name":"work_uuid","in":"path","required":true,"schema":{"type":"string","title":"Work Uuid"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"integer","description":"The integer version id, as returned by the versions list. Example: 42","title":"Version Id"},"description":"The integer version id, as returned by the versions list. Example: 42"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_uuid}/versions":{"get":{"tags":["Versions"],"summary":"Read Instance Versions","description":"List every stored version of an Instance, oldest first.","operationId":"get_instance_versions","parameters":[{"name":"instance_uuid","in":"path","required":true,"schema":{"type":"string","title":"Instance Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionListSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_uuid}/version/{version_id}":{"get":{"tags":["Versions"],"summary":"Read Instance Version","description":"Return one historical version of an Instance as stored JSON-LD.","operationId":"get_instance_version","parameters":[{"name":"instance_uuid","in":"path","required":true,"schema":{"type":"string","title":"Instance Uuid"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"integer","description":"The integer version id, as returned by the versions list. Example: 42","title":"Version Id"},"description":"The integer version id, as returned by the versions list. Example: 42"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstanceSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/profiles/{profile_uuid}/versions":{"get":{"tags":["Versions"],"summary":"Read Profile Versions","description":"List every stored version of a Profile, oldest first.","operationId":"get_profile_versions","parameters":[{"name":"profile_uuid","in":"path","required":true,"schema":{"type":"string","title":"Profile Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionListSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/profiles/{profile_uuid}/version/{version_id}":{"get":{"tags":["Versions"],"summary":"Read Profile Version","description":"Return one historical version of a Profile as stored JSON-LD.","operationId":"get_profile_version","parameters":[{"name":"profile_uuid","in":"path","required":true,"schema":{"type":"string","title":"Profile Uuid"}},{"name":"version_id","in":"path","required":true,"schema":{"type":"integer","description":"The integer version id, as returned by the versions list. Example: 42","title":"Version Id"},"description":"The integer version id, as returned by the versions list. Example: 42"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/":{"get":{"tags":["Search"],"summary":"Search","description":"Search for Works, Instances and Hubs.\nIt transforms the query string to be compatible with PostgreSQL full-text search.\nIt supports phrase search using double quotes.\nIf the query contains a phrase in double quotes, it will use \"simple\" language for\n    the full-text search to preserve the order of the words in the phrase.\n    Stop words will not be ignored and stemming will not be applied in this mode.\nOtherwise, it will use \"english\" language for the full-text search.","operationId":"search","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":0,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"type","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SearchType","default":"all"}},{"name":"scope","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SearchScope","default":"all"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResultSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search/profile":{"get":{"tags":["Search"],"summary":"Search Profile","description":"Search for profiles in the resource base.","operationId":"search_profile","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":0,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"nested","in":"query","required":false,"schema":{"enum":["include","exclude"],"type":"string","default":"include","title":"Nested"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchProfileResultSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/change_documents/instances/feed":{"get":{"tags":["Change Documents"],"summary":"Instances Entry Point","operationId":"get_instances_feed","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntryPointSchema"}}}}}}},"/change_documents/instances/page/{id}":{"get":{"tags":["Change Documents"],"summary":"Instances Change Set","operationId":"get_instances_change_set","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeSetSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/change_documents/works/feed":{"get":{"tags":["Change Documents"],"summary":"Works Entry Point","operationId":"get_instance_feed","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntryPointSchema"}}}}}}},"/change_documents/works/page/{id}":{"get":{"tags":["Change Documents"],"summary":"Works Change Set","operationId":"get_works_change_set","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeSetSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/batches/":{"post":{"tags":["Batches"],"summary":"Create Batch","description":"Create a batch from a URI (unchanged behavior).","operationId":"create_batch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCreateSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}},"security":[{"Keycloak":[]}]}},"/batches/upload/":{"post":{"tags":["Batches"],"summary":"Create Batch File","description":"Multipart with 'file' -> save as-is.\nOtherwise:\n  - application/json body: {\"name\": \"...\", \"rdfxml\": \"...\"} -> XML -> JSON-LD\n  - application/xml or text/xml raw body -> XML -> JSON-LD\nThen trigger the Airflow DAG using the saved path.","operationId":"batch_upload","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_batch_upload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}},"security":[{"Keycloak":[]}]}},"/export/":{"post":{"tags":["Export"],"summary":"Export To Lsp","description":"Triggers Workflows DAG for exporting Instance and Work to an insitution's\nLibrary Services Platform (LSP) like FOLIO or Alma.","operationId":"export","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportSchema"},"examples":{"by_instance_uri":{"summary":"Export by Bluecore instance URI","description":"instance_uri is required; local_id is optional and may be omitted entirely.","value":{"instance_uri":"https://bcld.info/instances/8836b3c5-9bc6-421b-9591-df25499cd93c"}},"overlay_by_local_id":{"summary":"Overlay an existing catalog record by local identifier","description":"instance_uri is still required to identify the source data; local_id additionally targets an existing catalog record (e.g. HRID) to overlay.","value":{"instance_uri":"https://bcld.info/instances/8836b3c5-9bc6-421b-9591-df25499cd93c","local_id":"a123456"}}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportResponseSchema"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}},"security":[{"Keycloak":[]}]}},"/marc2xml":{"post":{"tags":["Convert"],"summary":"Marc2Xml","description":"Convert a binary MARC file to MARCXML.\n\nAccepts either:\n- Multipart form-data with a ``file`` field containing binary MARC data.\n- A raw binary body with ``Content-Type: application/marc``.\n\nReturns MARCXML as ``application/xml``.","operationId":"marc2xml","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_marc2xml"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/xml":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}},"security":[{"Keycloak":[]}]}},"/marc2bibframe":{"post":{"tags":["Convert"],"summary":"Marc2Bibframe","description":"Convert MARC to BIBFRAME JSON-LD, with Blue Core policy applied.\n\nThe conversion is the Library of Congress marc2bibframe2 stylesheet, via\nthe marc-bibframe package. Blue Core then names CBC rather than DLC as the\nassigner of identifiers derived from the record.\n\nAccepts either:\n- Multipart form-data with a ``file`` field containing MARCXML or binary MARC21.\n- A raw body with ``Content-Type: application/xml``, ``text/xml``,\n  or ``application/marc``.\n\nBinary MARC21 payloads are automatically converted to MARCXML before\nthe BIBFRAME transformation.\n\nReturns BIBFRAME as ``application/ld+json``.","operationId":"marc2bibframe","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_marc2bibframe"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/ld+json":{}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"401":{"description":"Missing or invalid Keycloak bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Not authenticated"}}}},"403":{"description":"Token lacks the required realm role, or holds a forbidden one.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Access denied."}}}}},"security":[{"Keycloak":[]}]}},"/health":{"get":{"tags":["Health"],"summary":"Health","description":"Report that the API is up, along with the running version.","operationId":"health","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthSchema"}}}}}}},"/":{"get":{"summary":"Index","description":"Public route for API root.","operationId":"index__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/context.jsonld":{"get":{"summary":"Context Jsonld","operationId":"context_jsonld_context_jsonld_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"BatchCreateSchema":{"properties":{"uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"}},"type":"object","title":"BatchCreateSchema"},"BatchSchema":{"properties":{"uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"},"workflow_id":{"type":"string","title":"Workflow Id"}},"type":"object","required":["workflow_id"],"title":"BatchSchema"},"Body_batch_upload":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","title":"Body_batch_upload"},"Body_marc2bibframe":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","title":"Body_marc2bibframe"},"Body_marc2xml":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","title":"Body_marc2xml"},"ChangeSetSchema":{"properties":{"@context":{"items":{"anyOf":[{"type":"string"},{"additionalProperties":{"type":"string"},"type":"object"}]},"type":"array","title":"@Context","default":["https://www.w3.org/ns/activitystreams","https://emm-spec.org/1.0/context.json",{"bf":"http://id.loc.gov/ontologies/bibframe/"}]},"type":{"type":"string","title":"Type","default":"OrderedCollectionPage"},"id":{"type":"string","title":"Id"},"partOf":{"type":"string","title":"Partof"},"totalItems":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Totalitems"},"prev":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prev"},"next":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next"},"orderedItems":{"items":{"$ref":"#/components/schemas/EntityChangeActivitiesSchema"},"type":"array","title":"Ordereditems"}},"type":"object","required":["id","partOf","orderedItems"],"title":"ChangeSetSchema"},"EntityChangeActivitiesSchema":{"properties":{"summary":{"type":"string","title":"Summary"},"published":{"type":"string","title":"Published"},"type":{"type":"string","title":"Type"},"partOf":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Partof"},"object":{"$ref":"#/components/schemas/EntityChangeObjectSchema"}},"type":"object","required":["summary","published","type","object"],"title":"EntityChangeActivitiesSchema"},"EntityChangeObjectSchema":{"properties":{"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"updated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated"},"id":{"type":"string","title":"Id"}},"type":"object","required":["id"],"title":"EntityChangeObjectSchema"},"EntryPointSchema":{"properties":{"@context":{"items":{"type":"string"},"type":"array","title":"@Context","default":["https://www.w3.org/ns/activitystreams","https://emm-spec.org/1.0/context.json"]},"summary":{"type":"string","title":"Summary"},"type":{"type":"string","title":"Type","default":"OrderedCollection"},"id":{"type":"string","title":"Id"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"first":{"additionalProperties":{"type":"string"},"type":"object","title":"First"},"last":{"additionalProperties":{"type":"string"},"type":"object","title":"Last"},"totalItems":{"type":"integer","title":"Totalitems"}},"type":"object","required":["summary","id","first","last","totalItems"],"title":"EntryPointSchema"},"ExportResponseSchema":{"properties":{"instance_uri":{"type":"string","title":"Instance Uri"},"local_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Local Id"},"workflow_id":{"type":"string","title":"Workflow Id"}},"type":"object","required":["instance_uri","workflow_id"],"title":"ExportResponseSchema"},"ExportSchema":{"properties":{"instance_uri":{"type":"string","title":"Instance Uri"},"local_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Local Id"}},"type":"object","required":["instance_uri"],"title":"ExportSchema"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthSchema":{"properties":{"status":{"type":"string","title":"Status"},"version":{"type":"string","title":"Version"}},"type":"object","required":["status","version"],"title":"HealthSchema"},"HubSchema":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"type":{"type":"string","title":"Type","default":"hubs"},"data":{"additionalProperties":true,"type":"object","title":"Data"},"uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"},"uuid":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Uuid"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"is_expanded":{"type":"boolean","title":"Is Expanded","default":false}},"type":"object","required":["id","data","uri","uuid","created_at","updated_at"],"title":"HubSchema"},"InstanceSchema":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"type":{"type":"string","title":"Type","default":"instances"},"data":{"additionalProperties":true,"type":"object","title":"Data"},"uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"},"uuid":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Uuid"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"work_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Work Id"},"is_expanded":{"type":"boolean","title":"Is Expanded","default":false}},"type":"object","required":["id","data","uri","uuid","created_at","updated_at","work_id"],"title":"InstanceSchema"},"LinksSchema":{"properties":{"first":{"type":"string","title":"First"},"prev":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prev"},"next":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next"}},"type":"object","required":["first"],"title":"LinksSchema"},"OtherResourceCreateSchema":{"properties":{"data":{"type":"string","title":"Data"},"uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"}},"type":"object","required":["data"],"title":"OtherResourceCreateSchema"},"OtherResourceSchema":{"properties":{"id":{"type":"integer","title":"Id"},"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"}],"title":"Data"},"uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"}},"type":"object","required":["id","data"],"title":"OtherResourceSchema"},"OtherResourceUpdateSchema":{"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"}},"type":"object","title":"OtherResourceUpdateSchema"},"ProfileCreateSchema":{"properties":{"data":{"type":"string","title":"Data"}},"type":"object","required":["data"],"title":"ProfileCreateSchema"},"ProfileSchema":{"properties":{"id":{"type":"integer","title":"Id"},"uuid":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Uuid"},"uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"},"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"}],"title":"Data"}},"type":"object","required":["id","data"],"title":"ProfileSchema"},"ProfileUpdateSchema":{"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"}},"type":"object","title":"ProfileUpdateSchema"},"ResourceBaseSchema":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"type":{"type":"string","title":"Type"},"data":{"additionalProperties":true,"type":"object","title":"Data"},"uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"},"uuid":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Uuid"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","type","data","uri","uuid","created_at","updated_at"],"title":"ResourceBaseSchema"},"SearchProfileResultSchema":{"properties":{"results":{"items":{"$ref":"#/components/schemas/ProfileSchema"},"type":"array","title":"Results"},"links":{"$ref":"#/components/schemas/LinksSchema"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["results","links","total"],"title":"SearchProfileResultSchema"},"SearchResultSchema":{"properties":{"results":{"items":{"$ref":"#/components/schemas/ResourceBaseSchema"},"type":"array","title":"Results"},"links":{"$ref":"#/components/schemas/LinksSchema"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["results","links","total"],"title":"SearchResultSchema"},"SearchScope":{"type":"string","enum":["all","title"],"title":"SearchScope","description":"Fields a resource search can be limited to."},"SearchType":{"type":"string","enum":["hubs","works","instances","all"],"title":"SearchType","description":"Search type enum."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VersionListSchema":{"properties":{"versions":{"items":{"$ref":"#/components/schemas/VersionSchema"},"type":"array","title":"Versions"}},"type":"object","required":["versions"],"title":"VersionListSchema"},"VersionSchema":{"properties":{"id":{"type":"integer","title":"Id"},"timestamp":{"type":"string","title":"Timestamp"},"user":{"type":"string","title":"User"}},"type":"object","required":["id","timestamp","user"],"title":"VersionSchema"},"WorkSchema":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"type":{"type":"string","title":"Type","default":"works"},"data":{"additionalProperties":true,"type":"object","title":"Data"},"uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uri"},"uuid":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Uuid"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"hub_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hub Id"},"is_expanded":{"type":"boolean","title":"Is Expanded","default":false}},"type":"object","required":["id","data","uri","uuid","created_at","updated_at","hub_id"],"title":"WorkSchema"}},"securitySchemes":{"Keycloak":{"type":"oauth2","description":"Keycloak bearer token from the `bluecore` realm. Authorization uses the `realm_access.roles` claim: `create`, `update`, and `export` grant write access, and `cataloger-read-only` denies it. Outside Swagger UI, get a token with `bluecore token` and send it as `Authorization: Bearer <token>`.","flows":{"authorizationCode":{"refreshUrl":"https://dev.bcld.info/keycloak/realms/bluecore/protocol/openid-connect/token","scopes":{"openid":"Authenticate with Keycloak","profile":"Read the caller's name and username","email":"Read the caller's email address"},"authorizationUrl":"https://dev.bcld.info/keycloak/realms/bluecore/protocol/openid-connect/auth","tokenUrl":"https://dev.bcld.info/keycloak/realms/bluecore/protocol/openid-connect/token"}}}}},"tags":[{"name":"Hubs","description":"BIBFRAME Hubs gathering related Works."},{"name":"Works","description":"BIBFRAME Works."},{"name":"Instances","description":"BIBFRAME Instances belonging to a Work."},{"name":"Resources","description":"JSON-LD resources used to support Work and Instances."},{"name":"Profiles","description":"Resource profiles (e.g. Sinopia profiles) used to drive editing."},{"name":"Versions","description":"Version history for Hubs, Works, and Instances."},{"name":"Search","description":"Full-text and vector search for Works, Instances, Hubs, Resources."},{"name":"Change Documents","description":"Activity Streams change feeds for downstream consumers."},{"name":"Batches","description":"Bulk ingestion via Airflow."},{"name":"Export","description":"Resource export."},{"name":"Convert","description":"Format conversion utilities."},{"name":"Health","description":"Service health check."}],"servers":[{"url":"/api"}]}