@gruncellka/porto-data 0.3.0 → 0.4.1
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/CHANGELOG.md +215 -0
- package/LICENSE +199 -5
- package/README.md +53 -34
- package/index.d.ts +35 -18
- package/index.js +2 -1
- package/package.json +28 -8
- package/porto_data/formats/envelopes.json +120 -0
- package/porto_data/formats/layouts.json +288 -0
- package/porto_data/mappings.json +65 -10
- package/porto_data/metadata.json +662 -125
- package/porto_data/policy/jurisdictions.json +839 -0
- package/porto_data/policy/markets.json +75 -0
- package/porto_data/policy/restrictions.json +668 -0
- package/porto_data/providers/deutschepost/features.json +42 -0
- package/porto_data/providers/deutschepost/graph.json +203 -0
- package/porto_data/providers/deutschepost/limits.json +17 -0
- package/porto_data/providers/deutschepost/marks.json +71 -0
- package/porto_data/providers/deutschepost/prices/products.json +239 -0
- package/porto_data/providers/deutschepost/prices/services.json +51 -0
- package/porto_data/providers/deutschepost/products.json +197 -0
- package/porto_data/providers/deutschepost/services.json +88 -0
- package/porto_data/providers/deutschepost/weights.json +46 -0
- package/porto_data/providers/deutschepost/zones.json +231 -0
- package/porto_data/providers/laposte/features.json +42 -0
- package/porto_data/providers/laposte/graph.json +234 -0
- package/porto_data/providers/laposte/limits.json +17 -0
- package/porto_data/providers/laposte/marks.json +39 -0
- package/porto_data/providers/laposte/prices/products.json +947 -0
- package/porto_data/providers/laposte/prices/services.json +41 -0
- package/porto_data/providers/laposte/products.json +276 -0
- package/porto_data/providers/laposte/services.json +63 -0
- package/porto_data/providers/laposte/weights.json +38 -0
- package/porto_data/providers/laposte/zones.json +230 -0
- package/porto_data/providers/swisspost/features.json +21 -0
- package/porto_data/providers/swisspost/graph.json +212 -0
- package/porto_data/providers/swisspost/limits.json +17 -0
- package/porto_data/providers/swisspost/marks.json +41 -0
- package/porto_data/providers/swisspost/prices/products.json +347 -0
- package/porto_data/providers/swisspost/prices/services.json +31 -0
- package/porto_data/providers/swisspost/products.json +193 -0
- package/porto_data/providers/swisspost/rules.json +25 -0
- package/porto_data/providers/swisspost/services.json +40 -0
- package/porto_data/providers/swisspost/weights.json +38 -0
- package/porto_data/providers/swisspost/zones.json +223 -0
- package/porto_data/providers/ukrposhta/features.json +28 -0
- package/porto_data/providers/ukrposhta/graph.json +148 -0
- package/porto_data/providers/ukrposhta/limits.json +17 -0
- package/porto_data/providers/ukrposhta/marks.json +25 -0
- package/porto_data/providers/ukrposhta/prices/products.json +123 -0
- package/porto_data/providers/ukrposhta/prices/services.json +42 -0
- package/porto_data/providers/ukrposhta/products.json +74 -0
- package/porto_data/providers/ukrposhta/services.json +40 -0
- package/porto_data/providers/ukrposhta/weights.json +26 -0
- package/porto_data/providers/ukrposhta/zones.json +226 -0
- package/porto_data/providers.json +37 -0
- package/porto_data/schemas/envelopes.schema.json +120 -0
- package/porto_data/schemas/features.schema.json +66 -55
- package/porto_data/schemas/graph.schema.json +189 -0
- package/porto_data/schemas/jurisdictions.schema.json +116 -0
- package/porto_data/schemas/layouts.schema.json +156 -0
- package/porto_data/schemas/limits.schema.json +253 -0
- package/porto_data/schemas/mappings.schema.json +73 -0
- package/porto_data/schemas/markets.schema.json +186 -0
- package/porto_data/schemas/marks.schema.json +127 -0
- package/porto_data/schemas/metadata.schema.json +183 -0
- package/porto_data/schemas/porto_ids.schema.json +45 -0
- package/porto_data/schemas/product_prices.schema.json +126 -0
- package/porto_data/schemas/products.schema.json +338 -110
- package/porto_data/schemas/providers.schema.json +71 -0
- package/porto_data/schemas/restrictions.schema.json +175 -355
- package/porto_data/schemas/rules.schema.json +104 -0
- package/porto_data/schemas/service_prices.schema.json +116 -0
- package/porto_data/schemas/services.schema.json +113 -70
- package/porto_data/schemas/weights.schema.json +70 -0
- package/porto_data/schemas/zones.schema.json +78 -72
- package/porto_data/data/data_links.json +0 -148
- package/porto_data/data/dimensions.json +0 -158
- package/porto_data/data/features.json +0 -66
- package/porto_data/data/prices.json +0 -242
- package/porto_data/data/products.json +0 -84
- package/porto_data/data/restrictions.json +0 -795
- package/porto_data/data/services.json +0 -61
- package/porto_data/data/weight_tiers.json +0 -54
- package/porto_data/data/zones.json +0 -230
- package/porto_data/schemas/data_links.schema.json +0 -223
- package/porto_data/schemas/dimensions.schema.json +0 -215
- package/porto_data/schemas/prices.schema.json +0 -180
- package/porto_data/schemas/weight_tiers.schema.json +0 -70
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/gruncellka/porto-data/refs/heads/main/porto_data/schemas/products.schema.json",
|
|
3
|
+
"file_type": "products",
|
|
4
|
+
"provider": "swisspost",
|
|
5
|
+
"unit": {
|
|
6
|
+
"weight": "g"
|
|
7
|
+
},
|
|
8
|
+
"products": [
|
|
9
|
+
{
|
|
10
|
+
"id": "a_post_standardbrief",
|
|
11
|
+
"porto_id": "small",
|
|
12
|
+
"name": "A-Post Standardbrief",
|
|
13
|
+
"envelope_ids": [
|
|
14
|
+
"DL",
|
|
15
|
+
"C6"
|
|
16
|
+
],
|
|
17
|
+
"zones": [
|
|
18
|
+
"domestic"
|
|
19
|
+
],
|
|
20
|
+
"effective_from": "2026-01-01",
|
|
21
|
+
"effective_to": null,
|
|
22
|
+
"mark_type": "stamp",
|
|
23
|
+
"tracking_mode": "optional",
|
|
24
|
+
"delivery": [
|
|
25
|
+
{
|
|
26
|
+
"zones": [
|
|
27
|
+
"domestic"
|
|
28
|
+
],
|
|
29
|
+
"span": "next",
|
|
30
|
+
"days_max": 1
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "a_post_grossbrief",
|
|
36
|
+
"porto_id": "large",
|
|
37
|
+
"name": "A-Post Grossbrief",
|
|
38
|
+
"envelope_ids": [
|
|
39
|
+
"C4",
|
|
40
|
+
"B4"
|
|
41
|
+
],
|
|
42
|
+
"zones": [
|
|
43
|
+
"domestic"
|
|
44
|
+
],
|
|
45
|
+
"effective_from": "2026-01-01",
|
|
46
|
+
"effective_to": null,
|
|
47
|
+
"mark_type": "stamp",
|
|
48
|
+
"tracking_mode": "optional",
|
|
49
|
+
"delivery": [
|
|
50
|
+
{
|
|
51
|
+
"zones": [
|
|
52
|
+
"domestic"
|
|
53
|
+
],
|
|
54
|
+
"span": "next",
|
|
55
|
+
"days_max": 1
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "b_post_standardbrief",
|
|
61
|
+
"porto_id": "small",
|
|
62
|
+
"name": "B-Post Standardbrief",
|
|
63
|
+
"envelope_ids": [
|
|
64
|
+
"DL",
|
|
65
|
+
"C6"
|
|
66
|
+
],
|
|
67
|
+
"zones": [
|
|
68
|
+
"domestic"
|
|
69
|
+
],
|
|
70
|
+
"effective_from": "2026-01-01",
|
|
71
|
+
"effective_to": null,
|
|
72
|
+
"mark_type": "stamp",
|
|
73
|
+
"tracking_mode": "optional",
|
|
74
|
+
"delivery": [
|
|
75
|
+
{
|
|
76
|
+
"zones": [
|
|
77
|
+
"domestic"
|
|
78
|
+
],
|
|
79
|
+
"span": "within",
|
|
80
|
+
"days_max": 3,
|
|
81
|
+
"weekdays": "mon_fri"
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"id": "b_post_grossbrief",
|
|
87
|
+
"porto_id": "large",
|
|
88
|
+
"name": "B-Post Grossbrief",
|
|
89
|
+
"envelope_ids": [
|
|
90
|
+
"C4",
|
|
91
|
+
"B4"
|
|
92
|
+
],
|
|
93
|
+
"zones": [
|
|
94
|
+
"domestic"
|
|
95
|
+
],
|
|
96
|
+
"effective_from": "2026-01-01",
|
|
97
|
+
"effective_to": null,
|
|
98
|
+
"mark_type": "stamp",
|
|
99
|
+
"tracking_mode": "optional",
|
|
100
|
+
"delivery": [
|
|
101
|
+
{
|
|
102
|
+
"zones": [
|
|
103
|
+
"domestic"
|
|
104
|
+
],
|
|
105
|
+
"span": "within",
|
|
106
|
+
"days_max": 3,
|
|
107
|
+
"weekdays": "mon_fri"
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "international_standardbrief",
|
|
113
|
+
"porto_id": "small",
|
|
114
|
+
"name": "International Standardbrief (documents)",
|
|
115
|
+
"envelope_ids": [
|
|
116
|
+
"DL",
|
|
117
|
+
"C6",
|
|
118
|
+
"C5"
|
|
119
|
+
],
|
|
120
|
+
"zones": [
|
|
121
|
+
"zone_1_eu",
|
|
122
|
+
"world"
|
|
123
|
+
],
|
|
124
|
+
"effective_from": "2026-01-01",
|
|
125
|
+
"effective_to": null,
|
|
126
|
+
"mark_type": "stamp",
|
|
127
|
+
"tracking_mode": "none",
|
|
128
|
+
"delivery": [
|
|
129
|
+
{
|
|
130
|
+
"zones": [
|
|
131
|
+
"zone_1_eu",
|
|
132
|
+
"world"
|
|
133
|
+
],
|
|
134
|
+
"span": "within",
|
|
135
|
+
"days_max": 8
|
|
136
|
+
}
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"id": "international_grossbrief",
|
|
141
|
+
"porto_id": "large",
|
|
142
|
+
"name": "International Grossbrief (documents)",
|
|
143
|
+
"envelope_ids": [
|
|
144
|
+
"C4",
|
|
145
|
+
"B4"
|
|
146
|
+
],
|
|
147
|
+
"zones": [
|
|
148
|
+
"zone_1_eu",
|
|
149
|
+
"world"
|
|
150
|
+
],
|
|
151
|
+
"effective_from": "2026-01-01",
|
|
152
|
+
"effective_to": null,
|
|
153
|
+
"mark_type": "stamp",
|
|
154
|
+
"tracking_mode": "none",
|
|
155
|
+
"delivery": [
|
|
156
|
+
{
|
|
157
|
+
"zones": [
|
|
158
|
+
"zone_1_eu",
|
|
159
|
+
"world"
|
|
160
|
+
],
|
|
161
|
+
"span": "within",
|
|
162
|
+
"days_max": 8
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"id": "international_maxibrief",
|
|
168
|
+
"porto_id": "extra_large",
|
|
169
|
+
"name": "International Maxibrief (documents)",
|
|
170
|
+
"envelope_ids": [
|
|
171
|
+
"B4"
|
|
172
|
+
],
|
|
173
|
+
"zones": [
|
|
174
|
+
"zone_1_eu",
|
|
175
|
+
"world"
|
|
176
|
+
],
|
|
177
|
+
"effective_from": "2026-01-01",
|
|
178
|
+
"effective_to": null,
|
|
179
|
+
"mark_type": "stamp",
|
|
180
|
+
"tracking_mode": "none",
|
|
181
|
+
"delivery": [
|
|
182
|
+
{
|
|
183
|
+
"zones": [
|
|
184
|
+
"zone_1_eu",
|
|
185
|
+
"world"
|
|
186
|
+
],
|
|
187
|
+
"span": "within",
|
|
188
|
+
"days_max": 8
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/gruncellka/porto-data/refs/heads/main/porto_data/schemas/rules.schema.json",
|
|
3
|
+
"file_type": "provider_rules",
|
|
4
|
+
"provider": "swisspost",
|
|
5
|
+
"unit": {
|
|
6
|
+
"thickness": "mm"
|
|
7
|
+
},
|
|
8
|
+
"rules": [
|
|
9
|
+
{
|
|
10
|
+
"id": "domestic_letter_thickness",
|
|
11
|
+
"kind": "band_attach",
|
|
12
|
+
"metric": "thickness",
|
|
13
|
+
"description": "Swiss Post A/B Mail domestic letters: thickness > 2 cm and <= 5 cm incurs surcharge per post.ch footnotes (verify live tariff). Amount in prices/services.json. Zone scope follows graph.edges for each product_id.",
|
|
14
|
+
"product_ids": [
|
|
15
|
+
"a_post_standardbrief",
|
|
16
|
+
"a_post_grossbrief",
|
|
17
|
+
"b_post_standardbrief",
|
|
18
|
+
"b_post_grossbrief"
|
|
19
|
+
],
|
|
20
|
+
"min_exclusive": 20,
|
|
21
|
+
"max_inclusive": 50,
|
|
22
|
+
"service_id": "brief_dicke_zuschlag"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/gruncellka/porto-data/refs/heads/main/porto_data/schemas/services.schema.json",
|
|
3
|
+
"file_type": "services",
|
|
4
|
+
"provider": "swisspost",
|
|
5
|
+
"services": [
|
|
6
|
+
{
|
|
7
|
+
"id": "a_mail_plus",
|
|
8
|
+
"porto_id": "tracking",
|
|
9
|
+
"name": "A-Mail Plus",
|
|
10
|
+
"label": "Tracked letter with next-day domestic delivery (A-Mail Plus)",
|
|
11
|
+
"description": "Premium domestic letter with electronic tracking; orderable online where Swiss Post offers it (e.g. WebStamp). International letters in this catalog use untracked products unless the operator adds a supported service.",
|
|
12
|
+
"features": [
|
|
13
|
+
"sendungsnummer"
|
|
14
|
+
],
|
|
15
|
+
"enables_tracking": true,
|
|
16
|
+
"online_supported": true,
|
|
17
|
+
"integrations": {
|
|
18
|
+
"webstamp": true
|
|
19
|
+
},
|
|
20
|
+
"supported_zones": [
|
|
21
|
+
"domestic"
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "brief_dicke_zuschlag",
|
|
26
|
+
"porto_id": "thickness",
|
|
27
|
+
"name": "Zuschlag Dicke",
|
|
28
|
+
"label": "Letter thickness surcharge (>2 cm up to 5 cm)",
|
|
29
|
+
"description": "Rule-attached surcharge when thickness > 20 mm and <= 50 mm for domestic A/B letters; not user-selectable. Amount in prices/services.json.",
|
|
30
|
+
"features": [
|
|
31
|
+
"brief_dicke_band"
|
|
32
|
+
],
|
|
33
|
+
"enables_tracking": false,
|
|
34
|
+
"online_supported": false,
|
|
35
|
+
"supported_zones": [
|
|
36
|
+
"domestic"
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/gruncellka/porto-data/refs/heads/main/porto_data/schemas/weights.schema.json",
|
|
3
|
+
"file_type": "weights",
|
|
4
|
+
"provider": "swisspost",
|
|
5
|
+
"unit": {
|
|
6
|
+
"weight": "g"
|
|
7
|
+
},
|
|
8
|
+
"weights": {
|
|
9
|
+
"W0020": {
|
|
10
|
+
"min": 0,
|
|
11
|
+
"max": 20
|
|
12
|
+
},
|
|
13
|
+
"W0050": {
|
|
14
|
+
"min": 21,
|
|
15
|
+
"max": 50
|
|
16
|
+
},
|
|
17
|
+
"W0100": {
|
|
18
|
+
"min": 51,
|
|
19
|
+
"max": 100
|
|
20
|
+
},
|
|
21
|
+
"W0250": {
|
|
22
|
+
"min": 101,
|
|
23
|
+
"max": 250
|
|
24
|
+
},
|
|
25
|
+
"W0500": {
|
|
26
|
+
"min": 251,
|
|
27
|
+
"max": 500
|
|
28
|
+
},
|
|
29
|
+
"W1000": {
|
|
30
|
+
"min": 501,
|
|
31
|
+
"max": 1000
|
|
32
|
+
},
|
|
33
|
+
"W2000": {
|
|
34
|
+
"min": 1001,
|
|
35
|
+
"max": 2000
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/gruncellka/porto-data/refs/heads/main/porto_data/schemas/zones.schema.json",
|
|
3
|
+
"file_type": "zones",
|
|
4
|
+
"provider": "swisspost",
|
|
5
|
+
"unit": {
|
|
6
|
+
"country_code": "ISO 3166-1 alpha-2"
|
|
7
|
+
},
|
|
8
|
+
"zones": [
|
|
9
|
+
{
|
|
10
|
+
"id": "domestic",
|
|
11
|
+
"name": "Schweiz",
|
|
12
|
+
"description": "Switzerland (domestic)",
|
|
13
|
+
"country_codes": [
|
|
14
|
+
"CH"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "zone_1_eu",
|
|
19
|
+
"name": "Zone 1 - Europe (letter tariff)",
|
|
20
|
+
"description": "Swiss Post international letter tariff group for Europe (EU, EEA, UK, and other listed European states). Switzerland (CH) is not in the EU and is not part of this zone when posting from Switzerland — domestic applies for CH destinations.",
|
|
21
|
+
"country_codes": [
|
|
22
|
+
"AD",
|
|
23
|
+
"AL",
|
|
24
|
+
"AT",
|
|
25
|
+
"BA",
|
|
26
|
+
"BE",
|
|
27
|
+
"BG",
|
|
28
|
+
"BY",
|
|
29
|
+
"CY",
|
|
30
|
+
"CZ",
|
|
31
|
+
"DE",
|
|
32
|
+
"DK",
|
|
33
|
+
"EE",
|
|
34
|
+
"ES",
|
|
35
|
+
"FI",
|
|
36
|
+
"FO",
|
|
37
|
+
"FR",
|
|
38
|
+
"GB",
|
|
39
|
+
"GI",
|
|
40
|
+
"GR",
|
|
41
|
+
"HR",
|
|
42
|
+
"HU",
|
|
43
|
+
"IE",
|
|
44
|
+
"IS",
|
|
45
|
+
"IT",
|
|
46
|
+
"LI",
|
|
47
|
+
"LT",
|
|
48
|
+
"LU",
|
|
49
|
+
"LV",
|
|
50
|
+
"MC",
|
|
51
|
+
"MD",
|
|
52
|
+
"ME",
|
|
53
|
+
"MK",
|
|
54
|
+
"MT",
|
|
55
|
+
"NL",
|
|
56
|
+
"NO",
|
|
57
|
+
"PL",
|
|
58
|
+
"PT",
|
|
59
|
+
"RO",
|
|
60
|
+
"RS",
|
|
61
|
+
"RU",
|
|
62
|
+
"SE",
|
|
63
|
+
"SI",
|
|
64
|
+
"SK",
|
|
65
|
+
"SM",
|
|
66
|
+
"TR",
|
|
67
|
+
"UA",
|
|
68
|
+
"VA",
|
|
69
|
+
"XK"
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "world",
|
|
74
|
+
"name": "Welt",
|
|
75
|
+
"description": "All countries outside Europe (international mail)",
|
|
76
|
+
"country_codes": [
|
|
77
|
+
"AF",
|
|
78
|
+
"DZ",
|
|
79
|
+
"AO",
|
|
80
|
+
"AR",
|
|
81
|
+
"AM",
|
|
82
|
+
"AU",
|
|
83
|
+
"AZ",
|
|
84
|
+
"BH",
|
|
85
|
+
"BD",
|
|
86
|
+
"BB",
|
|
87
|
+
"BZ",
|
|
88
|
+
"BJ",
|
|
89
|
+
"BT",
|
|
90
|
+
"BO",
|
|
91
|
+
"BW",
|
|
92
|
+
"BR",
|
|
93
|
+
"BN",
|
|
94
|
+
"BF",
|
|
95
|
+
"BI",
|
|
96
|
+
"KH",
|
|
97
|
+
"CM",
|
|
98
|
+
"CA",
|
|
99
|
+
"CV",
|
|
100
|
+
"CF",
|
|
101
|
+
"TD",
|
|
102
|
+
"CL",
|
|
103
|
+
"CN",
|
|
104
|
+
"CO",
|
|
105
|
+
"KM",
|
|
106
|
+
"CG",
|
|
107
|
+
"CD",
|
|
108
|
+
"CR",
|
|
109
|
+
"CI",
|
|
110
|
+
"CU",
|
|
111
|
+
"DJ",
|
|
112
|
+
"DM",
|
|
113
|
+
"DO",
|
|
114
|
+
"EC",
|
|
115
|
+
"EG",
|
|
116
|
+
"SV",
|
|
117
|
+
"GQ",
|
|
118
|
+
"ER",
|
|
119
|
+
"ET",
|
|
120
|
+
"FJ",
|
|
121
|
+
"GA",
|
|
122
|
+
"GM",
|
|
123
|
+
"GE",
|
|
124
|
+
"GH",
|
|
125
|
+
"GD",
|
|
126
|
+
"GT",
|
|
127
|
+
"GN",
|
|
128
|
+
"GW",
|
|
129
|
+
"GY",
|
|
130
|
+
"HT",
|
|
131
|
+
"HN",
|
|
132
|
+
"IN",
|
|
133
|
+
"ID",
|
|
134
|
+
"IR",
|
|
135
|
+
"IQ",
|
|
136
|
+
"IL",
|
|
137
|
+
"JM",
|
|
138
|
+
"JP",
|
|
139
|
+
"JO",
|
|
140
|
+
"KZ",
|
|
141
|
+
"KE",
|
|
142
|
+
"KI",
|
|
143
|
+
"KP",
|
|
144
|
+
"KR",
|
|
145
|
+
"KW",
|
|
146
|
+
"KG",
|
|
147
|
+
"LA",
|
|
148
|
+
"LB",
|
|
149
|
+
"LS",
|
|
150
|
+
"LR",
|
|
151
|
+
"LY",
|
|
152
|
+
"MG",
|
|
153
|
+
"MW",
|
|
154
|
+
"MY",
|
|
155
|
+
"MV",
|
|
156
|
+
"ML",
|
|
157
|
+
"MH",
|
|
158
|
+
"MR",
|
|
159
|
+
"MU",
|
|
160
|
+
"MX",
|
|
161
|
+
"FM",
|
|
162
|
+
"MN",
|
|
163
|
+
"MA",
|
|
164
|
+
"MZ",
|
|
165
|
+
"MM",
|
|
166
|
+
"NA",
|
|
167
|
+
"NR",
|
|
168
|
+
"NP",
|
|
169
|
+
"NZ",
|
|
170
|
+
"NI",
|
|
171
|
+
"NE",
|
|
172
|
+
"NG",
|
|
173
|
+
"OM",
|
|
174
|
+
"PK",
|
|
175
|
+
"PW",
|
|
176
|
+
"PA",
|
|
177
|
+
"PG",
|
|
178
|
+
"PY",
|
|
179
|
+
"PE",
|
|
180
|
+
"PH",
|
|
181
|
+
"QA",
|
|
182
|
+
"RW",
|
|
183
|
+
"WS",
|
|
184
|
+
"ST",
|
|
185
|
+
"SA",
|
|
186
|
+
"SN",
|
|
187
|
+
"SC",
|
|
188
|
+
"SL",
|
|
189
|
+
"SG",
|
|
190
|
+
"SB",
|
|
191
|
+
"SO",
|
|
192
|
+
"ZA",
|
|
193
|
+
"LK",
|
|
194
|
+
"SD",
|
|
195
|
+
"SR",
|
|
196
|
+
"SZ",
|
|
197
|
+
"SY",
|
|
198
|
+
"TW",
|
|
199
|
+
"TJ",
|
|
200
|
+
"TZ",
|
|
201
|
+
"TH",
|
|
202
|
+
"TL",
|
|
203
|
+
"TG",
|
|
204
|
+
"TO",
|
|
205
|
+
"TT",
|
|
206
|
+
"TN",
|
|
207
|
+
"TM",
|
|
208
|
+
"TV",
|
|
209
|
+
"UG",
|
|
210
|
+
"AE",
|
|
211
|
+
"US",
|
|
212
|
+
"UY",
|
|
213
|
+
"UZ",
|
|
214
|
+
"VU",
|
|
215
|
+
"VE",
|
|
216
|
+
"VN",
|
|
217
|
+
"YE",
|
|
218
|
+
"ZM",
|
|
219
|
+
"ZW"
|
|
220
|
+
]
|
|
221
|
+
}
|
|
222
|
+
]
|
|
223
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/gruncellka/porto-data/refs/heads/main/porto_data/schemas/features.schema.json",
|
|
3
|
+
"file_type": "features",
|
|
4
|
+
"provider": "ukrposhta",
|
|
5
|
+
"features": [
|
|
6
|
+
{
|
|
7
|
+
"id": "recipient_signature",
|
|
8
|
+
"porto_id": "recipient_signature",
|
|
9
|
+
"name": "Особисте вручення",
|
|
10
|
+
"label": "Recipient signature",
|
|
11
|
+
"description": "Delivery with recipient signature required."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"id": "return_receipt_paper",
|
|
15
|
+
"porto_id": "return_receipt",
|
|
16
|
+
"name": "Повідомлення про вручення (паперове)",
|
|
17
|
+
"label": "Return receipt (paper)",
|
|
18
|
+
"description": "Paper delivery notice returned to the sender."
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "return_receipt_electronic",
|
|
22
|
+
"porto_id": "return_receipt",
|
|
23
|
+
"name": "Повідомлення про вручення (електронне)",
|
|
24
|
+
"label": "Return receipt (electronic)",
|
|
25
|
+
"description": "Electronic delivery notice returned to the sender."
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/gruncellka/porto-data/refs/heads/main/porto_data/schemas/graph.schema.json",
|
|
3
|
+
"file_type": "graph",
|
|
4
|
+
"provider": "ukrposhta",
|
|
5
|
+
"unit": {
|
|
6
|
+
"weight": "g",
|
|
7
|
+
"dimension": "mm",
|
|
8
|
+
"price": "cents",
|
|
9
|
+
"currency": "UAH"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"products": {
|
|
13
|
+
"file": "products.json",
|
|
14
|
+
"depends_on": [
|
|
15
|
+
"zones.json",
|
|
16
|
+
"weights.json",
|
|
17
|
+
"formats/envelopes.json",
|
|
18
|
+
"services.json",
|
|
19
|
+
"features.json",
|
|
20
|
+
"marks.json"
|
|
21
|
+
],
|
|
22
|
+
"description": "Products require zones, weight tiers, envelope formats, services, features, and mark profiles"
|
|
23
|
+
},
|
|
24
|
+
"services": {
|
|
25
|
+
"file": "services.json",
|
|
26
|
+
"depends_on": [
|
|
27
|
+
"features.json"
|
|
28
|
+
],
|
|
29
|
+
"description": "Services reference feature ids"
|
|
30
|
+
},
|
|
31
|
+
"product_prices": {
|
|
32
|
+
"file": "prices/products.json",
|
|
33
|
+
"depends_on": [
|
|
34
|
+
"products.json",
|
|
35
|
+
"zones.json",
|
|
36
|
+
"weights.json"
|
|
37
|
+
],
|
|
38
|
+
"description": "Base postage grid for Ukrposhta letter products"
|
|
39
|
+
},
|
|
40
|
+
"service_prices": {
|
|
41
|
+
"file": "prices/services.json",
|
|
42
|
+
"depends_on": [
|
|
43
|
+
"products.json",
|
|
44
|
+
"services.json",
|
|
45
|
+
"zones.json",
|
|
46
|
+
"weights.json"
|
|
47
|
+
],
|
|
48
|
+
"description": "Service surcharge amounts"
|
|
49
|
+
},
|
|
50
|
+
"zones": {
|
|
51
|
+
"file": "zones.json",
|
|
52
|
+
"depends_on": [
|
|
53
|
+
"policy/restrictions.json"
|
|
54
|
+
],
|
|
55
|
+
"description": "Domestic/international zone definitions"
|
|
56
|
+
},
|
|
57
|
+
"weights": {
|
|
58
|
+
"file": "weights.json",
|
|
59
|
+
"depends_on": [],
|
|
60
|
+
"description": "Weight brackets"
|
|
61
|
+
},
|
|
62
|
+
"envelopes": {
|
|
63
|
+
"file": "formats/envelopes.json",
|
|
64
|
+
"depends_on": [],
|
|
65
|
+
"description": "Envelope catalog"
|
|
66
|
+
},
|
|
67
|
+
"envelope_layouts": {
|
|
68
|
+
"file": "formats/layouts.json",
|
|
69
|
+
"depends_on": [
|
|
70
|
+
"formats/envelopes.json"
|
|
71
|
+
],
|
|
72
|
+
"description": "Jurisdiction-keyed print/window layout (DE/CH/FR); file formats/layouts.json"
|
|
73
|
+
},
|
|
74
|
+
"jurisdictions": {
|
|
75
|
+
"file": "policy/jurisdictions.json",
|
|
76
|
+
"depends_on": [],
|
|
77
|
+
"description": "UN/EU membership sets for restriction framework jurisdiction resolution"
|
|
78
|
+
},
|
|
79
|
+
"markets": {
|
|
80
|
+
"file": "policy/markets.json",
|
|
81
|
+
"depends_on": [],
|
|
82
|
+
"description": "Country-level currency, VAT, and international quote currencies for providers.json country"
|
|
83
|
+
},
|
|
84
|
+
"restrictions": {
|
|
85
|
+
"file": "policy/restrictions.json",
|
|
86
|
+
"depends_on": [
|
|
87
|
+
"policy/jurisdictions.json",
|
|
88
|
+
"zones.json",
|
|
89
|
+
"products.json"
|
|
90
|
+
],
|
|
91
|
+
"description": "Global destination restrictions (bundled as policy/restrictions.json); optional cross-reference to zones and products"
|
|
92
|
+
},
|
|
93
|
+
"marks": {
|
|
94
|
+
"file": "marks.json",
|
|
95
|
+
"depends_on": [],
|
|
96
|
+
"description": "Franking profile catalog: profiles[] (sizes); resolution in graph.edges.marks"
|
|
97
|
+
},
|
|
98
|
+
"features": {
|
|
99
|
+
"file": "features.json",
|
|
100
|
+
"depends_on": [],
|
|
101
|
+
"description": "Feature catalog"
|
|
102
|
+
},
|
|
103
|
+
"limits": {
|
|
104
|
+
"file": "limits.json",
|
|
105
|
+
"depends_on": [
|
|
106
|
+
"policy/restrictions.json"
|
|
107
|
+
],
|
|
108
|
+
"description": "Operational limits overlay"
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"services": [
|
|
112
|
+
"return_receipt_paper",
|
|
113
|
+
"return_receipt_electronic",
|
|
114
|
+
"recommended_international"
|
|
115
|
+
],
|
|
116
|
+
"edges": {
|
|
117
|
+
"products": {
|
|
118
|
+
"lyst_standartnyi": {
|
|
119
|
+
"zones": [
|
|
120
|
+
"domestic",
|
|
121
|
+
"world"
|
|
122
|
+
],
|
|
123
|
+
"weight_tiers": [
|
|
124
|
+
"W0050",
|
|
125
|
+
"W0250",
|
|
126
|
+
"W1000",
|
|
127
|
+
"W2000"
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
"dokument": {
|
|
131
|
+
"zones": [
|
|
132
|
+
"domestic"
|
|
133
|
+
],
|
|
134
|
+
"weight_tiers": [
|
|
135
|
+
"W1000"
|
|
136
|
+
]
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
"marks": {
|
|
140
|
+
"domestic": {
|
|
141
|
+
"profile": "domestic"
|
|
142
|
+
},
|
|
143
|
+
"world": {
|
|
144
|
+
"profile": "domestic"
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|