Initial Python SDK release v1.0.0
This commit is contained in:
80
fetcherpay/api/webhooks.py
Normal file
80
fetcherpay/api/webhooks.py
Normal file
@@ -0,0 +1,80 @@
|
||||
"""
|
||||
Webhooks API
|
||||
"""
|
||||
|
||||
from typing import Optional, List, Dict, Any
|
||||
|
||||
|
||||
class WebhooksAPI:
|
||||
"""Webhooks API client"""
|
||||
|
||||
def __init__(self, client):
|
||||
self.client = client
|
||||
|
||||
def create(
|
||||
self,
|
||||
url: str,
|
||||
events: Optional[List[str]] = None,
|
||||
metadata: Optional[Dict[str, Any]] = None,
|
||||
idempotency_key: Optional[str] = None
|
||||
) -> dict:
|
||||
"""
|
||||
Create a webhook endpoint
|
||||
|
||||
Args:
|
||||
url: Endpoint URL
|
||||
events: List of events to subscribe to
|
||||
metadata: Optional metadata
|
||||
idempotency_key: Idempotency key
|
||||
"""
|
||||
data = {'url': url}
|
||||
|
||||
if events:
|
||||
data['events'] = events
|
||||
if metadata:
|
||||
data['metadata'] = metadata
|
||||
|
||||
return self.client._request(
|
||||
'POST',
|
||||
'/webhooks',
|
||||
json=data,
|
||||
idempotency_key=idempotency_key
|
||||
)
|
||||
|
||||
def retrieve(self, webhook_id: str) -> dict:
|
||||
"""Retrieve a webhook endpoint"""
|
||||
return self.client._request('GET', f'/webhooks/{webhook_id}')
|
||||
|
||||
def list(
|
||||
self,
|
||||
limit: int = 25,
|
||||
cursor: Optional[str] = None
|
||||
) -> dict:
|
||||
"""List webhook endpoints"""
|
||||
params = {'limit': limit}
|
||||
if cursor:
|
||||
params['cursor'] = cursor
|
||||
|
||||
return self.client._request('GET', '/webhooks', params=params)
|
||||
|
||||
def update(
|
||||
self,
|
||||
webhook_id: str,
|
||||
url: Optional[str] = None,
|
||||
events: Optional[List[str]] = None,
|
||||
metadata: Optional[Dict[str, Any]] = None
|
||||
) -> dict:
|
||||
"""Update a webhook endpoint"""
|
||||
data = {}
|
||||
if url:
|
||||
data['url'] = url
|
||||
if events:
|
||||
data['events'] = events
|
||||
if metadata:
|
||||
data['metadata'] = metadata
|
||||
|
||||
return self.client._request('PUT', f'/webhooks/{webhook_id}', json=data)
|
||||
|
||||
def delete(self, webhook_id: str) -> None:
|
||||
"""Delete a webhook endpoint"""
|
||||
self.client._request('DELETE', f'/webhooks/{webhook_id}')
|
||||
Reference in New Issue
Block a user