Supported attributes
Core attributes sit at the top level of the SCIM user. Extension attributes sit inside an object keyed by the extension’s schema URI.Core user attributes
Schema:urn:ietf:params:scim:schemas:core:2.0:User
Manager
Schema:urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
Windmill extension attributes
Schema:urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User
Manager references
Themanager.value attribute must identify a person who is already in Windmill. Windmill resolves the reference in this order and stops at the first match:
- The manager’s SCIM user ID, which is their Windmill Member ID
- The manager’s
externalId - The manager’s SCIM
userName - The manager’s work email
How SCIM works with field sources
Windmill treats SCIM as a field source, alongside your HRIS (Human Resources Information System), Slack, Google Workspace, and Outlook. Every field on an employee profile has one source, and only that source can update the field. Every SCIM request has two separate effects:- Windmill stores the values it receives from your identity provider. This always happens, even for fields another system owns.
- Windmill applies the values to the employee profile for fields where SCIM is the source.
Which fields SCIM updates
Setting SCIM as the source for a field
Go to Settings > Org Chart
Find the field
Select SCIM as the source
Fields SCIM can manage
SCIM can be the source for: first name, last name, display name, work email, job title, job level, start date, pronouns, gender, work phone, profile picture, and manager.Clearing and updating values
Your identity provider controls whether a field is updated, left alone, or cleared:- A missing attribute leaves the field unchanged. This applies to full replacements (PUT) as well as partial updates (PATCH), so an identity provider that sends only some attributes never wipes the others.
- A
nullvalue, an empty string, or a PATCHremoveoperation clears the field. An empty phone or photo list also clears the corresponding field. - Work email and
activefollow separate rules. A valid work email is always required.
Validation
Windmill validates each attribute on its own. An invalid optional attribute is skipped, and the valid attributes in the same request still apply. Your identity provider sees a successful response.- Text values must be 255 characters or fewer.
- Start dates must be valid
YYYY-MM-DDdates. - Phone numbers must be valid phone numbers.
- Profile picture URLs must start with
https://. - Phone and photo entries should carry
type: "work"andtype: "photo". If no entry has a matching type, Windmill uses the first entry without a type.
Example user
This is the shape of a full user request from your identity provider. You don’t write this yourself. It shows where each attribute belongs.Supported operations
eq and and on userName, externalId, displayName, and emails[type eq "work"].value. SCIM bulk operations, sorting, ETags, and password changes aren’t supported.
FAQs
Do I have to map every attribute?
Do I have to map every attribute?
I mapped job level in my identity provider, but it isn't on the employee profile.
I mapped job level in my identity provider, but it isn't on the employee profile.
jobLevel and the namespace urn:ietf:params:scim:schemas:extension:gowindmill:2.0:User.Can I use SCIM together with an HRIS integration?
Can I use SCIM together with an HRIS integration?
Why doesn't my identity provider show job level, pronouns, or gender as available attributes?
Why doesn't my identity provider show job level, pronouns, or gender as available attributes?
The manager field is blank even though my identity provider sends it.
The manager field is blank even though my identity provider sends it.
What happens to a value my identity provider stops sending?
What happens to a value my identity provider stops sending?
Can I edit a SCIM-managed field in Windmill?
Can I edit a SCIM-managed field in Windmill?