Skip to content

Commit adeba59

Browse files
committed
docs: External User Deletion API (box/box-openapi#542)
1 parent 0afcf8e commit adeba59

11 files changed

+240
-1
lines changed

.codegen.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "engineHash": "47ff60c", "specHash": "5bf3652", "version": "0.1.0" }
1+
{ "engineHash": "47ff60c", "specHash": "a99f38b", "version": "0.1.0" }

box_sdk_gen/client.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@
182182

183183
from box_sdk_gen.managers.archives import ArchivesManager
184184

185+
from box_sdk_gen.managers.external_users import ExternalUsersManager
186+
185187
from box_sdk_gen.networking.auth import Authentication
186188

187189
from box_sdk_gen.networking.network import NetworkSession
@@ -440,6 +442,9 @@ def __init__(self, auth: Authentication, *, network_session: NetworkSession = No
440442
self.archives = ArchivesManager(
441443
auth=self.auth, network_session=self.network_session
442444
)
445+
self.external_users = ExternalUsersManager(
446+
auth=self.auth, network_session=self.network_session
447+
)
443448

444449
def make_request(self, fetch_options: FetchOptions) -> FetchResponse:
445450
"""

box_sdk_gen/managers/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,5 @@
155155
from box_sdk_gen.managers.shield_lists import *
156156

157157
from box_sdk_gen.managers.archives import *
158+
159+
from box_sdk_gen.managers.external_users import *
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
from typing import Optional
2+
3+
from typing import List
4+
5+
from typing import Dict
6+
7+
from box_sdk_gen.internal.utils import to_string
8+
9+
from box_sdk_gen.serialization.json import serialize
10+
11+
from box_sdk_gen.serialization.json import deserialize
12+
13+
from box_sdk_gen.schemas.v2025_r0.user_reference_v2025_r0 import UserReferenceV2025R0
14+
15+
from box_sdk_gen.networking.fetch_options import ResponseFormat
16+
17+
from box_sdk_gen.schemas.v2025_r0.external_users_submit_delete_job_response_v2025_r0 import (
18+
ExternalUsersSubmitDeleteJobResponseV2025R0,
19+
)
20+
21+
from box_sdk_gen.schemas.v2025_r0.client_error_v2025_r0 import ClientErrorV2025R0
22+
23+
from box_sdk_gen.parameters.v2025_r0.box_version_header_v2025_r0 import (
24+
BoxVersionHeaderV2025R0,
25+
)
26+
27+
from box_sdk_gen.schemas.v2025_r0.external_users_submit_delete_job_request_v2025_r0 import (
28+
ExternalUsersSubmitDeleteJobRequestV2025R0,
29+
)
30+
31+
from box_sdk_gen.box.errors import BoxSDKError
32+
33+
from box_sdk_gen.networking.auth import Authentication
34+
35+
from box_sdk_gen.networking.network import NetworkSession
36+
37+
from box_sdk_gen.networking.fetch_options import FetchOptions
38+
39+
from box_sdk_gen.networking.fetch_response import FetchResponse
40+
41+
from box_sdk_gen.internal.utils import prepare_params
42+
43+
from box_sdk_gen.internal.utils import to_string
44+
45+
from box_sdk_gen.internal.utils import ByteStream
46+
47+
from box_sdk_gen.serialization.json import sd_to_json
48+
49+
from box_sdk_gen.serialization.json import SerializedData
50+
51+
52+
class ExternalUsersManager:
53+
def __init__(
54+
self,
55+
*,
56+
auth: Optional[Authentication] = None,
57+
network_session: NetworkSession = None
58+
):
59+
if network_session is None:
60+
network_session = NetworkSession()
61+
self.auth = auth
62+
self.network_session = network_session
63+
64+
def create_external_user_submit_delete_job_v2025_r0(
65+
self,
66+
external_users: List[UserReferenceV2025R0],
67+
*,
68+
box_version: BoxVersionHeaderV2025R0 = BoxVersionHeaderV2025R0._2025_0,
69+
extra_headers: Optional[Dict[str, Optional[str]]] = None
70+
) -> ExternalUsersSubmitDeleteJobResponseV2025R0:
71+
"""
72+
Delete external users from current user enterprise. This will remove each
73+
74+
external user from all invited collaborations within the current enterprise.
75+
76+
:param external_users: List of external users to delete.
77+
:type external_users: List[UserReferenceV2025R0]
78+
:param box_version: Version header., defaults to BoxVersionHeaderV2025R0._2025_0
79+
:type box_version: BoxVersionHeaderV2025R0, optional
80+
:param extra_headers: Extra headers that will be included in the HTTP request., defaults to None
81+
:type extra_headers: Optional[Dict[str, Optional[str]]], optional
82+
"""
83+
if extra_headers is None:
84+
extra_headers = {}
85+
request_body: Dict = {'external_users': external_users}
86+
headers_map: Dict[str, str] = prepare_params(
87+
{'box-version': to_string(box_version), **extra_headers}
88+
)
89+
response: FetchResponse = self.network_session.network_client.fetch(
90+
FetchOptions(
91+
url=''.join(
92+
[
93+
self.network_session.base_urls.base_url,
94+
'/2.0/external_users/submit_delete_job',
95+
]
96+
),
97+
method='POST',
98+
headers=headers_map,
99+
data=serialize(request_body),
100+
content_type='application/json',
101+
response_format=ResponseFormat.JSON,
102+
auth=self.auth,
103+
network_session=self.network_session,
104+
)
105+
)
106+
return deserialize(response.data, ExternalUsersSubmitDeleteJobResponseV2025R0)

box_sdk_gen/schemas/v2025_r0/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818

1919
from box_sdk_gen.schemas.v2025_r0.enterprise_reference_v2025_r0 import *
2020

21+
from box_sdk_gen.schemas.v2025_r0.external_user_deletion_result_v2025_r0 import *
22+
23+
from box_sdk_gen.schemas.v2025_r0.external_users_submit_delete_job_response_v2025_r0 import *
24+
2125
from box_sdk_gen.schemas.v2025_r0.file_reference_v2025_r0 import *
2226

2327
from box_sdk_gen.schemas.v2025_r0.doc_gen_template_create_request_v2025_r0 import *
@@ -106,6 +110,10 @@
106110

107111
from box_sdk_gen.schemas.v2025_r0.doc_gen_jobs_full_v2025_r0 import *
108112

113+
from box_sdk_gen.schemas.v2025_r0.user_reference_v2025_r0 import *
114+
115+
from box_sdk_gen.schemas.v2025_r0.external_users_submit_delete_job_request_v2025_r0 import *
116+
109117
from box_sdk_gen.schemas.v2025_r0.weblink_reference_v2025_r0 import *
110118

111119
from box_sdk_gen.schemas.v2025_r0.hub_item_reference_v2025_r0 import *
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from typing import Optional
2+
3+
from box_sdk_gen.internal.base_object import BaseObject
4+
5+
from box_sdk_gen.box.errors import BoxSDKError
6+
7+
8+
class ExternalUserDeletionResultV2025R0(BaseObject):
9+
def __init__(
10+
self, user_id: str, status: int, *, detail: Optional[str] = None, **kwargs
11+
):
12+
"""
13+
:param user_id: The ID of the external user.
14+
:type user_id: str
15+
:param status: HTTP status code for a specific user's deletion request.
16+
:type status: int
17+
:param detail: Deletion request status details., defaults to None
18+
:type detail: Optional[str], optional
19+
"""
20+
super().__init__(**kwargs)
21+
self.user_id = user_id
22+
self.status = status
23+
self.detail = detail
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from typing import List
2+
3+
from box_sdk_gen.internal.base_object import BaseObject
4+
5+
from box_sdk_gen.schemas.v2025_r0.user_reference_v2025_r0 import UserReferenceV2025R0
6+
7+
from box_sdk_gen.box.errors import BoxSDKError
8+
9+
10+
class ExternalUsersSubmitDeleteJobRequestV2025R0(BaseObject):
11+
def __init__(self, external_users: List[UserReferenceV2025R0], **kwargs):
12+
"""
13+
:param external_users: List of external users to delete.
14+
:type external_users: List[UserReferenceV2025R0]
15+
"""
16+
super().__init__(**kwargs)
17+
self.external_users = external_users
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from typing import List
2+
3+
from box_sdk_gen.internal.base_object import BaseObject
4+
5+
from box_sdk_gen.schemas.v2025_r0.external_user_deletion_result_v2025_r0 import (
6+
ExternalUserDeletionResultV2025R0,
7+
)
8+
9+
from box_sdk_gen.box.errors import BoxSDKError
10+
11+
12+
class ExternalUsersSubmitDeleteJobResponseV2025R0(BaseObject):
13+
def __init__(self, entries: List[ExternalUserDeletionResultV2025R0], **kwargs):
14+
"""
15+
:param entries: Array of results of each external user deletion request.
16+
:type entries: List[ExternalUserDeletionResultV2025R0]
17+
"""
18+
super().__init__(**kwargs)
19+
self.entries = entries
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
from enum import Enum
2+
3+
from box_sdk_gen.internal.base_object import BaseObject
4+
5+
from box_sdk_gen.box.errors import BoxSDKError
6+
7+
8+
class UserReferenceV2025R0TypeField(str, Enum):
9+
USER = 'user'
10+
11+
12+
class UserReferenceV2025R0(BaseObject):
13+
_discriminator = 'type', {'user'}
14+
15+
def __init__(
16+
self,
17+
id: str,
18+
*,
19+
type: UserReferenceV2025R0TypeField = UserReferenceV2025R0TypeField.USER,
20+
**kwargs
21+
):
22+
"""
23+
:param id: The unique identifier for the user.
24+
:type id: str
25+
:param type: The value is always `user`., defaults to UserReferenceV2025R0TypeField.USER
26+
:type type: UserReferenceV2025R0TypeField, optional
27+
"""
28+
super().__init__(**kwargs)
29+
self.id = id
30+
self.type = type

docs/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ the SDK are available by topic:
2323
- [Downloads](downloads.md)
2424
- [Email aliases](email_aliases.md)
2525
- [Events](events.md)
26+
- [External users](external_users.md)
2627
- [File classifications](file_classifications.md)
2728
- [File metadata](file_metadata.md)
2829
- [File requests](file_requests.md)

0 commit comments

Comments
 (0)