Authentication
Bearer Token Authentication
All SCIM API requests must include a valid JWT bearer token in the header:
Authorization: Bearer <your-jwt-token>
Note: The following discovery endpoints do not require authentication:
- /ResourceTypes
- /Schemas
- /ServiceProviderConfig
Token Requirements
Your JWT must include:
-
tenant: Your Flip organization ID -
exp: Token expiration timestamp
{
"tenant": "your-organization-id",
"exp": 1234567890
}
SCIM User Schema Mappings
Core User Attributes
| SCIM Attribute | Flip Field | Description | Required |
|---|---|---|---|
| userName | username | Login identifier | Yes |
| name.givenName | firstName | First name | Yes |
| name.familyName | lastName | Last name | Yes |
| displayName | displayName | Display name (auto-joined) | No |
| emails[type="work"] | Work email | No | |
| active | status | Active/Locked | No |
| externalId | externalId | External system ID | No |
Contact Info & Department
| SCIM Attribute | Flip Field |
|---|---|
| title | job_title |
| phoneNumbers[type="work"] | phone_number |
| phoneNumbers[type="mobile"] | mobile_number |
| enterpriseUser.department | department |
Flip SCIM Extensions
Location Extension
"urn:ietf:params:scim:schemas:extension:flip:location:2.0:User": {
"value": "Berlin Office"
}“About Me” Extension
"urn:ietf:params:scim:schemas:extension:flip:aboutMe:2.0:User": {
"value": "Product manager focused on mobile experiences"
}Custom Attribute Extension
"urn:ietf:params:scim:schemas:extension:flip:custom:2.0:User": {
"attributes": [
{ "technicalName": "employee_id", "value": "EMP123456" },
{ "technicalName": "cost_center", "value": "CC-100" }
]
}⚠️ Note: Custom attributes must be created in the Flip Admin Console before they can be provisioned via SCIM.
Custom JSON Extension (Entra Workaround)
Schema URN: urn:ietf:params:scim:schemas:extension:flip:customJson:2.0:User
Property: writeOnly (not returned in GET/Read responses)
This extension allows sending custom attributes as raw JSON (string). It is primarily intended as a workaround for Microsoft Entra, which does not reliably send complex attributes during initial user provisioning (Microsoft Source).
Request example:
{
"urn:ietf:params:scim:schemas:extension:flip:customJson:2.0:User": {
"value": "{\"attributes\":[{\"technicalName\":\"employee_id\",\"value\":\"EMP123456\"},{\"technicalName\":\"cost_center\",\"value\":\"CC-100\"}]}"
}
}Merge behavior:
- Values from
customJsonare merged into the existing custom extensionurn:ietf:params:scim:schemas:extension:flip:custom:2.0:User. - If both
...:custom...:attributesandcustomJsonare provided in the same request, attributes take precedence.
Note: Since customJson is writeOnly, it is not returned in read responses. Identity providers therefore cannot validate this part via read-back comparison.
Example SCIM User Request
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
"urn:ietf:params:scim:schemas:extension:flip:location:2.0:User",
"urn:ietf:params:scim:schemas:extension:flip:aboutMe:2.0:User",
"urn:ietf:params:scim:schemas:extension:flip:custom:2.0:User"
],
"userName": "john.doe@company.com",
"name": {
"givenName": "John",
"familyName": "Doe"
},
"displayName": "John Doe",
"emails": [
{
"value": "john.doe@company.com",
"type": "work"
}
],
"phoneNumbers": [
{
"value": "+49 30 12345678",
"type": "work"
},
{
"value": "+49 170 9876543",
"type": "mobile"
}
],
"title": "Senior Product Manager",
"active": true,
"externalId": "emp-12345",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"department": "Product Management"
},
"urn:ietf:params:scim:schemas:extension:flip:location:2.0:User": {
"value": "Berlin HQ"
},
"urn:ietf:params:scim:schemas:extension:flip:aboutMe:2.0:User": {
"value": "Passionate about building great products"
},
"urn:ietf:params:scim:schemas:extension:flip:custom:2.0:User": {
"attributes": [
{
"technicalName": "employee_number",
"value": "DE-2024-001"
}
]
}
}
API Endpoints
Service Discovery
| Endpoint | Method | Description |
|---|---|---|
| /ServiceProviderConfig | GET | SCIM config and features |
| /Schemas | GET | Supported schemas |
| /ResourceTypes | GET | Supported resources (e.g., Users) |
User Management
| Endpoint | Method | Description |
|---|---|---|
| /Users | GET | List or filter users |
| /Users | POST | Create a user |
| /Users/{id} | GET | Retrieve a user |
| /Users/{id} | PUT | Full update |
| /Users/{id} | PATCH | Partial update |
| /Users/{id} | DELETE | Soft-delete user |