docs: add Tink API doc links to every method in client.py
All checks were successful
Build and Deploy / deploy (push) Successful in 51s
All checks were successful
Build and Deploy / deploy (push) Successful in 51s
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
"""
|
"""
|
||||||
Tink API client — async httpx wrapper covering auth, users,
|
Tink API client — async httpx wrapper covering auth, users,
|
||||||
accounts (v2), transactions (v2), events (v2), and bank connectivity.
|
accounts (v2), transactions (v2), events (v2), and bank connectivity.
|
||||||
|
|
||||||
|
Tink API reference: https://docs.tink.com/api-introduction
|
||||||
|
Endpoint reference: https://docs.tink.com/api#overview
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import json
|
import json
|
||||||
@@ -89,7 +92,10 @@ class TinkClient:
|
|||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
async def get_app_token(self, scope: str = "user:create") -> dict:
|
async def get_app_token(self, scope: str = "user:create") -> dict:
|
||||||
"""Client credentials flow — returns app-level token."""
|
"""
|
||||||
|
Client credentials flow — returns app-level access token.
|
||||||
|
Docs: https://docs.tink.com/api#connectivity/oauth/create-an-oauth-token
|
||||||
|
"""
|
||||||
return await self._post(
|
return await self._post(
|
||||||
f"{self.api_base}/api/v1/oauth/token",
|
f"{self.api_base}/api/v1/oauth/token",
|
||||||
headers={"Content-Type": "application/x-www-form-urlencoded"},
|
headers={"Content-Type": "application/x-www-form-urlencoded"},
|
||||||
@@ -103,6 +109,10 @@ class TinkClient:
|
|||||||
|
|
||||||
async def exchange_code_for_token(self, code: str,
|
async def exchange_code_for_token(self, code: str,
|
||||||
redirect_uri: str | None = None) -> dict:
|
redirect_uri: str | None = None) -> dict:
|
||||||
|
"""
|
||||||
|
Exchange the authorization_code from Tink Link callback for a user-scoped token.
|
||||||
|
Docs: https://docs.tink.com/api#connectivity/oauth/create-an-oauth-token
|
||||||
|
"""
|
||||||
data: dict = {
|
data: dict = {
|
||||||
"client_id": self.client_id,
|
"client_id": self.client_id,
|
||||||
"client_secret": self.client_secret,
|
"client_secret": self.client_secret,
|
||||||
@@ -123,6 +133,11 @@ class TinkClient:
|
|||||||
|
|
||||||
async def create_user(self, app_token: str, external_user_id: str,
|
async def create_user(self, app_token: str, external_user_id: str,
|
||||||
market: str = "DK", locale: str = "da_DK") -> dict:
|
market: str = "DK", locale: str = "da_DK") -> dict:
|
||||||
|
"""
|
||||||
|
Create a Tink user linked to your internal customer reference.
|
||||||
|
external_user_id = your system's reference (e.g. "moneycapp-42"). Tink returns a user_id.
|
||||||
|
Docs: https://docs.tink.com/api#user/create-user
|
||||||
|
"""
|
||||||
return await self._post(
|
return await self._post(
|
||||||
f"{self.api_base}/api/v1/user/create",
|
f"{self.api_base}/api/v1/user/create",
|
||||||
headers={"Authorization": f"Bearer {app_token}"},
|
headers={"Authorization": f"Bearer {app_token}"},
|
||||||
@@ -137,6 +152,11 @@ class TinkClient:
|
|||||||
|
|
||||||
async def get_authorization_grant_token(self, app_token: str, user_id: str,
|
async def get_authorization_grant_token(self, app_token: str, user_id: str,
|
||||||
scope: str) -> dict:
|
scope: str) -> dict:
|
||||||
|
"""
|
||||||
|
Delegate an authorization grant for a specific user — generates a one-time code
|
||||||
|
that binds the Tink Link session to that user.
|
||||||
|
Docs: https://docs.tink.com/api#connectivity/oauth/create-authorization
|
||||||
|
"""
|
||||||
return await self._post(
|
return await self._post(
|
||||||
f"{self.api_base}/api/v1/oauth/authorization-grant/delegate",
|
f"{self.api_base}/api/v1/oauth/authorization-grant/delegate",
|
||||||
headers={
|
headers={
|
||||||
@@ -153,6 +173,12 @@ class TinkClient:
|
|||||||
def get_tink_link_url(self, market: str = "DK",
|
def get_tink_link_url(self, market: str = "DK",
|
||||||
authorization_code: str | None = None,
|
authorization_code: str | None = None,
|
||||||
redirect_uri_override: str | None = None) -> str:
|
redirect_uri_override: str | None = None) -> str:
|
||||||
|
"""
|
||||||
|
Build the Tink Link URL for bank connection.
|
||||||
|
With authorization_code: links the session to a specific Tink user (production flow).
|
||||||
|
Without: anonymous flow (sandbox only).
|
||||||
|
Docs: https://docs.tink.com/resources/tink-link/tink-link-web-permanent-users
|
||||||
|
"""
|
||||||
from urllib.parse import urlencode
|
from urllib.parse import urlencode
|
||||||
params: dict = {
|
params: dict = {
|
||||||
"client_id": self.client_id,
|
"client_id": self.client_id,
|
||||||
@@ -184,6 +210,10 @@ class TinkClient:
|
|||||||
|
|
||||||
async def list_accounts(self, user_token: str, page_size: int = 50,
|
async def list_accounts(self, user_token: str, page_size: int = 50,
|
||||||
page_token: Optional[str] = None) -> dict:
|
page_token: Optional[str] = None) -> dict:
|
||||||
|
"""
|
||||||
|
List all accounts for a user including balance and IBAN.
|
||||||
|
Docs: https://docs.tink.com/api#account-service-v2/account/list-accounts
|
||||||
|
"""
|
||||||
params: dict = {"pageSize": page_size}
|
params: dict = {"pageSize": page_size}
|
||||||
if page_token:
|
if page_token:
|
||||||
params["pageToken"] = page_token
|
params["pageToken"] = page_token
|
||||||
@@ -206,6 +236,10 @@ class TinkClient:
|
|||||||
async def list_transactions(self, user_token: str, page_size: int = 25,
|
async def list_transactions(self, user_token: str, page_size: int = 25,
|
||||||
page_token: Optional[str] = None,
|
page_token: Optional[str] = None,
|
||||||
account_id: Optional[str] = None) -> dict:
|
account_id: Optional[str] = None) -> dict:
|
||||||
|
"""
|
||||||
|
List transactions with cursor-based pagination.
|
||||||
|
Docs: https://docs.tink.com/api#transaction-service-v2/transaction/list-transactions
|
||||||
|
"""
|
||||||
params: dict = {"pageSize": page_size}
|
params: dict = {"pageSize": page_size}
|
||||||
if page_token:
|
if page_token:
|
||||||
params["pageToken"] = page_token
|
params["pageToken"] = page_token
|
||||||
@@ -265,6 +299,10 @@ class TinkClient:
|
|||||||
|
|
||||||
async def register_webhook(self, app_token: str, url: str,
|
async def register_webhook(self, app_token: str, url: str,
|
||||||
enabled_events: list[str] | None = None) -> dict:
|
enabled_events: list[str] | None = None) -> dict:
|
||||||
|
"""
|
||||||
|
Register a webhook endpoint for real-time transaction notifications.
|
||||||
|
Docs: https://docs.tink.com/api#webhook/create-webhook-endpoint
|
||||||
|
"""
|
||||||
return await self._post(
|
return await self._post(
|
||||||
f"{self.api_base}/api/v1/webhooks",
|
f"{self.api_base}/api/v1/webhooks",
|
||||||
headers={"Authorization": f"Bearer {app_token}"},
|
headers={"Authorization": f"Bearer {app_token}"},
|
||||||
|
|||||||
Reference in New Issue
Block a user