|
1 | | -from typing import List, Optional, Union |
| 1 | +from typing import Any, Dict, List, Optional, Union |
2 | 2 | from urllib.parse import urlencode |
3 | 3 |
|
4 | 4 | from typing_extensions import Literal, TypedDict |
|
9 | 9 | Country, |
10 | 10 | PaginationMetadata, |
11 | 11 | PaginationParams, |
| 12 | + ReceiverType, |
12 | 13 | ) |
13 | 14 |
|
14 | 15 | IndividualType = Literal["individual"] |
|
94 | 95 | "112120", |
95 | 96 | "113310", |
96 | 97 | "115114", |
| 98 | + "446120", |
97 | 99 | "541211", |
98 | 100 | "541810", |
99 | 101 | "541430", |
@@ -731,6 +733,34 @@ class RequestLimitIncreaseResponse(TypedDict): |
731 | 733 | id: str |
732 | 734 |
|
733 | 735 |
|
| 736 | +RfiStatus = Literal["pending", "submitted", "expired", "cancelled"] |
| 737 | + |
| 738 | + |
| 739 | +class RfiSection(TypedDict): |
| 740 | + # The changelog doesn't specify the structure of RfiSection items, |
| 741 | + # so we'll leave this as a flexible dict for now |
| 742 | + pass |
| 743 | + |
| 744 | + |
| 745 | +class Rfi(TypedDict): |
| 746 | + id: str |
| 747 | + receiver_id: str |
| 748 | + instance_id: str |
| 749 | + status: RfiStatus |
| 750 | + request: List[RfiSection] |
| 751 | + response: object |
| 752 | + expires_at: str |
| 753 | + submitted_at: Optional[str] |
| 754 | + created_at: str |
| 755 | + receiver_type: ReceiverType |
| 756 | + receiver_aiprise_session_id: Optional[str] |
| 757 | + receiver_kyc_status: str |
| 758 | + |
| 759 | + |
| 760 | +class SubmitRfiResponse(TypedDict): |
| 761 | + success: bool |
| 762 | + |
| 763 | + |
734 | 764 | class ReceiversResource: |
735 | 765 | def __init__(self, instance_id: str, client: InternalApiClient): |
736 | 766 | self._instance_id = instance_id |
@@ -792,6 +822,12 @@ async def request_limit_increase( |
792 | 822 | f"/instances/{self._instance_id}/receivers/{receiver_id}/limit-increase", payload |
793 | 823 | ) |
794 | 824 |
|
| 825 | + async def get_rfi(self, receiver_id: str) -> BlindpayApiResponse[Rfi]: |
| 826 | + return await self._client.get(f"/instances/{self._instance_id}/receivers/{receiver_id}/rfi") |
| 827 | + |
| 828 | + async def submit_rfi(self, receiver_id: str, data: Dict[str, Any]) -> BlindpayApiResponse[SubmitRfiResponse]: |
| 829 | + return await self._client.post(f"/instances/{self._instance_id}/receivers/{receiver_id}/rfi", data) |
| 830 | + |
795 | 831 |
|
796 | 832 | class ReceiversResourceSync: |
797 | 833 | def __init__(self, instance_id: str, client: InternalApiClientSync): |
@@ -850,6 +886,12 @@ def request_limit_increase( |
850 | 886 | payload = {k: v for k, v in data.items() if k != "receiver_id"} |
851 | 887 | return self._client.post(f"/instances/{self._instance_id}/receivers/{receiver_id}/limit-increase", payload) |
852 | 888 |
|
| 889 | + def get_rfi(self, receiver_id: str) -> BlindpayApiResponse[Rfi]: |
| 890 | + return self._client.get(f"/instances/{self._instance_id}/receivers/{receiver_id}/rfi") |
| 891 | + |
| 892 | + def submit_rfi(self, receiver_id: str, data: Dict[str, Any]) -> BlindpayApiResponse[SubmitRfiResponse]: |
| 893 | + return self._client.post(f"/instances/{self._instance_id}/receivers/{receiver_id}/rfi", data) |
| 894 | + |
853 | 895 |
|
854 | 896 | def create_receivers_resource(instance_id: str, client: InternalApiClient) -> ReceiversResource: |
855 | 897 | return ReceiversResource(instance_id, client) |
|
0 commit comments