@pushwoosh/rpc-gateway-statistics-api 1.3.726 → 1.3.728

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
@@ -2019,7 +2019,8 @@ export const data = {
2019
2019
  "TAG_VALUES",
2020
2020
  "CAMPAIGNS",
2021
2021
  "MESSAGES",
2022
- "JOURNEYS"
2022
+ "JOURNEYS",
2023
+ "SEGMENTS"
2023
2024
  ]
2024
2025
  },
2025
2026
  "pushwoosh.statistics.statistics.v2.dashboards.MathOperator": {
@@ -2294,6 +2295,10 @@ export const data = {
2294
2295
  "metrics": {
2295
2296
  "type": "pushwoosh.statistics.statistics.v2.dashboards.GetLinearChartMetricsResponse.Metric",
2296
2297
  "array": true
2298
+ },
2299
+ "notPreparedSegments": {
2300
+ "type": "string",
2301
+ "array": true
2297
2302
  }
2298
2303
  }
2299
2304
  },
@@ -2337,6 +2342,10 @@ export const data = {
2337
2342
  "metrics": {
2338
2343
  "type": "pushwoosh.statistics.statistics.v2.dashboards.GetTotalsChartMetricsResponse.Metric",
2339
2344
  "array": true
2345
+ },
2346
+ "notPreparedSegments": {
2347
+ "type": "string",
2348
+ "array": true
2340
2349
  }
2341
2350
  }
2342
2351
  },
@@ -3263,6 +3272,12 @@ export const data = {
3263
3272
  "method": "post",
3264
3273
  "path": "/api/v2/statistics/messages/getDeliveryFunnel"
3265
3274
  },
3275
+ "GetMessageDeliveryTimeline": {
3276
+ "request": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryTimelineRequest",
3277
+ "response": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryTimelineResponse",
3278
+ "method": "post",
3279
+ "path": "/api/v2/statistics/messages/getDeliveryTimeline"
3280
+ },
3266
3281
  "GetActiveAudience": {
3267
3282
  "request": "pushwoosh.statistics.statistics.v2.statistics.GetActiveAudienceRequest",
3268
3283
  "response": "pushwoosh.statistics.statistics.v2.statistics.GetActiveAudienceResponse",
@@ -4044,9 +4059,6 @@ export const data = {
4044
4059
  "platforms": {
4045
4060
  "type": "number",
4046
4061
  "array": true
4047
- },
4048
- "interval": {
4049
- "type": "pushwoosh.statistics.types.TimeInterval"
4050
4062
  }
4051
4063
  }
4052
4064
  },
@@ -4096,39 +4108,31 @@ export const data = {
4096
4108
  "BASIC_FORM_REASON_NO_DELIVERIES"
4097
4109
  ]
4098
4110
  },
4099
- "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Piece": {
4111
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.PlatformCount": {
4100
4112
  "type": "I",
4101
4113
  "fields": {
4102
- "kind": {
4103
- "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Kind"
4104
- },
4105
- "category": {
4106
- "type": "string"
4114
+ "platform": {
4115
+ "type": "number"
4107
4116
  },
4108
4117
  "count": {
4109
4118
  "type": "number"
4110
4119
  }
4111
4120
  }
4112
4121
  },
4113
- "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Point": {
4122
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Piece": {
4114
4123
  "type": "I",
4115
4124
  "fields": {
4116
- "bucket": {
4117
- "type": "Date"
4125
+ "kind": {
4126
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Kind"
4127
+ },
4128
+ "category": {
4129
+ "type": "string"
4118
4130
  },
4119
4131
  "count": {
4120
4132
  "type": "number"
4121
- }
4122
- }
4123
- },
4124
- "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Series": {
4125
- "type": "I",
4126
- "fields": {
4127
- "platform": {
4128
- "type": "number"
4129
4133
  },
4130
- "points": {
4131
- "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Point",
4134
+ "platforms": {
4135
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.PlatformCount",
4132
4136
  "array": true
4133
4137
  }
4134
4138
  }
@@ -4139,14 +4143,11 @@ export const data = {
4139
4143
  "category": {
4140
4144
  "type": "string"
4141
4145
  },
4142
- "platform": {
4143
- "type": "number"
4144
- },
4145
4146
  "count": {
4146
4147
  "type": "number"
4147
4148
  },
4148
- "points": {
4149
- "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Point",
4149
+ "platforms": {
4150
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.PlatformCount",
4150
4151
  "array": true
4151
4152
  }
4152
4153
  }
@@ -4168,8 +4169,20 @@ export const data = {
4168
4169
  "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.ErrorRow",
4169
4170
  "array": true
4170
4171
  },
4171
- "series": {
4172
- "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.Series",
4172
+ "platforms": {
4173
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.PlatformCount",
4174
+ "array": true
4175
+ }
4176
+ }
4177
+ },
4178
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.ConfirmedDeliveries": {
4179
+ "type": "I",
4180
+ "fields": {
4181
+ "count": {
4182
+ "type": "number"
4183
+ },
4184
+ "platforms": {
4185
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.PlatformCount",
4173
4186
  "array": true
4174
4187
  }
4175
4188
  }
@@ -4196,11 +4209,106 @@ export const data = {
4196
4209
  "basicFormReason": {
4197
4210
  "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.BasicFormReason"
4198
4211
  },
4199
- "confirmedDeliveriesTotal": {
4212
+ "confirmedDeliveries": {
4213
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.ConfirmedDeliveries"
4214
+ }
4215
+ }
4216
+ },
4217
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryTimelineRequest": {
4218
+ "type": "I",
4219
+ "fields": {
4220
+ "messageCode": {
4221
+ "type": "string"
4222
+ },
4223
+ "platforms": {
4224
+ "type": "number",
4225
+ "array": true
4226
+ },
4227
+ "interval": {
4228
+ "type": "pushwoosh.statistics.types.TimeInterval"
4229
+ },
4230
+ "from": {
4231
+ "type": "Date"
4232
+ },
4233
+ "to": {
4234
+ "type": "Date"
4235
+ }
4236
+ }
4237
+ },
4238
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryTimelineResponse.Metric": {
4239
+ "type": "E",
4240
+ "values": [
4241
+ "METRIC_UNSPECIFIED",
4242
+ "METRIC_AUDIENCE",
4243
+ "METRIC_SENT",
4244
+ "METRIC_ERRORS",
4245
+ "METRIC_CONFIRMED_DELIVERIES",
4246
+ "METRIC_OPENED"
4247
+ ]
4248
+ },
4249
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryTimelineResponse.Point": {
4250
+ "type": "I",
4251
+ "fields": {
4252
+ "bucket": {
4253
+ "type": "Date"
4254
+ },
4255
+ "count": {
4256
+ "type": "number"
4257
+ }
4258
+ }
4259
+ },
4260
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryTimelineResponse.PlatformSeries": {
4261
+ "type": "I",
4262
+ "fields": {
4263
+ "platform": {
4264
+ "type": "number"
4265
+ },
4266
+ "count": {
4267
+ "type": "number"
4268
+ },
4269
+ "points": {
4270
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryTimelineResponse.Point",
4271
+ "array": true
4272
+ }
4273
+ }
4274
+ },
4275
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryTimelineResponse.MetricSeries": {
4276
+ "type": "I",
4277
+ "fields": {
4278
+ "metric": {
4279
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryTimelineResponse.Metric"
4280
+ },
4281
+ "count": {
4200
4282
  "type": "number"
4201
4283
  },
4284
+ "platforms": {
4285
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryTimelineResponse.PlatformSeries",
4286
+ "array": true
4287
+ }
4288
+ }
4289
+ },
4290
+ "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryTimelineResponse": {
4291
+ "type": "I",
4292
+ "fields": {
4293
+ "series": {
4294
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryTimelineResponse.MetricSeries",
4295
+ "array": true
4296
+ },
4297
+ "windowFrom": {
4298
+ "type": "Date"
4299
+ },
4300
+ "windowTo": {
4301
+ "type": "Date"
4302
+ },
4303
+ "funnelState": {
4304
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryFunnelResponse.FunnelState"
4305
+ },
4202
4306
  "interval": {
4203
4307
  "type": "pushwoosh.statistics.types.TimeInterval"
4308
+ },
4309
+ "eventAxisMetrics": {
4310
+ "type": "pushwoosh.statistics.statistics.v2.statistics.GetMessageDeliveryTimelineResponse.Metric",
4311
+ "array": true
4204
4312
  }
4205
4313
  }
4206
4314
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pushwoosh/rpc-gateway-statistics-api",
3
- "version": "1.3.726",
3
+ "version": "1.3.728",
4
4
  "description": "Statistics API gateway HTTP API Types and Data",
5
5
  "main": "index.js",
6
6
  "module": "index.js",
@@ -11,7 +11,7 @@ export interface DashboardsService {
11
11
  /** GetFunnel returns funnel data based on provided parameters */
12
12
  GetFunnel: DashboardsService_GetFunnel;
13
13
  }
14
- export type Breakdown = 'BREAKDOWN_UNKNOWN' | 'PLATFORMS' | 'EVENT_ATTRIBUTE' | 'TAG_VALUES' | 'CAMPAIGNS' | 'MESSAGES' | 'JOURNEYS';
14
+ export type Breakdown = 'BREAKDOWN_UNKNOWN' | 'PLATFORMS' | 'EVENT_ATTRIBUTE' | 'TAG_VALUES' | 'CAMPAIGNS' | 'MESSAGES' | 'JOURNEYS' | 'SEGMENTS';
15
15
  export type MathOperator = 'MATH_OPERATOR_UNSPECIFIED' | 'EQ' | 'NOT_EQ' | 'GTE' | 'LTE' | 'BETWEEN' | 'IN' | 'NOT_IN' | 'ANY' | 'NOT_SET';
16
16
  export type EventCalcType = 'EVENT_CALC_TYPE_ALL' | 'EVENT_CALC_TYPE_UNIQUE';
17
17
  export type Value_kind_string = {
@@ -114,6 +114,11 @@ export type GetLinearChartMetricsResponse_Metric = {
114
114
  export type GetLinearChartMetricsResponse = {
115
115
  timestamps: Date[];
116
116
  metrics: GetLinearChartMetricsResponse_Metric[];
117
+ /**
118
+ * codes of the requested segments whose snapshot is not prepared: their
119
+ * filtering was NOT applied to the returned metrics
120
+ */
121
+ notPreparedSegments: string[];
117
122
  };
118
123
  export type GetTotalsChartMetricsRequest = {
119
124
  params: ChartParams;
@@ -129,6 +134,11 @@ export type GetTotalsChartMetricsResponse_Metric = {
129
134
  };
130
135
  export type GetTotalsChartMetricsResponse = {
131
136
  metrics: GetTotalsChartMetricsResponse_Metric[];
137
+ /**
138
+ * codes of the requested segments whose snapshot is not prepared: their
139
+ * filtering was NOT applied to the returned metrics
140
+ */
141
+ notPreparedSegments: string[];
132
142
  };
133
143
  export type GetFunnelRequest = {
134
144
  params: ChartParams;
@@ -12,6 +12,7 @@ export type StatisticsService_GetDAUStatistics = RpcMethod<GetDAUStatisticsReque
12
12
  export type StatisticsService_GetPushApplicationStatistics = RpcMethod<GetPushApplicationStatisticsRequest, GetPushApplicationStatisticsResponse>;
13
13
  export type StatisticsService_GetEmailApplicationStatistics = RpcMethod<GetEmailApplicationStatisticsRequest, GetEmailApplicationStatisticsResponse>;
14
14
  export type StatisticsService_GetMessageDeliveryFunnel = RpcMethod<GetMessageDeliveryFunnelRequest, GetMessageDeliveryFunnelResponse>;
15
+ export type StatisticsService_GetMessageDeliveryTimeline = RpcMethod<GetMessageDeliveryTimelineRequest, GetMessageDeliveryTimelineResponse>;
15
16
  export type StatisticsService_GetActiveAudience = RpcMethod<GetActiveAudienceRequest, GetActiveAudienceResponse>;
16
17
  /** StatisticsService provides various statistics operations */
17
18
  export interface StatisticsService {
@@ -38,12 +39,15 @@ export interface StatisticsService {
38
39
  /** GetEmailApplicationStatistics returns email statistics (total devices, sends, open rate) with time series data */
39
40
  GetEmailApplicationStatistics: StatisticsService_GetEmailApplicationStatistics;
40
41
  /**
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.
42
+ * GetMessageDeliveryFunnel returns one message's funnel: audience -> sent ->
43
+ * deliveries -> opened. A stage equals its PASSED and REASON pieces; SUBSET is not one.
45
44
  */
46
45
  GetMessageDeliveryFunnel: StatisticsService_GetMessageDeliveryFunnel;
46
+ /**
47
+ * GetMessageDeliveryTimeline returns the same message's numbers over time: the funnel
48
+ * answers "how many", this answers "when".
49
+ */
50
+ GetMessageDeliveryTimeline: StatisticsService_GetMessageDeliveryTimeline;
47
51
  /** GetActiveAudience returns active users and active devices groped by application and platform */
48
52
  GetActiveAudience: StatisticsService_GetActiveAudience;
49
53
  }
@@ -516,27 +520,14 @@ export type GetEmailApplicationStatisticsResponse = {
516
520
  interval: pushwoosh_statistics_types_TimeInterval;
517
521
  };
518
522
  /**
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.
523
+ * GetMessageDeliveryFunnelRequest asks for one message's funnel. No time range: sends
524
+ * and confirmations sit on different axes, and a client window breaks the arithmetic.
525
525
  */
526
526
  export type GetMessageDeliveryFunnelRequest = {
527
527
  /** Specific message code, required */
528
528
  messageCode: string;
529
529
  /** Optional platform ID filter */
530
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
531
  };
541
532
  /**
542
533
  * Stage is a funnel level. Stages always come in the order they appear in the
@@ -562,10 +553,8 @@ export type GetMessageDeliveryFunnelResponse_Kind = 'KIND_UNSPECIFIED'
562
553
  /** part of the stage, NOT a summand */
563
554
  | 'KIND_SUBSET';
564
555
  /**
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.
556
+ * FunnelState describes the response before any stage is read: an empty funnel has two
557
+ * very different meanings and one shape.
569
558
  */
570
559
  export type GetMessageDeliveryFunnelResponse_FunnelState = 'FUNNEL_STATE_UNSPECIFIED'
571
560
  /** the funnel is populated */
@@ -575,12 +564,8 @@ export type GetMessageDeliveryFunnelResponse_FunnelState = 'FUNNEL_STATE_UNSPECI
575
564
  /** sent longer ago than statistics are kept */
576
565
  | 'FUNNEL_STATE_EXPIRED';
577
566
  /**
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.
567
+ * DeliveriesForm tells which breakdown STAGE_DELIVERIES carries. The forms count
568
+ * different sets, so their rows are not continuous. There is no withheld form.
584
569
  */
585
570
  export type GetMessageDeliveryFunnelResponse_DeliveriesForm = 'DELIVERIES_FORM_UNSPECIFIED'
586
571
  /** three disjoint rows, alert state known */
@@ -588,12 +573,8 @@ export type GetMessageDeliveryFunnelResponse_DeliveriesForm = 'DELIVERIES_FORM_U
588
573
  /** two rows, alert state unknown */
589
574
  | 'DELIVERIES_FORM_BASIC';
590
575
  /**
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.
576
+ * BasicFormReason explains why the per-device breakdown is missing; set only in the
577
+ * basic form. NO_DELIVERIES is not NO_EVENTS — sends did happen.
597
578
  */
598
579
  export type GetMessageDeliveryFunnelResponse_BasicFormReason = 'BASIC_FORM_REASON_UNSPECIFIED'
599
580
  /** older than the row-level log keeps */
@@ -602,52 +583,36 @@ export type GetMessageDeliveryFunnelResponse_BasicFormReason = 'BASIC_FORM_REASO
602
583
  | 'BASIC_FORM_REASON_UNAVAILABLE'
603
584
  /** nothing accepted yet — say nothing in the UI */
604
585
  | 'BASIC_FORM_REASON_NO_DELIVERIES';
586
+ /**
587
+ * PlatformCount is one platform's share of the number above it; the parent is always
588
+ * their sum. A platform with nothing to report is absent, which is not a zero.
589
+ */
590
+ export type GetMessageDeliveryFunnelResponse_PlatformCount = {
591
+ platform: number;
592
+ count: number;
593
+ };
605
594
  /** Piece is one row of the funnel table. */
606
595
  export type GetMessageDeliveryFunnelResponse_Piece = {
607
596
  kind: GetMessageDeliveryFunnelResponse_Kind;
608
597
  /** FREQUENCY_CAPPING, ACCEPTED_BY_GATEWAY, ... */
609
598
  category: string;
610
599
  count: number;
600
+ platforms: GetMessageDeliveryFunnelResponse_PlatformCount[];
611
601
  };
612
602
  /**
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.
603
+ * ErrorRow is what STAGE_ERRORS carries instead of pieces: a Piece in all but name,
604
+ * since every row of that stage is a drop-out.
642
605
  */
643
606
  export type GetMessageDeliveryFunnelResponse_ErrorRow = {
644
607
  /** INVALID_TOKEN, QUOTA_EXCEEDED, INTERNAL_ERROR, ... */
645
608
  category: string;
646
- platform: number;
647
609
  count: number;
648
- points: GetMessageDeliveryFunnelResponse_Point[];
610
+ platforms: GetMessageDeliveryFunnelResponse_PlatformCount[];
649
611
  };
650
- /** StageItem is one funnel level with its breakdown. */
612
+ /**
613
+ * StageItem is one funnel level with its breakdown. STAGE_DELIVERIES counts accepted
614
+ * sends — how many there were to confirm, not how many confirmed.
615
+ */
651
616
  export type GetMessageDeliveryFunnelResponse_StageItem = {
652
617
  stage: GetMessageDeliveryFunnelResponse_Stage;
653
618
  count: number;
@@ -655,34 +620,111 @@ export type GetMessageDeliveryFunnelResponse_StageItem = {
655
620
  pieces: GetMessageDeliveryFunnelResponse_Piece[];
656
621
  /** STAGE_ERRORS only */
657
622
  errors: GetMessageDeliveryFunnelResponse_ErrorRow[];
658
- series: GetMessageDeliveryFunnelResponse_Series[];
623
+ platforms: GetMessageDeliveryFunnelResponse_PlatformCount[];
624
+ };
625
+ /**
626
+ * ConfirmedDeliveries equals the tracking log CSV export: past the accepted set, never
627
+ * clamped (derive no stage row), email-only without allow_show_delivery_statistics.
628
+ */
629
+ export type GetMessageDeliveryFunnelResponse_ConfirmedDeliveries = {
630
+ count: number;
631
+ platforms: GetMessageDeliveryFunnelResponse_PlatformCount[];
659
632
  };
660
633
  export type GetMessageDeliveryFunnelResponse = {
661
634
  funnel: GetMessageDeliveryFunnelResponse_StageItem[];
662
635
  /**
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.
636
+ * The window the funnel was computed over, derived from the data: the numbers are
637
+ * meaningless without it, and the pre-aggregate TTL can cut it short.
666
638
  */
667
639
  windowFrom: Date;
668
640
  windowTo: Date;
669
641
  funnelState: GetMessageDeliveryFunnelResponse_FunnelState;
670
642
  deliveriesForm: GetMessageDeliveryFunnelResponse_DeliveriesForm;
671
643
  basicFormReason: GetMessageDeliveryFunnelResponse_BasicFormReason;
644
+ confirmedDeliveries: GetMessageDeliveryFunnelResponse_ConfirmedDeliveries;
645
+ };
646
+ /**
647
+ * GetMessageDeliveryTimelineRequest asks for one message's metrics over time. Unlike
648
+ * the funnel it takes a window: a timeline has no stage arithmetic to break.
649
+ */
650
+ export type GetMessageDeliveryTimelineRequest = {
651
+ /** Specific message code, required */
652
+ messageCode: string;
653
+ /** Optional platform ID filter */
654
+ platforms: number[];
672
655
  /**
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.
656
+ * Bucket width. Unset lets the server pick from the window as every other series here
657
+ * does: a year -> month, over a month -> day, over a day -> hour, else minute.
679
658
  */
680
- confirmedDeliveriesTotal: number;
659
+ interval: pushwoosh_statistics_types_TimeInterval;
660
+ /**
661
+ * The window to read; an unset end is the message's own, and narrowing it narrows the
662
+ * counts. A stated `from` rounds down to the minute, `to` clips exactly, derived — a day wide.
663
+ */
664
+ from: Date;
665
+ to: Date;
666
+ };
667
+ /**
668
+ * Metric is one line of the chart. Metrics, not funnel stages: STAGE_DELIVERIES
669
+ * counts accepted sends, and the number a reader wants there is not a stage at all.
670
+ */
671
+ export type GetMessageDeliveryTimelineResponse_Metric = 'METRIC_UNSPECIFIED'
672
+ /** taken into processing */
673
+ | 'METRIC_AUDIENCE'
674
+ /** accepted by the gateway */
675
+ | 'METRIC_SENT'
676
+ /** rejected before the gateway took it */
677
+ | 'METRIC_ERRORS'
678
+ /** devices that confirmed delivery */
679
+ | 'METRIC_CONFIRMED_DELIVERIES'
680
+ /** unique devices that opened */
681
+ | 'METRIC_OPENED';
682
+ /**
683
+ * Point is one bucket of a series, always UTC. Empty buckets are not emitted: the
684
+ * client draws the axis from the window and the interval.
685
+ */
686
+ export type GetMessageDeliveryTimelineResponse_Point = {
687
+ /** start of the interval */
688
+ bucket: Date;
689
+ count: number;
690
+ };
691
+ /**
692
+ * PlatformSeries is one platform's line: a metric's count is the sum of its platforms,
693
+ * and a platform's points sum to its own count.
694
+ */
695
+ export type GetMessageDeliveryTimelineResponse_PlatformSeries = {
696
+ platform: number;
697
+ count: number;
698
+ points: GetMessageDeliveryTimelineResponse_Point[];
699
+ };
700
+ export type GetMessageDeliveryTimelineResponse_MetricSeries = {
701
+ metric: GetMessageDeliveryTimelineResponse_Metric;
702
+ count: number;
703
+ platforms: GetMessageDeliveryTimelineResponse_PlatformSeries[];
704
+ };
705
+ export type GetMessageDeliveryTimelineResponse = {
706
+ series: GetMessageDeliveryTimelineResponse_MetricSeries[];
707
+ /**
708
+ * The window actually read: what the request asked for, clamped to the data,
709
+ * or the message's own window when the request asked for neither end.
710
+ */
711
+ windowFrom: Date;
712
+ windowTo: Date;
713
+ /**
714
+ * Same three states as the funnel, and for the same reasons: an empty answer
715
+ * has to say which kind of empty it is.
716
+ */
717
+ funnelState: GetMessageDeliveryFunnelResponse_FunnelState;
681
718
  /**
682
719
  * The bucket width actually used, whether it came from the request or from the
683
- * automatic pick. Always set when any series is present.
720
+ * automatic pick.
684
721
  */
685
722
  interval: pushwoosh_statistics_types_TimeInterval;
723
+ /**
724
+ * These metrics are counted when the device answered, the others when we sent. The
725
+ * metrics of one bucket are therefore not a funnel: they reconcile over the window.
726
+ */
727
+ eventAxisMetrics: GetMessageDeliveryTimelineResponse_Metric[];
686
728
  };
687
729
  /** ActiveAudienceType specifies the type of active users calculation */
688
730
  export type ActiveAudienceType =