@vibexp/api-client 0.58.0 → 0.60.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.
package/dist/schema.d.ts CHANGED
@@ -3144,6 +3144,208 @@ export interface paths {
3144
3144
  patch?: never;
3145
3145
  trace?: never;
3146
3146
  };
3147
+ "/api/v1/{team_id}/freshness/rules": {
3148
+ parameters: {
3149
+ query?: never;
3150
+ header?: never;
3151
+ path: {
3152
+ /** @description Team identifier */
3153
+ team_id: string;
3154
+ };
3155
+ cookie?: never;
3156
+ };
3157
+ /**
3158
+ * List the team's freshness rules
3159
+ * @description Returns every freshness rule the team has defined, oldest first. Any member of the team may read them. The array is empty, never null, when the team has no rules.
3160
+ */
3161
+ get: operations["listFreshnessRules"];
3162
+ put?: never;
3163
+ /**
3164
+ * Create a freshness rule
3165
+ * @description Adds a rule to the team. Requires the `team.settings.update` permission. An omitted `mediums` matches any medium; an omitted or null `project_id` applies the rule to every project in the team.
3166
+ */
3167
+ post: operations["createFreshnessRule"];
3168
+ delete?: never;
3169
+ options?: never;
3170
+ head?: never;
3171
+ patch?: never;
3172
+ trace?: never;
3173
+ };
3174
+ "/api/v1/{team_id}/freshness/rules/{rule_id}": {
3175
+ parameters: {
3176
+ query?: never;
3177
+ header?: never;
3178
+ path: {
3179
+ /** @description Team identifier */
3180
+ team_id: string;
3181
+ /** @description Freshness rule identifier */
3182
+ rule_id: string;
3183
+ };
3184
+ cookie?: never;
3185
+ };
3186
+ get?: never;
3187
+ /**
3188
+ * Replace a freshness rule
3189
+ * @description Replaces the rule in full — every mutable field is required, because an omitted field would otherwise reset that dimension. Requires the `team.settings.update` permission.
3190
+ */
3191
+ put: operations["updateFreshnessRule"];
3192
+ post?: never;
3193
+ /**
3194
+ * Delete a freshness rule
3195
+ * @description Removes the rule and strips it from any freshness state that matched it, so no stale resource keeps referencing a rule that no longer exists. Requires the `team.settings.update` permission.
3196
+ */
3197
+ delete: operations["deleteFreshnessRule"];
3198
+ options?: never;
3199
+ head?: never;
3200
+ patch?: never;
3201
+ trace?: never;
3202
+ };
3203
+ "/api/v1/{team_id}/settings/freshness": {
3204
+ parameters: {
3205
+ query?: never;
3206
+ header?: never;
3207
+ path: {
3208
+ /** @description Team identifier */
3209
+ team_id: string;
3210
+ };
3211
+ cookie?: never;
3212
+ };
3213
+ /**
3214
+ * Get the team's freshness settings
3215
+ * @description Returns the freshness evaluation settings in effect for the team, their provenance (`source`), and the defaults a reset would restore. A team that has never overridden them gets `source: instance`. Any member may read them.
3216
+ */
3217
+ get: operations["getTeamFreshnessSettings"];
3218
+ /**
3219
+ * Override the team's freshness settings
3220
+ * @description Replaces the team's freshness settings in full. `interval_seconds` below 3600 (one hour) is rejected. Requires the `team.settings.update` permission.
3221
+ */
3222
+ put: operations["updateTeamFreshnessSettings"];
3223
+ post?: never;
3224
+ /**
3225
+ * Reset the team's freshness settings to the defaults
3226
+ * @description Removes the team's stored settings so it inherits the defaults again. Requires the `team.settings.update` permission. Resetting a team that has no stored settings succeeds and changes nothing.
3227
+ */
3228
+ delete: operations["resetTeamFreshnessSettings"];
3229
+ options?: never;
3230
+ head?: never;
3231
+ patch?: never;
3232
+ trace?: never;
3233
+ };
3234
+ "/api/v1/{team_id}/freshness/metrics/over-time": {
3235
+ parameters: {
3236
+ query?: never;
3237
+ header?: never;
3238
+ path: {
3239
+ /** @description Team identifier */
3240
+ team_id: string;
3241
+ };
3242
+ cookie?: never;
3243
+ };
3244
+ /**
3245
+ * Freshness activity over time
3246
+ * @description Daily marked/cleared counts and the reconstructed stale level over the requested window, zero-filled so every day in the range is present.
3247
+ */
3248
+ get: operations["getFreshnessOverTimeMetrics"];
3249
+ put?: never;
3250
+ post?: never;
3251
+ delete?: never;
3252
+ options?: never;
3253
+ head?: never;
3254
+ patch?: never;
3255
+ trace?: never;
3256
+ };
3257
+ "/api/v1/{team_id}/freshness/metrics/by-type": {
3258
+ parameters: {
3259
+ query?: never;
3260
+ header?: never;
3261
+ path: {
3262
+ /** @description Team identifier */
3263
+ team_id: string;
3264
+ };
3265
+ cookie?: never;
3266
+ };
3267
+ /**
3268
+ * Stale resources by resource type
3269
+ * @description Current stale counts per resource type. All four types are always present; one with nothing stale reports 0.
3270
+ */
3271
+ get: operations["getFreshnessByTypeMetrics"];
3272
+ put?: never;
3273
+ post?: never;
3274
+ delete?: never;
3275
+ options?: never;
3276
+ head?: never;
3277
+ patch?: never;
3278
+ trace?: never;
3279
+ };
3280
+ "/api/v1/{team_id}/freshness/metrics/by-project": {
3281
+ parameters: {
3282
+ query?: never;
3283
+ header?: never;
3284
+ path: {
3285
+ /** @description Team identifier */
3286
+ team_id: string;
3287
+ };
3288
+ cookie?: never;
3289
+ };
3290
+ /**
3291
+ * Stale resources by project
3292
+ * @description Current stale counts per project in the team, including projects with nothing stale.
3293
+ */
3294
+ get: operations["getFreshnessByProjectMetrics"];
3295
+ put?: never;
3296
+ post?: never;
3297
+ delete?: never;
3298
+ options?: never;
3299
+ head?: never;
3300
+ patch?: never;
3301
+ trace?: never;
3302
+ };
3303
+ "/api/v1/{team_id}/freshness/metrics/by-rule": {
3304
+ parameters: {
3305
+ query?: never;
3306
+ header?: never;
3307
+ path: {
3308
+ /** @description Team identifier */
3309
+ team_id: string;
3310
+ };
3311
+ cookie?: never;
3312
+ };
3313
+ /**
3314
+ * Resources marked by each rule
3315
+ * @description How many resources each of the team's rules currently marks, including rules that match nothing. This is how an over-broad rule is spotted.
3316
+ */
3317
+ get: operations["getFreshnessByRuleMetrics"];
3318
+ put?: never;
3319
+ post?: never;
3320
+ delete?: never;
3321
+ options?: never;
3322
+ head?: never;
3323
+ patch?: never;
3324
+ trace?: never;
3325
+ };
3326
+ "/api/v1/{team_id}/freshness/audit": {
3327
+ parameters: {
3328
+ query?: never;
3329
+ header?: never;
3330
+ path: {
3331
+ /** @description Team identifier */
3332
+ team_id: string;
3333
+ };
3334
+ cookie?: never;
3335
+ };
3336
+ /**
3337
+ * List the team's freshness audit log
3338
+ * @description Every recorded mark and clear for the team, newest first and paginated. Readable by any member. The list is empty, never null, past the last page.
3339
+ */
3340
+ get: operations["listFreshnessAudit"];
3341
+ put?: never;
3342
+ post?: never;
3343
+ delete?: never;
3344
+ options?: never;
3345
+ head?: never;
3346
+ patch?: never;
3347
+ trace?: never;
3348
+ };
3147
3349
  "/api/v1/{team_id}/settings/embedding-providers": {
3148
3350
  parameters: {
3149
3351
  query?: never;
@@ -8725,110 +8927,405 @@ export interface components {
8725
8927
  */
8726
8928
  truncated: boolean;
8727
8929
  };
8728
- /** @description The search ranking settings in effect for a team, with enough context for a client to render the whole settings surface from this one response: the effective values, where they came from, the instance defaults to preview a reset against, and the instance-owned candidate cap. */
8729
- TeamSearchSettings: {
8930
+ /** @description One team's rule for when a resource becomes stale. */
8931
+ FreshnessRule: {
8730
8932
  /**
8731
- * @description Where the effective values come from. `instance` means the team has no override and inherits the deployment defaults; `team` means the team has stored its own profile.
8732
- * @example instance
8733
- * @enum {string}
8933
+ * Format: uuid
8934
+ * @description Rule identifier.
8734
8935
  */
8735
- source: "instance" | "team";
8736
- /** @description Effective value — the team's when source is `team`, otherwise the instance default. */
8737
- recency_ranking_enabled: boolean;
8936
+ id: string;
8738
8937
  /**
8739
- * Format: double
8740
- * @description Effective value — the team's when source is `team`, otherwise the instance default.
8938
+ * Format: uuid
8939
+ * @description Team the rule belongs to.
8741
8940
  */
8742
- rank_weight_relevance: number;
8941
+ team_id: string;
8743
8942
  /**
8744
- * Format: double
8745
- * @description Effective value — the team's when source is `team`, otherwise the instance default.
8943
+ * Format: uuid
8944
+ * @description Scopes the rule to a single project. `null` means the rule applies to EVERY project in the team.
8746
8945
  */
8747
- rank_weight_created: number;
8946
+ project_id: string | null;
8947
+ /** @description Resource types the rule applies to. Never empty. */
8948
+ resource_types: components["schemas"]["FreshnessRuleResourceType"][];
8949
+ /** @description Access mediums that count as "accessed" for this rule. An EMPTY array means ANY medium counts — it does not mean "no medium". */
8950
+ mediums: components["schemas"]["FreshnessRuleMedium"][];
8748
8951
  /**
8749
- * Format: double
8750
- * @description Effective value — the team's when source is `team`, otherwise the instance default.
8952
+ * Format: int32
8953
+ * @description Days without a qualifying access after which the resource is stale. Capped at 36500 (100 years), mirroring the search-settings half-life cap: past that the rule can never fire, and the bound keeps the value inside the int32 the column and the wire format use.
8751
8954
  */
8752
- rank_weight_updated: number;
8955
+ threshold_days: number;
8956
+ /** @description Whether evaluation runs apply this rule. */
8957
+ enabled: boolean;
8958
+ /** Format: date-time */
8959
+ created_at: string;
8960
+ /** Format: date-time */
8961
+ updated_at: string;
8962
+ };
8963
+ /**
8964
+ * @description A resource type a freshness rule can cover.
8965
+ * @enum {string}
8966
+ */
8967
+ FreshnessRuleResourceType: "artifact" | "prompt" | "blueprint" | "memory";
8968
+ /**
8969
+ * @description An access medium that counts as "accessed" for a freshness rule. Note this is narrower than the set of mediums recorded on the access path — `api` accesses are stored but are deliberately not selectable as rule criteria.
8970
+ * @enum {string}
8971
+ */
8972
+ FreshnessRuleMedium: "web" | "cli" | "mcp";
8973
+ /** @description The team's freshness rules, oldest first. */
8974
+ FreshnessRuleListResponse: {
8975
+ /** @description Freshness rules. Serializes as `[]` when the team has none, never `null`. */
8976
+ rules: components["schemas"]["FreshnessRule"][];
8977
+ };
8978
+ /** @description Create a freshness rule. */
8979
+ CreateFreshnessRuleRequest: {
8753
8980
  /**
8754
- * Format: double
8755
- * @description Effective value — the team's when source is `team`, otherwise the instance default.
8981
+ * Format: uuid
8982
+ * @description Scope to one project; omit or send `null` for every project in the team.
8756
8983
  */
8757
- rank_half_life_days: number;
8758
- /** @description The deployment-wide defaults from config.yaml, so a client can preview what "reset to defaults" would produce without a second request. Equal to the effective values when source is `instance`. */
8759
- instance_defaults: components["schemas"]["TeamSearchSettingsValues"];
8984
+ project_id?: string | null;
8985
+ resource_types: components["schemas"]["FreshnessRuleResourceType"][];
8986
+ /** @description Omit or send an empty array to match any medium. */
8987
+ mediums?: components["schemas"]["FreshnessRuleMedium"][];
8988
+ /** Format: int32 */
8989
+ threshold_days: number;
8760
8990
  /**
8761
- * @description How many top-by-relevance rows are pulled and re-ranked in memory per query. Instance-owned and NOT team-configurable — one team must not be able to raise the whole deployment's per-query cost. Exposed so clients can explain why pagination is clamped to this many results when recency ranking is on.
8762
- * Deliberately NOT marked `readOnly`: the update request uses a separate schema that has no such field, which is what actually makes the cap unsettable. Marking it readOnly additionally makes oapi-codegen emit it as an optional pointer, which would let a required field serialize as absent.
8763
- * @example 200
8991
+ * @description Defaults to true when omitted.
8992
+ * @default true
8764
8993
  */
8765
- rank_candidate_cap: number;
8994
+ enabled: boolean;
8766
8995
  };
8767
- /** @description A complete search ranking profile. The three weights are normalized by their sum at ranking time, so they need not pre-sum to 1. */
8768
- TeamSearchSettingsValues: {
8996
+ /** @description Replace a freshness rule in full. */
8997
+ UpdateFreshnessRuleRequest: {
8769
8998
  /**
8770
- * @description When false, results keep relevance-only ordering. When true they are re-ranked by a weighted blend of relevance and freshness.
8771
- * @example true
8999
+ * Format: uuid
9000
+ * @description Scope to one project; `null` means every project in the team.
8772
9001
  */
8773
- recency_ranking_enabled: boolean;
9002
+ project_id: string | null;
9003
+ resource_types: components["schemas"]["FreshnessRuleResourceType"][];
9004
+ /** @description An empty array matches any medium. */
9005
+ mediums: components["schemas"]["FreshnessRuleMedium"][];
9006
+ /** Format: int32 */
9007
+ threshold_days: number;
9008
+ enabled: boolean;
9009
+ };
9010
+ /** @description The tunable freshness-evaluation values, shared by the current settings and the defaults. */
9011
+ FreshnessSettingsValues: {
8774
9012
  /**
8775
- * Format: double
8776
- * @description Weight of semantic relevance. Expected to be the dominant weight.
8777
- * @example 0.5
9013
+ * Format: int32
9014
+ * @description How often the team's rules are evaluated. Storage enforces a one-hour floor, matching the scheduler's own floor; the 31536000 (365-day) ceiling keeps the value inside the int32 the column and the wire format use, and an interval longer than a year is indistinguishable from off.
8778
9015
  */
8779
- rank_weight_relevance: number;
9016
+ interval_seconds: number;
9017
+ /** @description Whether accessing or editing a stale resource clears its stale state. */
9018
+ reversibility_enabled: boolean;
9019
+ };
9020
+ /** @description The freshness settings in effect for a team, with their provenance. A team that has never overridden them reports `source: instance` and the defaults. */
9021
+ TeamFreshnessSettings: {
8780
9022
  /**
8781
- * Format: double
8782
- * @description Weight of how recently the resource was created.
8783
- * @example 0.3
9023
+ * @description `team` when the team stores its own settings, `instance` when it inherits the defaults.
9024
+ * @enum {string}
8784
9025
  */
8785
- rank_weight_created: number;
9026
+ source: "instance" | "team";
9027
+ /** Format: int32 */
9028
+ interval_seconds: number;
9029
+ reversibility_enabled: boolean;
9030
+ /** @description The values a DELETE would restore. Present on every read so clients can preview a reset without a second call. */
9031
+ defaults: components["schemas"]["FreshnessSettingsValues"];
9032
+ };
9033
+ /** @description Override the team's freshness settings. */
9034
+ UpdateTeamFreshnessSettingsRequest: {
8786
9035
  /**
8787
- * Format: double
8788
- * @description Weight of how recently the resource was updated.
8789
- * @example 0.2
9036
+ * Format: int32
9037
+ * @description Rejected below 3600 (one hour) or above 31536000 (365 days).
8790
9038
  */
8791
- rank_weight_updated: number;
9039
+ interval_seconds: number;
9040
+ reversibility_enabled: boolean;
9041
+ };
9042
+ /**
9043
+ * @description The reporting window for a time-series metric. The options mirror the other analytics endpoints so one range selector drives every chart.
9044
+ * @example 30d
9045
+ * @enum {string}
9046
+ */
9047
+ FreshnessMetricsRange: "7d" | "14d" | "30d" | "60d" | "90d" | "180d";
9048
+ /** @description One calendar day (UTC) of freshness activity, zero-filled: every day in the window is present even when nothing happened. */
9049
+ FreshnessDailyStaleCount: {
8792
9050
  /**
8793
- * Format: double
8794
- * @description Half-life in days for the exponential freshness decay applied to both created_at and updated_at. An item exactly one half-life old scores 0.5.
8795
- * @example 90
9051
+ * Format: date
9052
+ * @example 2026-05-01
8796
9053
  */
8797
- rank_half_life_days: number;
8798
- };
8799
- /** @description A complete replacement ranking profile for the team. There is no partial update: every field is required, and the whole profile is stored or replaced atomically. `rank_candidate_cap` is deliberately absent — it is instance-owned. */
8800
- UpdateTeamSearchSettingsRequest: {
8801
- /** @example true */
8802
- recency_ranking_enabled: boolean;
9054
+ date: string;
8803
9055
  /**
8804
- * Format: double
8805
- * @example 0.5
9056
+ * Format: int32
9057
+ * @description Resources that became stale on this day.
8806
9058
  */
8807
- rank_weight_relevance: number;
9059
+ marked: number;
8808
9060
  /**
8809
- * Format: double
8810
- * @example 0.3
9061
+ * Format: int32
9062
+ * @description Resources that stopped being stale on this day, for any reason.
8811
9063
  */
8812
- rank_weight_created: number;
9064
+ cleared: number;
8813
9065
  /**
8814
- * Format: double
8815
- * @example 0.2
9066
+ * Format: int32
9067
+ * @description How many resources were stale at the END of this day — the level, not the flow. It is reconstructed by walking today's live count backwards through the recorded transitions, so it is exact only for the period the audit log covers; days before freshness evaluation first ran on this team read as the earliest known level rather than as zero. The most recent day reports the live count as of the request. The reconstruction is clamped at zero, so on a team whose rows were removed by a project or team deletion — which writes no audit entry — the series can flatten at 0 instead of satisfying stale_total[i] = stale_total[i-1] + marked[i] - cleared[i].
8816
9068
  */
8817
- rank_weight_updated: number;
9069
+ stale_total: number;
8818
9070
  /**
8819
- * Format: double
8820
- * @example 90
9071
+ * Format: int32
9072
+ * @description The day's total ACTIVITY, marked + cleared — the sum of the two series, not the level. It is the field the shared time-series chart reads for its per-day total, which is why it is a flow rather than stale_total.
8821
9073
  */
8822
- rank_half_life_days: number;
9074
+ total: number;
8823
9075
  };
8824
- /** @description Instance-wide totals for the top-level entities (unscoped counts). */
8825
- AdminInstanceCounts: {
9076
+ FreshnessOverTimeMetricsData: {
9077
+ range: components["schemas"]["FreshnessMetricsRange"];
8826
9078
  /**
8827
- * Format: int64
8828
- * @description Total number of user accounts.
8829
- * @example 42
9079
+ * Format: int32
9080
+ * @description Resources marked stale across the whole window.
8830
9081
  */
8831
- users: number;
9082
+ total_marked: number;
9083
+ /**
9084
+ * Format: int32
9085
+ * @description Resources cleared across the whole window.
9086
+ */
9087
+ total_cleared: number;
9088
+ /** @description One entry per day in the window, oldest first. Serializes as `[]`, never `null`. */
9089
+ counts: components["schemas"]["FreshnessDailyStaleCount"][];
9090
+ };
9091
+ FreshnessOverTimeMetricsResponse: {
9092
+ /** @example success */
9093
+ status: string;
9094
+ /** @example Freshness over-time metrics retrieved successfully */
9095
+ message: string;
9096
+ data: components["schemas"]["FreshnessOverTimeMetricsData"];
9097
+ };
9098
+ /** @description How many of one resource type are stale right now. */
9099
+ FreshnessTypeCount: {
9100
+ resource_type: components["schemas"]["FreshnessRuleResourceType"];
9101
+ /** Format: int32 */
9102
+ count: number;
9103
+ };
9104
+ FreshnessByTypeMetricsData: {
9105
+ /**
9106
+ * Format: int32
9107
+ * @description Total stale resources in the team, across every type.
9108
+ */
9109
+ total_stale: number;
9110
+ /** @description One entry per resource type, always all four, in a stable order — a type with nothing stale reports 0 rather than being omitted, so the chart's bars never move. Serializes as `[]`, never `null`. */
9111
+ counts: components["schemas"]["FreshnessTypeCount"][];
9112
+ };
9113
+ FreshnessByTypeMetricsResponse: {
9114
+ /** @example success */
9115
+ status: string;
9116
+ /** @example Freshness by-type metrics retrieved successfully */
9117
+ message: string;
9118
+ data: components["schemas"]["FreshnessByTypeMetricsData"];
9119
+ };
9120
+ /** @description How many resources are stale right now in one project. `name` and `slug` are carried so the client can label and deep-link the bar without a second request. */
9121
+ FreshnessProjectCount: {
9122
+ /** Format: uuid */
9123
+ project_id: string;
9124
+ name: string;
9125
+ slug: string;
9126
+ /** Format: int32 */
9127
+ count: number;
9128
+ };
9129
+ FreshnessByProjectMetricsData: {
9130
+ /** Format: int32 */
9131
+ total_stale: number;
9132
+ /** @description One entry per project in the team, including projects with nothing stale (0), ordered by count descending then name. Serializes as `[]`, never `null`. */
9133
+ counts: components["schemas"]["FreshnessProjectCount"][];
9134
+ };
9135
+ FreshnessByProjectMetricsResponse: {
9136
+ /** @example success */
9137
+ status: string;
9138
+ /** @example Freshness by-project metrics retrieved successfully */
9139
+ message: string;
9140
+ data: components["schemas"]["FreshnessByProjectMetricsData"];
9141
+ };
9142
+ /** @description How many resources one rule currently marks. Rules have no name, so the defining fields travel with the count for the client to label the bar. */
9143
+ FreshnessRuleImpact: {
9144
+ /** Format: uuid */
9145
+ rule_id: string;
9146
+ /**
9147
+ * Format: uuid
9148
+ * @description The project the rule is scoped to, or null for every project in the team.
9149
+ */
9150
+ project_id: string | null;
9151
+ resource_types: components["schemas"]["FreshnessRuleResourceType"][];
9152
+ /** Format: int32 */
9153
+ threshold_days: number;
9154
+ /** @description A disabled rule reports 0 — it is listed so its absence from the chart is not mistaken for deletion. */
9155
+ enabled: boolean;
9156
+ /** Format: int32 */
9157
+ count: number;
9158
+ };
9159
+ FreshnessByRuleMetricsData: {
9160
+ /**
9161
+ * Format: int32
9162
+ * @description Distinct stale resources in the team. It is NOT the sum of the per-rule counts: a resource matched by two rules is counted once here and once under each rule, because staleness is a union across rules.
9163
+ */
9164
+ total_stale: number;
9165
+ /** @description One entry per rule the team has defined, including rules matching nothing, ordered by count descending then rule id. Serializes as `[]`, never `null`. */
9166
+ counts: components["schemas"]["FreshnessRuleImpact"][];
9167
+ };
9168
+ FreshnessByRuleMetricsResponse: {
9169
+ /** @example success */
9170
+ status: string;
9171
+ /** @example Freshness by-rule metrics retrieved successfully */
9172
+ message: string;
9173
+ data: components["schemas"]["FreshnessByRuleMetricsData"];
9174
+ };
9175
+ /** @description One recorded freshness transition. The log is append-only. */
9176
+ FreshnessAuditEntry: {
9177
+ /** Format: uuid */
9178
+ id: string;
9179
+ resource_type: components["schemas"]["FreshnessRuleResourceType"];
9180
+ /** Format: uuid */
9181
+ resource_id: string;
9182
+ /**
9183
+ * Format: uuid
9184
+ * @description The rule that caused the change, when exactly one did. Null for a reversal (caused by a read or an edit) and for a mark attributable to several rules at once — the resource's own state carries the full set.
9185
+ */
9186
+ rule_id: string | null;
9187
+ /**
9188
+ * @description Whether the resource became stale or stopped being stale.
9189
+ * @enum {string}
9190
+ */
9191
+ action: "marked" | "cleared";
9192
+ /**
9193
+ * @description What caused it — a scheduled evaluation, a read, or an edit.
9194
+ * @enum {string}
9195
+ */
9196
+ reason: "rule_run" | "accessed" | "edited";
9197
+ /** Format: date-time */
9198
+ created_at: string;
9199
+ };
9200
+ /** @description A page of the team's freshness audit log, newest first. */
9201
+ FreshnessAuditListResponse: {
9202
+ /** @description Serializes as `[]` when the page is empty, never `null`. */
9203
+ entries: components["schemas"]["FreshnessAuditEntry"][];
9204
+ /**
9205
+ * @description Total entries in the team's log, ignoring pagination.
9206
+ * @example 142
9207
+ */
9208
+ total_count: number;
9209
+ /**
9210
+ * @description Current page number (1-based)
9211
+ * @example 1
9212
+ */
9213
+ page: number;
9214
+ /**
9215
+ * @description Number of entries per page
9216
+ * @example 20
9217
+ */
9218
+ per_page: number;
9219
+ /**
9220
+ * @description Total number of pages
9221
+ * @example 8
9222
+ */
9223
+ total_pages: number;
9224
+ };
9225
+ /** @description The search ranking settings in effect for a team, with enough context for a client to render the whole settings surface from this one response: the effective values, where they came from, the instance defaults to preview a reset against, and the instance-owned candidate cap. */
9226
+ TeamSearchSettings: {
9227
+ /**
9228
+ * @description Where the effective values come from. `instance` means the team has no override and inherits the deployment defaults; `team` means the team has stored its own profile.
9229
+ * @example instance
9230
+ * @enum {string}
9231
+ */
9232
+ source: "instance" | "team";
9233
+ /** @description Effective value — the team's when source is `team`, otherwise the instance default. */
9234
+ recency_ranking_enabled: boolean;
9235
+ /**
9236
+ * Format: double
9237
+ * @description Effective value — the team's when source is `team`, otherwise the instance default.
9238
+ */
9239
+ rank_weight_relevance: number;
9240
+ /**
9241
+ * Format: double
9242
+ * @description Effective value — the team's when source is `team`, otherwise the instance default.
9243
+ */
9244
+ rank_weight_created: number;
9245
+ /**
9246
+ * Format: double
9247
+ * @description Effective value — the team's when source is `team`, otherwise the instance default.
9248
+ */
9249
+ rank_weight_updated: number;
9250
+ /**
9251
+ * Format: double
9252
+ * @description Effective value — the team's when source is `team`, otherwise the instance default.
9253
+ */
9254
+ rank_half_life_days: number;
9255
+ /** @description The deployment-wide defaults from config.yaml, so a client can preview what "reset to defaults" would produce without a second request. Equal to the effective values when source is `instance`. */
9256
+ instance_defaults: components["schemas"]["TeamSearchSettingsValues"];
9257
+ /**
9258
+ * @description How many top-by-relevance rows are pulled and re-ranked in memory per query. Instance-owned and NOT team-configurable — one team must not be able to raise the whole deployment's per-query cost. Exposed so clients can explain why pagination is clamped to this many results when recency ranking is on.
9259
+ * Deliberately NOT marked `readOnly`: the update request uses a separate schema that has no such field, which is what actually makes the cap unsettable. Marking it readOnly additionally makes oapi-codegen emit it as an optional pointer, which would let a required field serialize as absent.
9260
+ * @example 200
9261
+ */
9262
+ rank_candidate_cap: number;
9263
+ };
9264
+ /** @description A complete search ranking profile. The three weights are normalized by their sum at ranking time, so they need not pre-sum to 1. */
9265
+ TeamSearchSettingsValues: {
9266
+ /**
9267
+ * @description When false, results keep relevance-only ordering. When true they are re-ranked by a weighted blend of relevance and freshness.
9268
+ * @example true
9269
+ */
9270
+ recency_ranking_enabled: boolean;
9271
+ /**
9272
+ * Format: double
9273
+ * @description Weight of semantic relevance. Expected to be the dominant weight.
9274
+ * @example 0.5
9275
+ */
9276
+ rank_weight_relevance: number;
9277
+ /**
9278
+ * Format: double
9279
+ * @description Weight of how recently the resource was created.
9280
+ * @example 0.3
9281
+ */
9282
+ rank_weight_created: number;
9283
+ /**
9284
+ * Format: double
9285
+ * @description Weight of how recently the resource was updated.
9286
+ * @example 0.2
9287
+ */
9288
+ rank_weight_updated: number;
9289
+ /**
9290
+ * Format: double
9291
+ * @description Half-life in days for the exponential freshness decay applied to both created_at and updated_at. An item exactly one half-life old scores 0.5.
9292
+ * @example 90
9293
+ */
9294
+ rank_half_life_days: number;
9295
+ };
9296
+ /** @description A complete replacement ranking profile for the team. There is no partial update: every field is required, and the whole profile is stored or replaced atomically. `rank_candidate_cap` is deliberately absent — it is instance-owned. */
9297
+ UpdateTeamSearchSettingsRequest: {
9298
+ /** @example true */
9299
+ recency_ranking_enabled: boolean;
9300
+ /**
9301
+ * Format: double
9302
+ * @example 0.5
9303
+ */
9304
+ rank_weight_relevance: number;
9305
+ /**
9306
+ * Format: double
9307
+ * @example 0.3
9308
+ */
9309
+ rank_weight_created: number;
9310
+ /**
9311
+ * Format: double
9312
+ * @example 0.2
9313
+ */
9314
+ rank_weight_updated: number;
9315
+ /**
9316
+ * Format: double
9317
+ * @example 90
9318
+ */
9319
+ rank_half_life_days: number;
9320
+ };
9321
+ /** @description Instance-wide totals for the top-level entities (unscoped counts). */
9322
+ AdminInstanceCounts: {
9323
+ /**
9324
+ * Format: int64
9325
+ * @description Total number of user accounts.
9326
+ * @example 42
9327
+ */
9328
+ users: number;
8832
9329
  /**
8833
9330
  * Format: int64
8834
9331
  * @description Total number of teams.
@@ -20613,6 +21110,752 @@ export interface operations {
20613
21110
  };
20614
21111
  };
20615
21112
  };
21113
+ listFreshnessRules: {
21114
+ parameters: {
21115
+ query?: never;
21116
+ header?: never;
21117
+ path: {
21118
+ /** @description Team identifier */
21119
+ team_id: string;
21120
+ };
21121
+ cookie?: never;
21122
+ };
21123
+ requestBody?: never;
21124
+ responses: {
21125
+ /** @description Rules retrieved successfully */
21126
+ 200: {
21127
+ headers: {
21128
+ [name: string]: unknown;
21129
+ };
21130
+ content: {
21131
+ "application/json": components["schemas"]["FreshnessRuleListResponse"];
21132
+ };
21133
+ };
21134
+ /** @description Invalid team_id */
21135
+ 400: {
21136
+ headers: {
21137
+ [name: string]: unknown;
21138
+ };
21139
+ content: {
21140
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21141
+ };
21142
+ };
21143
+ /** @description Authentication required */
21144
+ 401: {
21145
+ headers: {
21146
+ [name: string]: unknown;
21147
+ };
21148
+ content: {
21149
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21150
+ };
21151
+ };
21152
+ /** @description Caller is not a member of the team */
21153
+ 403: {
21154
+ headers: {
21155
+ [name: string]: unknown;
21156
+ };
21157
+ content: {
21158
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21159
+ };
21160
+ };
21161
+ /** @description Failed to list the team's freshness rules */
21162
+ 500: {
21163
+ headers: {
21164
+ [name: string]: unknown;
21165
+ };
21166
+ content: {
21167
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21168
+ };
21169
+ };
21170
+ };
21171
+ };
21172
+ createFreshnessRule: {
21173
+ parameters: {
21174
+ query?: never;
21175
+ header?: never;
21176
+ path: {
21177
+ /** @description Team identifier */
21178
+ team_id: string;
21179
+ };
21180
+ cookie?: never;
21181
+ };
21182
+ requestBody: {
21183
+ content: {
21184
+ "application/json": components["schemas"]["CreateFreshnessRuleRequest"];
21185
+ };
21186
+ };
21187
+ responses: {
21188
+ /** @description Rule created successfully */
21189
+ 201: {
21190
+ headers: {
21191
+ [name: string]: unknown;
21192
+ };
21193
+ content: {
21194
+ "application/json": components["schemas"]["FreshnessRule"];
21195
+ };
21196
+ };
21197
+ /** @description Invalid team_id or rule definition */
21198
+ 400: {
21199
+ headers: {
21200
+ [name: string]: unknown;
21201
+ };
21202
+ content: {
21203
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21204
+ };
21205
+ };
21206
+ /** @description Authentication required */
21207
+ 401: {
21208
+ headers: {
21209
+ [name: string]: unknown;
21210
+ };
21211
+ content: {
21212
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21213
+ };
21214
+ };
21215
+ /** @description Caller may not change the team's settings */
21216
+ 403: {
21217
+ headers: {
21218
+ [name: string]: unknown;
21219
+ };
21220
+ content: {
21221
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21222
+ };
21223
+ };
21224
+ /** @description Failed to create the freshness rule */
21225
+ 500: {
21226
+ headers: {
21227
+ [name: string]: unknown;
21228
+ };
21229
+ content: {
21230
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21231
+ };
21232
+ };
21233
+ };
21234
+ };
21235
+ updateFreshnessRule: {
21236
+ parameters: {
21237
+ query?: never;
21238
+ header?: never;
21239
+ path: {
21240
+ /** @description Team identifier */
21241
+ team_id: string;
21242
+ /** @description Freshness rule identifier */
21243
+ rule_id: string;
21244
+ };
21245
+ cookie?: never;
21246
+ };
21247
+ requestBody: {
21248
+ content: {
21249
+ "application/json": components["schemas"]["UpdateFreshnessRuleRequest"];
21250
+ };
21251
+ };
21252
+ responses: {
21253
+ /** @description Rule updated successfully */
21254
+ 200: {
21255
+ headers: {
21256
+ [name: string]: unknown;
21257
+ };
21258
+ content: {
21259
+ "application/json": components["schemas"]["FreshnessRule"];
21260
+ };
21261
+ };
21262
+ /** @description Invalid identifiers or rule definition */
21263
+ 400: {
21264
+ headers: {
21265
+ [name: string]: unknown;
21266
+ };
21267
+ content: {
21268
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21269
+ };
21270
+ };
21271
+ /** @description Authentication required */
21272
+ 401: {
21273
+ headers: {
21274
+ [name: string]: unknown;
21275
+ };
21276
+ content: {
21277
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21278
+ };
21279
+ };
21280
+ /** @description Caller may not change the team's settings */
21281
+ 403: {
21282
+ headers: {
21283
+ [name: string]: unknown;
21284
+ };
21285
+ content: {
21286
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21287
+ };
21288
+ };
21289
+ /** @description No such rule in this team */
21290
+ 404: {
21291
+ headers: {
21292
+ [name: string]: unknown;
21293
+ };
21294
+ content: {
21295
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21296
+ };
21297
+ };
21298
+ /** @description Failed to update the freshness rule */
21299
+ 500: {
21300
+ headers: {
21301
+ [name: string]: unknown;
21302
+ };
21303
+ content: {
21304
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21305
+ };
21306
+ };
21307
+ };
21308
+ };
21309
+ deleteFreshnessRule: {
21310
+ parameters: {
21311
+ query?: never;
21312
+ header?: never;
21313
+ path: {
21314
+ /** @description Team identifier */
21315
+ team_id: string;
21316
+ /** @description Freshness rule identifier */
21317
+ rule_id: string;
21318
+ };
21319
+ cookie?: never;
21320
+ };
21321
+ requestBody?: never;
21322
+ responses: {
21323
+ /** @description Rule deleted (no content) */
21324
+ 204: {
21325
+ headers: {
21326
+ [name: string]: unknown;
21327
+ };
21328
+ content?: never;
21329
+ };
21330
+ /** @description Invalid identifiers */
21331
+ 400: {
21332
+ headers: {
21333
+ [name: string]: unknown;
21334
+ };
21335
+ content: {
21336
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21337
+ };
21338
+ };
21339
+ /** @description Authentication required */
21340
+ 401: {
21341
+ headers: {
21342
+ [name: string]: unknown;
21343
+ };
21344
+ content: {
21345
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21346
+ };
21347
+ };
21348
+ /** @description Caller may not change the team's settings */
21349
+ 403: {
21350
+ headers: {
21351
+ [name: string]: unknown;
21352
+ };
21353
+ content: {
21354
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21355
+ };
21356
+ };
21357
+ /** @description No such rule in this team */
21358
+ 404: {
21359
+ headers: {
21360
+ [name: string]: unknown;
21361
+ };
21362
+ content: {
21363
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21364
+ };
21365
+ };
21366
+ /** @description Failed to delete the freshness rule */
21367
+ 500: {
21368
+ headers: {
21369
+ [name: string]: unknown;
21370
+ };
21371
+ content: {
21372
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21373
+ };
21374
+ };
21375
+ };
21376
+ };
21377
+ getTeamFreshnessSettings: {
21378
+ parameters: {
21379
+ query?: never;
21380
+ header?: never;
21381
+ path: {
21382
+ /** @description Team identifier */
21383
+ team_id: string;
21384
+ };
21385
+ cookie?: never;
21386
+ };
21387
+ requestBody?: never;
21388
+ responses: {
21389
+ /** @description Settings retrieved successfully */
21390
+ 200: {
21391
+ headers: {
21392
+ [name: string]: unknown;
21393
+ };
21394
+ content: {
21395
+ "application/json": components["schemas"]["TeamFreshnessSettings"];
21396
+ };
21397
+ };
21398
+ /** @description Invalid team_id */
21399
+ 400: {
21400
+ headers: {
21401
+ [name: string]: unknown;
21402
+ };
21403
+ content: {
21404
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21405
+ };
21406
+ };
21407
+ /** @description Authentication required */
21408
+ 401: {
21409
+ headers: {
21410
+ [name: string]: unknown;
21411
+ };
21412
+ content: {
21413
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21414
+ };
21415
+ };
21416
+ /** @description Caller is not a member of the team */
21417
+ 403: {
21418
+ headers: {
21419
+ [name: string]: unknown;
21420
+ };
21421
+ content: {
21422
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21423
+ };
21424
+ };
21425
+ /** @description Failed to read the team's freshness settings */
21426
+ 500: {
21427
+ headers: {
21428
+ [name: string]: unknown;
21429
+ };
21430
+ content: {
21431
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21432
+ };
21433
+ };
21434
+ };
21435
+ };
21436
+ updateTeamFreshnessSettings: {
21437
+ parameters: {
21438
+ query?: never;
21439
+ header?: never;
21440
+ path: {
21441
+ /** @description Team identifier */
21442
+ team_id: string;
21443
+ };
21444
+ cookie?: never;
21445
+ };
21446
+ requestBody: {
21447
+ content: {
21448
+ "application/json": components["schemas"]["UpdateTeamFreshnessSettingsRequest"];
21449
+ };
21450
+ };
21451
+ responses: {
21452
+ /** @description Settings updated successfully */
21453
+ 200: {
21454
+ headers: {
21455
+ [name: string]: unknown;
21456
+ };
21457
+ content: {
21458
+ "application/json": components["schemas"]["TeamFreshnessSettings"];
21459
+ };
21460
+ };
21461
+ /** @description Invalid team_id or settings */
21462
+ 400: {
21463
+ headers: {
21464
+ [name: string]: unknown;
21465
+ };
21466
+ content: {
21467
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21468
+ };
21469
+ };
21470
+ /** @description Authentication required */
21471
+ 401: {
21472
+ headers: {
21473
+ [name: string]: unknown;
21474
+ };
21475
+ content: {
21476
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21477
+ };
21478
+ };
21479
+ /** @description Caller may not change the team's settings */
21480
+ 403: {
21481
+ headers: {
21482
+ [name: string]: unknown;
21483
+ };
21484
+ content: {
21485
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21486
+ };
21487
+ };
21488
+ /** @description Failed to update the team's freshness settings */
21489
+ 500: {
21490
+ headers: {
21491
+ [name: string]: unknown;
21492
+ };
21493
+ content: {
21494
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21495
+ };
21496
+ };
21497
+ };
21498
+ };
21499
+ resetTeamFreshnessSettings: {
21500
+ parameters: {
21501
+ query?: never;
21502
+ header?: never;
21503
+ path: {
21504
+ /** @description Team identifier */
21505
+ team_id: string;
21506
+ };
21507
+ cookie?: never;
21508
+ };
21509
+ requestBody?: never;
21510
+ responses: {
21511
+ /** @description Settings reset (no content); the team now inherits the defaults */
21512
+ 204: {
21513
+ headers: {
21514
+ [name: string]: unknown;
21515
+ };
21516
+ content?: never;
21517
+ };
21518
+ /** @description Invalid team_id */
21519
+ 400: {
21520
+ headers: {
21521
+ [name: string]: unknown;
21522
+ };
21523
+ content: {
21524
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21525
+ };
21526
+ };
21527
+ /** @description Authentication required */
21528
+ 401: {
21529
+ headers: {
21530
+ [name: string]: unknown;
21531
+ };
21532
+ content: {
21533
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21534
+ };
21535
+ };
21536
+ /** @description Caller may not change the team's settings */
21537
+ 403: {
21538
+ headers: {
21539
+ [name: string]: unknown;
21540
+ };
21541
+ content: {
21542
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21543
+ };
21544
+ };
21545
+ /** @description Failed to reset the team's freshness settings */
21546
+ 500: {
21547
+ headers: {
21548
+ [name: string]: unknown;
21549
+ };
21550
+ content: {
21551
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21552
+ };
21553
+ };
21554
+ };
21555
+ };
21556
+ getFreshnessOverTimeMetrics: {
21557
+ parameters: {
21558
+ query?: {
21559
+ /** @description The reporting window. Defaults to 30d. */
21560
+ range?: components["schemas"]["FreshnessMetricsRange"];
21561
+ };
21562
+ header?: never;
21563
+ path: {
21564
+ /** @description Team identifier */
21565
+ team_id: string;
21566
+ };
21567
+ cookie?: never;
21568
+ };
21569
+ requestBody?: never;
21570
+ responses: {
21571
+ /** @description Metrics retrieved successfully */
21572
+ 200: {
21573
+ headers: {
21574
+ [name: string]: unknown;
21575
+ };
21576
+ content: {
21577
+ "application/json": components["schemas"]["FreshnessOverTimeMetricsResponse"];
21578
+ };
21579
+ };
21580
+ /** @description Invalid team_id or query parameter */
21581
+ 400: {
21582
+ headers: {
21583
+ [name: string]: unknown;
21584
+ };
21585
+ content: {
21586
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21587
+ };
21588
+ };
21589
+ /** @description Authentication required */
21590
+ 401: {
21591
+ headers: {
21592
+ [name: string]: unknown;
21593
+ };
21594
+ content: {
21595
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21596
+ };
21597
+ };
21598
+ /** @description Caller is not a member of the team */
21599
+ 403: {
21600
+ headers: {
21601
+ [name: string]: unknown;
21602
+ };
21603
+ content: {
21604
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21605
+ };
21606
+ };
21607
+ /** @description Failed to build the team's freshness over-time metrics */
21608
+ 500: {
21609
+ headers: {
21610
+ [name: string]: unknown;
21611
+ };
21612
+ content: {
21613
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21614
+ };
21615
+ };
21616
+ };
21617
+ };
21618
+ getFreshnessByTypeMetrics: {
21619
+ parameters: {
21620
+ query?: never;
21621
+ header?: never;
21622
+ path: {
21623
+ /** @description Team identifier */
21624
+ team_id: string;
21625
+ };
21626
+ cookie?: never;
21627
+ };
21628
+ requestBody?: never;
21629
+ responses: {
21630
+ /** @description Metrics retrieved successfully */
21631
+ 200: {
21632
+ headers: {
21633
+ [name: string]: unknown;
21634
+ };
21635
+ content: {
21636
+ "application/json": components["schemas"]["FreshnessByTypeMetricsResponse"];
21637
+ };
21638
+ };
21639
+ /** @description Invalid team_id or query parameter */
21640
+ 400: {
21641
+ headers: {
21642
+ [name: string]: unknown;
21643
+ };
21644
+ content: {
21645
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21646
+ };
21647
+ };
21648
+ /** @description Authentication required */
21649
+ 401: {
21650
+ headers: {
21651
+ [name: string]: unknown;
21652
+ };
21653
+ content: {
21654
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21655
+ };
21656
+ };
21657
+ /** @description Caller is not a member of the team */
21658
+ 403: {
21659
+ headers: {
21660
+ [name: string]: unknown;
21661
+ };
21662
+ content: {
21663
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21664
+ };
21665
+ };
21666
+ /** @description Failed to build the team's freshness by-type metrics */
21667
+ 500: {
21668
+ headers: {
21669
+ [name: string]: unknown;
21670
+ };
21671
+ content: {
21672
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21673
+ };
21674
+ };
21675
+ };
21676
+ };
21677
+ getFreshnessByProjectMetrics: {
21678
+ parameters: {
21679
+ query?: never;
21680
+ header?: never;
21681
+ path: {
21682
+ /** @description Team identifier */
21683
+ team_id: string;
21684
+ };
21685
+ cookie?: never;
21686
+ };
21687
+ requestBody?: never;
21688
+ responses: {
21689
+ /** @description Metrics retrieved successfully */
21690
+ 200: {
21691
+ headers: {
21692
+ [name: string]: unknown;
21693
+ };
21694
+ content: {
21695
+ "application/json": components["schemas"]["FreshnessByProjectMetricsResponse"];
21696
+ };
21697
+ };
21698
+ /** @description Invalid team_id or query parameter */
21699
+ 400: {
21700
+ headers: {
21701
+ [name: string]: unknown;
21702
+ };
21703
+ content: {
21704
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21705
+ };
21706
+ };
21707
+ /** @description Authentication required */
21708
+ 401: {
21709
+ headers: {
21710
+ [name: string]: unknown;
21711
+ };
21712
+ content: {
21713
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21714
+ };
21715
+ };
21716
+ /** @description Caller is not a member of the team */
21717
+ 403: {
21718
+ headers: {
21719
+ [name: string]: unknown;
21720
+ };
21721
+ content: {
21722
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21723
+ };
21724
+ };
21725
+ /** @description Failed to build the team's freshness by-project metrics */
21726
+ 500: {
21727
+ headers: {
21728
+ [name: string]: unknown;
21729
+ };
21730
+ content: {
21731
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21732
+ };
21733
+ };
21734
+ };
21735
+ };
21736
+ getFreshnessByRuleMetrics: {
21737
+ parameters: {
21738
+ query?: never;
21739
+ header?: never;
21740
+ path: {
21741
+ /** @description Team identifier */
21742
+ team_id: string;
21743
+ };
21744
+ cookie?: never;
21745
+ };
21746
+ requestBody?: never;
21747
+ responses: {
21748
+ /** @description Metrics retrieved successfully */
21749
+ 200: {
21750
+ headers: {
21751
+ [name: string]: unknown;
21752
+ };
21753
+ content: {
21754
+ "application/json": components["schemas"]["FreshnessByRuleMetricsResponse"];
21755
+ };
21756
+ };
21757
+ /** @description Invalid team_id or query parameter */
21758
+ 400: {
21759
+ headers: {
21760
+ [name: string]: unknown;
21761
+ };
21762
+ content: {
21763
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21764
+ };
21765
+ };
21766
+ /** @description Authentication required */
21767
+ 401: {
21768
+ headers: {
21769
+ [name: string]: unknown;
21770
+ };
21771
+ content: {
21772
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21773
+ };
21774
+ };
21775
+ /** @description Caller is not a member of the team */
21776
+ 403: {
21777
+ headers: {
21778
+ [name: string]: unknown;
21779
+ };
21780
+ content: {
21781
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21782
+ };
21783
+ };
21784
+ /** @description Failed to build the team's freshness by-rule metrics */
21785
+ 500: {
21786
+ headers: {
21787
+ [name: string]: unknown;
21788
+ };
21789
+ content: {
21790
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21791
+ };
21792
+ };
21793
+ };
21794
+ };
21795
+ listFreshnessAudit: {
21796
+ parameters: {
21797
+ query?: {
21798
+ /** @description Page number (1-based). The upper bound is not a storage limit — it keeps page * limit inside the range the offset arithmetic can represent, so an absurd page is rejected rather than silently wrapping around to the first one. */
21799
+ page?: number;
21800
+ /** @description Entries per page */
21801
+ limit?: number;
21802
+ };
21803
+ header?: never;
21804
+ path: {
21805
+ /** @description Team identifier */
21806
+ team_id: string;
21807
+ };
21808
+ cookie?: never;
21809
+ };
21810
+ requestBody?: never;
21811
+ responses: {
21812
+ /** @description Audit log retrieved successfully */
21813
+ 200: {
21814
+ headers: {
21815
+ [name: string]: unknown;
21816
+ };
21817
+ content: {
21818
+ "application/json": components["schemas"]["FreshnessAuditListResponse"];
21819
+ };
21820
+ };
21821
+ /** @description Invalid team_id or query parameter */
21822
+ 400: {
21823
+ headers: {
21824
+ [name: string]: unknown;
21825
+ };
21826
+ content: {
21827
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21828
+ };
21829
+ };
21830
+ /** @description Authentication required */
21831
+ 401: {
21832
+ headers: {
21833
+ [name: string]: unknown;
21834
+ };
21835
+ content: {
21836
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21837
+ };
21838
+ };
21839
+ /** @description Caller is not a member of the team */
21840
+ 403: {
21841
+ headers: {
21842
+ [name: string]: unknown;
21843
+ };
21844
+ content: {
21845
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21846
+ };
21847
+ };
21848
+ /** @description Failed to list the team's freshness audit log */
21849
+ 500: {
21850
+ headers: {
21851
+ [name: string]: unknown;
21852
+ };
21853
+ content: {
21854
+ "application/problem+json": components["schemas"]["ErrorResponse"];
21855
+ };
21856
+ };
21857
+ };
21858
+ };
20616
21859
  listEmbeddingProvidersSettings: {
20617
21860
  parameters: {
20618
21861
  query?: never;