Golang support for string formats defined by JSON Schema and OpenAPI.
API is stable.
go get github.com/go-openapi/strfmtThis package exposes a registry of data types to support string formats in the go-openapi toolkit.
strfmt represents a well known string format such as hostname or email.
This package provides a few extra formats such as credit card (US), color, etc.
Format types can serialize and deserialize JSON or from a SQL database.
BSON is also supported (MongoDB).
go-openapi/strfmt follows the swagger 2.0 specification with the following formats
defined here.
It also provides convenient extensions to go-openapi users.
- JSON-schema draft 4 formats
- date-time
- hostname
- ipv4
- ipv6
- uri
- swagger 2.0 format extensions
- binary
- byte (e.g. base64 encoded string)
- date (e.g. "1970-01-01")
- password
- go-openapi custom format extensions
- bsonobjectid (BSON objectID)
- creditcard
- duration (e.g. "3 weeks", "1ms")
- hexcolor (e.g. "#FFFFFF")
- isbn, isbn10, isbn13
- mac (e.g "01:02:03:04:05:06")
- rgbcolor (e.g. "rgb(100,100,100)")
- ssn
- uuid, uuid3, uuid4, uuid5, uuid7
- cidr (e.g. "192.0.2.1/24", "2001:db8:a0b:12f0::1/32")
- ulid (e.g. "00000PP9HGSBSSDZ1JTEXBJ0PW", spec)
NOTE: as the name stands for, this package is intended to support string formatting only. It does not provide validation for numerical values with swagger format extension for JSON types "number" or "integer" (e.g. float, double, int32...).
All types defined here are stringers and may be converted to strings with .String().
Note that most types defined by this package may be converted directly to string like string(Email{}).
Date and DateTime may be converted directly to time.Time like time.Time(Time{}).
Similarly, you can convert Duration to time.Duration as in time.Duration(Duration{})
The conv subpackage provides helpers to convert the types to and from pointers, just like go-openapi/swag does
with primitive types.
Types defined in strfmt expose marshaling and validation capabilities.
List of defined types:
- Base64
- CreditCard
- Date
- DateTime
- Duration
- HexColor
- Hostname
- IPv4
- IPv6
- CIDR
- ISBN
- ISBN10
- ISBN13
- MAC
- ObjectId
- Password
- RGBColor
- SSN
- URI
- UUID
- UUID3
- UUID4
- UUID5
- UUID7
- ULID
See https://github.com/go-openapi/strfmt/releases
https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md
This library ships under the SPDX-License-Identifier: Apache-2.0.
Maintainers can cut a new release by either:
- running this workflow
- or pushing a semver tag
- signed tags are preferred
- The tag message is prepended to release notes