Changelog¶
[0.6.12] - 2026-04-13¶
Added¶
Compatibility with Pydantic 2.13.
[0.6.11] - 2026-04-10¶
Added¶
add uniqueness, returned and case_exact filters to iter_paths
[0.6.10] - 2026-04-07¶
Fixed¶
replace copies readOnly and preserves immutable fields
[0.6.9] - 2026-04-07¶
Added¶
*RequestContextand*ResponseContextgeneric type aliases that wrapSCIMValidatorandSCIMSerializerfor each SCIM context (e.g.CreationRequestContext[User],CreationResponseContext[User]).
[0.6.8] - 2026-04-03¶
Added¶
SCIMValidatorandSCIMSerializerPydantic Annotated markers to inject a SCIMContextduring validation and serialization. #130MutabilityExceptionhandler in framework integration examples (FastAPI, Flask, Django).
Deprecated¶
The
originalparameter ofmodel_validate()is deprecated. Usereplace()on the validated instance instead. Will be removed in 0.8.0.
Fixed¶
PATCH operations on
immutablefields are now validated at runtime per RFC 7644 §3.5.2:addis only allowed when the field has no previous value,replaceis only allowed with the same value, andremoveis only allowed on unset fields.
[0.6.7] - 2026-04-02¶
Added¶
ListResponsemodel_dumpandmodel_dump_jsonnow acceptattributesandexcluded_attributesparameters. #59New
ResponseParametersmodel for RFC7644 §3.9attributesandexcludedAttributesquery parameters.SearchRequestinherits from it.ResponseParametersandSearchRequestaccept comma-separated strings forattributesandexcludedAttributes.
[0.6.6] - 2026-03-12¶
Fixed¶
Fix ListResponse.totalResults validation when resources is none. #133
[0.6.5] - 2026-03-10¶
Fixed¶
Fix extension serialization crash when an extension is declared but not populated on a resource serialized outside of SCIM context (e.g. FastAPI
response_model). #131
[0.6.4] - 2026-02-05¶
Added¶
SCIMExceptionnow accepts an optionalscim_ctxparameter to indicate the SCIM context in which the exception occurred.
[0.6.3] - 2026-01-29¶
Fixed¶
Fix
model_json_schema()generation for models containingReferenceorPathfields. #125Group
displayNameis required. RFC 7643 erratum 5368 #123 #128GroupMembership$refonly referencesGroup. RFC 7643 erratum 8471Managervalueis case-exact. RFC 7643 erratum 8472ResourceTypenameandendpointhave server uniqueness. RFC 7643 erratum 8475Complex attributes don’t have
uniquenessin schema representation. RFC 7643 erratum 6004
[0.6.2] - 2026-01-25¶
Added¶
SCIMException.from_errorto create an exception from a SCIMErrorobject.
[0.6.1] - 2026-01-25¶
Added¶
Allow
Pathobjects in Pydantic validation methods.
[0.6.0] - 2026-01-25¶
Added¶
Changed¶
Referencetype parameters simplified:Reference[ExternalReference]→Reference[External]Reference[URIReference]→Reference[URI]Reference[Literal["User"]]→Reference["User"]Reference[Literal["User"] | Literal["Group"]]→Reference[Union["User", "Group"]]
Referencenow validates URI format forExternalandURItypes.Referenceinherits fromstrdirectly instead ofUserString.
Fixed¶
Only allow one primary complex attribute value to be true. #10
Deprecated¶
Defining
schemaswith a default value is deprecated. Use__schema__ = URN("...")instead.Error.make_*_error()methods are deprecated. Use<Exception>.to_error()instead.Reference[Literal["X"]]syntax is deprecated. UseReference["X"]instead. Will be removed in 0.7.0.ExternalReferencealias is deprecated. UseExternalinstead. Will be removed in 0.7.0.URIReferencealias is deprecated. UseURIinstead. Will be removed in 0.7.0.Validation that the base schema is present in
schemasduring SCIM context validation.Validation that extension schemas are known during SCIM context validation.
Introduce SCIM exceptions hierarchy (
SCIMExceptionand subclasses) corresponding to RFC 7644 error types. #103Error.from_validation_errorto convert PydanticValidationErrorto SCIMError.PatchOp.patchauto-excludes otherprimaryvalues when setting one toTrue. #116
[0.5.2] - 2026-01-22¶
Fixed¶
Sub-attributes of requested complex attributes are now included in responses. #114
[0.5.1] - 2025-11-07¶
Added¶
Support for Python 3.14.
Compile regexes.
Removed¶
Support for Python 3.9.
[0.5.0] - 2025-08-18¶
Added¶
Validation that forbid
PatchOpwith zerooperations.
Fixed¶
[0.4.2] - 2025-08-05¶
Fixed¶
The library is 100% typed with mypy strict.
[0.4.1] - 2025-07-23¶
Fixed¶
Allow
TypeVaras type parameters forPatchOp.
[0.4.0] - 2025-07-23¶
Added¶
Fixed¶
When using
model_dump, ignore invalidattributesandexcluded_attributesas suggested by RFC7644.Don’t normalize attributes typed with
Any. #20
[0.3.7] - 2025-07-17¶
Fixed¶
All non strict mypy type annotations are fixed.
[0.3.6] - 2025-07-02¶
Added¶
Fix
ResourceType.from_resourceusage for resources with several extensions. #95
[0.3.5] - 2025-06-05¶
Added¶
Fix dynamic schema generation for user defined classes with inheritance.
[0.3.4] - 2025-06-05¶
Added¶
Implement User and Group attributes types shortcuts to match dynamically created model types.
[0.3.3] - 2025-05-21¶
Fixed¶
User class typing. #92
[0.3.2] - 2025-03-28¶
Fixed¶
Pydantic warning.
[0.3.1] - 2025-03-07¶
Fixed¶
Fix
start_indexandcountlimits. #84total_resulsis required. #88
[0.3.0] - 2024-12-11¶
Added¶
Attribute.get_attributecan be called with brackets.
Changed¶
Add a
originalparameter tomodel_validate()mandatory forRESOURCE_REPLACEMENT_REQUEST. This original value is used to look ifimmutableparameters have mutated. #86
[0.2.12] - 2024-12-09¶
Added¶
Implement
Attribute.get_attribute.
[0.2.11] - 2024-12-08¶
Added¶
Implement
Schema.get_attribute.Implement
SearchRequest.start_index_0andSearchRequest.start_index_1.
[0.2.10] - 2024-12-02¶
Changed¶
The
schemaattribute is annotated withtrue.
Fixed¶
Base64Bytescompatibility between pydantic 2.10+ and <2.10
[0.2.9] - 2024-12-02¶
Added¶
Implement
Resource.get_extension_model.
[0.2.8] - 2024-12-02¶
Added¶
Support for Pydantic 2.10.
[0.2.7] - 2024-11-30¶
Added¶
Implement
ResourceType.from_resource.
[0.2.6] - 2024-11-29¶
Fixed¶
Implement
model_dump_json().Temporarily set Pydantic 2.9 as the maximum supported version.
[0.2.5] - 2024-11-13¶
Fixed¶
model_validate()types.
[0.2.4] - 2024-11-03¶
Fixed¶
Python 3.9 and 3.10 compatibility.
[0.2.3] - 2024-11-01¶
Added¶
Python 3.13 support.
Proper Base64 serialization. #31
get_field_root_type()supportsUnionType.
Changed¶
[0.2.2] - 2024-09-20¶
Fixed¶
ListResponsepydantic discriminator issue introduced with pydantic 2.9.0. #75Extension payloads are not required on response contexts. #77
[0.2.1] - 2024-09-06¶
Fixed¶
external_idisscim2_models.CaseExact.true. #74
[0.2.0] - 2024-08-18¶
Fixed¶
Note
schema.make_model() becomes Resource.from_schema(schema) or Extension.from_schema(schema).
Changed¶
Enable pydantic
validate_assignmentoption. #54
[0.1.15] - 2024-08-18¶
Added¶
Add a PEP561
py.typedfile to mark the package as typed.
Fixed¶
Changed¶
Remove
ListResponseofmethod in favor of regular type parameters.
Note
ListResponse.of(User) becomes ListResponse[User] and ListResponse.of(User, Group)`` becomes ListResponse[Union[User, Group]].
ReferenceuseLiteralinstead oftyping.ForwardRef.
Note
pet: Reference["Pet"] becomes pet: Reference[Literal["Pet"]]
[0.1.14] - 2024-07-23¶
Fixed¶
[0.1.13] - 2024-07-15¶
Fixed¶
Schema dump with context was broken.
scim2_models.PatchOperation.opattribute is case insensitive to be compatible with Microsoft Entra. #55
[0.1.12] - 2024-07-11¶
Fixed¶
Additional bugfixes about attribute case sensitivity #45
Dump was broken after sub-model assignments #48
Extension attributes dump were ignored #49
ListResponsetolerate any schema order #50
[0.1.11] - 2024-07-02¶
Fixed¶
Attributes are case insensitive #39
[0.1.10] - 2024-06-30¶
Added¶
[0.1.9] - 2024-06-29¶
Added¶
Referencetype parameters represent SCIM ReferenceType
Fixed¶
countandstart_indexvalidators supportsNonevalues.
[0.1.8] - 2024-06-26¶
Added¶
Dynamic pydantic model creation from SCIM schemas. #6
Changed¶
Fix¶
[0.1.7] - 2024-06-16¶
Added¶
countvalue is floored to 1start_indexvalue is floored to 0resourcesmust be set whentotalResultsis non-null.
Fix¶
Add missing default values. #33
[0.1.6] - 2024-06-06¶
Added¶
Changed¶
Refactor
get_field_mutabilityandget_field_returnabilityinget_field_annotation.
[0.1.5] - 2024-06-04¶
Fix¶
[0.1.4] - 2024-06-03¶
Fix¶
ServiceProviderConfigurationid is optional.
[0.1.3] - 2024-06-03¶
Changed¶
Rename
ServiceProviderConfigurationtoServiceProviderConfigto match the RFCs naming convention.
[0.1.2] - 2024-06-02¶
Added¶
Implement
guess_by_payload()
[0.1.1] - 2024-06-01¶
Changed¶
Pre-defined errors are not constants anymore
[0.1.0] - 2024-06-01¶
Added¶
Initial release