Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
af118d3
Merge pull request #13181 from linode/staging
dwiley-akamai Dec 9, 2025
a9cd890
test: Temporarily skip DBaaS update tests (#13185)
jdamore-linode Dec 9, 2025
ce761d2
feat: [UIE-9785] - typo in NodeBalancer Settings tooltip (#13186)
aaleksee-akamai Dec 10, 2025
ef127cb
upcoming: [UIE-9793] - UI/UX enhancements and fixes for Rule Sets & P…
pmakode-akamai Dec 11, 2025
39c8d72
change: [UIE-9701] - Add Back Navigation functionality in Drawer & In…
harsh-akamai Dec 11, 2025
1414925
upcoming: [DI-28500] - Enable the Alerts Notification Channel Tab (#1…
santoshp210-akamai Dec 11, 2025
91913c9
test: [UIE-9804] - Fix e2e tests impacted by Generational Plans relea…
abailly-akamai Dec 12, 2025
b49985e
fix: [UIE-9799] - Ensure browser history integrity when redirecting i…
abailly-akamai Dec 12, 2025
aab5b22
feat: [OCA-1601] - Adds Elastic Stack and Weaviate Marketplace Apps (…
n0vabyte Dec 12, 2025
32e9d71
fix: [DI-28760] - Add type safety for dependent filter ref's usage (#…
ankita-akamai Dec 15, 2025
9263baf
feat: [UIE-9794] - IAM: Enable account_viewer to access users table (…
aaleksee-akamai Dec 15, 2025
870b3cb
remove all instances of `update_user` (#13198)
abailly-akamai Dec 15, 2025
bb76191
change: [DPS-35856] Logs: limit access to "lke_audit_logs" type based…
mduda-akamai Dec 15, 2025
dc4e474
fix: [UIE-9523] - Show edit RDNS button for VPC NAT IPv4 address row …
grevanak-akamai Dec 15, 2025
7515c1c
fix: [UIE-9795], [UIE-9796], [UIE-9797] - Enable account_viewer to ac…
mpolotsk-akamai Dec 15, 2025
9533b08
fix: [UIE-9840] - IAM: Remove Role filter (already assigned roles) in…
abailly-akamai Dec 15, 2025
b2ffffc
new: STORIF-181 - Bucket metrics page created. (#13161)
dchyrva-akamai Dec 15, 2025
738f57d
upcoming: [DI-28502] - Alerts Notification Channels Listing (#13193)
santoshp210-akamai Dec 15, 2025
823b828
feat: [UIE-9685] - Proactive IAM e2e gating (#13120)
abailly-akamai Dec 15, 2025
2fa8d17
Merge pull request #13207 from linode/staging
abailly-akamai Dec 16, 2025
617e933
merge master back
abailly-akamai Dec 16, 2025
3e1af13
change: [DPS-35843] - Create destination, validate if host and bucket…
kagora-akamai Dec 17, 2025
f8584b3
upcoming: [UIE-9780] - Add new API endpoints, types and queries for R…
tanushree-akamai Dec 17, 2025
f399c85
feat: [UIE-9798] - IAM: Enable account_viewer to access roles table (…
aaleksee-akamai Dec 17, 2025
c3cbed8
test: [DBAAS1-1386] - Fix cypress test failing for cds select compone…
stayal712 Dec 17, 2025
807c7c1
test[DI-28502]:- Notification channel Management - Listing Page (#13204)
agorthi-akamai Dec 18, 2025
96beaf5
feat: [UIE-9852] - IAM: disable input based on permission (#13206)
aaleksee-akamai Dec 18, 2025
c05fffb
refactor: [UIE-9856] - Clean up hardcoded entity name in firewall add…
grevanak-akamai Dec 18, 2025
ceee986
upcoming: [DI-28662] - Notification Channel Listing Action Items (#13…
santoshp210-akamai Dec 18, 2025
a4b4e69
upcoming: [UIE-9378] - DBaaS - Display connection pool section and ta…
smans-akamai Dec 18, 2025
fdf6af4
fix: [UIE-9853], [UIE-9855] - IAM: fix Roles Table layout shifts, dis…
mpolotsk-akamai Dec 18, 2025
677db9c
fix: [UIE-9840] - IAM: Remove Role filter (already assigned roles) in…
abailly-akamai Dec 19, 2025
7c026eb
Fix:[DI-29006] - Alignment for region filter in lke (#13218)
ankita-akamai Dec 22, 2025
930bc9f
upcoming: [DI-28773] - Support to select system channel based on serv…
venkymano-akamai Dec 23, 2025
5c05c4a
Added: [DI-28776] - Add humanization support for selected units in Cl…
venkymano-akamai Dec 23, 2025
3594035
test: DI-28774 - Add widget level dimension filter tests (#13210)
shnagend-akamai Dec 23, 2025
218ab5e
upcoming: [UIE-9380] - Service URI PG Bouncer Connection Details Sect…
hana-akamai Dec 23, 2025
8c8d916
upcoming: [DI-28503] - Add filter components for notification channel…
ankita-akamai Dec 24, 2025
63863f1
Added: [DI-28776] - Use customized humanize method for cloudpulse met…
venkymano-akamai Dec 24, 2025
0ba819d
upcoming: [DI-28682] - UX enhancements of CloudPulseDateTimeRangePick…
venkymano-akamai Dec 24, 2025
e8035fa
upcoming: [DI-28503] - Add create notification channel page (#13225)
ankita-akamai Dec 30, 2025
8e53554
fix: [UIE-9531] - Exclude newly added unsaved rulesets from dropdown …
pmakode-akamai Dec 30, 2025
cb8fb31
upcoming: [DI-29080] - Notification Channel Types (#13227)
santoshp210-akamai Jan 1, 2026
1ba4648
Added: [DI-29070] - New feature marker in navigation menu and primary…
venkymano-akamai Jan 1, 2026
6dce6cc
change: [DI-29069] - Move to v4 endpoint instead of v4beta for metric…
venkymano-akamai Jan 5, 2026
5513dbd
fix: [UIE-9891] - Fix logic to remove linode interface from firewall'…
grevanak-akamai Jan 5, 2026
ceb6de8
change: [UIE-9910] - Allow line breaks in Support Tickets markdown (#…
abailly-akamai Jan 5, 2026
73c91d1
fix: [UIE-9833] IAM Assigned Entities - Increase MAX_ITEMS_TO_RENDER …
abailly-akamai Jan 5, 2026
47c8468
upcoming: [M3-10212] – Add VPC IPv6 support in Linode Add/Edit Config…
dwiley-akamai Jan 5, 2026
b710600
upcoming: [UIE-9811] - Add API endpoints and mocks for `Marketplace` …
harsh-akamai Jan 6, 2026
a3af683
upcoming: [DI-28750] - Add edit feature for notification channels (#1…
ankita-akamai Jan 6, 2026
426427c
feat: [UIE-9805] - Extract EUUID from /profile header and send to Ado…
tanushree-akamai Jan 6, 2026
5d1d250
upcoming: [UIE-9813] - Implement routing for Cloud Manager Marketplac…
harsh-akamai Jan 6, 2026
594f30d
upcoming: [M3-10708] - Display maintenance type and config in linode_…
jaalah-akamai Jan 6, 2026
1991b9c
tests: Temporarily skip timerange verification tests (#13244)
jdamore-linode Jan 6, 2026
94c5c04
upcoming: [UIE-9430] - Delete Database Connection Pool dialog (#13236)
hana-akamai Jan 6, 2026
b3c4612
fix: [UIE-9894] - IAM: enable own email editing (#13214)
mpolotsk-akamai Jan 7, 2026
9581c1c
change: [UIE-9863] - UX/UI changes in Linode Create flow - Networking…
grevanak-akamai Jan 7, 2026
1123c79
chore(deps-dev): Bump storybook from 9.0.12 to 9.1.17 (#13213)
dependabot[bot] Jan 7, 2026
ea7e3c8
upcoming: [DI-29071] - Use simpler query approach in notification rec…
ankita-akamai Jan 7, 2026
9079bc9
Cloud version 1.157.0, API v4 version 0.155.0, Validation version 0.8…
abailly-akamai Jan 7, 2026
de16401
Feature/support user channels (#13254)
santoshp210-akamai Jan 7, 2026
5d37384
changelog update
abailly-akamai Jan 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions packages/api-v4/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,27 @@
## [2026-01-12] - v0.155.0


### Added:

- `Akamai Cloud Pulse Logs LKE-E Audit ` to the `AccountCapability` type ([#13171](https://github.com/linode/manager/pull/13171))

### Changed:

- Use v4beta endpoints for /events and /events/<eventId> ([#13084](https://github.com/linode/manager/pull/13084))
- Renamed updated_at, created_at to updated,created in NotificationChannelBase interface ([#13193](https://github.com/linode/manager/pull/13193))
- Updated getDatabaseConnectionPools signature to accept params for pagination ([#13195](https://github.com/linode/manager/pull/13195))
- AlertNotificationType from `custom | default` to `user | system` ([#13203](https://github.com/linode/manager/pull/13203))
- ACLP-Alerting: Notification Channel types to support API changes and backward compatibility ([#13227](https://github.com/linode/manager/pull/13227))
- Move to `v4 endpoint` instead of v4beta for `CloudPulse metrics` api calls ([#13239](https://github.com/linode/manager/pull/13239))

### Upcoming Features:

- Add new API endpoints and types for Resource Locking feature(RESPROT2) ([#13187](https://github.com/linode/manager/pull/13187))
- Change range property of IPv6SLAAC to be optional ([#13209](https://github.com/linode/manager/pull/13209))
- Add API endpoints for `Marketplace` ([#13215](https://github.com/linode/manager/pull/13215))
- CloudPulse-Alerts: Add `CreateNotificationChannelPayload` in types.ts and add request function `createNotificationChannel` in alerts.ts ([#13225](https://github.com/linode/manager/pull/13225))
- CloudPulse-Alerts: Add type for edition of notification channel payload ([#13235](https://github.com/linode/manager/pull/13235))

## [2025-12-16] - v0.154.1


Expand Down
2 changes: 1 addition & 1 deletion packages/api-v4/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@linode/api-v4",
"version": "0.154.1",
"version": "0.155.0",
"homepage": "https://github.com/linode/manager/tree/develop/packages/api-v4",
"bugs": {
"url": "https://github.com/linode/manager/issues"
Expand Down
6 changes: 3 additions & 3 deletions packages/api-v4/src/account/events.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { API_ROOT } from '../constants';
import { API_ROOT, BETA_API_ROOT } from '../constants';
import Request, { setMethod, setParams, setURL, setXFilter } from '../request';

import type { Filter, Params, ResourcePage } from '../types';
Expand All @@ -12,7 +12,7 @@ import type { Event, Notification } from './types';
*/
export const getEvents = (params: Params = {}, filter: Filter = {}) =>
Request<ResourcePage<Event>>(
setURL(`${API_ROOT}/account/events`),
setURL(`${BETA_API_ROOT}/account/events`),
setMethod('GET'),
setXFilter(filter),
setParams(params),
Expand All @@ -26,7 +26,7 @@ export const getEvents = (params: Params = {}, filter: Filter = {}) =>
*/
export const getEvent = (eventId: number) =>
Request<Event>(
setURL(`${API_ROOT}/account/events/${encodeURIComponent(eventId)}`),
setURL(`${BETA_API_ROOT}/account/events/${encodeURIComponent(eventId)}`),
setMethod('GET'),
);

Expand Down
33 changes: 33 additions & 0 deletions packages/api-v4/src/cloudpulse/alerts.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import {
createAlertDefinitionSchema,
createNotificationChannelPayloadSchema,
editAlertDefinitionSchema,
editNotificationChannelPayloadSchema,
} from '@linode/validation';

import { BETA_API_ROOT as API_ROOT } from '../constants';
Expand All @@ -17,7 +19,9 @@ import type {
Alert,
CloudPulseAlertsPayload,
CreateAlertDefinitionPayload,
CreateNotificationChannelPayload,
EditAlertDefinitionPayload,
EditNotificationChannelPayload,
NotificationChannel,
} from './types';

Expand Down Expand Up @@ -139,3 +143,32 @@ export const updateServiceAlerts = (
setMethod('PUT'),
setData(payload),
);

export const createNotificationChannel = (
data: CreateNotificationChannelPayload,
) =>
Request<NotificationChannel>(
setURL(`${API_ROOT}/monitor/alert-channels`),
setMethod('POST'),
setData(data, createNotificationChannelPayloadSchema),
);

export const getNotificationChannelById = (channelId: number) =>
Request<NotificationChannel>(
setURL(
`${API_ROOT}/monitor/alert-channels/${encodeURIComponent(channelId)}`,
),
setMethod('GET'),
);

export const updateNotificationChannel = (
channelId: number,
data: EditNotificationChannelPayload,
) =>
Request<NotificationChannel>(
setURL(
`${API_ROOT}/monitor/alert-channels/${encodeURIComponent(channelId)}`,
),
setMethod('PUT'),
setData(data, editNotificationChannelPayloadSchema),
);
2 changes: 1 addition & 1 deletion packages/api-v4/src/cloudpulse/dashboards.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { BETA_API_ROOT as API_ROOT } from 'src/constants';
import { API_ROOT } from 'src/constants';

import Request, { setMethod, setURL } from '../request';

Expand Down
2 changes: 1 addition & 1 deletion packages/api-v4/src/cloudpulse/services.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { BETA_API_ROOT as API_ROOT } from 'src/constants';
import { API_ROOT } from 'src/constants';

import Request, {
setData,
Expand Down
100 changes: 89 additions & 11 deletions packages/api-v4/src/cloudpulse/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,16 @@ export type MetricUnitType =
| 'second';
export type NotificationStatus = 'Disabled' | 'Enabled';
export type ChannelType = 'email' | 'pagerduty' | 'slack' | 'webhook';
export type AlertNotificationType = 'custom' | 'default';
export type AlertNotificationType = 'system' | 'user';
type AlertNotificationEmail = 'email';
type AlertNotificationSlack = 'slack';
type AlertNotificationPagerDuty = 'pagerduty';
type AlertNotificationWebHook = 'webhook';
type EmailRecipientType =
| 'admin_users'
| 'read_users'
| 'read_write_users'
| 'user';
export interface Dashboard {
created: string;
group_by?: string[];
Expand Down Expand Up @@ -277,50 +282,68 @@ export interface Alert {
updated_by: string;
}

interface NotificationChannelAlerts {
id: number;
label: string;
interface NotificationChannelAlertInfo {
alert_count: number;
type: 'alerts-definitions';
url: string;
}
interface NotificationChannelBase {
alerts: NotificationChannelAlerts[];
alerts: NotificationChannelAlertInfo;
channel_type: ChannelType;
created_at: string;
created: string;
created_by: string;
id: number;
label: string;
status: NotificationStatus;
type: AlertNotificationType;
updated_at: string;
updated: string;
updated_by: string;
}

interface NotificationChannelEmail extends NotificationChannelBase {
channel_type: AlertNotificationEmail;
content: {
content?: {
email: {
email_addresses: string[];
message: string;
subject: string;
};
};
details?: {
email: {
recipient_type: EmailRecipientType;
usernames: string[];
};
};
}

interface NotificationChannelSlack extends NotificationChannelBase {
channel_type: AlertNotificationSlack;
content: {
content?: {
slack: {
message: string;
slack_channel: string;
slack_webhook_url: string;
};
};
details?: {
slack: {
slack_channel: string;
slack_webhook_url: string;
};
};
}

interface NotificationChannelPagerDuty extends NotificationChannelBase {
channel_type: AlertNotificationPagerDuty;
content: {
content?: {
pagerduty: {
attributes: string[];
description: string;
service_api_key: string;
};
};
details?: {
pagerduty: {
attributes: string[];
description: string;
Expand All @@ -330,12 +353,27 @@ interface NotificationChannelPagerDuty extends NotificationChannelBase {
}
interface NotificationChannelWebHook extends NotificationChannelBase {
channel_type: AlertNotificationWebHook;
content: {
content?: {
webhook: {
http_headers: {
header_key: string;
header_value: string;
}[];
webhook_url: string;
};
};
details?: {
webhook: {
alert_body: {
body: string;
subject: string;
};
http_headers: {
header_key: string;
header_value: string;
}[];
method: 'GET' | 'POST' | 'PUT';
request_body: string;
webhook_url: string;
};
};
Expand Down Expand Up @@ -411,3 +449,43 @@ export interface CloudPulseAlertsPayload {
*/
user_alerts?: number[];
}

interface EmailDetail {
email: {
usernames: string[];
};
}

export interface CreateNotificationChannelPayload {
/**
* The type of channel to create.
*/
channel_type: ChannelType;
/**
* The details of the channel to create.
*/
details: EmailDetail;
/**
* The label of the channel to create.
*/
label: string;
}

export interface EditNotificationChannelPayload {
/**
* The details of the channel to edit.
*/
details: EmailDetail;
/**
* The label of the channel to edit.
*/
label: string;
}

export interface EditNotificationChannelPayloadWithId
extends EditNotificationChannelPayload {
/**
* The ID of the channel to edit.
*/
channelId: number;
}
6 changes: 5 additions & 1 deletion packages/api-v4/src/databases/databases.ts
Original file line number Diff line number Diff line change
Expand Up @@ -371,12 +371,16 @@ export const getDatabaseEngineConfig = (engine: Engine) =>
/**
* Get a paginated list of connection pools for a database
*/
export const getDatabaseConnectionPools = (databaseID: number) =>
export const getDatabaseConnectionPools = (
databaseID: number,
params?: Params,
) =>
Request<Page<ConnectionPool>>(
setURL(
`${API_ROOT}/databases/postgresql/instances/${encodeURIComponent(databaseID)}/connection-pools`,
),
setMethod('GET'),
setParams(params),
);

/**
Expand Down
4 changes: 4 additions & 0 deletions packages/api-v4/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,14 @@ export * from './kubernetes';

export * from './linodes';

export * from './locks';

export * from './longview';

export * from './managed';

export * from './marketplace';

export * from './netloadbalancers';

export * from './network-transfer';
Expand Down
2 changes: 1 addition & 1 deletion packages/api-v4/src/linodes/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ export interface ConfigInterfaceIPv4 {

export interface IPv6SLAAC {
address?: string;
range: string;
range?: string;
}

// The legacy interface type - for Configuration Profile Interfaces
Expand Down
3 changes: 3 additions & 0 deletions packages/api-v4/src/locks/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export * from './locks';

export * from './types';
Loading