> ## Documentation Index
> Fetch the complete documentation index at: https://docs.roe-ai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Retrieve Webhook

> Mixin for organization access validation.

Automatically resolves and validates organization access on every request,
making the organization available as self.organization.

For API key auth:  organization is derived from the key (no org_id param needed).
For user auth:     organization_id must be provided in the request
                   (kwargs / headers / body / query params).

Usage:
    class MyView(BaseOrganizationAccessMixin, APIView):
        def get(self, request):
            # self.organization is automatically available
            return Response({"org": self.organization.name})



## OpenAPI

````yaml GET /webhooks/{webhook_id}/
openapi: 3.1.0
info:
  title: Roe AI API
  version: 1.0.0
  description: Complete API documentation for Roe AI platform
servers:
  - url: https://api.roe-ai.com
    description: Production API
security: []
paths:
  /webhooks/{webhook_id}/:
    get:
      tags:
        - webhooks
      description: >-
        Mixin for organization access validation.


        Automatically resolves and validates organization access on every
        request,

        making the organization available as self.organization.


        For API key auth:  organization is derived from the key (no org_id param
        needed).

        For user auth:     organization_id must be provided in the request
                           (kwargs / headers / body / query params).

        Usage:
            class MyView(BaseOrganizationAccessMixin, APIView):
                def get(self, request):
                    # self.organization is automatically available
                    return Response({"org": self.organization.name})
      operationId: webhooks_retrieve
      parameters:
        - in: path
          name: webhook_id
          schema:
            type: string
            format: uuid
          required: true
        - name: organization_id
          in: query
          required: false
          schema:
            type: string
            format: uuid
          description: >-
            Organization ID. This is required for access control. It can be
            provided via query or request body depending on the endpoint.
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
          description: ''
      security:
        - jwtAuth: []
      x-codeSamples:
        - lang: Python
          source: |
            import requests

            webhook_id = "your-webhook-id"
            response = requests.get(
                f"https://api.roe-ai.com/webhooks/{webhook_id}/",
                headers={"Authorization": "Bearer YOUR_API_KEY"}
            )
            webhook = response.json()
            print(f"Webhook: {webhook['name']} -> {webhook['url']}")
        - lang: TypeScript
          source: |
            const webhookId = "your-webhook-id";
            const response = await fetch(
              `https://api.roe-ai.com/webhooks/${webhookId}/`,
              { headers: { "Authorization": "Bearer YOUR_API_KEY" } }
            );
            const webhook = await response.json();
            console.log(webhook);
        - lang: cURL
          source: |
            curl -X GET "https://api.roe-ai.com/webhooks/YOUR_WEBHOOK_ID/" \
              -H "Authorization: Bearer YOUR_API_KEY"
components:
  schemas:
    Webhook:
      type: object
      description: Serializer for Webhook model
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          description: User-friendly name for this webhook
          maxLength: 255
        url:
          type: string
          format: uri
          description: Webhook endpoint URL
          maxLength: 500
        secret:
          type: string
          maxLength: 255
        headers:
          type: object
          additionalProperties:
            type: string
          description: Custom headers to include in webhook requests (key-value pairs)
        events:
          type: array
          items:
            type: string
          description: List of events to trigger this webhook (e.g., ['triggered'])
        is_active:
          type: boolean
        alerts:
          type: array
          items:
            type: string
          description: Alert IDs
          readOnly: true
        last_triggered_at:
          type: string
          format: date-time
        last_success_at:
          type: string
          format: date-time
        last_failure_at:
          type: string
          format: date-time
        failure_count:
          type: integer
          readOnly: true
          description: Number of consecutive failures
        created_by:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
      required:
        - alerts
        - created_at
        - created_by
        - failure_count
        - id
        - name
        - updated_at
        - url
  securitySchemes:
    jwtAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````