@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.
@@ -3599,6 +3599,317 @@ export type MetadataValuesResponse = {
3599
3599
  */
3600
3600
  truncated: boolean;
3601
3601
  };
3602
+ /**
3603
+ * One team's rule for when a resource becomes stale.
3604
+ */
3605
+ export type FreshnessRule = {
3606
+ /**
3607
+ * Rule identifier.
3608
+ */
3609
+ id: string;
3610
+ /**
3611
+ * Team the rule belongs to.
3612
+ */
3613
+ team_id: string;
3614
+ /**
3615
+ * Scopes the rule to a single project. `null` means the rule applies to EVERY project in the team.
3616
+ *
3617
+ */
3618
+ project_id: string | null;
3619
+ /**
3620
+ * Resource types the rule applies to. Never empty.
3621
+ */
3622
+ resource_types: Array<FreshnessRuleResourceType>;
3623
+ /**
3624
+ * Access mediums that count as "accessed" for this rule. An EMPTY array means ANY medium counts — it does not mean "no medium".
3625
+ *
3626
+ */
3627
+ mediums: Array<FreshnessRuleMedium>;
3628
+ /**
3629
+ * 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.
3630
+ *
3631
+ */
3632
+ threshold_days: number;
3633
+ /**
3634
+ * Whether evaluation runs apply this rule.
3635
+ */
3636
+ enabled: boolean;
3637
+ created_at: string;
3638
+ updated_at: string;
3639
+ };
3640
+ /**
3641
+ * A resource type a freshness rule can cover.
3642
+ */
3643
+ export type FreshnessRuleResourceType = 'artifact' | 'prompt' | 'blueprint' | 'memory';
3644
+ /**
3645
+ * 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.
3646
+ *
3647
+ */
3648
+ export type FreshnessRuleMedium = 'web' | 'cli' | 'mcp';
3649
+ /**
3650
+ * The team's freshness rules, oldest first.
3651
+ */
3652
+ export type FreshnessRuleListResponse = {
3653
+ /**
3654
+ * Freshness rules. Serializes as `[]` when the team has none, never `null`.
3655
+ */
3656
+ rules: Array<FreshnessRule>;
3657
+ };
3658
+ /**
3659
+ * Create a freshness rule.
3660
+ */
3661
+ export type CreateFreshnessRuleRequest = {
3662
+ /**
3663
+ * Scope to one project; omit or send `null` for every project in the team.
3664
+ */
3665
+ project_id?: string | null;
3666
+ resource_types: Array<FreshnessRuleResourceType>;
3667
+ /**
3668
+ * Omit or send an empty array to match any medium.
3669
+ */
3670
+ mediums?: Array<FreshnessRuleMedium>;
3671
+ threshold_days: number;
3672
+ /**
3673
+ * Defaults to true when omitted.
3674
+ */
3675
+ enabled?: boolean;
3676
+ };
3677
+ /**
3678
+ * Replace a freshness rule in full.
3679
+ */
3680
+ export type UpdateFreshnessRuleRequest = {
3681
+ /**
3682
+ * Scope to one project; `null` means every project in the team.
3683
+ */
3684
+ project_id: string | null;
3685
+ resource_types: Array<FreshnessRuleResourceType>;
3686
+ /**
3687
+ * An empty array matches any medium.
3688
+ */
3689
+ mediums: Array<FreshnessRuleMedium>;
3690
+ threshold_days: number;
3691
+ enabled: boolean;
3692
+ };
3693
+ /**
3694
+ * The tunable freshness-evaluation values, shared by the current settings and the defaults.
3695
+ */
3696
+ export type FreshnessSettingsValues = {
3697
+ /**
3698
+ * 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.
3699
+ *
3700
+ */
3701
+ interval_seconds: number;
3702
+ /**
3703
+ * Whether accessing or editing a stale resource clears its stale state.
3704
+ */
3705
+ reversibility_enabled: boolean;
3706
+ };
3707
+ /**
3708
+ * The freshness settings in effect for a team, with their provenance. A team that has never overridden them reports `source: instance` and the defaults.
3709
+ *
3710
+ */
3711
+ export type TeamFreshnessSettings = {
3712
+ /**
3713
+ * `team` when the team stores its own settings, `instance` when it inherits the defaults.
3714
+ *
3715
+ */
3716
+ source: 'instance' | 'team';
3717
+ interval_seconds: number;
3718
+ reversibility_enabled: boolean;
3719
+ /**
3720
+ * The values a DELETE would restore. Present on every read so clients can preview a reset without a second call.
3721
+ *
3722
+ */
3723
+ defaults: FreshnessSettingsValues;
3724
+ };
3725
+ /**
3726
+ * Override the team's freshness settings.
3727
+ */
3728
+ export type UpdateTeamFreshnessSettingsRequest = {
3729
+ /**
3730
+ * Rejected below 3600 (one hour) or above 31536000 (365 days).
3731
+ */
3732
+ interval_seconds: number;
3733
+ reversibility_enabled: boolean;
3734
+ };
3735
+ /**
3736
+ * The reporting window for a time-series metric. The options mirror the other analytics endpoints so one range selector drives every chart.
3737
+ *
3738
+ */
3739
+ export type FreshnessMetricsRange = '7d' | '14d' | '30d' | '60d' | '90d' | '180d';
3740
+ /**
3741
+ * One calendar day (UTC) of freshness activity, zero-filled: every day in the window is present even when nothing happened.
3742
+ *
3743
+ */
3744
+ export type FreshnessDailyStaleCount = {
3745
+ date: string;
3746
+ /**
3747
+ * Resources that became stale on this day.
3748
+ */
3749
+ marked: number;
3750
+ /**
3751
+ * Resources that stopped being stale on this day, for any reason.
3752
+ */
3753
+ cleared: number;
3754
+ /**
3755
+ * 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].
3756
+ *
3757
+ */
3758
+ stale_total: number;
3759
+ /**
3760
+ * 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.
3761
+ *
3762
+ */
3763
+ total: number;
3764
+ };
3765
+ export type FreshnessOverTimeMetricsData = {
3766
+ range: FreshnessMetricsRange;
3767
+ /**
3768
+ * Resources marked stale across the whole window.
3769
+ */
3770
+ total_marked: number;
3771
+ /**
3772
+ * Resources cleared across the whole window.
3773
+ */
3774
+ total_cleared: number;
3775
+ /**
3776
+ * One entry per day in the window, oldest first. Serializes as `[]`, never `null`.
3777
+ */
3778
+ counts: Array<FreshnessDailyStaleCount>;
3779
+ };
3780
+ export type FreshnessOverTimeMetricsResponse = {
3781
+ status: string;
3782
+ message: string;
3783
+ data: FreshnessOverTimeMetricsData;
3784
+ };
3785
+ /**
3786
+ * How many of one resource type are stale right now.
3787
+ */
3788
+ export type FreshnessTypeCount = {
3789
+ resource_type: FreshnessRuleResourceType;
3790
+ count: number;
3791
+ };
3792
+ export type FreshnessByTypeMetricsData = {
3793
+ /**
3794
+ * Total stale resources in the team, across every type.
3795
+ */
3796
+ total_stale: number;
3797
+ /**
3798
+ * 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`.
3799
+ *
3800
+ */
3801
+ counts: Array<FreshnessTypeCount>;
3802
+ };
3803
+ export type FreshnessByTypeMetricsResponse = {
3804
+ status: string;
3805
+ message: string;
3806
+ data: FreshnessByTypeMetricsData;
3807
+ };
3808
+ /**
3809
+ * 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.
3810
+ *
3811
+ */
3812
+ export type FreshnessProjectCount = {
3813
+ project_id: string;
3814
+ name: string;
3815
+ slug: string;
3816
+ count: number;
3817
+ };
3818
+ export type FreshnessByProjectMetricsData = {
3819
+ total_stale: number;
3820
+ /**
3821
+ * One entry per project in the team, including projects with nothing stale (0), ordered by count descending then name. Serializes as `[]`, never `null`.
3822
+ *
3823
+ */
3824
+ counts: Array<FreshnessProjectCount>;
3825
+ };
3826
+ export type FreshnessByProjectMetricsResponse = {
3827
+ status: string;
3828
+ message: string;
3829
+ data: FreshnessByProjectMetricsData;
3830
+ };
3831
+ /**
3832
+ * 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.
3833
+ *
3834
+ */
3835
+ export type FreshnessRuleImpact = {
3836
+ rule_id: string;
3837
+ /**
3838
+ * The project the rule is scoped to, or null for every project in the team.
3839
+ */
3840
+ project_id: string | null;
3841
+ resource_types: Array<FreshnessRuleResourceType>;
3842
+ threshold_days: number;
3843
+ /**
3844
+ * A disabled rule reports 0 — it is listed so its absence from the chart is not mistaken for deletion.
3845
+ */
3846
+ enabled: boolean;
3847
+ count: number;
3848
+ };
3849
+ export type FreshnessByRuleMetricsData = {
3850
+ /**
3851
+ * 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.
3852
+ *
3853
+ */
3854
+ total_stale: number;
3855
+ /**
3856
+ * One entry per rule the team has defined, including rules matching nothing, ordered by count descending then rule id. Serializes as `[]`, never `null`.
3857
+ *
3858
+ */
3859
+ counts: Array<FreshnessRuleImpact>;
3860
+ };
3861
+ export type FreshnessByRuleMetricsResponse = {
3862
+ status: string;
3863
+ message: string;
3864
+ data: FreshnessByRuleMetricsData;
3865
+ };
3866
+ /**
3867
+ * One recorded freshness transition. The log is append-only.
3868
+ */
3869
+ export type FreshnessAuditEntry = {
3870
+ id: string;
3871
+ resource_type: FreshnessRuleResourceType;
3872
+ resource_id: string;
3873
+ /**
3874
+ * 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.
3875
+ *
3876
+ */
3877
+ rule_id: string | null;
3878
+ /**
3879
+ * Whether the resource became stale or stopped being stale.
3880
+ */
3881
+ action: 'marked' | 'cleared';
3882
+ /**
3883
+ * What caused it — a scheduled evaluation, a read, or an edit.
3884
+ */
3885
+ reason: 'rule_run' | 'accessed' | 'edited';
3886
+ created_at: string;
3887
+ };
3888
+ /**
3889
+ * A page of the team's freshness audit log, newest first.
3890
+ */
3891
+ export type FreshnessAuditListResponse = {
3892
+ /**
3893
+ * Serializes as `[]` when the page is empty, never `null`.
3894
+ */
3895
+ entries: Array<FreshnessAuditEntry>;
3896
+ /**
3897
+ * Total entries in the team's log, ignoring pagination.
3898
+ */
3899
+ total_count: number;
3900
+ /**
3901
+ * Current page number (1-based)
3902
+ */
3903
+ page: number;
3904
+ /**
3905
+ * Number of entries per page
3906
+ */
3907
+ per_page: number;
3908
+ /**
3909
+ * Total number of pages
3910
+ */
3911
+ total_pages: number;
3912
+ };
3602
3913
  /**
3603
3914
  * 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.
3604
3915
  *
@@ -11962,6 +12273,481 @@ export type UpdateTeamSearchSettingsResponses = {
11962
12273
  200: TeamSearchSettings;
11963
12274
  };
11964
12275
  export type UpdateTeamSearchSettingsResponse = UpdateTeamSearchSettingsResponses[keyof UpdateTeamSearchSettingsResponses];
12276
+ export type ListFreshnessRulesData = {
12277
+ body?: never;
12278
+ path: {
12279
+ /**
12280
+ * Team identifier
12281
+ */
12282
+ team_id: string;
12283
+ };
12284
+ query?: never;
12285
+ url: '/api/v1/{team_id}/freshness/rules';
12286
+ };
12287
+ export type ListFreshnessRulesErrors = {
12288
+ /**
12289
+ * Invalid team_id
12290
+ */
12291
+ 400: ErrorResponse;
12292
+ /**
12293
+ * Authentication required
12294
+ */
12295
+ 401: ErrorResponse;
12296
+ /**
12297
+ * Caller is not a member of the team
12298
+ */
12299
+ 403: ErrorResponse;
12300
+ /**
12301
+ * Failed to list the team's freshness rules
12302
+ */
12303
+ 500: ErrorResponse;
12304
+ };
12305
+ export type ListFreshnessRulesError = ListFreshnessRulesErrors[keyof ListFreshnessRulesErrors];
12306
+ export type ListFreshnessRulesResponses = {
12307
+ /**
12308
+ * Rules retrieved successfully
12309
+ */
12310
+ 200: FreshnessRuleListResponse;
12311
+ };
12312
+ export type ListFreshnessRulesResponse = ListFreshnessRulesResponses[keyof ListFreshnessRulesResponses];
12313
+ export type CreateFreshnessRuleData = {
12314
+ body: CreateFreshnessRuleRequest;
12315
+ path: {
12316
+ /**
12317
+ * Team identifier
12318
+ */
12319
+ team_id: string;
12320
+ };
12321
+ query?: never;
12322
+ url: '/api/v1/{team_id}/freshness/rules';
12323
+ };
12324
+ export type CreateFreshnessRuleErrors = {
12325
+ /**
12326
+ * Invalid team_id or rule definition
12327
+ */
12328
+ 400: ErrorResponse;
12329
+ /**
12330
+ * Authentication required
12331
+ */
12332
+ 401: ErrorResponse;
12333
+ /**
12334
+ * Caller may not change the team's settings
12335
+ */
12336
+ 403: ErrorResponse;
12337
+ /**
12338
+ * Failed to create the freshness rule
12339
+ */
12340
+ 500: ErrorResponse;
12341
+ };
12342
+ export type CreateFreshnessRuleError = CreateFreshnessRuleErrors[keyof CreateFreshnessRuleErrors];
12343
+ export type CreateFreshnessRuleResponses = {
12344
+ /**
12345
+ * Rule created successfully
12346
+ */
12347
+ 201: FreshnessRule;
12348
+ };
12349
+ export type CreateFreshnessRuleResponse = CreateFreshnessRuleResponses[keyof CreateFreshnessRuleResponses];
12350
+ export type DeleteFreshnessRuleData = {
12351
+ body?: never;
12352
+ path: {
12353
+ /**
12354
+ * Team identifier
12355
+ */
12356
+ team_id: string;
12357
+ /**
12358
+ * Freshness rule identifier
12359
+ */
12360
+ rule_id: string;
12361
+ };
12362
+ query?: never;
12363
+ url: '/api/v1/{team_id}/freshness/rules/{rule_id}';
12364
+ };
12365
+ export type DeleteFreshnessRuleErrors = {
12366
+ /**
12367
+ * Invalid identifiers
12368
+ */
12369
+ 400: ErrorResponse;
12370
+ /**
12371
+ * Authentication required
12372
+ */
12373
+ 401: ErrorResponse;
12374
+ /**
12375
+ * Caller may not change the team's settings
12376
+ */
12377
+ 403: ErrorResponse;
12378
+ /**
12379
+ * No such rule in this team
12380
+ */
12381
+ 404: ErrorResponse;
12382
+ /**
12383
+ * Failed to delete the freshness rule
12384
+ */
12385
+ 500: ErrorResponse;
12386
+ };
12387
+ export type DeleteFreshnessRuleError = DeleteFreshnessRuleErrors[keyof DeleteFreshnessRuleErrors];
12388
+ export type DeleteFreshnessRuleResponses = {
12389
+ /**
12390
+ * Rule deleted (no content)
12391
+ */
12392
+ 204: void;
12393
+ };
12394
+ export type DeleteFreshnessRuleResponse = DeleteFreshnessRuleResponses[keyof DeleteFreshnessRuleResponses];
12395
+ export type UpdateFreshnessRuleData = {
12396
+ body: UpdateFreshnessRuleRequest;
12397
+ path: {
12398
+ /**
12399
+ * Team identifier
12400
+ */
12401
+ team_id: string;
12402
+ /**
12403
+ * Freshness rule identifier
12404
+ */
12405
+ rule_id: string;
12406
+ };
12407
+ query?: never;
12408
+ url: '/api/v1/{team_id}/freshness/rules/{rule_id}';
12409
+ };
12410
+ export type UpdateFreshnessRuleErrors = {
12411
+ /**
12412
+ * Invalid identifiers or rule definition
12413
+ */
12414
+ 400: ErrorResponse;
12415
+ /**
12416
+ * Authentication required
12417
+ */
12418
+ 401: ErrorResponse;
12419
+ /**
12420
+ * Caller may not change the team's settings
12421
+ */
12422
+ 403: ErrorResponse;
12423
+ /**
12424
+ * No such rule in this team
12425
+ */
12426
+ 404: ErrorResponse;
12427
+ /**
12428
+ * Failed to update the freshness rule
12429
+ */
12430
+ 500: ErrorResponse;
12431
+ };
12432
+ export type UpdateFreshnessRuleError = UpdateFreshnessRuleErrors[keyof UpdateFreshnessRuleErrors];
12433
+ export type UpdateFreshnessRuleResponses = {
12434
+ /**
12435
+ * Rule updated successfully
12436
+ */
12437
+ 200: FreshnessRule;
12438
+ };
12439
+ export type UpdateFreshnessRuleResponse = UpdateFreshnessRuleResponses[keyof UpdateFreshnessRuleResponses];
12440
+ export type ResetTeamFreshnessSettingsData = {
12441
+ body?: never;
12442
+ path: {
12443
+ /**
12444
+ * Team identifier
12445
+ */
12446
+ team_id: string;
12447
+ };
12448
+ query?: never;
12449
+ url: '/api/v1/{team_id}/settings/freshness';
12450
+ };
12451
+ export type ResetTeamFreshnessSettingsErrors = {
12452
+ /**
12453
+ * Invalid team_id
12454
+ */
12455
+ 400: ErrorResponse;
12456
+ /**
12457
+ * Authentication required
12458
+ */
12459
+ 401: ErrorResponse;
12460
+ /**
12461
+ * Caller may not change the team's settings
12462
+ */
12463
+ 403: ErrorResponse;
12464
+ /**
12465
+ * Failed to reset the team's freshness settings
12466
+ */
12467
+ 500: ErrorResponse;
12468
+ };
12469
+ export type ResetTeamFreshnessSettingsError = ResetTeamFreshnessSettingsErrors[keyof ResetTeamFreshnessSettingsErrors];
12470
+ export type ResetTeamFreshnessSettingsResponses = {
12471
+ /**
12472
+ * Settings reset (no content); the team now inherits the defaults
12473
+ */
12474
+ 204: void;
12475
+ };
12476
+ export type ResetTeamFreshnessSettingsResponse = ResetTeamFreshnessSettingsResponses[keyof ResetTeamFreshnessSettingsResponses];
12477
+ export type GetTeamFreshnessSettingsData = {
12478
+ body?: never;
12479
+ path: {
12480
+ /**
12481
+ * Team identifier
12482
+ */
12483
+ team_id: string;
12484
+ };
12485
+ query?: never;
12486
+ url: '/api/v1/{team_id}/settings/freshness';
12487
+ };
12488
+ export type GetTeamFreshnessSettingsErrors = {
12489
+ /**
12490
+ * Invalid team_id
12491
+ */
12492
+ 400: ErrorResponse;
12493
+ /**
12494
+ * Authentication required
12495
+ */
12496
+ 401: ErrorResponse;
12497
+ /**
12498
+ * Caller is not a member of the team
12499
+ */
12500
+ 403: ErrorResponse;
12501
+ /**
12502
+ * Failed to read the team's freshness settings
12503
+ */
12504
+ 500: ErrorResponse;
12505
+ };
12506
+ export type GetTeamFreshnessSettingsError = GetTeamFreshnessSettingsErrors[keyof GetTeamFreshnessSettingsErrors];
12507
+ export type GetTeamFreshnessSettingsResponses = {
12508
+ /**
12509
+ * Settings retrieved successfully
12510
+ */
12511
+ 200: TeamFreshnessSettings;
12512
+ };
12513
+ export type GetTeamFreshnessSettingsResponse = GetTeamFreshnessSettingsResponses[keyof GetTeamFreshnessSettingsResponses];
12514
+ export type UpdateTeamFreshnessSettingsData = {
12515
+ body: UpdateTeamFreshnessSettingsRequest;
12516
+ path: {
12517
+ /**
12518
+ * Team identifier
12519
+ */
12520
+ team_id: string;
12521
+ };
12522
+ query?: never;
12523
+ url: '/api/v1/{team_id}/settings/freshness';
12524
+ };
12525
+ export type UpdateTeamFreshnessSettingsErrors = {
12526
+ /**
12527
+ * Invalid team_id or settings
12528
+ */
12529
+ 400: ErrorResponse;
12530
+ /**
12531
+ * Authentication required
12532
+ */
12533
+ 401: ErrorResponse;
12534
+ /**
12535
+ * Caller may not change the team's settings
12536
+ */
12537
+ 403: ErrorResponse;
12538
+ /**
12539
+ * Failed to update the team's freshness settings
12540
+ */
12541
+ 500: ErrorResponse;
12542
+ };
12543
+ export type UpdateTeamFreshnessSettingsError = UpdateTeamFreshnessSettingsErrors[keyof UpdateTeamFreshnessSettingsErrors];
12544
+ export type UpdateTeamFreshnessSettingsResponses = {
12545
+ /**
12546
+ * Settings updated successfully
12547
+ */
12548
+ 200: TeamFreshnessSettings;
12549
+ };
12550
+ export type UpdateTeamFreshnessSettingsResponse = UpdateTeamFreshnessSettingsResponses[keyof UpdateTeamFreshnessSettingsResponses];
12551
+ export type GetFreshnessOverTimeMetricsData = {
12552
+ body?: never;
12553
+ path: {
12554
+ /**
12555
+ * Team identifier
12556
+ */
12557
+ team_id: string;
12558
+ };
12559
+ query?: {
12560
+ /**
12561
+ * The reporting window. Defaults to 30d.
12562
+ */
12563
+ range?: FreshnessMetricsRange;
12564
+ };
12565
+ url: '/api/v1/{team_id}/freshness/metrics/over-time';
12566
+ };
12567
+ export type GetFreshnessOverTimeMetricsErrors = {
12568
+ /**
12569
+ * Invalid team_id or query parameter
12570
+ */
12571
+ 400: ErrorResponse;
12572
+ /**
12573
+ * Authentication required
12574
+ */
12575
+ 401: ErrorResponse;
12576
+ /**
12577
+ * Caller is not a member of the team
12578
+ */
12579
+ 403: ErrorResponse;
12580
+ /**
12581
+ * Failed to build the team's freshness over-time metrics
12582
+ */
12583
+ 500: ErrorResponse;
12584
+ };
12585
+ export type GetFreshnessOverTimeMetricsError = GetFreshnessOverTimeMetricsErrors[keyof GetFreshnessOverTimeMetricsErrors];
12586
+ export type GetFreshnessOverTimeMetricsResponses = {
12587
+ /**
12588
+ * Metrics retrieved successfully
12589
+ */
12590
+ 200: FreshnessOverTimeMetricsResponse;
12591
+ };
12592
+ export type GetFreshnessOverTimeMetricsResponse = GetFreshnessOverTimeMetricsResponses[keyof GetFreshnessOverTimeMetricsResponses];
12593
+ export type GetFreshnessByTypeMetricsData = {
12594
+ body?: never;
12595
+ path: {
12596
+ /**
12597
+ * Team identifier
12598
+ */
12599
+ team_id: string;
12600
+ };
12601
+ query?: never;
12602
+ url: '/api/v1/{team_id}/freshness/metrics/by-type';
12603
+ };
12604
+ export type GetFreshnessByTypeMetricsErrors = {
12605
+ /**
12606
+ * Invalid team_id or query parameter
12607
+ */
12608
+ 400: ErrorResponse;
12609
+ /**
12610
+ * Authentication required
12611
+ */
12612
+ 401: ErrorResponse;
12613
+ /**
12614
+ * Caller is not a member of the team
12615
+ */
12616
+ 403: ErrorResponse;
12617
+ /**
12618
+ * Failed to build the team's freshness by-type metrics
12619
+ */
12620
+ 500: ErrorResponse;
12621
+ };
12622
+ export type GetFreshnessByTypeMetricsError = GetFreshnessByTypeMetricsErrors[keyof GetFreshnessByTypeMetricsErrors];
12623
+ export type GetFreshnessByTypeMetricsResponses = {
12624
+ /**
12625
+ * Metrics retrieved successfully
12626
+ */
12627
+ 200: FreshnessByTypeMetricsResponse;
12628
+ };
12629
+ export type GetFreshnessByTypeMetricsResponse = GetFreshnessByTypeMetricsResponses[keyof GetFreshnessByTypeMetricsResponses];
12630
+ export type GetFreshnessByProjectMetricsData = {
12631
+ body?: never;
12632
+ path: {
12633
+ /**
12634
+ * Team identifier
12635
+ */
12636
+ team_id: string;
12637
+ };
12638
+ query?: never;
12639
+ url: '/api/v1/{team_id}/freshness/metrics/by-project';
12640
+ };
12641
+ export type GetFreshnessByProjectMetricsErrors = {
12642
+ /**
12643
+ * Invalid team_id or query parameter
12644
+ */
12645
+ 400: ErrorResponse;
12646
+ /**
12647
+ * Authentication required
12648
+ */
12649
+ 401: ErrorResponse;
12650
+ /**
12651
+ * Caller is not a member of the team
12652
+ */
12653
+ 403: ErrorResponse;
12654
+ /**
12655
+ * Failed to build the team's freshness by-project metrics
12656
+ */
12657
+ 500: ErrorResponse;
12658
+ };
12659
+ export type GetFreshnessByProjectMetricsError = GetFreshnessByProjectMetricsErrors[keyof GetFreshnessByProjectMetricsErrors];
12660
+ export type GetFreshnessByProjectMetricsResponses = {
12661
+ /**
12662
+ * Metrics retrieved successfully
12663
+ */
12664
+ 200: FreshnessByProjectMetricsResponse;
12665
+ };
12666
+ export type GetFreshnessByProjectMetricsResponse = GetFreshnessByProjectMetricsResponses[keyof GetFreshnessByProjectMetricsResponses];
12667
+ export type GetFreshnessByRuleMetricsData = {
12668
+ body?: never;
12669
+ path: {
12670
+ /**
12671
+ * Team identifier
12672
+ */
12673
+ team_id: string;
12674
+ };
12675
+ query?: never;
12676
+ url: '/api/v1/{team_id}/freshness/metrics/by-rule';
12677
+ };
12678
+ export type GetFreshnessByRuleMetricsErrors = {
12679
+ /**
12680
+ * Invalid team_id or query parameter
12681
+ */
12682
+ 400: ErrorResponse;
12683
+ /**
12684
+ * Authentication required
12685
+ */
12686
+ 401: ErrorResponse;
12687
+ /**
12688
+ * Caller is not a member of the team
12689
+ */
12690
+ 403: ErrorResponse;
12691
+ /**
12692
+ * Failed to build the team's freshness by-rule metrics
12693
+ */
12694
+ 500: ErrorResponse;
12695
+ };
12696
+ export type GetFreshnessByRuleMetricsError = GetFreshnessByRuleMetricsErrors[keyof GetFreshnessByRuleMetricsErrors];
12697
+ export type GetFreshnessByRuleMetricsResponses = {
12698
+ /**
12699
+ * Metrics retrieved successfully
12700
+ */
12701
+ 200: FreshnessByRuleMetricsResponse;
12702
+ };
12703
+ export type GetFreshnessByRuleMetricsResponse = GetFreshnessByRuleMetricsResponses[keyof GetFreshnessByRuleMetricsResponses];
12704
+ export type ListFreshnessAuditData = {
12705
+ body?: never;
12706
+ path: {
12707
+ /**
12708
+ * Team identifier
12709
+ */
12710
+ team_id: string;
12711
+ };
12712
+ query?: {
12713
+ /**
12714
+ * 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.
12715
+ *
12716
+ */
12717
+ page?: number;
12718
+ /**
12719
+ * Entries per page
12720
+ */
12721
+ limit?: number;
12722
+ };
12723
+ url: '/api/v1/{team_id}/freshness/audit';
12724
+ };
12725
+ export type ListFreshnessAuditErrors = {
12726
+ /**
12727
+ * Invalid team_id or query parameter
12728
+ */
12729
+ 400: ErrorResponse;
12730
+ /**
12731
+ * Authentication required
12732
+ */
12733
+ 401: ErrorResponse;
12734
+ /**
12735
+ * Caller is not a member of the team
12736
+ */
12737
+ 403: ErrorResponse;
12738
+ /**
12739
+ * Failed to list the team's freshness audit log
12740
+ */
12741
+ 500: ErrorResponse;
12742
+ };
12743
+ export type ListFreshnessAuditError = ListFreshnessAuditErrors[keyof ListFreshnessAuditErrors];
12744
+ export type ListFreshnessAuditResponses = {
12745
+ /**
12746
+ * Audit log retrieved successfully
12747
+ */
12748
+ 200: FreshnessAuditListResponse;
12749
+ };
12750
+ export type ListFreshnessAuditResponse = ListFreshnessAuditResponses[keyof ListFreshnessAuditResponses];
11965
12751
  export type ListEmbeddingProvidersSettingsData = {
11966
12752
  body?: never;
11967
12753
  path: {