from typing import Dict, Any, Optional
from .base import BaseAPI
[docs]
class DisputeAPI(BaseAPI):
"""Disputes API"""
[docs]
def list(self, per_page: int = 50, page: Optional[int] = None,
from_date: Optional[str] = None, to_date: Optional[str] = None,
transaction: Optional[str] = None, status: Optional[str] = None) -> Dict[str, Any]:
"""List disputes"""
params = self._build_query_params(
from_date=from_date, to_date=to_date, transaction=transaction, status=status
)
return self._paginate('dispute', params=params, per_page=per_page, page=page)
[docs]
def fetch(self, id: str) -> Dict[str, Any]:
"""Fetch dispute"""
return self._get(f'dispute/{id}')
[docs]
def list_transaction_disputes(self, id: str) -> Dict[str, Any]:
"""List transaction disputes"""
return self._get(f'dispute/transaction/{id}')
[docs]
def update(self, id: str, refund_amount: int, uploaded_filename: Optional[str] = None) -> Dict[str, Any]:
"""Update dispute"""
data = self._build_query_params(
refund_amount=refund_amount, uploaded_filename=uploaded_filename)
return self._put(f'dispute/{id}', data=data)
[docs]
def add_evidence(self, id: str, customer_email: str, customer_name: str,
customer_phone: str, service_details: str,
delivery_address: Optional[str] = None, delivery_date: Optional[str] = None) -> Dict[str, Any]:
"""Add evidence to dispute"""
data = self._build_query_params(
customer_email=customer_email, customer_name=customer_name,
customer_phone=customer_phone, service_details=service_details,
delivery_address=delivery_address, delivery_date=delivery_date
)
return self._post(f'dispute/{id}/evidence', data=data)
[docs]
def get_upload_url(self, id: str, upload_filename: str) -> Dict[str, Any]:
"""Get upload URL for dispute evidence"""
params = {'upload_filename': upload_filename}
return self._get(f'dispute/{id}/upload_url', params=params)
[docs]
def resolve(self, id: str, resolution: str, message: str, refund_amount: int,
uploaded_filename: str, evidence: Optional[int] = None) -> Dict[str, Any]:
"""Resolve dispute"""
data = self._build_query_params(
resolution=resolution, message=message, refund_amount=refund_amount,
uploaded_filename=uploaded_filename, evidence=evidence
)
return self._put(f'dispute/{id}/resolve', data=data)
[docs]
def export(self, per_page: int = 50, page: Optional[int] = None,
from_date: Optional[str] = None, to_date: Optional[str] = None,
transaction: Optional[str] = None, status: Optional[str] = None) -> Dict[str, Any]:
"""Export disputes"""
params = self._build_query_params(
perPage=per_page, page=page, from_date=from_date, to_date=to_date,
transaction=transaction, status=status
)
return self._get('dispute/export', params=params)