Skip to content

Complete a GitHub sign-in

POST
/api/v1/auth/idp/callback
curl --request POST \
--url https://api.deploybase.eu/api/v1/api/v1/auth/idp/callback \
--header 'Content-Type: application/json' \
--data '{ "intent_id": "example", "token": "example" }'

Verifies a Zitadel IdP intent and reports whether it belongs to a linked user, an existing account that must confirm the link, or a new customer (which is provisioned, subject to the signup abuse guards). No authentication required.

Completed IdP intent

Media type application/json
object
intent_id

IntentID is the Zitadel IdP intent id from the callback URL.

string
token

Token is that intent’s single-use token. It is a bearer credential for the intent: never log it.

string
Example generated
{
"intent_id": "example",
"token": "example"
}

Already linked, or an existing account that must confirm the link

Media type application/json
object
data
meta
object
request_id
string
timestamp
string
trace_id
string
data
object
email

Email is the provider’s verified address. Set on link_required and created.

string
existing_org_id
string
existing_user_id

The pendingIdpLink material, set on link_required only.

string
org_id

OrgID is the new organization. Set on created.

string
outcome

Outcome is “linked”, “link_required” or “created”.

string
provider_user_id
string
provider_user_name
string
user_id

UserID is the Zitadel user to create a session for. Set on linked and created.

string
Example generated
{
"data": {
"email": "example",
"existing_org_id": "example",
"existing_user_id": "example",
"org_id": "example",
"outcome": "example",
"provider_user_id": "example",
"provider_user_name": "example",
"user_id": "example"
},
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

A new team was provisioned

Media type application/json
object
data
meta
object
request_id
string
timestamp
string
trace_id
string
data
object
email

Email is the provider’s verified address. Set on link_required and created.

string
existing_org_id
string
existing_user_id

The pendingIdpLink material, set on link_required only.

string
org_id

OrgID is the new organization. Set on created.

string
outcome

Outcome is “linked”, “link_required” or “created”.

string
provider_user_id
string
provider_user_name
string
user_id

UserID is the Zitadel user to create a session for. Set on linked and created.

string
Example generated
{
"data": {
"email": "example",
"existing_org_id": "example",
"existing_user_id": "example",
"org_id": "example",
"outcome": "example",
"provider_user_id": "example",
"provider_user_name": "example",
"user_id": "example"
},
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

The intent is invalid, the provider shared no verified email, or the signup was refused by the abuse gate

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string
Example generated
{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

The sign-in could not be completed

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string
Example generated
{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Signups are temporarily closed, or IdP sign-in is unconfigured

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string
Example generated
{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}