kubernetes: Remove OpenAPI formats that don't make much sense.
We document (as of https://github.com/kubernetes/kubernetes/pull/85381) that we support the following formats:
// format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
//
// - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
// - uri: an URI as parsed by Golang net/url.ParseRequestURI
// - email: an email address as parsed by Golang net/mail.ParseAddress
// - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
// - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
// - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
// - cidr: a CIDR as parsed by Golang net.ParseCIDR
// - mac: a MAC address as parsed by Golang net.ParseMAC
// - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
// - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
// - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
// - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
// - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
// - isbn10: an ISBN10 number string like "0321751043"
// - isbn13: an ISBN13 number string like "978-0321751041"
// - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$ with any non digit characters mixed in
This list is somewhat random and offers some types that I’d strongly recommend folks not use. I’d like to see the following changes, in order of how important it is and how difficult:
- Remove all references to go (“as parsed by…”), this is not helpful to anyone using go, or to anyone who just wants to know what is valid. (only documentation change, hopefully)
- Remove creditcard, password, SSN, maybe email as being unsafe (we have no way of marking fields as PII and omitting them from logs, for example)
- Remove special purpose types, since obviously we can’t include all possible special purpose types and we don’t let users roll their own, it is very strange to have ISBN in this list.
- personally I think bsonobjectid is also very questionable, both because it’s specific to a single database system and because it might be better to represent that as a []byte of length 12 in our API. I’m not sure how common the UUID formats are, they might be universal enough to make sense.
- The network types (hostname, uri, ipv4, and ipv6) are universal enough, but is this how we represent them in the rest of our API?
I’m not sure how to fix this without breaking existing users, I’d at least like our documentation to sternly warn against using these features.
/kind bug /sig api-machinery
About this issue
- Original URL
- State: open
- Created 3 years ago
- Reactions: 1
- Comments: 16 (12 by maintainers)
it’s valid, unplanned, it’s good but it’s not prioritized.