## Get a webhook subscription by ID

`client.WebhookSubscriptions.Get(ctx, subscriptionID) (*WebhookSubscription, error)`

**get** `/v3/webhook-subscriptions/{subscriptionId}`

Retrieve details for a specific webhook subscription including its
target URL, subscribed events, and current status.

### Parameters

- `subscriptionID string`

### Returns

- `type WebhookSubscription struct{…}`

  - `ID string`

    Unique identifier for the webhook subscription

  - `CreatedAt Time`

    When the subscription was created

  - `IsActive bool`

    Whether this subscription is currently active

  - `SubscribedEvents []WebhookEventType`

    List of event types this subscription receives

    - `const WebhookEventTypeMessageSent WebhookEventType = "message.sent"`

    - `const WebhookEventTypeMessageReceived WebhookEventType = "message.received"`

    - `const WebhookEventTypeMessageRead WebhookEventType = "message.read"`

    - `const WebhookEventTypeMessageDelivered WebhookEventType = "message.delivered"`

    - `const WebhookEventTypeMessageFailed WebhookEventType = "message.failed"`

    - `const WebhookEventTypeMessageEdited WebhookEventType = "message.edited"`

    - `const WebhookEventTypeReactionAdded WebhookEventType = "reaction.added"`

    - `const WebhookEventTypeReactionRemoved WebhookEventType = "reaction.removed"`

    - `const WebhookEventTypePollReceived WebhookEventType = "poll.received"`

    - `const WebhookEventTypePollFailed WebhookEventType = "poll.failed"`

    - `const WebhookEventTypePollSent WebhookEventType = "poll.sent"`

    - `const WebhookEventTypePollDelivered WebhookEventType = "poll.delivered"`

    - `const WebhookEventTypePollRead WebhookEventType = "poll.read"`

    - `const WebhookEventTypePollUpdated WebhookEventType = "poll.updated"`

    - `const WebhookEventTypePollVoteAdded WebhookEventType = "poll.vote.added"`

    - `const WebhookEventTypePollVoteRemoved WebhookEventType = "poll.vote.removed"`

    - `const WebhookEventTypePollReactionAdded WebhookEventType = "poll.reaction.added"`

    - `const WebhookEventTypeParticipantAdded WebhookEventType = "participant.added"`

    - `const WebhookEventTypeParticipantRemoved WebhookEventType = "participant.removed"`

    - `const WebhookEventTypeChatCreated WebhookEventType = "chat.created"`

    - `const WebhookEventTypeChatGroupNameUpdated WebhookEventType = "chat.group_name_updated"`

    - `const WebhookEventTypeChatGroupIconUpdated WebhookEventType = "chat.group_icon_updated"`

    - `const WebhookEventTypeChatGroupNameUpdateFailed WebhookEventType = "chat.group_name_update_failed"`

    - `const WebhookEventTypeChatGroupIconUpdateFailed WebhookEventType = "chat.group_icon_update_failed"`

    - `const WebhookEventTypeChatBackgroundUpdated WebhookEventType = "chat.background_updated"`

    - `const WebhookEventTypeChatBackgroundUpdateFailed WebhookEventType = "chat.background_update_failed"`

    - `const WebhookEventTypeChatTypingIndicatorStarted WebhookEventType = "chat.typing_indicator.started"`

    - `const WebhookEventTypeChatTypingIndicatorStopped WebhookEventType = "chat.typing_indicator.stopped"`

    - `const WebhookEventTypePhoneNumberStatusUpdated WebhookEventType = "phone_number.status_updated"`

    - `const WebhookEventTypePhoneNumberAssigned WebhookEventType = "phone_number.assigned"`

    - `const WebhookEventTypePhoneNumberReleased WebhookEventType = "phone_number.released"`

    - `const WebhookEventTypePhoneNumberLineTypeUpdated WebhookEventType = "phone_number.line_type_updated"`

    - `const WebhookEventTypeContactCardReceived WebhookEventType = "contact_card.received"`

    - `const WebhookEventTypeCallInitiated WebhookEventType = "call.initiated"`

    - `const WebhookEventTypeCallRinging WebhookEventType = "call.ringing"`

    - `const WebhookEventTypeCallAnswered WebhookEventType = "call.answered"`

    - `const WebhookEventTypeCallEnded WebhookEventType = "call.ended"`

    - `const WebhookEventTypeCallFailed WebhookEventType = "call.failed"`

    - `const WebhookEventTypeCallDeclined WebhookEventType = "call.declined"`

    - `const WebhookEventTypeCallNoAnswer WebhookEventType = "call.no_answer"`

    - `const WebhookEventTypeLocationSharingStarted WebhookEventType = "location.sharing.started"`

    - `const WebhookEventTypeLocationSharingStopped WebhookEventType = "location.sharing.stopped"`

    - `const WebhookEventTypePaymentSucceeded WebhookEventType = "payment.succeeded"`

    - `const WebhookEventTypePaymentCanceled WebhookEventType = "payment.canceled"`

    - `const WebhookEventTypePaymentExpired WebhookEventType = "payment.expired"`

    - `const WebhookEventTypePaymentDeclined WebhookEventType = "payment.declined"`

    - `const WebhookEventTypePaymentAuthorized WebhookEventType = "payment.authorized"`

    - `const WebhookEventTypeConnectionCreated WebhookEventType = "connection.created"`

    - `const WebhookEventTypeConnectionRevoked WebhookEventType = "connection.revoked"`

    - `const WebhookEventTypeZeroDayRetentionUpdated WebhookEventType = "zero_day_retention.updated"`

    - `const WebhookEventTypePhoneNumberForwardingUpdated WebhookEventType = "phone_number.forwarding_updated"`

    - `const WebhookEventTypeEnvironmentLineMoved WebhookEventType = "environment.line_moved"`

    - `const WebhookEventTypeContactCardCreated WebhookEventType = "contact_card.created"`

    - `const WebhookEventTypeContactCardUpdated WebhookEventType = "contact_card.updated"`

    - `const WebhookEventTypeContactCardDeleted WebhookEventType = "contact_card.deleted"`

    - `const WebhookEventTypeAPITokenCreated WebhookEventType = "api_token.created"`

    - `const WebhookEventTypeAPITokenRenamed WebhookEventType = "api_token.renamed"`

    - `const WebhookEventTypeAPITokenExpiryScheduled WebhookEventType = "api_token.expiry_scheduled"`

    - `const WebhookEventTypeAPITokenExpired WebhookEventType = "api_token.expired"`

    - `const WebhookEventTypeAPITokenActivated WebhookEventType = "api_token.activated"`

    - `const WebhookEventTypeAPITokenDeleted WebhookEventType = "api_token.deleted"`

    - `const WebhookEventTypeEnvironmentCreated WebhookEventType = "environment.created"`

    - `const WebhookEventTypeEnvironmentRenamed WebhookEventType = "environment.renamed"`

    - `const WebhookEventTypeEnvironmentDeleted WebhookEventType = "environment.deleted"`

    - `const WebhookEventTypeWebhookSubscriptionCreated WebhookEventType = "webhook_subscription.created"`

    - `const WebhookEventTypeWebhookSubscriptionDeleted WebhookEventType = "webhook_subscription.deleted"`

    - `const WebhookEventTypeWebhookSubscriptionTargetURLChanged WebhookEventType = "webhook_subscription.target_url_changed"`

    - `const WebhookEventTypeWebhookSubscriptionEnabled WebhookEventType = "webhook_subscription.enabled"`

    - `const WebhookEventTypeWebhookSubscriptionDisabled WebhookEventType = "webhook_subscription.disabled"`

    - `const WebhookEventTypeWebhookSubscriptionEventsUpdated WebhookEventType = "webhook_subscription.events.updated"`

    - `const WebhookEventTypeWebhookSubscriptionPhoneNumbersUpdated WebhookEventType = "webhook_subscription.phone_numbers.updated"`

    - `const WebhookEventTypeWebhookSubscriptionRoutingHeadersSet WebhookEventType = "webhook_subscription.routing_headers_set"`

    - `const WebhookEventTypeWebhookSubscriptionRoutingHeadersCleared WebhookEventType = "webhook_subscription.routing_headers_cleared"`

    - `const WebhookEventTypeTeamMemberAdded WebhookEventType = "team_member.added"`

    - `const WebhookEventTypeTeamMemberSignedIn WebhookEventType = "team_member.signed_in"`

    - `const WebhookEventTypeTeamMemberSignedOut WebhookEventType = "team_member.signed_out"`

  - `TargetURL string`

    URL where webhook events will be sent

  - `UpdatedAt Time`

    When the subscription was last updated

  - `PhoneNumbers []string`

    Phone numbers this subscription filters for. If null or empty, events from all phone numbers are delivered.

  - `RoutingIDHeader string`

    Header carrying the chat id. Defaults to `Linq-Chat-Id` when affinity is on.

  - `RoutingKeyHeader string`

    Header carrying the routing token. Null disables delivery affinity.

### Example

```go
package main

import (
  "context"
  "fmt"

  "github.com/linq-team/linq-go"
  "github.com/linq-team/linq-go/option"
)

func main() {
  client := linqgo.NewClient(
    option.WithAPIKey("My API Key"),
  )
  webhookSubscription, err := client.WebhookSubscriptions.Get(context.TODO(), "b2c3d4e5-f6a7-8901-bcde-f23456789012")
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", webhookSubscription.ID)
}
```

#### Response

```json
{
  "id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
  "created_at": "2024-01-15T10:30:00Z",
  "is_active": true,
  "subscribed_events": [
    "message.sent",
    "message.delivered",
    "message.read"
  ],
  "target_url": "https://webhooks.example.com/linq/events",
  "updated_at": "2024-01-15T10:30:00Z",
  "phone_numbers": [
    "string"
  ],
  "routing_id_header": "X-Chat-Id",
  "routing_key_header": "X-Route-Token"
}
```
