ndovuscim

SCIM schema explorerUser - corrected (default)Runs in your browser - nothing leaves this page.
{
  "id": "urn:ietf:params:scim:schemas:core:2.0:User",
  "name": "User",
  "description": "User Account",
  "source": "RFC 7643 Section 8.7 with the verified errata applied (2025-10-28 batch)"
}
attributetypemultiValuedrequiredmutabilityreturneduniquenesscaseExact
userNamestring false true false readWrite default server
name
6 sub-attributes
sub-attributetyperequiredmutabilityreturnedcaseExact
formattedstring false readWrite default false
familyNamestring false readWrite default false
givenNamestring false readWrite default false
middleNamestring false readWrite default false
honorificPrefixstring false readWrite default false
honorificSuffixstring false readWrite default false
complex false false false defaultreadWrite default none default
displayNamestring false false false readWrite default none
nickNamestring false false false readWrite default none
profileUrlreference false false false readWrite default none
titlestring false false false readWrite default none
userTypestring false false false readWrite default none
preferredLanguagestring false false false readWrite default none
localestring false false false readWrite default none
timezonestring false false false readWrite default none
activeboolean false false false defaultreadWrite default none default
passwordstring false false false writeOnly never none
emails
4 sub-attributes
sub-attributetyperequiredmutabilityreturnedcaseExact
valuestring false readWrite default false
displaystring false readWrite default false
typestring (canonical: work, home, other) false readWrite default false
primaryboolean false readWrite default false default
complex true false false defaultreadWrite default none default
phoneNumbers
4 sub-attributes
sub-attributetyperequiredmutabilityreturnedcaseExact
valuestring false readWrite default false
displaystring false readWrite default false
typestring (canonical: work, home, mobile, fax, pager, other) false readWrite default false
primaryboolean false readWrite default false default
complex true false false defaultreadWrite default none default
ims
4 sub-attributes
sub-attributetyperequiredmutabilityreturnedcaseExact
valuestring false readWrite default false
displaystring false readWrite default false
typestring (canonical: aim, gtalk, icq, xmpp, msn, skype, qq, yahoo) false readWrite default false
primaryboolean false readWrite default false default
complex true false false defaultreadWrite default none default
photos
4 sub-attributes
sub-attributetyperequiredmutabilityreturnedcaseExact
valuereference false readWrite default false
displaystring false readWrite default false
typestring (canonical: photo, thumbnail) false readWrite default false
primaryboolean false readWrite default false default
complex true false false defaultreadWrite default none default
addresses
7 sub-attributes
sub-attributetyperequiredmutabilityreturnedcaseExact
formattedstring false readWrite default false
streetAddressstring false readWrite default false
localitystring false readWrite default false
regionstring false readWrite default false
postalCodestring false readWrite default false
countrystring false readWrite default false
typestring (canonical: work, home, other) false readWrite default false
complex true false false defaultreadWrite default none default
groups
4 sub-attributes
sub-attributetyperequiredmutabilityreturnedcaseExact
valuestring false readOnly default false
$refreference false readOnly default false
displaystring false readOnly default false
typestring (canonical: direct, indirect) false readOnly default false
complex true false false defaultreadOnly default none default
entitlements
4 sub-attributes
sub-attributetyperequiredmutabilityreturnedcaseExact
valuestring false readWrite default false
displaystring false readWrite default false
typestring false readWrite default false
primaryboolean false readWrite default false default
complex true false false defaultreadWrite default none default
roles
4 sub-attributes
sub-attributetyperequiredmutabilityreturnedcaseExact
valuestring false readWrite default false
displaystring false readWrite default false
typestring (canonical: ) false readWrite default false
primaryboolean false readWrite default false default
complex true false false defaultreadWrite default none default
x509Certificates
4 sub-attributes
sub-attributetyperequiredmutabilityreturnedcaseExact
valuebinary false readWrite default false
displaystring false readWrite default false
typestring (canonical: ) false readWrite default false
primaryboolean false readWrite default false default
complex true false false readWrite default none default

The dashed "default" chips mark characteristics this schema JSON omits; Section 2.2 assigns their defaults (required false, caseExact false, mutability readWrite, returned default, uniqueness none, type string), and Section 2.4 assigns the default sub-attribute set for multi-valued attributes (type, primary, display, value, $ref). The corrected variant is the default view: ten verified errata alter the published Section 8.7 JSON, and the 2025-10-28 verified batch is the state future revisions build on.

The sample resources built from these schemas (RFC 7643 Sections 8.2-8.4) are the targets the PATCH builder applies PATCH bodies against, op by op.

Verified RFC 7643 errata (16)

RFC 7643 · SECTION 8.7 SCHEMAS

The schema explorer

Read the RFC 7643 Section 8.7 schemas attribute by attribute, with the Section 2.2 characteristic defaults and the as-published versus corrected variants side by side.

Runs in your browser - nothing leaves this page.RFC 7643 Section 8.7, corrected default

The playground renders each Section 8.7 schema attribute by attribute, annotates every characteristic a schema JSON omits with its Section 2.2 default, and lets the as-published text be compared against the corrected variant that applies the ten verified errata. This page is a complement to conformance tools, not another validator: conformance suites probe a live provider, while this playground reads the schema contract itself, which is what attribute-level integration decisions are made from.

The history

Why a corrected default needs a toggle

The schema JSON in RFC 7643 Section 8.7 shipped with defects. Sixteen errata are verified against the RFC as of the 2025-10-28 verification batch, and ten of them alter the Section 8.7 JSON itself: the Group schema declared displayName REQUIRED in prose while carrying"required": false (erratum 5368); complex attributes carried a uniquenesscharacteristic the model does not define for complex types (6004); the reference types ofgroups.$ref listed User where only Group applies (8471). A reader transcribing the published JSON inherits each defect; a reader trusting the prose inherits the contradictions.

The playground defaults to the corrected variant and keeps the as-published text one toggle away, because both readings matter: the corrected text is what implementations should converge on, and the published text is what older libraries copied. The errata panel lists all sixteen with their own dates, and the JSON-altering entries that touch the currently viewed schema highlight the rows they select.

The discovery path

Read the schema before writing the client

The three discovery endpoints answer, in order: what features, which resources, and which attributes. The IANA registry at iana.org/assignments/scim carries the schema URIs the newer RFCs extend.

Discovery: client reads ServiceProviderConfig for features, ResourceTypes for resources and schema URIs, Schemas for attributesclient/ServiceProviderConfigpatch? filter? sort? ETag? bulk caps/ResourceTypesUser, Group, endpoints, schema URIs/Schemasattributes, types, characteristicsfeatures gate the client's assumptionsendpoints and extensions, before hard-codingthe contract each attribute is written againstResourceType entries name the schema and extension URIs; /Schemas resolves them attribute by attribute (RFC 7644 Section 4)
The mechanics

Characteristics, defaults, and discovery

Characteristics (Section 2.2). Every attribute carries type, multiValued, required, caseExact, mutability, returned, and uniqueness. "If not otherwise stated in Section 7", the defaults apply: not required, not case-exact, readWrite, returned by default, no uniqueness, type string. The dashed "default" chips in the playground mark exactly these inherited values, because an omitted characteristic is a claim too, and integrations are won or lost on it: caseExact decides whether manager.value matches byte-for-byte, and mutability decides which PATCH operations a provider must reject.

Multi-valued defaults (Section 2.4). A multi-valued attribute's unspecified sub-attribute set is the standard five: type, primary, display,value, and $ref. The Section 8.7 schemas declare theirs explicitly; custom extensions inherit the five.

Discovery (RFC 7644 Section 4). /ServiceProviderConfig states what the provider supports, including filter.maxResults and whether PATCH exists at all./ResourceTypes names each resource, its endpoint, and its schema plus extension URIs./Schemas resolves those URIs into attribute definitions. Providers SHOULD support filtering on the read-only endpoints. The published Section 8.7 JSON is the same shape/Schemas returns, which is why its errata matter twice over: once for the book, once for the wire.

The registry. SCIM's schema URIs are an IANA registry (iana.org/assignments/scim, established by RFC 7643 Section 10). RFCs 9865, 9944, and 9967 extend it; a client that discovers URIs instead of hard-coding them inherits those additions without a rewrite.

Attacks and defenses

What each defense is for

FailureDefenseWhere it is defined
Attributes hard-coded from one provider's quirks failing on the nextDiscover /ResourceTypes and /Schemas; write against the returned schema, not a memory of itRFC 7644 Section 4
Case-sensitive comparisons against case-insensitive attributes (or the reverse)Read caseExact per attribute; Section 3.10 makes path facets case-insensitive even when values are notRFC 7643 Section 2.2, RFC 7644 Section 3.10
Writes to attributes the schema marks readOnly or immutable being rejected in productionCheck mutability before the write; the PATCH builder applies the same matrixRFC 7643 Section 2.2 (mutability), RFC 7644 Section 3.5
Transcribing the published Section 8.7 JSON with its recorded defectsUse the corrected variant as the default reading; the as-published toggle documents exactly what changed and under which erratumRFC 7643 errata (verified 2025-10-28 batch)
Custom extension URIs colliding or drifting from the registryRegister and resolve URIs through the IANA SCIM registry; enterprise and vendor extensions live beside the core onesRFC 7643 Section 10, iana.org/assignments/scim
References
  • RFC 7643: SCIM: Core Schemathe normative core schema (IETF, September 2015); Section 2.2 characteristics and defaults, Section 2.4 multi-valued defaults, Section 8.7 the schema JSON, Section 10 the IANA registry
  • RFC 7644: SCIM: ProtocolSection 4 defines the discovery endpoints and their filtering; Section 3.10 the case-insensitive attribute notation
  • RFC Editor errata for RFC 7643sixteen verified errata as of the 2025-10-28 batch, ten altering the Section 8.7 JSON; the playground's per-erratum dates and deltas come from these pages, retrieved 2026-11-01
  • IANA: SCIM Schema URIs registrythe registry spine the newer RFCs (9865, 9944, 9967) extend