Three lines

Uber

Developers

Uber User Outbound Profile Sync

Overview

The Uber User Outbound Profile Sync feature is used to sync user profile updates to Uber users to the partner company to update the associated user profile state on the partner side.

For user profile updates, we will be using the SCIM 2.0 Update User endpoint. Uber will call the 3P’s SCIM 2.0 Update user endpoint with the updated user profile whenever it changes on the Uber side. The endpoint must support TLS 1.2, and should follow the following format

PUT: <BASE_URI>/Users/{partner_user_id}

  • Base URI The SCIM HTTP protocol is described in terms of a path relative to a Base URI. The Base URI MUST NOT contain a query string, as clients MAY append additional path information and query parameters as part of forming the request. The base URI is a URL that most often consists of the “https” protocol scheme, a domain name, and some initial path RFC3986. For example:

    https://example.com/scim/

  • /Users/{partner_user_id} Predefined path relative to the Base URL

Definitions
  • The SCIM Client will be Uber
  • 3P will refer to the Third Party Company integrating with Uber’s SCIM Client to receive profile updates
  • The SCIM Server is the 3P onboarding to Uber’s platform to sync profile updates.
Pre-Requisites
  • Create a developer account with Uber
  • Unless otherwise specified, the 3P should have onboarded to the Uber OAuth 2.0 flow and Identity Account Linking flow to link Uber and 3P accounts. As part of the process the user will have consented to share Uber data with the 3P. Specifically, the users must have consented to the profile scope which is required to send updates.
  • Unless otherwise specified, Uber will use the thirdPartyUserID as the partner ID to send SCIM updates
  • Unless otherwise specified, the 3P should be using the Uber sub field in the user profile response as the Uber user id which is mapped to the user id on the 3P side.
  • The 3P should work with the Uber team to determine an estimate on the number of user profile updates that will be sent to the 3P in order to determine reasonable SLAs.
Registration

For a partner (3P) to start receiving user profile updates, the following information will need to be communicated with Uber by the 3P. Please contact 3p-identity-group@uber.com or your point of contact with Uber to configure the integration.

  • ApplicationID: The application ID for the third party app in Developer dashboard.

  • Base URL: The SCIM server base URL to send the PUT request. This URL is validated by Uber before any user profile updates are sent to the 3P endpoints.

  • Attributes: The list of fields that should be sent to the third party API. These are the SCIM attributes defined below. We currently support [“name”, “emails”, “phoneNumbers”, “photos”, “banned”]. The attribute selection is validated by Uber for proper permissions based on application scope before registering.

  • Webhook Developer UUID: This is the webhook developer UUID of the webhook created in the developer portal to receive profile updates. The desired authorization should be configured for the webhook in the developer portal.

Authorization

To authorize requests from Uber, Uber SCIM client will support using either the OAuth 2.0 Client Credentials grant tokens or the Uber webhook signing key strategy. Please register your webhook according to the guide and select the preferred authorization method.

SCIM User Schema
Core Attributes

This section contains the common attributes section of the SCIM User schema that Uber supports– the attributes come directly from RFC 7643.

 {
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User",
    "urn:ietf:params:scim:schemas:extension:uber:2.0:User"
  ],
  "id": "2819c223-7f76-453a-919d-413861904646",
  "externalId": "8Mz8RLy9WQmO8s3h-FW5TV7bVuDJYYclnXw1tfKoXtUKKU-uUrNoOn8Q8vQAo5wCjvjyM5dveoHgn1erk41yUotDeGEiGzy3MalbelnKtZnHIbskWquN_j34_lPIZFwDqg==",
  "userName": "8Mz8RLy9WQmO8s3h-FW5TV7bVuDJYYclnXw1tfKoXtUKKU-uUrNoOn8Q8vQAo5wCjvjyM5dveoHgn1erk41yUotDeGEiGzy3MalbelnKtZnHIbskWquN_j34_lPIZFwDqg==",
  "name": {
    "familyName": "Jensen",
    "givenName": "Barbara"
  },
  "emails": [{"value": "bjensen@example.com"}],
  "phoneNumbers": [{"value": "tel:+1-555-555-5555"}],
  "photos": [
    {
      "Value": "https://photos.example.com/profilephoto/72930000000Ccne/F",
      "type": "photo"
    }
  ],
  "meta": {
    "resourceType": "User",
    "lastModified": "2011-05-13T04:42:34Z"
  }
} 
User Profile Field Data type Description OAuth Scope Required to Receive Update
id string A unique identifier for a SCIM resource as defined by the service provider (From Third Party)
externalId string The external user ID. This is Uber’s user ID profile
userName string This is Uber’s user ID profile
name.familyName string The user’s last name profile
name.givenName string The user’s first name profile
emails.value string The user’s email. Per the SCIM schema this is a list of emails; however, we are only sending updates on the single email tied to the user account. We will be sending the update to replace the entire list of size one. profile
phoneNumbers.value string The user’s phone number. Per the SCIM schema this is a list of phone numbers; however, we are only sending updates on the single phone number tied to the user account. We will be sending the update to replace the entire list of size one. The number format will be from RFC 3966. profile
photos[type eq “photo”].value []photos{value: string, type: string} The user’s profile picture. An expirable link to the S3 bucket containing the picture. The link is valid for 12 hours. profile
Extension Attributes

The section contains the extension attributes section of the SCIM User schema for attributes that Uber will sync with the partner.

{
  "id" : "urn:ietf:params:scim:schemas:extension:uber:2.0:User",
  "name" : "UberUser",
  "description" : "Uber User Attributes",
  "attributes" : [
   {
     "name" : "urn:ietf:params:scim:schemas:extension:uber:2.0:User:banned",
     "type" : "bool",
     "multiValued" : false,
     "description" : "A boolean value indicating if the user has been banned in the Uber identity platform. Banned users are not allowed to login to rider app/driver app. They are allowed to log in to drivers.uber.com and partners.uber.com with session permissions scoped only to those domains. Banned drivers can view tax docs on this domain.",
     "mutability" : "readWrite",
     "required" : "false",
     "returned" : "default",
   }
   {
     "name" : "urn:ietf:params:scim:schemas:extension:uber:2.0:User:phoneVerified",
     "type" : "complex",
     "multiValued" : true,
     "description" : "Defines the user's phone confirmed status",
     "mutability" : "readWrite",
     "required" : "false",
     "returned" : "default"
     "subAttributes": [
        {
          "name" : "phoneNumber",
          "type" : "string",
          "multiValued" : false,
          "description" : "The phone number",
          "mutability" : "readWrite",
          "required" : false,
          "returned" : "default"
        },
        {
          "name" : "verified",
          "type" : "bool",
          "multiValued" : false,
          "description" : "The phone number verified status",
          "mutability" : "readWrite",
          "required" : false,
          "returned" : "default"
          },
     ],
   },
   {
     "name" : "urn:ietf:params:scim:schemas:extension:uber:2.0:User:updateTime",
     "type" : "datetime",
     "multiValued" : false,
     "description" : "A datetime value indicating when the user modified data",
     "mutability" : "readWrite",
     "required" : "false",
     "returned" : "default",
   }
  ]
}

Custom extension attributes example struct in request:

"urn:ietf:params:scim:schemas:extension:uber:2.0:User": {
    "banned": false,
	"phoneVerified":
       {
         "phoneNumber": "tel:+1-555-555-5555",
         "verified": false
       },
    	"updateTime": "2011-05-13T04:42:34Z",
}
SCIM Error Protocol

Errors returned from failed SCIM requests must follow the Error schema defined in the RFC.

Example:

  HTTP/1.1 400 Bad Request
   Content-Type: application/scim+json

{
    "schemas": ["urn:ietf:params:scim:api:messages:2.0:Error"],
    "status": 400,
    "scimType": "invalidFilter",
    "detail": "invalid filter sent in the request"
}

Update User Flow

Unless otherwise specified, the third party ID used in the SCIM PUT request comes from the thirdPartyUserID sent to Uber in the link-account request.

Sample Request:

 PUT /Users/2819c223-7f76-453a-919d-413861904646
   Host: example.com
   Accept: application/scim+json
   Content-Type: application/scim+json
   Authorization: Bearer xxxx

{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:uber:2.0:User"],
  "userName": "2819c223-7f76-453a-919d-413861904646",
  "externalId":"8Mz8RLy9WQmO8s3h-FW5TV7bVuDJYYclnXw1tfKoXtUKKU-uUrNoOn8Q8vQAo5wCjvjyM5dveoHgn1erk41yUotDeGEiGzy3MalbelnKtZnHIbskWquN_j34_lPIZFwDqg==",
  "externalId": "8Mz8RLy9WQmO8s3h-FW5TV7bVuDJYYclnXw1tfKoXtUKKU-uUrNoOn8Q8vQAo5wCjvjyM5dveoHgn1erk41yUotDeGEiGzy3MalbelnKtZnHIbskWquN_j34_lPIZFwDqg==",
  "name": {
    "familyName": "Jensen",
    "givenName": "Barbara"
  },
  "emails": [
    {
      "value": "bjensen@example.com"
    }
  ],
  "phoneNumbers": [
    {
      "value": "tel:+1-555-555-5555"
    }
  ],
  "photos": [
    {
      "value":
        "https://photos.example.com/profilephoto/72930000000Ccne/F",
      "type": "photo"
    }
  ],
  "urn:ietf:params:scim:schemas:extension:uber:2.0:User" : {
    	"banned": false,
	"phoneVerified":
       {
         "phoneNumber": "tel:+1-555-555-5555",
         "verified": false
       },
  	"updateTime": "2011-05-13T04:42:34Z"
  },
  "meta": {
    "resourceType": "User",
    "lastModified": "2011-05-13T04:42:34Z"
  }
}

Sample Response: The response to the PUT request from the server should be 200 with the entire User resource object

  HTTP/1.1 200 OK
   Content-Type: application/scim+json

{
  "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:uber:2.0:User"],
  "userName": "2819c223-7f76-453a-919d-413861904646",
  "externalId":"8Mz8RLy9WQmO8s3h-FW5TV7bVuDJYYclnXw1tfKoXtUKKU-uUrNoOn8Q8vQAo5wCjvjyM5dveoHgn1erk41yUotDeGEiGzy3MalbelnKtZnHIbskWquN_j34_lPIZFwDqg==",
  "externalId": "8Mz8RLy9WQmO8s3h-FW5TV7bVuDJYYclnXw1tfKoXtUKKU-uUrNoOn8Q8vQAo5wCjvjyM5dveoHgn1erk41yUotDeGEiGzy3MalbelnKtZnHIbskWquN_j34_lPIZFwDqg==",
  "name": {
    "familyName": "Jensen",
    "givenName": "Barbara"
  },
  "emails": [
    {
      "value": "bjensen@example.com"
    }
  ],
  "phoneNumbers": [
    {
      "value": "tel:+1-555-555-5555"
    }
  ],
  "photos": [
    {
      "value":
        "https://photos.example.com/profilephoto/72930000000Ccne/F",
      "type": "photo"
    }
  ],
  "urn:ietf:params:scim:schemas:extension:uber:2.0:User" : {
    	"banned": false,
	"phoneVerified":
       {
         "phoneNumber": "tel:+1-555-555-5555",
         "verified": false
       },
  	"updateTime": "2011-05-13T04:42:34Z"
  },
  "meta": {
    "resourceType": "User",
    "lastModified": "2011-05-13T04:42:34Z"
  }
}

Uber

Developers
© 2025 Uber Technologies Inc.