Skip to content

The upstream subject itself moved

POST
/v1/id/upstream/change-subject
curl --request POST \
--url https://your-tenant-host/v1/id/upstream/change-subject \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-edgekit-site-id: site_example' \
--data '{ "subject": "legacy-1001", "newSubject": "legacy-1001" }'

Push-only, because a credential asserting a new subject is indistinguishable from a new person, and sign-in would correctly treat it as one. The supported identity providers do not preserve a subject across an account merge, so this route replaces a detection nobody can implement. A retry after success is 404: the old subject is no longer bound.

x-edgekit-site-id
required

The site this request is for, within this tenant. Every official EdgeKit SDK sets it from the client you configured; set it yourself only when calling this API directly.

string
>= 1 characters <= 128 characters

Example

site_example

The site this request is for, within this tenant. Every official EdgeKit SDK sets it from the client you configured; set it yourself only when calling this API directly.

Media typeapplication/json
object
subject
required

The sub the identity provider issues for this person.

string
>= 1 characters <= 512 characters

Example

legacy-1001
newSubject
required

The sub the identity provider issues for this person.

string
>= 1 characters <= 512 characters

Example

legacy-1001

The link now names the new subject.

Media typeapplication/json
object
success
required
boolean
userId
required
string format: uuid
applied
required
boolean

Example

{
"success": true,
"userId": "01926f3a-8b4c-7d2e-9f10-2a3b4c5d6e7f",
"applied": true
}

Invalid request.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details

Example

{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key."
}
}

Missing or invalid credential.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details

Example

{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key."
}
}

Not allowed.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details

Example

{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key."
}
}

Resource not found.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details

Example

{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key."
}
}

Conflicts with an existing record.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details

Example

{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key."
}
}

Request validation failed.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details

Example

{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key."
}
}

Unexpected error.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details

Example

{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key."
}
}

With Retry-After, briefly unavailable; without it, not configured.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
details

Example

{
"error": {
"code": "unauthorized",
"message": "Invalid or missing API key."
}
}