# Provider The `Provider` API defines how events are encoded and the webhook address where they are dispatched. ## Specification Spec: ```go type ProviderSpec struct { // Type of provider // +kubebuilder:validation:Enum=slack;discord;msteams;rocket;generic // +required Type string `json:"type"` // Alert channel for this provider // +optional Channel string `json:"channel,omitempty"` // Bot username for this provider // +optional Username string `json:"username,omitempty"` // HTTP(S) webhook address of this provider // +optional Address string `json:"address,omitempty"` // Secret reference containing the provider webhook URL // +optional SecretRef *corev1.LocalObjectReference `json:"secretRef,omitempty"` } ``` Notification providers: * Slack * Discord * Microsoft Teams * Rocket * Generic webhook Status: ```go // ProviderStatus defines the observed state of Provider type ProviderStatus struct { // +optional Conditions []Condition `json:"conditions,omitempty"` } ``` Status condition types: ```go const ( // ReadyCondition represents the fact that a given object has passed // validation and was acknowledge by the controller. ReadyCondition string = "Ready" ) ``` ## Example ```yaml apiVersion: notification.fluxcd.io/v1alpha1 kind: Provider metadata: name: slack namespace: gitops-system spec: type: slack channel: general # webhook address (ignored if secretRef is specified) address: https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK # secret containing the webhook address (optional) secretRef: name: webhook-url ``` Webhook URL secret: ```sh kubectl -n gitops-system create secret generic webhook-url \ --from-literal=address=https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK ``` Note that the secret must contain an `address` field. The provider type can be: `slack`, `msteams`, `rocket`, `discord` or `generic`. When type `generic` is specified, the notification controller will post the incoming [event](event.md) in JSON format to the webhook address.