@wevion/cli 1.0.3826 → 1.0.3841
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/openapi.json +58 -12
- package/package.json +1 -1
package/openapi.json
CHANGED
|
@@ -5253,7 +5253,7 @@
|
|
|
5253
5253
|
"tags": [
|
|
5254
5254
|
"campaigns"
|
|
5255
5255
|
],
|
|
5256
|
-
"description": "Updates only the `name` field of a Meta ad (Graph API POST /<ad_id>). The creative is never touched: the existing way to change an ad's name was the creative editor, which re-sends the creative and can restart the learning phase on a delivering ad. Intended for the inline rename affordance in the ads list, so it is safe to wire to an optimistic update with rollback. Meta accepts 400 characters (measured 2026-09-12) and the schema rejects 401 rather than letting the call fail at Meta. Meta also allows one write per object every 30 seconds: this route renames one object per call, so a bulk version needs a spaced queue.",
|
|
5256
|
+
"description": "Updates only the `name` field of a Meta ad (Graph API POST /<ad_id>). The creative is never touched: the existing way to change an ad's name was the creative editor, which re-sends the creative and can restart the learning phase on a delivering ad. Intended for the inline rename affordance in the ads list, so it is safe to wire to an optimistic update with rollback. Meta accepts 400 characters (measured 2026-09-12) and the schema rejects 401 rather than letting the call fail at Meta, naming the offending field in `message` and carrying the framework's own `code: FST_ERR_VALIDATION` rather than a domain code. Meta also allows one write per object every 30 seconds: this route renames one object per call, so a bulk version needs a spaced queue. An `account_id` that belongs to another platform (Google, TikTok, Taboola, Outbrain) answers 400 with `code: PLATFORM_NOT_SUPPORTED`, not 500: it is a caller error, and the inline rename is only offered for Meta in the UI.",
|
|
5257
5257
|
"requestBody": {
|
|
5258
5258
|
"required": true,
|
|
5259
5259
|
"content": {
|
|
@@ -5341,6 +5341,15 @@
|
|
|
5341
5341
|
],
|
|
5342
5342
|
"properties": {
|
|
5343
5343
|
"error": {
|
|
5344
|
+
"description": "Human-readable reason, safe to show to the caller",
|
|
5345
|
+
"type": "string"
|
|
5346
|
+
},
|
|
5347
|
+
"code": {
|
|
5348
|
+
"description": "Machine-readable reason. `PLATFORM_NOT_SUPPORTED` is the domain one today: the ad account belongs to another platform. A schema rejection answers this same 400 with the framework code `FST_ERR_VALIDATION`, so branch on the VALUE — the mere presence of this field is not one specific reason. The 500 never carries it.",
|
|
5349
|
+
"type": "string"
|
|
5350
|
+
},
|
|
5351
|
+
"message": {
|
|
5352
|
+
"description": "On a schema rejection, which field was refused and why (e.g. `body/name must NOT have more than 400 characters`). Absent on the domain errors, whose reason is already in `error`.",
|
|
5344
5353
|
"type": "string"
|
|
5345
5354
|
}
|
|
5346
5355
|
}
|
|
@@ -5370,6 +5379,7 @@
|
|
|
5370
5379
|
],
|
|
5371
5380
|
"properties": {
|
|
5372
5381
|
"error": {
|
|
5382
|
+
"description": "Stable sentence for an unexpected failure. The internal message goes to the log and to Sentry, never here, so this string does not describe the infrastructure and does not change between releases.",
|
|
5373
5383
|
"type": "string"
|
|
5374
5384
|
}
|
|
5375
5385
|
}
|
|
@@ -104590,7 +104600,7 @@
|
|
|
104590
104600
|
"tags": [
|
|
104591
104601
|
"targeting"
|
|
104592
104602
|
],
|
|
104593
|
-
"description": "Proxies Meta Marketing API `search?type=adgeolocation&location_types=[\"country\"]`, returning the ISO alpha-2 codes accepted by `targeting.geo_locations.countries`. Meta owns the list, so it is queried live rather than mirrored in code — the hand-written list this replaces had drifted to 61 of the 247 codes Meta accepts, which is how a customer discovered Kazakhstan was missing. With `q` omitted Meta returns its COMPLETE list (247 countries as of 2026-09-12), small enough for the client to hold and filter locally; `q` is still accepted for narrower lookups. With `account_id` omitted the token is borrowed from any accessible ad account, so the surfaces that have no Meta account selected still get the list. `name` is a fallback: Meta answers in the language of the client's ad account and documents the field as subject to change, so the UI renders the label from `key`. `tiktok_geo_id` is present only for the codes TikTok has a GeoNames id for.
|
|
104603
|
+
"description": "Proxies Meta Marketing API `search?type=adgeolocation&location_types=[\"country\"]`, returning the ISO alpha-2 codes accepted by `targeting.geo_locations.countries`. Meta owns the list, so it is queried live rather than mirrored in code — the hand-written list this replaces had drifted to 61 of the 247 codes Meta accepts, which is how a customer discovered Kazakhstan was missing. With `q` omitted Meta returns its COMPLETE list (247 countries as of 2026-09-12), small enough for the client to hold and filter locally; `q` is still accepted for narrower lookups. With `account_id` omitted the token is borrowed from any accessible ad account, so the surfaces that have no Meta account selected still get the list. `name` is a fallback: Meta answers in the language of the client's ad account and documents the field as subject to change, so the UI renders the label from `key`. `tiktok_geo_id` is present only for the codes TikTok has a GeoNames id for. The two FALLBACK branches never answer an empty list: when Meta cannot be asked the route answers with the local snapshot of the same list, so a picker never reads as \"this country does not exist\". A `q` that matched nothing is the one case where `countries` comes back empty, and it comes back with `degraded: false` — which is how the caller tells a query that matched nothing from an outage. `degraded: true` marks only the case where a Meta token existed and Meta failed or timed out — a workspace with no usable Meta token (a normal state for the TikTok/Google/Taboola surfaces) gets the same snapshot with `degraded: false`, because Meta was never its authority.",
|
|
104594
104604
|
"parameters": [
|
|
104595
104605
|
{
|
|
104596
104606
|
"schema": {
|
|
@@ -296122,7 +296132,14 @@
|
|
|
296122
296132
|
"type": "string"
|
|
296123
296133
|
},
|
|
296124
296134
|
"profile": {
|
|
296125
|
-
"
|
|
296135
|
+
"anyOf": [
|
|
296136
|
+
{
|
|
296137
|
+
"type": "string"
|
|
296138
|
+
},
|
|
296139
|
+
{
|
|
296140
|
+
"type": "null"
|
|
296141
|
+
}
|
|
296142
|
+
]
|
|
296126
296143
|
},
|
|
296127
296144
|
"resolver_version": {
|
|
296128
296145
|
"type": "string"
|
|
@@ -296410,7 +296427,14 @@
|
|
|
296410
296427
|
"type": "string"
|
|
296411
296428
|
},
|
|
296412
296429
|
"profile": {
|
|
296413
|
-
"
|
|
296430
|
+
"anyOf": [
|
|
296431
|
+
{
|
|
296432
|
+
"type": "string"
|
|
296433
|
+
},
|
|
296434
|
+
{
|
|
296435
|
+
"type": "null"
|
|
296436
|
+
}
|
|
296437
|
+
]
|
|
296414
296438
|
},
|
|
296415
296439
|
"resolver_version": {
|
|
296416
296440
|
"type": "string"
|
|
@@ -296747,7 +296771,14 @@
|
|
|
296747
296771
|
"type": "string"
|
|
296748
296772
|
},
|
|
296749
296773
|
"profile": {
|
|
296750
|
-
"
|
|
296774
|
+
"anyOf": [
|
|
296775
|
+
{
|
|
296776
|
+
"type": "string"
|
|
296777
|
+
},
|
|
296778
|
+
{
|
|
296779
|
+
"type": "null"
|
|
296780
|
+
}
|
|
296781
|
+
]
|
|
296751
296782
|
},
|
|
296752
296783
|
"resolver_version": {
|
|
296753
296784
|
"type": "string"
|
|
@@ -296991,7 +297022,14 @@
|
|
|
296991
297022
|
"type": "string"
|
|
296992
297023
|
},
|
|
296993
297024
|
"profile": {
|
|
296994
|
-
"
|
|
297025
|
+
"anyOf": [
|
|
297026
|
+
{
|
|
297027
|
+
"type": "string"
|
|
297028
|
+
},
|
|
297029
|
+
{
|
|
297030
|
+
"type": "null"
|
|
297031
|
+
}
|
|
297032
|
+
]
|
|
296995
297033
|
},
|
|
296996
297034
|
"resolver_version": {
|
|
296997
297035
|
"type": "string"
|
|
@@ -318831,6 +318869,9 @@
|
|
|
318831
318869
|
"enum": [
|
|
318832
318870
|
"enterprise"
|
|
318833
318871
|
]
|
|
318872
|
+
},
|
|
318873
|
+
{
|
|
318874
|
+
"type": "null"
|
|
318834
318875
|
}
|
|
318835
318876
|
]
|
|
318836
318877
|
},
|
|
@@ -319114,7 +319155,8 @@
|
|
|
319114
319155
|
"type": "string"
|
|
319115
319156
|
},
|
|
319116
319157
|
"campaign_name": {
|
|
319117
|
-
"description": "Campaign name",
|
|
319158
|
+
"description": "Campaign name. Meta accepts 400 characters and rejects one more (measured on v25.0, 2026-09-12), so the schema refuses 401 here instead of letting the campaign creation fail at Meta.",
|
|
319159
|
+
"maxLength": 400,
|
|
319118
319160
|
"type": "string"
|
|
319119
319161
|
},
|
|
319120
319162
|
"budget_optimization": {
|
|
@@ -319127,9 +319169,10 @@
|
|
|
319127
319169
|
"type": "number"
|
|
319128
319170
|
},
|
|
319129
319171
|
"adset_names": {
|
|
319130
|
-
"description": "Ad Set names",
|
|
319172
|
+
"description": "Ad Set names, one per ad set. Each one is capped at the measured Meta limit (400 characters).",
|
|
319131
319173
|
"type": "array",
|
|
319132
319174
|
"items": {
|
|
319175
|
+
"maxLength": 400,
|
|
319133
319176
|
"type": "string"
|
|
319134
319177
|
}
|
|
319135
319178
|
},
|
|
@@ -319494,9 +319537,10 @@
|
|
|
319494
319537
|
"type": "string"
|
|
319495
319538
|
},
|
|
319496
319539
|
"ad_names": {
|
|
319497
|
-
"description": "Ad names",
|
|
319540
|
+
"description": "Ad names, one per ad. Each one is capped at the measured Meta limit (400 characters).",
|
|
319498
319541
|
"type": "array",
|
|
319499
319542
|
"items": {
|
|
319543
|
+
"maxLength": 400,
|
|
319500
319544
|
"type": "string"
|
|
319501
319545
|
}
|
|
319502
319546
|
},
|
|
@@ -320668,7 +320712,8 @@
|
|
|
320668
320712
|
]
|
|
320669
320713
|
},
|
|
320670
320714
|
"campaign_name": {
|
|
320671
|
-
"description": "Campaign name",
|
|
320715
|
+
"description": "Campaign name. Meta accepts 400 characters and rejects one more (measured on v25.0, 2026-09-12), so the schema refuses 401 here instead of letting the campaign creation fail at Meta.",
|
|
320716
|
+
"maxLength": 400,
|
|
320672
320717
|
"type": "string"
|
|
320673
320718
|
},
|
|
320674
320719
|
"campaign_objective": {
|
|
@@ -320983,7 +321028,8 @@
|
|
|
320983
321028
|
],
|
|
320984
321029
|
"properties": {
|
|
320985
321030
|
"name": {
|
|
320986
|
-
"description": "Ad Set name",
|
|
321031
|
+
"description": "Ad Set name. Same measured limit as the campaign and the ad name (400): over it Meta rejects the ad set, and on the nested path the campaign has already been created.",
|
|
321032
|
+
"maxLength": 400,
|
|
320987
321033
|
"type": "string"
|
|
320988
321034
|
},
|
|
320989
321035
|
"bid_amount": {
|
|
@@ -321703,7 +321749,7 @@
|
|
|
321703
321749
|
],
|
|
321704
321750
|
"properties": {
|
|
321705
321751
|
"name": {
|
|
321706
|
-
"description": "Ad name. Measured against Meta v25.0 on 2026-09-12: 400 characters are accepted and stored, 401 is rejected — so the schema refuses
|
|
321752
|
+
"description": "Ad name. Measured against Meta v25.0 on 2026-09-12: 400 characters are accepted and stored, 401 is rejected — so the schema refuses it here instead of letting the whole ad creation fail at Meta. Same number as the campaign and ad set names (AD_NAME_MAX_LENGTH), and now enforced on every launch door.",
|
|
321707
321753
|
"maxLength": 400,
|
|
321708
321754
|
"type": "string"
|
|
321709
321755
|
},
|