Everything in SCIM is an attribute on a resource, and Section 2 defines what an attribute is allowed to be. Attribute names follow one grammar, ATTRNAME = ALPHA *(nameChar) withnameChar = "$" / "-" / "_" / DIGIT / ALPHA, and names are case-insensitive (Section 2.1). Seven characteristics annotate each attribute (Section 2.2); each carries a default, which matters twice: schema JSON may omit a characteristic, and the protocol's processing rules read the defaults in.
| Characteristic | Default | What it controls |
|---|---|---|
required | false | whether the attribute MUST be present in a complete resource representation (Section 2.2) |
canonicalValues | none | a recommended restricted set of values; servers MAY support others unless the spec says otherwise (Section 2.2) |
caseExact | false | whether string matching is case-sensitive; drives filter evaluation on the wire (Section 2.2) |
mutability | readWrite | readWrite, immutable, readOnly, or writeOnly; drives the protocol-side processing rules in RFC 7644 Section 3 (Section 2.2) |
returned | default | always, never, default, or request; whether the attribute comes back in a representation (Section 2.2) |
uniqueness | none | none, server, or global; the scope across which a value must be unique (Section 2.2) |
referenceTypes | none | the resource types a reference attribute may point at (Section 2.2) |
Source: RFC 7643 Section 2.2, with the defaults as recorded in this site's schema explorer dataset (retrieved 2026-11-01).
Section 2.3 fixes eight data types: string, boolean, decimal, integer, dateTime, binary, reference, and complex. Two rules do most of the work in code review. A dateTime value MUST be a validxsd:DateTime; providers that emit a bare date or a locale format are out of spec. A complex attribute MUST NOT contain nested complex sub-attributes and MUST NOT carry a uniqueness characteristic; published schema JSON violated both, and the errata below repair the JSON rather than the rule.
Multi-valued attributes share a common sub-attribute set (Section 2.4): type,value, display, $ref, and primary, the last true for at most one entry in the list. Section 2.5 closes the model with the equivalence rule: unassigned, null, and empty array mean the same thing for most attributes, which is why a PATCH that clears a value may use either form.
Section 3.1 assigns authorship of the two identifiers, and the assignment is absolute. id is the server's: case-exact, read-only, always returned, MUST NOT be specified by the client, with thebulkId prefix reserved for the protocol's temporary identifiers. externalId is the client's: optional, case-exact, read-write, and the server MUST treat it as scoped to the provisioning domain. The meta complex is the server's bookkeeping: resourceType,created, lastModified, location (which MUST equal the Content-Location header), and version (which MUST equal the ETag); clients provide values, and the server ignores them.
New resource types are defined in Section 3.2 and extensions in Section 3.3: an extension's attributes live in a JSON container keyed by the extension's URN, there is no inheritance, and the model is additive in the way LDAP auxiliary classes are. The schemas attribute on every resource MUST be a non-empty array of unique URIs matching the resource type's declared schema and schema extensions; the errata table below includes three example resources that shipped without it.
Section 4.1 defines the User. The load-bearing rules: userName is REQUIRED and unique per account; password is writeOnly and returned never, with persistence handled so the clear value is not recoverable, and erratum 8450 settled the phrasing as "hashed or encrypted";groups is read-only and its $ref values point at Group resources only. Section 4.1.2 carries the multi-valued set (emails, phoneNumbers, addresses, entitlements, roles, and the rest), with country codes constrained to ISO 3166-1 alpha-2.
Section 4.2 defines the Group around one REQUIRED attribute, displayName, plusmembers, whose type distinguishes User from Group membership and whose non-membership semantics differ accordingly. Section 4.3 defines the Enterprise User extension (employeeNumber, costCenter, organization, division,department, manager) in its URN-keyed container.
The published examples contradicted the narrative in several of these places, which is why the errata table in Section 05 of this page sits next to the resource text: the Group schema JSON markeddisplayName "required": false under a REQUIRED description (erratum 5368); the User's groups schema listed "referenceTypes": ["User","Group"] where only"Group" is possible (erratum 8471); both the full User and the Enterprise User examples used country "USA" against the alpha-2 rule (errata 5990 and 5991); and the Enterprise manager value carried "caseExact": false while the id it references is case-exact (erratum 8472).
Two schema documents in Sections 5 and 6 turn a static schema into a self-describing service. TheServiceProviderConfig (Section 5) declares capabilities: whether PATCH, bulk (withmaxOperations), filtering (with maxResults), changePassword, sort, and ETags are supported, plus documentationUri and the authenticationSchemes list with itsprimary flag. The ResourceType schema (Section 6) binds a resource name to an endpoint and a schema URI, with schemaExtensions carrying a required flag per extension. Clients read ResourceTypes to discover endpoints rather than assuming a pluralization rule; the protocol side of that contract is on the RFC 7644 page.
Both documents needed errata repair: ResourceType name and endpoint gained uniqueness "server" and case-exact matching (erratum 8475), the Section 3.1 endpoint names were normalized to /ServiceProviderConfig and /ResourceTypes with leading slashes (erratum 8361), and three of the Section 8.7.2 example documents were missing the REQUIREDschemas attribute and meta (erratum 8417). Later RFCs extend the ServiceProviderConfig in place: RFC 9865 adds a pagination complex and RFC 9967 addssecurityEvents; both are optional, and absence means the capability is unsupported.
Section 8 teaches the schema by example, and the examples shipped defective: sixteen errata are verified against this RFC as of 2026-11-01, ten of them altering the Section 8.7 schema JSON directly. Most share one verified date, 2025-10-28, a coordinated clearing of the decks that immediately preceded the working group's revision work; the two country-code fixes were verified in February 2020, and one editorial fix in Section 7 was verified by the RFC Editor in June 2025. The corrected JSON is the reading implementations should converge on; the published JSON is what a decade of libraries copied. Both readings matter, so this site's schema explorer defaults to the corrected schema and keeps the as-published text one toggle away, with per-erratum deltas matching the table below.
The errata pages also carry reported and held entries that change over time; this page pins the sixteen verified fixes with their own dates from the RFC Editor (retrieved 2026-11-01).
| ID | Section | Severity | What it fixes | Reported | Verified |
|---|---|---|---|---|---|
5368 | §8.7.1 | Technical | the Group schema described displayName as REQUIRED while the JSON carried "required": false; corrected to true, matching Section 4.2 | 2018-05-24 | 2025-10-28 |
5606 | §8.7.1 | Technical | the type sub-attribute in the schema-of-schemas omitted binary from its description and canonicalValues; both gain it | 2019-01-16 | 2025-10-28 |
5607 | §8.7.2 | Technical | referenceTypes is multi-valued; the JSON carried "multiValued": false, corrected to true | 2019-01-16 | 2025-10-28 |
5990 | §8.2 | Editorial | the full User example used country "USA"; Section 4.1.2 requires ISO 3166-1 alpha-2, corrected to "US" | 2020-02-26 | 2020-02-26 |
5991 | §8.3 | Editorial | the Enterprise User example carried the same "USA" country value, corrected to "US" | 2020-02-26 | 2020-02-26 |
6004 | §8.7.1 | Technical | complex attributes (name, emails, addresses) carried a "uniqueness" characteristic; Section 2.3.8 bars uniqueness on complex attributes, so the key is removed | 2020-03-03 | 2025-10-28 |
6727 | §8.7.2 | Editorial | the schema-of-schemas description sub-attribute carried a non-standard self-description; replaced with the standard text | 2021-10-28 | 2025-10-28 |
7522 | §8.7.2 | Technical | ResourceType.schemaExtensions is a list by name and description but the JSON said "multiValued": false; corrected to true | 2023-05-23 | 2025-10-28 |
8361 | §3.1 | Technical | endpoint names normalized to /ServiceProviderConfig and /ResourceTypes with leading slashes, matching Section 1.2, Section 8.6, and RFC 7644 usage | 2025-03-31 | 2025-10-28 |
8415 | §8.7.1 | Technical | the subAttributes type canonicalValues gain binary and lose complex (complex sub-attributes cannot contain complex) | 2025-05-14 | 2025-10-28 |
8417 | §8.7.2 | Technical | the ServiceProviderConfig, ResourceType, and Schema example resources were missing the REQUIRED schemas attribute and meta | 2025-05-16 | 2025-10-28 |
8435 | §7 | Editorial | binary was missing from the possible attribute types in Section 7's own narrative, where every other type is listed | 2025-05-27 | 2025-06-17 |
8450 | §4.1.1 | Technical | password handling text "Ensure that the value is encrypted (e.g., hashed)" clarified to "hashed or encrypted" | 2025-06-05 | 2025-10-28 |
8471 | §8.7.1 | Technical | the User groups $ref referenceTypes listed ["User","Group"]; groups is a list of groups, corrected to ["Group"] | 2025-06-20 | 2025-10-28 |
8472 | §8.7.1 | Technical | the Enterprise User manager.value sub-attribute carried "caseExact": false; corrected to true (the id it references is case-exact) | 2025-06-20 | 2025-10-28 |
8475 | §6 | Technical | ResourceType name and endpoint given uniqueness "server" and caseExact true; the narrative fix sits in Section 6 | 2025-06-20 | 2025-10-28 |
Source: rfc-editor.org/errata/rfc7643 (retrieved 2026-11-01); the per-erratum notes match the schema explorer's dataset.
Normative - the documents the schema builds on:
- RFC 7643: SCIM Core Schema - this page's primary source
- RFC 2119 and RFC 8174 - BCP 14, the keyword conventions (Section 1.1)
- RFC 4648 - The Base16, Base32, and Base64 Data Encodings (the binary type)
- RFC 5646 - Tags for Identifying Languages (the locale attribute)
- RFC 7644: SCIM Protocol - the processing rules that read the characteristics
Informative - errata, registry, and tooling:
- RFC Editor errata for RFC 7643 - the live record behind the table above
- IANA: SCIM Schema URIs registry - established by Section 10
- RFC 9865 and RFC 9967 - the ServiceProviderConfig extensions
- The schema explorer - the corrected Section 8.7 JSON with the as-published toggle
- RFC 7644: the protocol - the companion breakdown on this site