Skip to content

Receive an app notice

View as Markdown
POST
/v1/connection-notices/{tenantId}/{appId}
curl --request POST \
--url https://example.com/v1/connection-notices/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'Content-Type: */*' \
--data binary

Where an app reports a removal (an uninstall, a revoke at the app): the registration’s noticesUrl. No sign-in, and a bearer token, if sent, is never read. The app’s own signature over the body’s exact bytes is what the server checks: a JSON webhook from GitHub, or a security event token from Google. Every notice not accepted (an unknown workspace or id, a bad signature, a body over the cap) is the same 400 connection-notice-invalid. A client past its refusals this minute gets 429. If the server couldn’t check or apply the notice just now, 503 connection-notice-unavailable: the app may send it again.

tenantId
required
string format: uuid

The workspace that owns the registration.

appId
required
string format: uuid

The registration id (appId).

The app’s signed notice, any content type: a JSON webhook from GitHub, or a security event token from Google.

Media type*/*
string format: binary

Accepted. No body.

connection-notice-invalid: the notice was not accepted (the same answer whatever the reason).

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}

The request body is over the API’s limit (request-too-large; details.maxBytes says how much).

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}

rate-limit-exceeded: too many refused notices from this client; Retry-After says when.

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}

connection-notice-unavailable: the notice couldn’t be handled just now; the app may send it again.

Media typeapplication/json
object
error
required
object
code
required

Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).

string
message
required
string
details

Optional, kind-specific.

object
key
additional properties
any
requestId
required

Server-assigned request id; also echoed via X-Request-Id header.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"details": {},
"requestId": "example"
}
}

See also