{"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":"https://colink.udistrital.edu.co/api/context.jsonld","@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\": \"https://colink.udistrital.edu.co/api/context.jsonld\", \"@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":"https://colink.udistrital.edu.co/api/context.jsonld","@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\": \"https://colink.udistrital.edu.co/api/context.jsonld\", \"@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":"https://colink.udistrital.edu.co/api/context.jsonld","@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\": \"https://colink.udistrital.edu.co/api/context.jsonld\", \"@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":"https://colink.udistrital.edu.co/api/context.jsonld","@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\": \"https://colink.udistrital.edu.co/api/context.jsonld\", \"@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":"https://colink.udistrital.edu.co/api/context.jsonld","@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\": \"https://colink.udistrital.edu.co/api/context.jsonld\", \"@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":"https://colink.udistrital.edu.co/api/context.jsonld","@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\": \"https://colink.udistrital.edu.co/api/context.jsonld\", \"@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":"Convert binary MARC21 to MARCXML","description":"Convert a binary MARC record to MARCXML.\n\nOne record per request. A body over the byte limit, or holding more than one\nrecord, is refused with a 413; bulk MARC belongs in a batch workflow.\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":{"description":"A single binary MARC21 record, as a multipart `file` field or as the raw body.","content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_marc2xml"}},"application/marc":{"schema":{"type":"string","contentMediaType":"application/marc"}}},"required":true},"responses":{"200":{"description":"MARCXML: a `<collection>` holding the converted `<record>`.","content":{"application/xml":{"schema":{"type":"string"}}}},"413":{"description":"Body exceeded the byte limit, or carried more than one record.","content":{"application/json":{"schema":{"properties":{"detail":{"type":"string"}},"type":"object"},"example":{"detail":"Received 2 records; this endpoint converts one. Bulk MARC belongs in a batch workflow."}}}},"415":{"description":"Body was neither a multipart upload with a `file` field nor a raw body with `Content-Type: application/marc`.","content":{"application/json":{"schema":{"properties":{"detail":{"type":"string"}},"type":"object"},"example":{"detail":"Send multipart/form-data with a 'file' field or a raw body with Content-Type: application/marc."}}}},"422":{"description":"Body was empty, or could not be parsed as binary MARC21.","content":{"application/json":{"schema":{"properties":{"detail":{"type":"string"}},"type":"object"},"example":{"detail":"Empty MARC payload."}}}},"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":"Convert MARC or MARCXML to Blue Core BIBFRAME","description":"Convert MARC to Blue Core BIBFRAME, with Blue Core policy applied.\n\nThe conversion is the Library of Congress marc2bibframe2 stylesheet, via\nthe marc-bibframe package, run in this process -- no Airflow involved. Blue\nCore then names CBC rather than DLC as the assigner of identifiers derived\nfrom 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\nOne record per request. A body over the byte limit, or holding more than one\nrecord, is refused with a 413; bulk MARC belongs in a batch workflow.\n\nBinary MARC21 payloads are converted to MARCXML before the BIBFRAME\ntransformation. A leading UTF-8 byte order mark is ignored, so MARCXML saved\nby a Windows editor is read as XML rather than as MARC.\n``source_base_uri`` applies to both request shapes.\n\nThe response serialization is chosen by the ``Accept`` header: JSON-LD (the\ndefault), RDF/XML, turtle, or N-Triples.","operationId":"marc2bibframe","security":[{"Keycloak":[]}],"parameters":[{"name":"source_base_uri","in":"query","required":false,"schema":{"type":"string","description":"Base for the URIs the transform mints. Minted URIs have the form `{source_base_uri}{record id}#{fragment}`, so they are scoped to the record they came from and are **not** authority URIs: two records describing the same person yield two different agent URIs. A trailing slash is added if missing. Named to match the `source_base_uri` parameter of the bluecore-workflows `marc_to_bibframe` DAG, and defaulting to the same value.","examples":["https://bcld.info/"],"default":"http://example.org/","title":"Source Base Uri"},"description":"Base for the URIs the transform mints. Minted URIs have the form `{source_base_uri}{record id}#{fragment}`, so they are scoped to the record they came from and are **not** authority URIs: two records describing the same person yield two different agent URIs. A trailing slash is added if missing. Named to match the `source_base_uri` parameter of the bluecore-workflows `marc_to_bibframe` DAG, and defaulting to the same value."}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_marc2bibframe"}},"application/xml":{"schema":{"type":"string"},"example":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<collection xmlns=\"http://www.loc.gov/MARC21/slim\">\n  <record>\n    <leader>01142cam a2200301 a 4500</leader>\n    <controlfield tag=\"001\">92005291</controlfield>\n    <controlfield tag=\"003\">DLC</controlfield>\n    <controlfield tag=\"008\">920219s1993    caua          001 0 eng  </controlfield>\n    <datafield tag=\"100\" ind1=\"1\" ind2=\" \">\n      <subfield code=\"a\">Austen, Jane,</subfield>\n      <subfield code=\"d\">1775-1817.</subfield>\n    </datafield>\n    <datafield tag=\"245\" ind1=\"1\" ind2=\"0\">\n      <subfield code=\"a\">Pride and prejudice /</subfield>\n      <subfield code=\"c\">Jane Austen.</subfield>\n    </datafield>\n  </record>\n</collection>\n"},"text/xml":{"schema":{"type":"string"},"example":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<collection xmlns=\"http://www.loc.gov/MARC21/slim\">\n  <record>\n    <leader>01142cam a2200301 a 4500</leader>\n    <controlfield tag=\"001\">92005291</controlfield>\n    <controlfield tag=\"003\">DLC</controlfield>\n    <controlfield tag=\"008\">920219s1993    caua          001 0 eng  </controlfield>\n    <datafield tag=\"100\" ind1=\"1\" ind2=\" \">\n      <subfield code=\"a\">Austen, Jane,</subfield>\n      <subfield code=\"d\">1775-1817.</subfield>\n    </datafield>\n    <datafield tag=\"245\" ind1=\"1\" ind2=\"0\">\n      <subfield code=\"a\">Pride and prejudice /</subfield>\n      <subfield code=\"c\">Jane Austen.</subfield>\n    </datafield>\n  </record>\n</collection>\n"},"application/marc":{"schema":{"type":"string","contentMediaType":"application/marc"}}},"required":true,"description":"A single record as MARCXML or as binary MARC21, in a multipart `file` field or as the raw body."},"responses":{"200":{"description":"BIBFRAME in the serialization named by the `Accept` header. `application/ld+json` is the default, and is what a missing header or `*/*` receives.","content":{"application/ld+json":{"schema":{"type":"array","items":{"type":"object"}}},"application/rdf+xml":{"schema":{"type":"string"}},"text/turtle":{"schema":{"type":"string"}},"application/n-triples":{"schema":{"type":"string"}}}},"406":{"description":"`Accept` named no serialization this endpoint can produce.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Cannot serialize BIBFRAME as any of the requested media types."}}}},"413":{"description":"Body exceeded the byte limit, or carried more than one record.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Received 2 records; this endpoint converts one. Bulk MARC belongs in a batch workflow."}}}},"415":{"description":"Body was neither a multipart upload with a `file` field nor a raw body with `Content-Type: application/xml`, `text/xml`, or `application/marc`.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"Send multipart/form-data with a 'file' field, or a raw body with Content-Type: application/xml, text/xml, or application/marc."}}}},"422":{"description":"Body was empty, held no record, was not well-formed XML, or the BIBFRAME transformation failed; or `source_base_uri` was not an http(s) URI.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}}},"example":{"detail":"No MARC record found."}}}},"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."}}}}}}},"/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://colink.udistrital.edu.co/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://colink.udistrital.edu.co/keycloak/realms/bluecore/protocol/openid-connect/auth","tokenUrl":"https://colink.udistrital.edu.co/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"}]}