# Teams callback

Source: https://immiscible.fly.dev/docs/api/post-teams-callback-wid

`POST /teams/callback/:wid`

A card submission from your Teams relay, signed with the workspace's secret. See [set up Microsoft Teams](https://immiscible.fly.dev/docs/guides/teams.md).

## Authentication

Issuer signature. No bearer credential: the caller proves itself by signing the raw request body. Anything that does not verify is refused (or, on the card rail, declined) before the body is read. The Teams relay's HMAC signature with the per-workspace secret shown once at connection, and a card token bound to the approval.

## Path parameters

- `wid` (string, required): Workspace id

## Request

curl:

```bash
curl -X POST "https://immiscible.fly.dev/teams/callback/$IMMISCIBLE_WORKSPACE" \
  -H "immiscible-signature: $SIGNATURE"
```

Node:

```ts
// signature: computed over the raw body, see the authentication note above
const res = await fetch('https://immiscible.fly.dev/teams/callback/$IMMISCIBLE_WORKSPACE', {
  method: 'POST',
  headers: {
    'immiscible-signature': signature,
  },
});
const data = await res.json();
console.log(res.status, data);
```

Python:

```python
import requests

# signature: computed over the raw body, see the authentication note above
res = requests.post(
    "https://immiscible.fly.dev/teams/callback/$IMMISCIBLE_WORKSPACE",
    headers={
        "immiscible-signature": signature,
    },
)
print(res.status_code, res.json())
```
