@pushwoosh/rpc-gateway-statistics-api 1.3.718 → 1.3.720

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/data.js CHANGED
@@ -2371,6 +2371,211 @@ export const data = {
2371
2371
  }
2372
2372
  }
2373
2373
  },
2374
+ "pushwoosh.statistics.statistics.v2.inapps.Metrics": {
2375
+ "type": "I",
2376
+ "fields": {
2377
+ "impressions": {
2378
+ "type": "number"
2379
+ },
2380
+ "uniqueImpressions": {
2381
+ "type": "number"
2382
+ },
2383
+ "interactions": {
2384
+ "type": "number"
2385
+ },
2386
+ "uniqueInteractions": {
2387
+ "type": "number"
2388
+ },
2389
+ "skips": {
2390
+ "type": "number"
2391
+ },
2392
+ "audience": {
2393
+ "type": "number"
2394
+ }
2395
+ }
2396
+ },
2397
+ "pushwoosh.statistics.statistics.v2.inapps.PlatformMetrics": {
2398
+ "type": "I",
2399
+ "fields": {
2400
+ "platform": {
2401
+ "type": "pushwoosh.statistics.types.Platform"
2402
+ },
2403
+ "metrics": {
2404
+ "type": "pushwoosh.statistics.statistics.v2.inapps.Metrics"
2405
+ }
2406
+ }
2407
+ },
2408
+ "pushwoosh.statistics.statistics.v2.inapps.FrequencyCapping": {
2409
+ "type": "I",
2410
+ "fields": {
2411
+ "suppressions": {
2412
+ "type": "number"
2413
+ },
2414
+ "affectedUsers": {
2415
+ "type": "number"
2416
+ },
2417
+ "dataAvailableFrom": {
2418
+ "type": "string"
2419
+ }
2420
+ }
2421
+ },
2422
+ "pushwoosh.statistics.statistics.v2.inapps.InappInfo": {
2423
+ "type": "I",
2424
+ "fields": {
2425
+ "code": {
2426
+ "type": "string"
2427
+ },
2428
+ "name": {
2429
+ "type": "string"
2430
+ },
2431
+ "status": {
2432
+ "type": "string"
2433
+ },
2434
+ "richMediaCode": {
2435
+ "type": "string"
2436
+ }
2437
+ }
2438
+ },
2439
+ "pushwoosh.statistics.statistics.v2.inapps.ImpressionDuration": {
2440
+ "type": "I",
2441
+ "fields": {
2442
+ "fromSeconds": {
2443
+ "type": "number"
2444
+ },
2445
+ "toSeconds": {
2446
+ "type": "number"
2447
+ },
2448
+ "count": {
2449
+ "type": "number"
2450
+ }
2451
+ }
2452
+ },
2453
+ "pushwoosh.statistics.statistics.v2.inapps.GetTotalsRequest": {
2454
+ "type": "I",
2455
+ "fields": {
2456
+ "application": {
2457
+ "type": "string"
2458
+ },
2459
+ "dateRange": {
2460
+ "type": "pushwoosh.statistics.types.DateRange"
2461
+ },
2462
+ "inappCodes": {
2463
+ "type": "string",
2464
+ "array": true
2465
+ },
2466
+ "platforms": {
2467
+ "type": "pushwoosh.statistics.types.Platform",
2468
+ "array": true
2469
+ },
2470
+ "withPlatforms": {
2471
+ "type": "boolean"
2472
+ },
2473
+ "page": {
2474
+ "type": "number"
2475
+ },
2476
+ "perPage": {
2477
+ "type": "number"
2478
+ }
2479
+ }
2480
+ },
2481
+ "pushwoosh.statistics.statistics.v2.inapps.InappTotals": {
2482
+ "type": "I",
2483
+ "fields": {
2484
+ "inapp": {
2485
+ "type": "pushwoosh.statistics.statistics.v2.inapps.InappInfo"
2486
+ },
2487
+ "metrics": {
2488
+ "type": "pushwoosh.statistics.statistics.v2.inapps.Metrics"
2489
+ },
2490
+ "platforms": {
2491
+ "type": "pushwoosh.statistics.statistics.v2.inapps.PlatformMetrics",
2492
+ "array": true
2493
+ },
2494
+ "frequencyCapping": {
2495
+ "type": "pushwoosh.statistics.statistics.v2.inapps.FrequencyCapping"
2496
+ }
2497
+ }
2498
+ },
2499
+ "pushwoosh.statistics.statistics.v2.inapps.GetTotalsResponse": {
2500
+ "type": "I",
2501
+ "fields": {
2502
+ "total": {
2503
+ "type": "number"
2504
+ },
2505
+ "page": {
2506
+ "type": "number"
2507
+ },
2508
+ "perPage": {
2509
+ "type": "number"
2510
+ },
2511
+ "items": {
2512
+ "type": "pushwoosh.statistics.statistics.v2.inapps.InappTotals",
2513
+ "array": true
2514
+ }
2515
+ }
2516
+ },
2517
+ "pushwoosh.statistics.statistics.v2.inapps.GetTimelineRequest": {
2518
+ "type": "I",
2519
+ "fields": {
2520
+ "application": {
2521
+ "type": "string"
2522
+ },
2523
+ "inappCode": {
2524
+ "type": "string"
2525
+ },
2526
+ "dateRange": {
2527
+ "type": "pushwoosh.statistics.types.DateRange"
2528
+ },
2529
+ "platforms": {
2530
+ "type": "pushwoosh.statistics.types.Platform",
2531
+ "array": true
2532
+ },
2533
+ "withPlatforms": {
2534
+ "type": "boolean"
2535
+ }
2536
+ }
2537
+ },
2538
+ "pushwoosh.statistics.statistics.v2.inapps.TimelineRow": {
2539
+ "type": "I",
2540
+ "fields": {
2541
+ "timestamp": {
2542
+ "type": "string"
2543
+ },
2544
+ "metrics": {
2545
+ "type": "pushwoosh.statistics.statistics.v2.inapps.Metrics"
2546
+ },
2547
+ "platforms": {
2548
+ "type": "pushwoosh.statistics.statistics.v2.inapps.PlatformMetrics",
2549
+ "array": true
2550
+ }
2551
+ }
2552
+ },
2553
+ "pushwoosh.statistics.statistics.v2.inapps.GetTimelineResponse": {
2554
+ "type": "I",
2555
+ "fields": {
2556
+ "inapp": {
2557
+ "type": "pushwoosh.statistics.statistics.v2.inapps.InappInfo"
2558
+ },
2559
+ "totals": {
2560
+ "type": "pushwoosh.statistics.statistics.v2.inapps.Metrics"
2561
+ },
2562
+ "platforms": {
2563
+ "type": "pushwoosh.statistics.statistics.v2.inapps.PlatformMetrics",
2564
+ "array": true
2565
+ },
2566
+ "frequencyCapping": {
2567
+ "type": "pushwoosh.statistics.statistics.v2.inapps.FrequencyCapping"
2568
+ },
2569
+ "rows": {
2570
+ "type": "pushwoosh.statistics.statistics.v2.inapps.TimelineRow",
2571
+ "array": true
2572
+ },
2573
+ "impressionDuration": {
2574
+ "type": "pushwoosh.statistics.statistics.v2.inapps.ImpressionDuration",
2575
+ "array": true
2576
+ }
2577
+ }
2578
+ },
2374
2579
  "pushwoosh.statistics.statistics.v2.ListRequest.Filter": {
2375
2580
  "type": "I",
2376
2581
  "fields": {
@@ -3052,6 +3257,12 @@ export const data = {
3052
3257
  "method": "post",
3053
3258
  "path": "/api/v2/statistics/messages/getEmailApplicationStatistics"
3054
3259
  },
3260
+ "GetMessageDeliveryFunnel": {
3261
+ "request": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelRequest",
3262
+ "response": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse",
3263
+ "method": "post",
3264
+ "path": "/api/v2/statistics/messages/getDeliveryFunnel"
3265
+ },
3055
3266
  "GetActiveAudience": {
3056
3267
  "request": "pushwoosh.statistics.statistics.v2.statistics.GetActiveAudienceRequest",
3057
3268
  "response": "pushwoosh.statistics.statistics.v2.statistics.GetActiveAudienceResponse",
@@ -3824,6 +4035,175 @@ export const data = {
3824
4035
  }
3825
4036
  }
3826
4037
  },
4038
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelRequest": {
4039
+ "type": "I",
4040
+ "fields": {
4041
+ "messageCode": {
4042
+ "type": "string"
4043
+ },
4044
+ "platforms": {
4045
+ "type": "number",
4046
+ "array": true
4047
+ },
4048
+ "interval": {
4049
+ "type": "pushwoosh.statistics.types.TimeInterval"
4050
+ }
4051
+ }
4052
+ },
4053
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Stage": {
4054
+ "type": "E",
4055
+ "values": [
4056
+ "STAGE_UNSPECIFIED",
4057
+ "STAGE_AUDIENCE",
4058
+ "STAGE_SENT",
4059
+ "STAGE_ERRORS",
4060
+ "STAGE_DELIVERIES",
4061
+ "STAGE_OPENED"
4062
+ ]
4063
+ },
4064
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Kind": {
4065
+ "type": "E",
4066
+ "values": [
4067
+ "KIND_UNSPECIFIED",
4068
+ "KIND_PASSED",
4069
+ "KIND_REASON",
4070
+ "KIND_SUBSET"
4071
+ ]
4072
+ },
4073
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.FunnelState": {
4074
+ "type": "E",
4075
+ "values": [
4076
+ "FUNNEL_STATE_UNSPECIFIED",
4077
+ "FUNNEL_STATE_READY",
4078
+ "FUNNEL_STATE_NO_EVENTS",
4079
+ "FUNNEL_STATE_EXPIRED"
4080
+ ]
4081
+ },
4082
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.DeliveriesForm": {
4083
+ "type": "E",
4084
+ "values": [
4085
+ "DELIVERIES_FORM_UNSPECIFIED",
4086
+ "DELIVERIES_FORM_PER_DEVICE",
4087
+ "DELIVERIES_FORM_BASIC"
4088
+ ]
4089
+ },
4090
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.BasicFormReason": {
4091
+ "type": "E",
4092
+ "values": [
4093
+ "BASIC_FORM_REASON_UNSPECIFIED",
4094
+ "BASIC_FORM_REASON_RETENTION",
4095
+ "BASIC_FORM_REASON_UNAVAILABLE",
4096
+ "BASIC_FORM_REASON_NO_DELIVERIES"
4097
+ ]
4098
+ },
4099
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Piece": {
4100
+ "type": "I",
4101
+ "fields": {
4102
+ "kind": {
4103
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Kind"
4104
+ },
4105
+ "category": {
4106
+ "type": "string"
4107
+ },
4108
+ "count": {
4109
+ "type": "number"
4110
+ }
4111
+ }
4112
+ },
4113
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Point": {
4114
+ "type": "I",
4115
+ "fields": {
4116
+ "bucket": {
4117
+ "type": "Date"
4118
+ },
4119
+ "count": {
4120
+ "type": "number"
4121
+ }
4122
+ }
4123
+ },
4124
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Series": {
4125
+ "type": "I",
4126
+ "fields": {
4127
+ "platform": {
4128
+ "type": "number"
4129
+ },
4130
+ "points": {
4131
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Point",
4132
+ "array": true
4133
+ }
4134
+ }
4135
+ },
4136
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.ErrorRow": {
4137
+ "type": "I",
4138
+ "fields": {
4139
+ "category": {
4140
+ "type": "string"
4141
+ },
4142
+ "platform": {
4143
+ "type": "number"
4144
+ },
4145
+ "count": {
4146
+ "type": "number"
4147
+ },
4148
+ "points": {
4149
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Point",
4150
+ "array": true
4151
+ }
4152
+ }
4153
+ },
4154
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.StageItem": {
4155
+ "type": "I",
4156
+ "fields": {
4157
+ "stage": {
4158
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Stage"
4159
+ },
4160
+ "count": {
4161
+ "type": "number"
4162
+ },
4163
+ "pieces": {
4164
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Piece",
4165
+ "array": true
4166
+ },
4167
+ "errors": {
4168
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.ErrorRow",
4169
+ "array": true
4170
+ },
4171
+ "series": {
4172
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Series",
4173
+ "array": true
4174
+ }
4175
+ }
4176
+ },
4177
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse": {
4178
+ "type": "I",
4179
+ "fields": {
4180
+ "funnel": {
4181
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.StageItem",
4182
+ "array": true
4183
+ },
4184
+ "windowFrom": {
4185
+ "type": "Date"
4186
+ },
4187
+ "windowTo": {
4188
+ "type": "Date"
4189
+ },
4190
+ "funnelState": {
4191
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.FunnelState"
4192
+ },
4193
+ "deliveriesForm": {
4194
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.DeliveriesForm"
4195
+ },
4196
+ "basicFormReason": {
4197
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.BasicFormReason"
4198
+ },
4199
+ "confirmedDeliveriesTotal": {
4200
+ "type": "number"
4201
+ },
4202
+ "interval": {
4203
+ "type": "pushwoosh.statistics.types.TimeInterval"
4204
+ }
4205
+ }
4206
+ },
3827
4207
  "pushwoosh.statistics.statistics.v2.statistics.ActiveAudienceType": {
3828
4208
  "type": "E",
3829
4209
  "values": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pushwoosh/rpc-gateway-statistics-api",
3
- "version": "1.3.718",
3
+ "version": "1.3.720",
4
4
  "description": "Statistics API gateway HTTP API Types and Data",
5
5
  "main": "index.js",
6
6
  "module": "index.js",
@@ -0,0 +1,86 @@
1
+ import { Platform as pushwoosh_statistics_types_Platform } from './pushwoosh_statistics_types';
2
+ import { DateRange as pushwoosh_statistics_types_DateRange } from './pushwoosh_statistics_types';
3
+ /**
4
+ * Metrics carries the numbers shown on the in-app statistics screen in the
5
+ * Control Panel. Uniques are HyperLogLog estimates: platform rows never sum up
6
+ * to the in-app total, because a device counts once per platform it uses.
7
+ */
8
+ export type Metrics = {
9
+ impressions: number;
10
+ uniqueImpressions: number;
11
+ interactions: number;
12
+ uniqueInteractions: number;
13
+ skips: number;
14
+ audience: number;
15
+ };
16
+ export type PlatformMetrics = {
17
+ platform: pushwoosh_statistics_types_Platform;
18
+ metrics: Metrics;
19
+ };
20
+ /**
21
+ * FrequencyCapping reports in-apps suppressed by capping rules. Suppression data
22
+ * starts at data_available_from; earlier days are not covered and the block comes
23
+ * back empty for a period that ends before that date.
24
+ */
25
+ export type FrequencyCapping = {
26
+ suppressions: number;
27
+ affectedUsers: number;
28
+ dataAvailableFrom: string;
29
+ };
30
+ export type InappInfo = {
31
+ code: string;
32
+ name: string;
33
+ status: string;
34
+ richMediaCode: string;
35
+ };
36
+ /**
37
+ * ImpressionDuration is one bucket of the impression duration histogram,
38
+ * to_seconds = 0 means "and longer".
39
+ */
40
+ export type ImpressionDuration = {
41
+ fromSeconds: number;
42
+ toSeconds: number;
43
+ count: number;
44
+ };
45
+ export type GetTotalsRequest = {
46
+ application: string;
47
+ dateRange: pushwoosh_statistics_types_DateRange;
48
+ inappCodes: string[];
49
+ platforms: pushwoosh_statistics_types_Platform[];
50
+ withPlatforms: boolean;
51
+ page: number;
52
+ perPage: number;
53
+ };
54
+ export type InappTotals = {
55
+ inapp: InappInfo;
56
+ metrics: Metrics;
57
+ platforms: PlatformMetrics[];
58
+ frequencyCapping: FrequencyCapping;
59
+ };
60
+ export type GetTotalsResponse = {
61
+ total: number;
62
+ page: number;
63
+ perPage: number;
64
+ items: InappTotals[];
65
+ };
66
+ export type GetTimelineRequest = {
67
+ application: string;
68
+ inappCode: string;
69
+ dateRange: pushwoosh_statistics_types_DateRange;
70
+ platforms: pushwoosh_statistics_types_Platform[];
71
+ withPlatforms: boolean;
72
+ };
73
+ export type TimelineRow = {
74
+ /** Bucket start in UTC, RFC3339. */
75
+ timestamp: string;
76
+ metrics: Metrics;
77
+ platforms: PlatformMetrics[];
78
+ };
79
+ export type GetTimelineResponse = {
80
+ inapp: InappInfo;
81
+ totals: Metrics;
82
+ platforms: PlatformMetrics[];
83
+ frequencyCapping: FrequencyCapping;
84
+ rows: TimelineRow[];
85
+ impressionDuration: ImpressionDuration[];
86
+ };
@@ -0,0 +1,3 @@
1
+ /* eslint-disable */
2
+ /* Autogenerated code */
3
+ export {};
@@ -11,6 +11,7 @@ export type StatisticsService_GetMAUStatistics = RpcMethod<GetMAUStatisticsReque
11
11
  export type StatisticsService_GetDAUStatistics = RpcMethod<GetDAUStatisticsRequest, GetDAUStatisticsResponse>;
12
12
  export type StatisticsService_GetPushApplicationStatistics = RpcMethod<GetPushApplicationStatisticsRequest, GetPushApplicationStatisticsResponse>;
13
13
  export type StatisticsService_GetEmailApplicationStatistics = RpcMethod<GetEmailApplicationStatisticsRequest, GetEmailApplicationStatisticsResponse>;
14
+ export type StatisticsService_GetMessageDeliveryFunnel = RpcMethod<GetMessageDeliveryFunnelRequest, GetMessageDeliveryFunnelResponse>;
14
15
  export type StatisticsService_GetActiveAudience = RpcMethod<GetActiveAudienceRequest, GetActiveAudienceResponse>;
15
16
  /** StatisticsService provides various statistics operations */
16
17
  export interface StatisticsService {
@@ -36,6 +37,13 @@ export interface StatisticsService {
36
37
  GetPushApplicationStatistics: StatisticsService_GetPushApplicationStatistics;
37
38
  /** GetEmailApplicationStatistics returns email statistics (total devices, sends, open rate) with time series data */
38
39
  GetEmailApplicationStatistics: StatisticsService_GetEmailApplicationStatistics;
40
+ /**
41
+ * GetMessageDeliveryFunnel returns the delivery funnel of a single message:
42
+ * audience -> sent -> deliveries -> opened, with a breakdown of where the
43
+ * audience is lost. Every stage equals the sum of its PASSED and REASON
44
+ * pieces; SUBSET pieces are not summands.
45
+ */
46
+ GetMessageDeliveryFunnel: StatisticsService_GetMessageDeliveryFunnel;
39
47
  /** GetActiveAudience returns active users and active devices groped by application and platform */
40
48
  GetActiveAudience: StatisticsService_GetActiveAudience;
41
49
  }
@@ -507,6 +515,175 @@ export type GetEmailApplicationStatisticsResponse = {
507
515
  /** Time interval for grouping data */
508
516
  interval: pushwoosh_statistics_types_TimeInterval;
509
517
  };
518
+ /**
519
+ * GetMessageDeliveryFunnelRequest asks for the funnel of a single message.
520
+ *
521
+ * There is deliberately no time range. Sends and delivery confirmations live on
522
+ * different time axes — a confirmation arrives hours or days after its send — so
523
+ * any client-chosen window cuts them in different places and breaks the
524
+ * DELIVERIES invariant. The server derives the window from the data.
525
+ */
526
+ export type GetMessageDeliveryFunnelRequest = {
527
+ /** Specific message code, required */
528
+ messageCode: string;
529
+ /** Optional platform ID filter */
530
+ platforms: number[];
531
+ /**
532
+ * Bucket width for the series. Unset lets the server pick it from the window
533
+ * the way every other time series here does: over a month -> day, over a day
534
+ * -> hour, else minute; a window of exactly a year buckets by month.
535
+ *
536
+ * Series are always returned — the screen this serves always draws the chart —
537
+ * so there is no flag to ask for them.
538
+ */
539
+ interval: pushwoosh_statistics_types_TimeInterval;
540
+ };
541
+ /**
542
+ * Stage is a funnel level. Stages always come in the order they appear in the
543
+ * funnel array; the numbers here do not define that order.
544
+ */
545
+ export type GetMessageDeliveryFunnelResponse_Stage = 'STAGE_UNSPECIFIED'
546
+ /** taken into processing */
547
+ | 'STAGE_AUDIENCE'
548
+ /** accepted by the gateway */
549
+ | 'STAGE_SENT'
550
+ /** rejected before the gateway took it */
551
+ | 'STAGE_ERRORS'
552
+ /** accepted, split by confirmation */
553
+ | 'STAGE_DELIVERIES'
554
+ /** unique devices that opened */
555
+ | 'STAGE_OPENED';
556
+ /** Kind tells how a piece relates to its stage total. */
557
+ export type GetMessageDeliveryFunnelResponse_Kind = 'KIND_UNSPECIFIED'
558
+ /** moved on to the next stage */
559
+ | 'KIND_PASSED'
560
+ /** did not move on, for this reason */
561
+ | 'KIND_REASON'
562
+ /** part of the stage, NOT a summand */
563
+ | 'KIND_SUBSET';
564
+ /**
565
+ * FunnelState describes the response as a whole, before any stage is read. It
566
+ * exists because an empty funnel has two very different meanings and the same
567
+ * shape: nothing has happened for this message yet, or its statistics are older
568
+ * than the pre-aggregate keeps.
569
+ */
570
+ export type GetMessageDeliveryFunnelResponse_FunnelState = 'FUNNEL_STATE_UNSPECIFIED'
571
+ /** the funnel is populated */
572
+ | 'FUNNEL_STATE_READY'
573
+ /** nothing happened for this message yet */
574
+ | 'FUNNEL_STATE_NO_EVENTS'
575
+ /** sent longer ago than statistics are kept */
576
+ | 'FUNNEL_STATE_EXPIRED';
577
+ /**
578
+ * DeliveriesForm tells which breakdown STAGE_DELIVERIES carries. The two forms
579
+ * count different sets and therefore use different category names — a client
580
+ * comparing them must not treat the rows as continuous.
581
+ *
582
+ * There is no withheld form: allow_show_delivery_statistics restricts non-email
583
+ * deliveries, never the stage, so STAGE_DELIVERIES is always part of the funnel.
584
+ */
585
+ export type GetMessageDeliveryFunnelResponse_DeliveriesForm = 'DELIVERIES_FORM_UNSPECIFIED'
586
+ /** three disjoint rows, alert state known */
587
+ | 'DELIVERIES_FORM_PER_DEVICE'
588
+ /** two rows, alert state unknown */
589
+ | 'DELIVERIES_FORM_BASIC';
590
+ /**
591
+ * BasicFormReason explains why the per-device breakdown is missing. Only set
592
+ * when deliveries_form is DELIVERIES_FORM_BASIC.
593
+ *
594
+ * NO_DELIVERIES is deliberately not called NO_EVENTS: FunnelState already uses
595
+ * that name for "nothing happened for this message at all", and here sends did
596
+ * happen — there is simply nothing to break down yet.
597
+ */
598
+ export type GetMessageDeliveryFunnelResponse_BasicFormReason = 'BASIC_FORM_REASON_UNSPECIFIED'
599
+ /** older than the row-level log keeps */
600
+ | 'BASIC_FORM_REASON_RETENTION'
601
+ /** system message, account not covered */
602
+ | 'BASIC_FORM_REASON_UNAVAILABLE'
603
+ /** nothing accepted yet — say nothing in the UI */
604
+ | 'BASIC_FORM_REASON_NO_DELIVERIES';
605
+ /** Piece is one row of the funnel table. */
606
+ export type GetMessageDeliveryFunnelResponse_Piece = {
607
+ kind: GetMessageDeliveryFunnelResponse_Kind;
608
+ /** FREQUENCY_CAPPING, ACCEPTED_BY_GATEWAY, ... */
609
+ category: string;
610
+ count: number;
611
+ };
612
+ /**
613
+ * Point is one bucket of a series. Buckets are UTC; there is no timezone in the
614
+ * request, so a day is a UTC day.
615
+ */
616
+ export type GetMessageDeliveryFunnelResponse_Point = {
617
+ /** start of the interval */
618
+ bucket: Date;
619
+ count: number;
620
+ };
621
+ /**
622
+ * Series is a stage's count spread over time, for one platform.
623
+ *
624
+ * Sums to the stage count exactly — over buckets and over platforms both —
625
+ * with one named exception, STAGE_DELIVERIES. Both come from one query: the
626
+ * series is that query grouped by bucket and platform, the count is the same
627
+ * query without the grouping. A device belongs to one platform, so the
628
+ * per-device stages stay additive across the platform split just as the
629
+ * event-counted ones do.
630
+ *
631
+ * The exception: STAGE_DELIVERIES counts accepted sends on the send axis while
632
+ * its series counts confirmations on the event axis, so that series reconciles
633
+ * with confirmed_deliveries_total instead of with the stage count.
634
+ */
635
+ export type GetMessageDeliveryFunnelResponse_Series = {
636
+ platform: number;
637
+ points: GetMessageDeliveryFunnelResponse_Point[];
638
+ };
639
+ /**
640
+ * ErrorRow is what STAGE_ERRORS carries instead of pieces: the screen needs the
641
+ * category and the platform at the same time, which a Series cannot express.
642
+ */
643
+ export type GetMessageDeliveryFunnelResponse_ErrorRow = {
644
+ /** INVALID_TOKEN, QUOTA_EXCEEDED, INTERNAL_ERROR, ... */
645
+ category: string;
646
+ platform: number;
647
+ count: number;
648
+ points: GetMessageDeliveryFunnelResponse_Point[];
649
+ };
650
+ /** StageItem is one funnel level with its breakdown. */
651
+ export type GetMessageDeliveryFunnelResponse_StageItem = {
652
+ stage: GetMessageDeliveryFunnelResponse_Stage;
653
+ count: number;
654
+ /** empty on STAGE_ERRORS */
655
+ pieces: GetMessageDeliveryFunnelResponse_Piece[];
656
+ /** STAGE_ERRORS only */
657
+ errors: GetMessageDeliveryFunnelResponse_ErrorRow[];
658
+ series: GetMessageDeliveryFunnelResponse_Series[];
659
+ };
660
+ export type GetMessageDeliveryFunnelResponse = {
661
+ funnel: GetMessageDeliveryFunnelResponse_StageItem[];
662
+ /**
663
+ * The window the funnel was computed over, derived from the data. Returned
664
+ * because the numbers are meaningless without a period, and because the
665
+ * pre-aggregate TTL can make it shorter than the actual send.
666
+ */
667
+ windowFrom: Date;
668
+ windowTo: Date;
669
+ funnelState: GetMessageDeliveryFunnelResponse_FunnelState;
670
+ deliveriesForm: GetMessageDeliveryFunnelResponse_DeliveriesForm;
671
+ basicFormReason: GetMessageDeliveryFunnelResponse_BasicFormReason;
672
+ /**
673
+ * All devices that confirmed delivery, regardless of alert state. Not a funnel
674
+ * row: it overlaps ALERTS_DISABLED and would break the stage sum. It is the
675
+ * one number a client can reconcile with the tracking log CSV export.
676
+ *
677
+ * Without allow_show_delivery_statistics it counts email confirmations only,
678
+ * matching the confirmation rows of STAGE_DELIVERIES.
679
+ */
680
+ confirmedDeliveriesTotal: number;
681
+ /**
682
+ * The bucket width actually used, whether it came from the request or from the
683
+ * automatic pick. Always set when any series is present.
684
+ */
685
+ interval: pushwoosh_statistics_types_TimeInterval;
686
+ };
510
687
  /** ActiveAudienceType specifies the type of active users calculation */
511
688
  export type ActiveAudienceType =
512
689
  /** Unspecified type */