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

# Get a platform event-stream sink config

> Return the current streaming-sink configuration for one transport `kind`. A sink streams the platform event taxonomy (`message.*`, `call.*`, … — the same events the per-event HTTP webhooks fan out) to your own Kafka topic or batch HTTP collector. The secret credential (Kafka SASL password or HTTP bearer token) is encrypted at rest and is never returned — the read surfaces only a `credentials_configured` presence flag. The `last_run_*` fields are worker-owned run status, read-only. Requires an owner, admin, or developer role.



## OpenAPI

````yaml /openapi.yaml get /api/v1/developer/event-sinks/{kind}
openapi: 3.1.0
info:
  title: Devotel CPaaS API
  description: Orbit by Devotel — Communications Platform as a Service API
  version: 1.0.0
  contact:
    name: Devotel
    url: https://devotel.io
    email: support@devotel.io
  license:
    name: Proprietary
servers:
  - url: https://api.orbit.devotel.io
    description: Production
security:
  - Bearer: []
  - ApiKey: []
tags:
  - name: Messages
    description: >-
      Send and manage messages across all channels (SMS, WhatsApp, RCS, Email,
      Viber, etc.)
  - name: Fax
    description: >-
      List and track fax (MMS/T.38) transmissions on Telnyx-backed fax numbers
      (sending flows through the Messaging API)
  - name: Agents
    description: AI agent creation, configuration, and execution
  - name: Voice
    description: Voice calls, IVR, conferencing, and SIP trunking
  - name: OnCall
    description: On-call rotations and escalation policy planning for incident alerting
  - name: Webhooks
    description: Webhook endpoint management and delivery logs
  - name: Numbers
    description: Phone number search, provisioning, and configuration
  - name: Brand Identity
    description: >-
      Unified cross-channel brand trust posture (10DLC, toll-free, WhatsApp,
      RCS, branded calling, number KYC)
  - name: Contacts
    description: Contact management, segmentation, and lifecycle tracking
  - name: Campaigns
    description: Marketing campaign orchestration and analytics
  - name: Flows
    description: Automation flow builder and execution engine
  - name: Templates
    description: Message template management and approval workflows
  - name: Settings
    description: Organization, channel, and user preference settings
  - name: Verify
    description: OTP generation and verification across channels
  - name: Push
    description: Push notification delivery via FCM and APNs
  - name: Integrations
    description: Third-party service connections and OAuth management
  - name: CDP
    description: >-
      Customer Data Platform — activation surface (CRM object sync, streaming
      destinations, ad-audience activation)
  - name: Files
    description: >-
      Server-to-server media upload, listing, retrieval, and deletion
      (signed-URL backed)
  - name: Commerce
    description: >-
      Omnichannel conversational-commerce — persistent cart + checkout state
      machine, channel-agnostic hosted pay-by-link, native WhatsApp checkout,
      and AP2-style agent payment mandates.
  - name: Sync
    description: >-
      Real-time shared-state primitive (Twilio Sync parity) — Documents, Maps,
      Lists, and ephemeral Streams, with change events relayed over the
      /api/v1/ws/sync WebSocket gateway
paths:
  /api/v1/developer/event-sinks/{kind}:
    get:
      tags:
        - Webhooks
      summary: Get a platform event-stream sink config
      description: >-
        Return the current streaming-sink configuration for one transport
        `kind`. A sink streams the platform event taxonomy (`message.*`,
        `call.*`, … — the same events the per-event HTTP webhooks fan out) to
        your own Kafka topic or batch HTTP collector. The secret credential
        (Kafka SASL password or HTTP bearer token) is encrypted at rest and is
        never returned — the read surfaces only a `credentials_configured`
        presence flag. The `last_run_*` fields are worker-owned run status,
        read-only. Requires an owner, admin, or developer role.
      parameters:
        - schema:
            type: string
            enum:
              - kafka
              - http_batch
          in: path
          name: kind
          required: true
          description: Sink transport. One of `kafka` or `http_batch`.
      responses:
        '200':
          description: Current sink configuration (no plaintext credential).
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                properties:
                  data:
                    $ref: '#/components/schemas/EventSinkRead'
                  meta:
                    type: object
                    properties:
                      request_id:
                        type: string
                      timestamp:
                        type: string
                        format: date-time
        '404':
          description: Unknown sink kind (not `kafka` or `http_batch`).
components:
  schemas:
    EventSinkRead:
      type: object
      additionalProperties: true
      description: >-
        Current configuration for one event-stream sink. The plaintext
        credential is never returned — only the `credentials_configured`
        presence flag. The `last_run_*` fields are worker-owned run status,
        surfaced read-only.
      properties:
        kind:
          type: string
          enum:
            - kafka
            - http_batch
        enabled:
          type: boolean
          description: Whether the worker should stream events to this sink.
        credentials_configured:
          type: boolean
          description: >-
            True when an encrypted secret credential is stored. The secret
            itself is never returned.
        events:
          type: array
          items:
            type: string
          description: >-
            Platform event filter — same semantics as a webhook endpoint's
            `events`. Empty or a single `*` member ⇒ every event; otherwise an
            exact type (`message.sent`) or a `<prefix>.*` glob (`message.*`).
        destination:
          oneOf:
            - $ref: '#/components/schemas/EventSinkKafkaDestination'
            - $ref: '#/components/schemas/EventSinkHttpBatchDestination'
        brokers:
          type: array
          items:
            type: string
          description: Kafka bootstrap brokers as `host:port` (kafka kind only).
        sasl_mechanism:
          type: string
          enum:
            - plain
            - scram-sha-256
            - scram-sha-512
          description: Kafka SASL mechanism (kafka kind only).
        sasl_username:
          type: string
          description: >-
            Kafka SASL username (kafka kind only). The password is the encrypted
            credential.
        last_run_at:
          type:
            - 'null'
            - string
          format: date-time
        last_run_status:
          type:
            - 'null'
            - string
          enum:
            - ok
            - failed
            - null
        last_produced_count:
          type:
            - 'null'
            - integer
        last_error:
          type:
            - 'null'
            - string
        last_error_at:
          type:
            - 'null'
            - string
          format: date-time
        consecutive_failures:
          type:
            - 'null'
            - integer
    EventSinkKafkaDestination:
      type: object
      required:
        - kind
        - topic
      properties:
        kind:
          type: string
          enum:
            - kafka
        topic:
          type: string
          minLength: 1
          maxLength: 249
          description: >-
            Kafka topic name. Matches `[A-Za-z0-9._-]`, 1–249 chars; cannot be
            `.` or `..`.
        partition_key_path:
          type: string
          minLength: 1
          maxLength: 200
          description: >-
            Dot-path into the event envelope used to derive the partition key so
            every event for one contact/conversation lands on the same
            partition. Defaults to contact → conversation → message → call → to
            → id.
        headers:
          type: object
          additionalProperties:
            type: string
            maxLength: 1024
          description: Static string→string headers attached to every produced record.
    EventSinkHttpBatchDestination:
      type: object
      required:
        - kind
        - url
      properties:
        kind:
          type: string
          enum:
            - http_batch
        url:
          type: string
          format: uri
          maxLength: 2048
          description: >-
            HTTPS collector URL. SSRF-validated on write (no private/metadata
            hosts).
        max_batch_size:
          type: integer
          minimum: 1
          maximum: 1000
          description: >-
            Maximum number of event envelopes per POST body. The worker flushes
            at this count.
        headers:
          type: object
          additionalProperties:
            type: string
            maxLength: 1024
          description: Static string→string headers attached to every batch POST.
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Dashboard JWT token from Clerk
    ApiKey:
      type: apiKey
      name: X-API-Key
      in: header
      description: Server-to-server API key (dv_live_sk_*)

````