@vibexp/api-client 0.15.0 → 0.17.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
@@ -2320,6 +2320,57 @@ export interface paths {
2320
2320
  patch?: never;
2321
2321
  trace?: never;
2322
2322
  };
2323
+ "/api/v1/teams/{id}/members/{userId}/role": {
2324
+ parameters: {
2325
+ query?: never;
2326
+ header?: never;
2327
+ path?: never;
2328
+ cookie?: never;
2329
+ };
2330
+ get?: never;
2331
+ put?: never;
2332
+ post?: never;
2333
+ delete?: never;
2334
+ options?: never;
2335
+ head?: never;
2336
+ /**
2337
+ * Change a team member's role
2338
+ * @description Changes a member's role between `member` and `admin`.
2339
+ *
2340
+ * Requires the caller to be an **owner or admin** of the team. The role value
2341
+ * may only be `member` or `admin` — ownership is never granted this way; use
2342
+ * the transfer-ownership operation instead. The team owner's role cannot be
2343
+ * changed by this operation, not even by another admin.
2344
+ */
2345
+ patch: operations["updateTeamMemberRole"];
2346
+ trace?: never;
2347
+ };
2348
+ "/api/v1/teams/{id}/transfer-ownership": {
2349
+ parameters: {
2350
+ query?: never;
2351
+ header?: never;
2352
+ path?: never;
2353
+ cookie?: never;
2354
+ };
2355
+ get?: never;
2356
+ put?: never;
2357
+ /**
2358
+ * Transfer team ownership
2359
+ * @description Transfers ownership of the team to another member.
2360
+ *
2361
+ * Requires the caller to be the **owner** of the team; admins cannot transfer
2362
+ * ownership. The target must already be a member. The target becomes the
2363
+ * owner and the previous owner becomes an admin, applied in a single
2364
+ * transaction so the team always has exactly one owner. Personal workspaces
2365
+ * cannot be transferred.
2366
+ */
2367
+ post: operations["transferTeamOwnership"];
2368
+ delete?: never;
2369
+ options?: never;
2370
+ head?: never;
2371
+ patch?: never;
2372
+ trace?: never;
2373
+ };
2323
2374
  "/api/v1/teams/{id}/invitations": {
2324
2375
  parameters: {
2325
2376
  query?: never;
@@ -2329,8 +2380,9 @@ export interface paths {
2329
2380
  };
2330
2381
  /**
2331
2382
  * List team invitations
2332
- * @description Returns all invitations for the team. The `token`, `team_name` and
2333
- * `invited_by` fields are not populated on this listing.
2383
+ * @description Returns all invitations for the team, each with its `token` populated so
2384
+ * an admin or owner can copy the accept link and share it out of band. The
2385
+ * `team_name` and `invited_by` fields are not populated on this listing.
2334
2386
  */
2335
2387
  get: operations["listTeamInvitations"];
2336
2388
  put?: never;
@@ -2670,6 +2722,74 @@ export interface paths {
2670
2722
  patch?: never;
2671
2723
  trace?: never;
2672
2724
  };
2725
+ "/api/v1/{team_id}/comments": {
2726
+ parameters: {
2727
+ query?: never;
2728
+ header?: never;
2729
+ path?: never;
2730
+ cookie?: never;
2731
+ };
2732
+ /**
2733
+ * List a resource's comments
2734
+ * @description Returns a page of comments on the given resource, newest first. The caller must be a member of the team.
2735
+ */
2736
+ get: operations["listComments"];
2737
+ put?: never;
2738
+ /**
2739
+ * Create a comment
2740
+ * @description Adds a comment on a resource. Any team member may comment; the target resource must exist in the team (404 otherwise).
2741
+ */
2742
+ post: operations["createComment"];
2743
+ delete?: never;
2744
+ options?: never;
2745
+ head?: never;
2746
+ patch?: never;
2747
+ trace?: never;
2748
+ };
2749
+ "/api/v1/{team_id}/comments/recent": {
2750
+ parameters: {
2751
+ query?: never;
2752
+ header?: never;
2753
+ path?: never;
2754
+ cookie?: never;
2755
+ };
2756
+ /**
2757
+ * List recent comment activity
2758
+ * @description Returns the team's most recent comment activity for the homepage card, ordered by latest activity (an edited comment resurfaces). Each entry carries its resource's resolved title and link fields; entries whose resource has been deleted are omitted.
2759
+ */
2760
+ get: operations["listRecentComments"];
2761
+ put?: never;
2762
+ post?: never;
2763
+ delete?: never;
2764
+ options?: never;
2765
+ head?: never;
2766
+ patch?: never;
2767
+ trace?: never;
2768
+ };
2769
+ "/api/v1/{team_id}/comments/{comment_id}": {
2770
+ parameters: {
2771
+ query?: never;
2772
+ header?: never;
2773
+ path?: never;
2774
+ cookie?: never;
2775
+ };
2776
+ get?: never;
2777
+ put?: never;
2778
+ post?: never;
2779
+ /**
2780
+ * Delete a comment
2781
+ * @description Deletes a comment. The author may delete their own; a team admin or owner may delete any comment (403 otherwise).
2782
+ */
2783
+ delete: operations["deleteComment"];
2784
+ options?: never;
2785
+ head?: never;
2786
+ /**
2787
+ * Edit a comment
2788
+ * @description Updates a comment's content. Only the comment's author may edit it; no role can edit another member's comment (403 otherwise).
2789
+ */
2790
+ patch: operations["updateComment"];
2791
+ trace?: never;
2792
+ };
2673
2793
  "/api/v1/{team_id}/embedding-providers": {
2674
2794
  parameters: {
2675
2795
  query?: never;
@@ -6722,6 +6842,8 @@ export interface components {
6722
6842
  created_at?: string;
6723
6843
  invited_by?: components["schemas"]["InviterInfo"];
6724
6844
  };
6845
+ /** @description Bare list of team invitations returned by the list endpoint. */
6846
+ InvitationResponseList: components["schemas"]["InvitationResponse"][];
6725
6847
  /** @description Wrapper response for the get-invitation-by-token endpoint */
6726
6848
  InvitationDetailsResponse: {
6727
6849
  invitation: components["schemas"]["InvitationResponse"];
@@ -7225,7 +7347,7 @@ export interface components {
7225
7347
  message: string;
7226
7348
  data: components["schemas"]["CursorRecentActivitiesResponse"];
7227
7349
  };
7228
- /** @description A team (workspace) in the system. `role` and `member_count` are computed at read time for the requesting user. */
7350
+ /** @description A team (workspace) in the system. `role`, `permissions` and `member_count` are computed at read time for the requesting user. */
7229
7351
  Team: {
7230
7352
  /**
7231
7353
  * Format: uuid
@@ -7249,10 +7371,21 @@ export interface components {
7249
7371
  */
7250
7372
  is_personal: boolean;
7251
7373
  /**
7252
- * @description The requesting user's role in this team: owner, admin, or member. Populated at runtime on list and single-team reads; empty string on create responses (not an enum constraint for that reason).
7374
+ * @description The requesting user's role in this team: owner, admin, or member. Populated at runtime on every response that carries a team, including create (where the caller is by definition the owner). Not an enum constraint: older responses may still carry an empty string.
7253
7375
  * @example owner
7254
7376
  */
7255
7377
  role?: string;
7378
+ /**
7379
+ * @description Exactly what `role` permits the requesting user to do in this team, expanded server-side from the role matrix (epic #220). Clients MUST gate their UI on these strings rather than re-deriving them from `role` — the matrix lives on the server and may change without a client release.
7380
+ * Computed at read time for the requesting user, alongside `role`, and always present (an empty array means the role grants nothing). The values are stable API surface: renaming one is a breaking change, and they are kept byte-identical to the `internal/authz` constants by a drift test. Meanings:
7381
+ * * `team.update` — change team name, slug or description. * `team.delete` — delete the team (owner only). * `team.transfer` — transfer ownership to another member (owner only). * `member.invite` — invite new members. * `member.remove` — remove members from the team. * `member.role.update` — change a member's role. * `project.create` — create a project in the team. * `project.update` — update any project in the team. * `project.delete` — delete any project in the team. * `resource.create` — create a prompt, memory, artifact, blueprint or agent. * `resource.update.any` — update any resource, including other members'. * `resource.delete.own` — delete a resource the caller created. * `resource.delete.any` — delete a resource created by someone else. * `feed.delete.any` — delete another member's feed post or reply (moderation).
7382
+ * @example [
7383
+ * "resource.create",
7384
+ * "resource.update.any",
7385
+ * "resource.delete.own"
7386
+ * ]
7387
+ */
7388
+ permissions: ("team.update" | "team.delete" | "team.transfer" | "member.invite" | "member.remove" | "member.role.update" | "project.create" | "project.update" | "project.delete" | "resource.create" | "resource.update.any" | "resource.delete.own" | "resource.delete.any" | "feed.delete.any")[];
7256
7389
  /**
7257
7390
  * @description Number of members in this team. Populated only on list responses; 0 on create and single-team reads.
7258
7391
  * @example 5
@@ -7334,6 +7467,39 @@ export interface components {
7334
7467
  */
7335
7468
  invitation_status?: "pending" | "accepted";
7336
7469
  };
7470
+ /**
7471
+ * @description Request body for changing a team member's role. Only `member` and `admin` are
7472
+ * accepted: a team has exactly one owner, and ownership moves solely through
7473
+ * the transfer-ownership operation.
7474
+ */
7475
+ UpdateTeamMemberRoleRequest: {
7476
+ /**
7477
+ * @description The role to assign to the member
7478
+ * @example admin
7479
+ * @enum {string}
7480
+ */
7481
+ role: "member" | "admin";
7482
+ };
7483
+ /** @description The team member after the role change */
7484
+ UpdateTeamMemberRoleResponse: {
7485
+ member: components["schemas"]["TeamMemberDetail"];
7486
+ };
7487
+ /**
7488
+ * @description Request body for transferring team ownership. The target must already be a
7489
+ * member of the team; they become the owner and the current owner becomes an
7490
+ * admin, in a single transaction.
7491
+ */
7492
+ TransferTeamOwnershipRequest: {
7493
+ /**
7494
+ * @description User ID of the member who will become the team owner
7495
+ * @example user_01HXYZABC123
7496
+ */
7497
+ new_owner_id: string;
7498
+ };
7499
+ /** @description The team after ownership has been transferred */
7500
+ TransferTeamOwnershipResponse: {
7501
+ team: components["schemas"]["Team"];
7502
+ };
7337
7503
  /** @description Paginated list of team members */
7338
7504
  TeamMembersListResponse: {
7339
7505
  members: components["schemas"]["TeamMemberDetail"][];
@@ -7698,6 +7864,165 @@ export interface components {
7698
7864
  */
7699
7865
  total_count: number;
7700
7866
  };
7867
+ /** @description A team-visible comment on a resource. */
7868
+ Comment: {
7869
+ /**
7870
+ * Format: uuid
7871
+ * @description Unique comment identifier
7872
+ * @example 550e8400-e29b-41d4-a716-446655440000
7873
+ */
7874
+ id: string;
7875
+ /**
7876
+ * Format: uuid
7877
+ * @description Owning team
7878
+ * @example 660e8400-e29b-41d4-a716-446655440001
7879
+ */
7880
+ team_id: string;
7881
+ /**
7882
+ * @description Type of the commented resource (artifact, memory, prompt, or blueprint)
7883
+ * @example artifact
7884
+ */
7885
+ resource_type: string;
7886
+ /**
7887
+ * Format: uuid
7888
+ * @description Identifier of the commented resource
7889
+ * @example 770e8400-e29b-41d4-a716-446655440002
7890
+ */
7891
+ resource_id: string;
7892
+ /**
7893
+ * Format: uuid
7894
+ * @description Author of the comment
7895
+ * @example 880e8400-e29b-41d4-a716-446655440003
7896
+ */
7897
+ user_id: string;
7898
+ /**
7899
+ * @description Comment body (markdown, 1–10,000 characters)
7900
+ * @example These figures are from the v3 API, not v4.
7901
+ */
7902
+ content: string;
7903
+ /**
7904
+ * Format: date-time
7905
+ * @description When the comment was created
7906
+ * @example 2026-07-16T09:00:00Z
7907
+ */
7908
+ created_at: string;
7909
+ /**
7910
+ * Format: date-time
7911
+ * @description When the comment was last edited (equals created_at if never edited)
7912
+ * @example 2026-07-16T09:00:00Z
7913
+ */
7914
+ updated_at: string;
7915
+ };
7916
+ /** @description Request body for creating a comment on a resource. */
7917
+ CreateCommentRequest: {
7918
+ /**
7919
+ * @description Type of the resource being commented on (artifact, memory, prompt, or blueprint)
7920
+ * @example artifact
7921
+ */
7922
+ resource_type: string;
7923
+ /**
7924
+ * Format: uuid
7925
+ * @description Identifier of the resource being commented on
7926
+ * @example 770e8400-e29b-41d4-a716-446655440002
7927
+ */
7928
+ resource_id: string;
7929
+ /**
7930
+ * @description Comment body (markdown, 1–10,000 characters)
7931
+ * @example These figures are from the v3 API, not v4.
7932
+ */
7933
+ content: string;
7934
+ };
7935
+ /** @description Request body for editing a comment's content. */
7936
+ UpdateCommentRequest: {
7937
+ /**
7938
+ * @description New comment body (markdown, 1–10,000 characters)
7939
+ * @example These figures are from the v3 API, not v4 (corrected).
7940
+ */
7941
+ content: string;
7942
+ };
7943
+ /** @description A page of a resource's comments, newest first. */
7944
+ CommentListResponse: {
7945
+ /** @description Comments on the resource, newest first */
7946
+ comments: components["schemas"]["Comment"][];
7947
+ /**
7948
+ * @description Total number of comments on the resource
7949
+ * @example 7
7950
+ */
7951
+ total_count: number;
7952
+ /**
7953
+ * @description Current page number
7954
+ * @example 1
7955
+ */
7956
+ page: number;
7957
+ /**
7958
+ * @description Number of items per page
7959
+ * @example 20
7960
+ */
7961
+ per_page: number;
7962
+ /**
7963
+ * @description Total number of pages
7964
+ * @example 1
7965
+ */
7966
+ total_pages: number;
7967
+ };
7968
+ /** @description A recent comment for the homepage activity card: the comment's latest state plus its resource's resolved title and link fields. No comment body snippet. project_id is present for every resource type; slug is present for artifact/blueprint/prompt and absent for memory. */
7969
+ RecentComment: {
7970
+ /**
7971
+ * Format: uuid
7972
+ * @description Author of the comment
7973
+ * @example 880e8400-e29b-41d4-a716-446655440003
7974
+ */
7975
+ user_id: string;
7976
+ /**
7977
+ * Format: date-time
7978
+ * @description When the comment was created
7979
+ * @example 2026-07-16T09:00:00Z
7980
+ */
7981
+ created_at: string;
7982
+ /**
7983
+ * Format: date-time
7984
+ * @description When the comment was last edited (updated_at > created_at means edited)
7985
+ * @example 2026-07-16T10:00:00Z
7986
+ */
7987
+ updated_at: string;
7988
+ /**
7989
+ * @description Type of the commented resource
7990
+ * @example artifact
7991
+ */
7992
+ resource_type: string;
7993
+ /**
7994
+ * Format: uuid
7995
+ * @description Identifier of the commented resource
7996
+ * @example 770e8400-e29b-41d4-a716-446655440002
7997
+ */
7998
+ resource_id: string;
7999
+ /**
8000
+ * @description Resolved display title of the resource
8001
+ * @example Q3 revenue analysis
8002
+ */
8003
+ resource_title: string;
8004
+ /**
8005
+ * Format: uuid
8006
+ * @description Project the resource belongs to (for building the detail link)
8007
+ * @example 990e8400-e29b-41d4-a716-446655440004
8008
+ */
8009
+ project_id?: string;
8010
+ /**
8011
+ * @description Resource slug for the detail link (absent for memories)
8012
+ * @example q3-revenue-analysis
8013
+ */
8014
+ slug?: string;
8015
+ };
8016
+ /** @description The team's most recent comment activity, latest-activity first. */
8017
+ RecentCommentListResponse: {
8018
+ /** @description Recent comments across the team, most-recently-active first */
8019
+ comments: components["schemas"]["RecentComment"][];
8020
+ /**
8021
+ * @description Number of entries in the list
8022
+ * @example 10
8023
+ */
8024
+ total_count: number;
8025
+ };
7701
8026
  ProjectResponse: components["schemas"]["Project"] & {
7702
8027
  /**
7703
8028
  * @description Whether the project's git URL matches a repository accessible via the team's GitHub App installation
@@ -8388,10 +8713,18 @@ export interface operations {
8388
8713
  };
8389
8714
  requestBody?: never;
8390
8715
  responses: {
8391
- /** @description Authentication successful — redirects browser to frontend home page */
8716
+ /**
8717
+ * @description Redirects the browser to the frontend. On success, to the home page
8718
+ * (a session cookie is set). When sign-in is denied by the access
8719
+ * allowlist, to `/auth/callback?error=access_restricted` with no session
8720
+ * cookie set.
8721
+ */
8392
8722
  302: {
8393
8723
  headers: {
8394
- /** @description Frontend home URL (e.g. https://app.example.com/) */
8724
+ /**
8725
+ * @description Frontend URL — the home page on success (e.g. https://app.example.com/),
8726
+ * or /auth/callback?error=access_restricted on an allowlist denial.
8727
+ */
8395
8728
  Location?: string;
8396
8729
  /** @description Encrypted session cookie (`vx_session`) containing the identity-provider access token */
8397
8730
  "Set-Cookie"?: string;
@@ -8488,6 +8821,18 @@ export interface operations {
8488
8821
  "application/problem+json": components["schemas"]["ErrorResponse"];
8489
8822
  };
8490
8823
  };
8824
+ /**
8825
+ * @description Sign-in denied by the access allowlist. The response `code` is the
8826
+ * stable string `access_restricted`.
8827
+ */
8828
+ 403: {
8829
+ headers: {
8830
+ [name: string]: unknown;
8831
+ };
8832
+ content: {
8833
+ "application/problem+json": components["schemas"]["ErrorResponse"];
8834
+ };
8835
+ };
8491
8836
  /** @description Endpoint not available outside development environment */
8492
8837
  404: {
8493
8838
  headers: {
@@ -16327,25 +16672,40 @@ export interface operations {
16327
16672
  };
16328
16673
  };
16329
16674
  };
16330
- listTeamInvitations: {
16675
+ updateTeamMemberRole: {
16331
16676
  parameters: {
16332
16677
  query?: never;
16333
16678
  header?: never;
16334
16679
  path: {
16335
16680
  /** @description Team identifier */
16336
16681
  id: string;
16682
+ /** @description User ID of the member whose role is changing */
16683
+ userId: string;
16337
16684
  };
16338
16685
  cookie?: never;
16339
16686
  };
16340
- requestBody?: never;
16687
+ requestBody: {
16688
+ content: {
16689
+ "application/json": components["schemas"]["UpdateTeamMemberRoleRequest"];
16690
+ };
16691
+ };
16341
16692
  responses: {
16342
- /** @description Invitations retrieved successfully */
16693
+ /** @description Role updated successfully */
16343
16694
  200: {
16344
16695
  headers: {
16345
16696
  [name: string]: unknown;
16346
16697
  };
16347
16698
  content: {
16348
- "application/json": components["schemas"]["InvitationResponse"][];
16699
+ "application/json": components["schemas"]["UpdateTeamMemberRoleResponse"];
16700
+ };
16701
+ };
16702
+ /** @description Invalid request body or role value */
16703
+ 400: {
16704
+ headers: {
16705
+ [name: string]: unknown;
16706
+ };
16707
+ content: {
16708
+ "application/problem+json": components["schemas"]["ErrorResponse"];
16349
16709
  };
16350
16710
  };
16351
16711
  /** @description Unauthorized */
@@ -16357,8 +16717,8 @@ export interface operations {
16357
16717
  "application/problem+json": components["schemas"]["ErrorResponse"];
16358
16718
  };
16359
16719
  };
16360
- /** @description Payment required active subscription required */
16361
- 402: {
16720
+ /** @description Forbiddencaller is not an owner or admin of the team, or the target is the team owner */
16721
+ 403: {
16362
16722
  headers: {
16363
16723
  [name: string]: unknown;
16364
16724
  };
@@ -16366,8 +16726,8 @@ export interface operations {
16366
16726
  "application/problem+json": components["schemas"]["ErrorResponse"];
16367
16727
  };
16368
16728
  };
16369
- /** @description Forbidden no permission to view this team's invitations */
16370
- 403: {
16729
+ /** @description Team not found, or the target user is not a member of the team */
16730
+ 404: {
16371
16731
  headers: {
16372
16732
  [name: string]: unknown;
16373
16733
  };
@@ -16386,7 +16746,7 @@ export interface operations {
16386
16746
  };
16387
16747
  };
16388
16748
  };
16389
- sendTeamInvitations: {
16749
+ transferTeamOwnership: {
16390
16750
  parameters: {
16391
16751
  query?: never;
16392
16752
  header?: never;
@@ -16398,20 +16758,20 @@ export interface operations {
16398
16758
  };
16399
16759
  requestBody: {
16400
16760
  content: {
16401
- "application/json": components["schemas"]["SendInvitationsRequest"];
16761
+ "application/json": components["schemas"]["TransferTeamOwnershipRequest"];
16402
16762
  };
16403
16763
  };
16404
16764
  responses: {
16405
- /** @description Invitations created successfully (the `token`, `team_name` and `invited_by` fields are not populated on this response) */
16406
- 201: {
16765
+ /** @description Ownership transferred successfully */
16766
+ 200: {
16407
16767
  headers: {
16408
16768
  [name: string]: unknown;
16409
16769
  };
16410
16770
  content: {
16411
- "application/json": components["schemas"]["InvitationResponse"][];
16771
+ "application/json": components["schemas"]["TransferTeamOwnershipResponse"];
16412
16772
  };
16413
16773
  };
16414
- /** @description Invalid request body, validation error, more than 50 emails, or invalid role */
16774
+ /** @description Invalid request body, or the caller is already the target owner */
16415
16775
  400: {
16416
16776
  headers: {
16417
16777
  [name: string]: unknown;
@@ -16429,8 +16789,8 @@ export interface operations {
16429
16789
  "application/problem+json": components["schemas"]["ErrorResponse"];
16430
16790
  };
16431
16791
  };
16432
- /** @description Payment required active subscription required */
16433
- 402: {
16792
+ /** @description Forbiddencaller is not the team owner, or the team is a personal workspace */
16793
+ 403: {
16434
16794
  headers: {
16435
16795
  [name: string]: unknown;
16436
16796
  };
@@ -16438,8 +16798,139 @@ export interface operations {
16438
16798
  "application/problem+json": components["schemas"]["ErrorResponse"];
16439
16799
  };
16440
16800
  };
16441
- /** @description Forbidden personal workspace (code `upgrade_required`), no permission to invite (code `FORBIDDEN`), no active team subscription, or seat limit exceeded (code `RESOURCE_LIMIT_EXCEEDED` with metadata) */
16442
- 403: {
16801
+ /** @description Team not found, or the target user is not a member of the team */
16802
+ 404: {
16803
+ headers: {
16804
+ [name: string]: unknown;
16805
+ };
16806
+ content: {
16807
+ "application/problem+json": components["schemas"]["ErrorResponse"];
16808
+ };
16809
+ };
16810
+ /** @description Internal server error */
16811
+ 500: {
16812
+ headers: {
16813
+ [name: string]: unknown;
16814
+ };
16815
+ content: {
16816
+ "application/problem+json": components["schemas"]["ErrorResponse"];
16817
+ };
16818
+ };
16819
+ };
16820
+ };
16821
+ listTeamInvitations: {
16822
+ parameters: {
16823
+ query?: never;
16824
+ header?: never;
16825
+ path: {
16826
+ /** @description Team identifier */
16827
+ id: string;
16828
+ };
16829
+ cookie?: never;
16830
+ };
16831
+ requestBody?: never;
16832
+ responses: {
16833
+ /** @description Invitations retrieved successfully */
16834
+ 200: {
16835
+ headers: {
16836
+ [name: string]: unknown;
16837
+ };
16838
+ content: {
16839
+ "application/json": components["schemas"]["InvitationResponseList"];
16840
+ };
16841
+ };
16842
+ /** @description Unauthorized */
16843
+ 401: {
16844
+ headers: {
16845
+ [name: string]: unknown;
16846
+ };
16847
+ content: {
16848
+ "application/problem+json": components["schemas"]["ErrorResponse"];
16849
+ };
16850
+ };
16851
+ /** @description Payment required — active subscription required */
16852
+ 402: {
16853
+ headers: {
16854
+ [name: string]: unknown;
16855
+ };
16856
+ content: {
16857
+ "application/problem+json": components["schemas"]["ErrorResponse"];
16858
+ };
16859
+ };
16860
+ /** @description Forbidden — no permission to view this team's invitations */
16861
+ 403: {
16862
+ headers: {
16863
+ [name: string]: unknown;
16864
+ };
16865
+ content: {
16866
+ "application/problem+json": components["schemas"]["ErrorResponse"];
16867
+ };
16868
+ };
16869
+ /** @description Internal server error */
16870
+ 500: {
16871
+ headers: {
16872
+ [name: string]: unknown;
16873
+ };
16874
+ content: {
16875
+ "application/problem+json": components["schemas"]["ErrorResponse"];
16876
+ };
16877
+ };
16878
+ };
16879
+ };
16880
+ sendTeamInvitations: {
16881
+ parameters: {
16882
+ query?: never;
16883
+ header?: never;
16884
+ path: {
16885
+ /** @description Team identifier */
16886
+ id: string;
16887
+ };
16888
+ cookie?: never;
16889
+ };
16890
+ requestBody: {
16891
+ content: {
16892
+ "application/json": components["schemas"]["SendInvitationsRequest"];
16893
+ };
16894
+ };
16895
+ responses: {
16896
+ /** @description Invitations created successfully (the `token`, `team_name` and `invited_by` fields are not populated on this response) */
16897
+ 201: {
16898
+ headers: {
16899
+ [name: string]: unknown;
16900
+ };
16901
+ content: {
16902
+ "application/json": components["schemas"]["InvitationResponseList"];
16903
+ };
16904
+ };
16905
+ /** @description Invalid request body, validation error, more than 50 emails, or invalid role */
16906
+ 400: {
16907
+ headers: {
16908
+ [name: string]: unknown;
16909
+ };
16910
+ content: {
16911
+ "application/problem+json": components["schemas"]["ErrorResponse"];
16912
+ };
16913
+ };
16914
+ /** @description Unauthorized */
16915
+ 401: {
16916
+ headers: {
16917
+ [name: string]: unknown;
16918
+ };
16919
+ content: {
16920
+ "application/problem+json": components["schemas"]["ErrorResponse"];
16921
+ };
16922
+ };
16923
+ /** @description Payment required — active subscription required */
16924
+ 402: {
16925
+ headers: {
16926
+ [name: string]: unknown;
16927
+ };
16928
+ content: {
16929
+ "application/problem+json": components["schemas"]["ErrorResponse"];
16930
+ };
16931
+ };
16932
+ /** @description Forbidden — personal workspace (code `upgrade_required`), no permission to invite (code `FORBIDDEN`), no active team subscription, or seat limit exceeded (code `RESOURCE_LIMIT_EXCEEDED` with metadata) */
16933
+ 403: {
16443
16934
  headers: {
16444
16935
  [name: string]: unknown;
16445
16936
  };
@@ -17405,6 +17896,350 @@ export interface operations {
17405
17896
  };
17406
17897
  };
17407
17898
  };
17899
+ listComments: {
17900
+ parameters: {
17901
+ query: {
17902
+ /** @description Type of the commented resource (artifact, memory, prompt, or blueprint) */
17903
+ resource_type: string;
17904
+ /** @description Identifier of the commented resource */
17905
+ resource_id: string;
17906
+ /** @description Page number (1-based) */
17907
+ page?: number;
17908
+ /** @description Items per page */
17909
+ limit?: number;
17910
+ };
17911
+ header?: never;
17912
+ path: {
17913
+ /** @description Team identifier */
17914
+ team_id: string;
17915
+ };
17916
+ cookie?: never;
17917
+ };
17918
+ requestBody?: never;
17919
+ responses: {
17920
+ /** @description Comments retrieved successfully */
17921
+ 200: {
17922
+ headers: {
17923
+ [name: string]: unknown;
17924
+ };
17925
+ content: {
17926
+ "application/json": components["schemas"]["CommentListResponse"];
17927
+ };
17928
+ };
17929
+ /** @description Invalid resource_type or query parameters */
17930
+ 400: {
17931
+ headers: {
17932
+ [name: string]: unknown;
17933
+ };
17934
+ content: {
17935
+ "application/problem+json": components["schemas"]["ErrorResponse"];
17936
+ };
17937
+ };
17938
+ /** @description Unauthorized */
17939
+ 401: {
17940
+ headers: {
17941
+ [name: string]: unknown;
17942
+ };
17943
+ content: {
17944
+ "application/problem+json": components["schemas"]["ErrorResponse"];
17945
+ };
17946
+ };
17947
+ /** @description Caller is not a member of the team */
17948
+ 403: {
17949
+ headers: {
17950
+ [name: string]: unknown;
17951
+ };
17952
+ content: {
17953
+ "application/problem+json": components["schemas"]["ErrorResponse"];
17954
+ };
17955
+ };
17956
+ /** @description Failed to list comments */
17957
+ 500: {
17958
+ headers: {
17959
+ [name: string]: unknown;
17960
+ };
17961
+ content: {
17962
+ "application/problem+json": components["schemas"]["ErrorResponse"];
17963
+ };
17964
+ };
17965
+ };
17966
+ };
17967
+ createComment: {
17968
+ parameters: {
17969
+ query?: never;
17970
+ header?: never;
17971
+ path: {
17972
+ /** @description Team identifier */
17973
+ team_id: string;
17974
+ };
17975
+ cookie?: never;
17976
+ };
17977
+ requestBody: {
17978
+ content: {
17979
+ "application/json": components["schemas"]["CreateCommentRequest"];
17980
+ };
17981
+ };
17982
+ responses: {
17983
+ /** @description Comment created successfully */
17984
+ 201: {
17985
+ headers: {
17986
+ [name: string]: unknown;
17987
+ };
17988
+ content: {
17989
+ "application/json": components["schemas"]["Comment"];
17990
+ };
17991
+ };
17992
+ /** @description Invalid resource_type or content */
17993
+ 400: {
17994
+ headers: {
17995
+ [name: string]: unknown;
17996
+ };
17997
+ content: {
17998
+ "application/problem+json": components["schemas"]["ErrorResponse"];
17999
+ };
18000
+ };
18001
+ /** @description Unauthorized */
18002
+ 401: {
18003
+ headers: {
18004
+ [name: string]: unknown;
18005
+ };
18006
+ content: {
18007
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18008
+ };
18009
+ };
18010
+ /** @description Caller may not comment in the team */
18011
+ 403: {
18012
+ headers: {
18013
+ [name: string]: unknown;
18014
+ };
18015
+ content: {
18016
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18017
+ };
18018
+ };
18019
+ /** @description Target resource not found in the team */
18020
+ 404: {
18021
+ headers: {
18022
+ [name: string]: unknown;
18023
+ };
18024
+ content: {
18025
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18026
+ };
18027
+ };
18028
+ /** @description Failed to create comment */
18029
+ 500: {
18030
+ headers: {
18031
+ [name: string]: unknown;
18032
+ };
18033
+ content: {
18034
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18035
+ };
18036
+ };
18037
+ };
18038
+ };
18039
+ listRecentComments: {
18040
+ parameters: {
18041
+ query?: {
18042
+ /** @description Maximum number of entries to return */
18043
+ limit?: number;
18044
+ };
18045
+ header?: never;
18046
+ path: {
18047
+ /** @description Team identifier */
18048
+ team_id: string;
18049
+ };
18050
+ cookie?: never;
18051
+ };
18052
+ requestBody?: never;
18053
+ responses: {
18054
+ /** @description Recent comments retrieved successfully */
18055
+ 200: {
18056
+ headers: {
18057
+ [name: string]: unknown;
18058
+ };
18059
+ content: {
18060
+ "application/json": components["schemas"]["RecentCommentListResponse"];
18061
+ };
18062
+ };
18063
+ /** @description Invalid query parameters */
18064
+ 400: {
18065
+ headers: {
18066
+ [name: string]: unknown;
18067
+ };
18068
+ content: {
18069
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18070
+ };
18071
+ };
18072
+ /** @description Unauthorized */
18073
+ 401: {
18074
+ headers: {
18075
+ [name: string]: unknown;
18076
+ };
18077
+ content: {
18078
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18079
+ };
18080
+ };
18081
+ /** @description Caller is not a member of the team */
18082
+ 403: {
18083
+ headers: {
18084
+ [name: string]: unknown;
18085
+ };
18086
+ content: {
18087
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18088
+ };
18089
+ };
18090
+ /** @description Failed to list recent comments */
18091
+ 500: {
18092
+ headers: {
18093
+ [name: string]: unknown;
18094
+ };
18095
+ content: {
18096
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18097
+ };
18098
+ };
18099
+ };
18100
+ };
18101
+ deleteComment: {
18102
+ parameters: {
18103
+ query?: never;
18104
+ header?: never;
18105
+ path: {
18106
+ /** @description Team identifier */
18107
+ team_id: string;
18108
+ /** @description Comment identifier */
18109
+ comment_id: string;
18110
+ };
18111
+ cookie?: never;
18112
+ };
18113
+ requestBody?: never;
18114
+ responses: {
18115
+ /** @description Comment deleted (no content) */
18116
+ 204: {
18117
+ headers: {
18118
+ [name: string]: unknown;
18119
+ };
18120
+ content?: never;
18121
+ };
18122
+ /** @description comment_id is not a valid UUID */
18123
+ 400: {
18124
+ headers: {
18125
+ [name: string]: unknown;
18126
+ };
18127
+ content: {
18128
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18129
+ };
18130
+ };
18131
+ /** @description Unauthorized */
18132
+ 401: {
18133
+ headers: {
18134
+ [name: string]: unknown;
18135
+ };
18136
+ content: {
18137
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18138
+ };
18139
+ };
18140
+ /** @description Caller may not delete this comment */
18141
+ 403: {
18142
+ headers: {
18143
+ [name: string]: unknown;
18144
+ };
18145
+ content: {
18146
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18147
+ };
18148
+ };
18149
+ /** @description Comment not found in the team */
18150
+ 404: {
18151
+ headers: {
18152
+ [name: string]: unknown;
18153
+ };
18154
+ content: {
18155
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18156
+ };
18157
+ };
18158
+ /** @description Failed to delete comment */
18159
+ 500: {
18160
+ headers: {
18161
+ [name: string]: unknown;
18162
+ };
18163
+ content: {
18164
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18165
+ };
18166
+ };
18167
+ };
18168
+ };
18169
+ updateComment: {
18170
+ parameters: {
18171
+ query?: never;
18172
+ header?: never;
18173
+ path: {
18174
+ /** @description Team identifier */
18175
+ team_id: string;
18176
+ /** @description Comment identifier */
18177
+ comment_id: string;
18178
+ };
18179
+ cookie?: never;
18180
+ };
18181
+ requestBody: {
18182
+ content: {
18183
+ "application/json": components["schemas"]["UpdateCommentRequest"];
18184
+ };
18185
+ };
18186
+ responses: {
18187
+ /** @description Comment updated successfully */
18188
+ 200: {
18189
+ headers: {
18190
+ [name: string]: unknown;
18191
+ };
18192
+ content: {
18193
+ "application/json": components["schemas"]["Comment"];
18194
+ };
18195
+ };
18196
+ /** @description Invalid content */
18197
+ 400: {
18198
+ headers: {
18199
+ [name: string]: unknown;
18200
+ };
18201
+ content: {
18202
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18203
+ };
18204
+ };
18205
+ /** @description Unauthorized */
18206
+ 401: {
18207
+ headers: {
18208
+ [name: string]: unknown;
18209
+ };
18210
+ content: {
18211
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18212
+ };
18213
+ };
18214
+ /** @description Caller is not the comment's author */
18215
+ 403: {
18216
+ headers: {
18217
+ [name: string]: unknown;
18218
+ };
18219
+ content: {
18220
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18221
+ };
18222
+ };
18223
+ /** @description Comment not found in the team */
18224
+ 404: {
18225
+ headers: {
18226
+ [name: string]: unknown;
18227
+ };
18228
+ content: {
18229
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18230
+ };
18231
+ };
18232
+ /** @description Failed to update comment */
18233
+ 500: {
18234
+ headers: {
18235
+ [name: string]: unknown;
18236
+ };
18237
+ content: {
18238
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18239
+ };
18240
+ };
18241
+ };
18242
+ };
17408
18243
  listEmbeddingProviders: {
17409
18244
  parameters: {
17410
18245
  query?: never;