@iveri/contracts 0.35.0 → 0.36.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.
@@ -67,4 +67,32 @@ export interface GetCapturesQuery {
67
67
  method?: Nullable<string>;
68
68
  signatureVerdict?: Nullable<SignatureVerdict>;
69
69
  }
70
+ /**
71
+ * `GET /api/v1/capture/stats`.
72
+ *
73
+ * Three numbers for a landing page, not a reporting surface. Each is deliberately cheap: see the
74
+ * note on {@link CaptureStats.signatureRejected} for the one that needed an index to stay that
75
+ * way.
76
+ */
77
+ export interface CaptureStats {
78
+ /** How far back the counts reach. Fixed by the service, not chosen by the caller. */
79
+ windowHours: number;
80
+ /** Every capture received in the window, whatever its signature verdict. */
81
+ received: number;
82
+ /**
83
+ * Captures whose signature was checked and found wrong — `invalid` or
84
+ * `timestamp-out-of-tolerance`, the only two verdicts that mean something is actually wrong.
85
+ *
86
+ * **Not a breakdown by verdict**, deliberately. The other six are "verification could not
87
+ * run", each for a separately fixable configuration reason, and a client has to map all
88
+ * eight to a tone anyway — so a pre-grouped "unverified" count here would be a second place
89
+ * that decides which verdicts are failures, which is how one of the two comes to disagree
90
+ * with the badge beside it. The eight-way breakdown is what the capture list's own verdict
91
+ * filter is for.
92
+ *
93
+ * In gateway mode a rejected signature is a webhook that was captured and **not forwarded**,
94
+ * so this is data a customer's receiver never got, for a reason nobody has been told about.
95
+ */
96
+ signatureRejected: number;
97
+ }
70
98
  //# sourceMappingURL=capture.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capture.type.d.ts","sourceRoot":"","sources":["../../../../src/api/conduit/capture.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,IAAI,CAAC;IACT,UAAU,EAAE,IAAI,CAAC;IAEjB,MAAM,EAAE,MAAM,CAAC;IAEf,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IAEb,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE9B,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IAEjB,oFAAoF;IACpF,UAAU,EAAE,MAAM,CAAC;IAEnB,+DAA+D;IAC/D,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B;;;OAGG;IACH,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAE7C,wEAAwE;IACxE,WAAW,EAAE,OAAO,CAAC;IAErB,UAAU,EAAE,WAAW,CAAC;CAC3B;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAc,SAAQ,cAAc;IACjD,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAE3C;;;;;;;OAOG;IACH,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEvB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB,4EAA4E;IAC5E,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,6BAA6B;AAC7B,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2EAA2E;IAC3E,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEzB,UAAU,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,gBAAgB,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;CACjD"}
1
+ {"version":3,"file":"capture.type.d.ts","sourceRoot":"","sources":["../../../../src/api/conduit/capture.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,IAAI,CAAC;IACT,UAAU,EAAE,IAAI,CAAC;IAEjB,MAAM,EAAE,MAAM,CAAC;IAEf,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IAEb,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE9B,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IAEjB,oFAAoF;IACpF,UAAU,EAAE,MAAM,CAAC;IAEnB,+DAA+D;IAC/D,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B;;;OAGG;IACH,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAE7C,wEAAwE;IACxE,WAAW,EAAE,OAAO,CAAC;IAErB,UAAU,EAAE,WAAW,CAAC;CAC3B;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAc,SAAQ,cAAc;IACjD,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAE3C;;;;;;;OAOG;IACH,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEvB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB,4EAA4E;IAC5E,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,6BAA6B;AAC7B,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2EAA2E;IAC3E,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEzB,UAAU,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,gBAAgB,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;CACjD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IACzB,qFAAqF;IACrF,WAAW,EAAE,MAAM,CAAC;IAEpB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;OAaG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC7B"}
@@ -76,4 +76,47 @@ export interface GetDeliveriesQuery {
76
76
  /** Everything one capture fanned out to. */
77
77
  captureId?: Nullable<UUID>;
78
78
  }
79
+ /**
80
+ * `GET /api/v1/deliveries/stats`.
81
+ *
82
+ * **The split between the two halves is the whole design, and it is not a presentation choice.**
83
+ * A count is only as cheap as the set it scans, and "all time" is affordable only for a set
84
+ * something else keeps small — so the backlog is counted over all time because the processor and
85
+ * the retention sweep bound it, while throughput is counted over a window because nothing bounds
86
+ * the delivered rows.
87
+ *
88
+ * It is also the honest reading for an operator: a dead letter from three days ago is still
89
+ * somebody's data that never arrived, and windowing it would quietly retire the problem.
90
+ */
91
+ export interface DeliveryStats {
92
+ /** Deliveries still waiting on something, over all time. */
93
+ backlog: DeliveryBacklog;
94
+ /** How far back {@link DeliveryStats.recent} reaches. Fixed by the service. */
95
+ windowHours: number;
96
+ recent: DeliveryThroughput;
97
+ }
98
+ export interface DeliveryBacklog {
99
+ /** Queued, including rows waiting out a backoff. */
100
+ pending: number;
101
+ /** Claimed by a replica and being attempted. */
102
+ inFlight: number;
103
+ /**
104
+ * Out of attempts. Terminal until an operator redrives one, so this number does not come
105
+ * down on its own — which is exactly why it is the first thing a dashboard shows.
106
+ */
107
+ deadLettered: number;
108
+ }
109
+ /**
110
+ * Deliveries **created** in the window, by the state they are in now.
111
+ *
112
+ * Created, rather than finished, because `created_at` is indexed and the terminal transition is
113
+ * not — and `updated_at` would not answer the question either, since a redrive touches it too. A
114
+ * delivery's whole life is one attempt budget of capped, jittered backoff, so the only rows this
115
+ * misplaces are the handful created in the half hour before the window opened.
116
+ */
117
+ export interface DeliveryThroughput {
118
+ delivered: number;
119
+ /** The denominator's other half: `delivered / (delivered + deadLettered)` is the success rate. */
120
+ deadLettered: number;
121
+ }
79
122
  //# sourceMappingURL=delivery.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delivery.type.d.ts","sourceRoot":"","sources":["../../../../src/api/conduit/delivery.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,iDAAiD;AACjD,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,IAAI,CAAC;IACT,SAAS,EAAE,IAAI,CAAC;IAEhB,oFAAoF;IACpF,OAAO,EAAE,IAAI,CAAC;IAEd,aAAa,EAAE,IAAI,CAAC;IAEpB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IAErB,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IAEpB,aAAa,EAAE,WAAW,CAAC;IAC3B,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAErC,sDAAsD;IACtD,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAErC,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1C,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE5B,yCAAyC;IACzC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IACnC,SAAS,EAAE,WAAW,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,IAAI,CAAC;IAET,eAAe;IACf,aAAa,EAAE,MAAM,CAAC;IAEtB,4CAA4C;IAC5C,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEjC,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE/B,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,WAAW,CAAC;CAC1B;AAED,iGAAiG;AACjG,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,kGAAkG;AAClG,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAElD,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2EAA2E;IAC3E,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEzB,qFAAqF;IACrF,MAAM,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAElC,aAAa,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;CAC9B"}
1
+ {"version":3,"file":"delivery.type.d.ts","sourceRoot":"","sources":["../../../../src/api/conduit/delivery.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,iDAAiD;AACjD,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,IAAI,CAAC;IACT,SAAS,EAAE,IAAI,CAAC;IAEhB,oFAAoF;IACpF,OAAO,EAAE,IAAI,CAAC;IAEd,aAAa,EAAE,IAAI,CAAC;IAEpB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IAErB,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IAEpB,aAAa,EAAE,WAAW,CAAC;IAC3B,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAErC,sDAAsD;IACtD,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAErC,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1C,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE5B,yCAAyC;IACzC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IACnC,SAAS,EAAE,WAAW,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,IAAI,CAAC;IAET,eAAe;IACf,aAAa,EAAE,MAAM,CAAC;IAEtB,4CAA4C;IAC5C,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEjC,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE/B,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,WAAW,CAAC;CAC1B;AAED,iGAAiG;AACjG,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,kGAAkG;AAClG,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAElD,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2EAA2E;IAC3E,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEzB,qFAAqF;IACrF,MAAM,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAElC,aAAa,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAC1B,4DAA4D;IAC5D,OAAO,EAAE,eAAe,CAAC;IAEzB,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IAEpB,MAAM,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC5B,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAEhB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAElB,kGAAkG;IAClG,YAAY,EAAE,MAAM,CAAC;CACxB"}
@@ -144,4 +144,34 @@ export interface SubmitDispatchResponse {
144
144
  isDuplicate: boolean;
145
145
  createdAt: IsoDateTime;
146
146
  }
147
+ /**
148
+ * `GET /api/v1/dispatches/stats`.
149
+ *
150
+ * The same two halves as {@link DeliveryStats}, and separate from it for the same reason the two
151
+ * queues are separate tables: inbound a dead letter means a customer's receiver never got their
152
+ * data, outbound it means a message a vertical believes it sent never arrived. One number
153
+ * covering both would need an operator to guess which.
154
+ */
155
+ export interface DispatchStats {
156
+ /** Dispatches still waiting on something, over all time. */
157
+ backlog: DispatchBacklog;
158
+ /** How far back {@link DispatchStats.recent} reaches. Fixed by the service. */
159
+ windowHours: number;
160
+ recent: DispatchThroughput;
161
+ }
162
+ export interface DispatchBacklog {
163
+ /**
164
+ * Queued, including rows pushed out by a connector's rate limit — a deferral costs no
165
+ * attempt, so a busy connection legitimately shows a backlog here while nothing is wrong.
166
+ */
167
+ pending: number;
168
+ inFlight: number;
169
+ /** Out of attempts, and terminal until an operator redrives one. */
170
+ deadLettered: number;
171
+ }
172
+ /** Dispatches created in the window, by the state they are in now. {@link DeliveryThroughput} has the reasoning. */
173
+ export interface DispatchThroughput {
174
+ delivered: number;
175
+ deadLettered: number;
176
+ }
147
177
  //# sourceMappingURL=dispatch.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.type.d.ts","sourceRoot":"","sources":["../../../../src/api/conduit/dispatch.type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch.type.d.ts","sourceRoot":"","sources":["../../../../src/api/conduit/dispatch.type.ts"],"names":[],"mappings":"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"}
@@ -67,4 +67,32 @@ export interface GetCapturesQuery {
67
67
  method?: Nullable<string>;
68
68
  signatureVerdict?: Nullable<SignatureVerdict>;
69
69
  }
70
+ /**
71
+ * `GET /api/v1/capture/stats`.
72
+ *
73
+ * Three numbers for a landing page, not a reporting surface. Each is deliberately cheap: see the
74
+ * note on {@link CaptureStats.signatureRejected} for the one that needed an index to stay that
75
+ * way.
76
+ */
77
+ export interface CaptureStats {
78
+ /** How far back the counts reach. Fixed by the service, not chosen by the caller. */
79
+ windowHours: number;
80
+ /** Every capture received in the window, whatever its signature verdict. */
81
+ received: number;
82
+ /**
83
+ * Captures whose signature was checked and found wrong — `invalid` or
84
+ * `timestamp-out-of-tolerance`, the only two verdicts that mean something is actually wrong.
85
+ *
86
+ * **Not a breakdown by verdict**, deliberately. The other six are "verification could not
87
+ * run", each for a separately fixable configuration reason, and a client has to map all
88
+ * eight to a tone anyway — so a pre-grouped "unverified" count here would be a second place
89
+ * that decides which verdicts are failures, which is how one of the two comes to disagree
90
+ * with the badge beside it. The eight-way breakdown is what the capture list's own verdict
91
+ * filter is for.
92
+ *
93
+ * In gateway mode a rejected signature is a webhook that was captured and **not forwarded**,
94
+ * so this is data a customer's receiver never got, for a reason nobody has been told about.
95
+ */
96
+ signatureRejected: number;
97
+ }
70
98
  //# sourceMappingURL=capture.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capture.type.d.ts","sourceRoot":"","sources":["../../../../src/api/conduit/capture.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,IAAI,CAAC;IACT,UAAU,EAAE,IAAI,CAAC;IAEjB,MAAM,EAAE,MAAM,CAAC;IAEf,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IAEb,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE9B,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IAEjB,oFAAoF;IACpF,UAAU,EAAE,MAAM,CAAC;IAEnB,+DAA+D;IAC/D,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B;;;OAGG;IACH,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAE7C,wEAAwE;IACxE,WAAW,EAAE,OAAO,CAAC;IAErB,UAAU,EAAE,WAAW,CAAC;CAC3B;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAc,SAAQ,cAAc;IACjD,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAE3C;;;;;;;OAOG;IACH,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEvB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB,4EAA4E;IAC5E,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,6BAA6B;AAC7B,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2EAA2E;IAC3E,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEzB,UAAU,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,gBAAgB,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;CACjD"}
1
+ {"version":3,"file":"capture.type.d.ts","sourceRoot":"","sources":["../../../../src/api/conduit/capture.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,IAAI,CAAC;IACT,UAAU,EAAE,IAAI,CAAC;IAEjB,MAAM,EAAE,MAAM,CAAC;IAEf,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IAEb,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IAEpB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE9B,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;IAEjB,oFAAoF;IACpF,UAAU,EAAE,MAAM,CAAC;IAEnB,+DAA+D;IAC/D,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B;;;OAGG;IACH,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAE7C,wEAAwE;IACxE,WAAW,EAAE,OAAO,CAAC;IAErB,UAAU,EAAE,WAAW,CAAC;CAC3B;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAc,SAAQ,cAAc;IACjD,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAE3C;;;;;;;OAOG;IACH,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEvB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB,4EAA4E;IAC5E,SAAS,EAAE,OAAO,CAAC;CACtB;AAED,6BAA6B;AAC7B,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2EAA2E;IAC3E,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEzB,UAAU,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,gBAAgB,CAAC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC;CACjD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IACzB,qFAAqF;IACrF,WAAW,EAAE,MAAM,CAAC;IAEpB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;OAaG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC7B"}
@@ -76,4 +76,47 @@ export interface GetDeliveriesQuery {
76
76
  /** Everything one capture fanned out to. */
77
77
  captureId?: Nullable<UUID>;
78
78
  }
79
+ /**
80
+ * `GET /api/v1/deliveries/stats`.
81
+ *
82
+ * **The split between the two halves is the whole design, and it is not a presentation choice.**
83
+ * A count is only as cheap as the set it scans, and "all time" is affordable only for a set
84
+ * something else keeps small — so the backlog is counted over all time because the processor and
85
+ * the retention sweep bound it, while throughput is counted over a window because nothing bounds
86
+ * the delivered rows.
87
+ *
88
+ * It is also the honest reading for an operator: a dead letter from three days ago is still
89
+ * somebody's data that never arrived, and windowing it would quietly retire the problem.
90
+ */
91
+ export interface DeliveryStats {
92
+ /** Deliveries still waiting on something, over all time. */
93
+ backlog: DeliveryBacklog;
94
+ /** How far back {@link DeliveryStats.recent} reaches. Fixed by the service. */
95
+ windowHours: number;
96
+ recent: DeliveryThroughput;
97
+ }
98
+ export interface DeliveryBacklog {
99
+ /** Queued, including rows waiting out a backoff. */
100
+ pending: number;
101
+ /** Claimed by a replica and being attempted. */
102
+ inFlight: number;
103
+ /**
104
+ * Out of attempts. Terminal until an operator redrives one, so this number does not come
105
+ * down on its own — which is exactly why it is the first thing a dashboard shows.
106
+ */
107
+ deadLettered: number;
108
+ }
109
+ /**
110
+ * Deliveries **created** in the window, by the state they are in now.
111
+ *
112
+ * Created, rather than finished, because `created_at` is indexed and the terminal transition is
113
+ * not — and `updated_at` would not answer the question either, since a redrive touches it too. A
114
+ * delivery's whole life is one attempt budget of capped, jittered backoff, so the only rows this
115
+ * misplaces are the handful created in the half hour before the window opened.
116
+ */
117
+ export interface DeliveryThroughput {
118
+ delivered: number;
119
+ /** The denominator's other half: `delivered / (delivered + deadLettered)` is the success rate. */
120
+ deadLettered: number;
121
+ }
79
122
  //# sourceMappingURL=delivery.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"delivery.type.d.ts","sourceRoot":"","sources":["../../../../src/api/conduit/delivery.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEhE,iDAAiD;AACjD,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,IAAI,CAAC;IACT,SAAS,EAAE,IAAI,CAAC;IAEhB,oFAAoF;IACpF,OAAO,EAAE,IAAI,CAAC;IAEd,aAAa,EAAE,IAAI,CAAC;IAEpB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;;OAMG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IAErB,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IAEpB,aAAa,EAAE,WAAW,CAAC;IAC3B,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IAErC,sDAAsD;IACtD,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAErC,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1C,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE5B,yCAAyC;IACzC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IACnC,SAAS,EAAE,WAAW,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,IAAI,CAAC;IAET,eAAe;IACf,aAAa,EAAE,MAAM,CAAC;IAEtB,4CAA4C;IAC5C,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEjC,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE/B,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,WAAW,CAAC;CAC1B;AAED,iGAAiG;AACjG,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,kGAAkG;AAClG,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAElD,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,2EAA2E;IAC3E,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEzB,qFAAqF;IACrF,MAAM,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAElC,aAAa,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;CAC9B"}
1
+ {"version":3,"file":"delivery.type.d.ts","sourceRoot":"","sources":["../../../../src/api/conduit/delivery.type.ts"],"names":[],"mappings":"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"}
@@ -144,4 +144,34 @@ export interface SubmitDispatchResponse {
144
144
  isDuplicate: boolean;
145
145
  createdAt: IsoDateTime;
146
146
  }
147
+ /**
148
+ * `GET /api/v1/dispatches/stats`.
149
+ *
150
+ * The same two halves as {@link DeliveryStats}, and separate from it for the same reason the two
151
+ * queues are separate tables: inbound a dead letter means a customer's receiver never got their
152
+ * data, outbound it means a message a vertical believes it sent never arrived. One number
153
+ * covering both would need an operator to guess which.
154
+ */
155
+ export interface DispatchStats {
156
+ /** Dispatches still waiting on something, over all time. */
157
+ backlog: DispatchBacklog;
158
+ /** How far back {@link DispatchStats.recent} reaches. Fixed by the service. */
159
+ windowHours: number;
160
+ recent: DispatchThroughput;
161
+ }
162
+ export interface DispatchBacklog {
163
+ /**
164
+ * Queued, including rows pushed out by a connector's rate limit — a deferral costs no
165
+ * attempt, so a busy connection legitimately shows a backlog here while nothing is wrong.
166
+ */
167
+ pending: number;
168
+ inFlight: number;
169
+ /** Out of attempts, and terminal until an operator redrives one. */
170
+ deadLettered: number;
171
+ }
172
+ /** Dispatches created in the window, by the state they are in now. {@link DeliveryThroughput} has the reasoning. */
173
+ export interface DispatchThroughput {
174
+ delivered: number;
175
+ deadLettered: number;
176
+ }
147
177
  //# sourceMappingURL=dispatch.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch.type.d.ts","sourceRoot":"","sources":["../../../../src/api/conduit/dispatch.type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch.type.d.ts","sourceRoot":"","sources":["../../../../src/api/conduit/dispatch.type.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iveri/contracts",
3
- "version": "0.35.0",
3
+ "version": "0.36.0",
4
4
  "description": "Wire contracts shared by every Iveri backend and frontend. Zero runtime dependencies.",
5
5
  "license": "MIT",
6
6
  "repository": {