"""
Cardinity Get Payment Model
This module contains the GetPayment model for retrieving payment information.
"""
from typing import Any, Dict, Optional
from .base import ReadOnlyModel
[docs]
class GetPayment(ReadOnlyModel):
"""Model for retrieving payment information.
This model supports two retrieval modes:
1. Single payment retrieval by payment ID
2. Payment listing with optional limit parameter
"""
[docs]
def __init__(self, payment_id: Optional[str] = None, limit: Optional[int] = None):
"""Initialize GetPayment model.
Args:
payment_id: Specific payment ID to retrieve (optional)
limit: Limit for payment listing (optional, used when payment_id is None)
"""
if payment_id is not None:
# Single payment retrieval mode
self._payment_id: Optional[str] = str(payment_id)
self._limit: Optional[int] = None
self._is_listing: bool = False
else:
# Payment listing mode
self._payment_id = None
self._limit = limit
self._is_listing = True
super().__init__()
[docs]
def get_constraints(self) -> Dict[str, Any]:
"""Get validation constraints for payment retrieval.
For retrieval operations, minimal validation is needed.
Returns:
Dict[str, Any]: Empty constraints for read-only operations
"""
return {}
[docs]
def get_endpoint(self) -> str:
"""Get the API endpoint for payment retrieval.
Returns:
str: The appropriate endpoint based on retrieval mode
"""
if self._is_listing:
if self._limit is not None:
return f"/payments?limit={self._limit}"
else:
return "/payments"
else:
return f"/payments/{self._payment_id}"
[docs]
def get_method(self) -> str:
"""Get the HTTP method for payment retrieval.
Returns:
str: Always returns GET for payment retrieval
"""
return "GET"
[docs]
def is_listing(self) -> bool:
"""Check if this is a payment listing request.
Returns:
bool: True if listing payments, False if retrieving single payment
"""
return self._is_listing
[docs]
def get_payment_id(self) -> Optional[str]:
"""Get the payment ID for single payment retrieval.
Returns:
Optional[str]: Payment ID or None if listing mode
"""
return self._payment_id
[docs]
def get_limit(self) -> Optional[int]:
"""Get the limit for payment listing.
Returns:
Optional[int]: Limit value or None if single retrieval mode
"""
return self._limit