Skip to content

Commit 13e155b

Browse files
authored
Merge pull request #46 from arnoweiss/main
chore: edits on model, common, catalog sections' links
2 parents adc84cf + e1f8fc6 commit 13e155b

File tree

12 files changed

+384
-312
lines changed

12 files changed

+384
-312
lines changed

.github/workflows/autopublish.yaml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,18 @@ jobs:
1616
- uses: actions/setup-node@v4
1717
with:
1818
node-version: 22.x
19-
- name: Inject md to html
19+
- name: Copy files for correct web access
2020
run: |
21-
chmod +x ./scripts/replace.sh
22-
./scripts/replace.sh
21+
mkdir ./message/diagram -p
22+
mkdir ./message/schema
23+
mkdir ./message/shape
24+
mkdir ./figures
25+
cp ./**/message/diagram/*.png ./message/diagram/
26+
cp ./**/message/schema/*.json ./message/schema/
27+
cp ./**/message/shape/*.ttl ./message/shape/
28+
cp ./model/*.png .
29+
cp ./**/figures/*.png ./figures/
30+
cp ./releases/* . -r
2331
- name: Run Respec
2432
run:
2533
sudo npx puppeteer browsers install chrome

.gitignore

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
*.zip
88
*.tar.gz
99
*.rar
10+
# only top level images
11+
*.png
1012

1113
.idea
1214
*.iml
@@ -19,7 +21,7 @@
1921
.DS_Store
2022
.env
2123

22-
index.html
2324
/message
2425
/2024-1
25-
/v0.8
26+
/v0.8
27+
/figures

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ A [Connector](./model/terminology.md#connector--data-service-) will implement ad
6464

6565
The same applies for the actual data that is transferred between the systems. While this document does not define the transport protocol, the structure, syntax or semantics of the data, a specification for those aspects is required and subject to the agreements of the [Participants](./model/terminology.md#participant) or the [Dataspace](./model/terminology.md#dataspace).
6666

67-
![Overview on protocol and context](./resources/figures/ProtocolOverview.png)
67+
![Overview on protocol and context](./resources/figures/ProtocolOverview.png "Overview on protocol and context")
6868

6969
## Best Practices
7070

@@ -77,3 +77,4 @@ Users of this specification are invited to provide feedback such as, but not lim
7777
* What did you like in this document?
7878

7979
Please provide your feedback as Issue in our [GitHub repository](https://github.com/International-Data-Spaces-Association/ids-specification/issues).
80+

WEBSITE.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
## Static Rendering and Web Deployment
2+
3+
This repository contains the set of artifacts that make up the normative
4+
and non-normative sections of the Dataspace Protocol. All artifacts are
5+
bundled by the [respec framework](https://www.respec.org) which takes care
6+
of rendering a static website.
7+
8+
### Conventions
9+
10+
The following extensions to the basic markdown syntax are used in this
11+
specification project. Keep them handy and navigating the document will
12+
be easy.
13+
14+
- Referencing an external specification document. [Respec Docs](https://respec.org/docs/#references-0)
15+
- with identifier inline `[[foreign-spec-id]]`
16+
- with the foreign spec's display name inline `[[[foreign-spec-id]]]`
17+
- referencing a particular section in a remote document works via ordinary markdown links. The reference has to be added to the `References` section manually (if it's not already there).
18+
- Defining terminology: A term is defined by wrapping it in `<dfn>Defineable</dfn>`. [Respec Docs](https://respec.org/docs/#definitions-and-linking)
19+
- Custom section IDs: If various sections have the same heading, they must be given a unique id manually via `{#my-custom-section-id}` that can then be used for referencing it. [Respec Docs](https://respec.org/docs/#example-specifying-a-custom-id-for-a-heading)
20+
- Referencing within the document. Please note that despite separation in multiple markdown files, there is only one html document. References to sections must be flat `(#section)` instead of path-based `../catalog/catalog.protocol.md#response-types`.
21+
- with the sections number and display name inline `[[[#my-section-id]]]`
22+
- If that's not desired, ordinary links work as well. `[my custom link](#my-section-id)`
23+
- referencing terminology: `[=Defineable=]`. This will work out of the box with Plurals such that `[=Definables=]` refers to the definition of `<dfn>Defineable</dfn>`.
24+
- Code blocks work natively like in markdown.
25+
26+
### Rendering in your IDE
27+
28+
1. Locally execute the commands from the [autopublish](.github/workflows/autopublish.yaml) workflow's "Copy files for correct web access" step. All resulting folders and files are duplicates, gitignored and don't break anything.
29+
2. Open the `index.html` file.
30+
3. You IDE should have a feature to display html documents (either in your browser of choice or inline). Use that and you should always see the updated webpage when saving.

catalog/catalog.binding.https.md

Lines changed: 58 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,36 @@
11
# Catalog HTTPS Binding
22

3-
This specification defines a RESTful API over HTTPS for the [Catalog Protocol](./catalog.protocol.md).
3+
This specification defines a RESTful API over HTTPS for the [Catalog Protocol](#catalog-protocol).
44

5-
* [1 Introduction](#1-introduction)
6-
* [1.1 Prerequisites](#11-prerequisites)
7-
* [1.2 Catalog Error](#12-catalog-error)
8-
* [2 Path Bindings](#2-path-bindings)
9-
* [2.1 The `catalog/request` Endpoint (Provider-side)](#21-the-catalogrequest-endpoint--provider-side-)
10-
* [2.2 The `catalog/datasets/:id` Endpoint (Provider-side)](#22-the-catalogdatasetsid-endpoint--provider-side-)
11-
* [3 Technical Considerations](#3-technical-considerations)
12-
* [3.1 Pagination](#31-pagination)
13-
* [3.2 Compression](#32-compression)
14-
* [4 The Well-Known Proof Metadata Endpoint](#4-the-well-known-proof-metadata-endpoint)
5+
## Introduction
156

16-
## 1 Introduction
7+
### Prerequisites
178

18-
### 1.1 Prerequisites
19-
20-
1. The `<base>` notation indicates the base URL for a [Catalog Service](../model/terminology.md#catalog-service) endpoint. For example, if the base [Catalog](../model/terminology.md#catalog) URL is `api.example.com`, the URL `https://<base>/catalog/request` will map to `https//api.example.com/catalog/request`.
9+
1. The `<base>` notation indicates the base URL for a [=Catalog Service=] endpoint. For example, if the base [=Catalog=]
10+
URL is `api.example.com`, the URL `https://<base>/catalog/request` will map
11+
to `https//api.example.com/catalog/request`.
2112

2213
2. All request and response messages must use the `application/json` media type.
2314

24-
### 1.2 Catalog Error
15+
### Catalog Error
2516

26-
In the event of a request error, the [Catalog Service](../model/terminology.md#catalog-service) must return an appropriate HTTP code and a [Catalog Error](./catalog.protocol.md#33-error---catalog-error) in the response body.
17+
In the event of a request error, the [=Catalog Service=] must return an appropriate HTTP code and
18+
a [Catalog Error](#error-catalog-error) in the response body.
2719

28-
## 2 Path Bindings
20+
## Path Bindings
2921

30-
| Endpoint | Method | Description |
31-
|:------------------------------------------|:-------|:---------------------------|
32-
| https://provider.com/catalog/request | `POST` | Section [2.1.1](#211-post) |
33-
| https://provider.com/catalog/datasets/:id | `GET` | Section [2.2.1](#221-get) |
22+
| Endpoint | Method | Description |
23+
|:------------------------------------------|:-------|:----------------------------|
24+
| https://provider.com/catalog/request | `POST` | [[[#catalog-request-post]]] |
25+
| https://provider.com/catalog/datasets/:id | `GET` | [[[#catalog-datasets-get]]] |
3426

35-
### 2.1 The `catalog/request` Endpoint (Provider-side)
27+
### The `catalog/request` Endpoint (Provider-side)
3628

37-
#### 2.1.1 POST
29+
#### POST {#catalog-request-post}
3830

3931
##### Request
4032

41-
The [Catalog Request Message](./catalog.protocol.md#21-catalog-request-message) corresponds to `POST https://<base>/catalog/request`:
33+
The [Catalog Request Message](#catalog-request-message) corresponds to `POST https://<base>/catalog/request`:
4234

4335
```http request
4436
POST https://provider.com/catalog/request
@@ -52,21 +44,29 @@ Authorization: ...
5244
}
5345
```
5446

55-
- The `Authorization` header is optional if the [Catalog Service](../model/terminology.md#catalog-service) does not require authorization. If present, the contents of the `Authorization` header are detailed in the [Authorization section](../common/common.binding.https.md#2-authorization).
47+
- The `Authorization` header is optional if the [=Catalog Service=] does not require authorization. If present, the
48+
contents of the `Authorization` header are detailed in
49+
the [Authorization section](../common/common.binding.https.md#2-authorization).
5650

57-
- The `filter` property is optional. If present, the `filter` property can contain an implementation-specific filter expression or query to be executed as part of the [Catalog](../model/terminology.md#catalog) request. If a filter expression is not supported by an implementation, it must return a HTTP 400 (Bad Request) response.
51+
- The `filter` property is optional. If present, the `filter` property can contain an implementation-specific filter
52+
expression or query to be executed as part of the [=Catalog=] request. If a filter expression is not supported by an
53+
implementation, it must return a HTTP 400 (Bad Request) response.
5854

5955
##### Response
6056

61-
If the request is successful, the [Catalog Service](../model/terminology.md#catalog-service) must return an HTTP 200 (OK) with a response body containing a [Catalog](./catalog.protocol.md#31-ack---catalog) (which is a profiled [DCAT Catalog](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog) type described by the [Catalog Protocol](catalog.protocol.md)).
57+
If the request is successful, the [=Catalog Service=] must return an HTTP 200 (OK) with a response body containing
58+
a [Catalog](#ack-catalog) (which is a
59+
profiled [DCAT Catalog](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog) type described by
60+
the [Catalog Protocol](#catalog-protocol)).
6261

63-
### 2.2 The `catalog/datasets/:id` Endpoint (Provider-side)
62+
### The `catalog/datasets/:id` Endpoint (Provider-side)
6463

65-
#### 2.2.1 GET
64+
#### GET {#catalog-datasets-get}
6665

6766
##### Request
6867

69-
The [Dataset Request Message](./catalog.protocol.md#22-dataset-request-message) corresponds to `GET https://<base>/catalog/datasets/:id}`:
68+
The [Dataset Request Message](#dataset-request-message) corresponds
69+
to `GET https://<base>/catalog/datasets/:id}`:
7070

7171
```http request
7272
GET https://provider.com/catalog/datasets/{id}
@@ -80,18 +80,26 @@ Authorization: ...
8080
}
8181
```
8282

83-
- The `Authorization` header is optional if the [Catalog Service](../model/terminology.md#catalog-service) does not require authorization. If present, the contents of the `Authorization` header are detailed in the [Authorization section](../common/common.binding.https.md#2-authorization).
83+
- The `Authorization` header is optional if the [=Catalog Service=] does not require authorization. If present, the
84+
contents of the `Authorization` header are detailed in
85+
the [[[#authorization]]].
8486

8587
##### Response
8688

87-
If the request is successful, the [Catalog Service](../model/terminology.md#catalog-service) must return an HTTP 200 (OK) with a response body containing a [Dataset](./catalog.protocol.md#32-ack---dataset) (which is a [DCAT Dataset](https://www.w3.org/TR/vocab-dcat-3/#Class:Dataset) type described by the [Catalog Protocol](catalog.protocol.md)).
89+
If the request is successful, the [=Catalog Service=] must return an HTTP 200 (OK) with a response body containing
90+
a [Dataset](#ack-dataset) (which is
91+
a [DCAT Dataset](https://www.w3.org/TR/vocab-dcat-3/#Class:Dataset) type described by
92+
the [Catalog Protocol](#catalog-protocol)).
8893

89-
## 3 Technical Considerations
94+
## Technical Considerations
9095

91-
### 3.1 Pagination
96+
### Pagination
9297

93-
A [Catalog Service](../model/terminology.md#catalog-service) may paginate the results of a [Catalog Request Message](./catalog.protocol.md#21-catalog-request-message). Pagination data must be specified using [Web Linking](https://datatracker.ietf.org/doc/html/rfc5988) and the HTTP `Link` header. The `Link` header will contain URLs for navigating to previous and subsequent results. Only the `next` and `previous` link relation types must be supported.
94-
Note that the content and structure of the link query parameters is not defined by the current specification.
98+
A [=Catalog Service=] may paginate the results of a [Catalog Request Message](#catalog-request-message). Pagination data
99+
must be specified using [Web Linking](https://datatracker.ietf.org/doc/html/rfc5988) and the HTTP `Link` header.
100+
The `Link` header will contain URLs for navigating to previous and subsequent results. Only the `next` and `previous`
101+
link relation types must be supported.
102+
Note that the content and structure of the link query parameters is not defined by the current specification.
95103

96104
The following request sequence demonstrates pagination:
97105

@@ -128,19 +136,26 @@ Link: <https://provider.com/catalog?continuationToken=bn9556075bn44de8ab4bfc9014
128136
}
129137
```
130138

131-
### 3.2 Compression
132-
133-
[Catalog Services](../model/terminology.md#catalog-service) MAY compress responses to a [Catalog Request](./catalog.protocol.md#21-catalog-request-message) by setting the `Content-Encoding` header to `gzip` as described in the [HTTP 1.1 Specification](https://www.rfc-editor.org/rfc/rfc9110.html#name-gzip-coding).
139+
### Compression
134140

141+
[=Catalog Services=] MAY compress responses to
142+
a [Catalog Request](#catalog-request-message) by setting the `Content-Encoding` header to `gzip` as described in
143+
the [HTTP 1.1 Specification](https://www.rfc-editor.org/rfc/rfc9110.html#name-gzip-coding).
135144

136-
## 4 The Well-Known Proof Metadata Endpoint
145+
## The Well-Known Proof Metadata Endpoint
137146

138-
When an implementation supports protected [Datasets](../model/terminology.md#dataset), it may offer a proof metadata endpoint clients can use to determine proof requirements. If the implementation offers a proof data endpoint, it must use the `dspace-trust` [Well-Known Uniform Resource Identifier](https://www.rfc-editor.org/rfc/rfc8615.html) at the top of the path hierarchy:
147+
When an implementation supports protected [=Datasets=], it may offer a proof metadata
148+
endpoint clients can use to determine proof requirements. If the implementation offers a proof data endpoint, it must
149+
use the `dspace-trust` Well-Known Uniform Resource Identifier [[rfc8615]] at the top
150+
of the path hierarchy:
139151

140152
```
141153
/.well-known/dspace-trust
142154
```
143155

144156
The contents of the response is a JSON object defined by individual trust specifications and not defined here.
145157

146-
Note that if multiple [Connectors](../model/terminology.md#connector--data-service-) are hosted under the same base URL, an arbitrary path segment appended to the base well-known URL can be used, for example, `https://example.com/.well-known/dspace-trust/connector1.` In this case, the document retrievable at the `dspace-trust` path segment must contain all the child paths.
158+
Note that if multiple [=Connectors=] are hosted under the same base URL,
159+
an arbitrary path segment appended to the base well-known URL can be used, for
160+
example, `https://example.com/.well-known/dspace-trust/connector1.` In this case, the document retrievable at
161+
the `dspace-trust` path segment must contain all the child paths.

0 commit comments

Comments
 (0)