@vibexp/api-client 0.87.0 → 0.89.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
@@ -3340,6 +3340,181 @@ export interface paths {
3340
3340
  patch?: never;
3341
3341
  trace?: never;
3342
3342
  };
3343
+ "/api/v1/admin/saved-filters/{list}": {
3344
+ parameters: {
3345
+ query?: never;
3346
+ header?: never;
3347
+ path?: never;
3348
+ cookie?: never;
3349
+ };
3350
+ /**
3351
+ * Get the caller's saved filter presets for an admin list
3352
+ * @description Returns the calling instance admin's own named filter presets for one admin
3353
+ * list, plus the `version` to send back when replacing them. An admin with
3354
+ * nothing saved gets `presets: []` and `version: 0`. Presets are private to
3355
+ * the admin who saved them.
3356
+ * Instance-admin only; non-admin and unauthenticated requests receive 404.
3357
+ */
3358
+ get: operations["getAdminSavedFilters"];
3359
+ /**
3360
+ * Replace the caller's saved filter presets for an admin list
3361
+ * @description Atomically replaces the calling instance admin's presets for one admin
3362
+ * list. At most 20 presets; names are trimmed and must be 1–80 characters and
3363
+ * unique case-insensitively; ids must be unique (a missing id is assigned by
3364
+ * the server, a sent id is kept). The request's `version` must match the
3365
+ * stored one, otherwise nothing is saved and 409 is returned. A body carrying
3366
+ * an unknown field is rejected with 400.
3367
+ * Instance-admin only; non-admin and unauthenticated requests receive 404.
3368
+ */
3369
+ put: operations["replaceAdminSavedFilters"];
3370
+ post?: never;
3371
+ delete?: never;
3372
+ options?: never;
3373
+ head?: never;
3374
+ patch?: never;
3375
+ trace?: never;
3376
+ };
3377
+ "/api/v1/admin/users/export": {
3378
+ parameters: {
3379
+ query?: never;
3380
+ header?: never;
3381
+ path?: never;
3382
+ cookie?: never;
3383
+ };
3384
+ /**
3385
+ * Export instance users as CSV
3386
+ * @description Streams the full filtered `users` listing as a CSV download.
3387
+ *
3388
+ * Columns, in order: `id`, `email`, `name`, `idp_provider`, `status`, `created_at`, `team_count`, `project_count`, `prompt_count`, `memory_count`, `artifact_count`, `blueprint_count`, `agent_count`, `feed_count`, `feed_item_count`, `comment_count`, `attachment_count`, `total_resource_count`, `last_resource_created_at`.
3389
+ *
3390
+ * The export accepts exactly the filter and sort parameters of `listAdminUsers`
3391
+ * (no `page`/`limit`) and streams every matching row, in the list's order,
3392
+ * as RFC 4180 CSV (CRLF line endings, UTF-8, no BOM) with a header row.
3393
+ * Nested list fields are flattened; only counts are exported, never a
3394
+ * resource title or content.
3395
+ *
3396
+ * Output is capped at 50,000 data rows. `X-Export-Total-Count` is the size
3397
+ * of the filtered set and `X-Export-Truncated` is `true` when it exceeds the
3398
+ * cap; both come from a count taken just before streaming, so rows written
3399
+ * concurrently can make the streamed row count differ slightly. When the
3400
+ * export is truncated a final marker row is appended whose first cell reads
3401
+ * `# TRUNCATED: exported 50000 of <total> rows; narrow the filters` and whose
3402
+ * remaining cells are empty.
3403
+ *
3404
+ * Free-text cells (`email`, `name`, `idp_provider`) that begin with `=`, `+`, `-`, `@`, a tab or
3405
+ * a carriage return are prefixed with a single quote (`'`) to defuse
3406
+ * spreadsheet formula injection. Numeric, boolean, UUID and timestamp
3407
+ * (RFC 3339, UTC) cells are never altered.
3408
+ *
3409
+ * A failure after streaming has started aborts the connection, so a client
3410
+ * never receives a well-formed but silently short file. Each completed
3411
+ * export is recorded as an `admin_users_exported` activity of the acting admin.
3412
+ *
3413
+ * Instance-admin only; non-admin and unauthenticated requests receive 404.
3414
+ */
3415
+ get: operations["exportAdminUsers"];
3416
+ put?: never;
3417
+ post?: never;
3418
+ delete?: never;
3419
+ options?: never;
3420
+ head?: never;
3421
+ patch?: never;
3422
+ trace?: never;
3423
+ };
3424
+ "/api/v1/admin/teams/export": {
3425
+ parameters: {
3426
+ query?: never;
3427
+ header?: never;
3428
+ path?: never;
3429
+ cookie?: never;
3430
+ };
3431
+ /**
3432
+ * Export instance teams as CSV
3433
+ * @description Streams the full filtered `teams` listing as a CSV download.
3434
+ *
3435
+ * Columns, in order: `id`, `name`, `slug`, `is_personal`, `owner_id`, `owner_email`, `owner_name`, `member_count`, `owner_count`, `admin_count`, `project_count`, `prompt_count`, `memory_count`, `artifact_count`, `blueprint_count`, `agent_count`, `feed_count`, `feed_item_count`, `comment_count`, `attachment_count`, `total_resource_count`, `embedding_configured`, `llm_configured`, `ai_summary_enabled`, `email_configured`, `github_configured`, `search_settings_customized`, `freshness_enabled`, `created_at`.
3436
+ *
3437
+ * The export accepts exactly the filter and sort parameters of `listAdminTeams`
3438
+ * (no `page`/`limit`) and streams every matching row, in the list's order,
3439
+ * as RFC 4180 CSV (CRLF line endings, UTF-8, no BOM) with a header row.
3440
+ * Nested list fields are flattened; only counts are exported, never a
3441
+ * resource title or content.
3442
+ *
3443
+ * Output is capped at 50,000 data rows. `X-Export-Total-Count` is the size
3444
+ * of the filtered set and `X-Export-Truncated` is `true` when it exceeds the
3445
+ * cap; both come from a count taken just before streaming, so rows written
3446
+ * concurrently can make the streamed row count differ slightly. When the
3447
+ * export is truncated a final marker row is appended whose first cell reads
3448
+ * `# TRUNCATED: exported 50000 of <total> rows; narrow the filters` and whose
3449
+ * remaining cells are empty.
3450
+ *
3451
+ * Free-text cells (`name`, `slug`, `owner_email`, `owner_name`) that begin with `=`, `+`, `-`, `@`, a tab or
3452
+ * a carriage return are prefixed with a single quote (`'`) to defuse
3453
+ * spreadsheet formula injection. Numeric, boolean, UUID and timestamp
3454
+ * (RFC 3339, UTC) cells are never altered.
3455
+ *
3456
+ * A failure after streaming has started aborts the connection, so a client
3457
+ * never receives a well-formed but silently short file. Each completed
3458
+ * export is recorded as an `admin_teams_exported` activity of the acting admin.
3459
+ *
3460
+ * Instance-admin only; non-admin and unauthenticated requests receive 404.
3461
+ */
3462
+ get: operations["exportAdminTeams"];
3463
+ put?: never;
3464
+ post?: never;
3465
+ delete?: never;
3466
+ options?: never;
3467
+ head?: never;
3468
+ patch?: never;
3469
+ trace?: never;
3470
+ };
3471
+ "/api/v1/admin/projects/export": {
3472
+ parameters: {
3473
+ query?: never;
3474
+ header?: never;
3475
+ path?: never;
3476
+ cookie?: never;
3477
+ };
3478
+ /**
3479
+ * Export instance projects as CSV
3480
+ * @description Streams the full filtered `projects` listing as a CSV download.
3481
+ *
3482
+ * Columns, in order: `id`, `name`, `slug`, `team_id`, `team_name`, `team_slug`, `owner_id`, `owner_email`, `owner_name`, `prompt_count`, `memory_count`, `artifact_count`, `blueprint_count`, `feed_item_count`, `total_resource_count`, `last_resource_created_at`, `created_at`, `updated_at`.
3483
+ *
3484
+ * The export accepts exactly the filter and sort parameters of `listAdminProjects`
3485
+ * (no `page`/`limit`) and streams every matching row, in the list's order,
3486
+ * as RFC 4180 CSV (CRLF line endings, UTF-8, no BOM) with a header row.
3487
+ * Nested list fields are flattened; only counts are exported, never a
3488
+ * resource title or content.
3489
+ *
3490
+ * Output is capped at 50,000 data rows. `X-Export-Total-Count` is the size
3491
+ * of the filtered set and `X-Export-Truncated` is `true` when it exceeds the
3492
+ * cap; both come from a count taken just before streaming, so rows written
3493
+ * concurrently can make the streamed row count differ slightly. When the
3494
+ * export is truncated a final marker row is appended whose first cell reads
3495
+ * `# TRUNCATED: exported 50000 of <total> rows; narrow the filters` and whose
3496
+ * remaining cells are empty.
3497
+ *
3498
+ * Free-text cells (`name`, `slug`, `team_name`, `team_slug`, `owner_email`, `owner_name`) that begin with `=`, `+`, `-`, `@`, a tab or
3499
+ * a carriage return are prefixed with a single quote (`'`) to defuse
3500
+ * spreadsheet formula injection. Numeric, boolean, UUID and timestamp
3501
+ * (RFC 3339, UTC) cells are never altered.
3502
+ *
3503
+ * A failure after streaming has started aborts the connection, so a client
3504
+ * never receives a well-formed but silently short file. Each completed
3505
+ * export is recorded as an `admin_projects_exported` activity of the acting admin.
3506
+ *
3507
+ * Instance-admin only; non-admin and unauthenticated requests receive 404.
3508
+ */
3509
+ get: operations["exportAdminProjects"];
3510
+ put?: never;
3511
+ post?: never;
3512
+ delete?: never;
3513
+ options?: never;
3514
+ head?: never;
3515
+ patch?: never;
3516
+ trace?: never;
3517
+ };
3343
3518
  "/api/v1/{team_id}/comments": {
3344
3519
  parameters: {
3345
3520
  query?: never;
@@ -12214,6 +12389,88 @@ export interface components {
12214
12389
  /** @description Rules with no project scope, which apply to every project of the team. `[]` when there are none. */
12215
12390
  team_wide_rules: components["schemas"]["AdminFreshnessRule"][];
12216
12391
  };
12392
+ /**
12393
+ * @description The admin list a set of saved filter presets belongs to.
12394
+ * @enum {string}
12395
+ */
12396
+ AdminSavedFilterListName: "users" | "teams" | "projects";
12397
+ /**
12398
+ * @description The list's filter state as URL query parameters (parameter name → value).
12399
+ * Stored as given and never executed server-side; the client owns its meaning.
12400
+ * At most 40 keys, each matching `^[a-z0-9_]{1,64}$`, each value at most 512
12401
+ * characters.
12402
+ * @example {
12403
+ * "status": "suspended",
12404
+ * "sort_by": "created_at"
12405
+ * }
12406
+ */
12407
+ AdminSavedFilterQuery: {
12408
+ [key: string]: string;
12409
+ };
12410
+ /** @description One named filter preset saved by an instance admin. */
12411
+ AdminSavedFilterPreset: {
12412
+ /**
12413
+ * Format: uuid
12414
+ * @description Stable preset id. Kept across renames.
12415
+ */
12416
+ id: string;
12417
+ /**
12418
+ * @description Display name, unique (case-insensitively) within the list.
12419
+ * @example Dormant teams
12420
+ */
12421
+ name: string;
12422
+ query: components["schemas"]["AdminSavedFilterQuery"];
12423
+ };
12424
+ /**
12425
+ * @description A preset as sent in a replace request. Omit `id` for a new preset and the
12426
+ * server assigns one; send the existing `id` to keep it (e.g. on rename).
12427
+ */
12428
+ AdminSavedFilterPresetInput: {
12429
+ /**
12430
+ * Format: uuid
12431
+ * @description Existing preset id to keep; omitted for a new preset.
12432
+ */
12433
+ id?: string;
12434
+ /**
12435
+ * @description Display name. Surrounding whitespace is trimmed; must be unique
12436
+ * (case-insensitively) within the list.
12437
+ * @example Dormant teams
12438
+ */
12439
+ name: string;
12440
+ query: components["schemas"]["AdminSavedFilterQuery"];
12441
+ };
12442
+ /**
12443
+ * @description The calling instance admin's saved filter presets for one admin list
12444
+ * (GET/PUT /api/v1/admin/saved-filters/{list}). Presets are private to the
12445
+ * admin who saved them.
12446
+ */
12447
+ AdminSavedFilters: {
12448
+ list: components["schemas"]["AdminSavedFilterListName"];
12449
+ /** @description The presets in their saved order. `[]` when there are none. */
12450
+ presets: components["schemas"]["AdminSavedFilterPreset"][];
12451
+ /**
12452
+ * Format: int64
12453
+ * @description Optimistic-lock version of the admin's preferences record. `0` when
12454
+ * nothing has been saved yet. Send it back unchanged in the next replace
12455
+ * request; it is shared with the user's other preferences, so a change
12456
+ * made elsewhere also advances it.
12457
+ */
12458
+ version: number;
12459
+ };
12460
+ /**
12461
+ * @description Replaces the whole preset list for one admin list. Renaming and deleting are
12462
+ * done by sending the edited list.
12463
+ */
12464
+ AdminSavedFiltersReplaceRequest: {
12465
+ /** @description The complete new preset list, in order (at most 20). */
12466
+ presets: components["schemas"]["AdminSavedFilterPresetInput"][];
12467
+ /**
12468
+ * Format: int64
12469
+ * @description The `version` last read. A stale value is rejected with 409 and nothing
12470
+ * is saved.
12471
+ */
12472
+ version: number;
12473
+ };
12217
12474
  ProjectResponse: components["schemas"]["Project"] & {
12218
12475
  /**
12219
12476
  * @description Whether the project's git URL matches a repository accessible via the team's GitHub App installation
@@ -23301,6 +23558,499 @@ export interface operations {
23301
23558
  };
23302
23559
  };
23303
23560
  };
23561
+ getAdminSavedFilters: {
23562
+ parameters: {
23563
+ query?: never;
23564
+ header?: never;
23565
+ path: {
23566
+ /** @description Which admin list the presets belong to. */
23567
+ list: components["schemas"]["AdminSavedFilterListName"];
23568
+ };
23569
+ cookie?: never;
23570
+ };
23571
+ requestBody?: never;
23572
+ responses: {
23573
+ /** @description The caller's presets for this list */
23574
+ 200: {
23575
+ headers: {
23576
+ [name: string]: unknown;
23577
+ };
23578
+ content: {
23579
+ "application/json": components["schemas"]["AdminSavedFilters"];
23580
+ };
23581
+ };
23582
+ /** @description Bad request — unknown list name */
23583
+ 400: {
23584
+ headers: {
23585
+ [name: string]: unknown;
23586
+ };
23587
+ content: {
23588
+ "application/problem+json": components["schemas"]["ErrorResponse"];
23589
+ };
23590
+ };
23591
+ /** @description Not found — the caller is not an instance admin */
23592
+ 404: {
23593
+ headers: {
23594
+ [name: string]: unknown;
23595
+ };
23596
+ content: {
23597
+ "application/problem+json": components["schemas"]["ErrorResponse"];
23598
+ };
23599
+ };
23600
+ /** @description Internal server error */
23601
+ 500: {
23602
+ headers: {
23603
+ [name: string]: unknown;
23604
+ };
23605
+ content: {
23606
+ "application/problem+json": components["schemas"]["ErrorResponse"];
23607
+ };
23608
+ };
23609
+ };
23610
+ };
23611
+ replaceAdminSavedFilters: {
23612
+ parameters: {
23613
+ query?: never;
23614
+ header?: never;
23615
+ path: {
23616
+ /** @description Which admin list the presets belong to. */
23617
+ list: components["schemas"]["AdminSavedFilterListName"];
23618
+ };
23619
+ cookie?: never;
23620
+ };
23621
+ requestBody: {
23622
+ content: {
23623
+ "application/json": components["schemas"]["AdminSavedFiltersReplaceRequest"];
23624
+ };
23625
+ };
23626
+ responses: {
23627
+ /** @description The saved presets and the new version */
23628
+ 200: {
23629
+ headers: {
23630
+ [name: string]: unknown;
23631
+ };
23632
+ content: {
23633
+ "application/json": components["schemas"]["AdminSavedFilters"];
23634
+ };
23635
+ };
23636
+ /**
23637
+ * @description Bad request — unknown list name, an invalid preset (over the cap,
23638
+ * duplicate or out-of-range name, duplicate id, invalid query key or
23639
+ * value), or a body carrying an unknown field
23640
+ */
23641
+ 400: {
23642
+ headers: {
23643
+ [name: string]: unknown;
23644
+ };
23645
+ content: {
23646
+ "application/problem+json": components["schemas"]["ErrorResponse"];
23647
+ };
23648
+ };
23649
+ /** @description Not found — the caller is not an instance admin */
23650
+ 404: {
23651
+ headers: {
23652
+ [name: string]: unknown;
23653
+ };
23654
+ content: {
23655
+ "application/problem+json": components["schemas"]["ErrorResponse"];
23656
+ };
23657
+ };
23658
+ /** @description Conflict — the presets were changed elsewhere (stale `version`); nothing was saved */
23659
+ 409: {
23660
+ headers: {
23661
+ [name: string]: unknown;
23662
+ };
23663
+ content: {
23664
+ "application/problem+json": components["schemas"]["ErrorResponse"];
23665
+ };
23666
+ };
23667
+ /** @description Internal server error */
23668
+ 500: {
23669
+ headers: {
23670
+ [name: string]: unknown;
23671
+ };
23672
+ content: {
23673
+ "application/problem+json": components["schemas"]["ErrorResponse"];
23674
+ };
23675
+ };
23676
+ };
23677
+ };
23678
+ exportAdminUsers: {
23679
+ parameters: {
23680
+ query?: {
23681
+ /** @description Case-insensitive substring match over the user's email and name. */
23682
+ search?: string;
23683
+ /** @description Exact match on the user's identity-provider name (e.g. "google", "oidc"). */
23684
+ idp_provider?: string;
23685
+ /** @description Only users created at or after this instant (inclusive). */
23686
+ created_from?: string;
23687
+ /** @description Only users created at or before this instant (inclusive). */
23688
+ created_to?: string;
23689
+ /** @description Narrow to accounts in this lifecycle state. */
23690
+ status?: "active" | "suspended";
23691
+ /** @description Only users with at least this many teams the user belongs to (inclusive). */
23692
+ team_count_min?: number;
23693
+ /** @description Only users with at most this many teams the user belongs to (inclusive). */
23694
+ team_count_max?: number;
23695
+ /** @description Only users with at least this many projects the user created (inclusive). */
23696
+ project_count_min?: number;
23697
+ /** @description Only users with at most this many projects the user created (inclusive). */
23698
+ project_count_max?: number;
23699
+ /** @description Only users with at least this many prompts the user authored (inclusive). */
23700
+ prompt_count_min?: number;
23701
+ /** @description Only users with at most this many prompts the user authored (inclusive). */
23702
+ prompt_count_max?: number;
23703
+ /** @description Only users with at least this many memories the user authored (inclusive). */
23704
+ memory_count_min?: number;
23705
+ /** @description Only users with at most this many memories the user authored (inclusive). */
23706
+ memory_count_max?: number;
23707
+ /** @description Only users with at least this many artifacts the user authored (inclusive). */
23708
+ artifact_count_min?: number;
23709
+ /** @description Only users with at most this many artifacts the user authored (inclusive). */
23710
+ artifact_count_max?: number;
23711
+ /** @description Only users with at least this many blueprints the user authored (inclusive). */
23712
+ blueprint_count_min?: number;
23713
+ /** @description Only users with at most this many blueprints the user authored (inclusive). */
23714
+ blueprint_count_max?: number;
23715
+ /** @description Only users with at least this many agents the user created (inclusive). */
23716
+ agent_count_min?: number;
23717
+ /** @description Only users with at most this many agents the user created (inclusive). */
23718
+ agent_count_max?: number;
23719
+ /** @description Only users with at least this many feeds the user created (inclusive). */
23720
+ feed_count_min?: number;
23721
+ /** @description Only users with at most this many feeds the user created (inclusive). */
23722
+ feed_count_max?: number;
23723
+ /** @description Only users with at least this many feed items the user posted (inclusive). */
23724
+ feed_item_count_min?: number;
23725
+ /** @description Only users with at most this many feed items the user posted (inclusive). */
23726
+ feed_item_count_max?: number;
23727
+ /** @description Only users with at least this many comments the user wrote (inclusive). */
23728
+ comment_count_min?: number;
23729
+ /** @description Only users with at most this many comments the user wrote (inclusive). */
23730
+ comment_count_max?: number;
23731
+ /** @description Only users with at least this many attachments the user uploaded (inclusive). */
23732
+ attachment_count_min?: number;
23733
+ /** @description Only users with at most this many attachments the user uploaded (inclusive). */
23734
+ attachment_count_max?: number;
23735
+ /** @description Only users with at least this many resources the user authored across all nine types (the sum of resource_counts) (inclusive). */
23736
+ total_resource_count_min?: number;
23737
+ /** @description Only users with at most this many resources the user authored across all nine types (the sum of resource_counts) (inclusive). */
23738
+ total_resource_count_max?: number;
23739
+ /**
23740
+ * @description Only users whose most recent resource (any of the nine types) was created
23741
+ * at or after this instant (inclusive). Users with no resources never match.
23742
+ */
23743
+ last_resource_created_from?: string;
23744
+ /**
23745
+ * @description Only users whose most recent resource (any of the nine types) was created
23746
+ * at or before this instant (inclusive). Users with no resources never match.
23747
+ */
23748
+ last_resource_created_to?: string;
23749
+ /**
23750
+ * @description Column to sort by. Ties are always broken by user id so paging is stable.
23751
+ * Sorting by last_resource_created_at places users with no resources last
23752
+ * in both directions.
23753
+ */
23754
+ sort_by?: "created_at" | "email" | "name" | "team_count" | "project_count" | "prompt_count" | "memory_count" | "artifact_count" | "blueprint_count" | "agent_count" | "feed_count" | "feed_item_count" | "comment_count" | "attachment_count" | "total_resource_count" | "last_resource_created_at";
23755
+ /** @description Sort direction. */
23756
+ sort_order?: "asc" | "desc";
23757
+ };
23758
+ header?: never;
23759
+ path?: never;
23760
+ cookie?: never;
23761
+ };
23762
+ requestBody?: never;
23763
+ responses: {
23764
+ /** @description CSV of every matching row (capped at 50,000) */
23765
+ 200: {
23766
+ headers: {
23767
+ /** @description `attachment; filename="admin-users-YYYYMMDD.csv"` (UTC date) */
23768
+ "Content-Disposition": string;
23769
+ /** @description Number of rows in the filtered set, before the cap */
23770
+ "X-Export-Total-Count": number;
23771
+ /** @description Whether the filtered set exceeded the 50,000-row cap */
23772
+ "X-Export-Truncated": boolean;
23773
+ [name: string]: unknown;
23774
+ };
23775
+ content: {
23776
+ "text/csv": string;
23777
+ };
23778
+ };
23779
+ /** @description Bad request — a query parameter is malformed or outside its enum, a count bound is negative, or a min/max or from/to pair is inverted. Nothing is streamed. */
23780
+ 400: {
23781
+ headers: {
23782
+ [name: string]: unknown;
23783
+ };
23784
+ content: {
23785
+ "application/problem+json": components["schemas"]["ErrorResponse"];
23786
+ };
23787
+ };
23788
+ /** @description Not found — the caller is not an instance admin (surface not advertised) */
23789
+ 404: {
23790
+ headers: {
23791
+ [name: string]: unknown;
23792
+ };
23793
+ content: {
23794
+ "application/problem+json": components["schemas"]["ErrorResponse"];
23795
+ };
23796
+ };
23797
+ /** @description Internal server error (before streaming started) */
23798
+ 500: {
23799
+ headers: {
23800
+ [name: string]: unknown;
23801
+ };
23802
+ content: {
23803
+ "application/problem+json": components["schemas"]["ErrorResponse"];
23804
+ };
23805
+ };
23806
+ };
23807
+ };
23808
+ exportAdminTeams: {
23809
+ parameters: {
23810
+ query?: {
23811
+ /** @description Case-insensitive substring match over the team name, team slug, and the owner's email. */
23812
+ search?: string;
23813
+ /** @description Narrow to personal workspaces (true) or shared team workspaces (false). */
23814
+ is_personal?: boolean;
23815
+ /** @description Only teams created at or after this instant (inclusive). */
23816
+ created_from?: string;
23817
+ /** @description Only teams created at or before this instant (inclusive). */
23818
+ created_to?: string;
23819
+ /** @description Only teams with at least this many members (inclusive). */
23820
+ member_count_min?: number;
23821
+ /** @description Only teams with at most this many members (inclusive). */
23822
+ member_count_max?: number;
23823
+ /** @description Only teams with at least this many members holding the owner role (always 1 by application invariant; any other value is integrity drift) (inclusive). */
23824
+ owner_count_min?: number;
23825
+ /** @description Only teams with at most this many members holding the owner role (always 1 by application invariant; any other value is integrity drift) (inclusive). */
23826
+ owner_count_max?: number;
23827
+ /** @description Only teams with at least this many members holding the admin role (inclusive). */
23828
+ admin_count_min?: number;
23829
+ /** @description Only teams with at most this many members holding the admin role (inclusive). */
23830
+ admin_count_max?: number;
23831
+ /** @description Only teams with at least this many projects in the team (inclusive). */
23832
+ project_count_min?: number;
23833
+ /** @description Only teams with at most this many projects in the team (inclusive). */
23834
+ project_count_max?: number;
23835
+ /** @description Only teams with at least this many prompts in the team (inclusive). */
23836
+ prompt_count_min?: number;
23837
+ /** @description Only teams with at most this many prompts in the team (inclusive). */
23838
+ prompt_count_max?: number;
23839
+ /** @description Only teams with at least this many memories in the team (inclusive). */
23840
+ memory_count_min?: number;
23841
+ /** @description Only teams with at most this many memories in the team (inclusive). */
23842
+ memory_count_max?: number;
23843
+ /** @description Only teams with at least this many artifacts in the team (inclusive). */
23844
+ artifact_count_min?: number;
23845
+ /** @description Only teams with at most this many artifacts in the team (inclusive). */
23846
+ artifact_count_max?: number;
23847
+ /** @description Only teams with at least this many blueprints in the team (inclusive). */
23848
+ blueprint_count_min?: number;
23849
+ /** @description Only teams with at most this many blueprints in the team (inclusive). */
23850
+ blueprint_count_max?: number;
23851
+ /** @description Only teams with at least this many agents in the team (inclusive). */
23852
+ agent_count_min?: number;
23853
+ /** @description Only teams with at most this many agents in the team (inclusive). */
23854
+ agent_count_max?: number;
23855
+ /** @description Only teams with at least this many feeds in the team (inclusive). */
23856
+ feed_count_min?: number;
23857
+ /** @description Only teams with at most this many feeds in the team (inclusive). */
23858
+ feed_count_max?: number;
23859
+ /** @description Only teams with at least this many feed items in the team (inclusive). */
23860
+ feed_item_count_min?: number;
23861
+ /** @description Only teams with at most this many feed items in the team (inclusive). */
23862
+ feed_item_count_max?: number;
23863
+ /** @description Only teams with at least this many comments in the team (inclusive). */
23864
+ comment_count_min?: number;
23865
+ /** @description Only teams with at most this many comments in the team (inclusive). */
23866
+ comment_count_max?: number;
23867
+ /** @description Only teams with at least this many attachments in the team (inclusive). */
23868
+ attachment_count_min?: number;
23869
+ /** @description Only teams with at most this many attachments in the team (inclusive). */
23870
+ attachment_count_max?: number;
23871
+ /** @description Only teams with at least this many resources in the team across all nine types (the sum of resource_counts) (inclusive). */
23872
+ total_resource_count_min?: number;
23873
+ /** @description Only teams with at most this many resources in the team across all nine types (the sum of resource_counts) (inclusive). */
23874
+ total_resource_count_max?: number;
23875
+ /** @description Case-insensitive exact match on the team owner's email (the user referenced by the team's owner). For substring matching use `search`. */
23876
+ owner_email?: string;
23877
+ /** @description true = the team has at least one embedding provider of its own; false = it does not; omit = any. Instance-level fallback configuration never counts. */
23878
+ embedding_configured?: boolean;
23879
+ /** @description true = the team has at least one LLM model provider of its own; false = it does not; omit = any. Instance-level fallback configuration never counts. */
23880
+ llm_configured?: boolean;
23881
+ /** @description true = the team has its own AI summary settings with summaries enabled; false = it does not; omit = any. Instance-level fallback configuration never counts. */
23882
+ ai_summary_enabled?: boolean;
23883
+ /** @description true = the team has its own email provider (regardless of its delivery health); false = it does not; omit = any. Instance-level fallback configuration never counts. */
23884
+ email_configured?: boolean;
23885
+ /** @description true = the team has its own GitHub App configuration or at least one GitHub App installation (suspended installations included); false = it does not; omit = any. Instance-level fallback configuration never counts. */
23886
+ github_configured?: boolean;
23887
+ /** @description true = the team has its own search settings; false = it does not; omit = any. Instance-level fallback configuration never counts. */
23888
+ search_settings_customized?: boolean;
23889
+ /** @description true = the team has at least one enabled freshness rule; false = it does not; omit = any. Instance-level fallback configuration never counts. */
23890
+ freshness_enabled?: boolean;
23891
+ /** @description Column to sort by. Ties are always broken by team id so paging is stable. */
23892
+ sort_by?: "created_at" | "name" | "member_count" | "owner_count" | "admin_count" | "project_count" | "prompt_count" | "memory_count" | "artifact_count" | "blueprint_count" | "agent_count" | "feed_count" | "feed_item_count" | "comment_count" | "attachment_count" | "total_resource_count";
23893
+ /** @description Sort direction. */
23894
+ sort_order?: "asc" | "desc";
23895
+ };
23896
+ header?: never;
23897
+ path?: never;
23898
+ cookie?: never;
23899
+ };
23900
+ requestBody?: never;
23901
+ responses: {
23902
+ /** @description CSV of every matching row (capped at 50,000) */
23903
+ 200: {
23904
+ headers: {
23905
+ /** @description `attachment; filename="admin-teams-YYYYMMDD.csv"` (UTC date) */
23906
+ "Content-Disposition": string;
23907
+ /** @description Number of rows in the filtered set, before the cap */
23908
+ "X-Export-Total-Count": number;
23909
+ /** @description Whether the filtered set exceeded the 50,000-row cap */
23910
+ "X-Export-Truncated": boolean;
23911
+ [name: string]: unknown;
23912
+ };
23913
+ content: {
23914
+ "text/csv": string;
23915
+ };
23916
+ };
23917
+ /** @description Bad request — a query parameter is malformed or outside its enum, a count bound is negative, or a min/max or from/to pair is inverted. Nothing is streamed. */
23918
+ 400: {
23919
+ headers: {
23920
+ [name: string]: unknown;
23921
+ };
23922
+ content: {
23923
+ "application/problem+json": components["schemas"]["ErrorResponse"];
23924
+ };
23925
+ };
23926
+ /** @description Not found — the caller is not an instance admin (surface not advertised) */
23927
+ 404: {
23928
+ headers: {
23929
+ [name: string]: unknown;
23930
+ };
23931
+ content: {
23932
+ "application/problem+json": components["schemas"]["ErrorResponse"];
23933
+ };
23934
+ };
23935
+ /** @description Internal server error (before streaming started) */
23936
+ 500: {
23937
+ headers: {
23938
+ [name: string]: unknown;
23939
+ };
23940
+ content: {
23941
+ "application/problem+json": components["schemas"]["ErrorResponse"];
23942
+ };
23943
+ };
23944
+ };
23945
+ };
23946
+ exportAdminProjects: {
23947
+ parameters: {
23948
+ query?: {
23949
+ /** @description Case-insensitive substring match over the project name and slug. */
23950
+ search?: string;
23951
+ /** @description Narrow to projects belonging to one team. */
23952
+ team_id?: string;
23953
+ /** @description Only projects created at or after this instant (inclusive). */
23954
+ created_from?: string;
23955
+ /** @description Only projects created at or before this instant (inclusive). */
23956
+ created_to?: string;
23957
+ /** @description Only projects with at least this many prompts in the project (inclusive). */
23958
+ prompt_count_min?: number;
23959
+ /** @description Only projects with at most this many prompts in the project (inclusive). */
23960
+ prompt_count_max?: number;
23961
+ /** @description Only projects with at least this many memories in the project (inclusive). */
23962
+ memory_count_min?: number;
23963
+ /** @description Only projects with at most this many memories in the project (inclusive). */
23964
+ memory_count_max?: number;
23965
+ /** @description Only projects with at least this many artifacts in the project (inclusive). */
23966
+ artifact_count_min?: number;
23967
+ /** @description Only projects with at most this many artifacts in the project (inclusive). */
23968
+ artifact_count_max?: number;
23969
+ /** @description Only projects with at least this many blueprints in the project (inclusive). */
23970
+ blueprint_count_min?: number;
23971
+ /** @description Only projects with at most this many blueprints in the project (inclusive). */
23972
+ blueprint_count_max?: number;
23973
+ /** @description Only projects with at least this many feed items in the project (inclusive). */
23974
+ feed_item_count_min?: number;
23975
+ /** @description Only projects with at most this many feed items in the project (inclusive). */
23976
+ feed_item_count_max?: number;
23977
+ /** @description Only projects with at least this many project-scoped resources in the project (inclusive). The total is the sum of the five project-scoped types. */
23978
+ total_resource_count_min?: number;
23979
+ /** @description Only projects with at most this many project-scoped resources in the project (inclusive). The total is the sum of the five project-scoped types. */
23980
+ total_resource_count_max?: number;
23981
+ /** @description Case-insensitive exact match on the email of the project's creator (`projects.user_id`, the `owner` field), not the owning team's owner. For substring matching on name/slug use `search`. */
23982
+ owner_email?: string;
23983
+ /**
23984
+ * @description Only projects whose most recent project-scoped resource (any of the five
23985
+ * types) was created at or after this instant (inclusive). Projects with
23986
+ * no resources never match.
23987
+ */
23988
+ last_resource_created_from?: string;
23989
+ /**
23990
+ * @description Only projects whose most recent project-scoped resource (any of the five
23991
+ * types) was created at or before this instant (inclusive). Projects with
23992
+ * no resources never match.
23993
+ */
23994
+ last_resource_created_to?: string;
23995
+ /**
23996
+ * @description Column to sort by. Ties are always broken by project id so paging is stable.
23997
+ * Sorting by last_resource_created_at places projects with no resources
23998
+ * last in both directions.
23999
+ */
24000
+ sort_by?: "created_at" | "name" | "prompt_count" | "memory_count" | "artifact_count" | "blueprint_count" | "feed_item_count" | "total_resource_count" | "last_resource_created_at";
24001
+ /** @description Sort direction. */
24002
+ sort_order?: "asc" | "desc";
24003
+ };
24004
+ header?: never;
24005
+ path?: never;
24006
+ cookie?: never;
24007
+ };
24008
+ requestBody?: never;
24009
+ responses: {
24010
+ /** @description CSV of every matching row (capped at 50,000) */
24011
+ 200: {
24012
+ headers: {
24013
+ /** @description `attachment; filename="admin-projects-YYYYMMDD.csv"` (UTC date) */
24014
+ "Content-Disposition": string;
24015
+ /** @description Number of rows in the filtered set, before the cap */
24016
+ "X-Export-Total-Count": number;
24017
+ /** @description Whether the filtered set exceeded the 50,000-row cap */
24018
+ "X-Export-Truncated": boolean;
24019
+ [name: string]: unknown;
24020
+ };
24021
+ content: {
24022
+ "text/csv": string;
24023
+ };
24024
+ };
24025
+ /** @description Bad request — a query parameter is malformed or outside its enum, a count bound is negative, or a min/max or from/to pair is inverted. Nothing is streamed. */
24026
+ 400: {
24027
+ headers: {
24028
+ [name: string]: unknown;
24029
+ };
24030
+ content: {
24031
+ "application/problem+json": components["schemas"]["ErrorResponse"];
24032
+ };
24033
+ };
24034
+ /** @description Not found — the caller is not an instance admin (surface not advertised) */
24035
+ 404: {
24036
+ headers: {
24037
+ [name: string]: unknown;
24038
+ };
24039
+ content: {
24040
+ "application/problem+json": components["schemas"]["ErrorResponse"];
24041
+ };
24042
+ };
24043
+ /** @description Internal server error (before streaming started) */
24044
+ 500: {
24045
+ headers: {
24046
+ [name: string]: unknown;
24047
+ };
24048
+ content: {
24049
+ "application/problem+json": components["schemas"]["ErrorResponse"];
24050
+ };
24051
+ };
24052
+ };
24053
+ };
23304
24054
  listComments: {
23305
24055
  parameters: {
23306
24056
  query: {