Skip to main content

SCIM (Admin) API

Table of Contents

Top

upsquad/scim/admin/v1/admin.proto

Connection

Connection mirrors a row of scim_connections (minus the raw token).

FieldTypeLabelDescription
idstring
namestring
providerstringprovider is one of: "okta"
base_urlstring
statusstringstatus is one of: "active"
field_mappingsConnection.FieldMappingsEntryrepeated
last_sync_atgoogle.protobuf.Timestamp
last_sync_statusstring
token_maskedstringtoken_masked is a stable display identifier of the form "scim_***<hash[:4]>" derived from the stored HMAC hash.
created_atgoogle.protobuf.Timestamp
updated_atgoogle.protobuf.Timestamp

Connection.FieldMappingsEntry

FieldTypeLabelDescription
keystring
valuestring

CreateConnectionRequest

FieldTypeLabelDescription
namestring
providerstring
base_urlstring
field_mappingsCreateConnectionRequest.FieldMappingsEntryrepeated

CreateConnectionRequest.FieldMappingsEntry

FieldTypeLabelDescription
keystring
valuestring

CreateConnectionResponse

FieldTypeLabelDescription
connectionConnection
bearer_tokenstringbearer_token is returned EXACTLY ONCE on create. Stored as HMAC hash server-side; never retrievable again. Paste into IdP immediately.

GetConnectionRequest

FieldTypeLabelDescription
idstring

GetConnectionResponse

FieldTypeLabelDescription
connectionConnection

GetSyncRunRequest

FieldTypeLabelDescription
idstring

GetSyncRunResponse

FieldTypeLabelDescription
runSyncRun

ListConnectionsRequest

FieldTypeLabelDescription
page_sizeint32
page_tokenstring

ListConnectionsResponse

FieldTypeLabelDescription
connectionsConnectionrepeated
next_page_tokenstring

ListSyncRunsRequest

FieldTypeLabelDescription
connection_idstringconnection_id optional — filter to runs for one connection.
statusstringstatus optional — one of "running"
fromgoogle.protobuf.Timestamp
togoogle.protobuf.Timestamp
page_sizeint32
page_tokenstring

ListSyncRunsResponse

FieldTypeLabelDescription
runsSyncRunrepeated
next_page_tokenstring

RevokeConnectionRequest

FieldTypeLabelDescription
idstring

RevokeConnectionResponse

RotateTokenRequest

FieldTypeLabelDescription
idstring

RotateTokenResponse

FieldTypeLabelDescription
connectionConnection
bearer_tokenstring

SyncError

FieldTypeLabelDescription
resource_typestring
external_idstring
messagestring

SyncRun

SyncRun is one execution of a scheduled or manual SCIM sync.

FieldTypeLabelDescription
idstring
connection_idstring
started_atgoogle.protobuf.Timestamp
completed_atgoogle.protobuf.Timestamp
users_createdint32
users_updatedint32
users_deletedint32
groups_createdint32
groups_updatedint32
statusstringstatus is one of: "running"
errorsSyncErrorrepeated

UpdateConnectionRequest

FieldTypeLabelDescription
idstring
namestringoptionalOptional fields — presence controls whether they are updated.
statusstringoptional
base_urlstringoptional
field_mappingsUpdateConnectionRequest.FieldMappingsEntryrepeated
clear_field_mappingsboolclear_field_mappings=true empties the map regardless of field_mappings value (replaces with {}). If false and field_mappings is non-empty, the new map replaces the old.

UpdateConnectionRequest.FieldMappingsEntry

FieldTypeLabelDescription
keystring
valuestring

UpdateConnectionResponse

FieldTypeLabelDescription
connectionConnection

SCIMAdminService

SCIMAdminService exposes Connect-RPC endpoints for tenant admins to manage their SCIM connections and view sync history. All RPCs are RBAC-gated: scim.admin for writes, scim.read for reads.

Method NameRequest TypeResponse TypeDescription
CreateConnectionCreateConnectionRequestCreateConnectionResponseCreateConnection creates a new connection and returns the bearer token EXACTLY ONCE. The caller (tenant admin) pastes this token into their IdP (Okta/Azure AD/Google) as the outbound bearer.
ListConnectionsListConnectionsRequestListConnectionsResponseListConnections returns a paginated list of the caller tenant's SCIM connections. Tokens are always masked in the response.
GetConnectionGetConnectionRequestGetConnectionResponseGetConnection returns a single connection by ID. Token always masked.
UpdateConnectionUpdateConnectionRequestUpdateConnectionResponseUpdateConnection mutates name / status / base_url / field_mappings. Cannot change the bearer token — use RotateToken for that.
RotateTokenRotateTokenRequestRotateTokenResponseRotateToken issues a new bearer token and invalidates the old one. Returns the new raw token EXACTLY ONCE.
RevokeConnectionRevokeConnectionRequestRevokeConnectionResponseRevokeConnection soft-deletes the connection. External SCIM calls using its token will return 401 after this returns.
ListSyncRunsListSyncRunsRequestListSyncRunsResponseListSyncRuns returns paginated sync history, filterable by connection_id / status / date range.
GetSyncRunGetSyncRunRequestGetSyncRunResponseGetSyncRun returns a single sync run with its full error list.

Scalar Value Types

.proto TypeNotesC++JavaPythonGoC#PHPRuby
doubledoubledoublefloatfloat64doublefloatFloat
floatfloatfloatfloatfloat32floatfloatFloat
int32Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.int32intintint32intintegerBignum or Fixnum (as required)
int64Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.int64longint/longint64longinteger/stringBignum
uint32Uses variable-length encoding.uint32intint/longuint32uintintegerBignum or Fixnum (as required)
uint64Uses variable-length encoding.uint64longint/longuint64ulonginteger/stringBignum or Fixnum (as required)
sint32Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.int32intintint32intintegerBignum or Fixnum (as required)
sint64Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.int64longint/longint64longinteger/stringBignum
fixed32Always four bytes. More efficient than uint32 if values are often greater than 2^28.uint32intintuint32uintintegerBignum or Fixnum (as required)
fixed64Always eight bytes. More efficient than uint64 if values are often greater than 2^56.uint64longint/longuint64ulonginteger/stringBignum
sfixed32Always four bytes.int32intintint32intintegerBignum or Fixnum (as required)
sfixed64Always eight bytes.int64longint/longint64longinteger/stringBignum
boolboolbooleanbooleanboolboolbooleanTrueClass/FalseClass
stringA string must always contain UTF-8 encoded or 7-bit ASCII text.stringStringstr/unicodestringstringstringString (UTF-8)
bytesMay contain any arbitrary sequence of bytes.stringByteStringstr[]byteByteStringstringString (ASCII-8BIT)