"""Requests to ows-payee.""" from src.connectors.requests import request from src.models.ows_payee import ( KycNotificationCreateResponseModel, PayeeDataloaderResponseModel, PayeeItem, ) from src.models.payee import Payee, PayeeEntityType SERVICE = 'ows-payee' def create_kyc_notification( payee: Payee, file_upload_link: str, requirement_id: str | None = None, requirement_type_id: int | None = None, sub_requirement_id: str | None = None, possible_sub_requirement_types: str | None = None, sub_requirement_status_id: int | None = None, entity_reference_id: str | None = None, entity_reference_type_id: int | None = None, ) -> KycNotificationCreateResponseModel: """Create a new KYC notification record.""" path = f'/{payee.url_basename}/{payee.payee_id}/kyc-notification' body = { 'file_upload_link': file_upload_link, 'requirement_id': requirement_id, 'requirement_type_id': requirement_type_id, 'sub_requirement_id': sub_requirement_id, 'possible_sub_requirement_types': possible_sub_requirement_types, 'sub_requirement_status_id': sub_requirement_status_id, 'entity_reference_id': entity_reference_id, 'entity_reference_type_id': entity_reference_type_id, } body = {k: v for k, v in body.items() if v is not None} response = request(SERVICE, 'POST', path, body) return KycNotificationCreateResponseModel.model_validate(response.json()) def delete_kyc_notifications(payee: Payee) -> None: """Delete all payee's KYC notification records.""" request( SERVICE, 'DELETE', f'/{payee.url_basename}/{payee.payee_id}/kyc-notification' ) def get_payee(payoneer_client_reference_id: str) -> PayeeItem: """Get payee by Payoneer payee ID.""" path = '/payee/dataloader' body = { 'payoneer_client_reference_ids': [payoneer_client_reference_id], } response = request(SERVICE, 'POST', path, body) validated_response = PayeeDataloaderResponseModel.model_validate(response.json()) return validated_response.payees[0].data