{"components":{"securitySchemes":{"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"parameters":{"apiId":{"name":"apiId","description":"ID of the API.","in":"path","required":true,"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"},"securityCredentialsId":{"name":"securityCredentialsId","description":"ID of the security credentials.","in":"path","required":true,"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"},"catalogId":{"name":"catalogId","description":"ID of the catalog data.","in":"path","required":true,"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"},"harvestId":{"name":"harvestId","description":"ID of the harvest.","in":"path","required":true,"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"},"mappingId":{"name":"mappingId","description":"ID of the mapping.","in":"path","required":true,"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"},"conversionId":{"name":"conversionId","description":"ID of the conversion.","in":"path","required":true,"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"},"publicationId":{"name":"publicationId","description":"ID of the publication.","in":"path","required":true,"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"}},"schemas":{"PostApiBody":{"type":"object","properties":{"doc":{"$ref":"#/components/schemas/OApiDocument"},"harvestingConstraints":{"$ref":"#/components/schemas/HarvestingConstraints"},"lastChecked":{"type":"string","format":"date-time"}},"required":["doc","harvestingConstraints"],"additionalProperties":false},"PutApiBody":{"$ref":"#/components/schemas/PostApiBody"},"PostSecurityCredentialsBody":{"type":"object","properties":{"secrets":{"$ref":"#/components/schemas/Secrets"}},"required":["secrets"],"additionalProperties":false},"PutSecurityCredentialsBody":{"$ref":"#/components/schemas/PostSecurityCredentialsBody"},"PostCatalogBody":{"type":"object","properties":{"lines":{"type":"array","items":{"$ref":"#/components/schemas/MappingLine"}}},"required":["lines"],"additionalProperties":false},"PutCatalogBody":{"$ref":"#/components/schemas/PutCatalogBody"},"PostMappingBody":{"type":"object","properties":{"lines":{"type":"array","items":{"$ref":"#/components/schemas/MappingLine"}}},"required":["lines"],"additionalProperties":false},"PutMappingBody":{"$ref":"#/components/schemas/PutCatalogBody"},"PostHarvestStartBody":{"type":"object","properties":{"harvestingConstraints":{"$ref":"#/components/schemas/HarvestingConstraints"},"securityCredentialsId":{"type":"string","example":"65b43898f5e842b0b16fb933a9dd35dd"}},"additionalProperties":false},"PostConversionStartBody":{"type":"object","properties":{"mappingId":{"type":"string","example":"65b43898f5e842b0b16fb933a9dd35dd"}},"required":["mappingId"],"additionalProperties":false},"PostPublicationStartBody":{"type":"object","properties":{"catalogId":{"type":"string","example":"65b43898f5e842b0b16fb933a9dd35dd"}},"required":["catalogId"],"additionalProperties":false},"ApiDocument":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"userId":{"type":"string"},"doc":{"$ref":"#/components/schemas/OApiDocument"},"harvestingConstraints":{"$ref":"#/components/schemas/HarvestingConstraints"},"lastChecked":{"type":"string","format":"date-time"},"errors":{"type":"object","properties":{"schemaErrors":{"type":"array","items":{"$ref":"#/components/schemas/BetterAjvError"}},"logicErrors":{"type":"array","items":{"type":"string"}}},"required":["schemaErrors","logicErrors"],"additionalProperties":false},"date":{"type":"string"}},"required":["date","doc","errors","harvestingConstraints","id","userId"]},"SecurityCredentials":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"apiId":{"type":"string"},"secrets":{"$ref":"#/components/schemas/Secrets"},"date":{"type":"string"}},"required":["apiId","date","id","secrets"]},"Catalog":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"apiId":{"type":"string"},"lines":{"type":"array","items":{"$ref":"#/components/schemas/MappingLine"}},"date":{"type":"string"}},"required":["apiId","date","id","lines"]},"Harvest":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"apiId":{"type":"string"},"securityCredentialsId":{"type":"string"},"harvestingConstraints":{"$ref":"#/components/schemas/HarvestingConstraints"},"jobArtifacts":{"$ref":"#/components/schemas/HarvestArtifacts"},"metadataSchema":{"$ref":"#/components/schemas/Field"},"errors":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}},"date":{"type":"string"}},"required":["apiId","date","errors","id","warnings"]},"Mapping":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"userId":{"type":"string"},"apiId":{"type":"string"},"lines":{"type":"array","items":{"$ref":"#/components/schemas/MappingLine"}},"date":{"type":"string"}},"required":["apiId","date","id","lines","userId"]},"Conversion":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"harvestId":{"type":"string"},"mappingId":{"type":"string"},"datasetIds":{"type":"array","items":{"type":"string"}},"errors":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}},"date":{"type":"string"}},"required":["datasetIds","date","errors","harvestId","id","mappingId","warnings"]},"Publication":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"conversionId":{"type":"string"},"catalogId":{"type":"string"},"datasetIds":{"type":"array","items":{"type":"string"}},"isDraft":{"type":"boolean"},"fdpResourceId":{"type":"string"},"errors":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}},"date":{"type":"string"}},"required":["catalogId","conversionId","datasetIds","date","errors","id","warnings"]},"HarvestArtifacts":{"type":"object","properties":{"kind":{"$ref":"#/components/schemas/HarvestArtifactKind"},"items":{"type":"array","items":{"type":"string"}}},"required":["kind","items"],"additionalProperties":false},"HarvestArtifactKind":{"type":"string","enum":["id","url"]},"Field":{"anyOf":[{"$ref":"#/components/schemas/AtomicField"},{"$ref":"#/components/schemas/ObjectField"},{"$ref":"#/components/schemas/ArrayField"}]},"AtomicField":{"type":"object","properties":{"name":{"type":"string"},"type":{"$ref":"#/components/schemas/FieldTypesEnum"},"jsonPath":{"type":"string"}},"required":["type","jsonPath"],"additionalProperties":false},"FieldTypesEnum":{"type":"string","enum":["string","URL","number","boolean","null","undefined","array","object"]},"ObjectField":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["object"]},"propertiesStats":{"type":"array","items":{"$ref":"#/components/schemas/FieldStat"}},"jsonPath":{"type":"string"}},"required":["type","propertiesStats","jsonPath"],"additionalProperties":false},"FieldStat":{"type":"object","properties":{"field":{"$ref":"#/components/schemas/Field"},"occurencies":{"type":"number"},"relativeOccurency":{"type":"number"}},"required":["field","occurencies","relativeOccurency"],"additionalProperties":false},"ArrayField":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["array"]},"itemsStats":{"type":"array","items":{"$ref":"#/components/schemas/FieldStat"}},"jsonPath":{"type":"string"}},"required":["type","jsonPath"],"additionalProperties":false},"BetterAjvError":{"type":"object","properties":{"start":{"type":"object","properties":{"line":{"type":"number"},"column":{"type":"number"},"offset":{"type":"number"}},"required":["line","column","offset"],"additionalProperties":false},"end":{"type":"object","properties":{"line":{"type":"number"},"column":{"type":"number"},"offset":{"type":"number"}},"required":["line","column","offset"],"additionalProperties":false},"error":{"type":"string"},"suggestion":{"type":"string"}},"required":["start","error"],"additionalProperties":false},"JobInfo":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/JobStatus"},"errors":{"type":"array","items":{"type":"string"}},"warnings":{"type":"array","items":{"type":"string"}},"startedDate":{"type":"string","format":"date-time"},"finishedDate":{"type":"string","format":"date-time"},"totalItems":{"type":"number"},"processedItems":{"type":"number"},"itemsWithErrors":{"type":"number"},"itemsWithWarnings":{"type":"number"}},"required":["status","errors","warnings","totalItems","processedItems","itemsWithErrors","itemsWithWarnings"],"additionalProperties":false},"JobStatus":{"type":"string","enum":["Scheduled","Running","Paused","Finished","Failed","Unknown"]},"Secrets":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/ApiKeySecurityCredentials"},{"$ref":"#/components/schemas/JwtSecurityCredentials"}]}},"ApiKeySecurityCredentials":{"type":"object","properties":{"type":{"type":"string","enum":["api key"]},"apiKey":{"type":"string"}},"required":["type","apiKey"],"additionalProperties":false},"JwtSecurityCredentials":{"type":"object","properties":{"type":{"type":"string","enum":["jwt"]},"jwt":{"type":"string"}},"required":["type","jwt"],"additionalProperties":false},"OApiDocument":{"type":"object","properties":{"paths":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/PathDefinition"}},"info":{"$ref":"#/components/schemas/OApiInfo"},"openapi":{"type":"string"},"servers":{"type":"array","items":{"$ref":"#/components/schemas/Server"}},"tags":{"type":"array","items":{}},"components":{"$ref":"#/components/schemas/Components"},"security":{"type":"array","items":{"$ref":"#/components/schemas/SecurityRequirement"}}},"required":["paths","info","openapi","servers","tags"],"additionalProperties":false},"PathDefinition":{"type":"object","properties":{"get":{"$ref":"#/components/schemas/MethodDefinition"},"post":{"$ref":"#/components/schemas/MethodDefinition"}}},"MethodDefinition":{"type":"object","properties":{"responses":{},"x-fsp-route-role":{"$ref":"#/components/schemas/RouteRole"},"x-fsp-id-jsonpath":{"type":"string"},"parameters":{"type":"array","items":{"$ref":"#/components/schemas/Parameter"}},"security":{"type":"array","items":{"$ref":"#/components/schemas/SecurityRequirement"}},"tags":{"type":"array","items":{"type":"string"}}},"required":["responses"]},"RouteRole":{"type":"string","enum":["get-all-ids","get-all-urls","get-all-metadata","get-one-metadata"]},"Parameter":{"type":"object","properties":{"in":{"$ref":"#/components/schemas/ParameterPositionEnum"},"name":{"type":"string"},"required":{"type":"boolean"},"schema":{},"x-fsp-param-role":{"$ref":"#/components/schemas/ParameterRole"},"x-fsp-param-value":{"type":"string"},"description":{"type":"string"},"example":{"type":"string"}},"required":["in","name","required","schema"],"additionalProperties":false},"ParameterPositionEnum":{"type":"string","enum":["path","query"]},"ParameterRole":{"type":"string","enum":["id","pagination"]},"SecurityRequirement":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}},"OApiInfo":{"type":"object","properties":{"title":{"type":"string"},"version":{"type":"string"},"termsOfService":{"type":"string"},"contact":{"$ref":"#/components/schemas/OApiContact"},"contacts":{"type":"array","items":{"$ref":"#/components/schemas/OApiContact"}},"description":{"type":"string"},"license":{"$ref":"#/components/schemas/License"}},"required":["title","version","termsOfService"],"additionalProperties":false},"OApiContact":{"type":"object","properties":{"x-role":{"$ref":"#/components/schemas/ContactRole"},"x-id":{"type":"string"},"email":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"}},"additionalProperties":false},"ContactRole":{"type":"string","enum":["responsible organization","responsible developer","contributor","support"]},"License":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}},"required":["name"],"additionalProperties":false},"Server":{"type":"object","properties":{"url":{"type":"string"},"description":{"type":"string"}},"required":["url"],"additionalProperties":false},"Components":{"type":"object","properties":{"securitySchemes":{"$ref":"#/components/schemas/SecuritySchemesMap"}},"additionalProperties":false},"SecuritySchemesMap":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SecurityScheme"}},"SecurityScheme":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["apiKey"]},"name":{"type":"string"},"in":{"$ref":"#/components/schemas/SecuritySchemePositionEnum"},"description":{"type":"string"}},"required":["in","name","type"]},{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["http"]},"scheme":{"type":"string"},"bearerFormat":{"type":"string"},"description":{"type":"string"}},"required":["scheme","type"]},{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["oauth2"]},"flows":{"type":"object","properties":{"implicit":{"type":"object","additionalProperties":false},"password":{"type":"object","additionalProperties":false},"clientCredentials":{"type":"object","additionalProperties":false},"authorizationCode":{"type":"object","additionalProperties":false}},"additionalProperties":false},"description":{"type":"string"}},"required":["flows","type"]},{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string","enum":["openIdConnect"]},"openIdConnectUrl":{"type":"string"},"description":{"type":"string"}},"required":["openIdConnectUrl","type"]}]},"SecuritySchemePositionEnum":{"type":"string","enum":["query","header","cookie"]},"HarvestingConstraints":{"type":"object","properties":{"schedulingConstraints":{"$ref":"#/components/schemas/SchedulingConstraints"},"concurrencyConstraints":{"$ref":"#/components/schemas/ConcurrencyConstraints"},"logicalConstraints":{"$ref":"#/components/schemas/LogicalConstraints"}},"required":["schedulingConstraints","concurrencyConstraints","logicalConstraints"],"additionalProperties":false},"SchedulingConstraints":{"type":"object","additionalProperties":false},"ConcurrencyConstraints":{"type":"object","properties":{"concurrency":{"type":"number"},"timeoutMs":{"type":"number"},"intervalMs":{"type":"number"},"intervalCap":{"type":"number"}},"additionalProperties":false},"LogicalConstraints":{"type":"object","properties":{"limit":{"type":"number"},"datasetIds":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"MappingLine":{"type":"object","properties":{"schemaItem":{"$ref":"#/components/schemas/SemanticProperty"},"metadataItem":{"type":"string"}},"required":["schemaItem","metadataItem"],"additionalProperties":false},"SemanticProperty":{"type":"object","properties":{"uri":{"type":"string"},"name":{"type":"string"},"domain":{"$ref":"#/components/schemas/Domain"},"parentProperty":{"type":"string"}},"required":["uri","name","domain"],"additionalProperties":false},"Domain":{"type":"string","enum":["<http://purl.org/semdcat#SemanticArtefact>","<http://purl.org/semdcat#SemanticArtefactDistribution>","<http://www.w3.org/ns/dcat#Resource>","<http://www.w3.org/ns/dcat#Catalog>","<http://www.w3.org/ns/dcat#DataService>"]}},"responses":{"400":{"description":"Bad request. The request cqnnot be handled because of insufficient or invalid inputs."},"401":{"description":"Unauthorized. Log in is required to use this endpoint."},"403":{"description":"Forbidden. The user was successfully authenticated but is not allowed to access the requested resource, generally because it does not belong to the user (this includes resources that do not exist)."},"500":{"description":"Internal server error. The server could not handle the request, for unexpected reasons, and failed to complete the normal operation flow."}},"examples":{"JobInfoRunning":{"summary":"Running job status.","value":{"status":"Running","errors":[],"warnings":[],"startedDate":"2022-04-27T11:06:55.260Z","totalItems":10,"processedItems":5,"itemsWithErrors":1,"itemsWithWarnings":1}},"JobInfoScheduled":{"summary":"Scheduled job status.","value":{"status":"Scheduled","errors":[],"warnings":[],"totalItems":0,"processedItems":0,"itemsWithErrors":0,"itemsWithWarnings":0}},"JobInfoPaused":{"summary":"Paused job status.","value":{"status":"Paused","errors":[],"warnings":[],"startedDate":"2022-04-27T12:00:00.000Z","totalItems":10,"processedItems":5,"itemsWithErrors":0,"itemsWithWarnings":0}},"JobInfoFailed":{"summary":"Failed job status.","value":{"status":"Failed","errors":["Sample error."],"warnings":[],"startedDate":"2022-04-27T11:06:55.260Z","totalItems":0,"processedItems":0,"itemsWithErrors":0,"itemsWithWarnings":0}},"JobInfoUnknown":{"summary":"Unknown job status.","value":{"status":"Unknown","errors":[],"warnings":[],"totalItems":0,"processedItems":0,"itemsWithErrors":0,"itemsWithWarnings":0}},"JobInfoFinished":{"summary":"Finished job status.","value":{"status":"Running","errors":[],"warnings":[],"startedDate":"2022-04-27T11:06:55.260Z","finishedDate":"2022-04-27T13:00:00.000Z","totalItems":10,"processedItems":10,"itemsWithErrors":1,"itemsWithWarnings":1}}}},"info":{"contact":{"email":"ylefranc@esciencefactory.com","name":"Yann LEFRANC","x-role":"CEO"},"description":"Documentation of the FAIR Space API. Learn more about the [FAIR Space](https://app.fair-space-staging.esciencedatafactory.com) platform.\nThe purpose of this platform is to automate translation of (meta)data towards the [DCAT2](https://www.w3.org/TR/vocab-dcat-2/) [RDF](https://www.w3.org/RDF/) vocabulary. In effect, this is a proof of concept for a (meta)data normalization tool that would help e.g. research institutes to converge towards a standard for metadata repositories description, thus making said repositories more [FAIR](https://www.go-fair.org/fair-principles/).\nIt leverages OpenAPI documents to automatically retrieve data from remote repositories without the need for the development of 'adapters' for each repository. It then guides the user in the creation of a mapping between the 'raw' data and the DCAT classes. The data is then converted and published in a [FAIR Data Point](https://specs.fairdatapoint.org/), a repository for RDF (meta)data.\nThis a Work In Progress and not all protocols and use cases are supported by the 'harvesting' service that fetches the metadata from remote repositories based on OpenAPI documents.","termsOfService":"","title":"FAIR Space API","version":"0.0.1"},"openapi":"3.0.0","security":[{"JWT":[]}],"paths":{"/apis":{"get":{"summary":"Retrieve the list of APIs","description":"Allows users to retrieve the list of public APIs or their own APIs.","security":[],"tags":["APIs"],"parameters":[{"name":"own","in":"query","description":"Set this to 'true' to only list your own APIs. This parameter has no effect if you are not logged in.","required":false,"schema":{"type":"boolean"},"example":true},{"name":"skip","in":"query","description":"Number of APIs to skip. Use it in conjonction with 'limit' to manage pagination.","required":false,"schema":{"type":"number"},"example":10},{"name":"limit","in":"query","description":"Number of APIs to list. Use it in conjonction with 'skip' to manage pagination.","required":false,"schema":{"type":"number"},"example":10}],"responses":{"200":{"description":"The list of APIs.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApiDocument"}}}}},"500":{"$ref":"#/components/responses/500"}}},"post":{"summary":"Save a new API.","security":[],"tags":["APIs"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostApiBody"}}}},"responses":{"201":{"description":"The ID of the newly saved API.","content":{"application/json":{"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"}}},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}":{"parameters":[{"$ref":"#/components/parameters/apiId"}],"get":{"summary":"Retrieve one API.","tags":["APIs"],"responses":{"200":{"description":"The matching API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutSecurityCredentialsBody"}}}},"500":{"$ref":"#/components/responses/500"}}},"put":{"summary":"Update an API.","tags":["APIs"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutApiBody"}}}},"responses":{"200":{"description":"The API was successfully saved. Errors found in the document are returned."},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}},"delete":{"summary":"Delete an API.","tags":["APIs"],"responses":{"200":{"description":"Successful deletion of the API."},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/security-credentials":{"parameters":[{"$ref":"#/components/parameters/apiId"}],"get":{"summary":"Retrieve the list of security credentials for a given API.","tags":["Security credentials"],"responses":{"200":{"description":"The list of credentials saved for the current API.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SecurityCredentials"}}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}},"post":{"summary":"Save security credentials for a given API.","tags":["Security credentials"],"requestBody":{"description":"This is how you specify security credentials that need to be used to acces your repository. Each key of the 'secrets' object should match the name of a 'security scheme' defined in your API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostSecurityCredentialsBody"}}}},"responses":{"200":{"description":"The id of the newly created security credentials.","content":{"application/json":{"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"}}},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/security-credentials/{securityCredentialsId}":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/securityCredentialsId"}],"get":{"summary":"Retrieve one security credentials set.","tags":["Security credentials"],"responses":{"200":{"description":"The list of credentials saved for the current API.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SecurityCredentials"}}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}},"put":{"summary":"Update security credentials.","tags":["Security credentials"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutSecurityCredentialsBody"}}}},"responses":{"200":{"description":"The id of the newly created security credentials.","content":{"application/json":{"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"}}},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}},"delete":{"summary":"Delete security credentials.","tags":["Security credentials"],"responses":{"200":{"description":"Successful deletion of the security credentials."},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/catalog":{"parameters":[{"$ref":"#/components/parameters/apiId"}],"get":{"summary":"Retrieve the catalog for a given API.","tags":["Catalog"],"responses":{"200":{"description":"The catalog saved for the current API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Catalog"}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}},"post":{"summary":"Save catalog data for a given API.","tags":["Catalog"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostCatalogBody"}}}},"responses":{"201":{"description":"The id of the newly created security credentials.","content":{"application/json":{"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"}}},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/catalog/{catalogId}":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/catalogId"}],"get":{"summary":"Retrieve the catalog data.","tags":["Catalog"],"responses":{"200":{"description":"The catalog saved for the current API.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Catalog"}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}},"put":{"summary":"Update catalog data for a given API.","tags":["Catalog"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutCatalogBody"}}}},"responses":{"200":{"description":"The id of the newly created security credentials.","content":{"application/json":{"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"}}},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}},"delete":{"summary":"Delete catalog data for a given API.","tags":["Catalog"],"responses":{"200":{"description":"Successful deletion of the catalog data."},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"}],"get":{"summary":"Retrieve the list of harvests.","tags":["Harvests"],"responses":{"200":{"description":"The list of harvests.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Harvest"}}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests/{harvestId}":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"}],"get":{"summary":"Retrieve the harvest data.","tags":["Harvests"],"responses":{"200":{"description":"The harvest data.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Harvest"}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}},"delete":{"summary":"Delete the harvest data.","tags":["Harvests"],"responses":{"200":{"description":"Successful deletion of the harvest data."},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests/{harvestId}/metadata-schema":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"}],"get":{"summary":"Generate a schema from the harvested metadata.","tags":["Harvests"],"responses":{"200":{"description":"The metadata schema.","content":{"application/json":{"schema":{"$ref":"TODO"}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests/{harvestId}/start":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"}],"post":{"summary":"Start a harvest job.","tags":["Harvests"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostHarvestStartBody"}}}},"responses":{"202":{"description":"Successful scheduling of the harvest job. The harvest iD is returned.","content":{"application/json":{"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"}}},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests/{harvestId}/status":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"}],"get":{"summary":"Retrieve the status of a harvest job.","tags":["Harvests"],"responses":{"202":{"description":"Current status of the harvest job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobInfo"},"examples":{"scheduled":{"$ref":"#/components/examples/JobInfoScheduled"},"running":{"$ref":"#/components/examples/JobInfoRunning"},"paused":{"$ref":"#/components/examples/JobInfoPaused"},"failed":{"$ref":"#/components/examples/JobInfoFailed"},"finished":{"$ref":"#/components/examples/JobInfoFinished"},"unknown":{"$ref":"#/components/examples/JobInfoUnknown"}}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests/{harvestId}/mappings":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"}],"get":{"summary":"Retrieve the list of mappings.","tags":["Mappings"],"responses":{"200":{"description":"The list of mappings.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Mapping"}}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}},"post":{"summary":"Save a new mapping.","tags":["Mappings"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostMappingBody"}}}},"responses":{"200":{"description":"The ID of the newly created mapping."},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests/{harvestId}/mappings/{mappingId}":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"},{"$ref":"#/components/parameters/mappingId"}],"get":{"summary":"Retrieve the mapping data.","tags":["Mappings"],"responses":{"200":{"description":"The mapping data.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Mapping"}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}},"put":{"summary":"Update a mapping.","tags":["Mappings"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutMappingBody"}}}},"responses":{"200":{"description":"Successful update of the mapping."},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}},"delete":{"summary":"Delete a mapping.","tags":["Mappings"],"responses":{"200":{"description":"Successful deletion of the mapping."},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests/{harvestId}/conversion":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"}],"get":{"summary":"Retrieve the conversion data.","tags":["Conversions"],"responses":{"200":{"description":"The conversion data.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Conversion"}}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests/{harvestId}/conversion/{conversionId}":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"},{"$ref":"#/components/parameters/conversionId"}],"get":{"summary":"Retrieve the conversion data.","tags":["Conversions"],"responses":{"200":{"description":"The conversion data.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conversion"}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}},"delete":{"summary":"Delete the conversion data.","tags":["Conversions"],"responses":{"200":{"description":"Successful deletion of the conversion data."},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests/{harvestId}/conversion/{conversionId}/status":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"},{"$ref":"#/components/parameters/conversionId"}],"get":{"summary":"Retrieve the conversion job status.","tags":["Conversions"],"responses":{"200":{"description":"Current status of the conversion job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobInfo"},"examples":{"scheduled":{"$ref":"#/components/examples/JobInfoScheduled"},"running":{"$ref":"#/components/examples/JobInfoRunning"},"paused":{"$ref":"#/components/examples/JobInfoPaused"},"failed":{"$ref":"#/components/examples/JobInfoFailed"},"finished":{"$ref":"#/components/examples/JobInfoFinished"},"unknown":{"$ref":"#/components/examples/JobInfoUnknown"}}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests/{harvestId}/conversion/{conversionId}/start":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"},{"$ref":"#/components/parameters/conversionId"}],"post":{"summary":"Start a conversion job.","tags":["Conversions"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostConversionStartBody"}}}},"responses":{"202":{"description":"Successful scheduling of a conversion job.","content":{"application/json":{"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"}}},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests/{harvestId}/conversion/{conversionId}/publications":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"},{"$ref":"#/components/parameters/conversionId"}],"get":{"summary":"Retrieve the list of publications.","tags":["Publications"],"responses":{"200":{"description":"The list of publications.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Publication"}}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests/{harvestId}/conversion/{conversionId}/publications/{publicationId}":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"},{"$ref":"#/components/parameters/conversionId"},{"$ref":"#/components/parameters/publicationId"}],"get":{"summary":"Retrieve the publication data.","tags":["Publications"],"responses":{"200":{"description":"The publication data.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Publication"}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}},"delete":{"summary":"Delete the publication data.","tags":["Publications"],"responses":{"200":{"description":"Successful deletion of the publication."},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests/{harvestId}/conversion/{conversionId}/publications/{publicationId}/start":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"},{"$ref":"#/components/parameters/conversionId"},{"$ref":"#/components/parameters/publicationId"}],"post":{"summary":"Start a publication job.","tags":["Publications"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostPublicationStartBody"}}}},"responses":{"202":{"description":"Successful scheduling of a publication job. Returns the publication ID.","content":{"application/json":{"schema":{"type":"string"},"example":"65b43898f5e842b0b16fb933a9dd35dd"}}},"400":{"$ref":"#/components/responses/400"},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/apis/{apiId}/harvests/{harvestId}/conversion/{conversionId}/publications/{publicationId}/status":{"parameters":[{"$ref":"#/components/parameters/apiId"},{"$ref":"#/components/parameters/harvestId"},{"$ref":"#/components/parameters/conversionId"},{"$ref":"#/components/parameters/publicationId"}],"get":{"summary":"Retrieve the publication job status.","tags":["Publications"],"responses":{"200":{"description":"Current status of the publication job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobInfo"},"examples":{"scheduled":{"$ref":"#/components/examples/JobInfoScheduled"},"running":{"$ref":"#/components/examples/JobInfoRunning"},"paused":{"$ref":"#/components/examples/JobInfoPaused"},"failed":{"$ref":"#/components/examples/JobInfoFailed"},"finished":{"$ref":"#/components/examples/JobInfoFinished"},"unknown":{"$ref":"#/components/examples/JobInfoUnknown"}}}}},"401":{"$ref":"#/components/responses/401"},"403":{"$ref":"#/components/responses/403"},"500":{"$ref":"#/components/responses/500"}}}},"/auth/keycloak/login":{"get":{"summary":"Log in using Keyclaok Open ID Connect.","tags":["Auth","Keycloak"],"responses":{"304":{"description":"Redirect to the Keyclaok login page."},"500":{"$ref":"#/components/responses/500"}}}},"/auth/keycloak/callback":{"get":{"summary":"Callback endpoint for Keyclaok Open ID Connect.","tags":["Auth","Keycloak"],"responses":{"200":{"description":"Successful login, a JSON Web Token is sent back to the frontend through the 'window.opener.postMessage()' interface. Frontends need to be whitelisted in the backend beforehand."},"500":{"$ref":"#/components/responses/500"}}}}},"servers":[{"description":"Staging server","url":"https://api.fair-space-staging.esciencedatafactory.com","x-maturity":"staging"}],"tags":[{"name":"APIs","description":"Endpoints for API management."},{"name":"Security credentials","description":"Endpoints for API security credentials management."},{"name":"Catalog","description":"Endpoints for catalog data management."},{"name":"Harvests","description":"Endpoints for harvests management."},{"name":"Mappings","description":"Endpoints for mappings management."},{"name":"Conversions","description":"Endpoints for conversions management."},{"name":"Publications","description":"Endpoints for publications management."}]}