Skip to main content
The Microsoft Teams plugin handles incoming webhooks. Point your provider’s subscription URL at your Corsair HTTP handler (see Overview for setup context and the exact URL shape).
New to Corsair? See webhooks and hooks.

Webhook map

  • channels
    • created (channels.created)
    • message (channels.message)
  • chats
    • message (chats.message)
  • members
    • changed (members.changed)

HTTP handler setup

app/api/webhook/route.ts
import { processWebhook } from "corsair";
import { corsair } from "@/server/corsair";

export async function POST(request: Request) {
    const headers = Object.fromEntries(request.headers);
    const body = await request.json();
    const result = await processWebhook(corsair, headers, body);
    return result.response;
}

Events

Channels

Created

channels.created A channel was created, updated, or deleted in a team Payload
NameTypeRequiredDescription
valueobject[]Yes
{
  subscriptionId: string,
  changeType: created | updated | deleted,
  resource: string,
  tenantId?: string,
  clientState?: string,
  resourceData?: {
    @odata.type?: #Microsoft.Graph.channel,
    @odata.id?: string,
    id: string
  }
}[]
{
  subscriptionId: string,
  changeType: created | updated | deleted,
  resource: string,
  tenantId?: string,
  clientState?: string,
  resourceData?: {
    @odata.type?: #Microsoft.Graph.channel,
    @odata.id?: string,
    id: string
  }
}
webhookHooks example
teams({
    webhookHooks: {
        channels: {
            created: {
                before(ctx, args) {
                    return { ctx, args };
                },
                after(ctx, response) {
                },
            },
        },
    },
})

Message

channels.message A message was created or updated in a team channel Payload
NameTypeRequiredDescription
valueobject[]Yes
{
  subscriptionId: string,
  changeType: created | updated | deleted,
  resource: string,
  tenantId?: string,
  clientState?: string,
  resourceData?: {
    @odata.type?: #Microsoft.Graph.chatMessage,
    @odata.id?: string,
    id: string
  }
}[]
{
  subscriptionId: string,
  changeType: created | updated | deleted,
  resource: string,
  tenantId?: string,
  clientState?: string,
  resourceData?: {
    @odata.type?: #Microsoft.Graph.chatMessage,
    @odata.id?: string,
    id: string
  }
}
webhookHooks example
teams({
    webhookHooks: {
        channels: {
            message: {
                before(ctx, args) {
                    return { ctx, args };
                },
                after(ctx, response) {
                },
            },
        },
    },
})

Chats

Message

chats.message A message was created or updated in a chat Payload
NameTypeRequiredDescription
valueobject[]Yes
{
  subscriptionId: string,
  changeType: created | updated | deleted,
  resource: string,
  tenantId?: string,
  clientState?: string,
  resourceData?: {
    @odata.type?: #Microsoft.Graph.chatMessage,
    @odata.id?: string,
    id: string
  }
}[]
{
  subscriptionId: string,
  changeType: created | updated | deleted,
  resource: string,
  tenantId?: string,
  clientState?: string,
  resourceData?: {
    @odata.type?: #Microsoft.Graph.chatMessage,
    @odata.id?: string,
    id: string
  }
}
webhookHooks example
teams({
    webhookHooks: {
        chats: {
            message: {
                before(ctx, args) {
                    return { ctx, args };
                },
                after(ctx, response) {
                },
            },
        },
    },
})

Members

Changed

members.changed A team membership was added, updated, or removed Payload
NameTypeRequiredDescription
valueobject[]Yes
{
  subscriptionId: string,
  changeType: created | updated | deleted,
  resource: string,
  tenantId?: string,
  clientState?: string,
  resourceData?: {
    @odata.type?: #Microsoft.Graph.aadUserConversationMember,
    @odata.id?: string,
    id: string
  }
}[]
{
  subscriptionId: string,
  changeType: created | updated | deleted,
  resource: string,
  tenantId?: string,
  clientState?: string,
  resourceData?: {
    @odata.type?: #Microsoft.Graph.aadUserConversationMember,
    @odata.id?: string,
    id: string
  }
}
webhookHooks example
teams({
    webhookHooks: {
        members: {
            changed: {
                before(ctx, args) {
                    return { ctx, args };
                },
                after(ctx, response) {
                },
            },
        },
    },
})