-
Notifications
You must be signed in to change notification settings - Fork 0
docs: Add webhook page and Google forms for staging access #27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -14,6 +14,8 @@ psd | |
| thumb | ||
| sketch | ||
|
|
||
| CLAUDE.md | ||
|
|
||
| ### intellij ### | ||
| .idea | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,13 +1,22 @@ | ||
| --- | ||
| slug: / | ||
| --- | ||
| # Extend Wire with secure Apps | ||
| # Wire Apps | ||
|
|
||
| #### Apps bring your ideas to the [Wire secure communications platform](https://wire.com/) | ||
| Automate workflows, connect with third-party services, and boost collaboration. | ||
| Customize Wire to fit your team's needs. All with Wire's end-to-end MLS encryption and security intact. | ||
|
|
||
| ## How it works | ||
| ## What is the Wire SDK? | ||
| The Wire SDK is a developer toolkit that allows developers to build Apps(Integrations) for their team, working inside Wire's encrypted environment. Unlike most collaboration platforms where Apps run on server infrastructure outside the encrypted client boundary, Wire applications participate directly in encrypted conversations. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
PS. Please split the long lines. The markdown won't interpret it unless you put two spaces at the end.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No need to apply DRY for written content, obviously these sentences are explained better in other sections, but this give a general view in just a paragraph or what is written in the rest of the page and then other pages |
||
|
|
||
| What does it mean? - In Wire, an App behaves like a real participant in the conversation and receives the encryption keys needed to read and send messages. | ||
bbaarriiss marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| ## What can you do with it? | ||
| 1. **Extend Wire functionality**, by writing your own automations, for example an App that sends scheduled reminders or can summarize a message | ||
| 2. **Connect and external system to wire**. Build an App to accept events from an API and then send a message inside Wire, like alerts or updates. Or the other way around, have actions performed inside Wire be propagated to an external software -> [Webhook](001-webhook.mdx) | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I've removed the first line. |
||
|
|
||
| ## How Apps works | ||
|
|
||
| Apps are separate pieces of software that communicate with Wire through a common protocol. | ||
| They remain independent, but can seamlessly interact with the system and its users. | ||
|
|
@@ -17,7 +26,7 @@ Send and receive messages — including assets, emojis, and interactive buttons | |
|
|
||
| Apps are owned and managed at the team level. The administrator decides which Apps are installed. | ||
|
|
||
| ## What's needed | ||
| ## Get started | ||
|
|
||
| ### Develop your App using SDK | ||
|
|
||
|
|
||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think of having this as very first file after landing page is a good idea. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,107 @@ | ||
| # Connecting external systems | ||
|
|
||
| Many business tools, monitoring platforms, ticketing systems, CI/CD pipelines or CRMs, can send an HTTP webhook whenever something happens. With the Wire SDK, you can receive those webhooks and turn them into Wire messages or conversations, keeping your team informed without leaving Wire. | ||
|
|
||
| Common examples include: | ||
|
|
||
| - **Jira or ServiceNow** webhook that posts a notification when a ticket opens or changes priority. | ||
| - **CI/CD pipeline** (GitHub Actions, Jenkins, GitLab) that alerts a team channel on a build failure or deployment. | ||
| - **monitoring tool** (PagerDuty, Grafana, Datadog) that fires an alert when a service degrades. | ||
| - **Zendesk or Salesforce** event that routes a new support request to the right Wire conversation. | ||
|
|
||
| ## Encryption by default | ||
|
|
||
| On most collaboration platforms like Slack and Microsoft Teams, bots and integrations run on server infrastructure _outside_ the encrypted client boundary. The platform server can see message content before it reaches users. | ||
|
|
||
| In Wire it works differently. Your SDK app joins the conversation as a real encrypted participant. It holds encryption keys, encrypts and decrypts messages, and delivers notifications end-to-end encrypted from your app to every member of the conversation. The Wire server only routes encrypted data, it never sees the content. | ||
|
|
||
| This means you can pipe sensitive operational data (incident details, financial alerts, compliance notifications) into Wire conversations without it ever passing through an unencrypted layer. | ||
|
|
||
| ## How it works | ||
|
|
||
| Your app sits between the external system and Wire. It runs two things at once: | ||
|
|
||
| 1. An **HTTP server** that receives the incoming webhook from the external system. | ||
| 2. The **Wire SDK** that sends messages or creates conversations in response. | ||
|
|
||
| ```mermaid | ||
| sequenceDiagram | ||
| participant Ext as External System<br/>(Jira, CI/CD, monitoring…) | ||
| participant App as Your App<br/>(HTTP server + Wire SDK) | ||
| participant Wire as Wire Backend | ||
|
|
||
| Ext->>App: POST /webhook (HTTP) | ||
| Note over App: Parse and format payload | ||
| App->>Wire: Send encrypted message (via SDK) | ||
| Wire-->>App: Confirmation | ||
| ``` | ||
|
|
||
| Your app decides what to send. The raw webhook payload stays with you while Wire only receives the message you compose from it. | ||
|
|
||
| ## Common patterns | ||
|
|
||
| ### Notification pipeline | ||
|
|
||
| When an external event fires, post a formatted message to a known conversation. To make it more flexible, set the conversationId as part of the webhook URL or data to also have routing. | ||
|
|
||
| ```mermaid | ||
| flowchart LR | ||
| A[External event] --> B[Receive webhook] | ||
| B --> C[Format message] | ||
| C --> D[Send to Wire conversation] | ||
| ``` | ||
|
|
||
| This covers most alerting and reporting scenarios: deployment notifications, monitoring alerts, daily summaries, ticket updates. | ||
|
|
||
| <!-- | ||
| Use @site/showcase?tags=webhook when more webhook apps are present | ||
| --> | ||
| A good example of this is the **[GitHub App](https://github.com/wireapp/github-app)**: | ||
| 1. the App exposes 1 endpoint and your GitHub org is configured with a web-hook to send events on every pull request being closed | ||
| 2. The App receives the event via Rest and then uses the SDK to send an encrypted message in a Wire conversation. | ||
|
|
||
| ### Conversation per event | ||
|
|
||
| For events that need focused attention like a new incident, a critical ticket, a compliance request, your app can create a fresh conversation and add the relevant people to it. Each event gets its own thread, keeping discussions organised and searchable. | ||
|
|
||
| ```mermaid | ||
| flowchart LR | ||
| A[External event] --> B[Receive webhook] | ||
| B --> C[Create conversation with relevant members] | ||
| C --> D[Post initial messagewith event details] | ||
| ``` | ||
|
|
||
| See [creating conversations](./03-developer-interface/02-interactions/03-create-conversation.md) for how to create group and one-to-one conversations with the SDK. | ||
|
|
||
| ### Approval workflow | ||
|
|
||
| For workflows that require a decision like approvals, acknowledgements, escalations, send a composite message with buttons. When a team member selects an option, the SDK receives the button click event and your app can trigger the next step in the workflow, all within the encrypted Wire environment. | ||
|
|
||
| ```mermaid | ||
| sequenceDiagram | ||
| participant Ext as External System | ||
| participant App as Your App | ||
| participant Wire as Wire | ||
| participant User as Team member | ||
|
|
||
| Ext->>App: POST /webhook (approval request) | ||
| App->>Wire: Send composite message with buttons | ||
| Wire->>User: Deliver encrypted message | ||
| User->>Wire: Select button (Approve / Reject) | ||
| Wire->>App: Button click event (via SDK) | ||
| App->>Ext: Trigger next workflow step | ||
| ``` | ||
|
|
||
| Learn how to [compose a message with buttons](./03-developer-interface/02-interactions/01-send-message.mdx#composite-message), and react [on buttons being clicked](./03-developer-interface/01-events/06-on-button-clicked.mdx). | ||
|
|
||
spoonman01 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| ## Securing your webhook endpoint | ||
|
|
||
| Before acting on a webhook, always verify it came from your external system. Most platforms sign their payloads with HMAC-SHA256 and include the signature in a request header. Reject any request where the signature doesn't match. | ||
|
|
||
| Store the webhook signing secret alongside your Wire API token, using a secrets manager or environment variable. See [managing app tokens](./05-secure-integration-guidelines/02-managing-app-tokens.md) for recommended storage approaches. | ||
|
|
||
| ## Deployment considerations | ||
|
|
||
| Your app needs a stable, publicly accessible endpoint so the external system can reach it. If you're running behind a firewall or in a private network, you'll need to expose the webhook port or use a reverse proxy. | ||
|
|
||
| Review the [deployment tips](./04-deployment-tips/index.md) for guidance on hosting your app and making sure it stays reachable. | ||
Uh oh!
There was an error while loading. Please reload this page.