Mint-time options for HttpApiClient (policy + nest key). Runtime URL / transforms go on httpApiClientLayer.
export interface HttpApiClientTagConfig {
readonly HttpApiClientTagConfig.concurrency?: number | undefinedconcurrency?: number;
readonly HttpApiClientTagConfig.rateLimit?: GateRateLimitOptions | undefinedrateLimit?: type GateRateLimitOptions = Omit<{
readonly algorithm?: "fixed-window" | "token-bucket" | undefined;
readonly onExceeded?: "delay" | "fail" | undefined;
readonly window: Duration.Input;
readonly limit: number;
readonly key: string;
readonly tokens?: number | undefined;
}, "key"> & {
readonly key?: RateLimiterConsumeOptions["key"];
}
Gate rateLimit config — Effect's
RateLimiterConsumeOptions
with
optional key (defaults to the gate name / hyperlink tag id).
GateRateLimitOptions;
/**
* Opt-in Effect `adaptiveConsume` / `adaptiveFeedback` on 429 + Retry-After.
* Default off. Requires `rateLimit`.
*/
readonly HttpApiClientTagConfig.adaptive?: boolean | HttpApiClientAdaptiveOptionsOpt-in Effect adaptiveConsume / adaptiveFeedback on 429 + Retry-After.
Default off. Requires rateLimit.
adaptive?: boolean | HttpApiClientAdaptiveOptions;
/** Const nest path — default `"metrics"`. Must not collide with an HttpApi group id. */
readonly HttpApiClientTagConfig.metricsKey?: string | undefinedConst nest path — default "metrics". Must not collide with an HttpApi group id.
metricsKey?: string;
readonly HttpApiClientTagConfig.description?: string | undefineddescription?: string;
/** Usage window cadence (absorbed ApiMetrics). @default 5 seconds */
readonly HttpApiClientTagConfig.windowMs?: Duration.InputUsage window cadence (absorbed ApiMetrics).
windowMs?: import DurationDuration.type Input =
| number
| bigint
| Duration.Duration
| readonly [seconds: number, nanos: number]
| `${number} nano`
| `${number} nanos`
| `${number} micro`
| `${number} micros`
| `${number} milli`
| `${number} millis`
| `${number} second`
| `${number} seconds`
| `${number} minute`
| `${number} minutes`
| `${number} hour`
| `${number} hours`
| `${number} day`
| `${number} days`
| `${number} week`
| `${number} weeks`
| "Infinity"
| "-Infinity"
| Duration.DurationObject
Valid input types that can be converted to a Duration.
When to use
Use when an API should accept any value that Effect can convert into a
Duration, including existing durations, millisecond numbers, nanosecond
bigints, high-resolution tuples, duration strings, infinity strings, or
duration objects.
Details
String inputs accept values like "10 seconds", "500 millis",
"Infinity", and "-Infinity". Finite fractional values that are
normalized to nanoseconds are rounded to the nearest nanosecond, with ties
away from zero.
Input;
}