goharbor/harbor · error · github.com/goharbor/harbor/src/lib/errors.Error
BAD_REQUEST
BAD_REQUEST
Error message
empty notification target with policy %s
What it means
Error "empty notification target with policy %s" thrown in goharbor/harbor.
Source
Thrown at src/server/v2.0/handler/webhook.go:407
notificationTypes.NotifyType = append(notificationTypes.NotifyType, models.NotifyType(notifyType))
}
for _, eventType := range notification.GetSupportedEventTypes() {
notificationTypes.EventType = append(notificationTypes.EventType, models.EventType(eventType))
}
// currently only http type support payload format
httpPayloadFormats := &models.PayloadFormat{NotifyType: models.NotifyType("http")}
for _, formatType := range notification.GetSupportedPayloadFormats() {
httpPayloadFormats.Formats = append(httpPayloadFormats.Formats, models.PayloadFormatType(formatType))
}
notificationTypes.PayloadFormats = []*models.PayloadFormat{httpPayloadFormats}
return webhook.NewGetSupportedEventTypesOK().WithPayload(notificationTypes)
}
func (n *webhookAPI) validateTargets(policy *policy_model.Policy) (bool, error) {
if len(policy.Targets) == 0 {
return false, errors.New(nil).WithMessagef("empty notification target with policy %s", policy.Name).WithCode(errors.BadRequestCode)
}
for i, target := range policy.Targets {
url, err := utils.ParseEndpoint(target.Address)
if err != nil {
return false, errors.New(err).WithCode(errors.BadRequestCode)
}
// Prevent SSRF security issue #3755
target.Address = url.Scheme + "://" + url.Host + url.Path
if !isNotifyTypeSupported(target.Type) {
return false, errors.New(nil).WithMessagef("unsupported target type %s with policy %s", target.Type, policy.Name).WithCode(errors.BadRequestCode)
}
// don't allow set the payload format for slack type
// slack should be migrated as a kind of payload in the future
if len(target.PayloadFormat) > 0 && target.Type == "slack" {
return false, errors.New(nil).WithMessage("set payload format is not allowed for slack").WithCode(errors.BadRequestCode)
}
View on GitHub (pinned to 7b2fd08cc5)
When it happens
Trigger: Thrown at src/server/v2.0/handler/webhook.go:407 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of goharbor/harbor@7b2fd08cc5 (2026-08-16).
Data as JSON: /api/errors/d2eacc3a0c267ac5.
Report an issue: GitHub.