direct-cli 0.1.2__tar.gz → 0.2.2__tar.gz
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.
- {direct_cli-0.1.2 → direct_cli-0.2.2}/PKG-INFO +95 -83
- {direct_cli-0.1.2 → direct_cli-0.2.2}/README.md +94 -82
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/auth.py +3 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/cli.py +15 -6
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/adextensions.py +28 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/adgroups.py +13 -2
- direct_cli-0.1.2/direct_cli/commands/negativekeywordsharedsets.py → direct_cli-0.2.2/direct_cli/commands/adimages.py +43 -22
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/ads.py +26 -4
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/agencyclients.py +43 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/audiencetargets.py +3 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/bidmodifiers.py +66 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/bids.py +3 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/businesses.py +0 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/campaigns.py +3 -2
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/changes.py +4 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/clients.py +3 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/creatives.py +3 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/dictionaries.py +3 -2
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/dynamicads.py +71 -7
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/feeds.py +69 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/keywordbids.py +0 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/keywords.py +3 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/keywordsresearch.py +30 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/leads.py +3 -1
- direct_cli-0.2.2/direct_cli/commands/negativekeywordsharedsets.py +170 -0
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/reports.py +0 -4
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/retargeting.py +25 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/sitelinks.py +25 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/smartadtargets.py +78 -2
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/turbopages.py +3 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/vcards.py +25 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/output.py +1 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/utils.py +1 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli.egg-info/PKG-INFO +95 -83
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli.egg-info/SOURCES.txt +2 -8
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli.egg-info/entry_points.txt +1 -0
- {direct_cli-0.1.2 → direct_cli-0.2.2}/pyproject.toml +2 -1
- direct_cli-0.2.2/setup.cfg +8 -0
- {direct_cli-0.1.2 → direct_cli-0.2.2}/setup.py +0 -1
- {direct_cli-0.1.2 → direct_cli-0.2.2}/tests/test_auth_bw.py +5 -15
- {direct_cli-0.1.2 → direct_cli-0.2.2}/tests/test_auth_op.py +22 -7
- direct_cli-0.2.2/tests/test_cli.py +116 -0
- {direct_cli-0.1.2 → direct_cli-0.2.2}/tests/test_comprehensive.py +11 -10
- direct_cli-0.2.2/tests/test_dry_run.py +661 -0
- {direct_cli-0.1.2 → direct_cli-0.2.2}/tests/test_integration.py +75 -19
- direct_cli-0.1.2/.github/copilot-instructions.md +0 -91
- direct_cli-0.1.2/.github/workflows/claude-code-review.yml +0 -44
- direct_cli-0.1.2/.github/workflows/claude.yml +0 -50
- direct_cli-0.1.2/.gitignore +0 -57
- direct_cli-0.1.2/AGENTS.md +0 -382
- direct_cli-0.1.2/CLAUDE.md +0 -59
- direct_cli-0.1.2/direct_cli/commands/adimages.py +0 -63
- direct_cli-0.1.2/scripts/release_pypi.sh +0 -116
- direct_cli-0.1.2/setup.cfg +0 -4
- direct_cli-0.1.2/tests/__init__.py +0 -1
- direct_cli-0.1.2/tests/test_cli.py +0 -65
- {direct_cli-0.1.2 → direct_cli-0.2.2}/.env.example +0 -0
- {direct_cli-0.1.2 → direct_cli-0.2.2}/MANIFEST.in +0 -0
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/__init__.py +0 -0
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/api.py +0 -0
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli/commands/__init__.py +0 -0
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli.egg-info/dependency_links.txt +0 -0
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli.egg-info/requires.txt +0 -0
- {direct_cli-0.1.2 → direct_cli-0.2.2}/direct_cli.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: direct-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Command-line interface for Yandex Direct API
|
|
5
5
|
Author: axisrow
|
|
6
6
|
License: MIT
|
|
@@ -58,9 +58,11 @@ YANDEX_DIRECT_LOGIN=your_yandex_login
|
|
|
58
58
|
Or pass credentials directly per command:
|
|
59
59
|
|
|
60
60
|
```bash
|
|
61
|
-
direct
|
|
61
|
+
direct --token YOUR_TOKEN --login YOUR_LOGIN campaigns get
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
+
Install with `pip install direct-cli`, then run commands with `direct`.
|
|
65
|
+
|
|
64
66
|
### Global Options
|
|
65
67
|
|
|
66
68
|
| Option | Description |
|
|
@@ -71,63 +73,67 @@ direct-cli --token YOUR_TOKEN --login YOUR_LOGIN campaigns get
|
|
|
71
73
|
|
|
72
74
|
### Usage
|
|
73
75
|
|
|
74
|
-
All commands follow the pattern: `direct
|
|
76
|
+
All commands follow the pattern: `direct <resource> <action> [options]`
|
|
77
|
+
|
|
78
|
+
Plugin-compatible aliases are also available for integrations that expect
|
|
79
|
+
canonical MCP-facing names: `dynamictargets`, `smarttargets`,
|
|
80
|
+
`negativekeywords`, `list`, `checkcamp`, `checkdict`, and `has-volume`.
|
|
75
81
|
|
|
76
82
|
#### Campaigns
|
|
77
83
|
|
|
78
84
|
```bash
|
|
79
85
|
# Get campaigns
|
|
80
|
-
direct
|
|
81
|
-
direct
|
|
82
|
-
direct
|
|
83
|
-
direct
|
|
86
|
+
direct campaigns get
|
|
87
|
+
direct campaigns get --status ACTIVE
|
|
88
|
+
direct campaigns get --ids 1,2,3 --format table
|
|
89
|
+
direct campaigns get --fetch-all --format csv --output campaigns.csv
|
|
84
90
|
|
|
85
91
|
# Create (use --dry-run to preview the request)
|
|
86
|
-
direct
|
|
87
|
-
direct
|
|
92
|
+
direct campaigns add --name "My Campaign" --start-date 2024-02-01 --type TEXT_CAMPAIGN --budget 1000
|
|
93
|
+
direct campaigns add --name "My Campaign" --start-date 2024-02-01 --dry-run
|
|
88
94
|
|
|
89
95
|
# Update / lifecycle
|
|
90
|
-
direct
|
|
91
|
-
direct
|
|
92
|
-
direct
|
|
93
|
-
direct
|
|
94
|
-
direct
|
|
95
|
-
direct
|
|
96
|
+
direct campaigns update --id 12345 --name "New Name"
|
|
97
|
+
direct campaigns suspend --id 12345
|
|
98
|
+
direct campaigns resume --id 12345
|
|
99
|
+
direct campaigns archive --id 12345
|
|
100
|
+
direct campaigns unarchive --id 12345
|
|
101
|
+
direct campaigns delete --id 12345
|
|
96
102
|
```
|
|
97
103
|
|
|
98
104
|
#### Ad Groups
|
|
99
105
|
|
|
100
106
|
```bash
|
|
101
|
-
direct
|
|
102
|
-
direct
|
|
103
|
-
direct
|
|
104
|
-
direct
|
|
107
|
+
direct adgroups get --campaign-ids 1,2,3 --limit 50
|
|
108
|
+
direct adgroups add --name "Group 1" --campaign-id 12345 --dry-run
|
|
109
|
+
direct adgroups update --id 67890 --name "New Name"
|
|
110
|
+
direct adgroups delete --id 67890
|
|
105
111
|
```
|
|
106
112
|
|
|
107
113
|
#### Ads
|
|
108
114
|
|
|
109
115
|
```bash
|
|
110
|
-
direct
|
|
111
|
-
direct
|
|
112
|
-
direct
|
|
113
|
-
direct
|
|
114
|
-
direct
|
|
116
|
+
direct ads get --campaign-ids 1,2,3
|
|
117
|
+
direct ads get --adgroup-ids 45678 --format table
|
|
118
|
+
direct ads add --adgroup-id 12345 --type TEXT_AD --title "Title" --text "Ad text" --href "https://example.com" --dry-run
|
|
119
|
+
direct ads update --id 99999 --status PAUSED
|
|
120
|
+
direct ads delete --id 99999
|
|
115
121
|
```
|
|
116
122
|
|
|
117
123
|
#### Keywords
|
|
118
124
|
|
|
119
125
|
```bash
|
|
120
|
-
direct
|
|
121
|
-
direct
|
|
122
|
-
direct
|
|
123
|
-
direct
|
|
126
|
+
direct keywords get --campaign-ids 1,2,3
|
|
127
|
+
direct keywords add --adgroup-id 12345 --keyword "buy laptop" --bid 10.50 --dry-run
|
|
128
|
+
direct keywords update --id 88888 --bid 15.00
|
|
129
|
+
direct keywords delete --id 88888
|
|
124
130
|
```
|
|
125
131
|
|
|
126
132
|
#### Reports
|
|
127
133
|
|
|
128
134
|
```bash
|
|
129
135
|
# Get a report (saved to file)
|
|
130
|
-
direct
|
|
136
|
+
direct reports get \
|
|
131
137
|
--type CAMPAIGN_PERFORMANCE_REPORT \
|
|
132
138
|
--from 2024-01-01 --to 2024-01-31 \
|
|
133
139
|
--name "January Report" \
|
|
@@ -135,7 +141,7 @@ direct-cli reports get \
|
|
|
135
141
|
--format csv --output report.csv
|
|
136
142
|
|
|
137
143
|
# List available report types
|
|
138
|
-
direct
|
|
144
|
+
direct reports list-types
|
|
139
145
|
```
|
|
140
146
|
|
|
141
147
|
Available report types: `CAMPAIGN_PERFORMANCE_REPORT`, `ADGROUP_PERFORMANCE_REPORT`, `AD_PERFORMANCE_REPORT`, `CRITERIA_PERFORMANCE_REPORT`, `CUSTOM_REPORT`, `REACH_AND_FREQUENCY_CAMPAIGN_REPORT`, `SEARCH_QUERY_PERFORMANCE_REPORT`
|
|
@@ -144,21 +150,21 @@ Available report types: `CAMPAIGN_PERFORMANCE_REPORT`, `ADGROUP_PERFORMANCE_REPO
|
|
|
144
150
|
|
|
145
151
|
```bash
|
|
146
152
|
# Reference dictionaries
|
|
147
|
-
direct
|
|
153
|
+
direct dictionaries get --names Currencies,GeoRegions
|
|
148
154
|
|
|
149
155
|
# Client info
|
|
150
|
-
direct
|
|
156
|
+
direct clients get --fields ClientId,Login,Currency
|
|
151
157
|
|
|
152
158
|
# Changes feed
|
|
153
|
-
direct
|
|
159
|
+
direct changes get --campaign-ids 1,2,3
|
|
154
160
|
|
|
155
161
|
# Retargeting lists
|
|
156
|
-
direct
|
|
162
|
+
direct retargeting get --limit 10
|
|
157
163
|
|
|
158
164
|
# Ad extensions, sitelinks, vCards, images, creatives, feeds, bids, etc.
|
|
159
|
-
direct
|
|
160
|
-
direct
|
|
161
|
-
direct
|
|
165
|
+
direct adextensions get
|
|
166
|
+
direct sitelinks get --ids 1,2,3
|
|
167
|
+
direct bids get --campaign-ids 1,2,3
|
|
162
168
|
```
|
|
163
169
|
|
|
164
170
|
### Output Formats
|
|
@@ -173,15 +179,15 @@ All `get` commands support `--format`:
|
|
|
173
179
|
| `tsv` | TSV |
|
|
174
180
|
|
|
175
181
|
```bash
|
|
176
|
-
direct
|
|
177
|
-
direct
|
|
182
|
+
direct campaigns get --format table
|
|
183
|
+
direct campaigns get --format csv --output campaigns.csv
|
|
178
184
|
```
|
|
179
185
|
|
|
180
186
|
### Pagination
|
|
181
187
|
|
|
182
188
|
```bash
|
|
183
|
-
direct
|
|
184
|
-
direct
|
|
189
|
+
direct campaigns get --limit 10 # first 10 results
|
|
190
|
+
direct campaigns get --fetch-all # all pages
|
|
185
191
|
```
|
|
186
192
|
|
|
187
193
|
### ⚠️ Destructive Commands
|
|
@@ -203,7 +209,7 @@ Commands that affect bids and spending: `bids set`, `keywordbids set`, `bidmodif
|
|
|
203
209
|
Use `--dry-run` on `add` / `update` commands to preview the API request before sending:
|
|
204
210
|
|
|
205
211
|
```bash
|
|
206
|
-
direct
|
|
212
|
+
direct campaigns add --name "Test" --start-date 2024-01-01 --dry-run
|
|
207
213
|
```
|
|
208
214
|
|
|
209
215
|
### Release Process
|
|
@@ -264,9 +270,11 @@ YANDEX_DIRECT_LOGIN=ваш_логин_на_яндексе
|
|
|
264
270
|
Или передавайте credentials напрямую в команду:
|
|
265
271
|
|
|
266
272
|
```bash
|
|
267
|
-
direct
|
|
273
|
+
direct --token ВАШ_ТОКЕН --login ВАШ_ЛОГИН campaigns get
|
|
268
274
|
```
|
|
269
275
|
|
|
276
|
+
Установка остаётся через `pip install direct-cli`, а запуск команд теперь идет через `direct`.
|
|
277
|
+
|
|
270
278
|
### Глобальные опции
|
|
271
279
|
|
|
272
280
|
| Опция | Описание |
|
|
@@ -277,63 +285,67 @@ direct-cli --token ВАШ_ТОКЕН --login ВАШ_ЛОГИН campaigns get
|
|
|
277
285
|
|
|
278
286
|
### Использование
|
|
279
287
|
|
|
280
|
-
|
|
288
|
+
Для интеграций доступны и alias-имена, совместимые с MCP-контрактом:
|
|
289
|
+
`dynamictargets`, `smarttargets`, `negativekeywords`, `list`, `checkcamp`,
|
|
290
|
+
`checkdict`, `has-volume`.
|
|
291
|
+
|
|
292
|
+
Все команды следуют шаблону: `direct <ресурс> <действие> [опции]`
|
|
281
293
|
|
|
282
294
|
#### Кампании
|
|
283
295
|
|
|
284
296
|
```bash
|
|
285
297
|
# Получить кампании
|
|
286
|
-
direct
|
|
287
|
-
direct
|
|
288
|
-
direct
|
|
289
|
-
direct
|
|
298
|
+
direct campaigns get
|
|
299
|
+
direct campaigns get --status ACTIVE
|
|
300
|
+
direct campaigns get --ids 1,2,3 --format table
|
|
301
|
+
direct campaigns get --fetch-all --format csv --output campaigns.csv
|
|
290
302
|
|
|
291
303
|
# Создать (--dry-run покажет запрос без отправки)
|
|
292
|
-
direct
|
|
293
|
-
direct
|
|
304
|
+
direct campaigns add --name "Моя кампания" --start-date 2024-02-01 --type TEXT_CAMPAIGN --budget 1000
|
|
305
|
+
direct campaigns add --name "Моя кампания" --start-date 2024-02-01 --dry-run
|
|
294
306
|
|
|
295
307
|
# Обновление и управление статусом
|
|
296
|
-
direct
|
|
297
|
-
direct
|
|
298
|
-
direct
|
|
299
|
-
direct
|
|
300
|
-
direct
|
|
301
|
-
direct
|
|
308
|
+
direct campaigns update --id 12345 --name "Новое название"
|
|
309
|
+
direct campaigns suspend --id 12345
|
|
310
|
+
direct campaigns resume --id 12345
|
|
311
|
+
direct campaigns archive --id 12345
|
|
312
|
+
direct campaigns unarchive --id 12345
|
|
313
|
+
direct campaigns delete --id 12345
|
|
302
314
|
```
|
|
303
315
|
|
|
304
316
|
#### Группы объявлений
|
|
305
317
|
|
|
306
318
|
```bash
|
|
307
|
-
direct
|
|
308
|
-
direct
|
|
309
|
-
direct
|
|
310
|
-
direct
|
|
319
|
+
direct adgroups get --campaign-ids 1,2,3 --limit 50
|
|
320
|
+
direct adgroups add --name "Группа 1" --campaign-id 12345 --dry-run
|
|
321
|
+
direct adgroups update --id 67890 --name "Новое название"
|
|
322
|
+
direct adgroups delete --id 67890
|
|
311
323
|
```
|
|
312
324
|
|
|
313
325
|
#### Объявления
|
|
314
326
|
|
|
315
327
|
```bash
|
|
316
|
-
direct
|
|
317
|
-
direct
|
|
318
|
-
direct
|
|
319
|
-
direct
|
|
320
|
-
direct
|
|
328
|
+
direct ads get --campaign-ids 1,2,3
|
|
329
|
+
direct ads get --adgroup-ids 45678 --format table
|
|
330
|
+
direct ads add --adgroup-id 12345 --type TEXT_AD --title "Заголовок" --text "Текст объявления" --href "https://example.com" --dry-run
|
|
331
|
+
direct ads update --id 99999 --status PAUSED
|
|
332
|
+
direct ads delete --id 99999
|
|
321
333
|
```
|
|
322
334
|
|
|
323
335
|
#### Ключевые слова
|
|
324
336
|
|
|
325
337
|
```bash
|
|
326
|
-
direct
|
|
327
|
-
direct
|
|
328
|
-
direct
|
|
329
|
-
direct
|
|
338
|
+
direct keywords get --campaign-ids 1,2,3
|
|
339
|
+
direct keywords add --adgroup-id 12345 --keyword "купить ноутбук" --bid 10.50 --dry-run
|
|
340
|
+
direct keywords update --id 88888 --bid 15.00
|
|
341
|
+
direct keywords delete --id 88888
|
|
330
342
|
```
|
|
331
343
|
|
|
332
344
|
#### Отчёты
|
|
333
345
|
|
|
334
346
|
```bash
|
|
335
347
|
# Сформировать отчёт (сохраняется в файл)
|
|
336
|
-
direct
|
|
348
|
+
direct reports get \
|
|
337
349
|
--type CAMPAIGN_PERFORMANCE_REPORT \
|
|
338
350
|
--from 2024-01-01 --to 2024-01-31 \
|
|
339
351
|
--name "Отчёт за январь" \
|
|
@@ -341,7 +353,7 @@ direct-cli reports get \
|
|
|
341
353
|
--format csv --output report.csv
|
|
342
354
|
|
|
343
355
|
# Список доступных типов отчётов
|
|
344
|
-
direct
|
|
356
|
+
direct reports list-types
|
|
345
357
|
```
|
|
346
358
|
|
|
347
359
|
Доступные типы: `CAMPAIGN_PERFORMANCE_REPORT`, `ADGROUP_PERFORMANCE_REPORT`, `AD_PERFORMANCE_REPORT`, `CRITERIA_PERFORMANCE_REPORT`, `CUSTOM_REPORT`, `REACH_AND_FREQUENCY_CAMPAIGN_REPORT`, `SEARCH_QUERY_PERFORMANCE_REPORT`
|
|
@@ -350,21 +362,21 @@ direct-cli reports list-types
|
|
|
350
362
|
|
|
351
363
|
```bash
|
|
352
364
|
# Справочники
|
|
353
|
-
direct
|
|
365
|
+
direct dictionaries get --names Currencies,GeoRegions
|
|
354
366
|
|
|
355
367
|
# Информация о клиенте
|
|
356
|
-
direct
|
|
368
|
+
direct clients get --fields ClientId,Login,Currency
|
|
357
369
|
|
|
358
370
|
# Лента изменений
|
|
359
|
-
direct
|
|
371
|
+
direct changes get --campaign-ids 1,2,3
|
|
360
372
|
|
|
361
373
|
# Списки ретаргетинга
|
|
362
|
-
direct
|
|
374
|
+
direct retargeting get --limit 10
|
|
363
375
|
|
|
364
376
|
# Расширения объявлений, быстрые ссылки, визитки, изображения, ставки и т.д.
|
|
365
|
-
direct
|
|
366
|
-
direct
|
|
367
|
-
direct
|
|
377
|
+
direct adextensions get
|
|
378
|
+
direct sitelinks get --ids 1,2,3
|
|
379
|
+
direct bids get --campaign-ids 1,2,3
|
|
368
380
|
```
|
|
369
381
|
|
|
370
382
|
### Форматы вывода
|
|
@@ -379,15 +391,15 @@ direct-cli bids get --campaign-ids 1,2,3
|
|
|
379
391
|
| `tsv` | TSV |
|
|
380
392
|
|
|
381
393
|
```bash
|
|
382
|
-
direct
|
|
383
|
-
direct
|
|
394
|
+
direct campaigns get --format table
|
|
395
|
+
direct campaigns get --format csv --output campaigns.csv
|
|
384
396
|
```
|
|
385
397
|
|
|
386
398
|
### Пагинация
|
|
387
399
|
|
|
388
400
|
```bash
|
|
389
|
-
direct
|
|
390
|
-
direct
|
|
401
|
+
direct campaigns get --limit 10 # первые 10 результатов
|
|
402
|
+
direct campaigns get --fetch-all # все страницы
|
|
391
403
|
```
|
|
392
404
|
|
|
393
405
|
### ⚠️ Опасные команды
|
|
@@ -409,7 +421,7 @@ direct-cli campaigns get --fetch-all # все страницы
|
|
|
409
421
|
Используйте `--dry-run` в командах `add` / `update`, чтобы увидеть тело запроса до отправки:
|
|
410
422
|
|
|
411
423
|
```bash
|
|
412
|
-
direct
|
|
424
|
+
direct campaigns add --name "Тест" --start-date 2024-01-01 --dry-run
|
|
413
425
|
```
|
|
414
426
|
|
|
415
427
|
### Публикация на PyPI
|