Receive an app notice
const url = 'https://example.com/v1/connection-notices/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = {method: 'POST', headers: {'Content-Type': '*/*'}, body: 'binary'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/v1/connection-notices/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Content-Type: */*' \ --data binaryWhere 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.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The workspace that owns the registration.
The registration id (appId).
Request Bodyrequired
Section titled “Request Bodyrequired”The app’s signed notice, any content type: a JSON webhook from GitHub, or a security event token from Google.
Responses
Section titled “Responses”Accepted. No body.
connection-notice-invalid: the notice was not accepted (the same answer whatever the reason).
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
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).
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}rate-limit-exceeded: too many refused notices from this client; Retry-After says when.
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
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.
object
object
Stable machine-readable discriminant. Values match domain error codes (see docs/API-ROUTE-CONVENTIONS.md §4.3).
Optional, kind-specific.
object
Server-assigned request id; also echoed via X-Request-Id header.
Examplegenerated
{ "error": { "code": "example", "message": "example", "details": {}, "requestId": "example" }}