adapty 0.10.0 → 0.12.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/README.md +32 -0
- package/dist/cli/base/adapty/flags.d.ts +65 -0
- package/dist/cli/base/adapty/flags.js +95 -0
- package/dist/cli/base/adapty/index.d.ts +1 -0
- package/dist/cli/base/adapty/index.js +1 -0
- package/dist/cli/base/attribution/flags.d.ts +3 -3
- package/dist/cli/base/attribution/flags.js +5 -20
- package/dist/cli/commands/analytics/catalog.d.ts +10 -0
- package/dist/cli/commands/analytics/catalog.js +52 -0
- package/dist/cli/commands/analytics/chart.d.ts +21 -0
- package/dist/cli/commands/analytics/chart.js +47 -0
- package/dist/cli/commands/analytics/cohort.d.ts +19 -0
- package/dist/cli/commands/analytics/cohort.js +40 -0
- package/dist/cli/commands/analytics/conversion.d.ts +20 -0
- package/dist/cli/commands/analytics/conversion.js +44 -0
- package/dist/cli/commands/analytics/funnel.d.ts +16 -0
- package/dist/cli/commands/analytics/funnel.js +32 -0
- package/dist/cli/commands/analytics/ltv.d.ts +19 -0
- package/dist/cli/commands/analytics/ltv.js +40 -0
- package/dist/cli/commands/analytics/retention.d.ts +17 -0
- package/dist/cli/commands/analytics/retention.js +41 -0
- package/dist/cli/commands/analytics/values.d.ts +11 -0
- package/dist/cli/commands/analytics/values.js +33 -0
- package/dist/cli/commands/attribution/report/command.js +6 -11
- package/dist/cli/errors.js +8 -1
- package/dist/cli/input/filter.d.ts +11 -0
- package/dist/cli/input/filter.js +16 -0
- package/dist/cli/input/period.d.ts +10 -0
- package/dist/cli/input/period.js +23 -0
- package/dist/cli/views/analytics/csv.d.ts +3 -0
- package/dist/cli/views/analytics/csv.js +16 -0
- package/dist/cli/views/analytics/human.d.ts +41 -0
- package/dist/cli/views/analytics/human.js +134 -0
- package/dist/cli/views/analytics/segments.d.ts +68 -0
- package/dist/cli/views/analytics/segments.js +185 -0
- package/dist/commands/analytics/catalog.d.ts +1 -0
- package/dist/commands/analytics/catalog.js +2 -0
- package/dist/commands/analytics/chart.d.ts +1 -0
- package/dist/commands/analytics/chart.js +2 -0
- package/dist/commands/analytics/cohort.d.ts +1 -0
- package/dist/commands/analytics/cohort.js +2 -0
- package/dist/commands/analytics/conversion.d.ts +1 -0
- package/dist/commands/analytics/conversion.js +2 -0
- package/dist/commands/analytics/funnel.d.ts +1 -0
- package/dist/commands/analytics/funnel.js +2 -0
- package/dist/commands/analytics/ltv.d.ts +1 -0
- package/dist/commands/analytics/ltv.js +2 -0
- package/dist/commands/analytics/retention.d.ts +1 -0
- package/dist/commands/analytics/retention.js +2 -0
- package/dist/commands/analytics/values.d.ts +1 -0
- package/dist/commands/analytics/values.js +2 -0
- package/dist/commands/placements/create.js +4 -0
- package/dist/commands/placements/update.js +4 -0
- package/dist/lib/api-schemas.d.ts +24 -1
- package/dist/lib/placement-audiences.d.ts +3 -1
- package/dist/lib/placement-audiences.js +16 -9
- package/dist/sdk/adapty/analytics/catalog.d.ts +51 -0
- package/dist/sdk/adapty/analytics/catalog.js +5 -0
- package/dist/sdk/adapty/analytics/chart.d.ts +41 -0
- package/dist/sdk/adapty/analytics/chart.js +6 -0
- package/dist/sdk/adapty/analytics/cohort.d.ts +79 -0
- package/dist/sdk/adapty/analytics/cohort.js +4 -0
- package/dist/sdk/adapty/analytics/conversion.d.ts +55 -0
- package/dist/sdk/adapty/analytics/conversion.js +7 -0
- package/dist/sdk/adapty/analytics/funnel.d.ts +41 -0
- package/dist/sdk/adapty/analytics/funnel.js +3 -0
- package/dist/sdk/adapty/analytics/index.d.ts +24 -0
- package/dist/sdk/adapty/analytics/index.js +13 -0
- package/dist/sdk/adapty/analytics/ltv.d.ts +27 -0
- package/dist/sdk/adapty/analytics/ltv.js +4 -0
- package/dist/sdk/adapty/analytics/model.d.ts +53 -0
- package/dist/sdk/adapty/analytics/model.js +12 -0
- package/dist/sdk/adapty/analytics/query.d.ts +48 -0
- package/dist/sdk/adapty/analytics/query.js +52 -0
- package/dist/sdk/adapty/analytics/renewal-periods.d.ts +23 -0
- package/dist/sdk/adapty/analytics/renewal-periods.js +27 -0
- package/dist/sdk/adapty/analytics/resource.d.ts +29 -0
- package/dist/sdk/adapty/analytics/resource.js +72 -0
- package/dist/sdk/adapty/analytics/retention.d.ts +32 -0
- package/dist/sdk/adapty/analytics/retention.js +6 -0
- package/dist/sdk/adapty/analytics/values.d.ts +20 -0
- package/dist/sdk/adapty/analytics/values.js +1 -0
- package/dist/sdk/adapty/index.d.ts +4 -0
- package/dist/sdk/adapty/index.js +3 -0
- package/dist/sdk/attribution/index.d.ts +1 -1
- package/dist/sdk/attribution/index.js +1 -1
- package/dist/sdk/attribution/report.d.ts +0 -2
- package/dist/sdk/attribution/report.js +2 -26
- package/dist/sdk/core/dates.d.ts +15 -0
- package/dist/sdk/core/dates.js +34 -0
- package/dist/sdk/core/errors.d.ts +3 -0
- package/oclif.manifest.json +898 -134
- package/package.json +4 -1
package/oclif.manifest.json
CHANGED
|
@@ -66,13 +66,12 @@
|
|
|
66
66
|
"feedback.js"
|
|
67
67
|
]
|
|
68
68
|
},
|
|
69
|
-
"
|
|
69
|
+
"access-levels:create": {
|
|
70
70
|
"aliases": [],
|
|
71
71
|
"args": {},
|
|
72
|
-
"description": "Create a
|
|
72
|
+
"description": "Create a custom access level",
|
|
73
73
|
"examples": [
|
|
74
|
-
"<%= config.bin %>
|
|
75
|
-
"<%= config.bin %> apps create --title \"My App\" --platform ios --platform android --apple-bundle-id com.example.app --google-bundle-id com.example.app"
|
|
74
|
+
"<%= config.bin %> access-levels create --app 550e8400-... --sdk-id vip --title \"VIP Access\""
|
|
76
75
|
],
|
|
77
76
|
"flags": {
|
|
78
77
|
"json": {
|
|
@@ -82,36 +81,26 @@
|
|
|
82
81
|
"allowNo": false,
|
|
83
82
|
"type": "boolean"
|
|
84
83
|
},
|
|
85
|
-
"
|
|
86
|
-
"description": "App
|
|
87
|
-
"name": "
|
|
84
|
+
"app": {
|
|
85
|
+
"description": "App ID (UUID)",
|
|
86
|
+
"name": "app",
|
|
88
87
|
"required": true,
|
|
89
88
|
"hasDynamicHelp": false,
|
|
90
89
|
"multiple": false,
|
|
91
90
|
"type": "option"
|
|
92
91
|
},
|
|
93
|
-
"
|
|
94
|
-
"description": "
|
|
95
|
-
"name": "
|
|
92
|
+
"sdk-id": {
|
|
93
|
+
"description": "Access level SDK identifier",
|
|
94
|
+
"name": "sdk-id",
|
|
96
95
|
"required": true,
|
|
97
96
|
"hasDynamicHelp": false,
|
|
98
|
-
"multiple": true,
|
|
99
|
-
"options": [
|
|
100
|
-
"ios",
|
|
101
|
-
"android"
|
|
102
|
-
],
|
|
103
|
-
"type": "option"
|
|
104
|
-
},
|
|
105
|
-
"apple-bundle-id": {
|
|
106
|
-
"description": "Apple bundle ID (required with --platform ios)",
|
|
107
|
-
"name": "apple-bundle-id",
|
|
108
|
-
"hasDynamicHelp": false,
|
|
109
97
|
"multiple": false,
|
|
110
98
|
"type": "option"
|
|
111
99
|
},
|
|
112
|
-
"
|
|
113
|
-
"description": "
|
|
114
|
-
"name": "
|
|
100
|
+
"title": {
|
|
101
|
+
"description": "Access level title",
|
|
102
|
+
"name": "title",
|
|
103
|
+
"required": true,
|
|
115
104
|
"hasDynamicHelp": false,
|
|
116
105
|
"multiple": false,
|
|
117
106
|
"type": "option"
|
|
@@ -119,31 +108,32 @@
|
|
|
119
108
|
},
|
|
120
109
|
"hasDynamicHelp": false,
|
|
121
110
|
"hiddenAliases": [],
|
|
122
|
-
"id": "
|
|
111
|
+
"id": "access-levels:create",
|
|
123
112
|
"pluginAlias": "adapty",
|
|
124
113
|
"pluginName": "adapty",
|
|
125
114
|
"pluginType": "core",
|
|
126
115
|
"strict": true,
|
|
116
|
+
"enableJsonFlag": true,
|
|
127
117
|
"isESM": true,
|
|
128
118
|
"relativePath": [
|
|
129
119
|
"dist",
|
|
130
120
|
"commands",
|
|
131
|
-
"
|
|
121
|
+
"access-levels",
|
|
132
122
|
"create.js"
|
|
133
123
|
]
|
|
134
124
|
},
|
|
135
|
-
"
|
|
125
|
+
"access-levels:get": {
|
|
136
126
|
"aliases": [],
|
|
137
127
|
"args": {
|
|
138
|
-
"
|
|
139
|
-
"description": "
|
|
140
|
-
"name": "
|
|
128
|
+
"access_level_id": {
|
|
129
|
+
"description": "Access Level ID (UUID)",
|
|
130
|
+
"name": "access_level_id",
|
|
141
131
|
"required": true
|
|
142
132
|
}
|
|
143
133
|
},
|
|
144
|
-
"description": "Get
|
|
134
|
+
"description": "Get access level details",
|
|
145
135
|
"examples": [
|
|
146
|
-
"<%= config.bin %>
|
|
136
|
+
"<%= config.bin %> access-levels get --app UUID 550e8400-e29b-41d4-a716-446655440000"
|
|
147
137
|
],
|
|
148
138
|
"flags": {
|
|
149
139
|
"json": {
|
|
@@ -152,30 +142,38 @@
|
|
|
152
142
|
"name": "json",
|
|
153
143
|
"allowNo": false,
|
|
154
144
|
"type": "boolean"
|
|
145
|
+
},
|
|
146
|
+
"app": {
|
|
147
|
+
"description": "App ID (UUID)",
|
|
148
|
+
"name": "app",
|
|
149
|
+
"required": true,
|
|
150
|
+
"hasDynamicHelp": false,
|
|
151
|
+
"multiple": false,
|
|
152
|
+
"type": "option"
|
|
155
153
|
}
|
|
156
154
|
},
|
|
157
155
|
"hasDynamicHelp": false,
|
|
158
156
|
"hiddenAliases": [],
|
|
159
|
-
"id": "
|
|
157
|
+
"id": "access-levels:get",
|
|
160
158
|
"pluginAlias": "adapty",
|
|
161
159
|
"pluginName": "adapty",
|
|
162
160
|
"pluginType": "core",
|
|
163
161
|
"strict": true,
|
|
162
|
+
"enableJsonFlag": true,
|
|
164
163
|
"isESM": true,
|
|
165
164
|
"relativePath": [
|
|
166
165
|
"dist",
|
|
167
166
|
"commands",
|
|
168
|
-
"
|
|
167
|
+
"access-levels",
|
|
169
168
|
"get.js"
|
|
170
169
|
]
|
|
171
170
|
},
|
|
172
|
-
"
|
|
171
|
+
"access-levels:list": {
|
|
173
172
|
"aliases": [],
|
|
174
173
|
"args": {},
|
|
175
|
-
"description": "List
|
|
174
|
+
"description": "List access levels for an app",
|
|
176
175
|
"examples": [
|
|
177
|
-
"<%= config.bin %>
|
|
178
|
-
"<%= config.bin %> apps list --page 2 --page-size 10"
|
|
176
|
+
"<%= config.bin %> access-levels list --app 550e8400-e29b-41d4-a716-446655440000"
|
|
179
177
|
],
|
|
180
178
|
"flags": {
|
|
181
179
|
"json": {
|
|
@@ -185,6 +183,14 @@
|
|
|
185
183
|
"allowNo": false,
|
|
186
184
|
"type": "boolean"
|
|
187
185
|
},
|
|
186
|
+
"app": {
|
|
187
|
+
"description": "App ID (UUID)",
|
|
188
|
+
"name": "app",
|
|
189
|
+
"required": true,
|
|
190
|
+
"hasDynamicHelp": false,
|
|
191
|
+
"multiple": false,
|
|
192
|
+
"type": "option"
|
|
193
|
+
},
|
|
188
194
|
"page": {
|
|
189
195
|
"description": "Page number",
|
|
190
196
|
"name": "page",
|
|
@@ -204,31 +210,32 @@
|
|
|
204
210
|
},
|
|
205
211
|
"hasDynamicHelp": false,
|
|
206
212
|
"hiddenAliases": [],
|
|
207
|
-
"id": "
|
|
213
|
+
"id": "access-levels:list",
|
|
208
214
|
"pluginAlias": "adapty",
|
|
209
215
|
"pluginName": "adapty",
|
|
210
216
|
"pluginType": "core",
|
|
211
217
|
"strict": true,
|
|
218
|
+
"enableJsonFlag": true,
|
|
212
219
|
"isESM": true,
|
|
213
220
|
"relativePath": [
|
|
214
221
|
"dist",
|
|
215
222
|
"commands",
|
|
216
|
-
"
|
|
223
|
+
"access-levels",
|
|
217
224
|
"list.js"
|
|
218
225
|
]
|
|
219
226
|
},
|
|
220
|
-
"
|
|
227
|
+
"access-levels:update": {
|
|
221
228
|
"aliases": [],
|
|
222
229
|
"args": {
|
|
223
|
-
"
|
|
224
|
-
"description": "
|
|
225
|
-
"name": "
|
|
230
|
+
"access_level_id": {
|
|
231
|
+
"description": "Access Level ID (UUID)",
|
|
232
|
+
"name": "access_level_id",
|
|
226
233
|
"required": true
|
|
227
234
|
}
|
|
228
235
|
},
|
|
229
|
-
"description": "Update an
|
|
236
|
+
"description": "Update an access level",
|
|
230
237
|
"examples": [
|
|
231
|
-
"<%= config.bin %>
|
|
238
|
+
"<%= config.bin %> access-levels update --app UUID 550e8400-... --title \"VIP Access\""
|
|
232
239
|
],
|
|
233
240
|
"flags": {
|
|
234
241
|
"json": {
|
|
@@ -238,23 +245,18 @@
|
|
|
238
245
|
"allowNo": false,
|
|
239
246
|
"type": "boolean"
|
|
240
247
|
},
|
|
241
|
-
"
|
|
242
|
-
"description": "App
|
|
243
|
-
"name": "
|
|
244
|
-
"
|
|
245
|
-
"multiple": false,
|
|
246
|
-
"type": "option"
|
|
247
|
-
},
|
|
248
|
-
"apple-bundle-id": {
|
|
249
|
-
"description": "Apple bundle ID",
|
|
250
|
-
"name": "apple-bundle-id",
|
|
248
|
+
"app": {
|
|
249
|
+
"description": "App ID (UUID)",
|
|
250
|
+
"name": "app",
|
|
251
|
+
"required": true,
|
|
251
252
|
"hasDynamicHelp": false,
|
|
252
253
|
"multiple": false,
|
|
253
254
|
"type": "option"
|
|
254
255
|
},
|
|
255
|
-
"
|
|
256
|
-
"description": "
|
|
257
|
-
"name": "
|
|
256
|
+
"title": {
|
|
257
|
+
"description": "Access level title",
|
|
258
|
+
"name": "title",
|
|
259
|
+
"required": true,
|
|
258
260
|
"hasDynamicHelp": false,
|
|
259
261
|
"multiple": false,
|
|
260
262
|
"type": "option"
|
|
@@ -262,25 +264,27 @@
|
|
|
262
264
|
},
|
|
263
265
|
"hasDynamicHelp": false,
|
|
264
266
|
"hiddenAliases": [],
|
|
265
|
-
"id": "
|
|
267
|
+
"id": "access-levels:update",
|
|
266
268
|
"pluginAlias": "adapty",
|
|
267
269
|
"pluginName": "adapty",
|
|
268
270
|
"pluginType": "core",
|
|
269
271
|
"strict": true,
|
|
272
|
+
"enableJsonFlag": true,
|
|
270
273
|
"isESM": true,
|
|
271
274
|
"relativePath": [
|
|
272
275
|
"dist",
|
|
273
276
|
"commands",
|
|
274
|
-
"
|
|
277
|
+
"access-levels",
|
|
275
278
|
"update.js"
|
|
276
279
|
]
|
|
277
280
|
},
|
|
278
|
-
"
|
|
281
|
+
"analytics:catalog": {
|
|
279
282
|
"aliases": [],
|
|
280
283
|
"args": {},
|
|
281
|
-
"description": "
|
|
284
|
+
"description": "List what the analytics of an app can answer: the six operations with their options, groupings and filters, every chart and conversion, and every filter dimension",
|
|
282
285
|
"examples": [
|
|
283
|
-
"<%= config.bin %>
|
|
286
|
+
"<%= config.bin %> analytics catalog --app APP_UUID",
|
|
287
|
+
"<%= config.bin %> analytics catalog --app APP_UUID --json"
|
|
284
288
|
],
|
|
285
289
|
"flags": {
|
|
286
290
|
"json": {
|
|
@@ -297,52 +301,31 @@
|
|
|
297
301
|
"hasDynamicHelp": false,
|
|
298
302
|
"multiple": false,
|
|
299
303
|
"type": "option"
|
|
300
|
-
},
|
|
301
|
-
"sdk-id": {
|
|
302
|
-
"description": "Access level SDK identifier",
|
|
303
|
-
"name": "sdk-id",
|
|
304
|
-
"required": true,
|
|
305
|
-
"hasDynamicHelp": false,
|
|
306
|
-
"multiple": false,
|
|
307
|
-
"type": "option"
|
|
308
|
-
},
|
|
309
|
-
"title": {
|
|
310
|
-
"description": "Access level title",
|
|
311
|
-
"name": "title",
|
|
312
|
-
"required": true,
|
|
313
|
-
"hasDynamicHelp": false,
|
|
314
|
-
"multiple": false,
|
|
315
|
-
"type": "option"
|
|
316
304
|
}
|
|
317
305
|
},
|
|
318
306
|
"hasDynamicHelp": false,
|
|
319
307
|
"hiddenAliases": [],
|
|
320
|
-
"id": "
|
|
308
|
+
"id": "analytics:catalog",
|
|
321
309
|
"pluginAlias": "adapty",
|
|
322
310
|
"pluginName": "adapty",
|
|
323
311
|
"pluginType": "core",
|
|
324
312
|
"strict": true,
|
|
325
|
-
"enableJsonFlag": true,
|
|
326
313
|
"isESM": true,
|
|
327
314
|
"relativePath": [
|
|
328
315
|
"dist",
|
|
329
316
|
"commands",
|
|
330
|
-
"
|
|
331
|
-
"
|
|
317
|
+
"analytics",
|
|
318
|
+
"catalog.js"
|
|
332
319
|
]
|
|
333
320
|
},
|
|
334
|
-
"
|
|
321
|
+
"analytics:chart": {
|
|
335
322
|
"aliases": [],
|
|
336
|
-
"args": {
|
|
337
|
-
|
|
338
|
-
"description": "Access Level ID (UUID)",
|
|
339
|
-
"name": "access_level_id",
|
|
340
|
-
"required": true
|
|
341
|
-
}
|
|
342
|
-
},
|
|
343
|
-
"description": "Get access level details",
|
|
323
|
+
"args": {},
|
|
324
|
+
"description": "Read one chart of the analytics of an app (revenue, MRR, installs, ...): the number of the period, its points and its groups, the total first",
|
|
344
325
|
"examples": [
|
|
345
|
-
"<%= config.bin %>
|
|
326
|
+
"<%= config.bin %> analytics chart --app APP_UUID --chart revenue --date-from 2026-07-01 --date-to 2026-09-30",
|
|
327
|
+
"<%= config.bin %> analytics chart --app APP_UUID --chart revenue --date-from 2026-07-01 --date-to 2026-09-30 --group-by country --csv",
|
|
328
|
+
"<%= config.bin %> analytics chart --app APP_UUID --chart mrr --date-from 2026-07-01 --date-to 2026-09-30 --compare-from 2026-04-01 --compare-to 2026-06-30 --json"
|
|
346
329
|
],
|
|
347
330
|
"flags": {
|
|
348
331
|
"json": {
|
|
@@ -359,30 +342,124 @@
|
|
|
359
342
|
"hasDynamicHelp": false,
|
|
360
343
|
"multiple": false,
|
|
361
344
|
"type": "option"
|
|
345
|
+
},
|
|
346
|
+
"chart": {
|
|
347
|
+
"description": "The chart, as `adapty analytics catalog` lists it",
|
|
348
|
+
"name": "chart",
|
|
349
|
+
"required": true,
|
|
350
|
+
"hasDynamicHelp": false,
|
|
351
|
+
"multiple": false,
|
|
352
|
+
"type": "option"
|
|
353
|
+
},
|
|
354
|
+
"date-from": {
|
|
355
|
+
"description": "First day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
|
|
356
|
+
"name": "date-from",
|
|
357
|
+
"required": true,
|
|
358
|
+
"hasDynamicHelp": false,
|
|
359
|
+
"multiple": false,
|
|
360
|
+
"type": "option"
|
|
361
|
+
},
|
|
362
|
+
"date-to": {
|
|
363
|
+
"description": "Last day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
|
|
364
|
+
"name": "date-to",
|
|
365
|
+
"required": true,
|
|
366
|
+
"hasDynamicHelp": false,
|
|
367
|
+
"multiple": false,
|
|
368
|
+
"type": "option"
|
|
369
|
+
},
|
|
370
|
+
"compare-from": {
|
|
371
|
+
"description": "First day of a period to compare with, inclusive (YYYY-MM-DD); needs --compare-to",
|
|
372
|
+
"name": "compare-from",
|
|
373
|
+
"hasDynamicHelp": false,
|
|
374
|
+
"multiple": false,
|
|
375
|
+
"type": "option"
|
|
376
|
+
},
|
|
377
|
+
"compare-to": {
|
|
378
|
+
"description": "Last day of a period to compare with, inclusive (YYYY-MM-DD); needs --compare-from",
|
|
379
|
+
"name": "compare-to",
|
|
380
|
+
"hasDynamicHelp": false,
|
|
381
|
+
"multiple": false,
|
|
382
|
+
"type": "option"
|
|
383
|
+
},
|
|
384
|
+
"group-by": {
|
|
385
|
+
"description": "One grouping of this operation, as `adapty analytics catalog` lists it (e.g. country)",
|
|
386
|
+
"name": "group-by",
|
|
387
|
+
"hasDynamicHelp": false,
|
|
388
|
+
"multiple": false,
|
|
389
|
+
"type": "option"
|
|
390
|
+
},
|
|
391
|
+
"filter": {
|
|
392
|
+
"description": "Keep the data whose dimension has one of the values: dimension=value[,value] (repeatable; `\\,` for a comma inside a value; values exactly as written, an empty one too, e.g. country= for no country). Dimensions: `adapty analytics catalog`; values: `adapty analytics values`",
|
|
393
|
+
"name": "filter",
|
|
394
|
+
"hasDynamicHelp": false,
|
|
395
|
+
"multiple": true,
|
|
396
|
+
"type": "option"
|
|
397
|
+
},
|
|
398
|
+
"timezone": {
|
|
399
|
+
"description": "IANA time zone of the days, e.g. Europe/Berlin; the app time zone when omitted",
|
|
400
|
+
"name": "timezone",
|
|
401
|
+
"hasDynamicHelp": false,
|
|
402
|
+
"multiple": false,
|
|
403
|
+
"type": "option"
|
|
404
|
+
},
|
|
405
|
+
"granularity": {
|
|
406
|
+
"description": "The period of one point (default month)",
|
|
407
|
+
"name": "granularity",
|
|
408
|
+
"hasDynamicHelp": false,
|
|
409
|
+
"multiple": false,
|
|
410
|
+
"options": [
|
|
411
|
+
"day",
|
|
412
|
+
"week",
|
|
413
|
+
"month",
|
|
414
|
+
"quarter",
|
|
415
|
+
"year"
|
|
416
|
+
],
|
|
417
|
+
"type": "option"
|
|
418
|
+
},
|
|
419
|
+
"revenue-basis": {
|
|
420
|
+
"description": "Which revenue the money values use: gross (default), proceeds (after store commission) or net (also after taxes)",
|
|
421
|
+
"name": "revenue-basis",
|
|
422
|
+
"hasDynamicHelp": false,
|
|
423
|
+
"multiple": false,
|
|
424
|
+
"options": [
|
|
425
|
+
"gross",
|
|
426
|
+
"proceeds",
|
|
427
|
+
"net"
|
|
428
|
+
],
|
|
429
|
+
"type": "option"
|
|
430
|
+
},
|
|
431
|
+
"csv": {
|
|
432
|
+
"description": "Print a CSV table made from the API answer: one row per group, the total first (is_total true; a null key is an empty cell, an empty key is written \"\"); a compared period in compare.* columns of the same row; the numbers of the whole answer in data.* and meta.* columns. No groups: the header line, and \"No data for this period.\" with those numbers on stderr",
|
|
433
|
+
"exclusive": [
|
|
434
|
+
"json"
|
|
435
|
+
],
|
|
436
|
+
"name": "csv",
|
|
437
|
+
"allowNo": false,
|
|
438
|
+
"type": "boolean"
|
|
362
439
|
}
|
|
363
440
|
},
|
|
364
441
|
"hasDynamicHelp": false,
|
|
365
442
|
"hiddenAliases": [],
|
|
366
|
-
"id": "
|
|
443
|
+
"id": "analytics:chart",
|
|
367
444
|
"pluginAlias": "adapty",
|
|
368
445
|
"pluginName": "adapty",
|
|
369
446
|
"pluginType": "core",
|
|
370
447
|
"strict": true,
|
|
371
|
-
"enableJsonFlag": true,
|
|
372
448
|
"isESM": true,
|
|
373
449
|
"relativePath": [
|
|
374
450
|
"dist",
|
|
375
451
|
"commands",
|
|
376
|
-
"
|
|
377
|
-
"
|
|
452
|
+
"analytics",
|
|
453
|
+
"chart.js"
|
|
378
454
|
]
|
|
379
455
|
},
|
|
380
|
-
"
|
|
456
|
+
"analytics:cohort": {
|
|
381
457
|
"aliases": [],
|
|
382
458
|
"args": {},
|
|
383
|
-
"description": "
|
|
459
|
+
"description": "Read the install cohorts of an app: revenue, subscribers and averages of each cohort per renewal (or day), with predictions, the total first (no grouping, no compared period)",
|
|
384
460
|
"examples": [
|
|
385
|
-
"<%= config.bin %>
|
|
461
|
+
"<%= config.bin %> analytics cohort --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30",
|
|
462
|
+
"<%= config.bin %> analytics cohort --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30 --granularity week --revenue-basis proceeds --csv"
|
|
386
463
|
],
|
|
387
464
|
"flags": {
|
|
388
465
|
"json": {
|
|
@@ -400,51 +477,530 @@
|
|
|
400
477
|
"multiple": false,
|
|
401
478
|
"type": "option"
|
|
402
479
|
},
|
|
403
|
-
"
|
|
404
|
-
"description": "
|
|
405
|
-
"name": "
|
|
406
|
-
"
|
|
480
|
+
"date-from": {
|
|
481
|
+
"description": "First day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
|
|
482
|
+
"name": "date-from",
|
|
483
|
+
"required": true,
|
|
407
484
|
"hasDynamicHelp": false,
|
|
408
485
|
"multiple": false,
|
|
409
486
|
"type": "option"
|
|
410
487
|
},
|
|
411
|
-
"
|
|
412
|
-
"description": "
|
|
413
|
-
"name": "
|
|
414
|
-
"
|
|
488
|
+
"date-to": {
|
|
489
|
+
"description": "Last day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
|
|
490
|
+
"name": "date-to",
|
|
491
|
+
"required": true,
|
|
415
492
|
"hasDynamicHelp": false,
|
|
416
493
|
"multiple": false,
|
|
417
494
|
"type": "option"
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
495
|
+
},
|
|
496
|
+
"filter": {
|
|
497
|
+
"description": "Keep the data whose dimension has one of the values: dimension=value[,value] (repeatable; `\\,` for a comma inside a value; values exactly as written, an empty one too, e.g. country= for no country). Dimensions: `adapty analytics catalog`; values: `adapty analytics values`",
|
|
498
|
+
"name": "filter",
|
|
499
|
+
"hasDynamicHelp": false,
|
|
500
|
+
"multiple": true,
|
|
501
|
+
"type": "option"
|
|
502
|
+
},
|
|
503
|
+
"timezone": {
|
|
504
|
+
"description": "IANA time zone of the days, e.g. Europe/Berlin; the app time zone when omitted",
|
|
505
|
+
"name": "timezone",
|
|
506
|
+
"hasDynamicHelp": false,
|
|
507
|
+
"multiple": false,
|
|
508
|
+
"type": "option"
|
|
509
|
+
},
|
|
510
|
+
"granularity": {
|
|
511
|
+
"description": "The length of one cohort (default month)",
|
|
512
|
+
"name": "granularity",
|
|
513
|
+
"hasDynamicHelp": false,
|
|
514
|
+
"multiple": false,
|
|
515
|
+
"options": [
|
|
516
|
+
"day",
|
|
517
|
+
"week",
|
|
518
|
+
"month",
|
|
519
|
+
"quarter",
|
|
520
|
+
"year"
|
|
521
|
+
],
|
|
522
|
+
"type": "option"
|
|
523
|
+
},
|
|
524
|
+
"revenue-basis": {
|
|
525
|
+
"description": "Which revenue the money values use: gross (default), proceeds (after store commission) or net (also after taxes)",
|
|
526
|
+
"name": "revenue-basis",
|
|
527
|
+
"hasDynamicHelp": false,
|
|
528
|
+
"multiple": false,
|
|
529
|
+
"options": [
|
|
530
|
+
"gross",
|
|
531
|
+
"proceeds",
|
|
532
|
+
"net"
|
|
533
|
+
],
|
|
534
|
+
"type": "option"
|
|
535
|
+
},
|
|
536
|
+
"period-type": {
|
|
537
|
+
"description": "Count per renewal (renewals, default) or per day since the install (days)",
|
|
538
|
+
"name": "period-type",
|
|
539
|
+
"hasDynamicHelp": false,
|
|
540
|
+
"multiple": false,
|
|
541
|
+
"options": [
|
|
542
|
+
"renewals",
|
|
543
|
+
"days"
|
|
544
|
+
],
|
|
545
|
+
"type": "option"
|
|
546
|
+
},
|
|
547
|
+
"renewal-days": {
|
|
548
|
+
"description": "The days to count with --period-type days (comma-separated or repeatable); the backend list when omitted",
|
|
549
|
+
"name": "renewal-days",
|
|
550
|
+
"delimiter": ",",
|
|
551
|
+
"hasDynamicHelp": false,
|
|
552
|
+
"multiple": true,
|
|
553
|
+
"type": "option"
|
|
554
|
+
},
|
|
555
|
+
"csv": {
|
|
556
|
+
"description": "Print a CSV table made from the API answer: one row per group, the total first (is_total true; a null key is an empty cell, an empty key is written \"\"); a compared period in compare.* columns of the same row; the numbers of the whole answer in data.* and meta.* columns. No groups: the header line, and \"No data for this period.\" with those numbers on stderr",
|
|
557
|
+
"exclusive": [
|
|
558
|
+
"json"
|
|
559
|
+
],
|
|
560
|
+
"name": "csv",
|
|
561
|
+
"allowNo": false,
|
|
562
|
+
"type": "boolean"
|
|
563
|
+
}
|
|
564
|
+
},
|
|
565
|
+
"hasDynamicHelp": false,
|
|
566
|
+
"hiddenAliases": [],
|
|
567
|
+
"id": "analytics:cohort",
|
|
568
|
+
"pluginAlias": "adapty",
|
|
569
|
+
"pluginName": "adapty",
|
|
570
|
+
"pluginType": "core",
|
|
571
|
+
"strict": true,
|
|
572
|
+
"isESM": true,
|
|
573
|
+
"relativePath": [
|
|
574
|
+
"dist",
|
|
575
|
+
"commands",
|
|
576
|
+
"analytics",
|
|
577
|
+
"cohort.js"
|
|
578
|
+
]
|
|
579
|
+
},
|
|
580
|
+
"analytics:conversion": {
|
|
581
|
+
"aliases": [],
|
|
582
|
+
"args": {},
|
|
583
|
+
"description": "Read one conversion of the analytics of an app (install → trial, trial → paid, ...): the rate in percent with its two counts, per point and per group, the total first",
|
|
584
|
+
"examples": [
|
|
585
|
+
"<%= config.bin %> analytics conversion --app APP_UUID --conversion trial-paid --date-from 2026-07-01 --date-to 2026-09-30",
|
|
586
|
+
"<%= config.bin %> analytics conversion --app APP_UUID --conversion install-paid --date-from 2026-07-01 --date-to 2026-09-30 --granularity month --group-by country --csv"
|
|
587
|
+
],
|
|
588
|
+
"flags": {
|
|
589
|
+
"json": {
|
|
590
|
+
"description": "Format output as json.",
|
|
591
|
+
"helpGroup": "GLOBAL",
|
|
592
|
+
"name": "json",
|
|
593
|
+
"allowNo": false,
|
|
594
|
+
"type": "boolean"
|
|
595
|
+
},
|
|
596
|
+
"app": {
|
|
597
|
+
"description": "App ID (UUID)",
|
|
598
|
+
"name": "app",
|
|
599
|
+
"required": true,
|
|
600
|
+
"hasDynamicHelp": false,
|
|
601
|
+
"multiple": false,
|
|
602
|
+
"type": "option"
|
|
603
|
+
},
|
|
604
|
+
"conversion": {
|
|
605
|
+
"description": "The conversion, as `adapty analytics catalog` lists it",
|
|
606
|
+
"name": "conversion",
|
|
607
|
+
"required": true,
|
|
608
|
+
"hasDynamicHelp": false,
|
|
609
|
+
"multiple": false,
|
|
610
|
+
"type": "option"
|
|
611
|
+
},
|
|
612
|
+
"date-from": {
|
|
613
|
+
"description": "First day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
|
|
614
|
+
"name": "date-from",
|
|
615
|
+
"required": true,
|
|
616
|
+
"hasDynamicHelp": false,
|
|
617
|
+
"multiple": false,
|
|
618
|
+
"type": "option"
|
|
619
|
+
},
|
|
620
|
+
"date-to": {
|
|
621
|
+
"description": "Last day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
|
|
622
|
+
"name": "date-to",
|
|
623
|
+
"required": true,
|
|
624
|
+
"hasDynamicHelp": false,
|
|
625
|
+
"multiple": false,
|
|
626
|
+
"type": "option"
|
|
627
|
+
},
|
|
628
|
+
"compare-from": {
|
|
629
|
+
"description": "First day of a period to compare with, inclusive (YYYY-MM-DD); needs --compare-to",
|
|
630
|
+
"name": "compare-from",
|
|
631
|
+
"hasDynamicHelp": false,
|
|
632
|
+
"multiple": false,
|
|
633
|
+
"type": "option"
|
|
634
|
+
},
|
|
635
|
+
"compare-to": {
|
|
636
|
+
"description": "Last day of a period to compare with, inclusive (YYYY-MM-DD); needs --compare-from",
|
|
637
|
+
"name": "compare-to",
|
|
638
|
+
"hasDynamicHelp": false,
|
|
639
|
+
"multiple": false,
|
|
640
|
+
"type": "option"
|
|
641
|
+
},
|
|
642
|
+
"group-by": {
|
|
643
|
+
"description": "One grouping of this operation, as `adapty analytics catalog` lists it (e.g. country)",
|
|
644
|
+
"name": "group-by",
|
|
645
|
+
"hasDynamicHelp": false,
|
|
646
|
+
"multiple": false,
|
|
647
|
+
"type": "option"
|
|
648
|
+
},
|
|
649
|
+
"filter": {
|
|
650
|
+
"description": "Keep the data whose dimension has one of the values: dimension=value[,value] (repeatable; `\\,` for a comma inside a value; values exactly as written, an empty one too, e.g. country= for no country). Dimensions: `adapty analytics catalog`; values: `adapty analytics values`",
|
|
651
|
+
"name": "filter",
|
|
652
|
+
"hasDynamicHelp": false,
|
|
653
|
+
"multiple": true,
|
|
654
|
+
"type": "option"
|
|
655
|
+
},
|
|
656
|
+
"timezone": {
|
|
657
|
+
"description": "IANA time zone of the days, e.g. Europe/Berlin; the app time zone when omitted",
|
|
658
|
+
"name": "timezone",
|
|
659
|
+
"hasDynamicHelp": false,
|
|
660
|
+
"multiple": false,
|
|
661
|
+
"type": "option"
|
|
662
|
+
},
|
|
663
|
+
"granularity": {
|
|
664
|
+
"description": "The period of one point (default day)",
|
|
665
|
+
"name": "granularity",
|
|
666
|
+
"hasDynamicHelp": false,
|
|
667
|
+
"multiple": false,
|
|
668
|
+
"options": [
|
|
669
|
+
"day",
|
|
670
|
+
"week",
|
|
671
|
+
"month",
|
|
672
|
+
"quarter",
|
|
673
|
+
"year"
|
|
674
|
+
],
|
|
675
|
+
"type": "option"
|
|
676
|
+
},
|
|
677
|
+
"csv": {
|
|
678
|
+
"description": "Print a CSV table made from the API answer: one row per group, the total first (is_total true; a null key is an empty cell, an empty key is written \"\"); a compared period in compare.* columns of the same row; the numbers of the whole answer in data.* and meta.* columns. No groups: the header line, and \"No data for this period.\" with those numbers on stderr",
|
|
679
|
+
"exclusive": [
|
|
680
|
+
"json"
|
|
681
|
+
],
|
|
682
|
+
"name": "csv",
|
|
683
|
+
"allowNo": false,
|
|
684
|
+
"type": "boolean"
|
|
685
|
+
}
|
|
686
|
+
},
|
|
687
|
+
"hasDynamicHelp": false,
|
|
688
|
+
"hiddenAliases": [],
|
|
689
|
+
"id": "analytics:conversion",
|
|
690
|
+
"pluginAlias": "adapty",
|
|
691
|
+
"pluginName": "adapty",
|
|
692
|
+
"pluginType": "core",
|
|
693
|
+
"strict": true,
|
|
694
|
+
"isESM": true,
|
|
695
|
+
"relativePath": [
|
|
696
|
+
"dist",
|
|
697
|
+
"commands",
|
|
698
|
+
"analytics",
|
|
699
|
+
"conversion.js"
|
|
700
|
+
]
|
|
701
|
+
},
|
|
702
|
+
"analytics:funnel": {
|
|
703
|
+
"aliases": [],
|
|
704
|
+
"args": {},
|
|
705
|
+
"description": "Read the funnel of an app, from install to renewals: the count at each step, per group, the total first (no compared period: the funnel query cannot keep two periods apart)",
|
|
706
|
+
"examples": [
|
|
707
|
+
"<%= config.bin %> analytics funnel --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30",
|
|
708
|
+
"<%= config.bin %> analytics funnel --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30 --group-by country --csv"
|
|
709
|
+
],
|
|
710
|
+
"flags": {
|
|
711
|
+
"json": {
|
|
712
|
+
"description": "Format output as json.",
|
|
713
|
+
"helpGroup": "GLOBAL",
|
|
714
|
+
"name": "json",
|
|
715
|
+
"allowNo": false,
|
|
716
|
+
"type": "boolean"
|
|
717
|
+
},
|
|
718
|
+
"app": {
|
|
719
|
+
"description": "App ID (UUID)",
|
|
720
|
+
"name": "app",
|
|
721
|
+
"required": true,
|
|
722
|
+
"hasDynamicHelp": false,
|
|
723
|
+
"multiple": false,
|
|
724
|
+
"type": "option"
|
|
725
|
+
},
|
|
726
|
+
"date-from": {
|
|
727
|
+
"description": "First day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
|
|
728
|
+
"name": "date-from",
|
|
729
|
+
"required": true,
|
|
730
|
+
"hasDynamicHelp": false,
|
|
731
|
+
"multiple": false,
|
|
732
|
+
"type": "option"
|
|
733
|
+
},
|
|
734
|
+
"date-to": {
|
|
735
|
+
"description": "Last day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
|
|
736
|
+
"name": "date-to",
|
|
737
|
+
"required": true,
|
|
738
|
+
"hasDynamicHelp": false,
|
|
739
|
+
"multiple": false,
|
|
740
|
+
"type": "option"
|
|
741
|
+
},
|
|
742
|
+
"group-by": {
|
|
743
|
+
"description": "One grouping of this operation, as `adapty analytics catalog` lists it (e.g. country)",
|
|
744
|
+
"name": "group-by",
|
|
745
|
+
"hasDynamicHelp": false,
|
|
746
|
+
"multiple": false,
|
|
747
|
+
"type": "option"
|
|
748
|
+
},
|
|
749
|
+
"filter": {
|
|
750
|
+
"description": "Keep the data whose dimension has one of the values: dimension=value[,value] (repeatable; `\\,` for a comma inside a value; values exactly as written, an empty one too, e.g. country= for no country). Dimensions: `adapty analytics catalog`; values: `adapty analytics values`",
|
|
751
|
+
"name": "filter",
|
|
752
|
+
"hasDynamicHelp": false,
|
|
753
|
+
"multiple": true,
|
|
754
|
+
"type": "option"
|
|
755
|
+
},
|
|
756
|
+
"timezone": {
|
|
757
|
+
"description": "IANA time zone of the days, e.g. Europe/Berlin; the app time zone when omitted",
|
|
758
|
+
"name": "timezone",
|
|
759
|
+
"hasDynamicHelp": false,
|
|
760
|
+
"multiple": false,
|
|
761
|
+
"type": "option"
|
|
762
|
+
},
|
|
763
|
+
"csv": {
|
|
764
|
+
"description": "Print a CSV table made from the API answer: one row per group, the total first (is_total true; a null key is an empty cell, an empty key is written \"\"); a compared period in compare.* columns of the same row; the numbers of the whole answer in data.* and meta.* columns. No groups: the header line, and \"No data for this period.\" with those numbers on stderr",
|
|
765
|
+
"exclusive": [
|
|
766
|
+
"json"
|
|
767
|
+
],
|
|
768
|
+
"name": "csv",
|
|
769
|
+
"allowNo": false,
|
|
770
|
+
"type": "boolean"
|
|
771
|
+
}
|
|
772
|
+
},
|
|
773
|
+
"hasDynamicHelp": false,
|
|
774
|
+
"hiddenAliases": [],
|
|
775
|
+
"id": "analytics:funnel",
|
|
776
|
+
"pluginAlias": "adapty",
|
|
777
|
+
"pluginName": "adapty",
|
|
778
|
+
"pluginType": "core",
|
|
779
|
+
"strict": true,
|
|
780
|
+
"isESM": true,
|
|
781
|
+
"relativePath": [
|
|
782
|
+
"dist",
|
|
783
|
+
"commands",
|
|
784
|
+
"analytics",
|
|
785
|
+
"funnel.js"
|
|
786
|
+
]
|
|
787
|
+
},
|
|
788
|
+
"analytics:ltv": {
|
|
789
|
+
"aliases": [],
|
|
790
|
+
"args": {},
|
|
791
|
+
"description": "Read the LTV of an app: the revenue per paying user after each renewal (or day), per group, the total first (no compared period)",
|
|
792
|
+
"examples": [
|
|
793
|
+
"<%= config.bin %> analytics ltv --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30",
|
|
794
|
+
"<%= config.bin %> analytics ltv --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30 --revenue-basis net --period-type days --renewal-days 7,30,90 --csv"
|
|
795
|
+
],
|
|
796
|
+
"flags": {
|
|
797
|
+
"json": {
|
|
798
|
+
"description": "Format output as json.",
|
|
799
|
+
"helpGroup": "GLOBAL",
|
|
800
|
+
"name": "json",
|
|
801
|
+
"allowNo": false,
|
|
802
|
+
"type": "boolean"
|
|
803
|
+
},
|
|
804
|
+
"app": {
|
|
805
|
+
"description": "App ID (UUID)",
|
|
806
|
+
"name": "app",
|
|
807
|
+
"required": true,
|
|
808
|
+
"hasDynamicHelp": false,
|
|
809
|
+
"multiple": false,
|
|
810
|
+
"type": "option"
|
|
811
|
+
},
|
|
812
|
+
"date-from": {
|
|
813
|
+
"description": "First day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
|
|
814
|
+
"name": "date-from",
|
|
815
|
+
"required": true,
|
|
816
|
+
"hasDynamicHelp": false,
|
|
817
|
+
"multiple": false,
|
|
818
|
+
"type": "option"
|
|
819
|
+
},
|
|
820
|
+
"date-to": {
|
|
821
|
+
"description": "Last day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
|
|
822
|
+
"name": "date-to",
|
|
823
|
+
"required": true,
|
|
824
|
+
"hasDynamicHelp": false,
|
|
825
|
+
"multiple": false,
|
|
826
|
+
"type": "option"
|
|
827
|
+
},
|
|
828
|
+
"group-by": {
|
|
829
|
+
"description": "One grouping of this operation, as `adapty analytics catalog` lists it (e.g. country)",
|
|
830
|
+
"name": "group-by",
|
|
831
|
+
"hasDynamicHelp": false,
|
|
832
|
+
"multiple": false,
|
|
833
|
+
"type": "option"
|
|
834
|
+
},
|
|
835
|
+
"filter": {
|
|
836
|
+
"description": "Keep the data whose dimension has one of the values: dimension=value[,value] (repeatable; `\\,` for a comma inside a value; values exactly as written, an empty one too, e.g. country= for no country). Dimensions: `adapty analytics catalog`; values: `adapty analytics values`",
|
|
837
|
+
"name": "filter",
|
|
838
|
+
"hasDynamicHelp": false,
|
|
839
|
+
"multiple": true,
|
|
840
|
+
"type": "option"
|
|
841
|
+
},
|
|
842
|
+
"timezone": {
|
|
843
|
+
"description": "IANA time zone of the days, e.g. Europe/Berlin; the app time zone when omitted",
|
|
844
|
+
"name": "timezone",
|
|
845
|
+
"hasDynamicHelp": false,
|
|
846
|
+
"multiple": false,
|
|
847
|
+
"type": "option"
|
|
848
|
+
},
|
|
849
|
+
"revenue-basis": {
|
|
850
|
+
"description": "Which revenue the money values use: gross (default), proceeds (after store commission) or net (also after taxes)",
|
|
851
|
+
"name": "revenue-basis",
|
|
852
|
+
"hasDynamicHelp": false,
|
|
853
|
+
"multiple": false,
|
|
854
|
+
"options": [
|
|
855
|
+
"gross",
|
|
856
|
+
"proceeds",
|
|
857
|
+
"net"
|
|
858
|
+
],
|
|
859
|
+
"type": "option"
|
|
860
|
+
},
|
|
861
|
+
"period-type": {
|
|
862
|
+
"description": "Count per renewal (renewals, default) or per day since the install (days)",
|
|
863
|
+
"name": "period-type",
|
|
864
|
+
"hasDynamicHelp": false,
|
|
865
|
+
"multiple": false,
|
|
866
|
+
"options": [
|
|
867
|
+
"renewals",
|
|
868
|
+
"days"
|
|
869
|
+
],
|
|
870
|
+
"type": "option"
|
|
871
|
+
},
|
|
872
|
+
"renewal-days": {
|
|
873
|
+
"description": "The days to count with --period-type days (comma-separated or repeatable); the backend list when omitted",
|
|
874
|
+
"name": "renewal-days",
|
|
875
|
+
"delimiter": ",",
|
|
876
|
+
"hasDynamicHelp": false,
|
|
877
|
+
"multiple": true,
|
|
878
|
+
"type": "option"
|
|
879
|
+
},
|
|
880
|
+
"csv": {
|
|
881
|
+
"description": "Print a CSV table made from the API answer: one row per group, the total first (is_total true; a null key is an empty cell, an empty key is written \"\"); a compared period in compare.* columns of the same row; the numbers of the whole answer in data.* and meta.* columns. No groups: the header line, and \"No data for this period.\" with those numbers on stderr",
|
|
882
|
+
"exclusive": [
|
|
883
|
+
"json"
|
|
884
|
+
],
|
|
885
|
+
"name": "csv",
|
|
886
|
+
"allowNo": false,
|
|
887
|
+
"type": "boolean"
|
|
888
|
+
}
|
|
889
|
+
},
|
|
890
|
+
"hasDynamicHelp": false,
|
|
891
|
+
"hiddenAliases": [],
|
|
892
|
+
"id": "analytics:ltv",
|
|
893
|
+
"pluginAlias": "adapty",
|
|
894
|
+
"pluginName": "adapty",
|
|
895
|
+
"pluginType": "core",
|
|
896
|
+
"strict": true,
|
|
897
|
+
"isESM": true,
|
|
898
|
+
"relativePath": [
|
|
899
|
+
"dist",
|
|
900
|
+
"commands",
|
|
901
|
+
"analytics",
|
|
902
|
+
"ltv.js"
|
|
903
|
+
]
|
|
904
|
+
},
|
|
905
|
+
"analytics:retention": {
|
|
906
|
+
"aliases": [],
|
|
907
|
+
"args": {},
|
|
908
|
+
"description": "Read the retention of an app: the subscribers left in each period, per group, the total first (no compared period)",
|
|
909
|
+
"examples": [
|
|
910
|
+
"<%= config.bin %> analytics retention --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30",
|
|
911
|
+
"<%= config.bin %> analytics retention --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30 --group-by country --use-trial --csv"
|
|
912
|
+
],
|
|
913
|
+
"flags": {
|
|
914
|
+
"json": {
|
|
915
|
+
"description": "Format output as json.",
|
|
916
|
+
"helpGroup": "GLOBAL",
|
|
917
|
+
"name": "json",
|
|
918
|
+
"allowNo": false,
|
|
919
|
+
"type": "boolean"
|
|
920
|
+
},
|
|
921
|
+
"app": {
|
|
922
|
+
"description": "App ID (UUID)",
|
|
923
|
+
"name": "app",
|
|
924
|
+
"required": true,
|
|
925
|
+
"hasDynamicHelp": false,
|
|
926
|
+
"multiple": false,
|
|
927
|
+
"type": "option"
|
|
928
|
+
},
|
|
929
|
+
"date-from": {
|
|
930
|
+
"description": "First day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
|
|
931
|
+
"name": "date-from",
|
|
932
|
+
"required": true,
|
|
933
|
+
"hasDynamicHelp": false,
|
|
934
|
+
"multiple": false,
|
|
935
|
+
"type": "option"
|
|
936
|
+
},
|
|
937
|
+
"date-to": {
|
|
938
|
+
"description": "Last day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
|
|
939
|
+
"name": "date-to",
|
|
940
|
+
"required": true,
|
|
941
|
+
"hasDynamicHelp": false,
|
|
942
|
+
"multiple": false,
|
|
943
|
+
"type": "option"
|
|
944
|
+
},
|
|
945
|
+
"group-by": {
|
|
946
|
+
"description": "One grouping of this operation, as `adapty analytics catalog` lists it (e.g. country)",
|
|
947
|
+
"name": "group-by",
|
|
948
|
+
"hasDynamicHelp": false,
|
|
949
|
+
"multiple": false,
|
|
950
|
+
"type": "option"
|
|
951
|
+
},
|
|
952
|
+
"filter": {
|
|
953
|
+
"description": "Keep the data whose dimension has one of the values: dimension=value[,value] (repeatable; `\\,` for a comma inside a value; values exactly as written, an empty one too, e.g. country= for no country). Dimensions: `adapty analytics catalog`; values: `adapty analytics values`",
|
|
954
|
+
"name": "filter",
|
|
955
|
+
"hasDynamicHelp": false,
|
|
956
|
+
"multiple": true,
|
|
957
|
+
"type": "option"
|
|
958
|
+
},
|
|
959
|
+
"timezone": {
|
|
960
|
+
"description": "IANA time zone of the days, e.g. Europe/Berlin; the app time zone when omitted",
|
|
961
|
+
"name": "timezone",
|
|
962
|
+
"hasDynamicHelp": false,
|
|
963
|
+
"multiple": false,
|
|
964
|
+
"type": "option"
|
|
965
|
+
},
|
|
966
|
+
"use-trial": {
|
|
967
|
+
"description": "Count from the trial, not from the first paid period",
|
|
968
|
+
"name": "use-trial",
|
|
969
|
+
"allowNo": false,
|
|
970
|
+
"type": "boolean"
|
|
971
|
+
},
|
|
972
|
+
"csv": {
|
|
973
|
+
"description": "Print a CSV table made from the API answer: one row per group, the total first (is_total true; a null key is an empty cell, an empty key is written \"\"); a compared period in compare.* columns of the same row; the numbers of the whole answer in data.* and meta.* columns. No groups: the header line, and \"No data for this period.\" with those numbers on stderr",
|
|
974
|
+
"exclusive": [
|
|
975
|
+
"json"
|
|
976
|
+
],
|
|
977
|
+
"name": "csv",
|
|
978
|
+
"allowNo": false,
|
|
979
|
+
"type": "boolean"
|
|
980
|
+
}
|
|
981
|
+
},
|
|
982
|
+
"hasDynamicHelp": false,
|
|
983
|
+
"hiddenAliases": [],
|
|
984
|
+
"id": "analytics:retention",
|
|
423
985
|
"pluginAlias": "adapty",
|
|
424
986
|
"pluginName": "adapty",
|
|
425
987
|
"pluginType": "core",
|
|
426
988
|
"strict": true,
|
|
427
|
-
"enableJsonFlag": true,
|
|
428
989
|
"isESM": true,
|
|
429
990
|
"relativePath": [
|
|
430
991
|
"dist",
|
|
431
992
|
"commands",
|
|
432
|
-
"
|
|
433
|
-
"
|
|
993
|
+
"analytics",
|
|
994
|
+
"retention.js"
|
|
434
995
|
]
|
|
435
996
|
},
|
|
436
|
-
"
|
|
997
|
+
"analytics:values": {
|
|
437
998
|
"aliases": [],
|
|
438
|
-
"args": {
|
|
439
|
-
|
|
440
|
-
"description": "Access Level ID (UUID)",
|
|
441
|
-
"name": "access_level_id",
|
|
442
|
-
"required": true
|
|
443
|
-
}
|
|
444
|
-
},
|
|
445
|
-
"description": "Update an access level",
|
|
999
|
+
"args": {},
|
|
1000
|
+
"description": "List the values one analytics filter takes for an app: what --filter accepts",
|
|
446
1001
|
"examples": [
|
|
447
|
-
"<%= config.bin %>
|
|
1002
|
+
"<%= config.bin %> analytics values --app APP_UUID --dimension country",
|
|
1003
|
+
"<%= config.bin %> analytics values --app APP_UUID --dimension store_product_id --json"
|
|
448
1004
|
],
|
|
449
1005
|
"flags": {
|
|
450
1006
|
"json": {
|
|
@@ -462,28 +1018,236 @@
|
|
|
462
1018
|
"multiple": false,
|
|
463
1019
|
"type": "option"
|
|
464
1020
|
},
|
|
1021
|
+
"dimension": {
|
|
1022
|
+
"description": "A filter dimension, as `adapty analytics catalog` lists it under Dimensions",
|
|
1023
|
+
"name": "dimension",
|
|
1024
|
+
"required": true,
|
|
1025
|
+
"hasDynamicHelp": false,
|
|
1026
|
+
"multiple": false,
|
|
1027
|
+
"type": "option"
|
|
1028
|
+
}
|
|
1029
|
+
},
|
|
1030
|
+
"hasDynamicHelp": false,
|
|
1031
|
+
"hiddenAliases": [],
|
|
1032
|
+
"id": "analytics:values",
|
|
1033
|
+
"pluginAlias": "adapty",
|
|
1034
|
+
"pluginName": "adapty",
|
|
1035
|
+
"pluginType": "core",
|
|
1036
|
+
"strict": true,
|
|
1037
|
+
"isESM": true,
|
|
1038
|
+
"relativePath": [
|
|
1039
|
+
"dist",
|
|
1040
|
+
"commands",
|
|
1041
|
+
"analytics",
|
|
1042
|
+
"values.js"
|
|
1043
|
+
]
|
|
1044
|
+
},
|
|
1045
|
+
"apps:create": {
|
|
1046
|
+
"aliases": [],
|
|
1047
|
+
"args": {},
|
|
1048
|
+
"description": "Create a new Adapty app",
|
|
1049
|
+
"examples": [
|
|
1050
|
+
"<%= config.bin %> apps create --title \"My App\" --platform ios --apple-bundle-id com.example.app",
|
|
1051
|
+
"<%= config.bin %> apps create --title \"My App\" --platform ios --platform android --apple-bundle-id com.example.app --google-bundle-id com.example.app"
|
|
1052
|
+
],
|
|
1053
|
+
"flags": {
|
|
1054
|
+
"json": {
|
|
1055
|
+
"description": "Format output as json.",
|
|
1056
|
+
"helpGroup": "GLOBAL",
|
|
1057
|
+
"name": "json",
|
|
1058
|
+
"allowNo": false,
|
|
1059
|
+
"type": "boolean"
|
|
1060
|
+
},
|
|
465
1061
|
"title": {
|
|
466
|
-
"description": "
|
|
1062
|
+
"description": "App title",
|
|
467
1063
|
"name": "title",
|
|
468
1064
|
"required": true,
|
|
469
1065
|
"hasDynamicHelp": false,
|
|
470
1066
|
"multiple": false,
|
|
471
1067
|
"type": "option"
|
|
1068
|
+
},
|
|
1069
|
+
"platform": {
|
|
1070
|
+
"description": "Platform (ios, android). Repeat for multiple.",
|
|
1071
|
+
"name": "platform",
|
|
1072
|
+
"required": true,
|
|
1073
|
+
"hasDynamicHelp": false,
|
|
1074
|
+
"multiple": true,
|
|
1075
|
+
"options": [
|
|
1076
|
+
"ios",
|
|
1077
|
+
"android"
|
|
1078
|
+
],
|
|
1079
|
+
"type": "option"
|
|
1080
|
+
},
|
|
1081
|
+
"apple-bundle-id": {
|
|
1082
|
+
"description": "Apple bundle ID (required with --platform ios)",
|
|
1083
|
+
"name": "apple-bundle-id",
|
|
1084
|
+
"hasDynamicHelp": false,
|
|
1085
|
+
"multiple": false,
|
|
1086
|
+
"type": "option"
|
|
1087
|
+
},
|
|
1088
|
+
"google-bundle-id": {
|
|
1089
|
+
"description": "Google bundle ID (required with --platform android)",
|
|
1090
|
+
"name": "google-bundle-id",
|
|
1091
|
+
"hasDynamicHelp": false,
|
|
1092
|
+
"multiple": false,
|
|
1093
|
+
"type": "option"
|
|
472
1094
|
}
|
|
473
1095
|
},
|
|
474
1096
|
"hasDynamicHelp": false,
|
|
475
1097
|
"hiddenAliases": [],
|
|
476
|
-
"id": "
|
|
1098
|
+
"id": "apps:create",
|
|
477
1099
|
"pluginAlias": "adapty",
|
|
478
1100
|
"pluginName": "adapty",
|
|
479
1101
|
"pluginType": "core",
|
|
480
1102
|
"strict": true,
|
|
481
|
-
"enableJsonFlag": true,
|
|
482
1103
|
"isESM": true,
|
|
483
1104
|
"relativePath": [
|
|
484
1105
|
"dist",
|
|
485
1106
|
"commands",
|
|
486
|
-
"
|
|
1107
|
+
"apps",
|
|
1108
|
+
"create.js"
|
|
1109
|
+
]
|
|
1110
|
+
},
|
|
1111
|
+
"apps:get": {
|
|
1112
|
+
"aliases": [],
|
|
1113
|
+
"args": {
|
|
1114
|
+
"app_id": {
|
|
1115
|
+
"description": "App ID (UUID)",
|
|
1116
|
+
"name": "app_id",
|
|
1117
|
+
"required": true
|
|
1118
|
+
}
|
|
1119
|
+
},
|
|
1120
|
+
"description": "Get app details",
|
|
1121
|
+
"examples": [
|
|
1122
|
+
"<%= config.bin %> apps get 550e8400-e29b-41d4-a716-446655440000"
|
|
1123
|
+
],
|
|
1124
|
+
"flags": {
|
|
1125
|
+
"json": {
|
|
1126
|
+
"description": "Format output as json.",
|
|
1127
|
+
"helpGroup": "GLOBAL",
|
|
1128
|
+
"name": "json",
|
|
1129
|
+
"allowNo": false,
|
|
1130
|
+
"type": "boolean"
|
|
1131
|
+
}
|
|
1132
|
+
},
|
|
1133
|
+
"hasDynamicHelp": false,
|
|
1134
|
+
"hiddenAliases": [],
|
|
1135
|
+
"id": "apps:get",
|
|
1136
|
+
"pluginAlias": "adapty",
|
|
1137
|
+
"pluginName": "adapty",
|
|
1138
|
+
"pluginType": "core",
|
|
1139
|
+
"strict": true,
|
|
1140
|
+
"isESM": true,
|
|
1141
|
+
"relativePath": [
|
|
1142
|
+
"dist",
|
|
1143
|
+
"commands",
|
|
1144
|
+
"apps",
|
|
1145
|
+
"get.js"
|
|
1146
|
+
]
|
|
1147
|
+
},
|
|
1148
|
+
"apps:list": {
|
|
1149
|
+
"aliases": [],
|
|
1150
|
+
"args": {},
|
|
1151
|
+
"description": "List Adapty apps",
|
|
1152
|
+
"examples": [
|
|
1153
|
+
"<%= config.bin %> apps list",
|
|
1154
|
+
"<%= config.bin %> apps list --page 2 --page-size 10"
|
|
1155
|
+
],
|
|
1156
|
+
"flags": {
|
|
1157
|
+
"json": {
|
|
1158
|
+
"description": "Format output as json.",
|
|
1159
|
+
"helpGroup": "GLOBAL",
|
|
1160
|
+
"name": "json",
|
|
1161
|
+
"allowNo": false,
|
|
1162
|
+
"type": "boolean"
|
|
1163
|
+
},
|
|
1164
|
+
"page": {
|
|
1165
|
+
"description": "Page number",
|
|
1166
|
+
"name": "page",
|
|
1167
|
+
"default": 1,
|
|
1168
|
+
"hasDynamicHelp": false,
|
|
1169
|
+
"multiple": false,
|
|
1170
|
+
"type": "option"
|
|
1171
|
+
},
|
|
1172
|
+
"page-size": {
|
|
1173
|
+
"description": "Items per page (max 100)",
|
|
1174
|
+
"name": "page-size",
|
|
1175
|
+
"default": 20,
|
|
1176
|
+
"hasDynamicHelp": false,
|
|
1177
|
+
"multiple": false,
|
|
1178
|
+
"type": "option"
|
|
1179
|
+
}
|
|
1180
|
+
},
|
|
1181
|
+
"hasDynamicHelp": false,
|
|
1182
|
+
"hiddenAliases": [],
|
|
1183
|
+
"id": "apps:list",
|
|
1184
|
+
"pluginAlias": "adapty",
|
|
1185
|
+
"pluginName": "adapty",
|
|
1186
|
+
"pluginType": "core",
|
|
1187
|
+
"strict": true,
|
|
1188
|
+
"isESM": true,
|
|
1189
|
+
"relativePath": [
|
|
1190
|
+
"dist",
|
|
1191
|
+
"commands",
|
|
1192
|
+
"apps",
|
|
1193
|
+
"list.js"
|
|
1194
|
+
]
|
|
1195
|
+
},
|
|
1196
|
+
"apps:update": {
|
|
1197
|
+
"aliases": [],
|
|
1198
|
+
"args": {
|
|
1199
|
+
"app_id": {
|
|
1200
|
+
"description": "App ID (UUID)",
|
|
1201
|
+
"name": "app_id",
|
|
1202
|
+
"required": true
|
|
1203
|
+
}
|
|
1204
|
+
},
|
|
1205
|
+
"description": "Update an app",
|
|
1206
|
+
"examples": [
|
|
1207
|
+
"<%= config.bin %> apps update 550e8400-... --title \"My App\""
|
|
1208
|
+
],
|
|
1209
|
+
"flags": {
|
|
1210
|
+
"json": {
|
|
1211
|
+
"description": "Format output as json.",
|
|
1212
|
+
"helpGroup": "GLOBAL",
|
|
1213
|
+
"name": "json",
|
|
1214
|
+
"allowNo": false,
|
|
1215
|
+
"type": "boolean"
|
|
1216
|
+
},
|
|
1217
|
+
"title": {
|
|
1218
|
+
"description": "App title",
|
|
1219
|
+
"name": "title",
|
|
1220
|
+
"hasDynamicHelp": false,
|
|
1221
|
+
"multiple": false,
|
|
1222
|
+
"type": "option"
|
|
1223
|
+
},
|
|
1224
|
+
"apple-bundle-id": {
|
|
1225
|
+
"description": "Apple bundle ID",
|
|
1226
|
+
"name": "apple-bundle-id",
|
|
1227
|
+
"hasDynamicHelp": false,
|
|
1228
|
+
"multiple": false,
|
|
1229
|
+
"type": "option"
|
|
1230
|
+
},
|
|
1231
|
+
"google-bundle-id": {
|
|
1232
|
+
"description": "Google bundle ID",
|
|
1233
|
+
"name": "google-bundle-id",
|
|
1234
|
+
"hasDynamicHelp": false,
|
|
1235
|
+
"multiple": false,
|
|
1236
|
+
"type": "option"
|
|
1237
|
+
}
|
|
1238
|
+
},
|
|
1239
|
+
"hasDynamicHelp": false,
|
|
1240
|
+
"hiddenAliases": [],
|
|
1241
|
+
"id": "apps:update",
|
|
1242
|
+
"pluginAlias": "adapty",
|
|
1243
|
+
"pluginName": "adapty",
|
|
1244
|
+
"pluginType": "core",
|
|
1245
|
+
"strict": true,
|
|
1246
|
+
"isESM": true,
|
|
1247
|
+
"relativePath": [
|
|
1248
|
+
"dist",
|
|
1249
|
+
"commands",
|
|
1250
|
+
"apps",
|
|
487
1251
|
"update.js"
|
|
488
1252
|
]
|
|
489
1253
|
},
|
|
@@ -2145,7 +2909,7 @@
|
|
|
2145
2909
|
"type": "option"
|
|
2146
2910
|
},
|
|
2147
2911
|
"audiences": {
|
|
2148
|
-
"description": "JSON array of audience entries. Every entry needs an explicit content_type. Paywall: {content_type:\"paywall\", segment_ids, paywall_id, priority}. Flow: {content_type:\"flow\", segment_ids, flow_id, priority}. A flow must be published first (flows publish) — attaching a draft flow returns 400.",
|
|
2912
|
+
"description": "JSON array of audience entries. Every entry needs an explicit content_type. Paywall: {content_type:\"paywall\", segment_ids, paywall_id, priority}. Flow: {content_type:\"flow\", segment_ids, flow_id, priority}. A/B test (as `placements get` shows it): {content_type:\"ab_test\" | \"flow_ab_test\", ab_test_id, segment_ids, priority}; crossplacement entries (\"cross_ab_test\", \"flow_cross_ab_test\") are read-only, the API keeps the stored ones. Write the entries of `placements get` back unchanged to keep a running test: a write that removes or replaces an A/B test entry stops that test with no winner. A flow must be published first (flows publish) — attaching a draft flow returns 400.",
|
|
2149
2913
|
"name": "audiences",
|
|
2150
2914
|
"hasDynamicHelp": false,
|
|
2151
2915
|
"multiple": false,
|
|
@@ -2325,7 +3089,7 @@
|
|
|
2325
3089
|
"type": "option"
|
|
2326
3090
|
},
|
|
2327
3091
|
"audiences": {
|
|
2328
|
-
"description": "JSON array of audience entries. Every entry needs an explicit content_type. Paywall: {content_type:\"paywall\", segment_ids, paywall_id, priority}. Flow: {content_type:\"flow\", segment_ids, flow_id, priority}. A flow must be published first (flows publish) — attaching a draft flow returns 400.",
|
|
3092
|
+
"description": "JSON array of audience entries. Every entry needs an explicit content_type. Paywall: {content_type:\"paywall\", segment_ids, paywall_id, priority}. Flow: {content_type:\"flow\", segment_ids, flow_id, priority}. A/B test (as `placements get` shows it): {content_type:\"ab_test\" | \"flow_ab_test\", ab_test_id, segment_ids, priority}; crossplacement entries (\"cross_ab_test\", \"flow_cross_ab_test\") are read-only, the API keeps the stored ones. Write the entries of `placements get` back unchanged to keep a running test: a write that removes or replaces an A/B test entry stops that test with no winner. A flow must be published first (flows publish) — attaching a draft flow returns 400.",
|
|
2329
3093
|
"name": "audiences",
|
|
2330
3094
|
"hasDynamicHelp": false,
|
|
2331
3095
|
"multiple": false,
|
|
@@ -6790,5 +7554,5 @@
|
|
|
6790
7554
|
]
|
|
6791
7555
|
}
|
|
6792
7556
|
},
|
|
6793
|
-
"version": "0.
|
|
7557
|
+
"version": "0.12.0"
|
|
6794
7558
|
}
|