Source code for aioyookassa.core.api.webhooks
from typing import Optional, Union
from aioyookassa.core.api.base import BaseAPI
from aioyookassa.core.methods.webhooks import CreateWebhook, DeleteWebhook, GetWebhooks
from aioyookassa.types.params import CreateWebhookParams
from aioyookassa.types.webhooks import Webhook, WebhooksList
[docs]
class WebhooksAPI(BaseAPI[CreateWebhookParams, Webhook]):
"""
YooKassa webhooks API client.
Provides methods for creating, retrieving, and deleting webhooks.
Webhooks API requires OAuth token for authentication.
"""
[docs]
async def create_webhook(
self,
params: CreateWebhookParams,
oauth_token: str,
) -> Webhook:
"""
Create a new webhook in YooKassa.
:param params: Webhook creation parameters (CreateWebhookParams).
:type params: CreateWebhookParams
:param oauth_token: OAuth token for authentication.
:type oauth_token: str
:returns: Webhook object.
:rtype: Webhook
:seealso: https://yookassa.ru/developers/api#create_webhook
"""
from aioyookassa.core.utils import normalize_params
params_dict = normalize_params(params, CreateWebhookParams)
json_data = CreateWebhook.build_params(**params_dict)
headers = {
"Authorization": f"Bearer {oauth_token}",
}
from aioyookassa.core.utils import create_idempotence_headers
headers.update(create_idempotence_headers())
result = await self._client._send_request(
CreateWebhook, json=json_data, headers=headers
)
return Webhook(**result)
[docs]
async def get_webhooks(
self,
oauth_token: str,
) -> WebhooksList:
"""
Retrieve a list of webhooks for the OAuth token.
:param oauth_token: OAuth token for authentication.
:type oauth_token: str
:returns: WebhooksList object.
:rtype: WebhooksList
:seealso: https://yookassa.ru/developers/api#list_webhooks
"""
headers = {
"Authorization": f"Bearer {oauth_token}",
}
result = await self._client._send_request(GetWebhooks, headers=headers)
return WebhooksList(**result)
[docs]
async def delete_webhook(
self,
webhook_id: str,
oauth_token: str,
) -> None:
"""
Delete a webhook by its ID.
:param webhook_id: Webhook identifier.
:type webhook_id: str
:param oauth_token: OAuth token for authentication.
:type oauth_token: str
:seealso: https://yookassa.ru/developers/api#delete_webhook
"""
method = DeleteWebhook.build(webhook_id=webhook_id)
headers = {
"Authorization": f"Bearer {oauth_token}",
}
# DELETE returns empty body (204 No Content), _send_request handles it
await self._client._send_request(method, headers=headers)