pangea-sdk 3.8.0b2__tar.gz → 3.8.0b3__tar.gz
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.
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/PKG-INFO +28 -3
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/README.md +27 -2
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/__init__.py +1 -1
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/asyncio/services/__init__.py +2 -1
- pangea_sdk-3.8.0b3/pangea/asyncio/services/authz.py +267 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/asyncio/services/sanitize.py +4 -4
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/asyncio/services/share.py +26 -26
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/__init__.py +2 -1
- pangea_sdk-3.8.0b3/pangea/services/authz.py +377 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/sanitize.py +4 -4
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/share/share.py +26 -26
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pyproject.toml +1 -1
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/asyncio/__init__.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/asyncio/file_uploader.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/asyncio/request.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/asyncio/services/audit.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/asyncio/services/authn.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/asyncio/services/base.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/asyncio/services/embargo.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/asyncio/services/file_scan.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/asyncio/services/intel.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/asyncio/services/redact.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/asyncio/services/vault.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/audit_logger.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/config.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/deep_verify.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/deprecated.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/dump_audit.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/exceptions.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/file_uploader.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/py.typed +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/request.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/response.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/audit/audit.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/audit/exceptions.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/audit/models.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/audit/signing.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/audit/util.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/authn/authn.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/authn/models.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/base.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/embargo.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/file_scan.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/intel.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/redact.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/share/file_format.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/vault/models/asymmetric.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/vault/models/common.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/vault/models/secret.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/vault/models/symmetric.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/services/vault/vault.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/tools.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/utils.py +0 -0
- {pangea_sdk-3.8.0b2 → pangea_sdk-3.8.0b3}/pangea/verify_audit.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pangea-sdk
|
3
|
-
Version: 3.8.
|
3
|
+
Version: 3.8.0b3
|
4
4
|
Summary: Pangea API SDK
|
5
5
|
Home-page: https://pangea.cloud/docs/sdk/python/
|
6
6
|
License: MIT
|
@@ -44,6 +44,8 @@ above.
|
|
44
44
|
|
45
45
|
## Installation
|
46
46
|
|
47
|
+
#### GA releases
|
48
|
+
|
47
49
|
Via pip:
|
48
50
|
|
49
51
|
```bash
|
@@ -56,10 +58,32 @@ Via poetry:
|
|
56
58
|
$ poetry add pangea-sdk
|
57
59
|
```
|
58
60
|
|
61
|
+
<a name="beta-releases"></a>
|
62
|
+
|
63
|
+
#### Beta releases
|
64
|
+
|
65
|
+
Pre-release versions may be available with the `b` (beta) denotation in the
|
66
|
+
version number. These releases serve to preview beta services and APIs. Per
|
67
|
+
Semantic Versioning, they are considered unstable and do not carry the same
|
68
|
+
compatibility guarantees as stable releases. [Beta changelog](https://github.com/pangeacyber/pangea-python/blob/beta/CHANGELOG.md).
|
69
|
+
|
70
|
+
Via pip:
|
71
|
+
|
72
|
+
```bash
|
73
|
+
$ pip3 install pangea-sdk==3.8.0b3
|
74
|
+
```
|
75
|
+
|
76
|
+
Via poetry:
|
77
|
+
|
78
|
+
```bash
|
79
|
+
$ poetry add pangea-sdk==3.8.0b3
|
80
|
+
```
|
81
|
+
|
59
82
|
## Usage
|
60
83
|
|
61
84
|
- [Documentation][]
|
62
|
-
- [Examples][]
|
85
|
+
- [GA Examples][]
|
86
|
+
- [Beta Examples][]
|
63
87
|
|
64
88
|
General usage would be to create a token for a service through the
|
65
89
|
[Pangea Console][] and then construct an API client for that respective service.
|
@@ -213,7 +237,8 @@ It accepts multiple file formats:
|
|
213
237
|
|
214
238
|
|
215
239
|
[Documentation]: https://pangea.cloud/docs/sdk/python/
|
216
|
-
[Examples]: https://github.com/pangeacyber/pangea-python/tree/main/examples
|
240
|
+
[GA Examples]: https://github.com/pangeacyber/pangea-python/tree/main/examples
|
241
|
+
[Beta Examples]: https://github.com/pangeacyber/pangea-python/tree/beta/examples
|
217
242
|
[Pangea Console]: https://console.pangea.cloud/
|
218
243
|
[Slack]: https://pangea.cloud/join-slack/
|
219
244
|
[Secure Audit Log]: https://pangea.cloud/docs/audit
|
@@ -14,6 +14,8 @@ above.
|
|
14
14
|
|
15
15
|
## Installation
|
16
16
|
|
17
|
+
#### GA releases
|
18
|
+
|
17
19
|
Via pip:
|
18
20
|
|
19
21
|
```bash
|
@@ -26,10 +28,32 @@ Via poetry:
|
|
26
28
|
$ poetry add pangea-sdk
|
27
29
|
```
|
28
30
|
|
31
|
+
<a name="beta-releases"></a>
|
32
|
+
|
33
|
+
#### Beta releases
|
34
|
+
|
35
|
+
Pre-release versions may be available with the `b` (beta) denotation in the
|
36
|
+
version number. These releases serve to preview beta services and APIs. Per
|
37
|
+
Semantic Versioning, they are considered unstable and do not carry the same
|
38
|
+
compatibility guarantees as stable releases. [Beta changelog](https://github.com/pangeacyber/pangea-python/blob/beta/CHANGELOG.md).
|
39
|
+
|
40
|
+
Via pip:
|
41
|
+
|
42
|
+
```bash
|
43
|
+
$ pip3 install pangea-sdk==3.8.0b3
|
44
|
+
```
|
45
|
+
|
46
|
+
Via poetry:
|
47
|
+
|
48
|
+
```bash
|
49
|
+
$ poetry add pangea-sdk==3.8.0b3
|
50
|
+
```
|
51
|
+
|
29
52
|
## Usage
|
30
53
|
|
31
54
|
- [Documentation][]
|
32
|
-
- [Examples][]
|
55
|
+
- [GA Examples][]
|
56
|
+
- [Beta Examples][]
|
33
57
|
|
34
58
|
General usage would be to create a token for a service through the
|
35
59
|
[Pangea Console][] and then construct an API client for that respective service.
|
@@ -183,7 +207,8 @@ It accepts multiple file formats:
|
|
183
207
|
|
184
208
|
|
185
209
|
[Documentation]: https://pangea.cloud/docs/sdk/python/
|
186
|
-
[Examples]: https://github.com/pangeacyber/pangea-python/tree/main/examples
|
210
|
+
[GA Examples]: https://github.com/pangeacyber/pangea-python/tree/main/examples
|
211
|
+
[Beta Examples]: https://github.com/pangeacyber/pangea-python/tree/beta/examples
|
187
212
|
[Pangea Console]: https://console.pangea.cloud/
|
188
213
|
[Slack]: https://pangea.cloud/join-slack/
|
189
214
|
[Secure Audit Log]: https://pangea.cloud/docs/audit
|
@@ -1,9 +1,10 @@
|
|
1
1
|
from .audit import AuditAsync
|
2
2
|
from .authn import AuthNAsync
|
3
|
+
from .authz import AuthZAsync
|
3
4
|
from .embargo import EmbargoAsync
|
4
5
|
from .file_scan import FileScanAsync
|
5
6
|
from .intel import DomainIntelAsync, FileIntelAsync, IpIntelAsync, UrlIntelAsync, UserIntelAsync
|
6
7
|
from .redact import RedactAsync
|
7
|
-
from .share import ShareAsync
|
8
8
|
from .sanitize import SanitizeAsync
|
9
|
+
from .share import ShareAsync
|
9
10
|
from .vault import VaultAsync
|
@@ -0,0 +1,267 @@
|
|
1
|
+
# Copyright 2022 Pangea Cyber Corporation
|
2
|
+
# Author: Pangea Cyber Corporation
|
3
|
+
|
4
|
+
from typing import Dict, List, Optional, Union
|
5
|
+
|
6
|
+
from pangea.asyncio.services.base import ServiceBaseAsync
|
7
|
+
from pangea.response import PangeaResponse
|
8
|
+
from pangea.services.authz import (
|
9
|
+
CheckRequest,
|
10
|
+
CheckResult,
|
11
|
+
ItemOrder,
|
12
|
+
ListResourcesRequest,
|
13
|
+
ListResourcesResult,
|
14
|
+
ListSubjectsRequest,
|
15
|
+
ListSubjectsResult,
|
16
|
+
Resource,
|
17
|
+
Subject,
|
18
|
+
Tuple,
|
19
|
+
TupleCreateRequest,
|
20
|
+
TupleCreateResult,
|
21
|
+
TupleDeleteRequest,
|
22
|
+
TupleDeleteResult,
|
23
|
+
TupleListFilter,
|
24
|
+
TupleListRequest,
|
25
|
+
TupleListResult,
|
26
|
+
TupleOrderBy,
|
27
|
+
)
|
28
|
+
|
29
|
+
|
30
|
+
class AuthZAsync(ServiceBaseAsync):
|
31
|
+
"""AuthZ service client. (Beta)
|
32
|
+
|
33
|
+
Provides methods to interact with the Pangea AuthZ Service.
|
34
|
+
Documentation for the AuthZ Service API can be found at
|
35
|
+
<https://pangea.cloud/docs/api/authz>. Note that this service is in Beta and
|
36
|
+
is subject to change.
|
37
|
+
|
38
|
+
Examples:
|
39
|
+
import os
|
40
|
+
from pangea.config import PangeaConfig
|
41
|
+
from pangea.services import AuthZ
|
42
|
+
|
43
|
+
PANGEA_TOKEN = os.getenv("PANGEA_AUTHZ_TOKEN")
|
44
|
+
|
45
|
+
authz_config = PangeaConfig(domain="aws.us.pangea.cloud")
|
46
|
+
|
47
|
+
# Setup Pangea AuthZ service client
|
48
|
+
authz = AuthZAsync(token=PANGEA_TOKEN, config=authz_config)
|
49
|
+
"""
|
50
|
+
|
51
|
+
service_name = "authz"
|
52
|
+
|
53
|
+
def __init__(self, token: str, config=None, logger_name="pangea", config_id: Optional[str] = None):
|
54
|
+
super().__init__(token, config, logger_name, config_id=config_id)
|
55
|
+
|
56
|
+
async def tuple_create(self, tuples: List[Tuple]) -> PangeaResponse[TupleCreateResult]:
|
57
|
+
"""Create tuples. (Beta)
|
58
|
+
|
59
|
+
Create tuples in the AuthZ Service. The request will fail if there is no schema
|
60
|
+
or the tuples do not validate against the schema.
|
61
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
62
|
+
|
63
|
+
Args:
|
64
|
+
tuples (List[Tuple]): List of tuples to be created.
|
65
|
+
|
66
|
+
Raises:
|
67
|
+
PangeaAPIException: If an API Error happens.
|
68
|
+
|
69
|
+
Returns:
|
70
|
+
Pangea Response with empty result.
|
71
|
+
Available response fields can be found in our
|
72
|
+
[API Documentation](https://pangea.cloud/docs/api/authz#/v1beta/tuple/create).
|
73
|
+
|
74
|
+
Examples:
|
75
|
+
await authz.tuple_create(
|
76
|
+
tuples=[
|
77
|
+
Tuple(
|
78
|
+
resource=Resource(namespace="file", id="file_1"),
|
79
|
+
relation="owner",
|
80
|
+
subject=Subject(namespace="user", id="user_1"),
|
81
|
+
)
|
82
|
+
]
|
83
|
+
)
|
84
|
+
"""
|
85
|
+
|
86
|
+
input_data = TupleCreateRequest(tuples=tuples)
|
87
|
+
return await self.request.post(
|
88
|
+
"v1beta/tuple/create", TupleCreateResult, data=input_data.dict(exclude_none=True)
|
89
|
+
)
|
90
|
+
|
91
|
+
async def tuple_list(
|
92
|
+
self,
|
93
|
+
filter: TupleListFilter,
|
94
|
+
size: Optional[int] = None,
|
95
|
+
last: Optional[str] = None,
|
96
|
+
order: Optional[ItemOrder] = None,
|
97
|
+
order_by: Optional[TupleOrderBy] = None,
|
98
|
+
) -> PangeaResponse[TupleListResult]:
|
99
|
+
"""List tuples. (Beta)
|
100
|
+
|
101
|
+
Return a paginated list of filtered tuples. The filter is given in terms
|
102
|
+
of a tuple. Fill out the fields that you want to filter. If the filter
|
103
|
+
is empty it will return all the tuples.
|
104
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
105
|
+
|
106
|
+
Args:
|
107
|
+
filter (TupleListFilter): The filter for listing tuples.
|
108
|
+
size (Optional[int]): The size of the result set. Default is None.
|
109
|
+
last (Optional[str]): The last token from a previous response. Default is None.
|
110
|
+
order (Optional[ItemOrder]): Order results asc(ending) or desc(ending).
|
111
|
+
order_by (Optional[TupleOrderBy]): Which field to order results by.
|
112
|
+
|
113
|
+
Raises:
|
114
|
+
PangeaAPIException: If an API Error happens.
|
115
|
+
|
116
|
+
Returns:
|
117
|
+
Pangea Response with a list of tuples and the last token.
|
118
|
+
Available response fields can be found in our
|
119
|
+
[API Documentation](https://pangea.cloud/docs/api/authz#/v1beta/tuple/list).
|
120
|
+
|
121
|
+
Examples:
|
122
|
+
await authz.tuple_list(TupleListFilter(subject_namespace="user", subject_id="user_1"))
|
123
|
+
"""
|
124
|
+
input_data = TupleListRequest(
|
125
|
+
filter=filter.dict(exclude_none=True), size=size, last=last, order=order, order_by=order_by
|
126
|
+
)
|
127
|
+
return await self.request.post("v1beta/tuple/list", TupleListResult, data=input_data.dict(exclude_none=True))
|
128
|
+
|
129
|
+
async def tuple_delete(self, tuples: List[Tuple]) -> PangeaResponse[TupleDeleteResult]:
|
130
|
+
"""Delete tuples. (Beta)
|
131
|
+
|
132
|
+
Delete tuples in the AuthZ Service.
|
133
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
134
|
+
|
135
|
+
Args:
|
136
|
+
tuples (List[Tuple]): List of tuples to be deleted.
|
137
|
+
|
138
|
+
Raises:
|
139
|
+
PangeaAPIException: If an API Error happens.
|
140
|
+
|
141
|
+
Returns:
|
142
|
+
Pangea Response with empty result.
|
143
|
+
Available response fields can be found in our
|
144
|
+
[API Documentation](https://pangea.cloud/docs/api/authz#/v1beta/tuple/delete).
|
145
|
+
|
146
|
+
Examples:
|
147
|
+
await authz.tuple_delete(
|
148
|
+
tuples=[
|
149
|
+
Tuple(
|
150
|
+
resource=Resource(namespace="file", id="file_1"),
|
151
|
+
relation="owner",
|
152
|
+
subject=Subject(namespace="user", id="user_1"),
|
153
|
+
)
|
154
|
+
]
|
155
|
+
)
|
156
|
+
"""
|
157
|
+
|
158
|
+
input_data = TupleDeleteRequest(tuples=tuples)
|
159
|
+
return await self.request.post(
|
160
|
+
"v1beta/tuple/delete", TupleDeleteResult, data=input_data.dict(exclude_none=True)
|
161
|
+
)
|
162
|
+
|
163
|
+
async def check(
|
164
|
+
self,
|
165
|
+
resource: Resource,
|
166
|
+
action: str,
|
167
|
+
subject: Subject,
|
168
|
+
debug: Optional[bool] = None,
|
169
|
+
attributes: Optional[Dict[str, Union[int, str]]] = None,
|
170
|
+
) -> PangeaResponse[CheckResult]:
|
171
|
+
"""Perform a check request. (Beta)
|
172
|
+
|
173
|
+
Check if a subject has permission to perform an action on the resource.
|
174
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
175
|
+
|
176
|
+
Args:
|
177
|
+
resource (Resource): The resource to check.
|
178
|
+
action (str): The action to check.
|
179
|
+
subject (Subject): The subject to check.
|
180
|
+
debug (Optional[bool]): Setting this value to True will provide a detailed analysis of the check.
|
181
|
+
attributes (Optional[Dict[str, Union[int, str]]]): Additional attributes for the check.
|
182
|
+
|
183
|
+
Raises:
|
184
|
+
PangeaAPIException: If an API Error happens.
|
185
|
+
|
186
|
+
Returns:
|
187
|
+
Pangea Response with the result of the check.
|
188
|
+
Available response fields can be found in our
|
189
|
+
[API Documentation](https://pangea.cloud/docs/api/authz#/v1beta/check).
|
190
|
+
|
191
|
+
Examples:
|
192
|
+
await authz.check(
|
193
|
+
resource=Resource(namespace="file", id="file_1"),
|
194
|
+
action="update",
|
195
|
+
subject=Subject(namespace="user", id="user_1"),
|
196
|
+
debug=True,
|
197
|
+
)
|
198
|
+
"""
|
199
|
+
|
200
|
+
input_data = CheckRequest(resource=resource, action=action, subject=subject, debug=debug, attributes=attributes)
|
201
|
+
return await self.request.post("v1beta/check", CheckResult, data=input_data.dict(exclude_none=True))
|
202
|
+
|
203
|
+
async def list_resources(
|
204
|
+
self, namespace: str, action: str, subject: Subject
|
205
|
+
) -> PangeaResponse[ListResourcesResult]:
|
206
|
+
"""List resources. (Beta)
|
207
|
+
|
208
|
+
Given a namespace, action, and subject, list all the resources in the
|
209
|
+
namespace that the subject has access to the action with.
|
210
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
211
|
+
|
212
|
+
Args:
|
213
|
+
namespace (str): The namespace to filter resources.
|
214
|
+
action (str): The action to filter resources.
|
215
|
+
subject (Subject): The subject to filter resources.
|
216
|
+
|
217
|
+
Raises:
|
218
|
+
PangeaAPIException: If an API Error happens.
|
219
|
+
|
220
|
+
Returns:
|
221
|
+
Pangea Response with a list of resource IDs.
|
222
|
+
Available response fields can be found in our
|
223
|
+
[API Documentation](https://pangea.cloud/docs/api/authz#/v1beta/list-resources).
|
224
|
+
|
225
|
+
Examples:
|
226
|
+
await authz.list_resources(
|
227
|
+
namespace="file",
|
228
|
+
action="update",
|
229
|
+
subject=Subject(namespace="user", id="user_1"),
|
230
|
+
)
|
231
|
+
"""
|
232
|
+
|
233
|
+
input_data = ListResourcesRequest(namespace=namespace, action=action, subject=subject)
|
234
|
+
return await self.request.post(
|
235
|
+
"v1beta/list-resources", ListResourcesResult, data=input_data.dict(exclude_none=True)
|
236
|
+
)
|
237
|
+
|
238
|
+
async def list_subjects(self, resource: Resource, action: str) -> PangeaResponse[ListSubjectsResult]:
|
239
|
+
"""List subjects. (Beta)
|
240
|
+
|
241
|
+
Given a resource and an action, return the list of subjects who have
|
242
|
+
access to the action for the given resource.
|
243
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
244
|
+
|
245
|
+
Args:
|
246
|
+
resource (Resource): The resource to filter subjects.
|
247
|
+
action (str): The action to filter subjects.
|
248
|
+
|
249
|
+
Raises:
|
250
|
+
PangeaAPIException: If an API Error happens.
|
251
|
+
|
252
|
+
Returns:
|
253
|
+
Pangea Response with a list of subjects.
|
254
|
+
Available response fields can be found in our
|
255
|
+
[API Documentation](https://pangea.cloud/docs/api/authz#/v1beta/list-subjects).
|
256
|
+
|
257
|
+
Examples:
|
258
|
+
await authz.list_subjects(
|
259
|
+
resource=Resource(namespace="file", id="file_1"),
|
260
|
+
action="update",
|
261
|
+
)
|
262
|
+
"""
|
263
|
+
|
264
|
+
input_data = ListSubjectsRequest(resource=resource, action=action)
|
265
|
+
return await self.request.post(
|
266
|
+
"v1beta/list-subjects", ListSubjectsResult, data=input_data.dict(exclude_none=True)
|
267
|
+
)
|
@@ -44,10 +44,10 @@ class SanitizeAsync(ServiceBaseAsync):
|
|
44
44
|
sync_call: bool = True,
|
45
45
|
) -> PangeaResponse[m.SanitizeResult]:
|
46
46
|
"""
|
47
|
-
Sanitize
|
47
|
+
Sanitize (Beta)
|
48
48
|
|
49
49
|
Apply file sanitization actions according to specified rules.
|
50
|
-
[
|
50
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
51
51
|
|
52
52
|
OperationId: sanitize_post_v1beta_sanitize
|
53
53
|
|
@@ -129,11 +129,11 @@ class SanitizeAsync(ServiceBaseAsync):
|
|
129
129
|
uploaded_file_name: Optional[str] = None,
|
130
130
|
) -> PangeaResponse[m.SanitizeResult]:
|
131
131
|
"""
|
132
|
-
Sanitize via presigned URL
|
132
|
+
Sanitize via presigned URL (Beta)
|
133
133
|
|
134
134
|
Apply file sanitization actions according to specified rules via a
|
135
135
|
[presigned URL](https://pangea.cloud/docs/api/presigned-urls).
|
136
|
-
[
|
136
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
137
137
|
|
138
138
|
OperationId: sanitize_post_v1beta_sanitize 2
|
139
139
|
|
@@ -19,11 +19,11 @@ class ShareAsync(ServiceBaseAsync):
|
|
19
19
|
self, id: Optional[str] = None, path: Optional[str] = None, force: Optional[bool] = None
|
20
20
|
) -> PangeaResponse[m.DeleteResult]:
|
21
21
|
"""
|
22
|
-
Delete
|
22
|
+
Delete (Beta)
|
23
23
|
|
24
24
|
Delete object by ID or path. If both are supplied, the path must match
|
25
25
|
that of the object represented by the ID.
|
26
|
-
[
|
26
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
27
27
|
|
28
28
|
OperationId: share_post_v1beta_delete
|
29
29
|
|
@@ -51,10 +51,10 @@ class ShareAsync(ServiceBaseAsync):
|
|
51
51
|
tags: Optional[m.Tags] = None,
|
52
52
|
) -> PangeaResponse[m.FolderCreateResult]:
|
53
53
|
"""
|
54
|
-
Create a folder
|
54
|
+
Create a folder (Beta)
|
55
55
|
|
56
56
|
Create a folder, either by name or path and parent_id.
|
57
|
-
[
|
57
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
58
58
|
|
59
59
|
OperationId: share_post_v1beta_folder_create
|
60
60
|
|
@@ -87,11 +87,11 @@ class ShareAsync(ServiceBaseAsync):
|
|
87
87
|
self, id: Optional[str] = None, path: Optional[str] = None, transfer_method: Optional[TransferMethod] = None
|
88
88
|
) -> PangeaResponse[m.GetResult]:
|
89
89
|
"""
|
90
|
-
Get an object
|
90
|
+
Get an object (Beta)
|
91
91
|
|
92
92
|
Get object. If both ID and Path are supplied, the call will fail if the
|
93
93
|
target object doesn't match both properties.
|
94
|
-
[
|
94
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
95
95
|
|
96
96
|
OperationId: share_post_v1beta_get
|
97
97
|
|
@@ -124,10 +124,10 @@ class ShareAsync(ServiceBaseAsync):
|
|
124
124
|
transfer_method: Optional[TransferMethod] = None,
|
125
125
|
) -> PangeaResponse[m.GetArchiveResult]:
|
126
126
|
"""
|
127
|
-
Get archive
|
127
|
+
Get archive (Beta)
|
128
128
|
|
129
129
|
Get an archive file of multiple objects.
|
130
|
-
[
|
130
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
131
131
|
|
132
132
|
OperationId: share_post_v1beta_get_archive
|
133
133
|
|
@@ -164,10 +164,10 @@ class ShareAsync(ServiceBaseAsync):
|
|
164
164
|
size: Optional[int] = None,
|
165
165
|
) -> PangeaResponse[m.ListResult]:
|
166
166
|
"""
|
167
|
-
List
|
167
|
+
List (Beta)
|
168
168
|
|
169
169
|
List or filter/search records.
|
170
|
-
[
|
170
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
171
171
|
|
172
172
|
OperationId: share_post_v1beta_list
|
173
173
|
|
@@ -207,10 +207,10 @@ class ShareAsync(ServiceBaseAsync):
|
|
207
207
|
size: Optional[int] = None,
|
208
208
|
) -> PangeaResponse[m.PutResult]:
|
209
209
|
"""
|
210
|
-
Upload a file
|
210
|
+
Upload a file (Beta)
|
211
211
|
|
212
212
|
Upload a file.
|
213
|
-
[
|
213
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
214
214
|
|
215
215
|
OperationId: share_post_v1beta_put
|
216
216
|
|
@@ -293,10 +293,10 @@ class ShareAsync(ServiceBaseAsync):
|
|
293
293
|
size: Optional[int] = None,
|
294
294
|
) -> PangeaResponse[m.PutResult]:
|
295
295
|
"""
|
296
|
-
Request upload URL
|
296
|
+
Request upload URL (Beta)
|
297
297
|
|
298
298
|
Request an upload URL.
|
299
|
-
[
|
299
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
300
300
|
|
301
301
|
OperationId: share_post_v1beta_put 2
|
302
302
|
|
@@ -369,10 +369,10 @@ class ShareAsync(ServiceBaseAsync):
|
|
369
369
|
updated_at: Optional[str] = None,
|
370
370
|
) -> PangeaResponse[m.UpdateResult]:
|
371
371
|
"""
|
372
|
-
Update a file
|
372
|
+
Update a file (Beta)
|
373
373
|
|
374
374
|
Update a file.
|
375
|
-
[
|
375
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
376
376
|
|
377
377
|
OperationId: share_post_v1beta_update
|
378
378
|
|
@@ -418,10 +418,10 @@ class ShareAsync(ServiceBaseAsync):
|
|
418
418
|
|
419
419
|
async def share_link_create(self, links: List[m.ShareLinkCreateItem]) -> PangeaResponse[m.ShareLinkCreateResult]:
|
420
420
|
"""
|
421
|
-
Create share links
|
421
|
+
Create share links (Beta)
|
422
422
|
|
423
423
|
Create a share link.
|
424
|
-
[
|
424
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
425
425
|
|
426
426
|
OperationId: share_post_v1beta_share_link_create
|
427
427
|
|
@@ -455,10 +455,10 @@ class ShareAsync(ServiceBaseAsync):
|
|
455
455
|
|
456
456
|
async def share_link_get(self, id: str) -> PangeaResponse[m.ShareLinkGetResult]:
|
457
457
|
"""
|
458
|
-
Get share link
|
458
|
+
Get share link (Beta)
|
459
459
|
|
460
460
|
Get a share link.
|
461
|
-
[
|
461
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
462
462
|
|
463
463
|
OperationId: share_post_v1beta_share_link_get
|
464
464
|
|
@@ -488,10 +488,10 @@ class ShareAsync(ServiceBaseAsync):
|
|
488
488
|
size: Optional[int] = None,
|
489
489
|
) -> PangeaResponse[m.ShareLinkListResult]:
|
490
490
|
"""
|
491
|
-
List share links
|
491
|
+
List share links (Beta)
|
492
492
|
|
493
493
|
Look up share links by filter options.
|
494
|
-
[
|
494
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
495
495
|
|
496
496
|
OperationId: share_post_v1beta_share_link_list
|
497
497
|
|
@@ -516,10 +516,10 @@ class ShareAsync(ServiceBaseAsync):
|
|
516
516
|
|
517
517
|
async def share_link_delete(self, ids: List[str]) -> PangeaResponse[m.ShareLinkDeleteResult]:
|
518
518
|
"""
|
519
|
-
Delete share links
|
519
|
+
Delete share links (Beta)
|
520
520
|
|
521
521
|
Delete share links.
|
522
|
-
[
|
522
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
523
523
|
|
524
524
|
OperationId: share_post_v1beta_share_link_delete
|
525
525
|
|
@@ -544,13 +544,13 @@ class ShareAsync(ServiceBaseAsync):
|
|
544
544
|
self, links: List[m.ShareLinkSendItem], sender_email: str, sender_name: Optional[str] = None
|
545
545
|
) -> PangeaResponse[m.ShareLinkSendResult]:
|
546
546
|
"""
|
547
|
-
Send share links
|
547
|
+
Send share links (Beta)
|
548
548
|
|
549
549
|
Send a secure share-link notification to a set of email addresses. The
|
550
550
|
notification email will contain an Open button that the recipient can
|
551
551
|
use to follow the secured share-link to authenticate and then access the
|
552
552
|
shared content.
|
553
|
-
[
|
553
|
+
How to install a [Beta release](https://pangea.cloud/docs/sdk/python/#beta-releases).
|
554
554
|
|
555
555
|
OperationId: share_post_v1beta_share_link_send
|
556
556
|
|
@@ -1,9 +1,10 @@
|
|
1
1
|
from .audit.audit import Audit
|
2
2
|
from .authn.authn import AuthN
|
3
|
+
from .authz import AuthZ
|
3
4
|
from .embargo import Embargo
|
4
5
|
from .file_scan import FileScan
|
5
6
|
from .intel import DomainIntel, FileIntel, IpIntel, UrlIntel, UserIntel
|
6
7
|
from .redact import Redact
|
7
|
-
from .share.share import Share
|
8
8
|
from .sanitize import Sanitize
|
9
|
+
from .share.share import Share
|
9
10
|
from .vault.vault import Vault
|