@elastic/ems-client 8.5.0 → 8.5.2
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/.buildkite/build.sh +0 -0
- package/.buildkite/pipeline.yml +3 -1
- package/.github/CODEOWNERS +2 -0
- package/.husky/pre-commit +1 -0
- package/.nvmrc +1 -1
- package/CHANGELOG.md +19 -2
- package/CONTRIBUTING.md +4 -5
- package/docs/openapi/Makefile +35 -0
- package/docs/openapi/README.md +41 -0
- package/docs/openapi/components/attribution.yaml +19 -0
- package/docs/openapi/components/examples/file_service_200.json +1 -0
- package/docs/openapi/components/examples/file_service_404.xml +1 -0
- package/docs/openapi/components/examples/tile_service_200.json +1 -0
- package/docs/openapi/components/examples/tile_service_404.html +10 -0
- package/docs/openapi/ems_file_service/bundled.json +533 -0
- package/docs/openapi/ems_file_service/bundled.yaml +347 -0
- package/docs/openapi/ems_file_service/entrypoint.yaml +152 -0
- package/docs/openapi/ems_tile_service/bundled.json +307 -0
- package/docs/openapi/ems_tile_service/bundled.yaml +195 -0
- package/docs/openapi/ems_tile_service/entrypoint.yaml +92 -0
- package/eslint.config.mjs +25 -0
- package/package.json +29 -29
- package/src/ems_client.ts +10 -2
- package/src/tms_service.ts +18 -12
- package/target/ems_client.d.ts +17 -16
- package/target/ems_client.js +318 -0
- package/target/ems_service.js +47 -0
- package/target/file_layer.d.ts +1 -1
- package/target/file_layer.js +176 -0
- package/target/index.js +16 -0
- package/target/node/ems_client.js +19 -13
- package/target/node/ems_service.js +8 -8
- package/target/node/file_layer.js +12 -13
- package/target/node/tms_service.js +43 -36
- package/target/node/utils.js +1 -1
- package/target/tms_service.d.ts +5 -5
- package/target/tms_service.js +409 -0
- package/target/utils.d.ts +3 -3
- package/target/utils.js +86 -0
- package/target/web/ems_client.js +32 -28
- package/target/web/ems_service.js +8 -9
- package/target/web/file_layer.js +23 -25
- package/target/web/tms_service.js +50 -55
- package/target/web/utils.js +1 -1
- package/test/__snapshots__/ems_client.test.ts.snap +24 -24
- package/test/ems_client_util.ts +1 -1
- package/.eslintignore +0 -1
- package/.eslintrc +0 -18
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
{
|
|
2
|
+
"openapi": "3.0.1",
|
|
3
|
+
"info": {
|
|
4
|
+
"title": "Elastic Maps File Service",
|
|
5
|
+
"description": "OpenAPI schema for the Elastic Maps File Service manifest endpoint",
|
|
6
|
+
"version": "0.1",
|
|
7
|
+
"contact": {
|
|
8
|
+
"name": "Presentation Team"
|
|
9
|
+
},
|
|
10
|
+
"license": {
|
|
11
|
+
"name": "Elastic License 2.0",
|
|
12
|
+
"url": "https://www.elastic.co/licensing/elastic-license"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"servers": [
|
|
16
|
+
{
|
|
17
|
+
"url": "https://vector.maps.elastic.co",
|
|
18
|
+
"description": "Production"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"url": "https://storage.googleapis.com/elastic-bekitzur-emsfiles-vector-dev",
|
|
22
|
+
"description": "Staging"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"security": [],
|
|
26
|
+
"tags": [
|
|
27
|
+
{
|
|
28
|
+
"name": "ems",
|
|
29
|
+
"description": "Elastic Maps Service."
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"paths": {
|
|
33
|
+
"/latest/manifest": {
|
|
34
|
+
"get": {
|
|
35
|
+
"operationId": "getFileManifest",
|
|
36
|
+
"tags": [
|
|
37
|
+
"ems"
|
|
38
|
+
],
|
|
39
|
+
"summary": "Manifest of the EMS File Service",
|
|
40
|
+
"description": "Describes the layers available with formats and other metadata",
|
|
41
|
+
"parameters": [],
|
|
42
|
+
"responses": {
|
|
43
|
+
"200": {
|
|
44
|
+
"description": "Manifest is returned",
|
|
45
|
+
"content": {
|
|
46
|
+
"application/json": {
|
|
47
|
+
"example": {
|
|
48
|
+
"version": "2023-10-31",
|
|
49
|
+
"layers": [
|
|
50
|
+
{
|
|
51
|
+
"layer_id": "world_countries",
|
|
52
|
+
"created_at": "2020-10-28T16:16:08.720286",
|
|
53
|
+
"attribution": [
|
|
54
|
+
{
|
|
55
|
+
"label": {
|
|
56
|
+
"en": "Made with NaturalEarth"
|
|
57
|
+
},
|
|
58
|
+
"url": {
|
|
59
|
+
"en": "http://www.naturalearthdata.com/about/terms-of-use"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"label": {
|
|
64
|
+
"en": "OpenStreetMap contributors"
|
|
65
|
+
},
|
|
66
|
+
"url": {
|
|
67
|
+
"en": "https://www.openstreetmap.org/copyright"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"label": {
|
|
72
|
+
"en": "Elastic Maps Service"
|
|
73
|
+
},
|
|
74
|
+
"url": {
|
|
75
|
+
"en": "https://www.elastic.co/elastic-maps-service"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"formats": [
|
|
80
|
+
{
|
|
81
|
+
"type": "topojson",
|
|
82
|
+
"url": "/files/world_countries_v7.topo.json",
|
|
83
|
+
"legacy_default": true,
|
|
84
|
+
"meta": {
|
|
85
|
+
"feature_collection_path": "data"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"type": "geojson",
|
|
90
|
+
"url": "/files/world_countries_v7.geo.json",
|
|
91
|
+
"legacy_default": false
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"fields": [
|
|
95
|
+
{
|
|
96
|
+
"type": "id",
|
|
97
|
+
"id": "iso2",
|
|
98
|
+
"label": {
|
|
99
|
+
"en": "ISO 3166-1 alpha-2 code",
|
|
100
|
+
"af": "landkode (ISO 3166-1 alpha-2)",
|
|
101
|
+
"ar": "أيزو 3166-1 حرفي-2"
|
|
102
|
+
},
|
|
103
|
+
"regex": "^[A-Z]{2}$",
|
|
104
|
+
"alias": [
|
|
105
|
+
"(geo\\.){0,}country_iso_code$",
|
|
106
|
+
"(country|countries)"
|
|
107
|
+
],
|
|
108
|
+
"values": [
|
|
109
|
+
"AD",
|
|
110
|
+
"AE",
|
|
111
|
+
"ZW"
|
|
112
|
+
]
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"type": "id",
|
|
116
|
+
"id": "iso3",
|
|
117
|
+
"label": {
|
|
118
|
+
"en": "ISO 3166-1 alpha-3 code",
|
|
119
|
+
"af": "landkode (ISO 3166-1 alpha-3)",
|
|
120
|
+
"ar": "أيزو 3166-1 حرفي-3"
|
|
121
|
+
},
|
|
122
|
+
"regex": "^[A-Z]{3}$",
|
|
123
|
+
"values": [
|
|
124
|
+
"AND",
|
|
125
|
+
"ARE",
|
|
126
|
+
"ZWE"
|
|
127
|
+
]
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"type": "id",
|
|
131
|
+
"id": "iso_numeric",
|
|
132
|
+
"label": {
|
|
133
|
+
"en": "ISO 3166-1 numeric code",
|
|
134
|
+
"af": "landkode (ISO 3166-1 numeries)",
|
|
135
|
+
"ar": "رمز إيزو الرقمي 3166-1"
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"type": "property",
|
|
140
|
+
"id": "name",
|
|
141
|
+
"label": {
|
|
142
|
+
"en": "name",
|
|
143
|
+
"am": "ስም"
|
|
144
|
+
},
|
|
145
|
+
"alias": [
|
|
146
|
+
"(country|countries)"
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
],
|
|
150
|
+
"legacy_ids": [
|
|
151
|
+
"World Countries"
|
|
152
|
+
],
|
|
153
|
+
"layer_name": {
|
|
154
|
+
"en": "World Countries",
|
|
155
|
+
"zh-tw": "國家"
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"layer_id": "administrative_regions_lvl2",
|
|
160
|
+
"created_at": "2020-07-06T22:19:49.290894",
|
|
161
|
+
"attribution": [
|
|
162
|
+
{
|
|
163
|
+
"label": {
|
|
164
|
+
"en": "Made with NaturalEarth"
|
|
165
|
+
},
|
|
166
|
+
"url": {
|
|
167
|
+
"en": "http://www.naturalearthdata.com/about/terms-of-use"
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"label": {
|
|
172
|
+
"en": "OpenStreetMap contributors"
|
|
173
|
+
},
|
|
174
|
+
"url": {
|
|
175
|
+
"en": "https://www.openstreetmap.org/copyright"
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"label": {
|
|
180
|
+
"en": "Elastic Maps Service"
|
|
181
|
+
},
|
|
182
|
+
"url": {
|
|
183
|
+
"en": "https://www.elastic.co/elastic-maps-service"
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
],
|
|
187
|
+
"formats": [
|
|
188
|
+
{
|
|
189
|
+
"type": "topojson",
|
|
190
|
+
"url": "/files/admin_regions_lvl2_v2.topo.json",
|
|
191
|
+
"legacy_default": true,
|
|
192
|
+
"meta": {
|
|
193
|
+
"feature_collection_path": "data"
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"type": "geojson",
|
|
198
|
+
"url": "/files/admin_regions_lvl2_v2.geo.json",
|
|
199
|
+
"legacy_default": false
|
|
200
|
+
}
|
|
201
|
+
],
|
|
202
|
+
"fields": [
|
|
203
|
+
{
|
|
204
|
+
"type": "id",
|
|
205
|
+
"id": "region_iso_code",
|
|
206
|
+
"label": {
|
|
207
|
+
"en": "Region ISO code"
|
|
208
|
+
},
|
|
209
|
+
"regex": "^[A-Z]{2}-[A-Z0-9]{1,3}~?$",
|
|
210
|
+
"alias": [
|
|
211
|
+
"(geo\\.){0,}region_iso_code"
|
|
212
|
+
],
|
|
213
|
+
"values": [
|
|
214
|
+
"AD-02",
|
|
215
|
+
"AD-03",
|
|
216
|
+
"AD-04"
|
|
217
|
+
]
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"type": "property",
|
|
221
|
+
"id": "region_name",
|
|
222
|
+
"label": {
|
|
223
|
+
"en": "Region name"
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"type": "property",
|
|
228
|
+
"id": "country_iso2_code",
|
|
229
|
+
"label": {
|
|
230
|
+
"en": "Country ISO2 code"
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"type": "property",
|
|
235
|
+
"id": "country_iso3_code",
|
|
236
|
+
"label": {
|
|
237
|
+
"en": "Country ISO3 code"
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"type": "property",
|
|
242
|
+
"id": "country_name",
|
|
243
|
+
"label": {
|
|
244
|
+
"en": "Country name"
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
],
|
|
248
|
+
"legacy_ids": [
|
|
249
|
+
"Administrative regions"
|
|
250
|
+
],
|
|
251
|
+
"layer_name": {
|
|
252
|
+
"en": "Administrative regions",
|
|
253
|
+
"zh-sg": "行政领土实体",
|
|
254
|
+
"zh-tw": "行政領土實體"
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"layer_id": "albania_counties",
|
|
259
|
+
"created_at": "2019-08-06T22:16:16.377Z",
|
|
260
|
+
"attribution": [
|
|
261
|
+
{
|
|
262
|
+
"label": {
|
|
263
|
+
"en": "OpenStreetMap contributors"
|
|
264
|
+
},
|
|
265
|
+
"url": {
|
|
266
|
+
"en": "https://www.openstreetmap.org/copyright"
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"label": {
|
|
271
|
+
"en": "Elastic Maps Service"
|
|
272
|
+
},
|
|
273
|
+
"url": {
|
|
274
|
+
"en": "https://www.elastic.co/elastic-maps-service"
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
],
|
|
278
|
+
"formats": [
|
|
279
|
+
{
|
|
280
|
+
"type": "geojson",
|
|
281
|
+
"url": "/files/albania_counties_v1.geo.json",
|
|
282
|
+
"legacy_default": true
|
|
283
|
+
}
|
|
284
|
+
],
|
|
285
|
+
"fields": [
|
|
286
|
+
{
|
|
287
|
+
"type": "id",
|
|
288
|
+
"id": "iso_3166_2",
|
|
289
|
+
"label": {
|
|
290
|
+
"en": "ISO 3166-2 code",
|
|
291
|
+
"af": "ISO 3166-2",
|
|
292
|
+
"ar": "أيزو 3166-2"
|
|
293
|
+
},
|
|
294
|
+
"values": [
|
|
295
|
+
"AL-05",
|
|
296
|
+
"AL-01",
|
|
297
|
+
"AL-12"
|
|
298
|
+
]
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"type": "property",
|
|
302
|
+
"id": "label_en",
|
|
303
|
+
"label": {
|
|
304
|
+
"en": "name (en)",
|
|
305
|
+
"am": "ስም (en)",
|
|
306
|
+
"ar": "الاسم (en)"
|
|
307
|
+
}
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"type": "property",
|
|
311
|
+
"id": "label_sq",
|
|
312
|
+
"label": {
|
|
313
|
+
"en": "name (sq)",
|
|
314
|
+
"am": "ስም (sq)",
|
|
315
|
+
"ar": "الاسم (sq)"
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
],
|
|
319
|
+
"legacy_ids": [
|
|
320
|
+
"Albania Counties"
|
|
321
|
+
],
|
|
322
|
+
"layer_name": {
|
|
323
|
+
"en": "Albania Counties",
|
|
324
|
+
"zh-sg": "阿尔巴尼亚行政区划",
|
|
325
|
+
"zh-tw": "阿爾巴尼亞行政區劃"
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
]
|
|
329
|
+
},
|
|
330
|
+
"schema": {
|
|
331
|
+
"type": "object",
|
|
332
|
+
"properties": {
|
|
333
|
+
"version": {
|
|
334
|
+
"type": "string",
|
|
335
|
+
"description": "Version of the API as a date in YYYY-MM-DD format"
|
|
336
|
+
},
|
|
337
|
+
"layers": {
|
|
338
|
+
"type": "array",
|
|
339
|
+
"description": "An array of layer descriptions offered by the service",
|
|
340
|
+
"minItems": 1,
|
|
341
|
+
"items": {
|
|
342
|
+
"type": "object",
|
|
343
|
+
"required": [
|
|
344
|
+
"layer_id",
|
|
345
|
+
"created_at",
|
|
346
|
+
"attribution",
|
|
347
|
+
"formats",
|
|
348
|
+
"fields",
|
|
349
|
+
"legacy_ids",
|
|
350
|
+
"layer_name"
|
|
351
|
+
],
|
|
352
|
+
"properties": {
|
|
353
|
+
"layer_id": {
|
|
354
|
+
"type": "string",
|
|
355
|
+
"description": "Identifier of the layers"
|
|
356
|
+
},
|
|
357
|
+
"created_at": {
|
|
358
|
+
"type": "string",
|
|
359
|
+
"description": "Date of the creation of the layer"
|
|
360
|
+
},
|
|
361
|
+
"attribution": {
|
|
362
|
+
"$ref": "#/components/schemas/attribution"
|
|
363
|
+
},
|
|
364
|
+
"formats": {
|
|
365
|
+
"type": "array",
|
|
366
|
+
"description": "The dataset can be offered in one or more different formats",
|
|
367
|
+
"minItems": 1,
|
|
368
|
+
"items": {
|
|
369
|
+
"type": "object",
|
|
370
|
+
"required": [
|
|
371
|
+
"type",
|
|
372
|
+
"url"
|
|
373
|
+
],
|
|
374
|
+
"properties": {
|
|
375
|
+
"type": {
|
|
376
|
+
"type": "string",
|
|
377
|
+
"description": "Data layers can be stored in the `topojson` or `geojson` format",
|
|
378
|
+
"enum": [
|
|
379
|
+
"topojson",
|
|
380
|
+
"geojson"
|
|
381
|
+
]
|
|
382
|
+
},
|
|
383
|
+
"url": {
|
|
384
|
+
"type": "string",
|
|
385
|
+
"description": "The relative path to the data"
|
|
386
|
+
},
|
|
387
|
+
"legacy_default": {
|
|
388
|
+
"type": "boolean",
|
|
389
|
+
"description": "Is this the default format to offer?"
|
|
390
|
+
},
|
|
391
|
+
"meta": {
|
|
392
|
+
"type": "object",
|
|
393
|
+
"description": "Additional metadata needed to parse the file",
|
|
394
|
+
"additionalProperties": true
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
},
|
|
399
|
+
"fields": {
|
|
400
|
+
"type": "array",
|
|
401
|
+
"description": "Metadata of the fields available on the dataset",
|
|
402
|
+
"minItems": 1,
|
|
403
|
+
"items": {
|
|
404
|
+
"type": "object",
|
|
405
|
+
"required": [
|
|
406
|
+
"type",
|
|
407
|
+
"id",
|
|
408
|
+
"label"
|
|
409
|
+
],
|
|
410
|
+
"properties": {
|
|
411
|
+
"type": {
|
|
412
|
+
"type": "string",
|
|
413
|
+
"description": "Fields can be identifiers to join with other datasets or data properties",
|
|
414
|
+
"enum": [
|
|
415
|
+
"id",
|
|
416
|
+
"property"
|
|
417
|
+
]
|
|
418
|
+
},
|
|
419
|
+
"id": {
|
|
420
|
+
"type": "string",
|
|
421
|
+
"description": "A unique identifier for the dataset"
|
|
422
|
+
},
|
|
423
|
+
"label": {
|
|
424
|
+
"type": "object",
|
|
425
|
+
"description": "A name for the dataset in different languages",
|
|
426
|
+
"additionalProperties": true,
|
|
427
|
+
"required": [
|
|
428
|
+
"en"
|
|
429
|
+
],
|
|
430
|
+
"properties": {
|
|
431
|
+
"en": {
|
|
432
|
+
"type": "string"
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
},
|
|
436
|
+
"regex": {
|
|
437
|
+
"type": "string",
|
|
438
|
+
"description": "A regex that matches the values of the property"
|
|
439
|
+
},
|
|
440
|
+
"values": {
|
|
441
|
+
"type": "array",
|
|
442
|
+
"description": "The actual values of this property",
|
|
443
|
+
"items": {
|
|
444
|
+
"type": "string"
|
|
445
|
+
}
|
|
446
|
+
},
|
|
447
|
+
"alias": {
|
|
448
|
+
"type": "array",
|
|
449
|
+
"description": "Alternative names for this property",
|
|
450
|
+
"items": {
|
|
451
|
+
"type": "string"
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
},
|
|
457
|
+
"legacy_ids": {
|
|
458
|
+
"type": "array",
|
|
459
|
+
"description": "Identifier used by older versions of the spec",
|
|
460
|
+
"items": {
|
|
461
|
+
"type": "string"
|
|
462
|
+
}
|
|
463
|
+
},
|
|
464
|
+
"layer_name": {
|
|
465
|
+
"type": "object",
|
|
466
|
+
"description": "A human-readable descriptor of the dataset in different languages",
|
|
467
|
+
"additionalProperties": true,
|
|
468
|
+
"required": [
|
|
469
|
+
"en"
|
|
470
|
+
],
|
|
471
|
+
"properties": {
|
|
472
|
+
"en": {
|
|
473
|
+
"type": "string"
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
},
|
|
485
|
+
"404": {
|
|
486
|
+
"description": "Manifest not found",
|
|
487
|
+
"content": {
|
|
488
|
+
"application/xml": {
|
|
489
|
+
"example": "<?xml version='1.0' encoding='UTF-8'?><Error><Code>NoSuchKey</Code><Message>The specified key does not exist.</Message></Error>\n",
|
|
490
|
+
"schema": {
|
|
491
|
+
"type": "string"
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
},
|
|
500
|
+
"components": {
|
|
501
|
+
"schemas": {
|
|
502
|
+
"attribution": {
|
|
503
|
+
"type": "array",
|
|
504
|
+
"description": "The attribution of this data",
|
|
505
|
+
"minItems": 1,
|
|
506
|
+
"items": {
|
|
507
|
+
"type": "object",
|
|
508
|
+
"properties": {
|
|
509
|
+
"label": {
|
|
510
|
+
"type": "object",
|
|
511
|
+
"properties": {
|
|
512
|
+
"en": {
|
|
513
|
+
"type": "string",
|
|
514
|
+
"description": "English attribution label"
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
},
|
|
518
|
+
"url": {
|
|
519
|
+
"type": "object",
|
|
520
|
+
"properties": {
|
|
521
|
+
"en": {
|
|
522
|
+
"type": "string",
|
|
523
|
+
"description": "Attribution details URL",
|
|
524
|
+
"format": "URL"
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
}
|