Skip to main content

SCIM API

Table of Contents

Top

upsquad/scim/v1/scim.proto

Connection

FieldTypeLabelDescription
idstringid is the UUID of the scim_connections row.
namestringname is a tenant-chosen label (e.g. "Okta — Finance").
providerstringprovider is one of okta
base_urlstringbase_url is the tenant IdP's SCIM base URL, for documentation purposes.
field_mappingsConnection.FieldMappingsEntryrepeatedfield_mappings overrides the default Okta-compatible attribute map.
statusstringstatus is one of active
bearer_token_suffixstringbearer_token_suffix is the last 4 characters of the raw token, to let humans identify which credential an IdP is using. The full token is never returned on a read.
last_sync_atgoogle.protobuf.Timestamplast_sync_at + last_sync_status report the most recent ledger row.
last_sync_statusstring
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 the raw OAuth2 bearer token. Returned ONCE, and only from Create / RotateBearerToken. Callers MUST persist this into the IdP configuration immediately; it cannot be retrieved again.

DeleteConnectionRequest

FieldTypeLabelDescription
idstring

DeleteConnectionResponse

GetConnectionRequest

FieldTypeLabelDescription
idstring

GetConnectionResponse

FieldTypeLabelDescription
connectionConnection

GetImportJobRequest

FieldTypeLabelDescription
idstring

GetImportJobResponse

FieldTypeLabelDescription
jobImportJob

ImportJob

FieldTypeLabelDescription
idstring
kindImportJobKind
connection_idstringconnection_id populated for SCIM bulk jobs only.
submitted_bystringsubmitted_by is the member id that initiated a CSV upload. Empty for SCIM bulk.
statusImportJobStatus
total_rowsint32
processed_rowsint32
error_rowsint32
errorsImportJobErrorrepeated
started_atgoogle.protobuf.Timestamp
completed_atgoogle.protobuf.Timestamp
created_atgoogle.protobuf.Timestamp

ImportJobError

ImportJobError is a single error row from the errors JSONB column.

FieldTypeLabelDescription
row_indexint32
codestring
messagestring

ListConnectionsRequest

FieldTypeLabelDescription
page_sizeint32
page_tokenint320-based offset

ListConnectionsResponse

FieldTypeLabelDescription
connectionsConnectionrepeated
total_countint32

ListImportJobsRequest

FieldTypeLabelDescription
kind_filterImportJobKindUNSPECIFIED = all
page_sizeint32
page_tokenint32

ListImportJobsResponse

FieldTypeLabelDescription
jobsImportJobrepeated
total_countint32

ListSyncRunsRequest

FieldTypeLabelDescription
connection_idstring
page_sizeint32
page_tokenint32

ListSyncRunsResponse

FieldTypeLabelDescription
runsSyncRunrepeated
total_countint32

RotateBearerTokenRequest

FieldTypeLabelDescription
idstring

RotateBearerTokenResponse

FieldTypeLabelDescription
connectionConnection
bearer_tokenstringbearer_token is the newly-minted raw token. Returned ONCE.

SyncRun

FieldTypeLabelDescription
idstring
connection_idstring
started_atgoogle.protobuf.Timestamp
completed_atgoogle.protobuf.Timestamp
users_createdint32
users_updatedint32
users_deletedint32
groups_createdint32
groups_updatedint32
statusstring

UpdateConnectionRequest

FieldTypeLabelDescription
idstring
namestring
base_urlstring
field_mappingsUpdateConnectionRequest.FieldMappingsEntryrepeated
statusstring

UpdateConnectionRequest.FieldMappingsEntry

FieldTypeLabelDescription
keystring
valuestring

UpdateConnectionResponse

FieldTypeLabelDescription
connectionConnection

ImportJobKind

ImportJobKind enumerates how a job was submitted.

NameNumberDescription
IMPORT_JOB_KIND_UNSPECIFIED0
IMPORT_JOB_KIND_SCIM_BULK1RFC 7644 §3.7 /Bulk endpoint
IMPORT_JOB_KIND_CSV_USERS2admin-portal CSV → members
IMPORT_JOB_KIND_CSV_GROUPS3admin-portal CSV → org_units

ImportJobStatus

ImportJobStatus tracks job lifecycle.

NameNumberDescription
IMPORT_JOB_STATUS_UNSPECIFIED0
IMPORT_JOB_STATUS_QUEUED1
IMPORT_JOB_STATUS_RUNNING2
IMPORT_JOB_STATUS_SUCCEEDED3
IMPORT_JOB_STATUS_PARTIAL4
IMPORT_JOB_STATUS_FAILED5

SCIMAdminService

SCIMAdminService is the admin-portal-facing management surface for SCIM integrations. Tenant-scoped operations only; the wire-level /scim/v2/* endpoints live on the HTTP gateway and are served by either the hand-rolled handler or the elimity adapter.

Method NameRequest TypeResponse TypeDescription
CreateConnectionCreateConnectionRequestCreateConnectionResponseCreateConnection registers a new SCIM IdP integration. Mints and returns the raw bearer token ONCE — the response MUST be captured by the caller and propagated to the IdP.
GetConnectionGetConnectionRequestGetConnectionResponseGetConnection returns a connection's metadata WITHOUT the raw bearer token (only bearer_token_suffix is exposed).
ListConnectionsListConnectionsRequestListConnectionsResponseListConnections returns all non-deleted SCIM integrations for the caller's tenant.
UpdateConnectionUpdateConnectionRequestUpdateConnectionResponseUpdateConnection mutates non-credential fields (name, base_url, field_mappings, status). Never rotates the bearer token.
DeleteConnectionDeleteConnectionRequestDeleteConnectionResponseDeleteConnection soft-deletes the integration; pauses subsequent bearer-token auth lookups. scim_sync_runs rows are preserved for audit.
RotateBearerTokenRotateBearerTokenRequestRotateBearerTokenResponseRotateBearerToken mints a new bearer token, replacing the hash + vault-ref atomically. Returns the new raw token ONCE.
ListSyncRunsListSyncRunsRequestListSyncRunsResponseListSyncRuns returns a paginated view of the scim_sync_runs ledger for the admin dashboard.
ListImportJobsListImportJobsRequestListImportJobsResponseListImportJobs returns the per-tenant import_jobs ledger (CSV + SCIM bulk) for the admin dashboard. Works for both handler paths.
GetImportJobGetImportJobRequestGetImportJobResponseGetImportJob returns a single import_job by ID (tenant-scoped).

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)