Skip to content

Commit 075021c

Browse files
committed
Add Split and SplitReceiver resources
1 parent b1fe9c5 commit 075021c

File tree

4 files changed

+132
-14
lines changed

4 files changed

+132
-14
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ Given a version number MAJOR.MINOR.PATCH, increment:
1313

1414

1515
## [Unreleased]
16+
### Added
17+
- Split resource
18+
- SplitLog resource
19+
- SplitReceiver resource
20+
- SplitReceiverLog resource
1621

1722
## [2.22.0] - 2023-09-18
1823
### Removed

README.md

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ is as easy as sending a text message to your client!
4949
- [CorporateBalance](#get-your-corporatebalance): View your corporate balance
5050
- [CorporateTransactions](#query-corporatetransactions): View the transactions that have affected your corporate balance
5151
- [CorporateEnums](#corporate-enums): Query enums related to the corporate purchases, such as merchant categories, countries and card purchase methods
52+
- [Split](#query-a-split): Split invoices
53+
- [SplitReceiver](#query-a-split-receiver): Receiver of an invoice split
5254
- [Webhooks](#create-a-webhook-subscription): Configure your webhook endpoints and subscriptions
5355
- [WebhookEvents](#process-webhook-events): Manage webhook events
5456
- [WebhookEventAttempts](#query-failed-webhook-event-delivery-attempts-information): Query failed webhook event deliveries
@@ -2167,6 +2169,114 @@ for method in methods:
21672169
print(method)
21682170
```
21692171

2172+
## Split
2173+
2174+
Split an invoice to different receivers
2175+
2176+
## Query a Split
2177+
2178+
You can get a list of created splits given some filters.
2179+
2180+
```python
2181+
import starkbank
2182+
2183+
splits = starkbank.split.query(limit=10)
2184+
2185+
for split in splits:
2186+
print(split)
2187+
```
2188+
2189+
## Get a Split
2190+
2191+
To get a single Split by its id, run:
2192+
2193+
```python
2194+
import starkbank
2195+
2196+
split = starkbank.split.get("5155165527080960")
2197+
2198+
print(split)
2199+
```
2200+
2201+
## Query split logs
2202+
2203+
You can query split logs to check additional information
2204+
2205+
```python
2206+
import starkbank
2207+
2208+
logs = starkbank.split.log.query(
2209+
split_ids=["5155165527080960", "76551659167801921"],
2210+
)
2211+
2212+
for log in logs:
2213+
print(log)
2214+
```
2215+
2216+
## Get a split log
2217+
2218+
You can also get a split log by specifying its id.
2219+
2220+
```python
2221+
import starkbank
2222+
2223+
log = starkbank.split.log.get("5155165527080960")
2224+
2225+
print(log)
2226+
```
2227+
2228+
## Query a split receiver
2229+
2230+
To take a look at the receivers created to your workspace, just run the following:
2231+
2232+
```python
2233+
import starkbank
2234+
2235+
receivers = starkbank.splitreceiver.query(limit=10)
2236+
2237+
for receiver in receivers:
2238+
print(receiver)
2239+
```
2240+
2241+
## Get a split receiver
2242+
2243+
To get a single Receiver by its id, run:
2244+
2245+
```python
2246+
import starkbank
2247+
2248+
receiver = starkbank.splitreceiver.get("5155165527080960")
2249+
2250+
print(receiver)
2251+
```
2252+
2253+
## Query a split receiver logs
2254+
2255+
You can query split receiver logs to check additional information
2256+
2257+
```python
2258+
import starkbank
2259+
2260+
logs = starkbank.splitreceiver.log.query(
2261+
receiver_ids =["5155165527080960", "76551659167801921"],
2262+
)
2263+
2264+
for log in logs:
2265+
print(log)
2266+
```
2267+
2268+
## Get a split receiver log
2269+
2270+
You can also get a split receiver log by specifying its id.
2271+
2272+
```python
2273+
import starkbank
2274+
2275+
log = starkbank.splitreceiver.log.get("5155165527080960")
2276+
2277+
print(log)
2278+
```
2279+
21702280
## Create a webhook subscription
21712281

21722282
To create a webhook subscription and be notified whenever an event occurs, run:

starkbank/split/__split.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,32 +10,32 @@ class Split(Resource):
1010
created in the Stark Bank API. The 'create' function sends the objects
1111
to the Stark Bank API and returns the list of created objects.
1212
## Parameters (required):
13-
- amount [int]:
14-
- receiver_id [string]:
13+
- amount [int]: value to send to receivers. ex: 1000 (= R$ 10.00)
14+
- receiver_id [string]: split receiver unique id. ex: "5656565656565656"
1515
## Attributes (return-only):
1616
- id [string]: unique id returned when split is created. ex: "5656565656565656"
1717
- source [string]: source receivable which generated this split object. ex: "5656565656565656"
1818
- external_id [string]: unique id, generated by the system, to avoid duplicated splits. ex: "invoice/1234/receiver/5678"
19-
- tags [list of strings, default []]: list of strings for tagging
19+
- tags [list of strings, default None]: list of strings for tagging
2020
- scheduled [datetime.date, datetime.datetime or string, default now]: payment scheduled date or datetime. ex: datetime.datetime(2020, 3, 10, 15, 17, 3)
2121
- status [string]: current payment status. ex: "success" or "failed"
2222
- created [datetime.datetime]: creation datetime for the payment. ex: datetime.datetime(2020, 3, 10, 10, 30, 0, 0)
2323
- updated [datetime.datetime]: update datetime for the payment. ex: datetime.datetime(2020, 3, 10, 10, 30, 0, 0)
2424
"""
2525

26-
def __init__(self, amount, receiver_id, scheduled=None, tags=None, id=None,
27-
status=None, updated=None, created=None, external_id=None, source=None):
26+
def __init__(self, amount, receiver_id, id=None, source=None, external_id=None,
27+
tags=None, scheduled=None, status=None, created=None, updated=None):
2828
Resource.__init__(self, id=id)
2929

3030
self.amount = amount
31-
self.scheduled = check_datetime(scheduled)
32-
self.tags = tags
33-
self.status = status
31+
self.receiver_id = receiver_id
3432
self.source = source
3533
self.external_id = external_id
36-
self.receiver_id = receiver_id
37-
self.updated = check_datetime(updated)
34+
self.tags = tags
35+
self.scheduled = check_datetime(scheduled)
36+
self.status = status
3837
self.created = check_datetime(created)
38+
self.updated = check_datetime(updated)
3939

4040

4141
_resource = {"class": Split, "name": "Split"}
@@ -54,7 +54,7 @@ def get(id, user=None):
5454
return rest.get_id(resource=_resource, id=id, user=user)
5555

5656

57-
def query(limit=None, after=None, before=None, tags=None, ids=None, status=None, user=None):
57+
def query(limit=None, after=None, before=None, tags=None, ids=None, receiver_ids=None, status=None, user=None):
5858
"""# Retrieve Splits
5959
Receive a generator of Split objects previously created in the Stark Bank API
6060
## Parameters (optional):
@@ -63,6 +63,7 @@ def query(limit=None, after=None, before=None, tags=None, ids=None, status=None,
6363
- before [datetime.date or string, default None] date filter for objects created only before specified date. ex: datetime.date(2020, 3, 10)
6464
- tags [list of strings, default None]: tags to filter retrieved objects. ex: ["tony", "stark"]
6565
- ids [list of strings, default None]: list of ids to filter retrieved objects. ex: ["5656565656565656", "4545454545454545"]
66+
- receiver_ids [list of strings, default None]: list of receiver ids to filter retrieved objects. ex: ["5656565656565656", "4545454545454545"]
6667
- status [string, default None]: filter for status of retrieved objects. ex: "success"
6768
- user [Organization/Project object, default None]: Organization or Project object. Not necessary if starkbank.user was set before function call
6869
## Return:
@@ -75,12 +76,13 @@ def query(limit=None, after=None, before=None, tags=None, ids=None, status=None,
7576
before=check_date(before),
7677
tags=tags,
7778
ids=ids,
79+
receiver_ids=receiver_ids,
7880
status=status,
7981
user=user,
8082
)
8183

8284

83-
def page(cursor=None, after=None, before=None, tags=None, ids=None, status=None, limit=None, user=None):
85+
def page(cursor=None, after=None, before=None, tags=None, ids=None, receiver_ids=None, status=None, limit=None, user=None):
8486
"""# Retrieve paged Splits
8587
Receive a list of up to 100 Split objects previously created in the Stark Bank API and the cursor to the next page.
8688
Use this function instead of query if you want to manually page your requests.
@@ -91,6 +93,7 @@ def page(cursor=None, after=None, before=None, tags=None, ids=None, status=None,
9193
- before [datetime.date or string, default None] date filter for objects created only before specified date. ex: datetime.date(2020, 3, 10)
9294
- tags [list of strings, default None]: tags to filter retrieved objects. ex: ["tony", "stark"]
9395
- ids [list of strings, default None]: list of ids to filter retrieved objects. ex: ["5656565656565656", "4545454545454545"]
96+
- receiver_ids [list of strings, default None]: list of receiver ids to filter retrieved objects. ex: ["5656565656565656", "4545454545454545"]
9497
- status [string, default None]: filter for status of retrieved objects. ex: "success"
9598
- user [Organization/Project object, default None]: Organization or Project object. Not necessary if starkbank.user was set before function call
9699
## Return:
@@ -105,6 +108,7 @@ def page(cursor=None, after=None, before=None, tags=None, ids=None, status=None,
105108
before=check_date(before),
106109
tags=tags,
107110
ids=ids,
111+
receiver_ids=receiver_ids,
108112
status=status,
109113
user=user,
110114
)

starkbank/splitreceiver/__splitreceiver.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ class SplitReceiver(Resource):
2525
"""
2626

2727
def __init__(self, name, tax_id, bank_code, branch_code, account_number, account_type,
28-
tags=None, status=None, id=None, created=None, updated=None
29-
):
28+
tags=None, id=None, status=None, created=None, updated=None):
3029
Resource.__init__(self, id=id)
3130

3231
self.name = name

0 commit comments

Comments
 (0)