arbi 0.18.0__py3-none-any.whl → 0.19.0__py3-none-any.whl

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.
arbi/_version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "arbi"
4
- __version__ = "0.18.0" # x-release-please-version
4
+ __version__ = "0.19.0" # x-release-please-version
@@ -2,11 +2,12 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Optional
5
+ from typing import Iterable, Optional
6
+ from typing_extensions import Literal
6
7
 
7
8
  import httpx
8
9
 
9
- from ..._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
10
+ from ..._types import Body, Omit, Query, Headers, NoneType, NotGiven, SequenceNotStr, omit, not_given
10
11
  from ..._utils import maybe_transform, strip_not_given, async_maybe_transform
11
12
  from ..._compat import cached_property
12
13
  from ..._resource import SyncAPIResource, AsyncAPIResource
@@ -18,22 +19,23 @@ from ..._response import (
18
19
  )
19
20
  from ...types.api import (
20
21
  workspace_copy_params,
21
- workspace_share_params,
22
22
  workspace_update_params,
23
- workspace_remove_user_params,
23
+ workspace_add_users_params,
24
+ workspace_remove_users_params,
24
25
  workspace_create_protected_params,
26
+ workspace_update_user_roles_params,
25
27
  )
26
28
  from ..._base_client import make_request_options
27
29
  from ...types.api.workspace_response import WorkspaceResponse
28
30
  from ...types.api.workspace_copy_response import WorkspaceCopyResponse
29
- from ...types.api.workspace_share_response import WorkspaceShareResponse
30
31
  from ...types.api.workspace_delete_response import WorkspaceDeleteResponse
31
32
  from ...types.api.workspace_get_tags_response import WorkspaceGetTagsResponse
33
+ from ...types.api.workspace_add_users_response import WorkspaceAddUsersResponse
32
34
  from ...types.api.workspace_get_stats_response import WorkspaceGetStatsResponse
33
35
  from ...types.api.workspace_get_users_response import WorkspaceGetUsersResponse
34
- from ...types.api.workspace_remove_user_response import WorkspaceRemoveUserResponse
35
36
  from ...types.api.workspace_get_documents_response import WorkspaceGetDocumentsResponse
36
37
  from ...types.api.workspace_get_conversations_response import WorkspaceGetConversationsResponse
38
+ from ...types.api.workspace_update_user_roles_response import WorkspaceUpdateUserRolesResponse
37
39
 
38
40
  __all__ = ["WorkspaceResource", "AsyncWorkspaceResource"]
39
41
 
@@ -124,8 +126,9 @@ class WorkspaceResource(SyncAPIResource):
124
126
 
125
127
  Only the creator of the workspace is allowed to delete it.
126
128
 
127
- If the workspace
128
- deletion fails (e.g., due to RLS policy), the operation aborts.
129
+ Workspaces with other
130
+ members cannot be deleted - remove all members first. If the workspace deletion
131
+ fails (e.g., due to RLS policy), the operation aborts.
129
132
 
130
133
  Args:
131
134
  extra_headers: Send extra headers
@@ -146,6 +149,57 @@ class WorkspaceResource(SyncAPIResource):
146
149
  cast_to=WorkspaceDeleteResponse,
147
150
  )
148
151
 
152
+ def add_users(
153
+ self,
154
+ workspace_ext_id: str,
155
+ *,
156
+ emails: SequenceNotStr[str],
157
+ role: Literal["owner", "collaborator", "guest"] | Omit = omit,
158
+ workspace_key: str | Omit = omit,
159
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
160
+ # The extra values given here take precedence over values defined on the client or passed to this method.
161
+ extra_headers: Headers | None = None,
162
+ extra_query: Query | None = None,
163
+ extra_body: Body | None = None,
164
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
165
+ ) -> WorkspaceAddUsersResponse:
166
+ """Add users to a workspace (bulk operation).
167
+
168
+ Only workspace owners can add users.
169
+
170
+ Client provides SealedBox-encrypted workspace key via Workspace-Key header.
171
+ Server decrypts it using session key, then wraps it with each recipient's public
172
+ key. Returns the full WorkspaceUserResponse for each successfully added user.
173
+
174
+ Args:
175
+ role: Role of a user within a workspace.
176
+
177
+ extra_headers: Send extra headers
178
+
179
+ extra_query: Add additional query parameters to the request
180
+
181
+ extra_body: Add additional JSON properties to the request
182
+
183
+ timeout: Override the client-level default timeout for this request, in seconds
184
+ """
185
+ if not workspace_ext_id:
186
+ raise ValueError(f"Expected a non-empty value for `workspace_ext_id` but received {workspace_ext_id!r}")
187
+ extra_headers = {**strip_not_given({"workspace-key": workspace_key}), **(extra_headers or {})}
188
+ return self._post(
189
+ f"/api/workspace/{workspace_ext_id}/users",
190
+ body=maybe_transform(
191
+ {
192
+ "emails": emails,
193
+ "role": role,
194
+ },
195
+ workspace_add_users_params.WorkspaceAddUsersParams,
196
+ ),
197
+ options=make_request_options(
198
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
199
+ ),
200
+ cast_to=WorkspaceAddUsersResponse,
201
+ )
202
+
149
203
  def copy(
150
204
  self,
151
205
  workspace_ext_id: str,
@@ -460,22 +514,22 @@ class WorkspaceResource(SyncAPIResource):
460
514
  cast_to=WorkspaceGetUsersResponse,
461
515
  )
462
516
 
463
- def remove_user(
517
+ def remove_users(
464
518
  self,
465
519
  workspace_ext_id: str,
466
520
  *,
467
- user_ext_id: str,
521
+ users: Iterable[workspace_remove_users_params.User],
468
522
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
469
523
  # The extra values given here take precedence over values defined on the client or passed to this method.
470
524
  extra_headers: Headers | None = None,
471
525
  extra_query: Query | None = None,
472
526
  extra_body: Body | None = None,
473
527
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
474
- ) -> WorkspaceRemoveUserResponse:
475
- """
476
- Remove a user from a workspace.
528
+ ) -> None:
529
+ """Remove users from a workspace (bulk operation).
477
530
 
478
- RLS ensures the user can only modify workspaces they have access to.
531
+ Only workspace owners can remove
532
+ users. Users can also remove themselves from a workspace.
479
533
 
480
534
  Args:
481
535
  extra_headers: Send extra headers
@@ -488,35 +542,38 @@ class WorkspaceResource(SyncAPIResource):
488
542
  """
489
543
  if not workspace_ext_id:
490
544
  raise ValueError(f"Expected a non-empty value for `workspace_ext_id` but received {workspace_ext_id!r}")
545
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
491
546
  return self._delete(
492
- f"/api/workspace/{workspace_ext_id}/user",
493
- body=maybe_transform({"user_ext_id": user_ext_id}, workspace_remove_user_params.WorkspaceRemoveUserParams),
547
+ f"/api/workspace/{workspace_ext_id}/users",
548
+ body=maybe_transform({"users": users}, workspace_remove_users_params.WorkspaceRemoveUsersParams),
494
549
  options=make_request_options(
495
550
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
496
551
  ),
497
- cast_to=WorkspaceRemoveUserResponse,
552
+ cast_to=NoneType,
498
553
  )
499
554
 
500
- def share(
555
+ def update_user_roles(
501
556
  self,
502
557
  workspace_ext_id: str,
503
558
  *,
504
- recipient_email: str,
505
- workspace_key: str | Omit = omit,
559
+ role: Literal["owner", "collaborator", "guest"],
560
+ user_ext_ids: SequenceNotStr[str],
506
561
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
507
562
  # The extra values given here take precedence over values defined on the client or passed to this method.
508
563
  extra_headers: Headers | None = None,
509
564
  extra_query: Query | None = None,
510
565
  extra_body: Body | None = None,
511
566
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
512
- ) -> WorkspaceShareResponse:
513
- """
514
- Share a workspace with another user via their email address.
567
+ ) -> WorkspaceUpdateUserRolesResponse:
568
+ """Update user roles in a workspace (bulk operation).
515
569
 
516
- Client provides SealedBox-encrypted workspace key via Workspace-Key header.
517
- Server decrypts it using session key, then wraps it with recipient's public key.
570
+ Only workspace owners can
571
+ update roles. Returns the full WorkspaceUserResponse for each successfully
572
+ updated user.
518
573
 
519
574
  Args:
575
+ role: Role of a user within a workspace.
576
+
520
577
  extra_headers: Send extra headers
521
578
 
522
579
  extra_query: Add additional query parameters to the request
@@ -527,14 +584,19 @@ class WorkspaceResource(SyncAPIResource):
527
584
  """
528
585
  if not workspace_ext_id:
529
586
  raise ValueError(f"Expected a non-empty value for `workspace_ext_id` but received {workspace_ext_id!r}")
530
- extra_headers = {**strip_not_given({"workspace-key": workspace_key}), **(extra_headers or {})}
531
- return self._post(
532
- f"/api/workspace/{workspace_ext_id}/share",
533
- body=maybe_transform({"recipient_email": recipient_email}, workspace_share_params.WorkspaceShareParams),
587
+ return self._patch(
588
+ f"/api/workspace/{workspace_ext_id}/users",
589
+ body=maybe_transform(
590
+ {
591
+ "role": role,
592
+ "user_ext_ids": user_ext_ids,
593
+ },
594
+ workspace_update_user_roles_params.WorkspaceUpdateUserRolesParams,
595
+ ),
534
596
  options=make_request_options(
535
597
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
536
598
  ),
537
- cast_to=WorkspaceShareResponse,
599
+ cast_to=WorkspaceUpdateUserRolesResponse,
538
600
  )
539
601
 
540
602
 
@@ -624,8 +686,9 @@ class AsyncWorkspaceResource(AsyncAPIResource):
624
686
 
625
687
  Only the creator of the workspace is allowed to delete it.
626
688
 
627
- If the workspace
628
- deletion fails (e.g., due to RLS policy), the operation aborts.
689
+ Workspaces with other
690
+ members cannot be deleted - remove all members first. If the workspace deletion
691
+ fails (e.g., due to RLS policy), the operation aborts.
629
692
 
630
693
  Args:
631
694
  extra_headers: Send extra headers
@@ -646,6 +709,57 @@ class AsyncWorkspaceResource(AsyncAPIResource):
646
709
  cast_to=WorkspaceDeleteResponse,
647
710
  )
648
711
 
712
+ async def add_users(
713
+ self,
714
+ workspace_ext_id: str,
715
+ *,
716
+ emails: SequenceNotStr[str],
717
+ role: Literal["owner", "collaborator", "guest"] | Omit = omit,
718
+ workspace_key: str | Omit = omit,
719
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
720
+ # The extra values given here take precedence over values defined on the client or passed to this method.
721
+ extra_headers: Headers | None = None,
722
+ extra_query: Query | None = None,
723
+ extra_body: Body | None = None,
724
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
725
+ ) -> WorkspaceAddUsersResponse:
726
+ """Add users to a workspace (bulk operation).
727
+
728
+ Only workspace owners can add users.
729
+
730
+ Client provides SealedBox-encrypted workspace key via Workspace-Key header.
731
+ Server decrypts it using session key, then wraps it with each recipient's public
732
+ key. Returns the full WorkspaceUserResponse for each successfully added user.
733
+
734
+ Args:
735
+ role: Role of a user within a workspace.
736
+
737
+ extra_headers: Send extra headers
738
+
739
+ extra_query: Add additional query parameters to the request
740
+
741
+ extra_body: Add additional JSON properties to the request
742
+
743
+ timeout: Override the client-level default timeout for this request, in seconds
744
+ """
745
+ if not workspace_ext_id:
746
+ raise ValueError(f"Expected a non-empty value for `workspace_ext_id` but received {workspace_ext_id!r}")
747
+ extra_headers = {**strip_not_given({"workspace-key": workspace_key}), **(extra_headers or {})}
748
+ return await self._post(
749
+ f"/api/workspace/{workspace_ext_id}/users",
750
+ body=await async_maybe_transform(
751
+ {
752
+ "emails": emails,
753
+ "role": role,
754
+ },
755
+ workspace_add_users_params.WorkspaceAddUsersParams,
756
+ ),
757
+ options=make_request_options(
758
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
759
+ ),
760
+ cast_to=WorkspaceAddUsersResponse,
761
+ )
762
+
649
763
  async def copy(
650
764
  self,
651
765
  workspace_ext_id: str,
@@ -960,22 +1074,22 @@ class AsyncWorkspaceResource(AsyncAPIResource):
960
1074
  cast_to=WorkspaceGetUsersResponse,
961
1075
  )
962
1076
 
963
- async def remove_user(
1077
+ async def remove_users(
964
1078
  self,
965
1079
  workspace_ext_id: str,
966
1080
  *,
967
- user_ext_id: str,
1081
+ users: Iterable[workspace_remove_users_params.User],
968
1082
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
969
1083
  # The extra values given here take precedence over values defined on the client or passed to this method.
970
1084
  extra_headers: Headers | None = None,
971
1085
  extra_query: Query | None = None,
972
1086
  extra_body: Body | None = None,
973
1087
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
974
- ) -> WorkspaceRemoveUserResponse:
975
- """
976
- Remove a user from a workspace.
1088
+ ) -> None:
1089
+ """Remove users from a workspace (bulk operation).
977
1090
 
978
- RLS ensures the user can only modify workspaces they have access to.
1091
+ Only workspace owners can remove
1092
+ users. Users can also remove themselves from a workspace.
979
1093
 
980
1094
  Args:
981
1095
  extra_headers: Send extra headers
@@ -988,37 +1102,40 @@ class AsyncWorkspaceResource(AsyncAPIResource):
988
1102
  """
989
1103
  if not workspace_ext_id:
990
1104
  raise ValueError(f"Expected a non-empty value for `workspace_ext_id` but received {workspace_ext_id!r}")
1105
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
991
1106
  return await self._delete(
992
- f"/api/workspace/{workspace_ext_id}/user",
1107
+ f"/api/workspace/{workspace_ext_id}/users",
993
1108
  body=await async_maybe_transform(
994
- {"user_ext_id": user_ext_id}, workspace_remove_user_params.WorkspaceRemoveUserParams
1109
+ {"users": users}, workspace_remove_users_params.WorkspaceRemoveUsersParams
995
1110
  ),
996
1111
  options=make_request_options(
997
1112
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
998
1113
  ),
999
- cast_to=WorkspaceRemoveUserResponse,
1114
+ cast_to=NoneType,
1000
1115
  )
1001
1116
 
1002
- async def share(
1117
+ async def update_user_roles(
1003
1118
  self,
1004
1119
  workspace_ext_id: str,
1005
1120
  *,
1006
- recipient_email: str,
1007
- workspace_key: str | Omit = omit,
1121
+ role: Literal["owner", "collaborator", "guest"],
1122
+ user_ext_ids: SequenceNotStr[str],
1008
1123
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1009
1124
  # The extra values given here take precedence over values defined on the client or passed to this method.
1010
1125
  extra_headers: Headers | None = None,
1011
1126
  extra_query: Query | None = None,
1012
1127
  extra_body: Body | None = None,
1013
1128
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
1014
- ) -> WorkspaceShareResponse:
1015
- """
1016
- Share a workspace with another user via their email address.
1129
+ ) -> WorkspaceUpdateUserRolesResponse:
1130
+ """Update user roles in a workspace (bulk operation).
1017
1131
 
1018
- Client provides SealedBox-encrypted workspace key via Workspace-Key header.
1019
- Server decrypts it using session key, then wraps it with recipient's public key.
1132
+ Only workspace owners can
1133
+ update roles. Returns the full WorkspaceUserResponse for each successfully
1134
+ updated user.
1020
1135
 
1021
1136
  Args:
1137
+ role: Role of a user within a workspace.
1138
+
1022
1139
  extra_headers: Send extra headers
1023
1140
 
1024
1141
  extra_query: Add additional query parameters to the request
@@ -1029,16 +1146,19 @@ class AsyncWorkspaceResource(AsyncAPIResource):
1029
1146
  """
1030
1147
  if not workspace_ext_id:
1031
1148
  raise ValueError(f"Expected a non-empty value for `workspace_ext_id` but received {workspace_ext_id!r}")
1032
- extra_headers = {**strip_not_given({"workspace-key": workspace_key}), **(extra_headers or {})}
1033
- return await self._post(
1034
- f"/api/workspace/{workspace_ext_id}/share",
1149
+ return await self._patch(
1150
+ f"/api/workspace/{workspace_ext_id}/users",
1035
1151
  body=await async_maybe_transform(
1036
- {"recipient_email": recipient_email}, workspace_share_params.WorkspaceShareParams
1152
+ {
1153
+ "role": role,
1154
+ "user_ext_ids": user_ext_ids,
1155
+ },
1156
+ workspace_update_user_roles_params.WorkspaceUpdateUserRolesParams,
1037
1157
  ),
1038
1158
  options=make_request_options(
1039
1159
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1040
1160
  ),
1041
- cast_to=WorkspaceShareResponse,
1161
+ cast_to=WorkspaceUpdateUserRolesResponse,
1042
1162
  )
1043
1163
 
1044
1164
 
@@ -1052,6 +1172,9 @@ class WorkspaceResourceWithRawResponse:
1052
1172
  self.delete = to_raw_response_wrapper(
1053
1173
  workspace.delete,
1054
1174
  )
1175
+ self.add_users = to_raw_response_wrapper(
1176
+ workspace.add_users,
1177
+ )
1055
1178
  self.copy = to_raw_response_wrapper(
1056
1179
  workspace.copy,
1057
1180
  )
@@ -1073,11 +1196,11 @@ class WorkspaceResourceWithRawResponse:
1073
1196
  self.get_users = to_raw_response_wrapper(
1074
1197
  workspace.get_users,
1075
1198
  )
1076
- self.remove_user = to_raw_response_wrapper(
1077
- workspace.remove_user,
1199
+ self.remove_users = to_raw_response_wrapper(
1200
+ workspace.remove_users,
1078
1201
  )
1079
- self.share = to_raw_response_wrapper(
1080
- workspace.share,
1202
+ self.update_user_roles = to_raw_response_wrapper(
1203
+ workspace.update_user_roles,
1081
1204
  )
1082
1205
 
1083
1206
 
@@ -1091,6 +1214,9 @@ class AsyncWorkspaceResourceWithRawResponse:
1091
1214
  self.delete = async_to_raw_response_wrapper(
1092
1215
  workspace.delete,
1093
1216
  )
1217
+ self.add_users = async_to_raw_response_wrapper(
1218
+ workspace.add_users,
1219
+ )
1094
1220
  self.copy = async_to_raw_response_wrapper(
1095
1221
  workspace.copy,
1096
1222
  )
@@ -1112,11 +1238,11 @@ class AsyncWorkspaceResourceWithRawResponse:
1112
1238
  self.get_users = async_to_raw_response_wrapper(
1113
1239
  workspace.get_users,
1114
1240
  )
1115
- self.remove_user = async_to_raw_response_wrapper(
1116
- workspace.remove_user,
1241
+ self.remove_users = async_to_raw_response_wrapper(
1242
+ workspace.remove_users,
1117
1243
  )
1118
- self.share = async_to_raw_response_wrapper(
1119
- workspace.share,
1244
+ self.update_user_roles = async_to_raw_response_wrapper(
1245
+ workspace.update_user_roles,
1120
1246
  )
1121
1247
 
1122
1248
 
@@ -1130,6 +1256,9 @@ class WorkspaceResourceWithStreamingResponse:
1130
1256
  self.delete = to_streamed_response_wrapper(
1131
1257
  workspace.delete,
1132
1258
  )
1259
+ self.add_users = to_streamed_response_wrapper(
1260
+ workspace.add_users,
1261
+ )
1133
1262
  self.copy = to_streamed_response_wrapper(
1134
1263
  workspace.copy,
1135
1264
  )
@@ -1151,11 +1280,11 @@ class WorkspaceResourceWithStreamingResponse:
1151
1280
  self.get_users = to_streamed_response_wrapper(
1152
1281
  workspace.get_users,
1153
1282
  )
1154
- self.remove_user = to_streamed_response_wrapper(
1155
- workspace.remove_user,
1283
+ self.remove_users = to_streamed_response_wrapper(
1284
+ workspace.remove_users,
1156
1285
  )
1157
- self.share = to_streamed_response_wrapper(
1158
- workspace.share,
1286
+ self.update_user_roles = to_streamed_response_wrapper(
1287
+ workspace.update_user_roles,
1159
1288
  )
1160
1289
 
1161
1290
 
@@ -1169,6 +1298,9 @@ class AsyncWorkspaceResourceWithStreamingResponse:
1169
1298
  self.delete = async_to_streamed_response_wrapper(
1170
1299
  workspace.delete,
1171
1300
  )
1301
+ self.add_users = async_to_streamed_response_wrapper(
1302
+ workspace.add_users,
1303
+ )
1172
1304
  self.copy = async_to_streamed_response_wrapper(
1173
1305
  workspace.copy,
1174
1306
  )
@@ -1190,9 +1322,9 @@ class AsyncWorkspaceResourceWithStreamingResponse:
1190
1322
  self.get_users = async_to_streamed_response_wrapper(
1191
1323
  workspace.get_users,
1192
1324
  )
1193
- self.remove_user = async_to_streamed_response_wrapper(
1194
- workspace.remove_user,
1325
+ self.remove_users = async_to_streamed_response_wrapper(
1326
+ workspace.remove_users,
1195
1327
  )
1196
- self.share = async_to_streamed_response_wrapper(
1197
- workspace.share,
1328
+ self.update_user_roles = async_to_streamed_response_wrapper(
1329
+ workspace.update_user_roles,
1198
1330
  )
@@ -35,7 +35,6 @@ from .document_upload_params import DocumentUploadParams as DocumentUploadParams
35
35
  from .query_llm_config_param import QueryLlmConfigParam as QueryLlmConfigParam
36
36
  from .retriever_config_param import RetrieverConfigParam as RetrieverConfigParam
37
37
  from .title_llm_config_param import TitleLlmConfigParam as TitleLlmConfigParam
38
- from .workspace_share_params import WorkspaceShareParams as WorkspaceShareParams
39
38
  from .workspace_copy_response import WorkspaceCopyResponse as WorkspaceCopyResponse
40
39
  from .workspace_update_params import WorkspaceUpdateParams as WorkspaceUpdateParams
41
40
  from .config_retrieve_response import ConfigRetrieveResponse as ConfigRetrieveResponse
@@ -43,7 +42,6 @@ from .document_retrieve_params import DocumentRetrieveParams as DocumentRetrieve
43
42
  from .document_update_response import DocumentUpdateResponse as DocumentUpdateResponse
44
43
  from .document_upload_response import DocumentUploadResponse as DocumentUploadResponse
45
44
  from .user_verify_email_params import UserVerifyEmailParams as UserVerifyEmailParams
46
- from .workspace_share_response import WorkspaceShareResponse as WorkspaceShareResponse
47
45
  from .assistant_retrieve_params import AssistantRetrieveParams as AssistantRetrieveParams
48
46
  from .workspace_delete_response import WorkspaceDeleteResponse as WorkspaceDeleteResponse
49
47
  from .document_retrieve_response import DocumentRetrieveResponse as DocumentRetrieveResponse
@@ -53,6 +51,7 @@ from .notification_delete_params import NotificationDeleteParams as Notification
53
51
  from .notification_list_response import NotificationListResponse as NotificationListResponse
54
52
  from .notification_update_params import NotificationUpdateParams as NotificationUpdateParams
55
53
  from .user_verify_email_response import UserVerifyEmailResponse as UserVerifyEmailResponse
54
+ from .workspace_add_users_params import WorkspaceAddUsersParams as WorkspaceAddUsersParams
56
55
  from .conversation_share_response import ConversationShareResponse as ConversationShareResponse
57
56
  from .model_citation_config_param import ModelCitationConfigParam as ModelCitationConfigParam
58
57
  from .user_change_password_params import UserChangePasswordParams as UserChangePasswordParams
@@ -65,13 +64,13 @@ from .health_check_models_response import HealthCheckModelsResponse as HealthChe
65
64
  from .notification_create_response import NotificationCreateResponse as NotificationCreateResponse
66
65
  from .notification_update_response import NotificationUpdateResponse as NotificationUpdateResponse
67
66
  from .user_check_sso_status_params import UserCheckSSOStatusParams as UserCheckSSOStatusParams
67
+ from .workspace_add_users_response import WorkspaceAddUsersResponse as WorkspaceAddUsersResponse
68
68
  from .workspace_get_stats_response import WorkspaceGetStatsResponse as WorkspaceGetStatsResponse
69
69
  from .workspace_get_users_response import WorkspaceGetUsersResponse as WorkspaceGetUsersResponse
70
- from .workspace_remove_user_params import WorkspaceRemoveUserParams as WorkspaceRemoveUserParams
71
70
  from .user_change_password_response import UserChangePasswordResponse as UserChangePasswordResponse
72
71
  from .user_list_workspaces_response import UserListWorkspacesResponse as UserListWorkspacesResponse
72
+ from .workspace_remove_users_params import WorkspaceRemoveUsersParams as WorkspaceRemoveUsersParams
73
73
  from .user_check_sso_status_response import UserCheckSSOStatusResponse as UserCheckSSOStatusResponse
74
- from .workspace_remove_user_response import WorkspaceRemoveUserResponse as WorkspaceRemoveUserResponse
75
74
  from .document_upload_from_url_params import DocumentUploadFromURLParams as DocumentUploadFromURLParams
76
75
  from .health_retrieve_status_response import HealthRetrieveStatusResponse as HealthRetrieveStatusResponse
77
76
  from .conversation_update_title_params import ConversationUpdateTitleParams as ConversationUpdateTitleParams
@@ -81,8 +80,10 @@ from .notification_get_schemas_response import NotificationGetSchemasResponse as
81
80
  from .workspace_create_protected_params import WorkspaceCreateProtectedParams as WorkspaceCreateProtectedParams
82
81
  from .conversation_update_title_response import ConversationUpdateTitleResponse as ConversationUpdateTitleResponse
83
82
  from .document_date_extractor_llm_config import DocumentDateExtractorLlmConfig as DocumentDateExtractorLlmConfig
83
+ from .workspace_update_user_roles_params import WorkspaceUpdateUserRolesParams as WorkspaceUpdateUserRolesParams
84
84
  from .conversation_delete_message_response import ConversationDeleteMessageResponse as ConversationDeleteMessageResponse
85
85
  from .workspace_get_conversations_response import WorkspaceGetConversationsResponse as WorkspaceGetConversationsResponse
86
+ from .workspace_update_user_roles_response import WorkspaceUpdateUserRolesResponse as WorkspaceUpdateUserRolesResponse
86
87
  from .conversation_retrieve_message_response import (
87
88
  ConversationRetrieveMessageResponse as ConversationRetrieveMessageResponse,
88
89
  )
@@ -2,7 +2,7 @@
2
2
 
3
3
  from typing import List, Optional
4
4
  from datetime import datetime
5
- from typing_extensions import TypeAlias
5
+ from typing_extensions import Literal, TypeAlias
6
6
 
7
7
  from ..._models import BaseModel
8
8
  from .user_response import UserResponse
@@ -33,7 +33,21 @@ class NotificationCreateResponseItem(BaseModel):
33
33
  Used for: login response, workspace users, contacts (when registered).
34
34
  """
35
35
 
36
- type: str
36
+ type: Literal[
37
+ "user_message",
38
+ "workspaceuser_added_owner",
39
+ "workspaceuser_added_collaborator",
40
+ "workspaceuser_added_guest",
41
+ "workspaceuser_removed",
42
+ "workspaceuser_updated_owner",
43
+ "workspaceuser_updated_collaborator",
44
+ "workspaceuser_updated_guest",
45
+ "contact_accepted",
46
+ ]
47
+ """Notification types - all persisted AND delivered via WebSocket.
48
+
49
+ Type is self-descriptive, no need to parse content field.
50
+ """
37
51
 
38
52
  updated_at: datetime
39
53
 
@@ -10,19 +10,19 @@ from .user_response import UserResponse
10
10
  __all__ = [
11
11
  "NotificationGetSchemasResponse",
12
12
  "ClientMessage",
13
+ "ClientMessageAuthMessage",
14
+ "ClientMessageSendMessageRequestOutput",
13
15
  "ServerMessage",
14
16
  "ServerMessageAuthResultMessage",
15
17
  "ServerMessageConnectionClosedMessage",
16
18
  "ServerMessagePresenceUpdateMessage",
17
19
  "ServerMessageErrorMessage",
18
20
  "ServerMessageTaskUpdateMessage",
19
- "ServerMessageUserMessageNotification",
20
- "ServerMessageWorkspaceShareNotification",
21
- "ServerMessageContactAcceptedNotification",
21
+ "ServerMessageNotificationResponse",
22
22
  ]
23
23
 
24
24
 
25
- class ClientMessage(BaseModel):
25
+ class ClientMessageAuthMessage(BaseModel):
26
26
  """Client authentication message."""
27
27
 
28
28
  token: str
@@ -30,6 +30,19 @@ class ClientMessage(BaseModel):
30
30
  type: Optional[Literal["auth"]] = None
31
31
 
32
32
 
33
+ class ClientMessageSendMessageRequestOutput(BaseModel):
34
+ """Client request to send an encrypted message."""
35
+
36
+ encrypted_content: str
37
+
38
+ recipient: str
39
+
40
+ type: Optional[Literal["send_message"]] = None
41
+
42
+
43
+ ClientMessage: TypeAlias = Union[ClientMessageAuthMessage, ClientMessageSendMessageRequestOutput]
44
+
45
+
33
46
  class ServerMessageAuthResultMessage(BaseModel):
34
47
  """Server response to authentication."""
35
48
 
@@ -84,21 +97,17 @@ class ServerMessageTaskUpdateMessage(BaseModel):
84
97
  type: Optional[Literal["task_update"]] = None
85
98
 
86
99
 
87
- class ServerMessageUserMessageNotification(BaseModel):
88
- """E2E encrypted message (bilateral).
100
+ class ServerMessageNotificationResponse(BaseModel):
101
+ """Notification response model for API and WebSocket.
89
102
 
90
- One row, both parties see it via RLS.
91
- Client: sender == me → I sent it, else I received it.
103
+ Bilateral: both sender and recipient see the same row.
104
+ Client determines perspective: sender == me → I sent it, else I received it.
92
105
  """
93
106
 
94
- content: str
95
-
96
107
  created_at: datetime
97
108
 
98
109
  external_id: str
99
110
 
100
- new: bool
101
-
102
111
  recipient: UserResponse
103
112
  """Standard user representation used across all endpoints.
104
113
 
@@ -111,70 +120,29 @@ class ServerMessageUserMessageNotification(BaseModel):
111
120
  Used for: login response, workspace users, contacts (when registered).
112
121
  """
113
122
 
114
- updated_at: datetime
115
-
116
- type: Optional[Literal["user_message"]] = None
117
-
118
-
119
- class ServerMessageWorkspaceShareNotification(BaseModel):
120
- """Workspace shared (bilateral).
121
-
122
- One row, both parties see it via RLS.
123
- """
124
-
125
- created_at: datetime
126
-
127
- external_id: str
128
-
129
- new: bool
130
-
131
- recipient: UserResponse
132
- """Standard user representation used across all endpoints.
133
-
134
- Used for: login response, workspace users, contacts (when registered).
135
- """
136
-
137
- sender: UserResponse
138
- """Standard user representation used across all endpoints.
139
-
140
- Used for: login response, workspace users, contacts (when registered).
123
+ type: Literal[
124
+ "user_message",
125
+ "workspaceuser_added_owner",
126
+ "workspaceuser_added_collaborator",
127
+ "workspaceuser_added_guest",
128
+ "workspaceuser_removed",
129
+ "workspaceuser_updated_owner",
130
+ "workspaceuser_updated_collaborator",
131
+ "workspaceuser_updated_guest",
132
+ "contact_accepted",
133
+ ]
134
+ """Notification types - all persisted AND delivered via WebSocket.
135
+
136
+ Type is self-descriptive, no need to parse content field.
141
137
  """
142
138
 
143
139
  updated_at: datetime
144
140
 
145
- workspace_ext_id: str
146
-
147
- type: Optional[Literal["workspace_share"]] = None
148
-
149
-
150
- class ServerMessageContactAcceptedNotification(BaseModel):
151
- """Contact invitation accepted.
152
-
153
- Sent to inviter when their invited contact registers.
154
- sender = new user who registered, recipient = inviter.
155
- """
156
-
157
- created_at: datetime
158
-
159
- external_id: str
160
-
161
- new: bool
141
+ content: Optional[str] = None
162
142
 
163
- recipient: UserResponse
164
- """Standard user representation used across all endpoints.
165
-
166
- Used for: login response, workspace users, contacts (when registered).
167
- """
168
-
169
- sender: UserResponse
170
- """Standard user representation used across all endpoints.
171
-
172
- Used for: login response, workspace users, contacts (when registered).
173
- """
174
-
175
- updated_at: datetime
143
+ new: Optional[bool] = None
176
144
 
177
- type: Optional[Literal["contact_accepted"]] = None
145
+ workspace_ext_id: Optional[str] = None
178
146
 
179
147
 
180
148
  ServerMessage: TypeAlias = Union[
@@ -183,9 +151,7 @@ ServerMessage: TypeAlias = Union[
183
151
  ServerMessagePresenceUpdateMessage,
184
152
  ServerMessageErrorMessage,
185
153
  ServerMessageTaskUpdateMessage,
186
- ServerMessageUserMessageNotification,
187
- ServerMessageWorkspaceShareNotification,
188
- ServerMessageContactAcceptedNotification,
154
+ ServerMessageNotificationResponse,
189
155
  ]
190
156
 
191
157
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  from typing import List, Optional
4
4
  from datetime import datetime
5
- from typing_extensions import TypeAlias
5
+ from typing_extensions import Literal, TypeAlias
6
6
 
7
7
  from ..._models import BaseModel
8
8
  from .user_response import UserResponse
@@ -33,7 +33,21 @@ class NotificationListResponseItem(BaseModel):
33
33
  Used for: login response, workspace users, contacts (when registered).
34
34
  """
35
35
 
36
- type: str
36
+ type: Literal[
37
+ "user_message",
38
+ "workspaceuser_added_owner",
39
+ "workspaceuser_added_collaborator",
40
+ "workspaceuser_added_guest",
41
+ "workspaceuser_removed",
42
+ "workspaceuser_updated_owner",
43
+ "workspaceuser_updated_collaborator",
44
+ "workspaceuser_updated_guest",
45
+ "contact_accepted",
46
+ ]
47
+ """Notification types - all persisted AND delivered via WebSocket.
48
+
49
+ Type is self-descriptive, no need to parse content field.
50
+ """
37
51
 
38
52
  updated_at: datetime
39
53
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  from typing import List, Optional
4
4
  from datetime import datetime
5
- from typing_extensions import TypeAlias
5
+ from typing_extensions import Literal, TypeAlias
6
6
 
7
7
  from ..._models import BaseModel
8
8
  from .user_response import UserResponse
@@ -33,7 +33,21 @@ class NotificationUpdateResponseItem(BaseModel):
33
33
  Used for: login response, workspace users, contacts (when registered).
34
34
  """
35
35
 
36
- type: str
36
+ type: Literal[
37
+ "user_message",
38
+ "workspaceuser_added_owner",
39
+ "workspaceuser_added_collaborator",
40
+ "workspaceuser_added_guest",
41
+ "workspaceuser_removed",
42
+ "workspaceuser_updated_owner",
43
+ "workspaceuser_updated_collaborator",
44
+ "workspaceuser_updated_guest",
45
+ "contact_accepted",
46
+ ]
47
+ """Notification types - all persisted AND delivered via WebSocket.
48
+
49
+ Type is self-descriptive, no need to parse content field.
50
+ """
37
51
 
38
52
  updated_at: datetime
39
53
 
@@ -0,0 +1,19 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Literal, Required, Annotated, TypedDict
6
+
7
+ from ..._types import SequenceNotStr
8
+ from ..._utils import PropertyInfo
9
+
10
+ __all__ = ["WorkspaceAddUsersParams"]
11
+
12
+
13
+ class WorkspaceAddUsersParams(TypedDict, total=False):
14
+ emails: Required[SequenceNotStr[str]]
15
+
16
+ role: Literal["owner", "collaborator", "guest"]
17
+ """Role of a user within a workspace."""
18
+
19
+ workspace_key: Annotated[str, PropertyInfo(alias="workspace-key")]
@@ -0,0 +1,32 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal, TypeAlias
6
+
7
+ from ..._models import BaseModel
8
+ from .user_response import UserResponse
9
+
10
+ __all__ = ["WorkspaceAddUsersResponse", "WorkspaceAddUsersResponseItem"]
11
+
12
+
13
+ class WorkspaceAddUsersResponseItem(BaseModel):
14
+ """User with their role in a workspace."""
15
+
16
+ joined_at: datetime
17
+
18
+ role: Literal["owner", "collaborator", "guest"]
19
+ """Role of a user within a workspace."""
20
+
21
+ user: UserResponse
22
+ """Standard user representation used across all endpoints.
23
+
24
+ Used for: login response, workspace users, contacts (when registered).
25
+ """
26
+
27
+ conversation_count: Optional[int] = None
28
+
29
+ document_count: Optional[int] = None
30
+
31
+
32
+ WorkspaceAddUsersResponse: TypeAlias = List[WorkspaceAddUsersResponseItem]
@@ -1,10 +1,32 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
- from typing import List
4
- from typing_extensions import TypeAlias
3
+ from typing import List, Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal, TypeAlias
5
6
 
7
+ from ..._models import BaseModel
6
8
  from .user_response import UserResponse
7
9
 
8
- __all__ = ["WorkspaceGetUsersResponse"]
10
+ __all__ = ["WorkspaceGetUsersResponse", "WorkspaceGetUsersResponseItem"]
9
11
 
10
- WorkspaceGetUsersResponse: TypeAlias = List[UserResponse]
12
+
13
+ class WorkspaceGetUsersResponseItem(BaseModel):
14
+ """User with their role in a workspace."""
15
+
16
+ joined_at: datetime
17
+
18
+ role: Literal["owner", "collaborator", "guest"]
19
+ """Role of a user within a workspace."""
20
+
21
+ user: UserResponse
22
+ """Standard user representation used across all endpoints.
23
+
24
+ Used for: login response, workspace users, contacts (when registered).
25
+ """
26
+
27
+ conversation_count: Optional[int] = None
28
+
29
+ document_count: Optional[int] = None
30
+
31
+
32
+ WorkspaceGetUsersResponse: TypeAlias = List[WorkspaceGetUsersResponseItem]
@@ -0,0 +1,18 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Iterable
6
+ from typing_extensions import Required, TypedDict
7
+
8
+ __all__ = ["WorkspaceRemoveUsersParams", "User"]
9
+
10
+
11
+ class WorkspaceRemoveUsersParams(TypedDict, total=False):
12
+ users: Required[Iterable[User]]
13
+
14
+
15
+ class User(TypedDict, total=False):
16
+ """A user to remove from a workspace."""
17
+
18
+ user_ext_id: Required[str]
@@ -2,11 +2,31 @@
2
2
 
3
3
  from typing import List, Optional
4
4
  from datetime import datetime
5
+ from typing_extensions import Literal
5
6
 
6
7
  from ..._models import BaseModel
7
8
  from .user_response import UserResponse
8
9
 
9
- __all__ = ["WorkspaceResponse"]
10
+ __all__ = ["WorkspaceResponse", "User"]
11
+
12
+
13
+ class User(BaseModel):
14
+ """User with their role in a workspace."""
15
+
16
+ joined_at: datetime
17
+
18
+ role: Literal["owner", "collaborator", "guest"]
19
+ """Role of a user within a workspace."""
20
+
21
+ user: UserResponse
22
+ """Standard user representation used across all endpoints.
23
+
24
+ Used for: login response, workspace users, contacts (when registered).
25
+ """
26
+
27
+ conversation_count: Optional[int] = None
28
+
29
+ document_count: Optional[int] = None
10
30
 
11
31
 
12
32
  class WorkspaceResponse(BaseModel):
@@ -36,6 +56,6 @@ class WorkspaceResponse(BaseModel):
36
56
 
37
57
  user_files_mb: Optional[float] = None
38
58
 
39
- users: Optional[List[UserResponse]] = None
59
+ users: Optional[List[User]] = None
40
60
 
41
61
  wrapped_key: Optional[str] = None
@@ -0,0 +1,16 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing_extensions import Literal, Required, TypedDict
6
+
7
+ from ..._types import SequenceNotStr
8
+
9
+ __all__ = ["WorkspaceUpdateUserRolesParams"]
10
+
11
+
12
+ class WorkspaceUpdateUserRolesParams(TypedDict, total=False):
13
+ role: Required[Literal["owner", "collaborator", "guest"]]
14
+ """Role of a user within a workspace."""
15
+
16
+ user_ext_ids: Required[SequenceNotStr[str]]
@@ -0,0 +1,32 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal, TypeAlias
6
+
7
+ from ..._models import BaseModel
8
+ from .user_response import UserResponse
9
+
10
+ __all__ = ["WorkspaceUpdateUserRolesResponse", "WorkspaceUpdateUserRolesResponseItem"]
11
+
12
+
13
+ class WorkspaceUpdateUserRolesResponseItem(BaseModel):
14
+ """User with their role in a workspace."""
15
+
16
+ joined_at: datetime
17
+
18
+ role: Literal["owner", "collaborator", "guest"]
19
+ """Role of a user within a workspace."""
20
+
21
+ user: UserResponse
22
+ """Standard user representation used across all endpoints.
23
+
24
+ Used for: login response, workspace users, contacts (when registered).
25
+ """
26
+
27
+ conversation_count: Optional[int] = None
28
+
29
+ document_count: Optional[int] = None
30
+
31
+
32
+ WorkspaceUpdateUserRolesResponse: TypeAlias = List[WorkspaceUpdateUserRolesResponseItem]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arbi
3
- Version: 0.18.0
3
+ Version: 0.19.0
4
4
  Summary: The official Python library for the arbi API
5
5
  Project-URL: Homepage, https://github.com/arbitrationcity/arbi-python
6
6
  Project-URL: Repository, https://github.com/arbitrationcity/arbi-python
@@ -11,7 +11,7 @@ arbi/_resource.py,sha256=eBjjRTRH59kNM8uLWIK04QCR0Sknrv9fEs4DvHw749U,1088
11
11
  arbi/_response.py,sha256=YuaBc04B9DUJJE0ptEY4_9l_sEhDGdmfNEoow70cdRk,28776
12
12
  arbi/_streaming.py,sha256=zM6RuNmZ9OAqxHDIFwDF7Y3L3jisK0Q0rXf_OLNW0Vo,10213
13
13
  arbi/_types.py,sha256=qHso3-pk4h6jshu2oK8SUYyqdfuXot8X3qnFpDmlj0c,7592
14
- arbi/_version.py,sha256=UGXiiI5ce5uP-Mxph4EB9wImuJw2AnkAJjkDhbSQ084,157
14
+ arbi/_version.py,sha256=_Wj_4bk8ZeLQGXJ_oRNhOi2S6ovH1l-aMzxribO1VbY,157
15
15
  arbi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  arbi/_utils/__init__.py,sha256=7fch0GT9zpNnErbciSpUNa-SjTxxjY6kxHxKMOM4AGs,2305
17
17
  arbi/_utils/_compat.py,sha256=D8gtAvjJQrDWt9upS0XaG9Rr5l1QhiAx_I_1utT_tt0,1195
@@ -34,7 +34,7 @@ arbi/resources/api/configs.py,sha256=B7GPtw7tudT9C1Sw_-4lk6xkm9qDd9pm3oLeDFojvEk
34
34
  arbi/resources/api/health.py,sha256=KyFR9x1Mr1QhlAxhd7w6azkm0vSlA6Ur1GLstfCrcWI,10186
35
35
  arbi/resources/api/notifications.py,sha256=EVDNBR0fMiVhViMpdJoHzbxonBCENhYEkdqxhiv7dfY,19209
36
36
  arbi/resources/api/tag.py,sha256=1XtSfY_4RsQEYRdCP-I9J3m6h0kOP6UMeKekSR2qbZg,15544
37
- arbi/resources/api/workspace.py,sha256=M_BNnLvUNbX_zJ_7b1FojahCC-jWKRY_XB28bb-NIlQ,48894
37
+ arbi/resources/api/workspace.py,sha256=5T_zxD2VwMCYOptBPYpvLteE2xTi0iRgy6MFKZKJgeU,54435
38
38
  arbi/resources/api/conversation/__init__.py,sha256=WQKtfAPfHwgtRJaTnZszRZmQ0caUcMcDv7EHhu1rf4U,1054
39
39
  arbi/resources/api/conversation/conversation.py,sha256=rrtiNir0XzV74rKvaT3gFQTBRoU3Z66lE167JJDJpvo,26666
40
40
  arbi/resources/api/conversation/user.py,sha256=SBvtd4XkpZyMpwVAh-MV_vKptE6YoGKoGohx5zH5WNw,10280
@@ -51,7 +51,7 @@ arbi/types/chunk.py,sha256=J6LQxWxLDW9feXQZOiYNNSBKgwkzhXgf74DS_noHFLs,254
51
51
  arbi/types/chunk_metadata.py,sha256=GHcVONko0WWfDAa6rvLHldxgxL2IWmI6NqKwXAJLgYQ,545
52
52
  arbi/types/chunk_metadata_param.py,sha256=UwGaK35hTMRR-YKPivEpQtUorIAqu-I7did2HnOV4aE,629
53
53
  arbi/types/chunk_param.py,sha256=YI77ArEd8KXaDXspgezw1h36xQhoCnb4iwX6Hws3nzU,368
54
- arbi/types/api/__init__.py,sha256=__3EH6nVLADXbk4z-HNM-2hPXt4anP2goipC0Wp_MU0,7601
54
+ arbi/types/api/__init__.py,sha256=mdc1nQmwrMLeYZOgLqF0vfHUWz4aN4tHsTEQhIfkRHs,7753
55
55
  arbi/types/api/assistant_query_params.py,sha256=iyDQx6ROk6xjLiYDqkTUZt4awc5szYHhAR6HWcWpTQk,2266
56
56
  arbi/types/api/assistant_retrieve_params.py,sha256=IXuOOeuu-fT2syIMf1tTtaRUB5cDs_xnyZ8UDh73B4I,2272
57
57
  arbi/types/api/chunker_config_param.py,sha256=hdYyEXCdR_g6DB_c0EuoH_73MocVOVaqwaV2Z5D_hCs,237
@@ -88,12 +88,12 @@ arbi/types/api/health_retrieve_status_response.py,sha256=Tb5BV2NyzJnBG7JQA_25pKM
88
88
  arbi/types/api/model_citation_config.py,sha256=Y3xDl-Y2JmDV399iviALSeg-8r-vACx_7ah6PtEsIoM,774
89
89
  arbi/types/api/model_citation_config_param.py,sha256=VtKOJMJoQaqacP7hMHL2TyYPIIIraHA7eN00OGhWygs,784
90
90
  arbi/types/api/notification_create_params.py,sha256=mbSdniLjayp4xc3Q0QZ_2tPVWdkf0WCB3lK5dJchwlU,508
91
- arbi/types/api/notification_create_response.py,sha256=5HO6wcZIL2_EX4FEN7OGfKpCRGfN52OIf0YfJ231Cq0,1229
91
+ arbi/types/api/notification_create_response.py,sha256=jmRbn-hs9qrxAtgDPXxH6v0ty1mknuei-6bwSmrV44o,1718
92
92
  arbi/types/api/notification_delete_params.py,sha256=Zjpc4Jg6TMiQ9xzEhUMuMEABgw8eGE11CRe6M2ylh94,357
93
- arbi/types/api/notification_get_schemas_response.py,sha256=V_SoGi16vyCnyZlL8KQVLBz9I_qASKN83QzYJCxvJdU,4673
94
- arbi/types/api/notification_list_response.py,sha256=C8rO-9NNINNbL7u4Hrt3EFchnFzCr-yzuRGN3lujx2U,1219
93
+ arbi/types/api/notification_get_schemas_response.py,sha256=tXwsfaZP9W_m-4RrZ9IVlXgSlB6VAdYOfTRIQerMUSo,4071
94
+ arbi/types/api/notification_list_response.py,sha256=ref9wfDue1IIi6HXo6Em1OoAdqGr1ftWZ0uVqBIsv5A,1708
95
95
  arbi/types/api/notification_update_params.py,sha256=Dp2_bIZ6kjaU_JSRSvqfs8TDpn0bqLRjFHHM0zpr7f8,676
96
- arbi/types/api/notification_update_response.py,sha256=e3kNCFmKJK96xYsF4Gt-S864tyoodZc_j7HKJo7A398,1229
96
+ arbi/types/api/notification_update_response.py,sha256=41tZFbqWV19tV0FNJ_6QWwm355HqLs-YQZQCMSY_ZHI,1718
97
97
  arbi/types/api/parser_config_param.py,sha256=lFJO9CO8m3e8YFltmHLrMKhC83FFwCJWjsua5l3Jjic,235
98
98
  arbi/types/api/query_llm_config.py,sha256=LkDKaQgcaOg7HC76jW1RGGOnbZnwXSsjB42HXFLeTzE,1102
99
99
  arbi/types/api/query_llm_config_param.py,sha256=bKGnr2jRqSI9BxnemLLehkRLCba9WvrS82LhtsnAPvc,1046
@@ -121,6 +121,8 @@ arbi/types/api/user_register_params.py,sha256=O0A9BnTrtl8NU5cJA3B_sG302Fa7tewiLL
121
121
  arbi/types/api/user_response.py,sha256=uDXvGo9w8str7zcNmcam02C4oDEBCC1q7HDnlbocSo8,505
122
122
  arbi/types/api/user_verify_email_params.py,sha256=urUDkRA7aQL3xI7b-6ZDthexP-5uh0z1f3YpTCSiQ9o,290
123
123
  arbi/types/api/user_verify_email_response.py,sha256=Z94jdaY-UEugVFq-pV9tuS6w_7h8J0ZWfZuWQwcn56I,219
124
+ arbi/types/api/workspace_add_users_params.py,sha256=Z0obJRmsexjuTFxrH2T0lZP7Vr80j-sjw1WBgeUb-vw,574
125
+ arbi/types/api/workspace_add_users_response.py,sha256=21Ygfw5UpwclW4HiE-DeREm5zcMkHOqnjLVvDSERmyA,904
124
126
  arbi/types/api/workspace_copy_params.py,sha256=XrMYume8IDcSsrmHLoD66RyYe3APwlxnsxv98gE7Ggk,677
125
127
  arbi/types/api/workspace_copy_response.py,sha256=XniNhythTHEBSIKBJmP9CjcrgWqVhY3YE8DZBJ5n4K8,496
126
128
  arbi/types/api/workspace_create_protected_params.py,sha256=GEWI-KNn3kb35x-mcm90Hsaq45B_a5HporRZNTXDUok,388
@@ -129,13 +131,12 @@ arbi/types/api/workspace_get_conversations_response.py,sha256=vNrWUgpgVO0cjixDrm
129
131
  arbi/types/api/workspace_get_documents_response.py,sha256=Jugc3x-GMaBiP0xBev78uQXlXGLjgRI2y-XerSpBsT0,297
130
132
  arbi/types/api/workspace_get_stats_response.py,sha256=yNIGwDcCu9X8keA3JEv2J1s0Uc9gMAMxEEz51OnzIoM,441
131
133
  arbi/types/api/workspace_get_tags_response.py,sha256=MaUq4rgmiST9nUBCHAmJTlcV7bx3w5fHMIn3BdDBh0k,1567
132
- arbi/types/api/workspace_get_users_response.py,sha256=B1VOTXTJaBjrrIPaWIlIii32QSOZqSeOS42Rm0aNo70,292
133
- arbi/types/api/workspace_remove_user_params.py,sha256=w5hOk29XiNAtgfe5wxdi9mfLWnwqpZg8FPTGhvIe0k8,304
134
- arbi/types/api/workspace_remove_user_response.py,sha256=R6V0FWSqpL4OoZ4YbEQcohXU51Az4wQSDFYol3AfGCI,273
135
- arbi/types/api/workspace_response.py,sha256=hyIBlrmgcILKROxIr3DyF_C2p_Ty8b_ELqQst8IUdec,853
136
- arbi/types/api/workspace_share_params.py,sha256=GheVCcIXEfActMr7SiI2ZwMdIxJBPJ5x1swqqY5oZ4M,417
137
- arbi/types/api/workspace_share_response.py,sha256=JOoU_wLjUiIdcY356mtmlO16OQZm8IAU00A_k55NnPw,266
134
+ arbi/types/api/workspace_get_users_response.py,sha256=9YeA-Dju8CMxUf1Ex91ZC68DOeyOE73jQktnuNmk8HY,904
135
+ arbi/types/api/workspace_remove_users_params.py,sha256=ZpGG2QSnooEgQ85pLTXurSWPcR0eZLayEwP5UiUXtzs,462
136
+ arbi/types/api/workspace_response.py,sha256=n9njYyrNCgyCrdpV5I__uTfj3hKVXpXCy9DHXnqReqw,1345
138
137
  arbi/types/api/workspace_update_params.py,sha256=CqswSvA9zrC7NncTFYcLJjBMZs_Xmfk6cP_y8L8J_j4,489
138
+ arbi/types/api/workspace_update_user_roles_params.py,sha256=xlOPFWZm8nDGXwpu18pqYZoZgzOptfQM_Li6acQaP2k,486
139
+ arbi/types/api/workspace_update_user_roles_response.py,sha256=gpRF8UzEFLEDWPhyF6JiYJYh3RZSI8iFIe37QzwWgl8,939
139
140
  arbi/types/api/conversation/__init__.py,sha256=jzfeVJd78d972p4eSzTZNWXY7EXR50kJ3e6pzDcG8d8,393
140
141
  arbi/types/api/conversation/user_add_params.py,sha256=bzAIbyla6URUE6xkArzggJnv1sDFxCG1AzYiMKMlQ74,280
141
142
  arbi/types/api/conversation/user_add_response.py,sha256=85ahGr81kC7sqLn0T1r-AYxgvER4gFki6YdhxTJ1pf0,250
@@ -159,7 +160,7 @@ arbi/types/api/user/setting_update_params.py,sha256=SO-9mLEF-0hb38lfH9LKJONouh-u
159
160
  arbi/types/api/user/subscription_create_params.py,sha256=JGZApPmFHsLIIyYkOmhbra2bCKYgfn5cTW_UEJKUJtg,316
160
161
  arbi/types/api/user/subscription_create_response.py,sha256=ZYx474gFNC9Y06gOwQJqHj6GTAY0U2sgZGM_SfRpdMQ,303
161
162
  arbi/types/api/user/subscription_retrieve_response.py,sha256=-yYpieuLip2PITeV4_dPxMwgVNdXJaA-O45WaIRkxc8,1182
162
- arbi-0.18.0.dist-info/METADATA,sha256=4bkCOOH8TFxo9-sWiNe72eMr6n9gJdIrnED6lPIiozs,13300
163
- arbi-0.18.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
164
- arbi-0.18.0.dist-info/licenses/LICENSE,sha256=WkfZReOrGows6re0a6rdV77cbYzWNHVKXTvKYeOWRLM,11334
165
- arbi-0.18.0.dist-info/RECORD,,
163
+ arbi-0.19.0.dist-info/METADATA,sha256=9qWVWqxquzYqBnJgLXNRE25T0R2qGZw3sB3yLYro_68,13300
164
+ arbi-0.19.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
165
+ arbi-0.19.0.dist-info/licenses/LICENSE,sha256=WkfZReOrGows6re0a6rdV77cbYzWNHVKXTvKYeOWRLM,11334
166
+ arbi-0.19.0.dist-info/RECORD,,
@@ -1,11 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from __future__ import annotations
4
-
5
- from typing_extensions import Required, TypedDict
6
-
7
- __all__ = ["WorkspaceRemoveUserParams"]
8
-
9
-
10
- class WorkspaceRemoveUserParams(TypedDict, total=False):
11
- user_ext_id: Required[str]
@@ -1,11 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from typing import Optional
4
-
5
- from ..._models import BaseModel
6
-
7
- __all__ = ["WorkspaceRemoveUserResponse"]
8
-
9
-
10
- class WorkspaceRemoveUserResponse(BaseModel):
11
- detail: Optional[str] = None
@@ -1,15 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from __future__ import annotations
4
-
5
- from typing_extensions import Required, Annotated, TypedDict
6
-
7
- from ..._utils import PropertyInfo
8
-
9
- __all__ = ["WorkspaceShareParams"]
10
-
11
-
12
- class WorkspaceShareParams(TypedDict, total=False):
13
- recipient_email: Required[str]
14
-
15
- workspace_key: Annotated[str, PropertyInfo(alias="workspace-key")]
@@ -1,13 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from ..._models import BaseModel
4
-
5
- __all__ = ["WorkspaceShareResponse"]
6
-
7
-
8
- class WorkspaceShareResponse(BaseModel):
9
- detail: str
10
-
11
- shared_with: str
12
-
13
- workspace_ext_id: str
File without changes