from typing import Union | |
from pydantic import Field | |
from typing_extensions import Annotated | |
from wandb._pydantic import GQLBase | |
from wandb.automations._generated import ( | |
GenericWebhookIntegrationFields, | |
SlackIntegrationFields, | |
) | |
class SlackIntegration(SlackIntegrationFields): | |
team_name: str | |
"""The name of the Slack workspace (not the W&B team) that this integration is associated with.""" | |
channel_name: str | |
"""The name of the Slack channel that this integration will post messages to.""" | |
class WebhookIntegration(GenericWebhookIntegrationFields): | |
name: str | |
"""The name of this webhook integration.""" | |
url_endpoint: str | |
"""The URL that this webhook will POST events to.""" | |
Integration = Annotated[ | |
Union[SlackIntegration, WebhookIntegration], | |
Field(discriminator="typename__"), | |
] | |
# For parsing integration instances from paginated responses | |
class _IntegrationEdge(GQLBase): | |
cursor: str | |
node: Integration | |
__all__ = [ | |
"Integration", | |
"SlackIntegration", | |
"WebhookIntegration", | |
] | |