Skip to content

Commit d1aa250

Browse files
box-sdk-buildbox-sdk-build
andauthored
feat: add Integration Mappings Teams API (box/box-openapi#517) (#505)
Co-authored-by: box-sdk-build <[email protected]>
1 parent 6d19d19 commit d1aa250

10 files changed

+559
-1
lines changed

.codegen.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "engineHash": "41feeaa", "specHash": "1080bb4", "version": "1.12.0" }
1+
{ "engineHash": "41feeaa", "specHash": "c303afc", "version": "1.12.0" }

box_sdk_gen/managers/integration_mappings.py

Lines changed: 213 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
IntegrationMappingPartnerItemSlack,
1717
)
1818

19+
from box_sdk_gen.schemas.integration_mapping_partner_item_teams_create_request import (
20+
IntegrationMappingPartnerItemTeamsCreateRequest,
21+
)
22+
1923
from box_sdk_gen.schemas.integration_mappings import IntegrationMappings
2024

2125
from box_sdk_gen.schemas.client_error import ClientError
@@ -34,6 +38,16 @@
3438
IntegrationMappingSlackOptions,
3539
)
3640

41+
from box_sdk_gen.schemas.integration_mappings_teams import IntegrationMappingsTeams
42+
43+
from box_sdk_gen.schemas.integration_mapping_teams import IntegrationMappingTeams
44+
45+
from box_sdk_gen.schemas.integration_mapping_teams_create_request import (
46+
IntegrationMappingTeamsCreateRequest,
47+
)
48+
49+
from box_sdk_gen.schemas.folder_reference import FolderReference
50+
3751
from box_sdk_gen.box.errors import BoxSDKError
3852

3953
from box_sdk_gen.networking.auth import Authentication
@@ -63,6 +77,15 @@ class GetSlackIntegrationMappingBoxItemType(str, Enum):
6377
FOLDER = 'folder'
6478

6579

80+
class GetIntegrationMappingTeamsPartnerItemType(str, Enum):
81+
CHANNEL = 'channel'
82+
TEAM = 'team'
83+
84+
85+
class GetIntegrationMappingTeamsBoxItemType(str, Enum):
86+
FOLDER = 'folder'
87+
88+
6689
class IntegrationMappingsManager:
6790
def __init__(
6891
self,
@@ -285,3 +308,193 @@ def delete_slack_integration_mapping_by_id(
285308
)
286309
)
287310
return None
311+
312+
def get_integration_mapping_teams(
313+
self,
314+
*,
315+
partner_item_type: Optional[GetIntegrationMappingTeamsPartnerItemType] = None,
316+
partner_item_id: Optional[str] = None,
317+
box_item_id: Optional[str] = None,
318+
box_item_type: Optional[GetIntegrationMappingTeamsBoxItemType] = None,
319+
extra_headers: Optional[Dict[str, Optional[str]]] = None
320+
) -> IntegrationMappingsTeams:
321+
"""
322+
Lists [Teams integration mappings](https://support.box.com/hc/en-us/articles/360044681474-Using-Box-for-Teams) in a users' enterprise.
323+
324+
You need Admin or Co-Admin role to
325+
326+
327+
use this endpoint.
328+
329+
:param partner_item_type: Mapped item type, for which the mapping should be returned, defaults to None
330+
:type partner_item_type: Optional[GetIntegrationMappingTeamsPartnerItemType], optional
331+
:param partner_item_id: ID of the mapped item, for which the mapping should be returned, defaults to None
332+
:type partner_item_id: Optional[str], optional
333+
:param box_item_id: Box item ID, for which the mappings should be returned, defaults to None
334+
:type box_item_id: Optional[str], optional
335+
:param box_item_type: Box item type, for which the mappings should be returned, defaults to None
336+
:type box_item_type: Optional[GetIntegrationMappingTeamsBoxItemType], optional
337+
:param extra_headers: Extra headers that will be included in the HTTP request., defaults to None
338+
:type extra_headers: Optional[Dict[str, Optional[str]]], optional
339+
"""
340+
if extra_headers is None:
341+
extra_headers = {}
342+
query_params_map: Dict[str, str] = prepare_params(
343+
{
344+
'partner_item_type': to_string(partner_item_type),
345+
'partner_item_id': to_string(partner_item_id),
346+
'box_item_id': to_string(box_item_id),
347+
'box_item_type': to_string(box_item_type),
348+
}
349+
)
350+
headers_map: Dict[str, str] = prepare_params({**extra_headers})
351+
response: FetchResponse = self.network_session.network_client.fetch(
352+
FetchOptions(
353+
url=''.join(
354+
[
355+
self.network_session.base_urls.base_url,
356+
'/2.0/integration_mappings/teams',
357+
]
358+
),
359+
method='GET',
360+
params=query_params_map,
361+
headers=headers_map,
362+
response_format=ResponseFormat.JSON,
363+
auth=self.auth,
364+
network_session=self.network_session,
365+
)
366+
)
367+
return deserialize(response.data, IntegrationMappingsTeams)
368+
369+
def create_integration_mapping_teams(
370+
self,
371+
partner_item: IntegrationMappingPartnerItemTeamsCreateRequest,
372+
box_item: FolderReference,
373+
*,
374+
extra_headers: Optional[Dict[str, Optional[str]]] = None
375+
) -> IntegrationMappingTeams:
376+
"""
377+
Creates a [Teams integration mapping](https://support.box.com/hc/en-us/articles/360044681474-Using-Box-for-Teams)
378+
379+
by mapping a Teams channel to a Box item.
380+
381+
382+
You need Admin or Co-Admin role to
383+
384+
385+
use this endpoint.
386+
387+
:param extra_headers: Extra headers that will be included in the HTTP request., defaults to None
388+
:type extra_headers: Optional[Dict[str, Optional[str]]], optional
389+
"""
390+
if extra_headers is None:
391+
extra_headers = {}
392+
request_body: Dict = {'partner_item': partner_item, 'box_item': box_item}
393+
headers_map: Dict[str, str] = prepare_params({**extra_headers})
394+
response: FetchResponse = self.network_session.network_client.fetch(
395+
FetchOptions(
396+
url=''.join(
397+
[
398+
self.network_session.base_urls.base_url,
399+
'/2.0/integration_mappings/teams',
400+
]
401+
),
402+
method='POST',
403+
headers=headers_map,
404+
data=serialize(request_body),
405+
content_type='application/json',
406+
response_format=ResponseFormat.JSON,
407+
auth=self.auth,
408+
network_session=self.network_session,
409+
)
410+
)
411+
return deserialize(response.data, IntegrationMappingTeams)
412+
413+
def update_integration_mapping_teams_by_id(
414+
self,
415+
integration_mapping_id: str,
416+
*,
417+
box_item: Optional[FolderReference] = None,
418+
extra_headers: Optional[Dict[str, Optional[str]]] = None
419+
) -> IntegrationMappingTeams:
420+
"""
421+
Updates a [Teams integration mapping](https://support.box.com/hc/en-us/articles/360044681474-Using-Box-for-Teams).
422+
423+
Supports updating the Box folder ID and options.
424+
425+
426+
You need Admin or Co-Admin role to
427+
428+
429+
use this endpoint.
430+
431+
:param integration_mapping_id: An ID of an integration mapping
432+
Example: "11235432"
433+
:type integration_mapping_id: str
434+
:param extra_headers: Extra headers that will be included in the HTTP request., defaults to None
435+
:type extra_headers: Optional[Dict[str, Optional[str]]], optional
436+
"""
437+
if extra_headers is None:
438+
extra_headers = {}
439+
request_body: Dict = {'box_item': box_item}
440+
headers_map: Dict[str, str] = prepare_params({**extra_headers})
441+
response: FetchResponse = self.network_session.network_client.fetch(
442+
FetchOptions(
443+
url=''.join(
444+
[
445+
self.network_session.base_urls.base_url,
446+
'/2.0/integration_mappings/teams/',
447+
to_string(integration_mapping_id),
448+
]
449+
),
450+
method='PUT',
451+
headers=headers_map,
452+
data=serialize(request_body),
453+
content_type='application/json',
454+
response_format=ResponseFormat.JSON,
455+
auth=self.auth,
456+
network_session=self.network_session,
457+
)
458+
)
459+
return deserialize(response.data, IntegrationMappingTeams)
460+
461+
def delete_integration_mapping_teams_by_id(
462+
self,
463+
integration_mapping_id: str,
464+
*,
465+
extra_headers: Optional[Dict[str, Optional[str]]] = None
466+
) -> None:
467+
"""
468+
Deletes a [Teams integration mapping](https://support.box.com/hc/en-us/articles/360044681474-Using-Box-for-Teams).
469+
470+
You need Admin or Co-Admin role to
471+
472+
473+
use this endpoint.
474+
475+
:param integration_mapping_id: An ID of an integration mapping
476+
Example: "11235432"
477+
:type integration_mapping_id: str
478+
:param extra_headers: Extra headers that will be included in the HTTP request., defaults to None
479+
:type extra_headers: Optional[Dict[str, Optional[str]]], optional
480+
"""
481+
if extra_headers is None:
482+
extra_headers = {}
483+
headers_map: Dict[str, str] = prepare_params({**extra_headers})
484+
response: FetchResponse = self.network_session.network_client.fetch(
485+
FetchOptions(
486+
url=''.join(
487+
[
488+
self.network_session.base_urls.base_url,
489+
'/2.0/integration_mappings/teams/',
490+
to_string(integration_mapping_id),
491+
]
492+
),
493+
method='DELETE',
494+
headers=headers_map,
495+
response_format=ResponseFormat.NO_CONTENT,
496+
auth=self.auth,
497+
network_session=self.network_session,
498+
)
499+
)
500+
return None

box_sdk_gen/schemas/__init__.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@
120120

121121
from box_sdk_gen.schemas.access_token import *
122122

123+
from box_sdk_gen.schemas.folder_reference import *
124+
123125
from box_sdk_gen.schemas.generic_source import *
124126

125127
from box_sdk_gen.schemas.group_base import *
@@ -138,6 +140,16 @@
138140

139141
from box_sdk_gen.schemas.integration_mapping_partner_item_slack import *
140142

143+
from box_sdk_gen.schemas.integration_mapping_partner_item_teams import *
144+
145+
from box_sdk_gen.schemas.integration_mapping_teams import *
146+
147+
from box_sdk_gen.schemas.integration_mappings_teams import *
148+
149+
from box_sdk_gen.schemas.integration_mapping_partner_item_teams_create_request import *
150+
151+
from box_sdk_gen.schemas.integration_mapping_teams_create_request import *
152+
141153
from box_sdk_gen.schemas.integration_mapping_slack_options import *
142154

143155
from box_sdk_gen.schemas.integration_mapping_slack_create_request import *
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 FolderReferenceTypeField(str, Enum):
9+
FOLDER = 'folder'
10+
11+
12+
class FolderReference(BaseObject):
13+
_discriminator = 'type', {'folder'}
14+
15+
def __init__(
16+
self,
17+
id: str,
18+
*,
19+
type: FolderReferenceTypeField = FolderReferenceTypeField.FOLDER,
20+
**kwargs
21+
):
22+
"""
23+
:param id: ID of the folder
24+
:type id: str
25+
:param type: `folder`, defaults to FolderReferenceTypeField.FOLDER
26+
:type type: FolderReferenceTypeField, optional
27+
"""
28+
super().__init__(**kwargs)
29+
self.id = id
30+
self.type = type
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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 IntegrationMappingPartnerItemTeamsTypeField(str, Enum):
9+
CHANNEL = 'channel'
10+
TEAM = 'team'
11+
12+
13+
class IntegrationMappingPartnerItemTeams(BaseObject):
14+
_discriminator = 'type', {'channel', 'team'}
15+
16+
def __init__(
17+
self,
18+
type: IntegrationMappingPartnerItemTeamsTypeField,
19+
id: str,
20+
tenant_id: str,
21+
**kwargs
22+
):
23+
"""
24+
:param type: Type of the mapped item referenced in `id`
25+
:type type: IntegrationMappingPartnerItemTeamsTypeField
26+
:param id: ID of the mapped item (of type referenced in `type`)
27+
:type id: str
28+
:param tenant_id: ID of the tenant that is registered with Microsoft Teams.
29+
:type tenant_id: str
30+
"""
31+
super().__init__(**kwargs)
32+
self.type = type
33+
self.id = id
34+
self.tenant_id = tenant_id
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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 IntegrationMappingPartnerItemTeamsCreateRequestTypeField(str, Enum):
9+
CHANNEL = 'channel'
10+
TEAM = 'team'
11+
12+
13+
class IntegrationMappingPartnerItemTeamsCreateRequest(BaseObject):
14+
_discriminator = 'type', {'channel', 'team'}
15+
16+
def __init__(
17+
self,
18+
type: IntegrationMappingPartnerItemTeamsCreateRequestTypeField,
19+
id: str,
20+
tenant_id: str,
21+
team_id: str,
22+
**kwargs
23+
):
24+
"""
25+
:param type: Type of the mapped item referenced in `id`
26+
:type type: IntegrationMappingPartnerItemTeamsCreateRequestTypeField
27+
:param id: ID of the mapped item (of type referenced in `type`)
28+
:type id: str
29+
:param tenant_id: ID of the tenant that is registered with Microsoft Teams.
30+
:type tenant_id: str
31+
:param team_id: ID of the team that is registered with Microsoft Teams.
32+
:type team_id: str
33+
"""
34+
super().__init__(**kwargs)
35+
self.type = type
36+
self.id = id
37+
self.tenant_id = tenant_id
38+
self.team_id = team_id

0 commit comments

Comments
 (0)