Skip to content

Commit 482906a

Browse files
committed
feat: add receivers limit increase endpoints (#4)
1 parent ec7d8b0 commit 482906a

5 files changed

Lines changed: 68 additions & 4 deletions

File tree

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,4 +142,4 @@ cython_debug/
142142

143143

144144
# uv
145-
.uv/
145+
.uv/

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "blindpay"
3-
version = "0.1.0"
3+
version = "1.1.0"
44
description = "Official Python SDK for the Blindpay API — Global payments infrastructure"
55
readme = "README.md"
66
authors = [{ name = "Blindpay", email = "[email protected]" }]

src/blindpay/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = "0.1.0"
1+
__version__ = "1.1.0"
22

33
from ._internal.exceptions import BlindPayError
44
from .client import BlindPay, BlindPaySync

src/blindpay/resources/receivers/receivers.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,17 @@
5151

5252
OwnerRole = Literal["beneficial_controlling", "beneficial_owner", "controlling_person"]
5353

54+
LimitIncreaseRequestStatus = Literal["in_review", "approved", "rejected"]
55+
56+
LimitIncreaseRequestSupportingDocumentType = Literal[
57+
"individual_bank_statement",
58+
"individual_tax_return",
59+
"individual_proof_of_income",
60+
"business_bank_statement",
61+
"business_financial_statements",
62+
"business_tax_return",
63+
]
64+
5465

5566
class KycWarning(TypedDict):
5667
code: Optional[str]
@@ -362,6 +373,35 @@ class GetReceiverLimitsResponse(TypedDict):
362373
limits: Limits
363374

364375

376+
class LimitIncreaseRequest(TypedDict):
377+
id: str
378+
receiver_id: str
379+
status: LimitIncreaseRequestStatus
380+
daily: float
381+
monthly: float
382+
per_transaction: float
383+
supporting_document_file: str
384+
supporting_document_type: LimitIncreaseRequestSupportingDocumentType
385+
created_at: str
386+
updated_at: str
387+
388+
389+
GetLimitIncreaseRequestsResponse = List[LimitIncreaseRequest]
390+
391+
392+
class RequestLimitIncreaseInput(TypedDict):
393+
receiver_id: str
394+
daily: float
395+
monthly: float
396+
per_transaction: float
397+
supporting_document_file: str
398+
supporting_document_type: LimitIncreaseRequestSupportingDocumentType
399+
400+
401+
class RequestLimitIncreaseResponse(TypedDict):
402+
id: str
403+
404+
365405
class ReceiversResource:
366406
def __init__(self, instance_id: str, client: InternalApiClient):
367407
self._instance_id = instance_id
@@ -402,6 +442,20 @@ async def delete(self, receiver_id: str) -> BlindpayApiResponse[None]:
402442
async def get_limits(self, receiver_id: str) -> BlindpayApiResponse[GetReceiverLimitsResponse]:
403443
return await self._client.get(f"/instances/{self._instance_id}/limits/receivers/{receiver_id}")
404444

445+
async def get_limit_increase_requests(
446+
self, receiver_id: str
447+
) -> BlindpayApiResponse[GetLimitIncreaseRequestsResponse]:
448+
return await self._client.get(f"/instances/{self._instance_id}/receivers/{receiver_id}/limit-increase")
449+
450+
async def request_limit_increase(
451+
self, data: RequestLimitIncreaseInput
452+
) -> BlindpayApiResponse[RequestLimitIncreaseResponse]:
453+
receiver_id = data["receiver_id"]
454+
payload = {k: v for k, v in data.items() if k != "receiver_id"}
455+
return await self._client.post(
456+
f"/instances/{self._instance_id}/receivers/{receiver_id}/limit-increase", payload
457+
)
458+
405459

406460
class ReceiversResourceSync:
407461
def __init__(self, instance_id: str, client: InternalApiClientSync):
@@ -443,6 +497,16 @@ def delete(self, receiver_id: str) -> BlindpayApiResponse[None]:
443497
def get_limits(self, receiver_id: str) -> BlindpayApiResponse[GetReceiverLimitsResponse]:
444498
return self._client.get(f"/instances/{self._instance_id}/limits/receivers/{receiver_id}")
445499

500+
def get_limit_increase_requests(self, receiver_id: str) -> BlindpayApiResponse[GetLimitIncreaseRequestsResponse]:
501+
return self._client.get(f"/instances/{self._instance_id}/receivers/{receiver_id}/limit-increase")
502+
503+
def request_limit_increase(
504+
self, data: RequestLimitIncreaseInput
505+
) -> BlindpayApiResponse[RequestLimitIncreaseResponse]:
506+
receiver_id = data["receiver_id"]
507+
payload = {k: v for k, v in data.items() if k != "receiver_id"}
508+
return self._client.post(f"/instances/{self._instance_id}/receivers/{receiver_id}/limit-increase", payload)
509+
446510

447511
def create_receivers_resource(instance_id: str, client: InternalApiClient) -> ReceiversResource:
448512
return ReceiversResource(instance_id, client)

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)