The standard types
There are 247 standard types, listed here by group. Each part or kind a
standard type names is a standard type too, so it is read, sent and
stored by its code: IdentityDocumentKind, InterestRateBasis,
ContentRatingScheme, RichTextBlock, RichTextSpan, RichTextMark,
ClothingSizeSystem, ShoeSizeSystem, RouteOfAdministration and
ChatRole. GeoJSON's Feature and FeatureCollection are defined on
the Geospatial page.
In the table, "(enum)" marks a closed list held as a built-in enum, and "Extras in" names the namespace whose operations go beyond the baseline. Every type is built, which the bold marks.
| Group | Types | Extras in |
|---|---|---|
| People and contact (12) | PersonName, GivenName, FamilyName, Username, Email, EmailWithName, PhoneNumber, PhoneExtension, PostalAddress, PostalCode, Uprn, Nationality (enum) |
web |
| Places (10) | Country (enum), CountrySubdivision (enum), Continent (enum), UnLocode, CallingCode, Language (enum), WritingScript (enum), TextDirection (enum), Locale (enum), Zone (enum) |
|
| Geospatial (17) | Point (optional altitude), Latitude, Longitude, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, Geometry, BoundingBox, Circle, Bearing, Crs, EastingNorthing, MapTile, H3Cell, Geohash |
geo (Geospatial) |
| Money, payments, banking (24) | Money, Currency (enum), ExchangeRate, Price, UnitPrice, TaxRate, Discount, BasisPoints, InterestRate, PaymentCardNumber, MaskedCardNumber, CardBrand (enum), CardBin, CardExpiry, PaymentReference, InvoiceNumber, Iban, Bic, UkSortCode, UkAccountNumber, BankAccount, AbaRoutingNumber, Lei, Isin |
money |
Tax and identity numbers (11, and IdentityDocumentKind) |
VatNumber, TaxId, UkUtr, UkCompanyNumber, UkNationalInsuranceNumber, UsSsn, UsEin, PassportNumber, DrivingLicenceNumber, IdentityDocument with IdentityDocumentKind (enum), NhsNumber |
|
Commerce and logistics (20, and ClothingSizeSystem and ShoeSizeSystem) |
Sku, Ean13, UpcA, Isbn, Sscc, Barcode, UnitQuantity, Rating, ClothingSize with ClothingSizeSystem (enum), ShoeSize with ShoeSizeSystem (enum), Dimensions, HsCode, Incoterm (enum), TrackingNumber, Carrier, ContainerNumber, LotNumber, SerialNumber, Vin, VehicleRegistration |
units, media |
| Time and calendar (19) | Instant, CalendarDate, ZonedTime, Duration, Weekday (enum), LocalTime, LocalDateTime, Month (enum), YearMonth, Year, Quarter, IsoWeek, UtcOffset, DateRange, InstantRange, CalendarPeriod, RecurrenceRule, OpeningHours, CalendarEvent |
temporal, range |
| Physical quantities (17) | Length, Area, Volume, Angle, Mass, Pressure, Energy, Power, Temperature, TemperatureDifference, Speed, Frequency, Voltage, Current, Illuminance, SoundLevel, Concentration |
units |
| Maths and data (8) | Percentage, Ratio, Fraction, Range<T>, DataSize, Bitrate, Vector, Embedding |
range, units; AI |
Health (9, and RouteOfAdministration) |
BloodType (enum), Icd10Code, SnomedConcept, Dose, DosageInstruction with RouteOfAdministration (enum), HeartRate, BloodPressure, BloodGlucose, Allergen (enum) |
|
Media and visual (15, and ContentRatingScheme) |
Colour, ImageDimensions, AspectRatio, Rect, Insets, PaperSize (enum), ExifOrientation (enum), AltText, FrameRate, VideoResolution, VideoCodec, AudioCodec, Timecode, SubtitleCue, ContentRating with ContentRatingScheme (enum) |
colour, media |
| Web and network (23) | Url, UrlPath, RelativeUrl, Slug, DomainName, Hostname, WebOrigin, HttpMethod (enum), HttpStatus, HttpHeaderName, FileType, UserAgent, ProblemDetails, JsonPointer, Cookie, UtmParameters, IpAddress, Cidr, NetworkPort, MacAddress, Imei, Emoji, PushToken |
web |
| Software (19) | SemanticVersion, VersionRange, GitRef, PackageUrl, Cve, SpdxLicence, TraceId, SpanId, TraceParent, LogLevel (enum), FilePath, FileName, RegularExpression, ContainerImage, Digest, Uuid, Ulid, IdempotencyKey, Doi |
semver |
| Text formats (4) | Markdown, Html, RichText, LocalisedText |
markup, text |
| Security (20) | Password, PasswordHash, PasswordPolicy, Hash, Hmac, Jwt, JwtClaims, Jwk, PublicKey, PrivateKey, Certificate, TotpSecret, OneTimeCode, ApiKey, SecretText, BearerToken, OAuthScope, OidcClaims, WebAuthnCredential, EncryptedValue |
crypto |
| Travel (6) | IataAirport, IcaoAirport, IataAirline, FlightNumber, CabinClass (enum), BookingReference |
|
| Other with a published standard (10) | UnNumber, Orcid, CefrLevel (enum), Mpan, Mprn, EpcRating (enum), Tenure (enum), LawfulBasis (enum), Jurisdiction, ModelId |
|
AI (3, and ChatRole) |
TokenCount, TokenUsage, ChatMessage with ChatRole (enum) |
AI |
Three rules shape the list:
- Country-specific identifiers are global types, like the rest.
UkSortCode,UsSsnandNhsNumberare named by their country, so they don't clash. - Gender and sex at birth are left out. They are contested, and they are personal data, so your app models them deliberately, and Personal data treats them as sensitive.
- A quantity is stored in its SI base unit. You choose a unit when
you make the value and when you show it:
units.of(5, LengthUnit.mile)holds metres, andtext.format(distance, locale:, unit: LengthUnit.mile)shows miles. So==and ordering just work, and storage is onenumericcolumn.
How standard types are named
A standard type's name says exactly what it is, so it doesn't take a word your app needs for something else. The name is, in order of preference:
- the defining standard's own term, qualified until it is unambiguous:
PostalAddress,RecurrenceRule,ProblemDetails; - otherwise the noun, qualified by what it holds:
DateRange,DataSize,ImageDimensions; - never a bare word an app plausibly uses for its own, different thing,
except a generic container that takes a type, such as
Range<T>, asList<T>is.
So it is CountrySubdivision, not Subdivision, which could be a housing
subdivision, and UnitQuantity, not Quantity, which could be an order
line's count. The same rule gives SecretText, NetworkPort,
WritingScript and WebOrigin, and a time interval is the built-in
InstantRange. A bare word passes when an app using it means the
standard thing: Price, Area, Mass, Currency.
Point and Length are the two exceptions, so that geography and
quantities read naturally (var shelf: Length = 2metre). Built-in names
older than the rule (File, Page, Access) keep their names.
Types that aren't on the list
Some types you might look for are folded into another, so nothing is lost: units into their quantity type, roles into the general type, and duplicates into the one type they duplicate. Formats and application entities are left out:
| What | Became |
|---|---|
Units (Metre, Mile, Kilogram, Pound, Celsius, Litre, KilowattHour, every ...Unit enum and 17 more) |
The quantity type, with a unit at construction and display |
Roles: Height, GeoDistance · FloorArea · WindSpeed · BodyTemperature · BarometricPressure · MediaDuration · DateOfBirth, ExpiryDate · CountryOfOrigin · UsState, Region · Salary |
Length · Area · Speed · Temperature · Pressure · Duration · CalendarDate · Country · CountrySubdivision · Money: a field of the general type |
Duplicates: Timestamp, Uri, Ipv4Address, Ipv6Address, HexColour, HslColour, Sha256, UuidV7, Point3D, CountryAlpha3, LanguageAlpha3, UkPostcode, UsZipCode, UkNumberPlate, EuVatNumber, UkVatNumber, TimeRange, MinorUnits, MediaType, ImageFormat |
The one standard type each duplicates |
Also folded in review: AddressLine, BarcodeSymbology, DoseFrequency, FlightDesignator, GitSha, Gtin, HttpHeaders, Humidity, PackageDimensions, PackageName, PhysicalQuantity, UnitOfMeasure, Ucum, Proportion, QueryString, SubtitleTrack, UkBankAccount, WebhookSignature, WindDirection, CarbonDioxideEquivalent |
PostalAddress, Barcode, DosageInstruction, FlightNumber, GitRef, Ean13, HttpHeaderName, Percentage, Dimensions, PackageUrl, UnitQuantity (three), Ratio, Url, SubtitleCue, BankAccount, Hmac, Bearing, Mass |
Formats: Hex, Base64, Wkt, Json, CsvDialect, MessageFormat, VCard, OtpAuthUri, CssLength |
Out: encoding. and json. operations |
Application entities: Recipe, HotelStay, OrderStatus, PaymentStatus, Consent, SensorReading, StoredFile, UserId, Allergy and 31 more |
Out: an application's own records |
Gender, SexAtBirth, Cvv |
Out: sensitive (a CVV is never stored) |
HashAlgorithm, KeyAlgorithm; SessionId; AcceptLanguage |
Out: no algorithm choices; the runtime's (Identity); a call, locale.from_accept_language |
| Niche, silly, or a maybe with no published standard | Out: 729 entries, a package's to define |
Markdown for agents: /docs/the-standard-types.md.Built from Jadpo main at a707efb.