prometheus / prometheus/alertmanager

API v3alpha: ReceiverService

Open
#5,483 1 comment 0 reactions 1 assignee View on GitHub

@siavashs is already working on this.

Since Aug 29, 2026.

component/api component/config kind/enhancement
Dominant language
Go
Stars
8.6k
Forks
2.5k
Avg merge
2d 6h
Merged PRs (30d)
61

Description

Parent: #5450

Summary

Define and implement receiver.v3alpha.ReceiverService, initially providing deterministic receiver discovery independently of notification observability.

The public proto should be reviewed first, followed by the handler implementation.

Proto PR

Define:

  • Receiver identity and label messages using common.v3alpha where applicable.
  • Receiver label filters.
  • ListReceivers request and response messages.
  • ListReceivers RPC.

Document ordering, filter semantics, missing configuration behavior, and whether pagination is necessary for the initial contract.

Implementation

  • Return every configured receiver in deterministic configuration order, including canonical name and custom labels.
  • Match the existing API meaning of configured receivers rather than returning only receivers with currently active notification pipelines.
  • Support OR across receiver matcher sets and AND within each set.
  • Support equality, inequality, regular-expression, negated regular-expression, and missing-label behavior through shared matcher semantics.
  • Clone label maps before returning them.
  • Return Unavailable when configuration has not loaded.
  • Publish receiver/config metadata through the immutable reload snapshot.
  • Register the service consistently with handler routing, health, reflection, and bounded instrumentation.
  • Treat any tightening of receiver label-name validation as a separate configuration-parser change; the API must not silently reinterpret existing labels.

Acceptance criteria

  • The receiver.v3alpha proto and generated code land before handler implementation.
  • All configured receivers are returned in deterministic configuration order.
  • Canonical names and custom labels are included without exposing mutable internal maps.
  • Shared OR-of-AND matcher semantics are applied consistently.
  • Not-ready configuration returns Unavailable.
  • Configuration reload atomically updates receiver results.
  • Health, reflection, and bounded instrumentation include ReceiverService.
  • Ginkgo/Gomega coverage includes ordering, empty/not-ready config, reload, name/custom labels, missing labels, regex, negation, and invalid matchers over supported transports.

Dependencies and related work

  • Shared contracts and immutable reload snapshots: #5479.
  • Connect registration, request policy, and TLS coverage: #5478.
  • Receiver labels were introduced by #4963.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.