diff --git a/openapisdtoolingtier1v12_20260424_125725.yaml b/openapisdtoolingtier1v12_20260424_125725.yaml new file mode 100644 index 0000000..a4d4e02 --- /dev/null +++ b/openapisdtoolingtier1v12_20260424_125725.yaml @@ -0,0 +1,1801 @@ +info: + title: SD Tooling API + description: |- + The APIs described in the following document enable the management + of the lifecycle for creating a Resource Description on the provider side, including + its publication on the federated catalogue. The available APIs allow to define + access and usage policies, specify the Resource Address on the provider side, + and manage the validation and publication process on the federated catalogue. + + ## Business Context + + The API facilitates the creation and management of Resource Descriptions in a federated data space. It enables providers to publish metadata about their data assets on a federated catalogue, define access and usage policies, and manage the validation and publication workflow. This supports discoverability and interoperability across the data ecosystem. + + + ### Key Actors + + - **Provider**: Creates and publishes Resource Descriptions, defines policies, and manages validation. + + - **Governance Authority**: Hosts the Federated Catalogue + + ### Typical Flow + + 1. Create a Resource Description. + + 2. Define access and usage policies. + + 3. Specify the Resource Address. + + 4. Submit the Resource Description for validation + + 5. Publish the Resource Description on the federated catalogue + contact: + name: Simpl Programme + url: https://simpl-programme.ec.europa.eu/ + email: cnect-simpl@ec.europa.eu + license: + name: European Union Public License (EUPL) 1.2 + url: https://interoperable-europe.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf + version: "1.0" +servers: +- url: https://creation-wizard-api.dev.simpl-europe.eu/v1 +security: +- bearerAuth: [] +openapi: 3.0.1 +tags: +- name: Schema + description: |+ + **DEPRECATED: All controller endpoints are deprecated since v1.22.0 and will be removed in a future version.** + + **Please use the V2 version of this controller** + +components: + securitySchemes: + bearerAuth: + type: http + description: IAA cloud gateway JWT token + scheme: bearer + bearerFormat: JWT + schemas: + OdrlAssignee: + type: object + properties: + uid: + type: string + role: + type: string + UsagePolicyPermission: + required: + - assignee + - constraints + type: object + properties: + assignee: + minLength: 1 + type: string + description: permission assignee + example: Consumer + action: + type: string + description: type of permission action (default USE) + enum: + - USE + - DO_NOT_USE_THIS_TYPE + constraints: + minItems: 1 + type: array + description: permission contraints + items: + oneOf: + - $ref: '#/components/schemas/DeletionConstraint' + - $ref: '#/components/schemas/RestrictedDurationConstraint' + - $ref: '#/components/schemas/RestrictedNumberConstraint' + description: usage permissions + UsagePolicyRequest: + required: + - permissions + type: object + properties: + permissions: + minItems: 1 + type: array + description: usage permissions + items: + $ref: '#/components/schemas/UsagePolicyPermission' + InputObject: + type: object + properties: + in: + type: string + enum: + - body + - path + - query + - header + name: + type: string + value: + type: object + IdentityAttribute: + type: object + properties: + identifier: + type: string + code: + type: string + PolicyAction: + type: object + properties: + label: + type: string + value: + type: string + DeletionConstraint: + required: + - type + type: object + allOf: + - $ref: '#/components/schemas/UsagePolicyConstraint' + - type: object + properties: + type: + type: string + description: type of the constraint + example: Deletion + afterUse: + type: boolean + description: after use flag (default is false) + RestrictedNumberConstraint: + required: + - maxCount + - type + type: object + allOf: + - $ref: '#/components/schemas/UsagePolicyConstraint' + - type: object + properties: + type: + type: string + description: type of the constraint + example: RestrictedNumber + maxCount: + minimum: 1 + exclusiveMinimum: false + type: integer + description: restricted number max usage count + format: int32 + example: 10 + OdrlAssigner: + type: object + properties: + uid: + type: string + role: + type: string + ResourceAddress: + required: + - value + type: object + properties: + templateId: + type: string + value: + type: string + InputValidationIssue: + type: object + properties: + type: + type: string + format: uri + href: + type: string + format: uri + title: + type: string + detail: + type: string + in: + type: string + enum: + - body + - path + - query + - header + name: + type: string + value: + type: object + inputs: + type: array + items: + $ref: '#/components/schemas/InputObject' + additionalProperties: + type: object + additionalProperties: + type: object + Template: + type: object + properties: + id: + type: string + label: + type: string + AccessPolicyRequest: + required: + - permissions + type: object + properties: + permissions: + minItems: 1 + type: array + description: access permissions + items: + $ref: '#/components/schemas/AccessPolicyPermission' + InternalServerErrorProblem: + type: object + properties: + type: + type: string + format: uri + href: + type: string + format: uri + title: + type: string + status: + type: integer + format: int32 + detail: + type: string + instance: + type: string + format: uri + additionalProperties: + type: object + additionalProperties: + type: object + NotFoundProblem: + type: object + properties: + type: + type: string + format: uri + href: + type: string + format: uri + title: + type: string + status: + type: integer + format: int32 + detail: + type: string + instance: + type: string + format: uri + additionalProperties: + type: object + additionalProperties: + type: object + UnauthorizedProblem: + type: object + properties: + type: + type: string + format: uri + href: + type: string + format: uri + title: + type: string + status: + type: integer + format: int32 + detail: + type: string + instance: + type: string + format: uri + additionalProperties: + type: object + additionalProperties: + type: object + BadRequestProblem: + type: object + properties: + type: + type: string + format: uri + href: + type: string + format: uri + title: + type: string + status: + type: integer + format: int32 + detail: + type: string + instance: + type: string + format: uri + issues: + type: array + items: + $ref: '#/components/schemas/InputValidationIssue' + additionalProperties: + type: object + additionalProperties: + type: object + UsagePolicyConstraint: + type: object + properties: + type: + type: string + description: permission contraints + discriminator: + propertyName: type + OdrlPermission: + type: object + properties: + target: + type: string + assignee: + $ref: '#/components/schemas/OdrlAssignee' + action: + type: array + items: + type: string + constraint: + type: array + items: + $ref: '#/components/schemas/OdrlConstraint' + OdrlConstraint: + type: object + properties: + leftOperand: + type: string + operator: + type: string + rightOperand: + type: string + OdrlPolicy: + type: object + properties: + profile: + type: string + target: + type: string + assigner: + $ref: '#/components/schemas/OdrlAssigner' + uid: + type: string + '@context': + type: string + '@type': + type: string + permission: + type: array + items: + $ref: '#/components/schemas/OdrlPermission' + RestrictedDurationConstraint: + required: + - type + type: object + allOf: + - $ref: '#/components/schemas/UsagePolicyConstraint' + - type: object + properties: + type: + type: string + description: type of the constraint + example: RestrictedDuration + fromDatetime: + type: string + description: duration start datetime in ISO8601 format with optional timezone (default is GMT) + example: 2024-08-01T00:00:00Z + toDatetime: + type: string + description: duration end datetime in ISO8601 format with optional timezone (default is GMT) + example: 2024-08-31T23:59:59Z + AccessPolicyPermission: + required: + - action + - assignee + type: object + properties: + assignee: + minLength: 1 + type: string + description: permission assignee + action: + type: string + description: type of permission action + enum: + - SEARCH + - CONSUME + - RESTRICTED_CONSUME + fromDatetime: + type: string + description: permission start datetime in ISO8601 format with optional timezone (default is GMT) + example: 2024-08-01T00:00:00Z + toDatetime: + type: string + description: permission end datetime in ISO8601 format with optional timezone (default is GMT) + example: 2024-08-31T23:59:59Z + description: access permissions +paths: + /schemas/{schemaId}/content: + get: + tags: + - Schema + summary: Returns schema content based on schemaId + description: Returns schema content for the specified schema identifier. + operationId: getSchemaContent + parameters: + - name: schemaId + in: path + description: Identifier of the TTL schema + required: true + schema: + type: string + description: Identifier of the TTL schema + example: data-offeringShape.ttl + example: data-offeringShape.ttl + responses: + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/BadRequestProblem' + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Invalid payload + status: 400 + detail: missing required arguments + '*/*': + schema: + $ref: '#/components/schemas/BadRequestProblem' + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/InternalServerErrorProblem' + examples: + Internal Server Error Example: + description: Internal Server Error Example + value: + type: urn:problem-type:simpl:internalServerError + title: Internal Server Error + status: 500 + detail: Unexpected internal error + "200": + description: TTL schema file content + content: + text/turtle: + schema: + type: string + examples: + ttlExample: + summary: Example TTL content + description: ttlExample + value: '@prefix ex: .' + deprecated: true + /policies/usage: + post: + tags: + - Policy + summary: Generate a usage policy in ODRL format + description: This endpoint receives a request with usage permissions and returns an ODRL policy, which specifies how a resource can be used, by whom, and with what constraints + operationId: getUsagePolicyJsonLD + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UsagePolicyRequest' + required: true + responses: + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/BadRequestProblem' + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Invalid payload + status: 400 + detail: missing required arguments + '*/*': + schema: + $ref: '#/components/schemas/BadRequestProblem' + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/InternalServerErrorProblem' + examples: + Internal Server Error Example: + description: Internal Server Error Example + value: + type: urn:problem-type:simpl:internalServerError + title: Internal Server Error + status: 500 + detail: Unexpected internal error + "200": + description: The usage policy json-ld + content: + application/json: + schema: + $ref: '#/components/schemas/OdrlPolicy' + examples: + validTypes: + summary: Valid sharing methods + description: validTypes + value: + '@context': http://www.w3.org/ns/odrl.jsonld + '@type': Set + profile: http://www.w3.org/ns/odrl/2/odrl.jsonld + target: "" + assigner: + uid: provider + role: http://www.w3.org/ns/odrl/2/assigner + uid: f5cb3167-cd29-4d1d-a0f2-4889caf7c875 + permission: + - target: "" + assignee: + uid: consumer + role: http://www.w3.org/ns/odrl/2/assignee + action: + - http://www.w3.org/ns/odrl/2/use + constraint: + - leftOperand: http://www.w3.org/ns/odrl/2/count + operator: http://www.w3.org/ns/odrl/2/lteq + rightOperand: "10" + - leftOperand: http://www.w3.org/ns/odrl/2/dateTime + operator: http://www.w3.org/ns/odrl/2/gteq + rightOperand: 2024-08-01T00:00:00Z + - leftOperand: http://www.w3.org/ns/odrl/2/dateTime + operator: http://www.w3.org/ns/odrl/2/lteq + rightOperand: 2024-08-31T23:59:59Z + /selfDescriptions/publications: + post: + tags: + - Self Description + summary: Publish an enriched, validated and signed self-description + description: Publishes a finalized (enriched, validated and signed) SD json-LD into the federated catalogue + operationId: publish + requestBody: + description: Request body containing SD JSON-LD object + content: + application/json: + schema: + type: object + example: + '@context': http://www.w3.org/ns/odrl.jsonld + '@type': Set + assigner: + role: http://www.w3.org/ns/odrl/2/assigner + uid: provider + permission: + - action: + - http://simpl.eu/odrl/actions/search + assignee: + role: http://www.w3.org/ns/odrl/2/assignee + uid: CONSUMER + constraint: + - leftOperand: http://www.w3.org/ns/odrl/2/dateTime + operator: http://www.w3.org/ns/odrl/2/gteq + rightOperand: 2024-08-01T00:00:00Z + - leftOperand: http://www.w3.org/ns/odrl/2/dateTime + operator: http://www.w3.org/ns/odrl/2/lteq + rightOperand: 2024-08-31T23:59:59Z + target: "" + profile: http://www.w3.org/ns/odrl/2/odrl.jsonld + target: "" + uid: 68777919-f260-4305-9c41-d4266ac0a639 + required: true + responses: + "400": + description: Bad Request + content: + application/problem+json: + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Parameter validation error + status: 400 + detail: One or more parameters are invalid + instance: /selfDescriptions/publications + issues: + - type: urn:problem-type:simpl:invalidParameter + title: Invalid parameter + detail: The json-file is not valid + in: body + name: json-file + value: invalidValue + "500": + description: Internal Server Error + content: + application/problem+json: + examples: + Internal Server Error Example: + description: Internal Server Error Example + value: + type: urn:problem-type:simpl:internalServerError + title: Internal Server Error + status: 500 + detail: Unexpected internal error + instance: /selfDescriptions/publications + "200": + description: Successfully published + content: + application/json: + schema: + type: object + examples: + Registration json: + description: Registration json + value: + id: did:web:registry.gaia-x.eu:DataOffering:3mwO1pOqDQ_fID9jc9Az1TS5JKIS_eng_0006 + issuer: did:web:did.dev.simpl-europa.eu + sdHash: 937295562072eb29046b8eb739eaa796144c9e9fa909b635dc5d0ce7b5ad5e27 + status: active + statusDatetime: 2025-03-13T09:41:11.103238436Z + uploadDatetime: 2025-03-13T09:41:11.103238376Z + "406": + description: Not Acceptable + content: + application/problem+json: + examples: + Not Acceptable Error Example: + description: Not Acceptable Error Example + value: + type: urn:problem-type:simpl:notAcceptable + title: Not Acceptable + status: 406 + detail: The requested media type could not be provided + instance: /selfDescriptions/publish + "415": + description: Unsupported Media Type + content: + application/problem+json: + examples: + Unsupported Media Type Error Example: + description: Unsupported Media Type Error Example + value: + type: urn:problem-type:simpl:unsupportedMediaType + title: Unsupported Media Type + status: 415 + detail: The media type in the request payload is unsupported + instance: /selfDescriptions/publish + /selfDescriptions/enriched: + post: + tags: + - Self Description + summary: Enriches and validates a self-description using the provided metadata and additional properties + description: | + **DEPRECATED: This endpoint is deprecated since v1.22.0 and will be removed in a future version.** + + **Please use the V2 version of this endpoint** + + --- + + Adds hashing, registers asset and policies into the provider EDC, creates a contract definition on EDC connector and validates the resulting SD json enriched with all info. Allows passing additional properties via a JSON string. + operationId: enrichAndValidate + parameters: + - name: schemaId + in: query + description: schemaId + required: true + schema: + type: string + example: data-offeringShape.ttl + - name: templateId + in: query + description: resource address template id + required: true + schema: + type: string + example: 1 + requestBody: + description: Request body containing SD JSON-LD + content: + application/json: + schema: + type: object + example: + '@context': http://www.w3.org/ns/odrl.jsonld + '@type': Set + assigner: + role: http://www.w3.org/ns/odrl/2/assigner + uid: provider + permission: + - action: + - http://simpl.eu/odrl/actions/search + assignee: + role: http://www.w3.org/ns/odrl/2/assignee + uid: CONSUMER + constraint: + - leftOperand: http://www.w3.org/ns/odrl/2/dateTime + operator: http://www.w3.org/ns/odrl/2/gteq + rightOperand: 2024-08-01T00:00:00Z + - leftOperand: http://www.w3.org/ns/odrl/2/dateTime + operator: http://www.w3.org/ns/odrl/2/lteq + rightOperand: 2024-08-31T23:59:59Z + target: "" + profile: http://www.w3.org/ns/odrl/2/odrl.jsonld + target: "" + uid: 68777919-f260-4305-9c41-d4266ac0a639 + required: true + responses: + "400": + description: Bad Request + content: + application/problem+json: + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Parameter validation error + status: 400 + detail: One or more parameters are invalid + issues: + - type: urn:problem-type:simpl:invalidParameter + title: Invalid parameter + detail: The schemaId parameter must meet specific criteria + in: query + name: schemaId + value: invalidValue + "500": + description: Internal Server Error + content: + application/problem+json: + examples: + Internal Server Error Example: + description: Internal Server Error Example + value: + type: urn:problem-type:simpl:internalServerError + title: Internal Server Error + status: 500 + detail: Unexpected internal error + instance: /selfDescriptions/enriched + "200": + description: Successfully enriched and validated SD JSON-LD + content: + application/json: + schema: + type: object + examples: + SD json file enriched and validated: + description: SD json file enriched and validated + value: + '@context': http://www.w3.org/ns/odrl.jsonld + '@type': Set + assigner: + role: http://www.w3.org/ns/odrl/2/assigner + uid: provider + permission: + - action: + - http://simpl.eu/odrl/actions/search + assignee: + role: http://www.w3.org/ns/odrl/2/assignee + uid: CONSUMER + constraint: + - leftOperand: http://www.w3.org/ns/odrl/2/dateTime + operator: http://www.w3.org/ns/odrl/2/gteq + rightOperand: 2024-08-01T00:00:00Z + - leftOperand: http://www.w3.org/ns/odrl/2/dateTime + operator: http://www.w3.org/ns/odrl/2/lteq + rightOperand: 2024-08-31T23:59:59Z + target: "" + profile: http://www.w3.org/ns/odrl/2/odrl.jsonld + target: "" + uid: 68777919-f260-4305-9c41-d4266ac0a639 + "401": + description: Unauthorized + content: + application/problem+json: + examples: + Unauthorized Error Example: + description: Unauthorized Error Example + value: + type: urn:problem-type:simpl:unauthorized + title: Unauthorized + status: 401 + detail: Missing or invalid Authorization header + instance: /selfDescriptions/enriched + "406": + description: Not Acceptable + content: + application/problem+json: + examples: + Not Acceptable Error Example: + description: Not Acceptable Error Example + value: + type: urn:problem-type:simpl:notAcceptable + title: Not Acceptable + status: 406 + detail: The requested media type could not be provided + instance: /selfDescriptions/enriched + "415": + description: Unsupported Media Type + content: + application/problem+json: + examples: + Unsupported Media Type Error Example: + description: Unsupported Media Type Error Example + value: + type: urn:problem-type:simpl:unsupportedMediaType + title: Unsupported Media Type + status: 415 + detail: The media type in the request payload is unsupported + instance: /selfDescriptions/enriched + deprecated: true + /resourceAddresses/templates/{templateId}/schema: + get: + tags: + - Resource Address + summary: Returns a source address template schema based on templateId + description: Returns a template (JSON schema) describing the fields and constraints to create the sourceAddress. + operationId: getSourceAddressSchema + parameters: + - name: templateId + in: path + description: The template id + required: true + schema: + type: string + example: TPL-1 + responses: + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/BadRequestProblem' + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Parameter validation error + status: 400 + detail: One or more parameters are invalid + instance: /resourceAddresses/templates/{templateId}/schema + issues: + - type: urn:problem-type:simpl:invalidParameter + title: Invalid parameter + detail: The templateId parameter must meet specific criteria + in: path + name: templateId + value: invalidValue + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/InternalServerErrorProblem' + examples: + InternalServerError: + summary: Unexpected internal error + description: InternalServerError + value: + type: internal-error + title: Unexpected internal error + status: 500 + detail: 'GENERAL_ERROR: Please try again later' + instance: /resourceAddresses/templates/{templateId}/schema + "200": + description: Template (JSON schema) for the sourceAddress + content: + application/json: + schema: + type: object + examples: + IonosS3: + summary: IonosS3 template example + description: IonosS3 + value: + type: object + properties: + bucketName: + type: string + region: + type: string + required: + - bucketName + "404": + description: Not Found + content: + application/problem+json: + schema: + $ref: '#/components/schemas/NotFoundProblem' + examples: + NotFound: + summary: Resource not found + description: NotFound + value: + type: resource-not-found + title: RESOURCE_ADDRESS_NOT_FOUND + status: 404 + detail: UI schema not found + instance: /resourceAddresses/templates/{templateId}/schema + /resourceAddresses/assets/{assetId}: + get: + tags: + - Resource Address + summary: Retrieves the resource address associated to the given assetId + description: Retrieves the resource address associated to the given assetId + operationId: getResourceAddress + parameters: + - name: assetId + in: path + description: Identifier of asset within connector + required: true + schema: + type: string + example: 123 + responses: + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/BadRequestProblem' + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Invalid payload + status: 400 + detail: missing required arguments + '*/*': + schema: + $ref: '#/components/schemas/BadRequestProblem' + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/InternalServerErrorProblem' + examples: + Internal Server Error Example: + description: Internal Server Error Example + value: + type: urn:problem-type:simpl:internalServerError + title: Internal Server Error + status: 500 + detail: Unexpected internal error + instance: /resourceAddresses/assets/{assetId} + "200": + description: Successfully retrieved the resource address associated to the given assetId + content: + application/json: + schema: + $ref: '#/components/schemas/ResourceAddress' + examples: + Resource Address: + description: Resource description address to the given assetId + value: + templateId: "5" + value: '{"type":"MinioS3","endpoint":"https://minio01.integrated.simpl-europe.eu","bucketName":"provider-bucket","objectName":"example-s3.txt"}' + "401": + description: Unauthorized + content: + application/problem+json: + schema: + $ref: '#/components/schemas/UnauthorizedProblem' + examples: + Unauthorized: + summary: Missing or invalid authorization + description: Unauthorized + value: + type: unauthorized + title: Unauthorized + status: 401 + detail: Missing or invalid Authorization header + instance: /resourceAddresses/assets/{assetId} + "404": + description: Not Found + content: + application/problem+json: + schema: + $ref: '#/components/schemas/NotFoundProblem' + examples: + Not found Error Example: + summary: AssetId Not Found + description: Not found Error Example + value: + type: urn:problem-type:simpl:resourceAddressNotFound + title: Resource Address Not Found + status: 404 + detail: No resource address found for assetId + instance: /resourceAddresses/assets/{assetId} + /policies/access: + post: + tags: + - Policy + summary: Generate an access policy in ODRL format + description: This endpoint receives a request containing a list of access permissions and returns an ODRL policy. The policy defines who can access a resource, with what type of action (e.g., SEARCH, CONSUME) and within what time frame + operationId: getAccessPolicyJsonLD + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AccessPolicyRequest' + required: true + responses: + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/BadRequestProblem' + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Invalid payload + status: 400 + detail: missing required arguments + '*/*': + schema: + $ref: '#/components/schemas/BadRequestProblem' + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/InternalServerErrorProblem' + examples: + Internal Server Error Example: + description: Internal Server Error Example + value: + type: urn:problem-type:simpl:internalServerError + title: Internal Server Error + status: 500 + detail: Unexpected internal error + "200": + description: The access policy json-ld + content: + application/json: + schema: + $ref: '#/components/schemas/OdrlPolicy' + examples: + validTypes: + summary: Valid sharing methods + description: validTypes + value: + '@context': http://www.w3.org/ns/odrl.jsonld + '@type': Set + profile: http://www.w3.org/ns/odrl/2/odrl.jsonld + target: "" + assigner: + uid: provider + role: http://www.w3.org/ns/odrl/2/assigner + uid: 68777919-f260-4305-9c41-d4266ac0a639 + permission: + - target: "" + assignee: + uid: CONSUMER + role: http://www.w3.org/ns/odrl/2/assignee + action: + - http://simpl.eu/odrl/actions/search + constraint: + - leftOperand: http://www.w3.org/ns/odrl/2/dateTime + operator: http://www.w3.org/ns/odrl/2/gteq + rightOperand: 2024-08-01T00:00:00Z + - leftOperand: http://www.w3.org/ns/odrl/2/dateTime + operator: http://www.w3.org/ns/odrl/2/lteq + rightOperand: 2024-08-31T23:59:59Z + - target: "" + assignee: + uid: CONSUMER + role: http://www.w3.org/ns/odrl/2/assignee + action: + - http://simpl.eu/odrl/actions/consume + constraint: + - leftOperand: http://www.w3.org/ns/odrl/2/dateTime + operator: http://www.w3.org/ns/odrl/2/gteq + rightOperand: 2024-08-01T00:00:00Z + - target: "" + assignee: + uid: RESEARCHER + role: http://www.w3.org/ns/odrl/2/assignee + action: + - http://simpl.eu/odrl/actions/restrictedConsume + constraint: + - leftOperand: http://www.w3.org/ns/odrl/2/dateTime + operator: http://www.w3.org/ns/odrl/2/gteq + rightOperand: 2024-09-01T00:00:00Z + - leftOperand: http://www.w3.org/ns/odrl/2/dateTime + operator: http://www.w3.org/ns/odrl/2/lteq + rightOperand: 2024-10-30T23:59:59Z + /resourceAddresses/sharingMethods: + get: + tags: + - Resource Address + summary: Returns the list of sharing methods by offer type. + description: Returns the list of sharing methods mapped to the required offer type (DATA, APPLICATION, INFRASTRUCTURE). + operationId: getResourceSharingMethods + parameters: + - name: offeringType + in: query + description: The offering type identifier + required: true + schema: + type: string + enum: + - APPLICATION + - DATA + - INFRASTRUCTURE + responses: + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/BadRequestProblem' + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Parameter validation error + status: 400 + detail: One or more parameters are invalid + instance: /resourceAddresses/sharingMethods + issues: + - type: urn:problem-type:simpl:invalidParameter + title: Invalid parameter + detail: The offeringType parameter must meet specific criteria + in: query + name: offeringType + value: invalidValue + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/InternalServerErrorProblem' + examples: + InternalServerError: + summary: Unexpected internal error + description: InternalServerError + value: + type: internal-error + title: Unexpected internal error + status: 500 + detail: 'GENERAL_ERROR: Please try again later' + instance: /resourceAddresses/sharingMethods + "200": + description: A list of sharing methods + content: + application/json: + schema: + type: object + examples: + validTypes: + summary: Valid sharing methods + description: validTypes + value: + - IONOS_S3 + - HTTPDATA_PUSH + "401": + description: Unauthorized + content: + application/problem+json: + schema: + $ref: '#/components/schemas/UnauthorizedProblem' + examples: + Unauthorized: + summary: Missing or invalid authorization + description: Unauthorized + value: + type: unauthorized + title: Unauthorized + status: 401 + detail: Missing or invalid Authorization header + instance: /resourceAddresses/sharingMethods + "404": + description: Not Found + content: + application/problem+json: + schema: + $ref: '#/components/schemas/NotFoundProblem' + examples: + NotFound: + summary: Resource not found + description: NotFound + value: + type: resource-not-found + title: RESOURCE_ADDRESS_NOT_FOUND + status: 404 + detail: UI schema not found + instance: /resourceAddresses/sharingMethods + /resourceAddresses/sharingMethods/{sharingMethodId}/templates: + get: + tags: + - Resource Address + summary: Returns the list of source address templates by sharing method and offering type. + description: Returns the list of templates mapped to the required sharing method and offering type (DATA, APPLICATION, INFRASTRUCTURE). + operationId: getSourceAddressTemplates + parameters: + - name: offeringType + in: query + description: The offering type identifier + required: true + schema: + type: string + enum: + - APPLICATION + - DATA + - INFRASTRUCTURE + - name: sharingMethodId + in: path + description: The resource sharing method identifier + required: true + schema: + type: string + enum: + - HTTPDATA_PUSH + - IONOS_S3 + responses: + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/BadRequestProblem' + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Parameter validation error + status: 400 + detail: One or more parameters are invalid + instance: /resourceAddresses/sharingMethods/{sharingMethodId}/templates + issues: + - type: urn:problem-type:simpl:invalidParameter + title: Invalid parameter + detail: The sharingMethodId parameter must meet specific criteria + in: path + name: sharingMethodId + value: invalidValue + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/InternalServerErrorProblem' + examples: + InternalServerError: + summary: Unexpected internal error + description: InternalServerError + value: + type: internal-error + title: Unexpected internal error + status: 500 + detail: 'GENERAL_ERROR: Please try again later' + instance: /resourceAddresses/sharingMethods/{sharingMethodId}/templates + "200": + description: A list of templates + content: + application/json: + schema: + $ref: '#/components/schemas/Template' + examples: + templates: + summary: List of templates + description: templates + value: + - id: TPL-1 + label: TPL 1 + - id: TPL-2 + label: TPL 2 + - id: TPL-3 + label: TPL 3 + "401": + description: Unauthorized + content: + application/problem+json: + schema: + $ref: '#/components/schemas/UnauthorizedProblem' + examples: + Unauthorized: + summary: Missing or invalid authorization + description: Unauthorized + value: + type: unauthorized + title: Unauthorized + status: 401 + detail: Missing or invalid Authorization header + instance: /resourceAddresses/sharingMethods/{sharingMethodId}/templates + "404": + description: Not Found + content: + application/problem+json: + schema: + $ref: '#/components/schemas/NotFoundProblem' + examples: + NotFound: + summary: Resource not found + description: NotFound + value: + type: resource-not-found + title: RESOURCE_ADDRESS_NOT_FOUND + status: 404 + detail: Template not found + instance: /resourceAddresses/sharingMethods/{sharingMethodId}/templates + /resourceDescriptions/{resourceDescriptionId}: + get: + tags: + - Resource Description + summary: Return details of given resource description stored in federated catalogue + operationId: getResourceDescription + parameters: + - name: resourceDescriptionId + in: path + description: Resource description identifier (credentialSubject.@id) + required: true + schema: + type: string + example: did:web:registry.gaia-x.eu:DataOffering:123 + responses: + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/BadRequestProblem' + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Invalid payload + status: 400 + detail: missing required arguments + '*/*': + schema: + $ref: '#/components/schemas/BadRequestProblem' + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/InternalServerErrorProblem' + examples: + Internal Server Error Example: + description: Internal Server Error Example + value: + type: urn:problem-type:simpl:internalServerError + title: Internal Server Error + status: 500 + detail: Unexpected internal error + "200": + description: OK + content: + application/json: + schema: + type: string + examples: + returnValidResponse: + description: returnValidResponse + value: + claimsGraphUri: + - did:web:registry.gaia-x.eu:InfrastructureOffering:a94ef06c-a12d-4308-89aa-fffcd8a61126 + offeringType: infrastructure + name: text title for infrastructure resource. + inLanguage: da + description: text description + serviceAccessPoint: http://serviceaccesspoint.com + /resourceDescriptions/{resourceDescriptionId}/revoke: + post: + tags: + - Resource Description + summary: Revoke an already published self-description from the federated catalogue + description: | + Revokes a previously published resource description. + After revocation, the self-description shall no longer be visible or discoverable in the federated catalogue. + operationId: revokeResourceDescription + parameters: + - name: resourceDescriptionId + in: path + description: Resource description identifier (credentialSubject.@id) + required: true + schema: + type: string + example: did:web:registry.gaia-x.eu:DataOffering:123 + responses: + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/BadRequestProblem' + examples: + BadRequestExample: + description: BadRequestExample + value: + type: urn:problem-type:simpl:badRequest + title: BadRequest + status: 400 + instance: /resourceDescriptions/{resourceDescriptionId}/revoke + detail: Invalid resourceDescriptionId format + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/InternalServerErrorProblem' + examples: + InternalServerErrorExample: + description: InternalServerErrorExample + value: + type: urn:problem-type:simpl:internalServerError + title: Internal Server Error + status: 500 + instance: /resourceDescriptions/{resourceDescriptionId}/revoke + detail: Unexpected internal error + "200": + description: Successfully revoked self-description + content: + application/json: + schema: + type: object + examples: + RevokeSuccess: + description: RevokeSuccess + value: + id: did:web:registry.gaia-x.eu:DataOffering:3mwO1... + status: revoked + statusDatetime: 2025-03-20T10:31:00Z + "404": + description: Not Found + content: + application/problem+json: + schema: + $ref: '#/components/schemas/NotFoundProblem' + examples: + NotFoundExample: + description: NotFoundExample + value: + type: resource-not-found + title: RESOURCE_DESCRIPTION_NOT_FOUND + status: 404 + instance: /resourceDescriptions/{resourceDescriptionId}/revoke + detail: Resource description not found or already revoked + /resourceDescriptions: + get: + tags: + - Resource Description + summary: Return all resource descriptions with the participant id as defined in the Client access token. + operationId: getAllResourceDescriptions + parameters: + - name: orderBy + in: query + description: Field to order the results by + required: false + schema: + type: string + description: Field to order the results by + example: publicationDate + default: publicationDate + responses: + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/BadRequestProblem' + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Invalid payload + status: 400 + detail: missing required arguments + '*/*': + schema: + $ref: '#/components/schemas/BadRequestProblem' + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/InternalServerErrorProblem' + examples: + Internal Server Error Example: + description: Internal Server Error Example + value: + type: urn:problem-type:simpl:internalServerError + title: Internal Server Error + status: 500 + detail: Unexpected internal error + "200": + description: OK + content: + application/json: + schema: + type: object + examples: + returnValidResponse: + description: returnValidResponse + value: + totalCount: 1 + items: + - "n": + claimsGraphUri: + - did:web:registry.gaia-x.eu:InfrastructureOffering:a94ef06c-a12d-4308-89aa-fffcd8a61126 + offeringType: infrastructure + name: text title for infrastructure resource. + inLanguage: da + description: text description + serviceAccessPoint: http://serviceaccesspoint.com + /resourceAddresses/templates/{templateId}/uiSchema: + get: + tags: + - Resource Address + summary: Returns a source address UI schema based in templateId. + description: Returns a UI schema that defines the constraints for the form representation of the sourceAddress. + operationId: getSourceAddressUiSchema + parameters: + - name: templateId + in: path + description: The template id + required: true + schema: + type: string + example: TPL-1 + responses: + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/BadRequestProblem' + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Parameter validation error + status: 400 + detail: One or more parameters are invalid + instance: /resourceAddresses/templates/{templateId}/uiSchema + issues: + - type: urn:problem-type:simpl:invalidParameter + title: Invalid parameter + detail: The templateId parameter must meet specific criteria + in: path + name: templateId + value: invalidValue + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/InternalServerErrorProblem' + examples: + InternalServerError: + summary: Unexpected internal error + description: InternalServerError + value: + type: internal-error + title: Unexpected internal error + status: 500 + detail: 'GENERAL_ERROR: Please try again later' + instance: /resourceAddresses/templates/{templateId}/uiSchema + "200": + description: UI schema for the sourceAddress + content: + application/json: + schema: + type: object + examples: + amazonS3UI: + summary: UI schema example + description: amazonS3UI + value: + ui:order: + - bucketName + - region + "404": + description: Not Found + content: + application/problem+json: + schema: + $ref: '#/components/schemas/NotFoundProblem' + examples: + NotFound: + summary: Resource not found + description: NotFound + value: + type: resource-not-found + title: RESOURCE_ADDRESS_NOT_FOUND + status: 404 + detail: UI schema not found + instance: /resourceAddresses/templates/{templateId}/uiSchema + /policies/identityAttributes: + get: + tags: + - Policy + summary: Retrieve identity attributes for consumers + description: Returns the identity attributes assigned to the CONSUMER type by the Governance Authority, useful for defining who can access a resource + operationId: getIdentityAttributes + responses: + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/BadRequestProblem' + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Invalid payload + status: 400 + detail: missing required arguments + '*/*': + schema: + $ref: '#/components/schemas/BadRequestProblem' + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/InternalServerErrorProblem' + examples: + Internal Server Error Example: + description: Internal Server Error Example + value: + type: urn:problem-type:simpl:internalServerError + title: Internal Server Error + status: 500 + detail: Unexpected internal error + "200": + description: A list of identity attributes + content: + application/json: + schema: + $ref: '#/components/schemas/IdentityAttribute' + examples: + validTypes: + summary: Valid sharing methods + description: validTypes + value: + - code: CONSUMER + identifier: Consumer + /policies/actions: + get: + tags: + - Policy + summary: List of available actions for access policies + description: Returns all supported actions that can be used in the definition of an access policy, such as SEARCH, CONSUME, and RESTRICTED_CONSUME + operationId: getAccessPolicyActions + responses: + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/BadRequestProblem' + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Invalid payload + status: 400 + detail: missing required arguments + '*/*': + schema: + $ref: '#/components/schemas/BadRequestProblem' + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/InternalServerErrorProblem' + examples: + Internal Server Error Example: + description: Internal Server Error Example + value: + type: urn:problem-type:simpl:internalServerError + title: Internal Server Error + status: 500 + detail: Unexpected internal error + "200": + description: A list of access policy actions + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyAction' + examples: + validTypes: + summary: Valid sharing methods + description: validTypes + value: + - label: search + value: SEARCH + - label: consume + value: CONSUME + - label: restrictedConsume + value: RESTRICTED_CONSUME + /schemas: + get: + tags: + - Schema + summary: List all available schema ids + description: Returns all schema identifiers in order to allow them to be selected and initiate the self-description creation process. + operationId: getSchemas + responses: + "400": + description: Bad Request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/BadRequestProblem' + examples: + Bad Request Error Example: + description: Bad Request Error Example + value: + type: urn:problem-type:simpl:validationError + title: Invalid payload + status: 400 + detail: missing required arguments + '*/*': + schema: + $ref: '#/components/schemas/BadRequestProblem' + "500": + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/InternalServerErrorProblem' + examples: + Internal Server Error Example: + description: Internal Server Error Example + value: + type: urn:problem-type:simpl:internalServerError + title: Internal Server Error + status: 500 + detail: Unexpected internal error + "200": + description: A map of available TTL schema files + content: + application/json: + schema: + type: object + examples: + Available TTL files: + description: Available TTL files + value: + simpl: + contract: + - contract-templateShape.ttl + service: + - application-offeringShape.ttl + - data-offeringShape.ttl + - infrastructure-offeringShape.ttl + deprecated: true