@vibexp/api-client 0.16.0 → 0.18.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
@@ -2380,8 +2380,9 @@ export interface paths {
2380
2380
  };
2381
2381
  /**
2382
2382
  * List team invitations
2383
- * @description Returns all invitations for the team. The `token`, `team_name` and
2384
- * `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.
2385
2386
  */
2386
2387
  get: operations["listTeamInvitations"];
2387
2388
  put?: never;
@@ -2721,6 +2722,74 @@ export interface paths {
2721
2722
  patch?: never;
2722
2723
  trace?: never;
2723
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
+ };
2724
2793
  "/api/v1/{team_id}/embedding-providers": {
2725
2794
  parameters: {
2726
2795
  query?: never;
@@ -3758,6 +3827,21 @@ export interface components {
3758
3827
  */
3759
3828
  version: number;
3760
3829
  };
3830
+ /**
3831
+ * @description The authenticated user as returned by GET /api/v1/auth/me — the full User
3832
+ * object plus session-relative flags. `is_instance_admin` lets the SPA gate the
3833
+ * Admin Portal menu and /admin routes; it is UI convenience only, as every
3834
+ * /api/v1/admin/* call is authorized server-side regardless.
3835
+ */
3836
+ CurrentUser: components["schemas"]["User"] & {
3837
+ /**
3838
+ * @description Whether the authenticated user's email is in the configured
3839
+ * auth.instance_admins list (matched case-insensitively). False when the
3840
+ * list is empty (feature dormant).
3841
+ * @example false
3842
+ */
3843
+ is_instance_admin: boolean;
3844
+ };
3761
3845
  /** @description Response body returned by GET /api/v1/auth/login containing the authorization URL */
3762
3846
  LoginResponse: {
3763
3847
  /**
@@ -6773,6 +6857,8 @@ export interface components {
6773
6857
  created_at?: string;
6774
6858
  invited_by?: components["schemas"]["InviterInfo"];
6775
6859
  };
6860
+ /** @description Bare list of team invitations returned by the list endpoint. */
6861
+ InvitationResponseList: components["schemas"]["InvitationResponse"][];
6776
6862
  /** @description Wrapper response for the get-invitation-by-token endpoint */
6777
6863
  InvitationDetailsResponse: {
6778
6864
  invitation: components["schemas"]["InvitationResponse"];
@@ -7793,6 +7879,165 @@ export interface components {
7793
7879
  */
7794
7880
  total_count: number;
7795
7881
  };
7882
+ /** @description A team-visible comment on a resource. */
7883
+ Comment: {
7884
+ /**
7885
+ * Format: uuid
7886
+ * @description Unique comment identifier
7887
+ * @example 550e8400-e29b-41d4-a716-446655440000
7888
+ */
7889
+ id: string;
7890
+ /**
7891
+ * Format: uuid
7892
+ * @description Owning team
7893
+ * @example 660e8400-e29b-41d4-a716-446655440001
7894
+ */
7895
+ team_id: string;
7896
+ /**
7897
+ * @description Type of the commented resource (artifact, memory, prompt, or blueprint)
7898
+ * @example artifact
7899
+ */
7900
+ resource_type: string;
7901
+ /**
7902
+ * Format: uuid
7903
+ * @description Identifier of the commented resource
7904
+ * @example 770e8400-e29b-41d4-a716-446655440002
7905
+ */
7906
+ resource_id: string;
7907
+ /**
7908
+ * Format: uuid
7909
+ * @description Author of the comment
7910
+ * @example 880e8400-e29b-41d4-a716-446655440003
7911
+ */
7912
+ user_id: string;
7913
+ /**
7914
+ * @description Comment body (markdown, 1–10,000 characters)
7915
+ * @example These figures are from the v3 API, not v4.
7916
+ */
7917
+ content: string;
7918
+ /**
7919
+ * Format: date-time
7920
+ * @description When the comment was created
7921
+ * @example 2026-07-16T09:00:00Z
7922
+ */
7923
+ created_at: string;
7924
+ /**
7925
+ * Format: date-time
7926
+ * @description When the comment was last edited (equals created_at if never edited)
7927
+ * @example 2026-07-16T09:00:00Z
7928
+ */
7929
+ updated_at: string;
7930
+ };
7931
+ /** @description Request body for creating a comment on a resource. */
7932
+ CreateCommentRequest: {
7933
+ /**
7934
+ * @description Type of the resource being commented on (artifact, memory, prompt, or blueprint)
7935
+ * @example artifact
7936
+ */
7937
+ resource_type: string;
7938
+ /**
7939
+ * Format: uuid
7940
+ * @description Identifier of the resource being commented on
7941
+ * @example 770e8400-e29b-41d4-a716-446655440002
7942
+ */
7943
+ resource_id: string;
7944
+ /**
7945
+ * @description Comment body (markdown, 1–10,000 characters)
7946
+ * @example These figures are from the v3 API, not v4.
7947
+ */
7948
+ content: string;
7949
+ };
7950
+ /** @description Request body for editing a comment's content. */
7951
+ UpdateCommentRequest: {
7952
+ /**
7953
+ * @description New comment body (markdown, 1–10,000 characters)
7954
+ * @example These figures are from the v3 API, not v4 (corrected).
7955
+ */
7956
+ content: string;
7957
+ };
7958
+ /** @description A page of a resource's comments, newest first. */
7959
+ CommentListResponse: {
7960
+ /** @description Comments on the resource, newest first */
7961
+ comments: components["schemas"]["Comment"][];
7962
+ /**
7963
+ * @description Total number of comments on the resource
7964
+ * @example 7
7965
+ */
7966
+ total_count: number;
7967
+ /**
7968
+ * @description Current page number
7969
+ * @example 1
7970
+ */
7971
+ page: number;
7972
+ /**
7973
+ * @description Number of items per page
7974
+ * @example 20
7975
+ */
7976
+ per_page: number;
7977
+ /**
7978
+ * @description Total number of pages
7979
+ * @example 1
7980
+ */
7981
+ total_pages: number;
7982
+ };
7983
+ /** @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. */
7984
+ RecentComment: {
7985
+ /**
7986
+ * Format: uuid
7987
+ * @description Author of the comment
7988
+ * @example 880e8400-e29b-41d4-a716-446655440003
7989
+ */
7990
+ user_id: string;
7991
+ /**
7992
+ * Format: date-time
7993
+ * @description When the comment was created
7994
+ * @example 2026-07-16T09:00:00Z
7995
+ */
7996
+ created_at: string;
7997
+ /**
7998
+ * Format: date-time
7999
+ * @description When the comment was last edited (updated_at > created_at means edited)
8000
+ * @example 2026-07-16T10:00:00Z
8001
+ */
8002
+ updated_at: string;
8003
+ /**
8004
+ * @description Type of the commented resource
8005
+ * @example artifact
8006
+ */
8007
+ resource_type: string;
8008
+ /**
8009
+ * Format: uuid
8010
+ * @description Identifier of the commented resource
8011
+ * @example 770e8400-e29b-41d4-a716-446655440002
8012
+ */
8013
+ resource_id: string;
8014
+ /**
8015
+ * @description Resolved display title of the resource
8016
+ * @example Q3 revenue analysis
8017
+ */
8018
+ resource_title: string;
8019
+ /**
8020
+ * Format: uuid
8021
+ * @description Project the resource belongs to (for building the detail link)
8022
+ * @example 990e8400-e29b-41d4-a716-446655440004
8023
+ */
8024
+ project_id?: string;
8025
+ /**
8026
+ * @description Resource slug for the detail link (absent for memories)
8027
+ * @example q3-revenue-analysis
8028
+ */
8029
+ slug?: string;
8030
+ };
8031
+ /** @description The team's most recent comment activity, latest-activity first. */
8032
+ RecentCommentListResponse: {
8033
+ /** @description Recent comments across the team, most-recently-active first */
8034
+ comments: components["schemas"]["RecentComment"][];
8035
+ /**
8036
+ * @description Number of entries in the list
8037
+ * @example 10
8038
+ */
8039
+ total_count: number;
8040
+ };
7796
8041
  ProjectResponse: components["schemas"]["Project"] & {
7797
8042
  /**
7798
8043
  * @description Whether the project's git URL matches a repository accessible via the team's GitHub App installation
@@ -8638,7 +8883,7 @@ export interface operations {
8638
8883
  [name: string]: unknown;
8639
8884
  };
8640
8885
  content: {
8641
- "application/json": components["schemas"]["User"];
8886
+ "application/json": components["schemas"]["CurrentUser"];
8642
8887
  };
8643
8888
  };
8644
8889
  /** @description Unauthorized - invalid or missing session cookie */
@@ -16606,7 +16851,7 @@ export interface operations {
16606
16851
  [name: string]: unknown;
16607
16852
  };
16608
16853
  content: {
16609
- "application/json": components["schemas"]["InvitationResponse"][];
16854
+ "application/json": components["schemas"]["InvitationResponseList"];
16610
16855
  };
16611
16856
  };
16612
16857
  /** @description Unauthorized */
@@ -16669,7 +16914,7 @@ export interface operations {
16669
16914
  [name: string]: unknown;
16670
16915
  };
16671
16916
  content: {
16672
- "application/json": components["schemas"]["InvitationResponse"][];
16917
+ "application/json": components["schemas"]["InvitationResponseList"];
16673
16918
  };
16674
16919
  };
16675
16920
  /** @description Invalid request body, validation error, more than 50 emails, or invalid role */
@@ -17666,6 +17911,350 @@ export interface operations {
17666
17911
  };
17667
17912
  };
17668
17913
  };
17914
+ listComments: {
17915
+ parameters: {
17916
+ query: {
17917
+ /** @description Type of the commented resource (artifact, memory, prompt, or blueprint) */
17918
+ resource_type: string;
17919
+ /** @description Identifier of the commented resource */
17920
+ resource_id: string;
17921
+ /** @description Page number (1-based) */
17922
+ page?: number;
17923
+ /** @description Items per page */
17924
+ limit?: number;
17925
+ };
17926
+ header?: never;
17927
+ path: {
17928
+ /** @description Team identifier */
17929
+ team_id: string;
17930
+ };
17931
+ cookie?: never;
17932
+ };
17933
+ requestBody?: never;
17934
+ responses: {
17935
+ /** @description Comments retrieved successfully */
17936
+ 200: {
17937
+ headers: {
17938
+ [name: string]: unknown;
17939
+ };
17940
+ content: {
17941
+ "application/json": components["schemas"]["CommentListResponse"];
17942
+ };
17943
+ };
17944
+ /** @description Invalid resource_type or query parameters */
17945
+ 400: {
17946
+ headers: {
17947
+ [name: string]: unknown;
17948
+ };
17949
+ content: {
17950
+ "application/problem+json": components["schemas"]["ErrorResponse"];
17951
+ };
17952
+ };
17953
+ /** @description Unauthorized */
17954
+ 401: {
17955
+ headers: {
17956
+ [name: string]: unknown;
17957
+ };
17958
+ content: {
17959
+ "application/problem+json": components["schemas"]["ErrorResponse"];
17960
+ };
17961
+ };
17962
+ /** @description Caller is not a member of the team */
17963
+ 403: {
17964
+ headers: {
17965
+ [name: string]: unknown;
17966
+ };
17967
+ content: {
17968
+ "application/problem+json": components["schemas"]["ErrorResponse"];
17969
+ };
17970
+ };
17971
+ /** @description Failed to list comments */
17972
+ 500: {
17973
+ headers: {
17974
+ [name: string]: unknown;
17975
+ };
17976
+ content: {
17977
+ "application/problem+json": components["schemas"]["ErrorResponse"];
17978
+ };
17979
+ };
17980
+ };
17981
+ };
17982
+ createComment: {
17983
+ parameters: {
17984
+ query?: never;
17985
+ header?: never;
17986
+ path: {
17987
+ /** @description Team identifier */
17988
+ team_id: string;
17989
+ };
17990
+ cookie?: never;
17991
+ };
17992
+ requestBody: {
17993
+ content: {
17994
+ "application/json": components["schemas"]["CreateCommentRequest"];
17995
+ };
17996
+ };
17997
+ responses: {
17998
+ /** @description Comment created successfully */
17999
+ 201: {
18000
+ headers: {
18001
+ [name: string]: unknown;
18002
+ };
18003
+ content: {
18004
+ "application/json": components["schemas"]["Comment"];
18005
+ };
18006
+ };
18007
+ /** @description Invalid resource_type or content */
18008
+ 400: {
18009
+ headers: {
18010
+ [name: string]: unknown;
18011
+ };
18012
+ content: {
18013
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18014
+ };
18015
+ };
18016
+ /** @description Unauthorized */
18017
+ 401: {
18018
+ headers: {
18019
+ [name: string]: unknown;
18020
+ };
18021
+ content: {
18022
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18023
+ };
18024
+ };
18025
+ /** @description Caller may not comment in the team */
18026
+ 403: {
18027
+ headers: {
18028
+ [name: string]: unknown;
18029
+ };
18030
+ content: {
18031
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18032
+ };
18033
+ };
18034
+ /** @description Target resource not found in the team */
18035
+ 404: {
18036
+ headers: {
18037
+ [name: string]: unknown;
18038
+ };
18039
+ content: {
18040
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18041
+ };
18042
+ };
18043
+ /** @description Failed to create comment */
18044
+ 500: {
18045
+ headers: {
18046
+ [name: string]: unknown;
18047
+ };
18048
+ content: {
18049
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18050
+ };
18051
+ };
18052
+ };
18053
+ };
18054
+ listRecentComments: {
18055
+ parameters: {
18056
+ query?: {
18057
+ /** @description Maximum number of entries to return */
18058
+ limit?: number;
18059
+ };
18060
+ header?: never;
18061
+ path: {
18062
+ /** @description Team identifier */
18063
+ team_id: string;
18064
+ };
18065
+ cookie?: never;
18066
+ };
18067
+ requestBody?: never;
18068
+ responses: {
18069
+ /** @description Recent comments retrieved successfully */
18070
+ 200: {
18071
+ headers: {
18072
+ [name: string]: unknown;
18073
+ };
18074
+ content: {
18075
+ "application/json": components["schemas"]["RecentCommentListResponse"];
18076
+ };
18077
+ };
18078
+ /** @description Invalid query parameters */
18079
+ 400: {
18080
+ headers: {
18081
+ [name: string]: unknown;
18082
+ };
18083
+ content: {
18084
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18085
+ };
18086
+ };
18087
+ /** @description Unauthorized */
18088
+ 401: {
18089
+ headers: {
18090
+ [name: string]: unknown;
18091
+ };
18092
+ content: {
18093
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18094
+ };
18095
+ };
18096
+ /** @description Caller is not a member of the team */
18097
+ 403: {
18098
+ headers: {
18099
+ [name: string]: unknown;
18100
+ };
18101
+ content: {
18102
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18103
+ };
18104
+ };
18105
+ /** @description Failed to list recent comments */
18106
+ 500: {
18107
+ headers: {
18108
+ [name: string]: unknown;
18109
+ };
18110
+ content: {
18111
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18112
+ };
18113
+ };
18114
+ };
18115
+ };
18116
+ deleteComment: {
18117
+ parameters: {
18118
+ query?: never;
18119
+ header?: never;
18120
+ path: {
18121
+ /** @description Team identifier */
18122
+ team_id: string;
18123
+ /** @description Comment identifier */
18124
+ comment_id: string;
18125
+ };
18126
+ cookie?: never;
18127
+ };
18128
+ requestBody?: never;
18129
+ responses: {
18130
+ /** @description Comment deleted (no content) */
18131
+ 204: {
18132
+ headers: {
18133
+ [name: string]: unknown;
18134
+ };
18135
+ content?: never;
18136
+ };
18137
+ /** @description comment_id is not a valid UUID */
18138
+ 400: {
18139
+ headers: {
18140
+ [name: string]: unknown;
18141
+ };
18142
+ content: {
18143
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18144
+ };
18145
+ };
18146
+ /** @description Unauthorized */
18147
+ 401: {
18148
+ headers: {
18149
+ [name: string]: unknown;
18150
+ };
18151
+ content: {
18152
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18153
+ };
18154
+ };
18155
+ /** @description Caller may not delete this comment */
18156
+ 403: {
18157
+ headers: {
18158
+ [name: string]: unknown;
18159
+ };
18160
+ content: {
18161
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18162
+ };
18163
+ };
18164
+ /** @description Comment not found in the team */
18165
+ 404: {
18166
+ headers: {
18167
+ [name: string]: unknown;
18168
+ };
18169
+ content: {
18170
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18171
+ };
18172
+ };
18173
+ /** @description Failed to delete comment */
18174
+ 500: {
18175
+ headers: {
18176
+ [name: string]: unknown;
18177
+ };
18178
+ content: {
18179
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18180
+ };
18181
+ };
18182
+ };
18183
+ };
18184
+ updateComment: {
18185
+ parameters: {
18186
+ query?: never;
18187
+ header?: never;
18188
+ path: {
18189
+ /** @description Team identifier */
18190
+ team_id: string;
18191
+ /** @description Comment identifier */
18192
+ comment_id: string;
18193
+ };
18194
+ cookie?: never;
18195
+ };
18196
+ requestBody: {
18197
+ content: {
18198
+ "application/json": components["schemas"]["UpdateCommentRequest"];
18199
+ };
18200
+ };
18201
+ responses: {
18202
+ /** @description Comment updated successfully */
18203
+ 200: {
18204
+ headers: {
18205
+ [name: string]: unknown;
18206
+ };
18207
+ content: {
18208
+ "application/json": components["schemas"]["Comment"];
18209
+ };
18210
+ };
18211
+ /** @description Invalid content */
18212
+ 400: {
18213
+ headers: {
18214
+ [name: string]: unknown;
18215
+ };
18216
+ content: {
18217
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18218
+ };
18219
+ };
18220
+ /** @description Unauthorized */
18221
+ 401: {
18222
+ headers: {
18223
+ [name: string]: unknown;
18224
+ };
18225
+ content: {
18226
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18227
+ };
18228
+ };
18229
+ /** @description Caller is not the comment's author */
18230
+ 403: {
18231
+ headers: {
18232
+ [name: string]: unknown;
18233
+ };
18234
+ content: {
18235
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18236
+ };
18237
+ };
18238
+ /** @description Comment not found in the team */
18239
+ 404: {
18240
+ headers: {
18241
+ [name: string]: unknown;
18242
+ };
18243
+ content: {
18244
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18245
+ };
18246
+ };
18247
+ /** @description Failed to update comment */
18248
+ 500: {
18249
+ headers: {
18250
+ [name: string]: unknown;
18251
+ };
18252
+ content: {
18253
+ "application/problem+json": components["schemas"]["ErrorResponse"];
18254
+ };
18255
+ };
18256
+ };
18257
+ };
17669
18258
  listEmbeddingProviders: {
17670
18259
  parameters: {
17671
18260
  query?: never;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibexp/api-client",
3
- "version": "0.16.0",
3
+ "version": "0.18.0",
4
4
  "description": "Typed VibeXP API client generated from the OpenAPI spec (openapi-fetch main entrypoint, axios SDK at ./axios)",
5
5
  "license": "MIT",
6
6
  "repository": {