blindpay 2.0.1__tar.gz → 2.2.0__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.
Files changed (49) hide show
  1. {blindpay-2.0.1 → blindpay-2.2.0}/PKG-INFO +1 -1
  2. {blindpay-2.0.1 → blindpay-2.2.0}/pyproject.toml +1 -1
  3. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/__init__.py +1 -1
  4. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/client.py +29 -1
  5. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/__init__.py +3 -0
  6. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/bank_accounts/__init__.py +12 -0
  7. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/bank_accounts/bank_accounts.py +38 -0
  8. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/fees/fees.py +1 -0
  9. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/payins/payins.py +2 -0
  10. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/payins/quotes.py +1 -1
  11. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/payouts/payouts.py +4 -0
  12. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/receivers/receivers.py +4 -3
  13. blindpay-2.2.0/src/blindpay/resources/terms_of_service/__init__.py +17 -0
  14. blindpay-2.2.0/src/blindpay/resources/terms_of_service/terms_of_service.py +42 -0
  15. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/types.py +13 -2
  16. {blindpay-2.0.1 → blindpay-2.2.0}/.gitignore +0 -0
  17. {blindpay-2.0.1 → blindpay-2.2.0}/LICENSE +0 -0
  18. {blindpay-2.0.1 → blindpay-2.2.0}/README.md +0 -0
  19. {blindpay-2.0.1 → blindpay-2.2.0}/py.typed +0 -0
  20. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/_internal/__init__.py +0 -0
  21. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/_internal/api_client.py +0 -0
  22. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/_internal/exceptions.py +0 -0
  23. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/api_keys/__init__.py +0 -0
  24. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/api_keys/api_keys.py +0 -0
  25. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/available/__init__.py +0 -0
  26. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/available/available.py +0 -0
  27. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/custodial_wallets/__init__.py +0 -0
  28. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/custodial_wallets/custodial_wallets.py +0 -0
  29. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/fees/__init__.py +0 -0
  30. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/instances/__init__.py +0 -0
  31. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/instances/instances.py +0 -0
  32. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/partner_fees/__init__.py +0 -0
  33. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/partner_fees/partner_fees.py +0 -0
  34. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/payins/__init__.py +0 -0
  35. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/payouts/__init__.py +0 -0
  36. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/quotes/__init__.py +0 -0
  37. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/quotes/quotes.py +0 -0
  38. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/receivers/__init__.py +0 -0
  39. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/transfers/__init__.py +0 -0
  40. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/transfers/transfers.py +0 -0
  41. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/upload/__init__.py +0 -0
  42. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/upload/upload.py +0 -0
  43. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/virtual_accounts/__init__.py +0 -0
  44. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/virtual_accounts/virtual_accounts.py +0 -0
  45. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/wallets/__init__.py +0 -0
  46. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/wallets/blockchain.py +0 -0
  47. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/wallets/offramp.py +0 -0
  48. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/webhooks/__init__.py +0 -0
  49. {blindpay-2.0.1 → blindpay-2.2.0}/src/blindpay/resources/webhooks/webhooks.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: blindpay
3
- Version: 2.0.1
3
+ Version: 2.2.0
4
4
  Summary: Official Python SDK for the Blindpay API — Global payments infrastructure
5
5
  Project-URL: Homepage, https://github.com/blindpaylabs/blindpay-python
6
6
  Project-URL: Repository, https://github.com/blindpaylabs/blindpay-python
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "blindpay"
3
- version = "2.0.1"
3
+ version = "2.2.0"
4
4
  description = "Official Python SDK for the Blindpay API — Global payments infrastructure"
5
5
  readme = "README.md"
6
6
  authors = [{ name = "Blindpay", email = "alves@blindpay.com" }]
@@ -1,4 +1,4 @@
1
- __version__ = "2.0.1"
1
+ __version__ = "2.2.0"
2
2
 
3
3
  from ._internal.exceptions import BlindPayError
4
4
  from .client import BlindPay, BlindPaySync
@@ -25,6 +25,10 @@ if TYPE_CHECKING:
25
25
  from blindpay.resources.payouts.payouts import PayoutsResource, PayoutsResourceSync
26
26
  from blindpay.resources.quotes.quotes import QuotesResource, QuotesResourceSync
27
27
  from blindpay.resources.receivers.receivers import ReceiversResource, ReceiversResourceSync
28
+ from blindpay.resources.terms_of_service.terms_of_service import (
29
+ TermsOfServiceResource,
30
+ TermsOfServiceResourceSync,
31
+ )
28
32
  from blindpay.resources.transfers.transfers import TransfersResource, TransfersResourceSync
29
33
  from blindpay.resources.upload.upload import UploadResource, UploadResourceSync
30
34
  from blindpay.resources.virtual_accounts.virtual_accounts import (
@@ -35,7 +39,7 @@ if TYPE_CHECKING:
35
39
  from blindpay.resources.wallets.offramp import OfframpWalletsResource, OfframpWalletsResourceSync
36
40
  from blindpay.resources.webhooks.webhooks import WebhookEndpointsResource, WebhookEndpointsResourceSync
37
41
 
38
- __version__ = "2.1.0"
42
+ __version__ = "2.2.0"
39
43
 
40
44
  T = TypeVar("T")
41
45
 
@@ -168,6 +172,12 @@ class _InstancesNamespace:
168
172
 
169
173
  return create_webhook_endpoints_resource(self._instance_id, self._api)
170
174
 
175
+ @cached_property
176
+ def terms_of_service(self) -> "TermsOfServiceResource":
177
+ from blindpay.resources.terms_of_service import create_terms_of_service_resource
178
+
179
+ return create_terms_of_service_resource(self._instance_id, self._api)
180
+
171
181
  def __getattr__(self, name: str) -> Any:
172
182
  return getattr(self._base, name)
173
183
 
@@ -327,6 +337,12 @@ class BlindPay:
327
337
 
328
338
  return create_upload_resource(self._api)
329
339
 
340
+ @cached_property
341
+ def terms_of_service(self) -> "TermsOfServiceResource":
342
+ from blindpay.resources.terms_of_service import create_terms_of_service_resource
343
+
344
+ return create_terms_of_service_resource(self._instance_id, self._api)
345
+
330
346
  def verify_webhook_signature(
331
347
  self, *, secret: str, id: str, timestamp: str, payload: str, svix_signature: str
332
348
  ) -> bool:
@@ -386,6 +402,12 @@ class _InstancesNamespaceSync:
386
402
 
387
403
  return create_webhook_endpoints_resource_sync(self._instance_id, self._api)
388
404
 
405
+ @cached_property
406
+ def terms_of_service(self) -> "TermsOfServiceResourceSync":
407
+ from blindpay.resources.terms_of_service import create_terms_of_service_resource_sync
408
+
409
+ return create_terms_of_service_resource_sync(self._instance_id, self._api)
410
+
389
411
  def __getattr__(self, name: str) -> Any:
390
412
  return getattr(self._base, name)
391
413
 
@@ -545,6 +567,12 @@ class BlindPaySync:
545
567
 
546
568
  return create_upload_resource_sync(self._api)
547
569
 
570
+ @cached_property
571
+ def terms_of_service(self) -> "TermsOfServiceResourceSync":
572
+ from blindpay.resources.terms_of_service import create_terms_of_service_resource_sync
573
+
574
+ return create_terms_of_service_resource_sync(self._instance_id, self._api)
575
+
548
576
  def verify_webhook_signature(
549
577
  self, *, secret: str, id: str, timestamp: str, payload: str, svix_signature: str
550
578
  ) -> bool:
@@ -9,6 +9,7 @@ from .payins import create_payin_quotes_resource, create_payins_resource
9
9
  from .payouts import create_payouts_resource
10
10
  from .quotes import create_quotes_resource
11
11
  from .receivers import create_receivers_resource
12
+ from .terms_of_service import create_terms_of_service_resource, create_terms_of_service_resource_sync
12
13
  from .transfers import create_transfers_resource
13
14
  from .upload import create_upload_resource
14
15
  from .virtual_accounts import create_virtual_accounts_resource
@@ -28,6 +29,8 @@ __all__ = [
28
29
  "create_payouts_resource",
29
30
  "create_quotes_resource",
30
31
  "create_receivers_resource",
32
+ "create_terms_of_service_resource",
33
+ "create_terms_of_service_resource_sync",
31
34
  "create_transfers_resource",
32
35
  "create_upload_resource",
33
36
  "create_virtual_accounts_resource",
@@ -15,18 +15,24 @@ from .bank_accounts import (
15
15
  CreateInternationalSwiftResponse,
16
16
  CreatePixInput,
17
17
  CreatePixResponse,
18
+ CreatePixSafeInput,
19
+ CreatePixSafeResponse,
18
20
  CreateRtpInput,
19
21
  CreateRtpResponse,
20
22
  CreateSpeiInput,
21
23
  CreateSpeiResponse,
24
+ CreateTedInput,
25
+ CreateTedResponse,
22
26
  CreateWireInput,
23
27
  CreateWireResponse,
24
28
  GetBankAccountResponse,
25
29
  ListBankAccountsResponse,
26
30
  OfframpNetwork,
31
+ PixSafeType,
27
32
  PixType,
28
33
  RtpType,
29
34
  SpeiBitsoType,
35
+ TedType,
30
36
  TransfersBitsoType,
31
37
  WireType,
32
38
  create_bank_accounts_resource,
@@ -39,6 +45,7 @@ __all__ = [
39
45
  "BankAccountsResource",
40
46
  "BankAccountsResourceSync",
41
47
  "CreatePixInput",
48
+ "CreatePixSafeInput",
42
49
  "CreateArgentinaTransfersInput",
43
50
  "CreateSpeiInput",
44
51
  "CreateColombiaAchInput",
@@ -46,16 +53,19 @@ __all__ = [
46
53
  "CreateWireInput",
47
54
  "CreateInternationalSwiftInput",
48
55
  "CreateRtpInput",
56
+ "CreateTedInput",
49
57
  "AchCopBitsoType",
50
58
  "AchCopDocument",
51
59
  "AchType",
52
60
  "ArgentinaTransfers",
53
61
  "OfframpNetwork",
54
62
  "PixType",
63
+ "PixSafeType",
55
64
  "TransfersBitsoType",
56
65
  "SpeiBitsoType",
57
66
  "WireType",
58
67
  "RtpType",
68
+ "TedType",
59
69
  "GetBankAccountResponse",
60
70
  "ListBankAccountsResponse",
61
71
  "CreateAchResponse",
@@ -63,7 +73,9 @@ __all__ = [
63
73
  "CreateColombiaAchResponse",
64
74
  "CreateInternationalSwiftResponse",
65
75
  "CreatePixResponse",
76
+ "CreatePixSafeResponse",
66
77
  "CreateRtpResponse",
67
78
  "CreateSpeiResponse",
79
+ "CreateTedResponse",
68
80
  "CreateWireResponse",
69
81
  ]
@@ -25,6 +25,7 @@ WireType = Literal["wire"]
25
25
  InternationalSwiftType = Literal["international_swift"]
26
26
  RtpType = Literal["rtp"]
27
27
  PixSafeType = Literal["pix_safe"]
28
+ TedType = Literal["ted"]
28
29
 
29
30
 
30
31
  class OfframpWallet(TypedDict):
@@ -85,6 +86,9 @@ class BankAccount(TypedDict):
85
86
  tron_wallet_hash: Optional[str]
86
87
  offramp_wallets: Optional[List[OfframpWallet]]
87
88
  created_at: str
89
+ ted_bank_code: Optional[str]
90
+ ted_branch_code: Optional[str]
91
+ ted_cpf_cnpj: Optional[str]
88
92
 
89
93
 
90
94
  class ListBankAccountsResponse(TypedDict):
@@ -404,6 +408,28 @@ class CreatePixSafeResponse(TypedDict):
404
408
  created_at: str
405
409
 
406
410
 
411
+ class CreateTedInput(TypedDict):
412
+ receiver_id: str
413
+ name: str
414
+ account_number: str
415
+ account_type: BankAccountType
416
+ ted_bank_code: str
417
+ ted_branch_code: str
418
+ ted_cpf_cnpj: str
419
+
420
+
421
+ class CreateTedResponse(TypedDict):
422
+ id: str
423
+ type: TedType
424
+ name: str
425
+ account_number: str
426
+ account_type: BankAccountType
427
+ ted_bank_code: str
428
+ ted_branch_code: str
429
+ ted_cpf_cnpj: str
430
+ created_at: str
431
+
432
+
407
433
  class BankAccountsResource:
408
434
  def __init__(self, instance_id: str, client: InternalApiClient):
409
435
  self._instance_id = instance_id
@@ -476,6 +502,12 @@ class BankAccountsResource:
476
502
  payload["type"] = "pix_safe"
477
503
  return await self._client.post(f"/instances/{self._instance_id}/receivers/{receiver_id}/bank-accounts", payload)
478
504
 
505
+ async def create_ted(self, data: CreateTedInput) -> BlindpayApiResponse[CreateTedResponse]:
506
+ receiver_id = data["receiver_id"]
507
+ payload = {k: v for k, v in data.items() if k != "receiver_id"}
508
+ payload["type"] = "ted"
509
+ return await self._client.post(f"/instances/{self._instance_id}/receivers/{receiver_id}/bank-accounts", payload)
510
+
479
511
 
480
512
  class BankAccountsResourceSync:
481
513
  def __init__(self, instance_id: str, client: InternalApiClientSync):
@@ -549,6 +581,12 @@ class BankAccountsResourceSync:
549
581
  payload["type"] = "pix_safe"
550
582
  return self._client.post(f"/instances/{self._instance_id}/receivers/{receiver_id}/bank-accounts", payload)
551
583
 
584
+ def create_ted(self, data: CreateTedInput) -> BlindpayApiResponse[CreateTedResponse]:
585
+ receiver_id = data["receiver_id"]
586
+ payload = {k: v for k, v in data.items() if k != "receiver_id"}
587
+ payload["type"] = "ted"
588
+ return self._client.post(f"/instances/{self._instance_id}/receivers/{receiver_id}/bank-accounts", payload)
589
+
552
590
 
553
591
  def create_bank_accounts_resource(instance_id: str, client: InternalApiClient) -> BankAccountsResource:
554
592
  return BankAccountsResource(instance_id, client)
@@ -18,6 +18,7 @@ class FeesResponse(TypedDict):
18
18
  domestic_wire: Optional[FeeOptions]
19
19
  pix: Optional[FeeOptions]
20
20
  solana: Optional[FeeOptions]
21
+ ted: Optional[FeeOptions]
21
22
 
22
23
 
23
24
  class FeesResource:
@@ -95,6 +95,7 @@ class Payin(TypedDict):
95
95
  pse_full_name: Optional[str]
96
96
  pse_payment_link: Optional[str]
97
97
  pse_tax_id: Optional[str]
98
+ partner_fee_id: Optional[str]
98
99
 
99
100
 
100
101
  class ListPayinsInput(PaginationParams):
@@ -165,6 +166,7 @@ class GetPayinTrackResponse(TypedDict):
165
166
  address: str
166
167
  network: Network
167
168
  blindpay_bank_details: BankDetails
169
+ partner_fee_id: Optional[str]
168
170
 
169
171
 
170
172
  class ExportPayinsInput(TypedDict):
@@ -10,7 +10,7 @@ from ...types import (
10
10
  StablecoinToken,
11
11
  )
12
12
 
13
- PaymentMethod = Literal["ach", "wire", "pix", "spei"]
13
+ PaymentMethod = Literal["ach", "wire", "pix", "spei", "rtp", "ted"]
14
14
 
15
15
 
16
16
  class PayerRules(TypedDict, total=False):
@@ -92,6 +92,10 @@ class Payout(TypedDict):
92
92
  transfers_account: Optional[str]
93
93
  transfers_type: ArgentinaTransfers
94
94
  has_virtual_account: bool
95
+ partner_fee_id: Optional[str]
96
+ ted_bank_code: Optional[str]
97
+ ted_branch_code: Optional[str]
98
+ ted_cpf_cnpj: Optional[str]
95
99
 
96
100
 
97
101
  class ListPayoutsInput(PaginationParams, total=False):
@@ -16,6 +16,7 @@ BusinessType = Literal["business"]
16
16
  StandardKycType = Literal["standard"]
17
17
  EnhancedKycType = Literal["enhanced"]
18
18
  KycType = Literal["light", "standard", "enhanced"]
19
+ KycStatus = Literal["awaiting_contract", "compliance_request"]
19
20
 
20
21
  ProofOfAddressDocType = Literal[
21
22
  "UTILITY_BILL", "BANK_STATEMENT", "RENTAL_AGREEMENT", "TAX_DOCUMENT", "GOVERNMENT_CORRESPONDENCE"
@@ -328,7 +329,7 @@ class IndividualWithStandardKYC(TypedDict):
328
329
  id: str
329
330
  type: IndividualType
330
331
  kyc_type: StandardKycType
331
- kyc_status: str
332
+ kyc_status: KycStatus
332
333
  kyc_warnings: Optional[List[KycWarning]]
333
334
  email: str
334
335
  tax_id: str
@@ -378,7 +379,7 @@ class IndividualWithEnhancedKYC(TypedDict):
378
379
  id: str
379
380
  type: IndividualType
380
381
  kyc_type: EnhancedKycType
381
- kyc_status: str
382
+ kyc_status: KycStatus
382
383
  kyc_warnings: Optional[List[KycWarning]]
383
384
  email: str
384
385
  tax_id: str
@@ -433,7 +434,7 @@ class BusinessWithStandardKYB(TypedDict):
433
434
  id: str
434
435
  type: BusinessType
435
436
  kyc_type: StandardKycType
436
- kyc_status: str
437
+ kyc_status: KycStatus
437
438
  kyc_warnings: Optional[List[KycWarning]]
438
439
  email: str
439
440
  tax_id: str
@@ -0,0 +1,17 @@
1
+ from .terms_of_service import (
2
+ InitiateInput,
3
+ InitiateResponse,
4
+ TermsOfServiceResource,
5
+ TermsOfServiceResourceSync,
6
+ create_terms_of_service_resource,
7
+ create_terms_of_service_resource_sync,
8
+ )
9
+
10
+ __all__ = [
11
+ "create_terms_of_service_resource",
12
+ "create_terms_of_service_resource_sync",
13
+ "TermsOfServiceResource",
14
+ "TermsOfServiceResourceSync",
15
+ "InitiateInput",
16
+ "InitiateResponse",
17
+ ]
@@ -0,0 +1,42 @@
1
+ from typing_extensions import Optional, TypedDict
2
+
3
+ from ..._internal.api_client import InternalApiClient, InternalApiClientSync
4
+ from ...types import BlindpayApiResponse
5
+
6
+
7
+ class InitiateInput(TypedDict):
8
+ idempotency_key: str
9
+ receiver_id: Optional[str]
10
+ redirect_url: Optional[str]
11
+
12
+
13
+ class InitiateResponse(TypedDict):
14
+ url: str
15
+
16
+
17
+ class TermsOfServiceResource:
18
+ def __init__(self, instance_id: str, client: InternalApiClient):
19
+ self._instance_id = instance_id
20
+ self._client = client
21
+
22
+ async def initiate(self, data: InitiateInput) -> BlindpayApiResponse[InitiateResponse]:
23
+ return await self._client.post(f"/e/instances/{self._instance_id}/tos", data)
24
+
25
+
26
+ class TermsOfServiceResourceSync:
27
+ def __init__(self, instance_id: str, client: InternalApiClientSync):
28
+ self._instance_id = instance_id
29
+ self._client = client
30
+
31
+ def initiate(self, data: InitiateInput) -> BlindpayApiResponse[InitiateResponse]:
32
+ return self._client.post(f"/e/instances/{self._instance_id}/tos", data)
33
+
34
+
35
+ def create_terms_of_service_resource(instance_id: str, client: InternalApiClient) -> TermsOfServiceResource:
36
+ return TermsOfServiceResource(instance_id, client)
37
+
38
+
39
+ def create_terms_of_service_resource_sync(
40
+ instance_id: str, client: InternalApiClientSync
41
+ ) -> TermsOfServiceResourceSync:
42
+ return TermsOfServiceResourceSync(instance_id, client)
@@ -50,7 +50,16 @@ BankAccountType = Literal["checking", "savings"]
50
50
  Currency = Literal["USDC", "USDT", "USDB", "BRL", "USD", "MXN", "COP", "ARS"]
51
51
 
52
52
  Rail = Literal[
53
- "wire", "ach", "pix", "pix_safe", "spei_bitso", "transfers_bitso", "ach_cop_bitso", "international_swift", "rtp"
53
+ "wire",
54
+ "ach",
55
+ "pix",
56
+ "pix_safe",
57
+ "spei_bitso",
58
+ "transfers_bitso",
59
+ "ach_cop_bitso",
60
+ "international_swift",
61
+ "rtp",
62
+ "ted",
54
63
  ]
55
64
 
56
65
  AccountClass = Literal["individual", "business"]
@@ -380,4 +389,6 @@ RecipientRelationship = Literal[
380
389
 
381
390
  BankingPartner = Literal["cfsb", "citi", "hsbc", "jpmorgan"]
382
391
 
383
- PaymentMethod = Literal["ach", "wire", "pix", "spei", "transfers", "pse", "international_swift"]
392
+ PaymentMethod = Literal["ach", "wire", "pix", "spei", "transfers", "pse", "international_swift", "rtp", "ted"]
393
+
394
+ KycStatus = Literal["awaiting_contract", "compliance_request"]
File without changes
File without changes
File without changes
File without changes