pontus-x_cli 0.0.6 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/README.md +558 -154
  2. package/bin/dev.js +7 -0
  3. package/bin/run.js +7 -0
  4. package/dist/commands/access.d.ts +9 -0
  5. package/dist/commands/access.js +23 -0
  6. package/dist/commands/access.js.map +1 -0
  7. package/dist/commands/change-price.d.ts +13 -0
  8. package/dist/commands/change-price.js +49 -0
  9. package/dist/commands/change-price.js.map +1 -0
  10. package/dist/commands/check-participant-compliance.d.ts +10 -0
  11. package/dist/commands/check-participant-compliance.js +54 -0
  12. package/dist/commands/check-participant-compliance.js.map +1 -0
  13. package/dist/commands/compute-results.d.ts +12 -0
  14. package/dist/commands/compute-results.js +40 -0
  15. package/dist/commands/compute-results.js.map +1 -0
  16. package/dist/commands/compute-status.d.ts +12 -0
  17. package/dist/commands/compute-status.js +40 -0
  18. package/dist/commands/compute-status.js.map +1 -0
  19. package/dist/commands/compute.d.ts +14 -0
  20. package/dist/commands/compute.js +66 -0
  21. package/dist/commands/compute.js.map +1 -0
  22. package/dist/commands/edit-algo.d.ts +16 -0
  23. package/dist/commands/edit-algo.js +51 -0
  24. package/dist/commands/edit-algo.js.map +1 -0
  25. package/dist/commands/edit-asset-url.d.ts +13 -0
  26. package/dist/commands/edit-asset-url.js +55 -0
  27. package/dist/commands/edit-asset-url.js.map +1 -0
  28. package/dist/commands/edit-trusted-algos.d.ts +13 -0
  29. package/dist/commands/edit-trusted-algos.js +54 -0
  30. package/dist/commands/edit-trusted-algos.js.map +1 -0
  31. package/dist/commands/export-private-key.d.ts +11 -0
  32. package/dist/commands/export-private-key.js +67 -0
  33. package/dist/commands/export-private-key.js.map +1 -0
  34. package/dist/commands/generate-asset-credentials.d.ts +15 -0
  35. package/dist/commands/generate-asset-credentials.js +59 -0
  36. package/dist/commands/generate-asset-credentials.js.map +1 -0
  37. package/dist/commands/generate-did-web.d.ts +10 -0
  38. package/dist/commands/generate-did-web.js +39 -0
  39. package/dist/commands/generate-did-web.js.map +1 -0
  40. package/dist/commands/generate-participant-credentials.d.ts +12 -0
  41. package/dist/commands/generate-participant-credentials.js +51 -0
  42. package/dist/commands/generate-participant-credentials.js.map +1 -0
  43. package/dist/commands/get.d.ts +9 -0
  44. package/dist/commands/get.js +23 -0
  45. package/dist/commands/get.js.map +1 -0
  46. package/dist/commands/login.d.ts +14 -0
  47. package/dist/commands/login.js +51 -0
  48. package/dist/commands/login.js.map +1 -0
  49. package/dist/commands/logout.d.ts +6 -0
  50. package/dist/commands/logout.js +24 -0
  51. package/dist/commands/logout.js.map +1 -0
  52. package/dist/commands/publish.d.ts +15 -0
  53. package/dist/commands/publish.js +107 -0
  54. package/dist/commands/publish.js.map +1 -0
  55. package/dist/commands/revoke.d.ts +12 -0
  56. package/dist/commands/revoke.js +50 -0
  57. package/dist/commands/revoke.js.map +1 -0
  58. package/dist/commands/self-description.d.ts +13 -0
  59. package/dist/commands/self-description.js +53 -0
  60. package/dist/commands/self-description.js.map +1 -0
  61. package/dist/config.d.ts +48 -0
  62. package/dist/config.js +106 -117
  63. package/dist/config.js.map +1 -1
  64. package/dist/index.d.ts +2 -0
  65. package/dist/index.js +3 -347
  66. package/dist/index.js.map +1 -1
  67. package/dist/lib/gaia-x_compliance/generate-credentials/index.d.ts +1 -0
  68. package/dist/lib/gaia-x_compliance/generate-credentials/index.js +176 -0
  69. package/dist/lib/gaia-x_compliance/generate-credentials/index.js.map +1 -0
  70. package/dist/lib/gaia-x_compliance/generate-credentials/templates/dataset.hbs +75 -0
  71. package/dist/{gaia-x_compliance/generate-participant-credentials → lib/gaia-x_compliance/generate-credentials}/templates/participant.hbs +5 -1
  72. package/dist/lib/gaia-x_compliance/generate-credentials/templates/service.hbs +55 -0
  73. package/dist/lib/publishFromFile.d.ts +2 -0
  74. package/dist/lib/publishFromFile.js +143 -0
  75. package/dist/lib/publishFromFile.js.map +1 -0
  76. package/dist/types/schema.d.ts +2 -0
  77. package/dist/types/schema.js +8 -0
  78. package/dist/types/schema.js.map +1 -0
  79. package/dist/types/schema.json +474 -0
  80. package/dist/utils/connection.d.ts +13 -0
  81. package/dist/utils/connection.js +11 -19
  82. package/dist/utils/connection.js.map +1 -1
  83. package/oclif.manifest.json +830 -0
  84. package/package.json +69 -32
  85. package/dist/aquarius-query/index.js +0 -30
  86. package/dist/aquarius-query/index.js.map +0 -1
  87. package/dist/export-key-as-json/index.js +0 -27
  88. package/dist/export-key-as-json/index.js.map +0 -1
  89. package/dist/gaia-x_compliance/generate-did-web/index.js +0 -14
  90. package/dist/gaia-x_compliance/generate-did-web/index.js.map +0 -1
  91. package/dist/gaia-x_compliance/generate-participant-credentials/index.js +0 -161
  92. package/dist/gaia-x_compliance/generate-participant-credentials/index.js.map +0 -1
  93. package/dist/publish/samples/algo/index.js +0 -62
  94. package/dist/publish/samples/algo/index.js.map +0 -1
  95. package/dist/publish/samples/basic-predictor/index.js +0 -82
  96. package/dist/publish/samples/basic-predictor/index.js.map +0 -1
  97. package/dist/publish/samples/data/index.js +0 -55
  98. package/dist/publish/samples/data/index.js.map +0 -1
  99. package/dist/utils/index.js +0 -20
  100. package/dist/utils/index.js.map +0 -1
  101. package/dist/utils/package-version.js +0 -22
  102. package/dist/utils/package-version.js.map +0 -1
  103. package/dist/utils/publish-script-runner.js +0 -60
  104. package/dist/utils/publish-script-runner.js.map +0 -1
  105. /package/dist/{gaia-x_compliance/generate-participant-credentials → lib/gaia-x_compliance/generate-credentials}/templates/lrn-request.hbs +0 -0
  106. /package/dist/{gaia-x_compliance/generate-participant-credentials → lib/gaia-x_compliance/generate-credentials}/templates/tandc.hbs +0 -0
package/README.md CHANGED
@@ -1,291 +1,695 @@
1
- # Pontus-X CLI
1
+ # pontus-x_cli
2
2
 
3
- Command Line Interface for the Pontus-X Data Space Ecosystem.
3
+ A new CLI generated with oclif
4
4
 
5
- ## Installation
5
+ [![oclif](https://img.shields.io/badge/cli-oclif-brightgreen.svg)](https://oclif.io)
6
+ [![Version](https://img.shields.io/npm/v/pontus-x_cli.svg)](https://npmjs.org/package/pontus-x_cli)
7
+ [![Downloads/week](https://img.shields.io/npm/dw/pontus-x_cli.svg)](https://npmjs.org/package/pontus-x_cli)
6
8
 
7
- If you don't have npm installed, install Node.js and NPM following the instructions at https://docs.npmjs.com/downloading-and-installing-node-js-and-npm
9
+ <!-- toc -->
10
+ * [pontus-x_cli](#pontus-x_cli)
11
+ * [Usage](#usage)
12
+ * [Commands](#commands)
13
+ * [Useful information](#useful-information)
14
+ * [Development](#development)
15
+ <!-- tocstop -->
8
16
 
9
- Then, install the Pontus-X CLI globally using npm:
17
+ # Usage
10
18
 
11
- ```shell
12
- npm install -g pontus-x_cli
19
+ <!-- usage -->
20
+ ```sh-session
21
+ $ npm install -g pontus-x_cli
22
+ $ pontus-x_cli COMMAND
23
+ running command...
24
+ $ pontus-x_cli (--version)
25
+ pontus-x_cli/1.0.0 linux-x64 node-v24.10.0
26
+ $ pontus-x_cli --help [COMMAND]
27
+ USAGE
28
+ $ pontus-x_cli COMMAND
29
+ ...
13
30
  ```
31
+ <!-- usagestop -->
14
32
 
15
- Then, create a `.env` file in your working directory with the network to be used, for instance, PONTUSXDEV or PONTUSXTEST:
33
+ # Commands
16
34
 
35
+ <!-- commands -->
36
+ * [`pontus-x_cli access DID`](#pontus-x_cli-access-did)
37
+ * [`pontus-x_cli autocomplete [SHELL]`](#pontus-x_cli-autocomplete-shell)
38
+ * [`pontus-x_cli change-price DID NEWPRICE`](#pontus-x_cli-change-price-did-newprice)
39
+ * [`pontus-x_cli check-participant-compliance`](#pontus-x_cli-check-participant-compliance)
40
+ * [`pontus-x_cli compute ALGO`](#pontus-x_cli-compute-algo)
41
+ * [`pontus-x_cli compute-results JOBID`](#pontus-x_cli-compute-results-jobid)
42
+ * [`pontus-x_cli compute-status JOBID`](#pontus-x_cli-compute-status-jobid)
43
+ * [`pontus-x_cli edit-algo DID IMAGE TAG CHECKSUM ENTRYPOINT`](#pontus-x_cli-edit-algo-did-image-tag-checksum-entrypoint)
44
+ * [`pontus-x_cli edit-asset-url DID URL`](#pontus-x_cli-edit-asset-url-did-url)
45
+ * [`pontus-x_cli edit-trusted-algos DID`](#pontus-x_cli-edit-trusted-algos-did)
46
+ * [`pontus-x_cli export-private-key`](#pontus-x_cli-export-private-key)
47
+ * [`pontus-x_cli generate-asset-credentials DID`](#pontus-x_cli-generate-asset-credentials-did)
48
+ * [`pontus-x_cli generate-did-web`](#pontus-x_cli-generate-did-web)
49
+ * [`pontus-x_cli generate-participant-credentials`](#pontus-x_cli-generate-participant-credentials)
50
+ * [`pontus-x_cli get DID`](#pontus-x_cli-get-did)
51
+ * [`pontus-x_cli help [COMMAND]`](#pontus-x_cli-help-command)
52
+ * [`pontus-x_cli login KEYFILE`](#pontus-x_cli-login-keyfile)
53
+ * [`pontus-x_cli logout`](#pontus-x_cli-logout)
54
+ * [`pontus-x_cli publish PATH`](#pontus-x_cli-publish-path)
55
+ * [`pontus-x_cli revoke DIDS`](#pontus-x_cli-revoke-dids)
56
+ * [`pontus-x_cli self-description DID SDURL`](#pontus-x_cli-self-description-did-sdurl)
57
+
58
+ ## `pontus-x_cli access DID`
59
+
60
+ Access an asset that can be downloaded given its DID
61
+
62
+ ```
63
+ USAGE
64
+ $ pontus-x_cli access DID
65
+
66
+ ARGUMENTS
67
+ DID DID of the asset
68
+
69
+ DESCRIPTION
70
+ Access an asset that can be downloaded given its DID
71
+
72
+ EXAMPLES
73
+ $ pontus-x_cli access did:op:af3e93c4f18903f91b108e7204b8a752e7605f4547ed507212bd6aca63af5686
17
74
  ```
18
- NETWORK=PONTUSXDEV
75
+
76
+ _See code: [src/commands/access.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/access.ts)_
77
+
78
+ ## `pontus-x_cli autocomplete [SHELL]`
79
+
80
+ Display autocomplete installation instructions.
81
+
19
82
  ```
83
+ USAGE
84
+ $ pontus-x_cli autocomplete [SHELL] [-r]
85
+
86
+ ARGUMENTS
87
+ SHELL (zsh|bash|powershell) Shell type
88
+
89
+ FLAGS
90
+ -r, --refresh-cache Refresh cache (ignores displaying instructions)
20
91
 
21
- ## Currently available commands
92
+ DESCRIPTION
93
+ Display autocomplete installation instructions.
22
94
 
23
- The following subsections detail the available command to interact with the Pontus-X Data Space Ecosystem. Additionally, there is a final section [Prepare yourself for Gaia-X compliance](#prepare-yourself-for-gaia-x-compliance) that will guide you through the process of setting up a DID-Web server and generating the necessary participant credentials following the Gaia-X Trust Framework using two additional `pontus-x_cli` commands.
95
+ EXAMPLES
96
+ $ pontus-x_cli autocomplete
24
97
 
25
- ### export-private-key
98
+ $ pontus-x_cli autocomplete bash
26
99
 
27
- Export your private key as a JSON file, to use later with the login command or for Pontus-X portals automation. More details at [export-key-as-json](./src/export-key-as-json/README.md)
100
+ $ pontus-x_cli autocomplete zsh
28
101
 
29
- ### login \<keyFile.json>
102
+ $ pontus-x_cli autocomplete powershell
30
103
 
31
- Login to retrieve your private key from a JSON key store and store it in .env:
32
-
33
- ```shell
34
- pontus-x_cli login 62078f05eb4450272d7e492f3660835826906822.json
104
+ $ pontus-x_cli autocomplete --refresh-cache
35
105
  ```
36
106
 
37
- ### logout
107
+ _See code: [@oclif/plugin-autocomplete](https://github.com/oclif/plugin-autocomplete/blob/v3.2.34/src/commands/autocomplete/index.ts)_
38
108
 
39
- Logout to remove your private key from .env file:
109
+ ## `pontus-x_cli change-price DID NEWPRICE`
110
+
111
+ Change the price keeping the existing currency for an asset with the given DID
40
112
 
41
- ```shell
42
- pontus-x_cli logout
43
113
  ```
114
+ USAGE
115
+ $ pontus-x_cli change-price DID NEWPRICE [-y]
44
116
 
45
- ### get \<did>
117
+ ARGUMENTS
118
+ DID DID of the asset
119
+ NEWPRICE New price for the asset
46
120
 
47
- Get the available metadata to the asset with the given DID:
121
+ FLAGS
122
+ -y, --yes Automatic yes to prompts
48
123
 
49
- ```shell
50
- pontus-x_cli get did:op:34d5f73d77550843201ee1a43ad9d404d3e557ed6a70772e9afde7a27d863b8f
124
+ DESCRIPTION
125
+ Change the price keeping the existing currency for an asset with the given DID
126
+
127
+ EXAMPLES
128
+ $ pontus-x_cli change-price did:op:ffeee8c8f19328985ef6743b08e61ef89d5141027fd47612e32e7900cacd2b7a 10
51
129
  ```
52
130
 
53
- ### access \<did>
131
+ _See code: [src/commands/change-price.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/change-price.ts)_
132
+
133
+ ## `pontus-x_cli check-participant-compliance`
54
134
 
55
- Access a downloadable asset (either a dataset or algorithm) given its DID:
135
+ Use Gaia-X Compliance to check a participant Verifiable Presentation
56
136
 
57
- ```shell
58
- pontus-x_cli access did:op:34d5f73d77550843201ee1a43ad9d404d3e557ed6a70772e9afde7a27d863b8f
59
137
  ```
138
+ USAGE
139
+ $ pontus-x_cli check-participant-compliance -p <value> --vp <value>
60
140
 
61
- ### revoke \<dids...>
141
+ FLAGS
142
+ -p, --participant=<value> (required) Path to the JSON file including the required participant data
143
+ --vp=<value> (required) Path to the participant Verifiable Presentation file
62
144
 
63
- Publisher revocation of one or more owned DIDs
145
+ DESCRIPTION
146
+ Use Gaia-X Compliance to check a participant Verifiable Presentation
64
147
 
65
- ```shell
66
- pontus-x_cli revoke did:op:052eb04066d696a27430116676c859c6303d82257c7a0ebda51f4e80363f6bca did:op:052eb04066d696a27430116676c859c6303d82257c7a0ebda51f4e80363f6bca
148
+ EXAMPLES
149
+ $ pontus-x_cli check-participant-compliance -p ./CEP.data.json --vp ./CEP.vp.json
67
150
  ```
68
151
 
69
- ### self-description \<did> \<sdurl>
152
+ _See code: [src/commands/check-participant-compliance.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/check-participant-compliance.ts)_
70
153
 
71
- Associate Gaia-X Self-Description to the asset with the given DID
154
+ ## `pontus-x_cli compute ALGO`
72
155
 
73
- Edit a DID metadata to link it to a Gaia-X Self Description available from the provided URL (it should be compliant with the configured Gaia-X Digital Clearing House, for instance https://compliance.lab.gaia-x.eu/v1-staging/docs):
156
+ Compute the algorithm on one or more datasets.
74
157
 
75
- ```shell
76
- pontus-x_cli self-description did:op:34d5f73d77550843201ee1a43ad9d404d3e557ed6a70772e9afde7a27d863b8f https://compliance.agrospai.udl.cat/.well-known/service_EDA_UdL_devnet.vp.json
77
158
  ```
159
+ USAGE
160
+ $ pontus-x_cli compute ALGO -d <value>... [-y]
78
161
 
79
- ### change-price \<did> \<newPrice>
162
+ ARGUMENTS
163
+ ALGO Algorithm DID
80
164
 
81
- Change the price keeping the existing currency for an asset with the given DID
165
+ FLAGS
166
+ -d, --datasets=<value>... (required) Dataset DIDs
167
+ -y, --yes Automatic yes to prompts
168
+
169
+ DESCRIPTION
170
+ Compute the algorithm on one or more datasets.
171
+
172
+ EXAMPLES
173
+ $ pontus-x_cli compute did:op:34e2ff9baf030318b13ff3940ab0885bb11fee49a8597123392983f5a0db8a35 -d did:op:d8a36ff74d36e54ce245d27689330fc39debb2fdfeac09d4a08b24b68cf5053d
174
+ ```
175
+
176
+ _See code: [src/commands/compute.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/compute.ts)_
177
+
178
+ ## `pontus-x_cli compute-results JOBID`
179
+
180
+ Get the compute job results.
181
+
182
+ ```
183
+ USAGE
184
+ $ pontus-x_cli compute-results JOBID -p <value>
185
+
186
+ ARGUMENTS
187
+ JOBID Compute job ID
188
+
189
+ FLAGS
190
+ -p, --provider=<value> (required) [default: https://provider.agrospai.udl.cat] The Provider URL
191
+
192
+ DESCRIPTION
193
+ Get the compute job results.
194
+
195
+ EXAMPLES
196
+ $ pontus-x_cli compute-results 215bae450c8f40f59bfc5d1ccada3931 -p https://provider.agrospai.udl.cat
197
+ ```
198
+
199
+ _See code: [src/commands/compute-results.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/compute-results.ts)_
200
+
201
+ ## `pontus-x_cli compute-status JOBID`
202
+
203
+ Check compute job status.
204
+
205
+ ```
206
+ USAGE
207
+ $ pontus-x_cli compute-status JOBID -p <value>
208
+
209
+ ARGUMENTS
210
+ JOBID Compute job ID
211
+
212
+ FLAGS
213
+ -p, --provider=<value> (required) [default: https://provider.agrospai.udl.cat] The Provider URL
214
+
215
+ DESCRIPTION
216
+ Check compute job status.
217
+
218
+ EXAMPLES
219
+ $ pontus-x_cli compute-status 215bae450c8f40f59bfc5d1ccada3931 -p https://provider.agrospai.udl.cat
220
+ ```
221
+
222
+ _See code: [src/commands/compute-status.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/compute-status.ts)_
223
+
224
+ ## `pontus-x_cli edit-algo DID IMAGE TAG CHECKSUM ENTRYPOINT`
225
+
226
+ Change the container metadata for a given algorithm DID
227
+
228
+ ```
229
+ USAGE
230
+ $ pontus-x_cli edit-algo DID IMAGE TAG CHECKSUM ENTRYPOINT [-y]
231
+
232
+ ARGUMENTS
233
+ DID Algorithm DID
234
+ IMAGE Container image
235
+ TAG Container tag
236
+ CHECKSUM Image checksum
237
+ ENTRYPOINT Algorithm entrypoint
238
+
239
+ FLAGS
240
+ -y, --yes Skip confirmation prompt
241
+
242
+ DESCRIPTION
243
+ Change the container metadata for a given algorithm DID
244
+
245
+ EXAMPLES
246
+ $ pontus-x_cli edit-algo did:op:dcdb747f8feff3122c6d6c0f45a339a6e09415e721f98f61cc2c1d62ab35a21f rogargon/pandas-profiling 4.16 sha256:81dca5439f07dff4d56097546a9fce7335be3de8e2622dc105c64e54376f86b5 "python /algorithm/src/main.py"
247
+ ```
248
+
249
+ _See code: [src/commands/edit-algo.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/edit-algo.ts)_
250
+
251
+ ## `pontus-x_cli edit-asset-url DID URL`
252
+
253
+ Change the URL of an asset DID
254
+
255
+ ```
256
+ USAGE
257
+ $ pontus-x_cli edit-asset-url DID URL [-y]
258
+
259
+ ARGUMENTS
260
+ DID DID of the asset
261
+ URL New URL for the asset
262
+
263
+ FLAGS
264
+ -y, --yes Automatic yes to prompts
265
+
266
+ DESCRIPTION
267
+ Change the URL of an asset DID
268
+
269
+ EXAMPLES
270
+ $ pontus-x_cli edit-asset-url did:op:af3e93c4f18903f91b108e7204b8a752e7605f4547ed507212bd6aca63af5686 https://raw.githubusercontent.com/plotly/datasets/refs/heads/master/titanic.csv
271
+ ```
272
+
273
+ _See code: [src/commands/edit-asset-url.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/edit-asset-url.ts)_
274
+
275
+ ## `pontus-x_cli edit-trusted-algos DID`
276
+
277
+ Overwrite the trusted algorithms for a data asset to the provided algorithm DIDs
278
+
279
+ ```
280
+ USAGE
281
+ $ pontus-x_cli edit-trusted-algos DID --algos <value>... [-y]
282
+
283
+ ARGUMENTS
284
+ DID DID of the asset
285
+
286
+ FLAGS
287
+ -y, --yes Skip confirmation prompt
288
+ --algos=<value>... (required) Algorithm DIDs
289
+
290
+ DESCRIPTION
291
+ Overwrite the trusted algorithms for a data asset to the provided algorithm DIDs
292
+
293
+ EXAMPLES
294
+ $ pontus-x_cli edit-trusted-algos did:op:ffeee8c8f19328985ef6743b08e61ef89d5141027fd47612e32e7900cacd2b7a --algos did:op:8f9994d01975cadd0196a2f7f811ed850e5d02a7223e7c5a31faaebe7371c81a did:op:0b970c95211cb8ef4574383386376646081bb7eb949b2a75e1e2171ea25949a7
295
+ ```
296
+
297
+ _See code: [src/commands/edit-trusted-algos.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/edit-trusted-algos.ts)_
298
+
299
+ ## `pontus-x_cli export-private-key`
300
+
301
+ Export your private key as a JSON file, to use later with the login command or for Pontus-X portals automation
302
+
303
+ ```
304
+ USAGE
305
+ $ pontus-x_cli export-private-key [-p <value>] [-k <value>] [-f <value>]
82
306
 
83
- Edit the price of an existing DID, keeping the current currency:
307
+ FLAGS
308
+ -f, --filepath=<value> File path to save the encrypted private key (default is <address>.json)
309
+ -k, --privateKey=<value> Your private key
310
+ -p, --password=<value> Password to encrypt the private key file
84
311
 
85
- ```shell
86
- pontus-x_cli change-price did:op:34d5f73d77550843201ee1a43ad9d404d3e557ed6a70772e9afde7a27d863b8f 0.1
312
+ DESCRIPTION
313
+ Export your private key as a JSON file, to use later with the login command or for Pontus-X portals automation
314
+
315
+ EXAMPLES
316
+ $ pontus-x_cli export-private-key
317
+ ```
318
+
319
+ _See code: [src/commands/export-private-key.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/export-private-key.ts)_
320
+
321
+ ## `pontus-x_cli generate-asset-credentials DID`
322
+
323
+ Generate the Gaia-X credentials for the input DID asset, including its verifiable presentation
324
+
325
+ ```
326
+ USAGE
327
+ $ pontus-x_cli generate-asset-credentials DID -c <value> -d <value> -p <value> [-w <value>]
328
+
329
+ ARGUMENTS
330
+ DID DID of the asset
331
+
332
+ FLAGS
333
+ -c, --certificate=<value> (required) Path to the certificate.key file
334
+ -d, --didjson=<value> (required) Path to the did.json file
335
+ -p, --participant=<value> (required) Path to the JSON file including the required participant data
336
+ -w, --password=<value> Password for the private key file (if not provided, it will be asked interactively)
337
+
338
+ DESCRIPTION
339
+ Generate the Gaia-X credentials for the input DID asset, including its verifiable presentation
340
+
341
+ EXAMPLES
342
+ $ pontus-x_cli generate-asset-credentials -p ./CEP.data.json -d ./did.json -c certificate.key did:op:01f8bc1e797a854dc718bd7a802acb07c5fc39f706b03dd454bceb66be6828c6
87
343
  ```
88
344
 
89
- ### edit-algo \<did> \<image> \<tag> \<checksum>
345
+ _See code: [src/commands/generate-asset-credentials.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/generate-asset-credentials.ts)_
346
+
347
+ ## `pontus-x_cli generate-did-web`
90
348
 
91
- Change the container metadata for a given algorithm DID:
349
+ Generate a did.json to set up a DID-Web source to publish Gaia-X complaint credentials
92
350
 
93
- ```shell
94
- pontus-x_cli edit-algo did:op:34d5f73d77550843201ee1a43ad9d404d3e557ed6a70772e9afde7a27d863b8f rogargon/pandas-profiling 4.9.0 sha256:105d404c9b00438c08c2199d5356fcd17d7349cff514c923d066ced56d9baa93
95
351
  ```
352
+ USAGE
353
+ $ pontus-x_cli generate-did-web -c <value> -d <value>
96
354
 
97
- ### edit-trusted-algos \<did> \<algos...>
355
+ FLAGS
356
+ -c, --certificate=<value> (required) Path to the file with the certificate chain for the DID domain URL
357
+ -d, --domain=<value> (required) URL where the DID-Web document will be hosted
98
358
 
99
- Overwrite the trusted algorithms for a data asset to the provided algorithm DIDs:
359
+ DESCRIPTION
360
+ Generate a did.json to set up a DID-Web source to publish Gaia-X complaint credentials
100
361
 
101
- ```shell
102
- pontus-x_cli edit-trusted-algos did:op:f7946c46eb87318b2cd34efdd5f33b19ea9223a90b67f447da6a92aa68ca007c did:op:34d5f73d77550843201ee1a43ad9d404d3e557ed6a70772e9afde7a27d863b8f did:op:d20f956e79709fb2469fffe2bd85cf2fec95a21d2497998bb530043c6bbec901
362
+ EXAMPLES
363
+ $ pontus-x_cli generate-did-web -d <https://compliance.agrospai.udl.cat> -c certificate-chain.crt
103
364
  ```
104
365
 
105
- ### edit-dataset-url \<did> \<url>
366
+ _See code: [src/commands/generate-did-web.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/generate-did-web.ts)_
367
+
368
+ ## `pontus-x_cli generate-participant-credentials`
106
369
 
107
- Change the URL of a dataset DID:
370
+ Generate the Gaia-X credentials for the participant including their verifiable presentation
108
371
 
109
- ```shell
110
- pontus-x_cli edit-dataset-url did:op:f7946c46eb87318b2cd34efdd5f33b19ea9223a90b67f447da6a92aa68ca007c https://new.url/dataset.csv
111
372
  ```
373
+ USAGE
374
+ $ pontus-x_cli generate-participant-credentials -c <value> -d <value> -p <value> [-w <value>]
112
375
 
113
- ### publish \[options] \<script-folder>
376
+ FLAGS
377
+ -c, --certificate=<value> (required) Path to the certificate.key file
378
+ -d, --didjson=<value> (required) Path to the did.json file
379
+ -p, --participant=<value> (required) Path to the JSON file including the required participant data
380
+ -w, --password=<value> Password for the private key file (if not provided, it will be asked interactively)
114
381
 
115
- Publish the asset as instructed in the provided script:
382
+ DESCRIPTION
383
+ Generate the Gaia-X credentials for the participant including their verifiable presentation
116
384
 
117
- ```shell
118
- pontus-x_cli publish --provider https://provider.agrospai.udl.cat src/publish/samples/data --dry-run
385
+ EXAMPLES
386
+ $ pontus-x_cli generate-participant-credentials -p ./CEP.data.json -d ./did.json -c certificate.key
119
387
  ```
120
388
 
121
- Remove the flag `--dry-run` to actually publish the asset.
389
+ _See code: [src/commands/generate-participant-credentials.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/generate-participant-credentials.ts)_
122
390
 
123
- The script should be a TypeScript file `index.ts` in the input script-folder, which should have a function `publish` with the following signature:
391
+ ## `pontus-x_cli get DID`
392
+
393
+ Get the available metadata to the asset with the given DID
124
394
 
125
- ```typescript
126
- const publish = async (folder: string, connection: any, provider: string, dryRun: boolean) => {
127
- // Your publishing logic here
128
- }
129
395
  ```
396
+ USAGE
397
+ $ pontus-x_cli get DID
398
+
399
+ ARGUMENTS
400
+ DID DID of the asset
130
401
 
131
- In the same folder, you should have a `description.md` file with the description of the asset to be published using Markdown syntax.
402
+ DESCRIPTION
403
+ Get the available metadata to the asset with the given DID
132
404
 
133
- There are samples of publish scripts and description Markdown files for algorithms and datasets in the [src/publish/samples](src/publish/samples) folder.
405
+ EXAMPLES
406
+ $ pontus-x_cli get did:op:ffeee8c8f19328985ef6743b08e61ef89d5141027fd47612e32e7900cacd2b7a
407
+ ```
134
408
 
135
- ## Prepare yourself for Gaia-X compliance
409
+ _See code: [src/commands/get.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/get.ts)_
136
410
 
137
- This section will help you to prepare your institution for Gaia-X compliance. It will guide you through the process of setting up a DID-Web server and generating the necessary participant credentials following the Gaia-X Trust Framework.
411
+ ## `pontus-x_cli help [COMMAND]`
138
412
 
139
- ### Obtaining a domain and SSL certificate
413
+ Display help for pontus-x_cli.
140
414
 
141
- Get a root domain for DID-Web and the associated SSL certificate. We will use for this Let's Encrypt certificates, the free alternative among Gaia-X's [list of defined Trust Anchors](https://gaia-x.gitlab.io/policy-rules-committee/trust-framework/trust_anchors/#list-of-defined-trust-anchors).
415
+ ```
416
+ USAGE
417
+ $ pontus-x_cli help [COMMAND...] [-n]
142
418
 
143
- There are different ways of getting a Let's Encrypt certificate: https://letsencrypt.org/getting-started/
419
+ ARGUMENTS
420
+ COMMAND... Command to show help for.
144
421
 
145
- For this example, and as later we will need to publish online some of the generated documents, we will use a Kubernetes cluster with Cert Manager to automate the certificate issuance, plus NGINX to serve the generated documents.
422
+ FLAGS
423
+ -n, --nested-commands Include all nested commands in the output.
146
424
 
147
- First of all, you will need a Kubernetes cluster that is publicly accessible. You can use a cloud provider like Google Cloud Platform (GCP) or Amazon Web Services (AWS), or a local Kubernetes cluster like [Minikube](https://minikube.sigs.k8s.io/docs/start/).
425
+ DESCRIPTION
426
+ Display help for pontus-x_cli.
427
+ ```
148
428
 
149
- Once Minikube is running, don't forget to enable the ingress addon using the command: `minikube addons enable ingress`. Then, install Cert Manager following the instructions at https://cert-manager.io/docs/installation/
429
+ _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v6.2.32/src/commands/help.ts)_
150
430
 
151
- After Cert Manager is installed, you can create a ClusterIssuer resource to issue Let's Encrypt certificates. The file [letsencrypt-production.yaml](src/gaia-x_compliance/letsencrypt-production.yaml) provides an example of a ClusterIssuer resource, which can be applied to your cluster using the command:
431
+ ## `pontus-x_cli login KEYFILE`
432
+
433
+ Login to retrieve your private key from a JSON key store and store it in .env
152
434
 
153
- ```shell
154
- kubectl apply -f letsencrypt-production.yaml
155
435
  ```
436
+ USAGE
437
+ $ pontus-x_cli login KEYFILE [-p <value>]
438
+
439
+ ARGUMENTS
440
+ KEYFILE Path to the keyFile.json
441
+
442
+ FLAGS
443
+ -p, --password=<value> Password to decrypt the key file
444
+
445
+ DESCRIPTION
446
+ Login to retrieve your private key from a JSON key store and store it in .env
447
+
448
+ EXAMPLES
449
+ $ pontus-x_cli login d999baae98ac5246568fd726be8832c49626867d.json
450
+ ```
451
+
452
+ _See code: [src/commands/login.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/login.ts)_
453
+
454
+ ## `pontus-x_cli logout`
455
+
456
+ Logout to remove your private key from .env file
457
+
458
+ ```
459
+ USAGE
460
+ $ pontus-x_cli logout
461
+
462
+ DESCRIPTION
463
+ Logout to remove your private key from .env file
464
+
465
+ EXAMPLES
466
+ $ pontus-x_cli logout
467
+ ```
468
+
469
+ _See code: [src/commands/logout.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/logout.ts)_
470
+
471
+ ## `pontus-x_cli publish PATH`
472
+
473
+ Publish the asset as instructed in the provided script folder.
474
+
475
+ ```
476
+ USAGE
477
+ $ pontus-x_cli publish PATH -p <value> [--dry-run]
478
+
479
+ ARGUMENTS
480
+ PATH Path to the JSON/YAML or TS file describing the asset to publish
481
+
482
+ FLAGS
483
+ -p, --provider=<value> (required) [default: https://provider.agrospai.udl.cat] The Provider URL
484
+ --dry-run Dry run the publishing process
156
485
 
157
- Now, you can create a NGINX deployment, with associated service and ingress, which will request the certificate from Let's Encrypt, for instance that defined at [test-nginx.yaml](src/gaia-x_compliance/test-nginx.yaml). It can be deployed using the commands:
486
+ DESCRIPTION
487
+ Publish the asset as instructed in the provided script folder.
158
488
 
159
- ```shell
160
- kubectl create namespace test
161
- kubectl apply -f test-nginx.yaml
489
+ EXAMPLES
490
+ $ pontus-x_cli publish samples/publish/algo/spec.json
491
+
492
+ $ pontus-x_cli publish samples/publish/algo/spec.yaml
493
+
494
+ $ pontus-x_cli publish samples/publish/algo/index.ts
162
495
  ```
163
496
 
164
- Just wait for all the resources to be ready and the certificate to be issued. You can check the status of all the resource in the test namespace using the command:
497
+ _See code: [src/commands/publish.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/publish.ts)_
498
+
499
+ ## `pontus-x_cli revoke DIDS`
500
+
501
+ Publisher revocation of one or more owned DIDs
165
502
 
166
- ```shell
167
- kubectl get all -n test
168
503
  ```
504
+ USAGE
505
+ $ pontus-x_cli revoke DIDS [-y]
169
506
 
170
- And check the certificate to be issued using the command:
507
+ ARGUMENTS
508
+ DIDS DIDs to revoke
171
509
 
172
- ```shell
173
- kubectl get certificate -n test
510
+ FLAGS
511
+ -y, --yes Skip confirmation prompt
512
+
513
+ DESCRIPTION
514
+ Publisher revocation of one or more owned DIDs
515
+
516
+ EXAMPLES
517
+ $ pontus-x_cli revoke did:op:ffeee8c8f19328985ef6743b08e61ef89d5141027fd47612e32e7900cacd2b7a did:op:abcee8c8f19328985ef6743b08e61ef89d5141027fd47612e32e7900cacd2b7b
174
518
  ```
175
519
 
176
- Wait till the certificate is marked as ready:
520
+ _See code: [src/commands/revoke.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/revoke.ts)_
521
+
522
+ ## `pontus-x_cli self-description DID SDURL`
523
+
524
+ Associate Gaia-X Self-Description to the asset with the given DID
177
525
 
178
526
  ```
179
- NAME READY SECRET AGE
180
- your.domain.org-cert True your.domain.org-cert 2m
527
+ USAGE
528
+ $ pontus-x_cli self-description DID SDURL [-y]
529
+
530
+ ARGUMENTS
531
+ DID DID of the asset
532
+ SDURL URL of the Self-Description
533
+
534
+ FLAGS
535
+ -y, --yes Skip confirmation prompt
536
+
537
+ DESCRIPTION
538
+ Associate Gaia-X Self-Description to the asset with the given DID
539
+
540
+ EXAMPLES
541
+ $ pontus-x_cli self-description did:op:d22954f2cbf6a85c897ce605c275cc786e099592cc59e3b7dd66b93e784bed8c https://example.com/self-description.json
181
542
  ```
182
543
 
183
- Now, you can retrieve the certificate chain including the root certificate as required by Gaia-X. We can use an online service like https://whatsmychaincert.com. Use the following command configuring you domain name, e.g. `your.domain.org`, to retrieve the whole chain and store it in `certificate-chain.crt`:
544
+ _See code: [src/commands/self-description.ts](https://github.com/AgrospAI/pontus-x_cli/blob/v1.0.0/src/commands/self-description.ts)_
545
+ <!-- commandsstop -->
546
+
547
+ # Useful information
184
548
 
185
- ```shell
186
- curl -o certificate-chain.crt "https://whatsmychaincert.com/generate?include_leaf=1&include_root=1&host=your.domain.org"
549
+ ## How to obtain the certificate chain
550
+
551
+ You can use the following command to obtain the certificate chain for the compliance service:
552
+
553
+ ```bash
554
+ curl -o certificate-chain.crt "https://whatsmychaincert.com/generate?include_leaf=1&include_root=1&host=compliance.agrospai.udl.cat"
187
555
  ```
188
556
 
189
- Also retrieve the secret key for the certificate using the command:
557
+ ## How to obtain the certificate key
558
+
559
+ If you are using Kubernetes with cert-manager, you can extract the key with the following command:
190
560
 
191
- ```shell
192
- kubectl get secret your.domain.org-cert -n test -o jsonpath='{.data.tls\.key}' | base64 --decode > certificate.key
561
+ ```bash
562
+ kubectl get secret compliance-tls -n tenant-1 -o jsonpath='{.data.tls\.key}' | base64 --decode > certificate.key
193
563
  ```
194
564
 
195
- ### Setting up a DID-Web server
565
+ # Development
196
566
 
197
- Once we have set a public domain and its associated SSL certificate, we can set up a DID-Web source where we can publish Gaia-X complaint credentials for participants and assets.
567
+ ## Install dependencies
198
568
 
199
- To generate the did.json file required for DID-Web, we will use the Gaia-X [did-web-generator](https://gitlab.com/gaia-x/lab/did-web-generator) and provide as input the base URL for DID-Web, e.g. https://your.domain.org, and the name of the file with the SSL certificate, e.g. `certificate-chain.crt`.
569
+ ```sh
570
+ npm install
571
+ ```
200
572
 
201
- The did.json file is generated using the `generate-did-web` command provided by `pontus-x_cli`:
573
+ ## Build the CLI
202
574
 
203
- ```shell
204
- pontus-x_cli generate-did-web -d https://your.domain.org -c certificate-chain.crt
575
+ ```sh
576
+ npm run build
205
577
  ```
206
578
 
207
- The output is stored in a file named `did.json` and is to be made available from the DID-Web domain at the well-known path `/.well-known/did.json` together with the certificate file.
579
+ ## Run the built CLI
208
580
 
209
- To do so, we will use the NGINX server we have set up before. We will create a ConfigMap with the did.json file and the certificate file, and mount it in the NGINX deployment.
581
+ ### Development
210
582
 
211
- First, we create the config map in the test namespace from the `did.json` and `certificate-chain.crt` files using the following command:
583
+ ```sh
584
+ ./bin/dev.js COMMAND
585
+ ```
212
586
 
213
- ```shell
214
- kubectl --namespace test create configmap did-web-config --from-file=did.json --from-file=certificate-chain.crt --dry-run=client -o yaml | kubectl apply -f -
587
+ ### Production
588
+
589
+ ```sh
590
+ ./bin/run.js COMMAND
215
591
  ```
216
592
 
217
- Then, we update the NGINX deployment to mount the config map in the `/usr/share/nginx/html/.well-known` path. The updated deployment is defined in the file [test-nginx-did-web.yaml](src/gaia-x_compliance/test-nginx-did-web.yaml) and can be applied using the command:
593
+ ### Global installation
218
594
 
219
- ```shell
220
- kubectl apply -f test-nginx-did-web.yaml
595
+ ```sh
596
+ npm install -g .
221
597
  ```
222
598
 
223
- Now, the `did.json` should be available at https://your.domain.org/.well-known/did.json and the certificate chain at https://your.domain.org/.well-known/certificate-chain.crt.
599
+ ## Formatting
224
600
 
225
- The chain can be checked to see if it constitutes a valid trust anchor chain using the Gaia-X [Trust Anchor Registry](https://registry.lab.gaia-x.eu/v1-staging/docs#/TrustAnchor/TrustAnchorController_verifyTrustAnchorChain) API. The `v1-staging` version accepts Extended Validation (EV) Secure Sockets Layer (SSL) certificate issuers like Let's Encrypt, while the `v1` version only accepts the official [Gaia-X Trust Anchors]((https://gaia-x.gitlab.io/policy-rules-committee/trust-framework/trust_anchors/#list-of-defined-trust-anchors). EV SSL certificates are just recommended for testing.
601
+ ```sh
602
+ npm run format
603
+ ```
226
604
 
227
- ### Generating Gaia-X Compliant Participant Credentials
605
+ ## Linting
228
606
 
229
- To generate the credentials required by the Gaia-X Trust Framework to identify a Participant, we will use the `generate-participant-credentials` command provided by `pontus-x_cli`. This command requires as input a JSON file with the participant's data and the DID-Web URL where the credentials will be published. For instance, for the Universitat de Lleida, a sample [UdL.data.json](src/gaia-x_compliance/UdL.data.json) file is provided with the following content:
607
+ ```sh
608
+ npm run lint
609
+ ```
230
610
 
231
- ```json
232
- {
233
- "participant_name": "UdL",
234
- "participant_uri": "https://www.udl.cat",
235
- "participant_legal_name": "Universitat de Lleida",
236
- "participant_vat_id": "ESQ7550001G",
237
- "participant_country_subdivision_code": "ES-L",
238
- "participant_street_address": "Victor Siurana, 1",
239
- "participant_postal_code": "25003",
240
- "participant_locality": "Lleida"
241
- }
611
+ ## Typing
612
+
613
+ ```sh
614
+ npm run tsc
242
615
  ```
243
616
 
244
- To generate the Verifiable Presentation of the Gaia-X credentials for Universitat de Lleida using the previous DID-Web server, we can use the following command. The Verifiable Presentation (VP) file will be generated in the same folder as the JSON file with the input data about the participant:
617
+ ## Testing
618
+
619
+ You can customize the tests in `test/config.ts` file. The two most important parameters are `PRIVATE_KEY_PATH` and `PRIVATE_KEY_PASSWORD`.
245
620
 
246
- ```shell
247
- pontus-x_cli generate-participant-credentials -p UdL.data.json -d did.json -c certificate.key
621
+ By default, you need to have the `privateKey.json` file in the base root. Which you can generate with the command: `npm run dev export-private-key -f privateKey.json`.
622
+
623
+ ### Structure
624
+
625
+ The tests are organized in folders by functionality:
626
+
627
+ ```text
628
+ test/
629
+ ├── auth/
630
+ ├── read/
631
+ └── write/
248
632
  ```
249
633
 
250
- To generate the VPs for other participants, just create a new JSON file with the participant's data and run the script with the new file. For instance, there is another sample JSON file for CEP in [CEP.data.json](src/gaia-x_compliance/CEP.data.json), which can be used to generate the credentials for the "Consorci Centre d'Estudis Porcins" using the command:
634
+ * **auth**: commands related to authentication.
635
+ * **read**: commands that do not make modifications in the blockchain.
636
+ * **write**: commands that make modifications in the blockchain. There is one exception: the `access` command, which causes problems when run in parallel with other write commands. All write commands are run sequentially to avoid conflicts.
637
+
638
+ ### Initialization
639
+
640
+ Because the tests interact with the blockchain, we need to first deploy some assets manually and keep track of their DIDs in the `STATE_FILE` (by default `./.vitest-state.json`).
251
641
 
252
- ```shell
253
- pontus-x_cli generate-participant-credentials -p CEP.data.json -d did.json -c certificate.key
642
+ ```sh
643
+ npm run test:init
254
644
  ```
255
645
 
256
- ## Publishing the Gaia-X Compliant Participant Credentials
646
+ ### Clean up
257
647
 
258
- To publish the generated credentials, we will use the NGINX server we have set up before and expand the ConfigMap to also include the files for the credentials (there is no need to also publish the Gaia-X Compliance responses). The following command will generate a new version of the config map including all the credentials for UdL and CEP participants, in addition to the original `did.json` and `certificate-chain.crt` files:
648
+ Whenever you want to clean up the deployed assets in the blockchain, you can run:
259
649
 
260
- ```shell
261
- kubectl --namespace test create configmap did-web-config --from-file=did.json --from-file=certificate-chain.crt \
262
- --from-file=UdL.vp.json --from-file=CEP.vp.json \
263
- --dry-run=client -o yaml | kubectl apply -f -
650
+ ```sh
651
+ npm run test:clean
264
652
  ```
265
653
 
266
- ### Dealing with Certificate Expiration
654
+ ### Run all tests once
267
655
 
268
- In case of SSL certificate expiration, just regenerate and publish at well-know the certificate chain `certificate-chain.crt`
656
+ ```sh
657
+ npm run test
658
+ ```
659
+
660
+ ### Run a specific test file once
269
661
 
270
- **Important**: public and private keys do not change and nothing more needs to be done, not even updating the `did.json` file.
662
+ ```sh
663
+ npm run test TEST_NAME # example: access, login, get, etc.
664
+ ```
271
665
 
272
- So basically, download again the certificate chain after renewal using the previous command:
666
+ ### Run a specific test folder
273
667
 
274
- ```shell
275
- curl -o certificate-chain.crt "https://whatsmychaincert.com/generate?include_leaf=1&include_root=1&host=your.domain.org"
668
+ ```sh
669
+ npm run test TEST_FOLDER # example: auth, read, write
276
670
  ```
277
671
 
278
- And update the ConfigMap with the new certificate chain, without forgetting the rest of files being already published:
672
+ ### Run a specific test file in watch mode
279
673
 
280
- ```shell
281
- kubectl --namespace test create configmap did-web-config --from-file=did.json --from-file=certificate-chain.crt \
282
- --from-file=UdL.vp.json --from-file=CEP.vp.json \
283
- --dry-run=client -o yaml | kubectl apply -f -
674
+ ```sh
675
+ npm run test:watch TEST_NAME # example: access, login, get, etc.
284
676
  ```
285
677
 
286
- ### Additional References
678
+ ### Open the Vitest UI
679
+
680
+ ```sh
681
+ npm run test:ui
682
+ ```
287
683
 
288
- Gaia-X: onboarding, first credentials' issuance.
289
- * Video tutorial: https://www.youtube.com/watch?v=xHaBM-T2--k
290
- * Jupyter notebook: https://gitlab.com/gaia-x/lab/workshops/gaia-x-101
684
+ ## Generate documentation
291
685
 
686
+ ```sh
687
+ npm run prepack
688
+ npm run postpack
689
+ ```
690
+
691
+ ## Generate JSON schema
692
+
693
+ ```sh
694
+ ./node_modules/.bin/ts-json-schema-generator --path 'src/types/publish.d.ts' --type 'PublishConfig' --expose 'export' --out 'src/types/schema.json'
695
+ ```