diff --git a/config/_default/menus/api.en.yaml b/config/_default/menus/api.en.yaml index 3d6c0db2752..2f2552cab70 100644 --- a/config/_default/menus/api.en.yaml +++ b/config/_default/menus/api.en.yaml @@ -12730,6 +12730,32 @@ menu: url: /api/latest/status-pages/ identifier: status-pages generated: true + - name: Import email subscriptions + url: '#import-email-subscriptions' + identifier: status-pages-import-email-subscriptions + parent: status-pages + generated: true + params: + versions: + - v2 + operationids: + - ImportEmailSubscriptions + unstable: + - v2 + order: 14 + - name: List email subscriptions + url: '#list-email-subscriptions' + identifier: status-pages-list-email-subscriptions + parent: status-pages + generated: true + params: + versions: + - v2 + operationids: + - ListEmailSubscriptions + unstable: + - v2 + order: 13 - name: Update degradation url: '#update-degradation' identifier: status-pages-update-degradation @@ -12874,6 +12900,19 @@ menu: - DeleteStatusPage unstable: [] order: 5 + - name: Create an internal email subscription + url: '#create-an-internal-email-subscription' + identifier: status-pages-create-an-internal-email-subscription + parent: status-pages + generated: true + params: + versions: + - v2 + operationids: + - CreateInternalEmailSubscription + unstable: + - v2 + order: 12 - name: List degradations url: '#list-degradations' identifier: status-pages-list-degradations diff --git a/content/en/api/v2/status-pages/examples.json b/content/en/api/v2/status-pages/examples.json index e54524183b3..27876b27ea8 100644 --- a/content/en/api/v2/status-pages/examples.json +++ b/content/en/api/v2/status-pages/examples.json @@ -330,6 +330,124 @@ "html": "" } }, + "CreateInternalEmailSubscription": { + "responses": { + "201": { + "json": { + "data": { + "attributes": { + "created_at": "2026-01-13T17:18:16.290086Z", + "email_address": "test+active@example.com", + "modified_at": "2026-01-13T17:18:16.290086Z", + "status": "active" + }, + "id": "19121f53-04ae-4913-a7fd-64bcc2f812c2", + "relationships": { + "status_page": { + "data": { + "id": "ed50804f-f823-4d2c-ba56-c998cbd0ae0a", + "type": "status_pages" + } + }, + "subscribed_components": { + "data": [ + { + "id": "00000000-0000-0000-0000-000000000000", + "type": "status_page_components" + } + ] + } + }, + "type": "email_subscriptions" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

Email subscription data from a response.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The email subscription attributes from a response.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

Timestamp when the subscription was created.

\n
\n \n
\n
\n
\n
\n
\n

email_address [required]

\n
\n

string

\n

The email address subscribed to the status page.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

Timestamp when the subscription was last modified.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Status of the email subscription. \nAllowed enum values: active,unconfirmed

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The email subscription ID.

\n
\n \n
\n
\n
\n
\n
\n

relationships [required]

\n
\n

object

\n

The email subscription relationships from a response.

\n
\n
\n
\n
\n
\n

status_page [required]

\n
\n

object

\n

Relationship to the status page.

\n
\n
\n
\n
\n
\n

data [required]

\n
\n

object

\n

Status page relationship data.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The status page ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Status pages resource type. \nAllowed enum values: status_pages

default: status_pages

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

subscribed_components [required]

\n
\n

object

\n

Relationship to subscribed components.

\n
\n
\n
\n
\n
\n

data [required]

\n
\n

[object]

\n

List of subscribed components.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The component ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Status page component resource type. \nAllowed enum values: status_page_components

default: status_page_components

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Status page email subscription resource type. \nAllowed enum values: email_subscriptions

default: email_subscriptions

\n
\n \n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": { + "attributes": { + "email_address": "test@example.com" + }, + "relationships": { + "subscribed_components": { + "data": [ + { + "id": "00000000-0000-0000-0000-000000000000", + "type": "status_page_components" + } + ] + } + }, + "type": "email_subscriptions" + } + }, + "json": { + "data": { + "attributes": { + "email_address": "test@example.com" + }, + "relationships": { + "subscribed_components": { + "data": [ + { + "id": "00000000-0000-0000-0000-000000000000", + "type": "status_page_components" + } + ] + } + }, + "type": "email_subscriptions" + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

object

\n

Email subscription data for a request.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The email subscription attributes for a request.

\n
\n
\n
\n
\n
\n

email_address [required]

\n
\n

string

\n

The email address to subscribe.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

relationships

\n
\n

object

\n

The email subscription relationships for a request.

\n
\n
\n
\n
\n
\n

subscribed_components

\n
\n

object

\n

Relationship to subscribed components.

\n
\n
\n
\n
\n
\n

data [required]

\n
\n

[object]

\n

List of subscribed components.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The component ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Status page component resource type. \nAllowed enum values: status_page_components

default: status_page_components

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Status page email subscription resource type. \nAllowed enum values: email_subscriptions

default: email_subscriptions

\n
\n \n
\n
\n
\n
" + } + }, "DeleteStatusPage": { "responses": { "429": { @@ -1294,5 +1412,257 @@ }, "html": "
\n
\n
\n
\n

data

\n
\n

object

\n
\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The supported attributes for updating a degradation.

\n
\n
\n
\n
\n
\n

components_affected

\n
\n

[object]

\n

The components affected by the degradation.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the component. Must be a component of type component.

\n
\n \n
\n
\n
\n
\n
\n

name

\n
\n

string

\n
\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

The status of the component. \nAllowed enum values: operational,degraded,partial_outage,major_outage

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

description

\n
\n

string

\n

The description of the degradation.

\n
\n \n
\n
\n
\n
\n
\n

status

\n
\n

enum

\n

The status of the degradation. \nAllowed enum values: investigating,identified,monitoring,resolved

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

The title of the degradation.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The ID of the degradation.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Degradations resource type. \nAllowed enum values: degradations

default: degradations

\n
\n \n
\n
\n
\n
" } + }, + "ListEmailSubscriptions": { + "responses": { + "200": { + "json": { + "data": [ + { + "attributes": { + "created_at": "2026-01-13T17:18:16.290086Z", + "email_address": "test+active@example.com", + "modified_at": "2026-01-13T17:18:16.290086Z", + "status": "active" + }, + "id": "19121f53-04ae-4913-a7fd-64bcc2f812c2", + "relationships": { + "status_page": { + "data": { + "id": "ed50804f-f823-4d2c-ba56-c998cbd0ae0a", + "type": "status_pages" + } + }, + "subscribed_components": { + "data": [ + { + "id": "00000000-0000-0000-0000-000000000000", + "type": "status_page_components" + } + ] + } + }, + "type": "email_subscriptions" + } + ], + "meta": { + "page": { + "first_offset": 0, + "last_offset": 0, + "limit": 1000, + "next_offset": null, + "offset": 0, + "prev_offset": null, + "total": 1, + "type": "offset_limit" + } + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

[object]

\n

List of email subscriptions.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The email subscription attributes from a response.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

Timestamp when the subscription was created.

\n
\n \n
\n
\n
\n
\n
\n

email_address [required]

\n
\n

string

\n

The email address subscribed to the status page.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

Timestamp when the subscription was last modified.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Status of the email subscription. \nAllowed enum values: active,unconfirmed

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The email subscription ID.

\n
\n \n
\n
\n
\n
\n
\n

relationships [required]

\n
\n

object

\n

The email subscription relationships from a response.

\n
\n
\n
\n
\n
\n

status_page [required]

\n
\n

object

\n

Relationship to the status page.

\n
\n
\n
\n
\n
\n

data [required]

\n
\n

object

\n

Status page relationship data.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The status page ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Status pages resource type. \nAllowed enum values: status_pages

default: status_pages

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

subscribed_components [required]

\n
\n

object

\n

Relationship to subscribed components.

\n
\n
\n
\n
\n
\n

data [required]

\n
\n

[object]

\n

List of subscribed components.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The component ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Status page component resource type. \nAllowed enum values: status_page_components

default: status_page_components

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Status page email subscription resource type. \nAllowed enum values: email_subscriptions

default: email_subscriptions

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta [required]

\n
\n

object

\n

Metadata for the list of email subscriptions.

\n
\n
\n
\n
\n
\n

page [required]

\n
\n

object

\n

Pagination metadata.

\n
\n
\n
\n
\n
\n

first_offset [required]

\n
\n

int64

\n

The offset of the first page.

\n
\n \n
\n
\n
\n
\n
\n

last_offset [required]

\n
\n

int64

\n

The offset of the last page.

\n
\n \n
\n
\n
\n
\n
\n

limit [required]

\n
\n

int64

\n

The maximum number of items per page.

\n
\n \n
\n
\n
\n
\n
\n

next_offset

\n
\n

int64

\n

The offset of the next page.

\n
\n \n
\n
\n
\n
\n
\n

offset [required]

\n
\n

int64

\n

The current offset.

\n
\n \n
\n
\n
\n
\n
\n

prev_offset

\n
\n

int64

\n

The offset of the previous page.

\n
\n \n
\n
\n
\n
\n
\n

total [required]

\n
\n

int64

\n

The total number of items.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

The pagination type.

\n
\n \n
\n
\n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "404": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": {}, + "json": {}, + "html": "" + } + }, + "ImportEmailSubscriptions": { + "responses": { + "201": { + "json": { + "data": [ + { + "attributes": { + "created_at": "2026-01-13T17:18:16.290086Z", + "email_address": "test+active@example.com", + "modified_at": "2026-01-13T17:18:16.290086Z", + "status": "active" + }, + "id": "19121f53-04ae-4913-a7fd-64bcc2f812c2", + "relationships": { + "status_page": { + "data": { + "id": "ed50804f-f823-4d2c-ba56-c998cbd0ae0a", + "type": "status_pages" + } + }, + "subscribed_components": { + "data": [ + { + "id": "00000000-0000-0000-0000-000000000000", + "type": "status_page_components" + } + ] + } + }, + "type": "email_subscriptions" + } + ], + "meta": { + "page": { + "first_offset": 0, + "last_offset": 0, + "limit": 1000, + "next_offset": null, + "offset": 0, + "prev_offset": null, + "total": 1, + "type": "offset_limit" + } + } + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

[object]

\n

List of email subscriptions.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The email subscription attributes from a response.

\n
\n
\n
\n
\n
\n

created_at [required]

\n
\n

date-time

\n

Timestamp when the subscription was created.

\n
\n \n
\n
\n
\n
\n
\n

email_address [required]

\n
\n

string

\n

The email address subscribed to the status page.

\n
\n \n
\n
\n
\n
\n
\n

modified_at [required]

\n
\n

date-time

\n

Timestamp when the subscription was last modified.

\n
\n \n
\n
\n
\n
\n
\n

status [required]

\n
\n

enum

\n

Status of the email subscription. \nAllowed enum values: active,unconfirmed

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The email subscription ID.

\n
\n \n
\n
\n
\n
\n
\n

relationships [required]

\n
\n

object

\n

The email subscription relationships from a response.

\n
\n
\n
\n
\n
\n

status_page [required]

\n
\n

object

\n

Relationship to the status page.

\n
\n
\n
\n
\n
\n

data [required]

\n
\n

object

\n

Status page relationship data.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The status page ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Status pages resource type. \nAllowed enum values: status_pages

default: status_pages

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n

subscribed_components [required]

\n
\n

object

\n

Relationship to subscribed components.

\n
\n
\n
\n
\n
\n

data [required]

\n
\n

[object]

\n

List of subscribed components.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The component ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Status page component resource type. \nAllowed enum values: status_page_components

default: status_page_components

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Status page email subscription resource type. \nAllowed enum values: email_subscriptions

default: email_subscriptions

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

meta [required]

\n
\n

object

\n

Metadata for the list of email subscriptions.

\n
\n
\n
\n
\n
\n

page [required]

\n
\n

object

\n

Pagination metadata.

\n
\n
\n
\n
\n
\n

first_offset [required]

\n
\n

int64

\n

The offset of the first page.

\n
\n \n
\n
\n
\n
\n
\n

last_offset [required]

\n
\n

int64

\n

The offset of the last page.

\n
\n \n
\n
\n
\n
\n
\n

limit [required]

\n
\n

int64

\n

The maximum number of items per page.

\n
\n \n
\n
\n
\n
\n
\n

next_offset

\n
\n

int64

\n

The offset of the next page.

\n
\n \n
\n
\n
\n
\n
\n

offset [required]

\n
\n

int64

\n

The current offset.

\n
\n \n
\n
\n
\n
\n
\n

prev_offset

\n
\n

int64

\n

The offset of the previous page.

\n
\n \n
\n
\n
\n
\n
\n

total [required]

\n
\n

int64

\n

The total number of items.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

string

\n

The pagination type.

\n
\n \n
\n
\n
\n
\n
\n
" + }, + "400": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "403": { + "json": { + "errors": [ + { + "detail": "Missing required attribute in body", + "meta": {}, + "source": { + "header": "Authorization", + "parameter": "limit", + "pointer": "/data/attributes/title" + }, + "status": "400", + "title": "Bad Request" + } + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[object]

\n

A list of errors.

\n
\n
\n
\n
\n
\n

detail

\n
\n

string

\n

A human-readable explanation specific to this occurrence of the error.

\n
\n \n
\n
\n
\n
\n
\n

meta

\n
\n

object

\n

Non-standard meta-information about the error

\n
\n \n
\n
\n
\n
\n
\n

source

\n
\n

object

\n

References to the source of the error.

\n
\n
\n
\n
\n
\n

header

\n
\n

string

\n

A string indicating the name of a single request header which caused the error.

\n
\n \n
\n
\n
\n
\n
\n

parameter

\n
\n

string

\n

A string indicating which URI query parameter caused the error.

\n
\n \n
\n
\n
\n
\n
\n

pointer

\n
\n

string

\n

A JSON pointer to the value in the request document that caused the error.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

status

\n
\n

string

\n

Status code of the response.

\n
\n \n
\n
\n
\n
\n
\n

title

\n
\n

string

\n

Short human-readable summary of the error.

\n
\n \n
\n
\n
\n
" + }, + "429": { + "json": { + "errors": [ + "Bad Request" + ] + }, + "html": "
\n
\n
\n
\n

errors [required]

\n
\n

[string]

\n

A list of errors.

\n
\n \n
\n
" + } + }, + "request": { + "json_curl": { + "data": [ + { + "attributes": { + "email_address": "test@example.com" + }, + "relationships": { + "subscribed_components": { + "data": [ + { + "id": "00000000-0000-0000-0000-000000000000", + "type": "status_page_components" + } + ] + } + }, + "type": "email_subscriptions" + } + ] + }, + "json": { + "data": [ + { + "attributes": { + "email_address": "test@example.com" + }, + "relationships": { + "subscribed_components": { + "data": [ + { + "id": "00000000-0000-0000-0000-000000000000", + "type": "status_page_components" + } + ] + } + }, + "type": "email_subscriptions" + } + ] + }, + "html": "
\n
\n
\n
\n

data [required]

\n
\n

[object]

\n

List of email subscriptions to import.

\n
\n
\n
\n
\n
\n

attributes [required]

\n
\n

object

\n

The email subscription attributes for a request.

\n
\n
\n
\n
\n
\n

email_address [required]

\n
\n

string

\n

The email address to subscribe.

\n
\n \n
\n
\n
\n
\n
\n
\n
\n

relationships

\n
\n

object

\n

The email subscription relationships for a request.

\n
\n
\n
\n
\n
\n

subscribed_components

\n
\n

object

\n

Relationship to subscribed components.

\n
\n
\n
\n
\n
\n

data [required]

\n
\n

[object]

\n

List of subscribed components.

\n
\n
\n
\n
\n
\n

id [required]

\n
\n

uuid

\n

The component ID.

\n
\n \n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Status page component resource type. \nAllowed enum values: status_page_components

default: status_page_components

\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

type [required]

\n
\n

enum

\n

Status page email subscription resource type. \nAllowed enum values: email_subscriptions

default: email_subscriptions

\n
\n \n
\n
\n
\n
" + } } } \ No newline at end of file diff --git a/data/api/v2/full_spec.yaml b/data/api/v2/full_spec.yaml index aa9bfd12786..e6d113c3906 100644 --- a/data/api/v2/full_spec.yaml +++ b/data/api/v2/full_spec.yaml @@ -467,6 +467,13 @@ components: required: false schema: $ref: '#/components/schemas/RelationType' + FilterStatusQueryParameter: + description: Filter subscriptions by status. + in: query + name: filter[status] + required: false + schema: + $ref: '#/components/schemas/StatusPageEmailSubscriptionStatus' FromTimestamp: description: The starting timestamp for the SLO status query in epoch seconds. in: query @@ -844,6 +851,26 @@ components: example: f9ec96b0-8c8a-4b0a-9b0a-1b2c3d4e5f6a format: uuid type: string + PageIDPathParameter: + description: The ID of the status page. + in: path + name: page_id + required: true + schema: + example: ed50804f-f823-4d2c-ba56-c998cbd0ae0a + format: uuid + type: string + PageLimitQueryParameter: + description: The maximum number of items to return per page. + in: query + name: page[limit] + required: false + schema: + default: 1000 + example: 1000 + format: int64 + maximum: 1000 + type: integer PageNumber: description: Specific page number to return. in: query @@ -864,6 +891,16 @@ components: example: 0 format: int64 type: integer + PageOffsetQueryParameter: + description: The offset for pagination. + in: query + name: page[offset] + required: false + schema: + default: 0 + example: 0 + format: int64 + type: integer PageSize: description: Size for a given page. The maximum allowed value is 100. in: query @@ -1138,6 +1175,26 @@ components: schema: example: 00000000-0000-0000-0000-000000000000 type: string + SortQueryParameter: + description: Sort field for the list of subscriptions. Prefix with '-' for descending + order. + in: query + name: sort + required: false + schema: + default: created_at + enum: + - created_at + - -created_at + - modified_at + - -modified_at + example: created_at + type: string + x-enum-varnames: + - CREATED_AT + - NOT_CREATED_AT + - MODIFIED_AT + - NOT_MODIFIED_AT SpansMetricIDParameter: description: The name of the span-based metric. in: path @@ -60857,6 +60914,15 @@ components: - type - id type: object + StatusPageComponentType: + default: status_page_components + description: Status page component resource type. + enum: + - status_page_components + example: status_page_components + type: string + x-enum-varnames: + - STATUS_PAGE_COMPONENTS StatusPageData: properties: attributes: @@ -61029,6 +61095,258 @@ components: type: string x-enum-varnames: - STATUS_PAGES + StatusPageEmailSubscriptionRequest: + description: Request to create an email subscription. + properties: + data: + $ref: '#/components/schemas/StatusPageEmailSubscriptionRequestData' + required: + - data + type: object + StatusPageEmailSubscriptionRequestAttributes: + description: The email subscription attributes for a request. + properties: + email_address: + description: The email address to subscribe. + example: test@example.com + type: string + required: + - email_address + type: object + StatusPageEmailSubscriptionRequestData: + description: Email subscription data for a request. + properties: + attributes: + $ref: '#/components/schemas/StatusPageEmailSubscriptionRequestAttributes' + relationships: + $ref: '#/components/schemas/StatusPageEmailSubscriptionRequestRelationships' + type: + $ref: '#/components/schemas/StatusPageEmailSubscriptionType' + required: + - type + - attributes + type: object + StatusPageEmailSubscriptionRequestRelationships: + description: The email subscription relationships for a request. + properties: + subscribed_components: + $ref: '#/components/schemas/StatusPageRelationshipSubscribedComponents' + type: object + StatusPageEmailSubscriptionResponse: + description: Response containing a single email subscription. + properties: + data: + $ref: '#/components/schemas/StatusPageEmailSubscriptionResponseData' + required: + - data + type: object + StatusPageEmailSubscriptionResponseAttributes: + description: The email subscription attributes from a response. + properties: + created_at: + description: Timestamp when the subscription was created. + example: '2026-01-13T17:18:16.290086Z' + format: date-time + type: string + email_address: + description: The email address subscribed to the status page. + example: test+active@example.com + type: string + modified_at: + description: Timestamp when the subscription was last modified. + example: '2026-01-13T17:18:16.290086Z' + format: date-time + type: string + status: + $ref: '#/components/schemas/StatusPageEmailSubscriptionStatus' + required: + - email_address + - status + - created_at + - modified_at + type: object + StatusPageEmailSubscriptionResponseData: + description: Email subscription data from a response. + properties: + attributes: + $ref: '#/components/schemas/StatusPageEmailSubscriptionResponseAttributes' + id: + description: The email subscription ID. + example: 19121f53-04ae-4913-a7fd-64bcc2f812c2 + format: uuid + type: string + relationships: + $ref: '#/components/schemas/StatusPageEmailSubscriptionResponseRelationships' + type: + $ref: '#/components/schemas/StatusPageEmailSubscriptionType' + required: + - id + - type + - attributes + - relationships + type: object + StatusPageEmailSubscriptionResponseRelationships: + description: The email subscription relationships from a response. + properties: + status_page: + $ref: '#/components/schemas/StatusPageRelationshipStatusPage' + subscribed_components: + $ref: '#/components/schemas/StatusPageRelationshipSubscribedComponents' + required: + - status_page + - subscribed_components + type: object + StatusPageEmailSubscriptionStatus: + description: Status of the email subscription. + enum: + - active + - unconfirmed + example: active + type: string + x-enum-varnames: + - ACTIVE + - UNCONFIRMED + StatusPageEmailSubscriptionType: + default: email_subscriptions + description: Status page email subscription resource type. + enum: + - email_subscriptions + example: email_subscriptions + type: string + x-enum-varnames: + - EMAIL_SUBSCRIPTIONS + StatusPageEmailSubscriptionsRequest: + description: Request to import multiple email subscriptions. + properties: + data: + description: List of email subscriptions to import. + items: + $ref: '#/components/schemas/StatusPageEmailSubscriptionRequestData' + type: array + required: + - data + type: object + StatusPageEmailSubscriptionsResponse: + description: Response containing a list of email subscriptions. + properties: + data: + description: List of email subscriptions. + items: + $ref: '#/components/schemas/StatusPageEmailSubscriptionResponseData' + type: array + meta: + $ref: '#/components/schemas/StatusPageEmailSubscriptionsResponseMeta' + required: + - data + - meta + type: object + StatusPageEmailSubscriptionsResponseMeta: + description: Metadata for the list of email subscriptions. + properties: + page: + $ref: '#/components/schemas/StatusPageEmailSubscriptionsResponseMetaPage' + required: + - page + type: object + StatusPageEmailSubscriptionsResponseMetaPage: + description: Pagination metadata. + properties: + first_offset: + description: The offset of the first page. + example: 0 + format: int64 + type: integer + last_offset: + description: The offset of the last page. + example: 0 + format: int64 + type: integer + limit: + description: The maximum number of items per page. + example: 1000 + format: int64 + type: integer + next_offset: + description: The offset of the next page. + example: null + format: int64 + nullable: true + type: integer + offset: + description: The current offset. + example: 0 + format: int64 + type: integer + prev_offset: + description: The offset of the previous page. + example: null + format: int64 + nullable: true + type: integer + total: + description: The total number of items. + example: 1 + format: int64 + type: integer + type: + description: The pagination type. + example: offset_limit + type: string + required: + - type + - offset + - limit + - total + - first_offset + - last_offset + type: object + StatusPageRelationshipStatusPage: + description: Relationship to the status page. + properties: + data: + $ref: '#/components/schemas/StatusPageRelationshipStatusPageData' + required: + - data + type: object + StatusPageRelationshipStatusPageData: + description: Status page relationship data. + properties: + id: + description: The status page ID. + example: ed50804f-f823-4d2c-ba56-c998cbd0ae0a + format: uuid + type: string + type: + $ref: '#/components/schemas/StatusPageDataType' + required: + - id + - type + type: object + StatusPageRelationshipSubscribedComponentData: + description: Subscribed component relationship data. + properties: + id: + description: The component ID. + example: 00000000-0000-0000-0000-000000000000 + format: uuid + type: string + type: + $ref: '#/components/schemas/StatusPageComponentType' + required: + - id + - type + type: object + StatusPageRelationshipSubscribedComponents: + description: Relationship to subscribed components. + properties: + data: + description: List of subscribed components. + items: + $ref: '#/components/schemas/StatusPageRelationshipSubscribedComponentData' + type: array + required: + - data + type: object StatusPagesComponent: properties: data: @@ -100515,6 +100833,49 @@ paths: operator: AND permissions: - status_pages_settings_read + /api/v2/statuspages/internal/{page_id}/subscriptions/email: + post: + description: Creates an internal email subscription for a status page. + operationId: CreateInternalEmailSubscription + parameters: + - $ref: '#/components/parameters/PageIDPathParameter' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StatusPageEmailSubscriptionRequest' + required: true + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/StatusPageEmailSubscriptionResponse' + description: Created + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Forbidden + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Create an internal email subscription + tags: + - Status Pages + x-menu-order: 12 + x-unstable: '**Note**: This endpoint is in preview and is subject to change. + + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' /api/v2/statuspages/{page_id}: delete: description: Deletes a status page by its ID. @@ -101055,6 +101416,100 @@ paths: operator: AND permissions: - status_pages_incident_write + /api/v2/statuspages/{page_id}/subscriptions/email: + get: + description: Returns a list of email subscriptions for a status page. Supports + filtering by status and pagination. + operationId: ListEmailSubscriptions + parameters: + - $ref: '#/components/parameters/PageIDPathParameter' + - $ref: '#/components/parameters/FilterStatusQueryParameter' + - $ref: '#/components/parameters/PageOffsetQueryParameter' + - $ref: '#/components/parameters/PageLimitQueryParameter' + - $ref: '#/components/parameters/SortQueryParameter' + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/StatusPageEmailSubscriptionsResponse' + description: OK + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Forbidden + '404': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Not Found + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: List email subscriptions + tags: + - Status Pages + x-menu-order: 13 + x-unstable: '**Note**: This endpoint is in preview and is subject to change. + + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' + /api/v2/statuspages/{page_id}/subscriptions/email/import: + post: + description: Imports multiple email subscriptions for a status page. Accepts + up to 1000 subscriptions at once. + operationId: ImportEmailSubscriptions + parameters: + - $ref: '#/components/parameters/PageIDPathParameter' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/StatusPageEmailSubscriptionsRequest' + required: true + responses: + '201': + content: + application/json: + schema: + $ref: '#/components/schemas/StatusPageEmailSubscriptionsResponse' + description: Created + '204': + description: No Content + '400': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Bad Request + '403': + content: + application/json: + schema: + $ref: '#/components/schemas/JSONAPIErrorResponse' + description: Forbidden + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Import email subscriptions + tags: + - Status Pages + x-menu-order: 14 + x-unstable: '**Note**: This endpoint is in preview and is subject to change. + + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' /api/v2/synthetics/settings/on_demand_concurrency_cap: get: description: Get the on-demand concurrency cap. diff --git a/data/api/v2/translate_actions.json b/data/api/v2/translate_actions.json index 396f33cbc4d..3d670c43780 100644 --- a/data/api/v2/translate_actions.json +++ b/data/api/v2/translate_actions.json @@ -3652,6 +3652,12 @@ "description": "Lists all degradations for the organization. Optionally filter by status and page.", "summary": "List degradations" }, + "CreateInternalEmailSubscription": { + "description": "Creates an internal email subscription for a status page.", + "summary": "Create an internal email subscription", + "request_description": "", + "request_schema_description": "Request to create an email subscription." + }, "DeleteStatusPage": { "description": "Deletes a status page by its ID.", "summary": "Delete status page" @@ -3710,6 +3716,16 @@ "request_description": "", "request_schema_description": "" }, + "ListEmailSubscriptions": { + "description": "Returns a list of email subscriptions for a status page. Supports filtering by status and pagination.", + "summary": "List email subscriptions" + }, + "ImportEmailSubscriptions": { + "description": "Imports multiple email subscriptions for a status page. Accepts up to 1000 subscriptions at once.", + "summary": "Import email subscriptions", + "request_description": "", + "request_schema_description": "Request to import multiple email subscriptions." + }, "GetOnDemandConcurrencyCap": { "description": "Get the on-demand concurrency cap.", "summary": "Get the on-demand concurrency cap"