@shipeasy/openapi 2.5.0 → 3.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.
- package/dist/{chunk-DBTSD3W5.js → chunk-7T77D5YO.js} +7 -13
- package/dist/chunk-7T77D5YO.js.map +1 -0
- package/dist/{chunk-RDMD5XQT.js → chunk-V4ZESAIF.js} +1 -1
- package/dist/{chunk-RDMD5XQT.js.map → chunk-V4ZESAIF.js.map} +1 -1
- package/dist/{client-ObcuFHaV.d.ts → client-DzEqdN5N.d.ts} +26 -43
- package/dist/client.d.ts +1 -1
- package/dist/client.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/schemas.d.ts +13 -25
- package/dist/schemas.js +1 -1
- package/openapi.json +39 -79
- package/openapi.yaml +35 -57
- package/package.json +1 -1
- package/spec/components/schemas/i18n.yaml +20 -44
- package/spec/openapi.yaml +2 -2
- package/spec/paths/i18n.yaml +13 -11
- package/dist/chunk-DBTSD3W5.js.map +0 -1
package/openapi.json
CHANGED
|
@@ -124,12 +124,12 @@
|
|
|
124
124
|
},
|
|
125
125
|
{
|
|
126
126
|
"name": "i18n",
|
|
127
|
-
"description": "String Manager (i18n): the worker-safe REST surface — locale profiles, the\ninsert-only key push, single-key overwrite,
|
|
127
|
+
"description": "String Manager (i18n): the worker-safe REST surface — locale profiles, the\ninsert-only key push, single-key overwrite, profile publish, and the read-only\nkey/draft listings.\n\nThe fs/AST parts (scan, validate, install-loader, codemod) are NOT part of\nthis API — they stay in the fs-having CLI/MCP."
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
130
|
"name": "Profiles",
|
|
131
131
|
"parent": "i18n",
|
|
132
|
-
"description": "Locale profiles (e.g. `en:prod`) — create, list, and publish a profile
|
|
132
|
+
"description": "Locale profiles (e.g. `en:prod`) — create, list, and publish a profile to the CDN."
|
|
133
133
|
},
|
|
134
134
|
{
|
|
135
135
|
"name": "Keys",
|
|
@@ -9099,7 +9099,7 @@
|
|
|
9099
9099
|
"get": {
|
|
9100
9100
|
"operationId": "listI18nProfiles",
|
|
9101
9101
|
"summary": "List i18n profiles",
|
|
9102
|
-
"description": "Returns every locale profile in the project (e.g. `en:prod`, `fr:prod`).\n\n**Use case:** Discover which locale profiles exist before pushing keys or publishing
|
|
9102
|
+
"description": "Returns every locale profile in the project (e.g. `en:prod`, `fr:prod`).\n\n**Use case:** Discover which locale profiles exist before pushing keys or publishing.",
|
|
9103
9103
|
"tags": [
|
|
9104
9104
|
"Profiles"
|
|
9105
9105
|
],
|
|
@@ -9348,8 +9348,8 @@
|
|
|
9348
9348
|
},
|
|
9349
9349
|
"post": {
|
|
9350
9350
|
"operationId": "pushI18nKeys",
|
|
9351
|
-
"summary": "Push
|
|
9352
|
-
"description": "Add NEW keys to a profile. Insert-only — existing keys are left untouched
|
|
9351
|
+
"summary": "Push i18n keys (insert-only, or `force` to overwrite)",
|
|
9352
|
+
"description": "Add NEW keys to a profile. Insert-only by default — existing keys are left untouched and reported back as `skipped`.\n\nPass `force: true` to overwrite the existing ones in bulk with the submitted values: they come back as `updated` instead of `skipped`. Without `force` the only overwrite paths are `updateI18nKey` (one key) and the devtools-only `upsertI18nKeys`.\n\n**Use case:** Seed newly-extracted keys without clobbering translations already in the profile — or re-push a whole source-language file with `force` after the copy changed.",
|
|
9353
9353
|
"tags": [
|
|
9354
9354
|
"Keys"
|
|
9355
9355
|
],
|
|
@@ -9379,7 +9379,7 @@
|
|
|
9379
9379
|
},
|
|
9380
9380
|
"responses": {
|
|
9381
9381
|
"201": {
|
|
9382
|
-
"description": "Push
|
|
9382
|
+
"description": "Push i18n keys (insert-only, or `force` to overwrite)",
|
|
9383
9383
|
"content": {
|
|
9384
9384
|
"application/json": {
|
|
9385
9385
|
"schema": {
|
|
@@ -9390,8 +9390,10 @@
|
|
|
9390
9390
|
"checkout.cta"
|
|
9391
9391
|
],
|
|
9392
9392
|
"skipped": [],
|
|
9393
|
+
"updated": [],
|
|
9393
9394
|
"pushed_count": 1,
|
|
9394
|
-
"skipped_count": 0
|
|
9395
|
+
"skipped_count": 0,
|
|
9396
|
+
"updated_count": 0
|
|
9395
9397
|
}
|
|
9396
9398
|
}
|
|
9397
9399
|
}
|
|
@@ -9466,8 +9468,7 @@
|
|
|
9466
9468
|
"$ref": "#/components/schemas/UpsertI18nKeysResponse"
|
|
9467
9469
|
},
|
|
9468
9470
|
"example": {
|
|
9469
|
-
"upserted": 1
|
|
9470
|
-
"chunk": "default"
|
|
9471
|
+
"upserted": 1
|
|
9471
9472
|
}
|
|
9472
9473
|
}
|
|
9473
9474
|
}
|
|
@@ -10136,7 +10137,7 @@
|
|
|
10136
10137
|
"post": {
|
|
10137
10138
|
"operationId": "publishI18nProfile",
|
|
10138
10139
|
"summary": "Publish a profile live",
|
|
10139
|
-
"description": "Publish a profile to the CDN — rebuild its KV snapshot + purge the edge. Publishing is PROFILE-WIDE: the whole profile is snapshotted into one KV blob, so the
|
|
10140
|
+
"description": "Publish a profile to the CDN — rebuild its KV snapshot + purge the edge. Publishing is PROFILE-WIDE: the whole profile is snapshotted into one KV blob, so the body takes no options.\n\n**Use case:** Ship the latest translations live after pushing/updating keys.",
|
|
10140
10141
|
"tags": [
|
|
10141
10142
|
"Profiles"
|
|
10142
10143
|
],
|
|
@@ -10155,21 +10156,19 @@
|
|
|
10155
10156
|
}
|
|
10156
10157
|
],
|
|
10157
10158
|
"requestBody": {
|
|
10158
|
-
"required":
|
|
10159
|
+
"required": false,
|
|
10159
10160
|
"content": {
|
|
10160
10161
|
"application/json": {
|
|
10161
10162
|
"schema": {
|
|
10162
10163
|
"$ref": "#/components/schemas/PublishI18nProfileRequest"
|
|
10163
10164
|
},
|
|
10164
|
-
"example": {
|
|
10165
|
-
"chunk": "default"
|
|
10166
|
-
}
|
|
10165
|
+
"example": {}
|
|
10167
10166
|
}
|
|
10168
10167
|
}
|
|
10169
10168
|
},
|
|
10170
10169
|
"responses": {
|
|
10171
10170
|
"200": {
|
|
10172
|
-
"description": "Publish a profile
|
|
10171
|
+
"description": "Publish a profile",
|
|
10173
10172
|
"content": {
|
|
10174
10173
|
"application/json": {
|
|
10175
10174
|
"schema": {
|
|
@@ -23611,21 +23610,6 @@
|
|
|
23611
23610
|
}
|
|
23612
23611
|
]
|
|
23613
23612
|
},
|
|
23614
|
-
"chunkId": {
|
|
23615
|
-
"description": "Owning chunk (authoring grouping) id.",
|
|
23616
|
-
"type": "string"
|
|
23617
|
-
},
|
|
23618
|
-
"chunkName": {
|
|
23619
|
-
"description": "Name of the owning chunk (authoring grouping), or `null` when it cannot be resolved.",
|
|
23620
|
-
"anyOf": [
|
|
23621
|
-
{
|
|
23622
|
-
"type": "string"
|
|
23623
|
-
},
|
|
23624
|
-
{
|
|
23625
|
-
"type": "null"
|
|
23626
|
-
}
|
|
23627
|
-
]
|
|
23628
|
-
},
|
|
23629
23613
|
"updatedAt": {
|
|
23630
23614
|
"description": "ISO-8601 timestamp of the last edit.",
|
|
23631
23615
|
"type": "string"
|
|
@@ -23643,8 +23627,6 @@
|
|
|
23643
23627
|
"variables",
|
|
23644
23628
|
"profileId",
|
|
23645
23629
|
"profileName",
|
|
23646
|
-
"chunkId",
|
|
23647
|
-
"chunkName",
|
|
23648
23630
|
"updatedAt",
|
|
23649
23631
|
"updatedBy"
|
|
23650
23632
|
],
|
|
@@ -23673,13 +23655,6 @@
|
|
|
23673
23655
|
"format": "uuid",
|
|
23674
23656
|
"description": "Target profile id to upsert keys into."
|
|
23675
23657
|
},
|
|
23676
|
-
"chunk": {
|
|
23677
|
-
"description": "Logical grouping the keys are filed under. Defaults to `default`.",
|
|
23678
|
-
"type": "string",
|
|
23679
|
-
"minLength": 1,
|
|
23680
|
-
"maxLength": 64,
|
|
23681
|
-
"default": "default"
|
|
23682
|
-
},
|
|
23683
23658
|
"keys": {
|
|
23684
23659
|
"type": "array",
|
|
23685
23660
|
"minItems": 1,
|
|
@@ -23734,15 +23709,10 @@
|
|
|
23734
23709
|
"upserted": {
|
|
23735
23710
|
"type": "number",
|
|
23736
23711
|
"description": "Number of keys written (inserted or overwritten)."
|
|
23737
|
-
},
|
|
23738
|
-
"chunk": {
|
|
23739
|
-
"type": "string",
|
|
23740
|
-
"description": "The chunk the keys were filed under."
|
|
23741
23712
|
}
|
|
23742
23713
|
},
|
|
23743
23714
|
"required": [
|
|
23744
|
-
"upserted"
|
|
23745
|
-
"chunk"
|
|
23715
|
+
"upserted"
|
|
23746
23716
|
],
|
|
23747
23717
|
"additionalProperties": false,
|
|
23748
23718
|
"description": "Result of a bulk key upsert. The affected profile's KV snapshot is rebuilt (and the CDN purged) before this returns."
|
|
@@ -23755,13 +23725,6 @@
|
|
|
23755
23725
|
"format": "uuid",
|
|
23756
23726
|
"description": "Target profile id to add keys to."
|
|
23757
23727
|
},
|
|
23758
|
-
"chunk": {
|
|
23759
|
-
"description": "Logical grouping the new keys are filed under. Defaults to `default`.",
|
|
23760
|
-
"type": "string",
|
|
23761
|
-
"minLength": 1,
|
|
23762
|
-
"maxLength": 64,
|
|
23763
|
-
"default": "default"
|
|
23764
|
-
},
|
|
23765
23728
|
"keys": {
|
|
23766
23729
|
"type": "array",
|
|
23767
23730
|
"minItems": 1,
|
|
@@ -23800,7 +23763,12 @@
|
|
|
23800
23763
|
],
|
|
23801
23764
|
"additionalProperties": false
|
|
23802
23765
|
},
|
|
23803
|
-
"description": "Keys to add. Insert-only — existing keys are reported back as `skipped
|
|
23766
|
+
"description": "Keys to add. Insert-only by default — existing keys are reported back as `skipped` (set `force` to overwrite them instead)."
|
|
23767
|
+
},
|
|
23768
|
+
"force": {
|
|
23769
|
+
"type": "boolean",
|
|
23770
|
+
"default": false,
|
|
23771
|
+
"description": "Overwrite keys that already exist with the submitted value instead of skipping them. Overwritten keys come back as `updated`. Off by default so a routine push can never clobber live translations."
|
|
23804
23772
|
}
|
|
23805
23773
|
},
|
|
23806
23774
|
"required": [
|
|
@@ -23808,7 +23776,7 @@
|
|
|
23808
23776
|
"keys"
|
|
23809
23777
|
],
|
|
23810
23778
|
"additionalProperties": false,
|
|
23811
|
-
"description": "Body for `POST /api/admin/i18n/keys`. Insert-only: keys that already exist are never overwritten — use `PUT /keys/{id}` to change
|
|
23779
|
+
"description": "Body for `POST /api/admin/i18n/keys`. Insert-only by default: keys that already exist are never overwritten — pass `force: true` to overwrite them in bulk, or use `PUT /keys/{id}` to change one value."
|
|
23812
23780
|
},
|
|
23813
23781
|
"PushI18nKeysResponse": {
|
|
23814
23782
|
"type": "object",
|
|
@@ -23825,7 +23793,14 @@
|
|
|
23825
23793
|
"items": {
|
|
23826
23794
|
"type": "string"
|
|
23827
23795
|
},
|
|
23828
|
-
"description": "Key names that already existed and were left untouched."
|
|
23796
|
+
"description": "Key names that already existed and were left untouched. Always empty when `force` was set — those key names come back under `updated` instead."
|
|
23797
|
+
},
|
|
23798
|
+
"updated": {
|
|
23799
|
+
"type": "array",
|
|
23800
|
+
"items": {
|
|
23801
|
+
"type": "string"
|
|
23802
|
+
},
|
|
23803
|
+
"description": "Key names that already existed and were overwritten with the submitted value. Only ever non-empty when the push set `force`."
|
|
23829
23804
|
},
|
|
23830
23805
|
"pushed_count": {
|
|
23831
23806
|
"type": "number",
|
|
@@ -23835,19 +23810,21 @@
|
|
|
23835
23810
|
"type": "number",
|
|
23836
23811
|
"description": "Number of keys skipped (== `skipped.length`)."
|
|
23837
23812
|
},
|
|
23838
|
-
"
|
|
23839
|
-
"
|
|
23840
|
-
"
|
|
23813
|
+
"updated_count": {
|
|
23814
|
+
"type": "number",
|
|
23815
|
+
"description": "Number of existing keys overwritten (== `updated.length`)."
|
|
23841
23816
|
}
|
|
23842
23817
|
},
|
|
23843
23818
|
"required": [
|
|
23844
23819
|
"added",
|
|
23845
23820
|
"skipped",
|
|
23821
|
+
"updated",
|
|
23846
23822
|
"pushed_count",
|
|
23847
|
-
"skipped_count"
|
|
23823
|
+
"skipped_count",
|
|
23824
|
+
"updated_count"
|
|
23848
23825
|
],
|
|
23849
23826
|
"additionalProperties": false,
|
|
23850
|
-
"description": "Result of
|
|
23827
|
+
"description": "Result of a key push — what was inserted, what was left alone, and (with `force`) what was overwritten."
|
|
23851
23828
|
},
|
|
23852
23829
|
"UpdateI18nKeyRequest": {
|
|
23853
23830
|
"type": "object",
|
|
@@ -24121,14 +24098,9 @@
|
|
|
24121
24098
|
},
|
|
24122
24099
|
"PublishI18nProfileRequest": {
|
|
24123
24100
|
"type": "object",
|
|
24124
|
-
"properties": {
|
|
24125
|
-
"chunk": {
|
|
24126
|
-
"description": "Optional chunk label to stamp on the audit log. Publishing is profile-wide regardless — the whole profile is snapshotted into one KV blob.",
|
|
24127
|
-
"type": "string"
|
|
24128
|
-
}
|
|
24129
|
-
},
|
|
24101
|
+
"properties": {},
|
|
24130
24102
|
"additionalProperties": false,
|
|
24131
|
-
"description": "Body for `POST /api/admin/i18n/profiles/{profileId}/publish`.
|
|
24103
|
+
"description": "Body for `POST /api/admin/i18n/profiles/{profileId}/publish`. Publishing is profile-wide — the whole profile is snapshotted into one KV blob — so the body takes no options."
|
|
24132
24104
|
},
|
|
24133
24105
|
"PublishI18nProfileResponse": {
|
|
24134
24106
|
"type": "object",
|
|
@@ -24142,17 +24114,6 @@
|
|
|
24142
24114
|
"type": "string",
|
|
24143
24115
|
"description": "Profile that was published."
|
|
24144
24116
|
},
|
|
24145
|
-
"chunk": {
|
|
24146
|
-
"anyOf": [
|
|
24147
|
-
{
|
|
24148
|
-
"type": "string"
|
|
24149
|
-
},
|
|
24150
|
-
{
|
|
24151
|
-
"type": "null"
|
|
24152
|
-
}
|
|
24153
|
-
],
|
|
24154
|
-
"description": "Audit chunk label, or `null` when none was given."
|
|
24155
|
-
},
|
|
24156
24117
|
"published_at": {
|
|
24157
24118
|
"type": "string",
|
|
24158
24119
|
"description": "ISO-8601 timestamp of the publish."
|
|
@@ -24190,7 +24151,6 @@
|
|
|
24190
24151
|
"required": [
|
|
24191
24152
|
"ok",
|
|
24192
24153
|
"profile_id",
|
|
24193
|
-
"chunk",
|
|
24194
24154
|
"published_at",
|
|
24195
24155
|
"version",
|
|
24196
24156
|
"key_count",
|
package/openapi.yaml
CHANGED
|
@@ -226,14 +226,14 @@ tags:
|
|
|
226
226
|
- name: i18n
|
|
227
227
|
description: |-
|
|
228
228
|
String Manager (i18n): the worker-safe REST surface — locale profiles, the
|
|
229
|
-
insert-only key push, single-key overwrite,
|
|
229
|
+
insert-only key push, single-key overwrite, profile publish, and the read-only
|
|
230
230
|
key/draft listings.
|
|
231
231
|
|
|
232
232
|
The fs/AST parts (scan, validate, install-loader, codemod) are NOT part of
|
|
233
233
|
this API — they stay in the fs-having CLI/MCP.
|
|
234
234
|
- name: Profiles
|
|
235
235
|
parent: i18n
|
|
236
|
-
description: Locale profiles (e.g. `en:prod`) — create, list, and publish a profile
|
|
236
|
+
description: Locale profiles (e.g. `en:prod`) — create, list, and publish a profile to the CDN.
|
|
237
237
|
- name: Keys
|
|
238
238
|
parent: i18n
|
|
239
239
|
description: Translation keys — the insert-only push, single-key overwrite, and key listing.
|
|
@@ -6698,7 +6698,7 @@ paths:
|
|
|
6698
6698
|
description: |-
|
|
6699
6699
|
Returns every locale profile in the project (e.g. `en:prod`, `fr:prod`).
|
|
6700
6700
|
|
|
6701
|
-
**Use case:** Discover which locale profiles exist before pushing keys or publishing
|
|
6701
|
+
**Use case:** Discover which locale profiles exist before pushing keys or publishing.
|
|
6702
6702
|
tags:
|
|
6703
6703
|
- Profiles
|
|
6704
6704
|
parameters:
|
|
@@ -6867,11 +6867,13 @@ paths:
|
|
|
6867
6867
|
name: list
|
|
6868
6868
|
post:
|
|
6869
6869
|
operationId: pushI18nKeys
|
|
6870
|
-
summary: Push
|
|
6870
|
+
summary: Push i18n keys (insert-only, or `force` to overwrite)
|
|
6871
6871
|
description: |-
|
|
6872
|
-
Add NEW keys to a profile. Insert-only — existing keys are left untouched
|
|
6872
|
+
Add NEW keys to a profile. Insert-only by default — existing keys are left untouched and reported back as `skipped`.
|
|
6873
6873
|
|
|
6874
|
-
|
|
6874
|
+
Pass `force: true` to overwrite the existing ones in bulk with the submitted values: they come back as `updated` instead of `skipped`. Without `force` the only overwrite paths are `updateI18nKey` (one key) and the devtools-only `upsertI18nKeys`.
|
|
6875
|
+
|
|
6876
|
+
**Use case:** Seed newly-extracted keys without clobbering translations already in the profile — or re-push a whole source-language file with `force` after the copy changed.
|
|
6875
6877
|
tags:
|
|
6876
6878
|
- Keys
|
|
6877
6879
|
parameters:
|
|
@@ -6889,7 +6891,7 @@ paths:
|
|
|
6889
6891
|
value: Buy now
|
|
6890
6892
|
responses:
|
|
6891
6893
|
'201':
|
|
6892
|
-
description: Push
|
|
6894
|
+
description: Push i18n keys (insert-only, or `force` to overwrite)
|
|
6893
6895
|
content:
|
|
6894
6896
|
application/json:
|
|
6895
6897
|
schema:
|
|
@@ -6898,8 +6900,10 @@ paths:
|
|
|
6898
6900
|
added:
|
|
6899
6901
|
- checkout.cta
|
|
6900
6902
|
skipped: []
|
|
6903
|
+
updated: []
|
|
6901
6904
|
pushed_count: 1
|
|
6902
6905
|
skipped_count: 0
|
|
6906
|
+
updated_count: 0
|
|
6903
6907
|
'400':
|
|
6904
6908
|
$ref: '#/components/responses/BadRequest'
|
|
6905
6909
|
'401':
|
|
@@ -6953,7 +6957,6 @@ paths:
|
|
|
6953
6957
|
$ref: '#/components/schemas/UpsertI18nKeysResponse'
|
|
6954
6958
|
example:
|
|
6955
6959
|
upserted: 1
|
|
6956
|
-
chunk: default
|
|
6957
6960
|
'400':
|
|
6958
6961
|
$ref: '#/components/responses/BadRequest'
|
|
6959
6962
|
'401':
|
|
@@ -7420,7 +7423,7 @@ paths:
|
|
|
7420
7423
|
operationId: publishI18nProfile
|
|
7421
7424
|
summary: Publish a profile live
|
|
7422
7425
|
description: |-
|
|
7423
|
-
Publish a profile to the CDN — rebuild its KV snapshot + purge the edge. Publishing is PROFILE-WIDE: the whole profile is snapshotted into one KV blob, so the
|
|
7426
|
+
Publish a profile to the CDN — rebuild its KV snapshot + purge the edge. Publishing is PROFILE-WIDE: the whole profile is snapshotted into one KV blob, so the body takes no options.
|
|
7424
7427
|
|
|
7425
7428
|
**Use case:** Ship the latest translations live after pushing/updating keys.
|
|
7426
7429
|
tags:
|
|
@@ -7434,16 +7437,15 @@ paths:
|
|
|
7434
7437
|
schema:
|
|
7435
7438
|
$ref: '#/components/schemas/ResourceId'
|
|
7436
7439
|
requestBody:
|
|
7437
|
-
required:
|
|
7440
|
+
required: false
|
|
7438
7441
|
content:
|
|
7439
7442
|
application/json:
|
|
7440
7443
|
schema:
|
|
7441
7444
|
$ref: '#/components/schemas/PublishI18nProfileRequest'
|
|
7442
|
-
example:
|
|
7443
|
-
chunk: default
|
|
7445
|
+
example: {}
|
|
7444
7446
|
responses:
|
|
7445
7447
|
'200':
|
|
7446
|
-
description: Publish a profile
|
|
7448
|
+
description: Publish a profile
|
|
7447
7449
|
content:
|
|
7448
7450
|
application/json:
|
|
7449
7451
|
schema:
|
|
@@ -16730,14 +16732,6 @@ components:
|
|
|
16730
16732
|
anyOf:
|
|
16731
16733
|
- type: string
|
|
16732
16734
|
- type: 'null'
|
|
16733
|
-
chunkId:
|
|
16734
|
-
description: Owning chunk (authoring grouping) id.
|
|
16735
|
-
type: string
|
|
16736
|
-
chunkName:
|
|
16737
|
-
description: Name of the owning chunk (authoring grouping), or `null` when it cannot be resolved.
|
|
16738
|
-
anyOf:
|
|
16739
|
-
- type: string
|
|
16740
|
-
- type: 'null'
|
|
16741
16735
|
updatedAt:
|
|
16742
16736
|
description: ISO-8601 timestamp of the last edit.
|
|
16743
16737
|
type: string
|
|
@@ -16752,8 +16746,6 @@ components:
|
|
|
16752
16746
|
- variables
|
|
16753
16747
|
- profileId
|
|
16754
16748
|
- profileName
|
|
16755
|
-
- chunkId
|
|
16756
|
-
- chunkName
|
|
16757
16749
|
- updatedAt
|
|
16758
16750
|
- updatedBy
|
|
16759
16751
|
additionalProperties: false
|
|
@@ -16774,12 +16766,6 @@ components:
|
|
|
16774
16766
|
type: string
|
|
16775
16767
|
format: uuid
|
|
16776
16768
|
description: Target profile id to upsert keys into.
|
|
16777
|
-
chunk:
|
|
16778
|
-
description: Logical grouping the keys are filed under. Defaults to `default`.
|
|
16779
|
-
type: string
|
|
16780
|
-
minLength: 1
|
|
16781
|
-
maxLength: 64
|
|
16782
|
-
default: default
|
|
16783
16769
|
keys:
|
|
16784
16770
|
type: array
|
|
16785
16771
|
minItems: 1
|
|
@@ -16822,12 +16808,8 @@ components:
|
|
|
16822
16808
|
upserted:
|
|
16823
16809
|
type: number
|
|
16824
16810
|
description: Number of keys written (inserted or overwritten).
|
|
16825
|
-
chunk:
|
|
16826
|
-
type: string
|
|
16827
|
-
description: The chunk the keys were filed under.
|
|
16828
16811
|
required:
|
|
16829
16812
|
- upserted
|
|
16830
|
-
- chunk
|
|
16831
16813
|
additionalProperties: false
|
|
16832
16814
|
description: Result of a bulk key upsert. The affected profile's KV snapshot is rebuilt (and the CDN purged) before this returns.
|
|
16833
16815
|
PushI18nKeysRequest:
|
|
@@ -16837,12 +16819,6 @@ components:
|
|
|
16837
16819
|
type: string
|
|
16838
16820
|
format: uuid
|
|
16839
16821
|
description: Target profile id to add keys to.
|
|
16840
|
-
chunk:
|
|
16841
|
-
description: Logical grouping the new keys are filed under. Defaults to `default`.
|
|
16842
|
-
type: string
|
|
16843
|
-
minLength: 1
|
|
16844
|
-
maxLength: 64
|
|
16845
|
-
default: default
|
|
16846
16822
|
keys:
|
|
16847
16823
|
type: array
|
|
16848
16824
|
minItems: 1
|
|
@@ -16873,12 +16849,16 @@ components:
|
|
|
16873
16849
|
- key
|
|
16874
16850
|
- value
|
|
16875
16851
|
additionalProperties: false
|
|
16876
|
-
description: Keys to add. Insert-only — existing keys are reported back as `skipped
|
|
16852
|
+
description: Keys to add. Insert-only by default — existing keys are reported back as `skipped` (set `force` to overwrite them instead).
|
|
16853
|
+
force:
|
|
16854
|
+
type: boolean
|
|
16855
|
+
default: false
|
|
16856
|
+
description: Overwrite keys that already exist with the submitted value instead of skipping them. Overwritten keys come back as `updated`. Off by default so a routine push can never clobber live translations.
|
|
16877
16857
|
required:
|
|
16878
16858
|
- profile_id
|
|
16879
16859
|
- keys
|
|
16880
16860
|
additionalProperties: false
|
|
16881
|
-
description: 'Body for `POST /api/admin/i18n/keys`. Insert-only: keys that already exist are never overwritten — use `PUT /keys/{id}` to change
|
|
16861
|
+
description: 'Body for `POST /api/admin/i18n/keys`. Insert-only by default: keys that already exist are never overwritten — pass `force: true` to overwrite them in bulk, or use `PUT /keys/{id}` to change one value.'
|
|
16882
16862
|
PushI18nKeysResponse:
|
|
16883
16863
|
type: object
|
|
16884
16864
|
properties:
|
|
@@ -16891,23 +16871,30 @@ components:
|
|
|
16891
16871
|
type: array
|
|
16892
16872
|
items:
|
|
16893
16873
|
type: string
|
|
16894
|
-
description: Key names that already existed and were left untouched.
|
|
16874
|
+
description: Key names that already existed and were left untouched. Always empty when `force` was set — those key names come back under `updated` instead.
|
|
16875
|
+
updated:
|
|
16876
|
+
type: array
|
|
16877
|
+
items:
|
|
16878
|
+
type: string
|
|
16879
|
+
description: Key names that already existed and were overwritten with the submitted value. Only ever non-empty when the push set `force`.
|
|
16895
16880
|
pushed_count:
|
|
16896
16881
|
type: number
|
|
16897
16882
|
description: Number of keys inserted (== `added.length`).
|
|
16898
16883
|
skipped_count:
|
|
16899
16884
|
type: number
|
|
16900
16885
|
description: Number of keys skipped (== `skipped.length`).
|
|
16901
|
-
|
|
16902
|
-
|
|
16903
|
-
|
|
16886
|
+
updated_count:
|
|
16887
|
+
type: number
|
|
16888
|
+
description: Number of existing keys overwritten (== `updated.length`).
|
|
16904
16889
|
required:
|
|
16905
16890
|
- added
|
|
16906
16891
|
- skipped
|
|
16892
|
+
- updated
|
|
16907
16893
|
- pushed_count
|
|
16908
16894
|
- skipped_count
|
|
16895
|
+
- updated_count
|
|
16909
16896
|
additionalProperties: false
|
|
16910
|
-
description: Result of
|
|
16897
|
+
description: Result of a key push — what was inserted, what was left alone, and (with `force`) what was overwritten.
|
|
16911
16898
|
UpdateI18nKeyRequest:
|
|
16912
16899
|
type: object
|
|
16913
16900
|
properties:
|
|
@@ -17102,12 +17089,9 @@ components:
|
|
|
17102
17089
|
description: Body for `POST /api/admin/i18n/drafts/{draftId}/keys`. Upserts one staged key into an open draft — inserted when new, overwritten when it already exists. `{{var}}` placeholder names are auto-derived from the value.
|
|
17103
17090
|
PublishI18nProfileRequest:
|
|
17104
17091
|
type: object
|
|
17105
|
-
properties:
|
|
17106
|
-
chunk:
|
|
17107
|
-
description: Optional chunk label to stamp on the audit log. Publishing is profile-wide regardless — the whole profile is snapshotted into one KV blob.
|
|
17108
|
-
type: string
|
|
17092
|
+
properties: {}
|
|
17109
17093
|
additionalProperties: false
|
|
17110
|
-
description: Body for `POST /api/admin/i18n/profiles/{profileId}/publish`.
|
|
17094
|
+
description: Body for `POST /api/admin/i18n/profiles/{profileId}/publish`. Publishing is profile-wide — the whole profile is snapshotted into one KV blob — so the body takes no options.
|
|
17111
17095
|
PublishI18nProfileResponse:
|
|
17112
17096
|
type: object
|
|
17113
17097
|
properties:
|
|
@@ -17118,11 +17102,6 @@ components:
|
|
|
17118
17102
|
profile_id:
|
|
17119
17103
|
type: string
|
|
17120
17104
|
description: Profile that was published.
|
|
17121
|
-
chunk:
|
|
17122
|
-
anyOf:
|
|
17123
|
-
- type: string
|
|
17124
|
-
- type: 'null'
|
|
17125
|
-
description: Audit chunk label, or `null` when none was given.
|
|
17126
17105
|
published_at:
|
|
17127
17106
|
type: string
|
|
17128
17107
|
description: ISO-8601 timestamp of the publish.
|
|
@@ -17151,7 +17130,6 @@ components:
|
|
|
17151
17130
|
required:
|
|
17152
17131
|
- ok
|
|
17153
17132
|
- profile_id
|
|
17154
|
-
- chunk
|
|
17155
17133
|
- published_at
|
|
17156
17134
|
- version
|
|
17157
17135
|
- key_count
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shipeasy/openapi",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "Shipeasy admin OpenAPI 3.2 spec (hand-authored, single source of truth) + the generated TypeScript client, Zod schemas, and types. Consumed by @shipeasy/cli and @shipeasy/mcp.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|