# Receive an app notice

POST

/v1/connection-notices/{tenantId}/{appId}

```sh
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.

## Parameters

### Path Parameters

**tenantId**

required

string format: uuid

The workspace that owns the registration.

**appId**

required

string format: uuid

The registration id (`appId`).

## Request Bodyrequired

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

\*/\*

string format: binary

## Responses

### 202

Accepted. No body.

### 400

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

application/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

```json
{
  "error": {
    "code": "example",
    "message": "example",
    "details": {},
    "requestId": "example"
  }
}
```

### 413

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

application/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

```json
{
  "error": {
    "code": "example",
    "message": "example",
    "details": {},
    "requestId": "example"
  }
}
```

### 429

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

application/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

```json
{
  "error": {
    "code": "example",
    "message": "example",
    "details": {},
    "requestId": "example"
  }
}
```

### 503

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

application/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

```json
{
  "error": {
    "code": "example",
    "message": "example",
    "details": {},
    "requestId": "example"
  }
}
```

## See also

- [Error code `connection-notice-invalid`](https://docs.kindgi.com/v0.5.0/reference/errors.md#connection-notice-invalid)
- [Error code `connection-notice-unavailable`](https://docs.kindgi.com/v0.5.0/reference/errors.md#connection-notice-unavailable)
- [Error code `rate-limit-exceeded`](https://docs.kindgi.com/v0.5.0/reference/errors.md#rate-limit-exceeded)
- [Error code `request-too-large`](https://docs.kindgi.com/v0.5.0/reference/errors.md#request-too-large)
- [Every error code](https://docs.kindgi.com/v0.5.0/reference/errors.md)
