Skip to main content



String is byte sequence primitive type represent by Go string or []byte.

Supported formats


duration is a Go time.Duration format, but JSON Schema defines it as RFC 3339 duration.

byte[]byteBase64-encoded string as defined in RFC4648
date-timetime.TimeDate and time notation as defined by RFC 3339, section 5.6, for example, 2022-02-22T11:22:33Z
datetime.TimeDate only notation as defined by RFC 3339, section 5.6, for example, 2022-02-22
timetime.TimeTime only notation as defined by RFC 3339, section 5.6, for example, 11:22:33
durationtime.DurationGo duration format
ipnetip.AddrAny IP (IPv4, IPv6)
ipv4netip.AddrIPv4, for example,
ipv6netip.AddrIPv6, for example, 2001:db8:85a3::8a2e:370:7334
uriurl.URLURL as defined by RFC 3986
emailstringEmail, for example,
binarystringBinary string
hostnamestringHostname as defined by RFC 1034, section 3.1

Non-standard formats

unix/unix-secondstime.TimeTime.Unix(), encoded as string
unix-nanotime.TimeTime.UnixNano(), encoded as string
unix-microtime.TimeTime.UnixMicro(), encoded as string
unix-millitime.TimeTime.UnixMilli(), encoded as string
int32int3232-bit signed integer
int64int6464-bit signed integer

See issue #307 for more information about these formats.



Note that length validation uses utf8.RuneCountInString to count string length.

minLengthMinimum length in Unicode code points
maxLengthMaximum length in Unicode code points
patternGo regexp pattern


OpenAPI/JSON schema has two numeric types, number and integer, where number includes both integer and floating-point numbers.

typeformatGo typeDescription
numberfloat64Any numbers
numberfloatfloat32Floating-point numbers
numberdoublefloat64Floating-point numbers with double precision
integerintInteger numbers
integerint32int32Signed 32-bit integers
integerint64int64Signed 64-bit integers