# Get list of notification channels Returns a paginated list of all notification delivery channels Endpoint: GET /notification_channels Version: 1.0.0 Security: ApiKeyAuth ## Query parameters: - `limit` (integer) Maximum number of items to return Example: 20 - `page` (integer) Page number for pagination Example: 1 - `kind` (string) Filter notification channels by their delivery type. When specified, only channels of the given type will be returned: - nats — NATS subject-based messaging channels - telegram — Telegram bot message delivery channels - webhook — HTTP webhook callback channels Enum: "nats", "telegram", "webhook" - `is_archived` (boolean) Filter notification channels by their archived status. - true — Returns only archived (disabled) channels - false — Returns only active (enabled) channels - Omit parameter — Returns both active and archived channels Archived channels are temporarily disabled but retain their configuration for potential reactivation later. - `search` (string) Search notification channels by name using case-insensitive pattern matching. The search is performed on the channel name field using SQL ILIKE pattern matching: - Partial matches are supported - Case-insensitive search - Whitespace is normalized Examples: - "webhook" — matches channels with "webhook" in the name - "prod" — matches "Production Alerts", "prod-monitoring", etc. - "alert" — matches "System Alerts", "Critical Alert Channel", etc. Example: "production" - `sort_by` (string) Field to sort results by. Use "-" prefix for descending order Enum: "name", "-name", "kind", "-kind", "created_at", "-created_at", "updated_at", "-updated_at" ## Response 200 fields (application/json): - `items` (array, required) - `items.id` (string, required) Unique identifier in UUID format Example: "550e8400-e29b-41d4-a716-446655440000" - `items.kind` (string, required) Defines the type of notification delivery channel. Each kind determines the transport mechanism and configuration structure: - nats — NATS subject-based messaging for internal microservice communication - telegram — Telegram bot message delivery to chats or direct messages - webhook — HTTP POST callbacks to external endpoints Enum: "nats", "telegram", "webhook" - `items.name` (string, required) User-defined human-readable name for the notification channel. Used to identify and distinguish between different notification channels. The name should be descriptive and help users understand the purpose or destination of the channel. Example: "Production Alerts Webhook" - `items.config` (object, required) Configuration structure for notification channels. The exact schema depends on the channel kind. Each channel type has specific configuration requirements: - NATS channels require a subject for message routing - Telegram channels require bot token and chat ID for message delivery - Webhook channels require URL and optional headers/authentication - `items.is_archived` (boolean, required) Indicates whether the notification channel is archived (disabled) - `items.created_at` (string, required) Timestamp when the resource was created Example: "2024-01-15T10:30:00Z" - `items.updated_at` (string, required) Timestamp when the resource was last updated Example: "2024-01-15T10:30:00Z" - `meta` (object, required) - `meta.limit` (integer, required) Number of items per page Example: 20 - `meta.page` (integer, required) Current page number Example: 1 - `meta.total` (integer, required) Total number of items available Example: 42 - `meta.total_pages` (integer, required) Total number of pages available Example: 3 ## Response 400 fields (application/problem+json): - `type` (string, required) A URI reference that identifies the problem type Example: "https://docs.vilna.io/apis/problems/invalid-request" - `title` (string, required) A short, human-readable summary of the problem type Example: "Invalid Request" - `status` (integer, required) The HTTP status code Example: 400 - `detail` (string) A human-readable explanation specific to this occurrence of the problem Example: "Validation error" - `instance` (string) A URI reference that identifies the specific occurrence of the problem Example: "/errors?id=XXXXXX-xxxxx" - `fields` (array) List of invalid fields in the request - `fields.name` (string, required) The name of the invalid field Example: "meta" - `fields.reason` (string, required) Why this field is invalid Example: "Exceeded maximum data size — must not exceed 1000 characters" ## Response default fields (application/problem+json): - `detail` (string) A human-readable explanation specific to this occurrence of the problem Example: "An unexpected error occurred while processing your request" - `instance` (string) A URI reference that identifies the specific occurrence of the problem Example: "/errors/1234567890" - `status` (integer, required) The HTTP status code Example: 500 - `title` (string, required) A short, human-readable summary of the problem type Example: "Internal Server Error" - `type` (string, required) A URI reference that identifies the problem type Example: "https://api.vilna.io/problems/internal-error"