@gruncellka/porto-data 0.1.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.
@@ -0,0 +1,122 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/gruncellka/porto-data/refs/heads/main/porto_data/schemas/products.schema.json",
4
+ "title": "Products Schema",
5
+ "description": "Schema for postal products definitions",
6
+ "type": "object",
7
+ "required": [
8
+ "file_type",
9
+ "unit",
10
+ "products"
11
+ ],
12
+ "properties": {
13
+ "$schema": {
14
+ "type": "string",
15
+ "format": "uri",
16
+ "description": "JSON Schema URI reference"
17
+ },
18
+ "file_type": {
19
+ "type": "string",
20
+ "const": "products",
21
+ "description": "File type identifier"
22
+ },
23
+ "unit": {
24
+ "type": "object",
25
+ "required": [
26
+ "dimension",
27
+ "weight"
28
+ ],
29
+ "properties": {
30
+ "dimension": {
31
+ "type": "string",
32
+ "const": "mm"
33
+ },
34
+ "weight": {
35
+ "type": "string",
36
+ "const": "g"
37
+ }
38
+ },
39
+ "additionalProperties": false
40
+ },
41
+ "products": {
42
+ "type": "array",
43
+ "minItems": 1,
44
+ "items": {
45
+ "type": "object",
46
+ "required": [
47
+ "id",
48
+ "name",
49
+ "dimension_ids",
50
+ "supported_zones",
51
+ "weight_tier",
52
+ "effective_from",
53
+ "effective_to"
54
+ ],
55
+ "properties": {
56
+ "id": {
57
+ "type": "string",
58
+ "pattern": "^[a-z_]+$",
59
+ "description": "Semantic English product ID"
60
+ },
61
+ "name": {
62
+ "type": "string",
63
+ "minLength": 1,
64
+ "description": "Official German product name"
65
+ },
66
+ "dimension_ids": {
67
+ "type": "array",
68
+ "minItems": 1,
69
+ "items": {
70
+ "type": "string",
71
+ "enum": [
72
+ "DL",
73
+ "C6",
74
+ "C5",
75
+ "C4",
76
+ "B4"
77
+ ]
78
+ },
79
+ "description": "Supported dimension IDs"
80
+ },
81
+ "supported_zones": {
82
+ "type": "array",
83
+ "minItems": 1,
84
+ "items": {
85
+ "type": "string",
86
+ "enum": [
87
+ "domestic",
88
+ "zone_1_eu",
89
+ "zone_2_europe",
90
+ "world"
91
+ ]
92
+ },
93
+ "description": "Zones where this product is available"
94
+ },
95
+ "weight_tier": {
96
+ "type": "string",
97
+ "pattern": "^W[0-9]+$",
98
+ "description": "Weight tier ID"
99
+ },
100
+ "effective_from": {
101
+ "type": [
102
+ "string",
103
+ "null"
104
+ ],
105
+ "format": "date",
106
+ "description": "Product effective start date"
107
+ },
108
+ "effective_to": {
109
+ "type": [
110
+ "string",
111
+ "null"
112
+ ],
113
+ "format": "date",
114
+ "description": "Product effective end date"
115
+ }
116
+ },
117
+ "additionalProperties": false
118
+ }
119
+ }
120
+ },
121
+ "additionalProperties": false
122
+ }
@@ -0,0 +1,369 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/gruncellka/porto-data/refs/heads/main/porto_data/schemas/restrictions.schema.json",
4
+ "title": "Restrictions Schema",
5
+ "description": "Schema for postal restrictions and compliance information",
6
+ "type": "object",
7
+ "required": [
8
+ "file_type",
9
+ "unit",
10
+ "sanctions_information",
11
+ "denied_party_screening",
12
+ "sources",
13
+ "disclaimer",
14
+ "restrictions",
15
+ "compliance_frameworks"
16
+ ],
17
+ "properties": {
18
+ "$schema": {
19
+ "type": "string",
20
+ "format": "uri",
21
+ "description": "JSON Schema URI reference"
22
+ },
23
+ "file_type": {
24
+ "type": "string",
25
+ "const": "restrictions",
26
+ "description": "File type identifier"
27
+ },
28
+ "unit": {
29
+ "type": "object",
30
+ "required": [
31
+ "country_code",
32
+ "date"
33
+ ],
34
+ "properties": {
35
+ "country_code": {
36
+ "type": "string",
37
+ "const": "ISO 3166-1 alpha-2"
38
+ },
39
+ "date": {
40
+ "type": "string",
41
+ "const": "ISO 8601"
42
+ }
43
+ },
44
+ "additionalProperties": false
45
+ },
46
+ "sanctions_information": {
47
+ "type": "object",
48
+ "required": [
49
+ "eu_sanctions",
50
+ "un_sanctions",
51
+ "german_national"
52
+ ],
53
+ "properties": {
54
+ "eu_sanctions": {
55
+ "type": "object",
56
+ "required": [
57
+ "description",
58
+ "primary_targets",
59
+ "source",
60
+ "url"
61
+ ],
62
+ "properties": {
63
+ "description": {
64
+ "type": "string"
65
+ },
66
+ "primary_targets": {
67
+ "type": "array",
68
+ "items": {
69
+ "type": "string"
70
+ }
71
+ },
72
+ "source": {
73
+ "type": "string"
74
+ },
75
+ "url": {
76
+ "type": "string",
77
+ "format": "uri"
78
+ }
79
+ },
80
+ "additionalProperties": false
81
+ },
82
+ "un_sanctions": {
83
+ "type": "object",
84
+ "required": [
85
+ "description",
86
+ "targets"
87
+ ],
88
+ "properties": {
89
+ "description": {
90
+ "type": "string"
91
+ },
92
+ "targets": {
93
+ "type": "array",
94
+ "items": {
95
+ "type": "string"
96
+ }
97
+ }
98
+ },
99
+ "additionalProperties": false
100
+ },
101
+ "german_national": {
102
+ "type": "object",
103
+ "required": [
104
+ "description",
105
+ "notes"
106
+ ],
107
+ "properties": {
108
+ "description": {
109
+ "type": "string"
110
+ },
111
+ "notes": {
112
+ "type": "string"
113
+ }
114
+ },
115
+ "additionalProperties": false
116
+ }
117
+ },
118
+ "additionalProperties": false
119
+ },
120
+ "denied_party_screening": {
121
+ "type": "object",
122
+ "required": [
123
+ "description",
124
+ "details",
125
+ "compliance"
126
+ ],
127
+ "properties": {
128
+ "description": {
129
+ "type": "string"
130
+ },
131
+ "details": {
132
+ "type": "string"
133
+ },
134
+ "compliance": {
135
+ "type": "array",
136
+ "items": {
137
+ "type": "string"
138
+ }
139
+ }
140
+ },
141
+ "additionalProperties": false
142
+ },
143
+ "sources": {
144
+ "type": "array",
145
+ "items": {
146
+ "type": "string"
147
+ },
148
+ "description": "List of information sources"
149
+ },
150
+ "disclaimer": {
151
+ "type": "string",
152
+ "description": "Legal disclaimer text"
153
+ },
154
+ "restrictions": {
155
+ "type": "array",
156
+ "items": {
157
+ "type": "object",
158
+ "required": [
159
+ "id",
160
+ "country_code",
161
+ "status",
162
+ "reason",
163
+ "notes",
164
+ "effective_from"
165
+ ],
166
+ "properties": {
167
+ "id": {
168
+ "type": "string"
169
+ },
170
+ "country_code": {
171
+ "type": "string",
172
+ "pattern": "^[A-Z]{2}$"
173
+ },
174
+ "region_code": {
175
+ "type": "string"
176
+ },
177
+ "claimed_by": {
178
+ "type": "string",
179
+ "pattern": "^[A-Z]{2}$"
180
+ },
181
+ "occupied_by": {
182
+ "type": "string",
183
+ "pattern": "^[A-Z]{2}$"
184
+ },
185
+ "disputed_by": {
186
+ "type": "string",
187
+ "pattern": "^[A-Za-z_]+$"
188
+ },
189
+ "status": {
190
+ "type": "string",
191
+ "enum": [
192
+ "restricted",
193
+ "limited",
194
+ "suspended",
195
+ "prohibited",
196
+ "severely_restricted",
197
+ "operational"
198
+ ]
199
+ },
200
+ "reason": {
201
+ "type": "string"
202
+ },
203
+ "restrictions": {
204
+ "type": "string"
205
+ },
206
+ "notes": {
207
+ "type": "string"
208
+ },
209
+ "areas": {
210
+ "type": "object",
211
+ "additionalProperties": {
212
+ "type": "string"
213
+ }
214
+ },
215
+ "zone_reference": {
216
+ "type": [
217
+ "string",
218
+ "null"
219
+ ]
220
+ },
221
+ "entity_type": {
222
+ "type": "string",
223
+ "enum": [
224
+ "country",
225
+ "territory",
226
+ "occupied_territory",
227
+ "disputed_territory"
228
+ ]
229
+ },
230
+ "framework_id": {
231
+ "type": "string"
232
+ },
233
+ "effective_from": {
234
+ "type": [
235
+ "string",
236
+ "null"
237
+ ],
238
+ "format": "date"
239
+ },
240
+ "effective_to": {
241
+ "type": [
242
+ "string",
243
+ "null"
244
+ ],
245
+ "format": "date"
246
+ },
247
+ "effective_partial": {
248
+ "type": "boolean"
249
+ },
250
+ "legal_reference": {
251
+ "type": [
252
+ "string",
253
+ "null"
254
+ ],
255
+ "format": "uri"
256
+ }
257
+ },
258
+ "additionalProperties": false
259
+ }
260
+ },
261
+ "compliance_frameworks": {
262
+ "type": "object",
263
+ "patternProperties": {
264
+ "^[A-Z0-9_]+$": {
265
+ "type": "object",
266
+ "required": [
267
+ "id",
268
+ "label",
269
+ "description",
270
+ "type",
271
+ "jurisdiction",
272
+ "applies_to",
273
+ "effective_from",
274
+ "effective_to"
275
+ ],
276
+ "properties": {
277
+ "id": {
278
+ "type": "string"
279
+ },
280
+ "label": {
281
+ "type": "string"
282
+ },
283
+ "description": {
284
+ "type": "string"
285
+ },
286
+ "type": {
287
+ "type": "string",
288
+ "enum": [
289
+ "eu_sanctions",
290
+ "un_sanctions",
291
+ "operational_political",
292
+ "operational_infrastructure",
293
+ "operational_conflict",
294
+ "mixed_sanctions",
295
+ "german_law"
296
+ ]
297
+ },
298
+ "jurisdiction": {
299
+ "type": "array",
300
+ "items": {
301
+ "type": "string",
302
+ "enum": [
303
+ "EU",
304
+ "UN",
305
+ "DP",
306
+ "DE",
307
+ "US"
308
+ ]
309
+ }
310
+ },
311
+ "applies_to": {
312
+ "type": "array",
313
+ "items": {
314
+ "type": "string",
315
+ "pattern": "^[A-Z]{2}$|^ALL$"
316
+ }
317
+ },
318
+ "regions": {
319
+ "type": "array",
320
+ "items": {
321
+ "type": "object",
322
+ "required": [
323
+ "code",
324
+ "name"
325
+ ],
326
+ "properties": {
327
+ "code": {
328
+ "type": "string"
329
+ },
330
+ "name": {
331
+ "type": "string"
332
+ }
333
+ },
334
+ "additionalProperties": false
335
+ }
336
+ },
337
+ "operational_note": {
338
+ "type": "string"
339
+ },
340
+ "legal_reference": {
341
+ "type": [
342
+ "string",
343
+ "null"
344
+ ],
345
+ "format": "uri"
346
+ },
347
+ "effective_from": {
348
+ "type": [
349
+ "string",
350
+ "null"
351
+ ],
352
+ "format": "date"
353
+ },
354
+ "effective_to": {
355
+ "type": [
356
+ "string",
357
+ "null"
358
+ ],
359
+ "format": "date"
360
+ }
361
+ },
362
+ "additionalProperties": false
363
+ }
364
+ },
365
+ "additionalProperties": false
366
+ }
367
+ },
368
+ "additionalProperties": false
369
+ }
@@ -0,0 +1,77 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/gruncellka/porto-data/refs/heads/main/porto_data/schemas/services.schema.json",
4
+ "title": "Services Schema",
5
+ "description": "Schema for Deutsche Post services definitions",
6
+ "type": "object",
7
+ "required": [
8
+ "file_type",
9
+ "services"
10
+ ],
11
+ "properties": {
12
+ "$schema": {
13
+ "type": "string",
14
+ "format": "uri",
15
+ "description": "JSON Schema URI reference"
16
+ },
17
+ "file_type": {
18
+ "type": "string",
19
+ "const": "services",
20
+ "description": "File type identifier"
21
+ },
22
+ "services": {
23
+ "type": "array",
24
+ "minItems": 1,
25
+ "items": {
26
+ "type": "object",
27
+ "required": [
28
+ "id",
29
+ "name",
30
+ "description",
31
+ "features"
32
+ ],
33
+ "properties": {
34
+ "id": {
35
+ "type": "string",
36
+ "pattern": "^[a-z_]+$",
37
+ "description": "Service ID"
38
+ },
39
+ "name": {
40
+ "type": "string",
41
+ "minLength": 1,
42
+ "description": "German service name"
43
+ },
44
+ "name_en": {
45
+ "type": "string",
46
+ "minLength": 1,
47
+ "description": "English service name (optional)"
48
+ },
49
+ "description": {
50
+ "type": "string",
51
+ "minLength": 1,
52
+ "description": "Service description"
53
+ },
54
+ "features": {
55
+ "type": "array",
56
+ "minItems": 1,
57
+ "items": {
58
+ "type": "string",
59
+ "pattern": "^[a-z_]+$",
60
+ "description": "Feature ID reference"
61
+ },
62
+ "description": "List of feature IDs this service provides"
63
+ },
64
+ "source_id": {
65
+ "type": [
66
+ "string",
67
+ "null"
68
+ ],
69
+ "description": "Deutsche Post PPL service identifier (note: services in PPL are typically composite products, not standalone IDs)"
70
+ }
71
+ },
72
+ "additionalProperties": false
73
+ }
74
+ }
75
+ },
76
+ "additionalProperties": false
77
+ }
@@ -0,0 +1,70 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/gruncellka/porto-data/refs/heads/main/porto_data/schemas/weight_tiers.schema.json",
4
+ "title": "Weight Tiers Schema",
5
+ "description": "Schema for weight tier definitions",
6
+ "type": "object",
7
+ "required": [
8
+ "file_type",
9
+ "unit",
10
+ "weight_tiers"
11
+ ],
12
+ "properties": {
13
+ "$schema": {
14
+ "type": "string",
15
+ "format": "uri",
16
+ "description": "JSON Schema URI reference"
17
+ },
18
+ "file_type": {
19
+ "type": "string",
20
+ "const": "weight_tiers",
21
+ "description": "File type identifier"
22
+ },
23
+ "unit": {
24
+ "type": "object",
25
+ "required": [
26
+ "weight"
27
+ ],
28
+ "properties": {
29
+ "weight": {
30
+ "type": "string",
31
+ "const": "g"
32
+ }
33
+ },
34
+ "additionalProperties": false
35
+ },
36
+ "weight_tiers": {
37
+ "type": "object",
38
+ "patternProperties": {
39
+ "^W[0-9]+$": {
40
+ "type": "object",
41
+ "required": [
42
+ "min",
43
+ "max",
44
+ "label"
45
+ ],
46
+ "properties": {
47
+ "min": {
48
+ "type": "integer",
49
+ "minimum": 0,
50
+ "description": "Minimum weight in grams"
51
+ },
52
+ "max": {
53
+ "type": "integer",
54
+ "minimum": 1,
55
+ "description": "Maximum weight in grams"
56
+ },
57
+ "label": {
58
+ "type": "string",
59
+ "minLength": 1,
60
+ "description": "Human-readable weight tier label"
61
+ }
62
+ },
63
+ "additionalProperties": false
64
+ }
65
+ },
66
+ "additionalProperties": false
67
+ }
68
+ },
69
+ "additionalProperties": false
70
+ }