Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .codegen.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{ "engineHash": "ef443c1", "specHash": "99e14a6", "version": "0.1.0" }
{ "engineHash": "54ce521", "specHash": "623b811", "version": "0.1.0" }
5 changes: 5 additions & 0 deletions box_sdk_gen/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,8 @@

from box_sdk_gen.managers.archives import ArchivesManager

from box_sdk_gen.managers.external_users import ExternalUsersManager

from box_sdk_gen.networking.auth import Authentication

from box_sdk_gen.networking.network import NetworkSession
Expand Down Expand Up @@ -440,6 +442,9 @@ def __init__(self, auth: Authentication, *, network_session: NetworkSession = No
self.archives = ArchivesManager(
auth=self.auth, network_session=self.network_session
)
self.external_users = ExternalUsersManager(
auth=self.auth, network_session=self.network_session
)

def make_request(self, fetch_options: FetchOptions) -> FetchResponse:
"""
Expand Down
2 changes: 2 additions & 0 deletions box_sdk_gen/managers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,3 +155,5 @@
from box_sdk_gen.managers.shield_lists import *

from box_sdk_gen.managers.archives import *

from box_sdk_gen.managers.external_users import *
106 changes: 106 additions & 0 deletions box_sdk_gen/managers/external_users.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
from typing import Optional

from typing import List

from typing import Dict

from box_sdk_gen.internal.utils import to_string

from box_sdk_gen.serialization.json import serialize

from box_sdk_gen.serialization.json import deserialize

from box_sdk_gen.schemas.v2025_r0.user_reference_v2025_r0 import UserReferenceV2025R0

from box_sdk_gen.networking.fetch_options import ResponseFormat

from box_sdk_gen.schemas.v2025_r0.external_users_submit_delete_job_response_v2025_r0 import (
ExternalUsersSubmitDeleteJobResponseV2025R0,
)

from box_sdk_gen.schemas.v2025_r0.client_error_v2025_r0 import ClientErrorV2025R0

from box_sdk_gen.parameters.v2025_r0.box_version_header_v2025_r0 import (
BoxVersionHeaderV2025R0,
)

from box_sdk_gen.schemas.v2025_r0.external_users_submit_delete_job_request_v2025_r0 import (
ExternalUsersSubmitDeleteJobRequestV2025R0,
)

from box_sdk_gen.box.errors import BoxSDKError

from box_sdk_gen.networking.auth import Authentication

from box_sdk_gen.networking.network import NetworkSession

from box_sdk_gen.networking.fetch_options import FetchOptions

from box_sdk_gen.networking.fetch_response import FetchResponse

from box_sdk_gen.internal.utils import prepare_params

from box_sdk_gen.internal.utils import to_string

from box_sdk_gen.internal.utils import ByteStream

from box_sdk_gen.serialization.json import sd_to_json

from box_sdk_gen.serialization.json import SerializedData


class ExternalUsersManager:
def __init__(
self,
*,
auth: Optional[Authentication] = None,
network_session: NetworkSession = None
):
if network_session is None:
network_session = NetworkSession()
self.auth = auth
self.network_session = network_session

def create_external_user_submit_delete_job_v2025_r0(
self,
external_users: List[UserReferenceV2025R0],
*,
box_version: BoxVersionHeaderV2025R0 = BoxVersionHeaderV2025R0._2025_0,
extra_headers: Optional[Dict[str, Optional[str]]] = None
) -> ExternalUsersSubmitDeleteJobResponseV2025R0:
"""
Delete external users from current user enterprise. This will remove each

external user from all invited collaborations within the current enterprise.

:param external_users: List of external users to delete.
:type external_users: List[UserReferenceV2025R0]
:param box_version: Version header., defaults to BoxVersionHeaderV2025R0._2025_0
:type box_version: BoxVersionHeaderV2025R0, optional
:param extra_headers: Extra headers that will be included in the HTTP request., defaults to None
:type extra_headers: Optional[Dict[str, Optional[str]]], optional
"""
if extra_headers is None:
extra_headers = {}
request_body: Dict = {'external_users': external_users}
headers_map: Dict[str, str] = prepare_params(
{'box-version': to_string(box_version), **extra_headers}
)
response: FetchResponse = self.network_session.network_client.fetch(
FetchOptions(
url=''.join(
[
self.network_session.base_urls.base_url,
'/2.0/external_users/submit_delete_job',
]
),
method='POST',
headers=headers_map,
data=serialize(request_body),
content_type='application/json',
response_format=ResponseFormat.JSON,
auth=self.auth,
network_session=self.network_session,
)
)
return deserialize(response.data, ExternalUsersSubmitDeleteJobResponseV2025R0)
8 changes: 8 additions & 0 deletions box_sdk_gen/schemas/v2025_r0/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@

from box_sdk_gen.schemas.v2025_r0.enterprise_reference_v2025_r0 import *

from box_sdk_gen.schemas.v2025_r0.external_user_deletion_result_v2025_r0 import *

from box_sdk_gen.schemas.v2025_r0.external_users_submit_delete_job_response_v2025_r0 import *

from box_sdk_gen.schemas.v2025_r0.file_reference_v2025_r0 import *

from box_sdk_gen.schemas.v2025_r0.doc_gen_template_create_request_v2025_r0 import *
Expand Down Expand Up @@ -104,6 +108,10 @@

from box_sdk_gen.schemas.v2025_r0.doc_gen_jobs_full_v2025_r0 import *

from box_sdk_gen.schemas.v2025_r0.user_reference_v2025_r0 import *

from box_sdk_gen.schemas.v2025_r0.external_users_submit_delete_job_request_v2025_r0 import *

from box_sdk_gen.schemas.v2025_r0.weblink_reference_v2025_r0 import *

from box_sdk_gen.schemas.v2025_r0.hub_item_reference_v2025_r0 import *
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from typing import Optional

from box_sdk_gen.internal.base_object import BaseObject

from box_sdk_gen.box.errors import BoxSDKError


class ExternalUserDeletionResultV2025R0(BaseObject):
def __init__(
self, user_id: str, status: int, *, detail: Optional[str] = None, **kwargs
):
"""
:param user_id: The ID of the external user.
:type user_id: str
:param status: HTTP status code for a specific user's deletion request.
:type status: int
:param detail: Deletion request status details., defaults to None
:type detail: Optional[str], optional
"""
super().__init__(**kwargs)
self.user_id = user_id
self.status = status
self.detail = detail
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from typing import List

from box_sdk_gen.internal.base_object import BaseObject

from box_sdk_gen.schemas.v2025_r0.user_reference_v2025_r0 import UserReferenceV2025R0

from box_sdk_gen.box.errors import BoxSDKError


class ExternalUsersSubmitDeleteJobRequestV2025R0(BaseObject):
def __init__(self, external_users: List[UserReferenceV2025R0], **kwargs):
"""
:param external_users: List of external users to delete.
:type external_users: List[UserReferenceV2025R0]
"""
super().__init__(**kwargs)
self.external_users = external_users
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from typing import List

from box_sdk_gen.internal.base_object import BaseObject

from box_sdk_gen.schemas.v2025_r0.external_user_deletion_result_v2025_r0 import (
ExternalUserDeletionResultV2025R0,
)

from box_sdk_gen.box.errors import BoxSDKError


class ExternalUsersSubmitDeleteJobResponseV2025R0(BaseObject):
def __init__(self, entries: List[ExternalUserDeletionResultV2025R0], **kwargs):
"""
:param entries: Array of results of each external user deletion request.
:type entries: List[ExternalUserDeletionResultV2025R0]
"""
super().__init__(**kwargs)
self.entries = entries
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def __init__(
**kwargs
):
"""
:param ip_addresses: List of ips and cidrs.
:param ip_addresses: List of ip addresses and CIDRs.
:type ip_addresses: List[str]
:param type: The type of content in the shield list., defaults to ShieldListContentIpV2025R0TypeField.IP
:type type: ShieldListContentIpV2025R0TypeField, optional
Expand Down
30 changes: 30 additions & 0 deletions box_sdk_gen/schemas/v2025_r0/user_reference_v2025_r0.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
from enum import Enum

from box_sdk_gen.internal.base_object import BaseObject

from box_sdk_gen.box.errors import BoxSDKError


class UserReferenceV2025R0TypeField(str, Enum):
USER = 'user'


class UserReferenceV2025R0(BaseObject):
_discriminator = 'type', {'user'}

def __init__(
self,
id: str,
*,
type: UserReferenceV2025R0TypeField = UserReferenceV2025R0TypeField.USER,
**kwargs
):
"""
:param id: The unique identifier for the user.
:type id: str
:param type: The value is always `user`., defaults to UserReferenceV2025R0TypeField.USER
:type type: UserReferenceV2025R0TypeField, optional
"""
super().__init__(**kwargs)
self.id = id
self.type = type
2 changes: 1 addition & 1 deletion box_sdk_gen/schemas/v2025_r0/weblink_reference_v2025_r0.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def __init__(
**kwargs
):
"""
:param id: ID of the weblink.
:param id: ID of the web link.
:type id: str
:param type: The value will always be `weblink`., defaults to WeblinkReferenceV2025R0TypeField.WEBLINK
:type type: WeblinkReferenceV2025R0TypeField, optional
Expand Down
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ the SDK are available by topic:
- [Downloads](downloads.md)
- [Email aliases](email_aliases.md)
- [Events](events.md)
- [External users](external_users.md)
- [File classifications](file_classifications.md)
- [File metadata](file_metadata.md)
- [File requests](file_requests.md)
Expand Down
28 changes: 28 additions & 0 deletions docs/external_users.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# ExternalUsersManager

- [Submit job to delete external users](#submit-job-to-delete-external-users)

## Submit job to delete external users

Delete external users from current user enterprise. This will remove each
external user from all invited collaborations within the current enterprise.

This operation is performed by calling function `create_external_user_submit_delete_job_v2025_r0`.

See the endpoint docs at
[API Reference](https://developer.box.com/reference/v2025.0/post-external-users-submit-delete-job/).

_Currently we don't have an example for calling `create_external_user_submit_delete_job_v2025_r0` in integration tests_

### Arguments

- external_users `List[UserReferenceV2025R0]`
- List of external users to delete.
- box_version `BoxVersionHeaderV2025R0`
- Version header.
- extra_headers `Optional[Dict[str, Optional[str]]]`
- Extra headers that will be included in the HTTP request.

### Returns

This function returns a value of type `ExternalUsersSubmitDeleteJobResponseV2025R0`.
Loading