# generated by datamodel-codegen:
#   filename:  core/async_response_data.json
#   timestamp: 2026-02-23T01:56:40+00:00

from __future__ import annotations

from typing import Annotated

from pydantic import Field, RootModel

from ..media_buy import (
    create_media_buy_async_response_input_required,
    create_media_buy_async_response_submitted,
    create_media_buy_async_response_working,
    create_media_buy_response,
    get_products_async_response_input_required,
    get_products_async_response_submitted,
    get_products_async_response_working,
    get_products_response,
    sync_catalogs_async_response_input_required,
    sync_catalogs_async_response_submitted,
    sync_catalogs_async_response_working,
    sync_catalogs_response,
    sync_creatives_async_response_input_required,
    sync_creatives_async_response_submitted,
    sync_creatives_async_response_working,
    sync_creatives_response,
    update_media_buy_async_response_input_required,
    update_media_buy_async_response_submitted,
    update_media_buy_async_response_working,
    update_media_buy_response,
)


class AdcpAsyncResponseData(
    RootModel[
        get_products_response.GetProductsResponse
        | get_products_async_response_working.GetProductsWorking
        | get_products_async_response_input_required.GetProductsInputRequired
        | get_products_async_response_submitted.GetProductsSubmitted
        | create_media_buy_response.CreateMediaBuyResponse
        | create_media_buy_async_response_working.CreateMediaBuyWorking
        | create_media_buy_async_response_input_required.CreateMediaBuyInputRequired
        | create_media_buy_async_response_submitted.CreateMediaBuySubmitted
        | update_media_buy_response.UpdateMediaBuyResponse
        | update_media_buy_async_response_working.UpdateMediaBuyWorking
        | update_media_buy_async_response_input_required.UpdateMediaBuyInputRequired
        | update_media_buy_async_response_submitted.UpdateMediaBuySubmitted
        | sync_creatives_response.SyncCreativesResponse
        | sync_creatives_async_response_working.SyncCreativesWorking
        | sync_creatives_async_response_input_required.SyncCreativesInputRequired
        | sync_creatives_async_response_submitted.SyncCreativesSubmitted
        | sync_catalogs_response.SyncCatalogsResponse
        | sync_catalogs_async_response_working.SyncCatalogsWorking
        | sync_catalogs_async_response_input_required.SyncCatalogsInputRequired
        | sync_catalogs_async_response_submitted.SyncCatalogsSubmitted
    ]
):
    root: Annotated[
        get_products_response.GetProductsResponse
        | get_products_async_response_working.GetProductsWorking
        | get_products_async_response_input_required.GetProductsInputRequired
        | get_products_async_response_submitted.GetProductsSubmitted
        | create_media_buy_response.CreateMediaBuyResponse
        | create_media_buy_async_response_working.CreateMediaBuyWorking
        | create_media_buy_async_response_input_required.CreateMediaBuyInputRequired
        | create_media_buy_async_response_submitted.CreateMediaBuySubmitted
        | update_media_buy_response.UpdateMediaBuyResponse
        | update_media_buy_async_response_working.UpdateMediaBuyWorking
        | update_media_buy_async_response_input_required.UpdateMediaBuyInputRequired
        | update_media_buy_async_response_submitted.UpdateMediaBuySubmitted
        | sync_creatives_response.SyncCreativesResponse
        | sync_creatives_async_response_working.SyncCreativesWorking
        | sync_creatives_async_response_input_required.SyncCreativesInputRequired
        | sync_creatives_async_response_submitted.SyncCreativesSubmitted
        | sync_catalogs_response.SyncCatalogsResponse
        | sync_catalogs_async_response_working.SyncCatalogsWorking
        | sync_catalogs_async_response_input_required.SyncCatalogsInputRequired
        | sync_catalogs_async_response_submitted.SyncCatalogsSubmitted,
        Field(
            description='Union of all possible data payloads for async task webhook responses. For completed/failed statuses, use the main task response schema. For working/input-required/submitted, use the status-specific schemas.',
            title='AdCP Async Response Data',
        ),
    ]
