1import type * as xray from "@distilled.cloud/aws/xray";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5export interface GetTimeSeriesServiceStatisticsRequest
6 extends xray.GetTimeSeriesServiceStatisticsRequest {}
7
8/**
9 * Retrieve an aggregation of service statistics (response-time and error
10 * histograms) as a time series over a window, optionally filtered by
11 * group or entity selector expression.
12 *
13 * Bind the operation in the function's init phase to get a runtime callable;
14 * provide the implementation with `Effect.provide(XRay.GetTimeSeriesServiceStatisticsHttp)`.
15 * The action is account-scoped: X-Ray does not support resource-level
16 * permissions for `xray:GetTimeSeriesServiceStatistics`, so the binding grants it on `*`.
17 * ### Service Graphs & Statistics
18 * **Example:** Time-series statistics for one service
19 * ```typescript
20 * import * as XRay from "alchemy/AWS/XRay";
21 *
22 * // init — grants xray:GetTimeSeriesServiceStatistics
23 * const getTimeSeriesServiceStatistics =
24 * yield* XRay.GetTimeSeriesServiceStatistics();
25 *
26 * // runtime
27 * const now = yield* Effect.sync(() => Date.now());
28 * const stats = yield* getTimeSeriesServiceStatistics({
29 * StartTime: new Date(now - 10 * 60 * 1000),
30 * EndTime: new Date(now),
31 * EntitySelectorExpression: 'service("my-api")',
32 * Period: 60,
33 * });
34 * const points = stats.TimeSeriesServiceStatistics ?? [];
35 * ```
36 *
37 * @binding
38 */
39export interface GetTimeSeriesServiceStatistics extends Binding.Service<
40 GetTimeSeriesServiceStatistics,
41 "AWS.XRay.GetTimeSeriesServiceStatistics",
42 () => Effect.Effect<
43 (
44 request: GetTimeSeriesServiceStatisticsRequest,
45 ) => Effect.Effect<
46 xray.GetTimeSeriesServiceStatisticsResult,
47 xray.GetTimeSeriesServiceStatisticsError
48 >
49 >
50> {}
51export const GetTimeSeriesServiceStatistics =
52 Binding.Service<GetTimeSeriesServiceStatistics>(
53 "AWS.XRay.GetTimeSeriesServiceStatistics",
54 );