@data-fair/catalog-data-fair 0.2.2 → 0.2.4

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.
package/README.md CHANGED
@@ -1,4 +1,3 @@
1
- # <img alt="Data FAIR logo" src="https://cdn.jsdelivr.net/gh/data-fair/data-fair@master/ui/public/assets/logo.svg" width="40"> @data-fair/catalog-mock
1
+ # <img alt="Data FAIR logo" src="https://cdn.jsdelivr.net/gh/data-fair/data-fair@master/ui/public/assets/logo.svg" width="40"> @data-fair/catalog-data-fair
2
2
 
3
- A simple mock plugin for the Data Fair catalogs service.
4
- This plugin can be used as a template for creating new plugins.
3
+ Data Fair plugin for the Data Fair catalogs service.
package/index.ts CHANGED
@@ -12,7 +12,7 @@ const plugin: CatalogPlugin<DataFairConfig, DataFairCapabilities> = {
12
12
  return prepare(context)
13
13
  },
14
14
 
15
- async listResources (context) {
15
+ async list (context) {
16
16
  const { listResources } = await import('./lib/imports.ts')
17
17
  return listResources(context)
18
18
  },
package/lib/download.ts CHANGED
@@ -41,7 +41,7 @@ const getMetaData = async ({ catalogConfig, resourceId, log, secrets }: GetResou
41
41
  log.info('Import des métadonnées de la ressource', { url })
42
42
  } catch (e) {
43
43
  console.error('Error while fetching metadatas', e)
44
- throw new Error(`Erreur lors de la récuperation de la resource DataFair. ${e instanceof Error ? e.message : e}`)
44
+ throw new Error(`Erreur lors de la récupération de la resource DataFair. ${e instanceof Error ? e.message : e}`)
45
45
  }
46
46
 
47
47
  dataset.schema = (dataset.schema ?? []).map((field) => {
@@ -71,6 +71,8 @@ const getMetaData = async ({ catalogConfig, resourceId, log, secrets }: GetResou
71
71
  frequency: dataset.frequency,
72
72
  image: dataset.image,
73
73
  keywords: dataset.keywords,
74
+ analysis: dataset.analysis,
75
+ projection: dataset.projection,
74
76
  size,
75
77
  schema: dataset.schema,
76
78
  filePath: '',
package/lib/imports.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import type { DataFairCatalog, DataFairDataset, DataFairConfig } from '#types'
2
2
  import axios from '@data-fair/lib-node/axios.js'
3
- import type { CatalogPlugin, ListResourcesContext } from '@data-fair/types-catalogs'
3
+ import type { CatalogPlugin, ListContext } from '@data-fair/types-catalogs'
4
4
  import type { DataFairCapabilities } from './capabilities.ts'
5
5
 
6
- type ResourceList = Awaited<ReturnType<CatalogPlugin['listResources']>>['results']
6
+ type ResourceList = Awaited<ReturnType<CatalogPlugin['list']>>['results']
7
7
 
8
8
  /**
9
9
  * @param dataFairDataset the dataset to transform
@@ -35,7 +35,7 @@ const prepareCatalog = (dataFairDatasets: DataFairDataset[]): ResourceList => {
35
35
  * @param config the Data Fair configuration
36
36
  * @returns the list of Resources available on this catalog
37
37
  */
38
- export const listResources = async (config: ListResourcesContext<DataFairConfig, DataFairCapabilities>): ReturnType<CatalogPlugin<DataFairConfig>['listResources']> => {
38
+ export const listResources = async (config: ListContext<DataFairConfig, DataFairCapabilities>): ReturnType<CatalogPlugin<DataFairConfig>['list']> => {
39
39
  const dataFairParams: Record<string, any> = { sort: 'title' }
40
40
  if (config.params?.q) dataFairParams.q = config.params.q
41
41
  if (config.params?.size) dataFairParams.size = config.params.size
@@ -52,7 +52,7 @@ export const listResources = async (config: ListResourcesContext<DataFairConfig,
52
52
  data = res.data
53
53
  } catch (e) {
54
54
  console.error(`Error fetching datasets from ${url} : ${e}`)
55
- throw new Error(`Erreur lors de la récuperation de la resource Data Fair (${e instanceof Error ? e.message : ''})`)
55
+ throw new Error(`Erreur lors de la récupération de la resource Data Fair (${e instanceof Error ? e.message : ''})`)
56
56
  }
57
57
 
58
58
  const catalog = prepareCatalog(data.results)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@data-fair/catalog-data-fair",
3
- "description": "A simple Data Fair plugin for the Data Fair catalogs service.",
4
- "version": "0.2.2",
3
+ "description": "Data Fair plugin for the Data Fair catalogs service.",
4
+ "version": "0.2.4",
5
5
  "main": "index.ts",
6
6
  "type": "module",
7
7
  "scripts": {
@@ -38,7 +38,7 @@
38
38
  "@commitlint/cli": "^19.8.0",
39
39
  "@commitlint/config-conventional": "^19.8.0",
40
40
  "@data-fair/lib-types-builder": "^1.8.0",
41
- "@data-fair/types-catalogs": "^0.3.0",
41
+ "@data-fair/types-catalogs": "^0.5.1",
42
42
  "@types/nock": "^10.0.3",
43
43
  "chalk": "^5.4.1",
44
44
  "dayjs": "^1.11.13",
@@ -62,7 +62,7 @@ export const schema = {
62
62
  "layout": {
63
63
  "props": {
64
64
  "type": "password",
65
- "autocomplete": "new-password"
65
+ "autocomplete": "suppress"
66
66
  }
67
67
  }
68
68
  }
@@ -4,7 +4,7 @@
4
4
  "use strict";
5
5
  export const validate = validate14;
6
6
  export default validate14;
7
- const schema16 = {"$id":"https://github.com/data-fair/catalog-data-fair/catalog-config","x-exports":["types","validate","schema"],"title":"DataFairConfig","type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string","title":"URL","description":"The url of the catalog","x-i18n-description":{"fr":"L'URL du portail où le catalogue est publié. Par exemple: `https://opendata.koumoul.com`."},"pattern":"^https?://.*[^/]$","errorMessage":"The URL must start with http:// or https:// and must not end with `/`.","x-i18n-errorMessage":{"fr":"L'URL doit commencer par http:// ou https:// et ne pas se terminer par `/`."},"examples":["https://opendata.koumoul.com"]},"apiKey":{"type":"string","title":"API Key (Optional)","x-i18n-title":{"fr":"Clé API (Optionnelle)"},"description":"The Data Fair API key to access the catalog. You can create one from the 'Settings' tab in Data Fair, under the 'API Keys' section.","x-i18n-description":{"fr":"La clé API Data Fair pour accéder au catalogue. Vous pouvez en créer depuis l'onglet 'Paramètres' de Data Fair, dans la section 'Clés d'API'."},"layout":{"props":{"type":"password","autocomplete":"new-password"}}}}};
7
+ const schema16 = {"$id":"https://github.com/data-fair/catalog-data-fair/catalog-config","x-exports":["types","validate","schema"],"title":"DataFairConfig","type":"object","additionalProperties":false,"required":["url"],"properties":{"url":{"type":"string","title":"URL","description":"The url of the catalog","x-i18n-description":{"fr":"L'URL du portail où le catalogue est publié. Par exemple: `https://opendata.koumoul.com`."},"pattern":"^https?://.*[^/]$","errorMessage":"The URL must start with http:// or https:// and must not end with `/`.","x-i18n-errorMessage":{"fr":"L'URL doit commencer par http:// ou https:// et ne pas se terminer par `/`."},"examples":["https://opendata.koumoul.com"]},"apiKey":{"type":"string","title":"API Key (Optional)","x-i18n-title":{"fr":"Clé API (Optionnelle)"},"description":"The Data Fair API key to access the catalog. You can create one from the 'Settings' tab in Data Fair, under the 'API Keys' section.","x-i18n-description":{"fr":"La clé API Data Fair pour accéder au catalogue. Vous pouvez en créer depuis l'onglet 'Paramètres' de Data Fair, dans la section 'Clés d'API'."},"layout":{"props":{"type":"password","autocomplete":"suppress"}}}}};
8
8
  const pattern0 = new RegExp("^https?://.*[^/]$", "u");
9
9
 
10
10
  function validate14(data, {instancePath="", parentData, parentDataProperty, rootData=data}={}){
@@ -41,7 +41,7 @@
41
41
  "layout": {
42
42
  "props": {
43
43
  "type": "password",
44
- "autocomplete": "new-password"
44
+ "autocomplete": "suppress"
45
45
  }
46
46
  }
47
47
  }
@@ -101,6 +101,29 @@ export type DataFairDataset = {
101
101
  | "daily"
102
102
  | "continuous"
103
103
  | "irregular";
104
+ /**
105
+ * URL d'une image, illustration du jeu de données
106
+ */
107
+ image?: string;
108
+ license?: {
109
+ /**
110
+ * Short title for the license
111
+ */
112
+ title: string;
113
+ /**
114
+ * The URL where the license can be read
115
+ */
116
+ href: string;
117
+ };
118
+ analysis?: {
119
+ escapeKeyAlgorithm?: "compat-ods";
120
+ [k: string]: unknown;
121
+ };
122
+ projection?: {
123
+ code?: string;
124
+ title?: string;
125
+ [k: string]: unknown;
126
+ };
104
127
  file?: {
105
128
  /**
106
129
  * Size of the file on disk
@@ -115,10 +138,6 @@ export type DataFairDataset = {
115
138
  size: number;
116
139
  [k: string]: unknown;
117
140
  };
118
- /**
119
- * URL d'une image, illustration du jeu de données
120
- */
121
- image?: string;
122
141
  /**
123
142
  * JSON schema properties of the fields
124
143
  */
@@ -229,16 +248,6 @@ export type DataFairDataset = {
229
248
  * The number of rowns
230
249
  */
231
250
  count?: number;
232
- license?: {
233
- /**
234
- * Short title for the license
235
- */
236
- title: string;
237
- /**
238
- * The URL where the license can be read
239
- */
240
- href: string;
241
- };
242
251
  [k: string]: unknown;
243
252
  }
244
253
 
@@ -0,0 +1,431 @@
1
+ export default {
2
+ $id: 'https://github.com/data-fair/catalog-data-fair/catalog-schemas',
3
+ 'x-exports': [
4
+ 'types'
5
+ ],
6
+ title: 'DataFair Catalog',
7
+ type: 'object',
8
+ additionalProperties: false,
9
+ required: [
10
+ 'count',
11
+ 'results'
12
+ ],
13
+ properties: {
14
+ count: {
15
+ type: 'number',
16
+ description: 'Nombre total de jeux de données'
17
+ },
18
+ results: {
19
+ type: 'array',
20
+ items: {
21
+ $ref: '#/$defs/DataFairDataset'
22
+ }
23
+ }
24
+ },
25
+ $defs: {
26
+ DataFairDataset: {
27
+ type: 'object',
28
+ required: [
29
+ 'id',
30
+ 'title'
31
+ ],
32
+ properties: {
33
+ id: {
34
+ type: 'string',
35
+ description: 'Globally unique identifier of the dataset'
36
+ },
37
+ href: {
38
+ type: 'string',
39
+ description: 'Readonly field. The URL where this resource can be fetched'
40
+ },
41
+ page: {
42
+ type: 'string',
43
+ description: 'Readonly field. The URL where this resource can be viewed in the UI'
44
+ },
45
+
46
+ title: {
47
+ type: 'string',
48
+ description: 'Short title of the dataset'
49
+ },
50
+ description: {
51
+ type: 'string',
52
+ description: 'Detailed description of the dataset'
53
+ },
54
+
55
+ keywords: {
56
+ type: 'array',
57
+ description: 'keywords',
58
+ items: {
59
+ type: 'string'
60
+ }
61
+ },
62
+ frequency: {
63
+ type: 'string',
64
+ description: 'update frequency',
65
+ enum: [
66
+ '',
67
+ 'triennial',
68
+ 'biennial',
69
+ 'annual',
70
+ 'semiannual',
71
+ 'threeTimesAYear',
72
+ 'quarterly',
73
+ 'bimonthly',
74
+ 'monthly',
75
+ 'semimonthly',
76
+ 'biweekly',
77
+ 'threeTimesAMonth',
78
+ 'weekly',
79
+ 'semiweekly',
80
+ 'threeTimesAWeek',
81
+ 'daily',
82
+ 'continuous',
83
+ 'irregular'
84
+ ]
85
+ },
86
+ image: {
87
+ type: 'string',
88
+ description: "URL d'une image, illustration du jeu de données"
89
+ },
90
+ license: {
91
+ type: 'object',
92
+ additionalProperties: false,
93
+ required: [
94
+ 'title',
95
+ 'href'
96
+ ],
97
+ properties: {
98
+ title: {
99
+ type: 'string',
100
+ description: 'Short title for the license'
101
+ },
102
+ href: {
103
+ type: 'string',
104
+ description: 'The URL where the license can be read'
105
+ }
106
+ }
107
+ },
108
+
109
+ analysis: {
110
+ type: 'object',
111
+ properties: {
112
+ escapeKeyAlgorithm: {
113
+ type: 'string',
114
+ enum: [
115
+ 'compat-ods'
116
+ ]
117
+ }
118
+ }
119
+ },
120
+ projection: {
121
+ type: 'object',
122
+ properties: {
123
+ code: { type: 'string' },
124
+ title: { type: 'string' }
125
+ }
126
+ },
127
+
128
+ file: {
129
+ type: 'object',
130
+ required: [
131
+ 'size'
132
+ ],
133
+ properties: {
134
+ size: {
135
+ type: 'number',
136
+ description: 'Size of the file on disk'
137
+ }
138
+ }
139
+ },
140
+ originalFile: {
141
+ type: 'object',
142
+ required: [
143
+ 'size'
144
+ ],
145
+ properties: {
146
+ size: {
147
+ type: 'number',
148
+ description: 'Size of the file on disk'
149
+ }
150
+ }
151
+ },
152
+ schema: {
153
+ type: 'array',
154
+ description: 'JSON schema properties of the fields',
155
+ items: {
156
+ type: 'object',
157
+ required: [
158
+ 'key'
159
+ ],
160
+ properties: {
161
+ key: {
162
+ type: 'string',
163
+ readOnly: true,
164
+ 'x-display': 'hidden'
165
+ },
166
+ type: {
167
+ type: 'string'
168
+ },
169
+ format: {
170
+ type: [
171
+ 'string',
172
+ 'null'
173
+ ]
174
+ },
175
+ 'x-originalName': {
176
+ type: [
177
+ 'string',
178
+ 'null'
179
+ ]
180
+ },
181
+ title: {
182
+ type: 'string'
183
+ },
184
+ description: {
185
+ type: 'string'
186
+ },
187
+ icon: {
188
+ type: 'string'
189
+ },
190
+ 'x-group': {
191
+ type: 'string'
192
+ },
193
+ 'x-refersTo': {
194
+ deprecated: true,
195
+ type: [
196
+ 'string',
197
+ 'null'
198
+ ]
199
+ },
200
+ 'x-concept': {
201
+ type: 'object',
202
+ properties: {
203
+ id: {
204
+ type: 'string'
205
+ },
206
+ title: {
207
+ type: 'string'
208
+ },
209
+ primary: {
210
+ type: 'boolean'
211
+ }
212
+ }
213
+ },
214
+ 'x-calculated': {
215
+ type: 'boolean'
216
+ },
217
+ 'x-capabilities': {
218
+ type: 'object',
219
+ properties: {
220
+ index: {
221
+ type: 'boolean',
222
+ default: true,
223
+ 'x-display': 'switch',
224
+ title: 'Filtrable sur valeur exacte',
225
+ description: 'Désactivez cette capacité si la donnée contient par exemple des textes longs pour lesquels des filtres sur valeurs exactes ont peu de sens.'
226
+ },
227
+ values: {
228
+ type: 'boolean',
229
+ default: true,
230
+ 'x-display': 'switch',
231
+ title: 'Triable et groupable',
232
+ description: 'Désactivez cette capacité si la donnée contient par exemple des textes longs pour lesquels trier ou grouper par valeur a peu de sens.'
233
+ },
234
+ textStandard: {
235
+ type: 'boolean',
236
+ default: true,
237
+ 'x-display': 'switch',
238
+ title: 'Texte analysé pour recherche textuelle',
239
+ description: "Désactivez cette capacité dans le cas d'un code, une url, etc. N'importe quel contenu sur lequel la recherche de mots a peu de sens."
240
+ },
241
+ text: {
242
+ type: 'boolean',
243
+ default: true,
244
+ 'x-display': 'switch',
245
+ title: 'Texte analysé spécifiquement pour la langue française',
246
+ description: "Désactivez cette capacité pour tout contenu qui n'est pas en langue française ou pour lequel la recherche de mots a peu de sens."
247
+ },
248
+ textAgg: {
249
+ type: 'boolean',
250
+ default: false,
251
+ 'x-display': 'switch',
252
+ title: 'Statistiques de mots',
253
+ description: "Activez cette capacité si avez l'intention d'obtenir des statistiques sur les occurrences de mots (par exemple pour construire un nuage de mot)."
254
+ },
255
+ wildcard: {
256
+ type: 'boolean',
257
+ default: false,
258
+ 'x-display': 'switch',
259
+ title: 'Texte filtrable sur groupe de caractères',
260
+ description: "Activez cette capacité si vous avez l'intention de filtrer ce contenu spécifiquement sur une suite de caractères (par exemple si un filtre sur mots entiers ou sur valeur exacte ne convient pas)."
261
+ },
262
+ insensitive: {
263
+ type: 'boolean',
264
+ default: true,
265
+ 'x-display': 'switch',
266
+ title: 'Tri amélioré avec casse et accents',
267
+ description: 'Désactivez cette capacité si le contenu ne sera pas utilisé pour du tri ou bien si il ne contient pas de variations avec accents et majuscules.'
268
+ },
269
+ geoShape: {
270
+ type: 'boolean',
271
+ default: true,
272
+ 'x-display': 'switch',
273
+ title: 'Formes géométriques complexes',
274
+ description: 'Désactivez cette capacité si la donnée ne contient que des géométries basiques de points ou bien si requêter les géométries uniquement à partir de leurs centroïdes est suffisant pour vos besoins.'
275
+ },
276
+ vtPrepare: {
277
+ type: 'boolean',
278
+ default: false,
279
+ 'x-display': 'switch',
280
+ title: 'Tuiles vectorielles préparées',
281
+ description: "Activez cette capacité pour précalculer des éléments utiles à la construction de tuiles vectorielles pour le rendu cartographique du jeu de données. Activez cette option si le jeu de données contient des données géogreaphiques denses à afficher en grande quantité. La contre-partie est une augmentation du temps d'indexation et du volume de données indexées."
282
+ },
283
+ indexAttachment: {
284
+ type: 'boolean',
285
+ default: true,
286
+ 'x-display': 'switch',
287
+ title: 'Contenu des pièces jointes analysé pour recherche textuelle',
288
+ description: "Désactivez cette option si vous souhaitez que les pièces jointes soient simplement téléchargeables et que l'extraction de leur contenu textuel pour recherche de mots n'est pas pertinente."
289
+ }
290
+ }
291
+ },
292
+ 'x-labels': {
293
+ type: 'object',
294
+ patternProperties: {
295
+ '.*': {
296
+ type: 'string'
297
+ }
298
+ }
299
+ },
300
+ 'x-labelsRestricted': {
301
+ type: 'boolean'
302
+ },
303
+ readOnly: {
304
+ type: 'boolean'
305
+ },
306
+ 'x-required': {
307
+ type: 'boolean'
308
+ },
309
+ minLength: {
310
+ type: 'integer'
311
+ },
312
+ maxLength: {
313
+ type: 'integer'
314
+ },
315
+ minimum: {
316
+ type: 'number'
317
+ },
318
+ maximum: {
319
+ type: 'number'
320
+ },
321
+ pattern: {
322
+ type: 'string',
323
+ format: 'regex'
324
+ },
325
+ patternErrorMessage: {
326
+ type: 'string'
327
+ },
328
+ 'x-master': {
329
+ type: 'object',
330
+ properties: {
331
+ id: {
332
+ type: 'string'
333
+ },
334
+ title: {
335
+ type: 'string'
336
+ },
337
+ remoteService: {
338
+ type: 'string',
339
+ description: "L'identifiant du service distant utilisé pour l'enrichissement"
340
+ },
341
+ action: {
342
+ type: 'string',
343
+ description: "L'identifiant de l'action du service distant à utiliser pour l'enrichissement"
344
+ }
345
+ }
346
+ },
347
+ 'x-display': {
348
+ type: 'string'
349
+ },
350
+ enum: {
351
+ type: 'array',
352
+ readOnly: true,
353
+ description: 'This differs from JSON schema. It is not a restriction, just and observation of the values that are present in the dataset.'
354
+ },
355
+ 'x-cardinality': {
356
+ type: 'integer',
357
+ description: 'The number of distinct values for this field',
358
+ readOnly: true
359
+ },
360
+ 'x-transform': {
361
+ type: 'object',
362
+ description: 'Transformation to apply to the field',
363
+ properties: {
364
+ expr: {
365
+ type: 'string'
366
+ },
367
+ examples: {
368
+ type: 'array',
369
+ items: {
370
+ type: 'string'
371
+ }
372
+ },
373
+ type: {
374
+ type: 'string'
375
+ },
376
+ format: {
377
+ type: 'string'
378
+ }
379
+ }
380
+ }
381
+ }
382
+ }
383
+ },
384
+ storage: {
385
+ type: 'object',
386
+ description: 'All storage space info of this dataset',
387
+ properties: {
388
+ size: {
389
+ type: 'integer'
390
+ },
391
+ dataFiles: {
392
+ type: 'array',
393
+ description: 'Le tableau de résultats.',
394
+ items: {
395
+ type: 'object',
396
+ properties: {
397
+ key: {
398
+ type: 'string'
399
+ },
400
+ size: {
401
+ type: 'number'
402
+ },
403
+ name: {
404
+ type: 'string'
405
+ },
406
+ mimetype: {
407
+ type: 'string'
408
+ },
409
+ updatedAt: {
410
+ type: 'string',
411
+ format: 'date-time'
412
+ },
413
+ title: {
414
+ type: 'string'
415
+ },
416
+ url: {
417
+ type: 'string'
418
+ }
419
+ }
420
+ }
421
+ }
422
+ }
423
+ },
424
+ count: {
425
+ type: 'number',
426
+ description: 'The number of rowns'
427
+ }
428
+ }
429
+ }
430
+ }
431
+ }
@@ -1,409 +0,0 @@
1
- {
2
- "$id": "https://github.com/data-fair/catalog-data-fair/catalog-schemas",
3
- "x-exports": [
4
- "types"
5
- ],
6
- "title": "DataFair Catalog",
7
- "type": "object",
8
- "additionalProperties": false,
9
- "required": [
10
- "count",
11
- "results"
12
- ],
13
- "properties": {
14
- "count": {
15
- "type": "number",
16
- "description": "Nombre total de jeux de données"
17
- },
18
- "results": {
19
- "type": "array",
20
- "items": {
21
- "$ref": "#/$defs/DataFairDataset"
22
- }
23
- }
24
- },
25
- "$defs": {
26
- "DataFairDataset": {
27
- "type": "object",
28
- "required": [
29
- "id",
30
- "title"
31
- ],
32
- "properties": {
33
- "id": {
34
- "type": "string",
35
- "description": "Globally unique identifier of the dataset"
36
- },
37
- "href": {
38
- "type": "string",
39
- "description": "Readonly field. The URL where this resource can be fetched"
40
- },
41
- "page": {
42
- "type": "string",
43
- "description": "Readonly field. The URL where this resource can be viewed in the UI"
44
- },
45
- "title": {
46
- "type": "string",
47
- "description": "Short title of the dataset"
48
- },
49
- "description": {
50
- "type": "string",
51
- "description": "Detailed description of the dataset"
52
- },
53
- "keywords": {
54
- "type": "array",
55
- "description": "keywords",
56
- "items": {
57
- "type": "string"
58
- }
59
- },
60
- "frequency": {
61
- "type": "string",
62
- "description": "update frequency",
63
- "enum": [
64
- "",
65
- "triennial",
66
- "biennial",
67
- "annual",
68
- "semiannual",
69
- "threeTimesAYear",
70
- "quarterly",
71
- "bimonthly",
72
- "monthly",
73
- "semimonthly",
74
- "biweekly",
75
- "threeTimesAMonth",
76
- "weekly",
77
- "semiweekly",
78
- "threeTimesAWeek",
79
- "daily",
80
- "continuous",
81
- "irregular"
82
- ]
83
- },
84
- "file": {
85
- "type": "object",
86
- "required": [
87
- "size"
88
- ],
89
- "properties": {
90
- "size": {
91
- "type": "number",
92
- "description": "Size of the file on disk"
93
- }
94
- }
95
- },
96
- "originalFile": {
97
- "type": "object",
98
- "required": [
99
- "size"
100
- ],
101
- "properties": {
102
- "size": {
103
- "type": "number",
104
- "description": "Size of the file on disk"
105
- }
106
- }
107
- },
108
- "image": {
109
- "type": "string",
110
- "description": "URL d'une image, illustration du jeu de données"
111
- },
112
- "schema": {
113
- "type": "array",
114
- "description": "JSON schema properties of the fields",
115
- "items": {
116
- "type": "object",
117
- "required": [
118
- "key"
119
- ],
120
- "properties": {
121
- "key": {
122
- "type": "string",
123
- "readOnly": true,
124
- "x-display": "hidden"
125
- },
126
- "type": {
127
- "type": "string"
128
- },
129
- "format": {
130
- "type": [
131
- "string",
132
- "null"
133
- ]
134
- },
135
- "x-originalName": {
136
- "type": [
137
- "string",
138
- "null"
139
- ]
140
- },
141
- "title": {
142
- "type": "string"
143
- },
144
- "description": {
145
- "type": "string"
146
- },
147
- "icon": {
148
- "type": "string"
149
- },
150
- "x-group": {
151
- "type": "string"
152
- },
153
- "x-refersTo": {
154
- "deprecated": true,
155
- "type": [
156
- "string",
157
- "null"
158
- ]
159
- },
160
- "x-concept": {
161
- "type": "object",
162
- "properties": {
163
- "id": {
164
- "type": "string"
165
- },
166
- "title": {
167
- "type": "string"
168
- },
169
- "primary": {
170
- "type": "boolean"
171
- }
172
- }
173
- },
174
- "x-calculated": {
175
- "type": "boolean"
176
- },
177
- "x-capabilities": {
178
- "type": "object",
179
- "properties": {
180
- "index": {
181
- "type": "boolean",
182
- "default": true,
183
- "x-display": "switch",
184
- "title": "Filtrable sur valeur exacte",
185
- "description": "Désactivez cette capacité si la donnée contient par exemple des textes longs pour lesquels des filtres sur valeurs exactes ont peu de sens."
186
- },
187
- "values": {
188
- "type": "boolean",
189
- "default": true,
190
- "x-display": "switch",
191
- "title": "Triable et groupable",
192
- "description": "Désactivez cette capacité si la donnée contient par exemple des textes longs pour lesquels trier ou grouper par valeur a peu de sens."
193
- },
194
- "textStandard": {
195
- "type": "boolean",
196
- "default": true,
197
- "x-display": "switch",
198
- "title": "Texte analysé pour recherche textuelle",
199
- "description": "Désactivez cette capacité dans le cas d'un code, une url, etc. N'importe quel contenu sur lequel la recherche de mots a peu de sens."
200
- },
201
- "text": {
202
- "type": "boolean",
203
- "default": true,
204
- "x-display": "switch",
205
- "title": "Texte analysé spécifiquement pour la langue française",
206
- "description": "Désactivez cette capacité pour tout contenu qui n'est pas en langue française ou pour lequel la recherche de mots a peu de sens."
207
- },
208
- "textAgg": {
209
- "type": "boolean",
210
- "default": false,
211
- "x-display": "switch",
212
- "title": "Statistiques de mots",
213
- "description": "Activez cette capacité si avez l'intention d'obtenir des statistiques sur les occurrences de mots (par exemple pour construire un nuage de mot)."
214
- },
215
- "wildcard": {
216
- "type": "boolean",
217
- "default": false,
218
- "x-display": "switch",
219
- "title": "Texte filtrable sur groupe de caractères",
220
- "description": "Activez cette capacité si vous avez l'intention de filtrer ce contenu spécifiquement sur une suite de caractères (par exemple si un filtre sur mots entiers ou sur valeur exacte ne convient pas)."
221
- },
222
- "insensitive": {
223
- "type": "boolean",
224
- "default": true,
225
- "x-display": "switch",
226
- "title": "Tri amélioré avec casse et accents",
227
- "description": "Désactivez cette capacité si le contenu ne sera pas utilisé pour du tri ou bien si il ne contient pas de variations avec accents et majuscules."
228
- },
229
- "geoShape": {
230
- "type": "boolean",
231
- "default": true,
232
- "x-display": "switch",
233
- "title": "Formes géométriques complexes",
234
- "description": "Désactivez cette capacité si la donnée ne contient que des géométries basiques de points ou bien si requêter les géométries uniquement à partir de leurs centroïdes est suffisant pour vos besoins."
235
- },
236
- "vtPrepare": {
237
- "type": "boolean",
238
- "default": false,
239
- "x-display": "switch",
240
- "title": "Tuiles vectorielles préparées",
241
- "description": "Activez cette capacité pour précalculer des éléments utiles à la construction de tuiles vectorielles pour le rendu cartographique du jeu de données. Activez cette option si le jeu de données contient des données géogreaphiques denses à afficher en grande quantité. La contre-partie est une augmentation du temps d'indexation et du volume de données indexées."
242
- },
243
- "indexAttachment": {
244
- "type": "boolean",
245
- "default": true,
246
- "x-display": "switch",
247
- "title": "Contenu des pièces jointes analysé pour recherche textuelle",
248
- "description": "Désactivez cette option si vous souhaitez que les pièces jointes soient simplement téléchargeables et que l'extraction de leur contenu textuel pour recherche de mots n'est pas pertinente."
249
- }
250
- }
251
- },
252
- "x-labels": {
253
- "type": "object",
254
- "patternProperties": {
255
- ".*": {
256
- "type": "string"
257
- }
258
- }
259
- },
260
- "x-labelsRestricted": {
261
- "type": "boolean"
262
- },
263
- "readOnly": {
264
- "type": "boolean"
265
- },
266
- "x-required": {
267
- "type": "boolean"
268
- },
269
- "minLength": {
270
- "type": "integer"
271
- },
272
- "maxLength": {
273
- "type": "integer"
274
- },
275
- "minimum": {
276
- "type": "number"
277
- },
278
- "maximum": {
279
- "type": "number"
280
- },
281
- "pattern": {
282
- "type": "string",
283
- "format": "regex"
284
- },
285
- "patternErrorMessage": {
286
- "type": "string"
287
- },
288
- "x-master": {
289
- "type": "object",
290
- "properties": {
291
- "id": {
292
- "type": "string"
293
- },
294
- "title": {
295
- "type": "string"
296
- },
297
- "remoteService": {
298
- "type": "string",
299
- "description": "L'identifiant du service distant utilisé pour l'enrichissement"
300
- },
301
- "action": {
302
- "type": "string",
303
- "description": "L'identifiant de l'action du service distant à utiliser pour l'enrichissement"
304
- }
305
- }
306
- },
307
- "x-display": {
308
- "type": "string"
309
- },
310
- "enum": {
311
- "type": "array",
312
- "readOnly": true,
313
- "description": "This differs from JSON schema. It is not a restriction, just and observation of the values that are present in the dataset."
314
- },
315
- "x-cardinality": {
316
- "type": "integer",
317
- "description": "The number of distinct values for this field",
318
- "readOnly": true
319
- },
320
- "x-transform": {
321
- "type": "object",
322
- "description": "Transformation to apply to the field",
323
- "properties": {
324
- "expr": {
325
- "type": "string"
326
- },
327
- "examples": {
328
- "type": "array",
329
- "items": {
330
- "type": "string"
331
- }
332
- },
333
- "type": {
334
- "type": "string"
335
- },
336
- "format": {
337
- "type": "string"
338
- }
339
- }
340
- }
341
- }
342
- }
343
- },
344
- "storage": {
345
- "type": "object",
346
- "description": "All storage space info of this dataset",
347
- "properties": {
348
- "size": {
349
- "type": "integer"
350
- },
351
- "dataFiles": {
352
- "type": "array",
353
- "description": "Le tableau de résultats.",
354
- "items": {
355
- "type": "object",
356
- "properties": {
357
- "key": {
358
- "type": "string"
359
- },
360
- "size": {
361
- "type": "number"
362
- },
363
- "name": {
364
- "type": "string"
365
- },
366
- "mimetype": {
367
- "type": "string"
368
- },
369
- "updatedAt": {
370
- "type": "string",
371
- "format": "date-time"
372
- },
373
- "title": {
374
- "type": "string"
375
- },
376
- "url": {
377
- "type": "string"
378
- }
379
- }
380
- }
381
- }
382
- }
383
- },
384
- "count": {
385
- "type": "number",
386
- "description": "The number of rowns"
387
- },
388
- "license": {
389
- "type": "object",
390
- "additionalProperties": false,
391
- "required": [
392
- "title",
393
- "href"
394
- ],
395
- "properties": {
396
- "title": {
397
- "type": "string",
398
- "description": "Short title for the license"
399
- },
400
- "href": {
401
- "type": "string",
402
- "description": "The URL where the license can be read"
403
- }
404
- }
405
- }
406
- }
407
- }
408
- }
409
- }