API pro reporty¶
Týdenní reporty expirace certifikátů a tajemství — nastavení, ruční spuštění a náhled
Verze dokumentu: 1.0.61
Poslední aktualizace: 2026-11-09
Přehled¶
API pro reporty spravuje týdenní report expirace. Každá organizace má vlastní e-mailové příjemce a dostává jen report své organizace: certifikáty a tajemství svých projektů, které expirují v příštích 60 dnech. Report jde také do notifikačních kanálů organizace s povoleným reportem (Slack, Teams, webhook, Jira). Certifikáty bez projektu nepatří žádné organizaci, a proto nejsou v týdenním reportu žádné organizace; aby se v reportu objevily, přiřaďte je do projektu.
| Metoda | Endpoint | Popis | Oprávnění |
|---|---|---|---|
| GET | /api/v1/organizations/{id}/reports/settings |
Příjemci organizace | report:read v organizaci |
| PUT | /api/v1/organizations/{id}/reports/settings |
Nahrazení příjemců organizace | report:write v organizaci |
| POST | /api/v1/organizations/{id}/reports/trigger |
Okamžité odeslání reportu organizace | report:write v organizaci |
| GET | /api/v1/organizations/{id}/reports/preview |
Náhled reportu organizace | report:read v organizaci |
| GET | /api/v1/reports/settings |
Dřívější příjemci na úrovni instance (nedostávají nic) | globální report:read |
| PUT | /api/v1/reports/settings |
Změna nebo smazání příjemců na úrovni instance | globální report:write |
| POST | /api/v1/reports/trigger |
Okamžité odeslání reportu každé organizaci | globální report:write |
| GET | /api/v1/reports/preview |
Náhled položek všech organizací a projektů, které volající vidí | report:read |
„V organizaci“ znamená organizační roli v dané organizaci nebo globální roli; projektová role nestačí.
Získání nastavení reportu organizace¶
Vrátí příjemce týdenního reportu organizace.
Odpověď 200 OK¶
Pole odpovědi¶
| Pole | Typ | Popis |
|---|---|---|
recipients |
pole řetězců | E-mailové adresy, které dostávají týdenní report této organizace |
Aktualizace nastavení reportu organizace¶
Nahradí celý seznam příjemců organizace. Prázdné pole zastaví doručování e-mailem. Změna se zapíše do auditu jako REPORT_RECIPIENTS_UPDATED (počet příjemců, ne adresy).
PUT /api/v1/organizations/{id}/reports/settings HTTP/1.1
Authorization: Bearer <token>
Content-Type: application/json
{
"recipients": [
"security@example.com",
"ops-team@example.com",
"ciso@example.com"
]
}
Pole požadavku¶
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
recipients |
pole řetězců | ✅ | Seznam e-mailových adres pro příjem reportu (max 10). Každá adresa musí být ve validním e-mailovém formátu. Odešlete [] pro zakázání doručování e-mailem. |
Odpověď 200 OK¶
Plánování
Každé pondělí v 7:00 (Europe/Prague) se report každé organizace odešle jejím příjemcům a kanálům s povoleným reportem. Tento endpoint spravuje pouze příjemce.
Spuštění reportu organizace¶
Odešle report organizace hned jejím příjemcům a kanálům s povoleným reportem, se stejným obsahem jako plánované doručení.
Tělo požadavku není potřeba.
Odpověď 200 OK¶
Chování doručení
Bez příjemců a kanálů s povoleným reportem se nic neodešle a požadavek přesto vrátí 200 OK. Když některý příjemce nebo kanál není dosažitelný, ostatní report dostanou a požadavek vrátí 500 s neúspěšnými doručeními v details.
Příjemci na úrovni instance¶
Před příjemci po organizacích existoval jeden seznam příjemců pro celou instanci. Při upgradu instance s jedinou organizací tento seznam přesunula k ní. Při více organizacích seznam zůstane jako příjemci na úrovni instance, kteří nedostávají žádný report, aby se report jedné organizace nedostal k lidem jiné. Globální administrátor je uvidí přes GET /api/v1/reports/settings, přidá je ke správným organizacím a pak je smaže přes PUT /api/v1/reports/settings s {"recipients": []}. Záložka System Outputs → Weekly Expiry Report je globálnímu administrátorovi ukáže s tlačítkem Clear.
POST /api/v1/reports/trigger (globální role) pošle každé organizaci její vlastní report, stejně jako pondělní běh.
Náhled reportu¶
Vrátí obsah reportu organizace bez odeslání: co by její příjemci dostali příště. GET /api/v1/reports/preview vrací stejný tvar pro všechny organizace a projekty, které volající vidí.
Odpověď 200 OK¶
{
"generated_at": "2026-04-26T10:00:00Z",
"total_certificates": 3,
"total_secrets": 1,
"expiring_certificates": [
{
"common_name": "api.example.com",
"expires_at": "2026-05-10T00:00:00Z",
"days_remaining": 14,
"issuer": "MazeVault Internal CA",
"serial_number": "0a:1b:2c:3d:4e:5f",
"auto_renew": true,
"project_name": "Backend Services",
"environment": "production"
},
{
"common_name": "internal.corp.example.com",
"expires_at": "2026-05-20T00:00:00Z",
"days_remaining": 24,
"issuer": "MazeVault Internal CA",
"serial_number": "ff:ee:dd:cc:bb:aa",
"auto_renew": false,
"project_name": "Internal Tools",
"environment": "staging"
}
],
"expiring_secrets": [
{
"name": "stripe-api-key",
"expires_at": "2026-05-05T00:00:00Z",
"days_remaining": 9,
"type": "api_key",
"project_name": "Payment Service",
"environment": "production"
}
]
}
Pole odpovědi¶
| Pole | Typ | Popis |
|---|---|---|
generated_at |
string (ISO 8601) | Časové razítko generování tohoto náhledu |
total_certificates |
integer | Počet certifikátů expirujících v reportovacím okně |
total_secrets |
integer | Počet tajemství expirujících v reportovacím okně |
expiring_certificates |
pole | Seznam certifikátů expirujících v rámci předstihového okna |
expiring_secrets |
pole | Seznam tajemství expirujících v rámci předstihového okna |
Objekt expiring_certificates¶
| Pole | Typ | Popis |
|---|---|---|
common_name |
string | Common Name (CN) certifikátu |
expires_at |
string (ISO 8601) | Datum expirace certifikátu |
days_remaining |
integer | Počet dní do expirace v době generování náhledu |
issuer |
string | Název vydávající CA |
serial_number |
string | Sériové číslo certifikátu |
auto_renew |
boolean | Zda je pro certifikát nakonfigurováno automatické obnovení |
project_name |
string | Název projektu vlastnícího certifikát |
environment |
string | Prostředí certifikátu |
Objekt expiring_secrets¶
| Pole | Typ | Popis |
|---|---|---|
name |
string | Název klíče tajemství |
expires_at |
string (ISO 8601) | Datum expirace tajemství |
days_remaining |
integer | Počet dní do expirace v době generování náhledu |
type |
string | Typ tajemství (např. api_key, password, certificate) |
project_name |
string | Název projektu vlastnícího tajemství |
environment |
string | Prostředí tajemství |
Chybové odpovědi¶
| HTTP Status | Význam |
|---|---|
400 Bad Request |
Neplatné tělo požadavku — např. neplatný formát e-mailové adresy nebo více než 10 příjemců |
401 Unauthorized |
Chybějící nebo neplatný bearer token |
403 Forbidden |
Volající nemá v organizaci organizační ani globální roli s report:read/report:write (projektová role nestačí), nebo nemá globální roli pro /api/v1/reports/settings a /trigger |
404 Not Found |
Organizace neexistuje |