grpc-ecosystem/grpc-gateway · error
the provided default value %q is not a valid RFC3339 date-ti
Error message
the provided default value %q is not a valid RFC3339 date-time string
What it means
Validation error from validateDefaultValueTypeAndFormat: for a header parameter with format date-time, the provided default value string does not parse as a valid RFC3339 date-time. The offending input is the default_value option on the string/date-time header parameter.
Source
Thrown at protoc-gen-openapiv2/internal/genopenapi/template.go:2764
return fmt.Errorf("the provided format %q is not a valid extension of the type %q", format, headerType)
}
case "boolean":
return nil
}
return fmt.Errorf("the provided header type %q is not supported", headerType)
}
func validateDefaultValueTypeAndFormat(headerType string, defaultValue string, format string) error {
switch headerType {
case "string":
if !isQuotedString(defaultValue) {
return fmt.Errorf("the provided default value %q does not match provider type %q, or is not properly quoted with escaped quotations", defaultValue, headerType)
}
switch format {
case "date-time":
unquoteTime := strings.Trim(defaultValue, `"`)
if _, err := time.Parse(time.RFC3339, unquoteTime); err != nil {
return fmt.Errorf("the provided default value %q is not a valid RFC3339 date-time string", defaultValue)
}
case "date":
const layoutRFC3339Date = "2006-01-02"
unquoteDate := strings.Trim(defaultValue, `"`)
if _, err := time.Parse(layoutRFC3339Date, unquoteDate); err != nil {
return fmt.Errorf("the provided default value %q is not a valid RFC3339 date-time string", defaultValue)
}
}
case "number":
if err := isJSONNumber(defaultValue, headerType); err != nil {
return err
}
case "integer":
switch format {
case "int32":
if _, err := strconv.ParseInt(defaultValue, 0, 32); err != nil {
return fmt.Errorf("the provided default value %q does not match provided format %q", defaultValue, format)
}View on GitHub (pinned to a58a4436a3)
Solutions
- Supply the default as a full RFC3339 timestamp, e.g. "1970-01-01T00:00:00Z".
- Fix missing timezone offset or 'T' separator in the value.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at protoc-gen-openapiv2/internal/genopenapi/template.go:2764 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of grpc-ecosystem/grpc-gateway@a58a4436a3 (2026-09-02).
Data as JSON: /api/errors/7329592acd5b9e62.
Report an issue: GitHub.