goharbor/harbor · error · *errors.Error
BAD_REQUEST
BAD_REQUEST
Error message
invalid input: %s
What it means
Error "invalid input: %s" thrown in goharbor/harbor.
Source
Thrown at src/server/v2.0/handler/artifact.go:214
dstRepo := fmt.Sprintf("%s/%s", params.ProjectName, params.RepositoryName)
_, _, err = a.repoCtl.Ensure(ctx, dstRepo)
if err != nil {
return a.SendError(ctx, err)
}
_, err = a.artCtl.Copy(ctx, srcRepo, ref, dstRepo)
if err != nil {
return a.SendError(ctx, err)
}
location := strings.TrimSuffix(params.HTTPRequest.URL.Path, "/") + "/" + ref
return operation.NewCopyArtifactCreated().WithLocation(location)
}
// parse "repository:tag" or "repository@digest" into repository and reference parts
func parse(s string) (string, string, error) {
matches := reference.ReferenceRegexp.FindStringSubmatch(s)
if matches == nil {
return "", "", errors.New(nil).WithCode(errors.BadRequestCode).
WithMessagef("invalid input: %s", s)
}
repository := matches[1]
reference := matches[2]
if matches[3] != "" {
_, err := digest.Parse(matches[3])
if err != nil {
return "", "", errors.New(nil).WithCode(errors.BadRequestCode).
WithMessagef("invalid input: %s", s)
}
reference = matches[3]
}
return repository, reference, nil
}
func (a *artifactAPI) CreateTag(ctx context.Context, params operation.CreateTagParams) middleware.Responder {
if err := a.RequireProjectAccess(ctx, params.ProjectName, rbac.ActionCreate, rbac.ResourceTag); err != nil {
return a.SendError(ctx, err)View on GitHub (pinned to 7b2fd08cc5)
When it happens
Trigger: Thrown at src/server/v2.0/handler/artifact.go:214 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/e34e4953c766efd2.
Report an issue: GitHub.