feat: Cloudformation + RDS

This commit is contained in:
Zakaria
2026-09-30 17:43:42 -04:00
parent 548a15d7ec
commit 7764ea0dc1
411 changed files with 10182 additions and 1063 deletions
-29
View File
@@ -1,5 +1,3 @@
import { emitApiRequest, type CloudProvider } from "@/telemetry";
export type HttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
export interface HttpClientConfig {
@@ -9,11 +7,6 @@ export interface HttpClientConfig {
timeout?: number;
}
export interface RequestTelemetry {
provider?: CloudProvider;
service?: string;
}
export type EndpointRegistry = Map<string, EndpointDefinition>;
export interface RequestOptions<TBody = unknown>
@@ -24,7 +17,6 @@ export interface RequestOptions<TBody = unknown>
cache?: RequestCache;
timeout?: number;
baseUrlOverride?: string;
telemetry?: RequestTelemetry;
}
export interface HttpResponse<TData> {
@@ -127,7 +119,6 @@ export type EndpointDefinition = {
method: HttpMethod;
defaults?: Partial<EndpointDefaults>;
baseUrlOverride?: string;
telemetry?: RequestTelemetry;
};
export class HttpClient {
@@ -159,7 +150,6 @@ export class HttpClient {
endpoint: string,
options: RequestOptions<TBody> = {},
): Promise<HttpResponse<TResponse>> {
const started = performance.now();
const {
params,
body,
@@ -167,11 +157,9 @@ export class HttpClient {
timeout,
cache,
baseUrlOverride,
telemetry,
...restOptions
} = options;
let finalUrl = endpoint;
let statusCode = 0;
try {
const base = baseUrlOverride ?? this.config.baseUrl ?? "";
@@ -210,7 +198,6 @@ export class HttpClient {
init,
timeout ?? this.config.timeout,
);
statusCode = response.status;
for (const interceptor of this.responseInterceptors) {
response = await interceptor(response);
@@ -228,18 +215,6 @@ export class HttpClient {
};
} catch (error) {
throw this.normalizeError(error, finalUrl, timeout ?? this.config.timeout);
} finally {
if (telemetry?.service && statusCode > 0) {
emitApiRequest({
provider: telemetry.provider ?? "aws",
service: telemetry.service,
method,
path: endpoint,
statusCode,
latencyMs: Math.round(performance.now() - started),
timestamp: Date.now(),
});
}
}
}
@@ -262,10 +237,6 @@ export class HttpClient {
...endpoint.defaults,
...options,
baseUrlOverride: endpoint.baseUrlOverride,
telemetry: {
...endpoint.telemetry,
...options.telemetry,
},
});
}
+103 -182
View File
@@ -46,7 +46,13 @@ export const apiEndpointKeys = {
deleteEventBridgeLambdaTrigger: "clouds.services.resources.serverless.eventbridge-trigger.delete",
createEventBridgeRule: "clouds.services.resources.events.rule.create",
listEventBridgeRules: "clouds.services.resources.events.rules.list",
deleteEventBridgeRule: "clouds.services.resources.events.rule.delete",
deleteEventBridgeRule: "clouds.services.resources.events.rule.delete",
putEventBridgeEvent: "clouds.services.resources.events.event.put",
listCloudFormationChangeSets: "clouds.services.resources.iac.change-sets.list",
createCloudFormationChangeSet: "clouds.services.resources.iac.change-set.create",
executeCloudFormationChangeSet: "clouds.services.resources.iac.change-set.execute",
deleteCloudFormationChangeSet: "clouds.services.resources.iac.change-set.delete",
updateCloudFormationTerminationProtection: "clouds.services.resources.iac.termination-protection.update",
createSqsLambdaEventSourceMapping: "clouds.services.resources.serverless.sqs-event-source-mapping.create",
listSqsLambdaEventSourceMappings: "clouds.services.resources.serverless.sqs-event-source-mappings.list",
deleteSqsLambdaEventSourceMapping: "clouds.services.resources.serverless.sqs-event-source-mapping.delete",
@@ -79,10 +85,6 @@ export const apiEndpointKeys = {
query: "clouds.services.nosql.cosmos.items.query",
},
},
items: {
list: "clouds.services.nosql.items.list",
put: "clouds.services.nosql.items.put",
},
},
database: {
sql: {
@@ -100,6 +102,11 @@ export const apiEndpointKeys = {
},
logs: {
query: "clouds.services.logs.query",
filter: "clouds.services.logs.filter",
},
messaging: {
messages: {send: "clouds.services.messaging.messages.send", receive: "clouds.services.messaging.messages.receive", delete: "clouds.services.messaging.messages.delete", purge: "clouds.services.messaging.messages.purge"},
moveTasks: "clouds.services.messaging.move-tasks",
},
k8s: {
nodegroups: {
@@ -126,6 +133,7 @@ export const apiEndpointKeys = {
},
flatItems: {
list: "clouds.services.flatItems.list",
query: "clouds.services.flatItems.query",
create: "clouds.services.flatItems.create",
delete: "clouds.services.flatItems.delete",
},
@@ -276,7 +284,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds",
method: "GET",
telemetry: { provider: "system", service: "cloud-proxy" },
},
],
[
@@ -284,7 +291,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -292,7 +298,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/status",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -300,7 +305,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/:service/status",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -308,7 +312,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/:service/schema",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -316,7 +319,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/:service/dependencies",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -324,7 +326,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/:service/resources",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -332,7 +333,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/:service/resources/:id/invoke",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -340,7 +340,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/apigateway/resources/:id/routes",
method: "POST",
telemetry: { service: "apigateway" },
},
],
[
@@ -348,7 +347,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/notifications/resources/:id/publish",
method: "POST",
telemetry: { service: "notifications" },
},
],
[
@@ -356,7 +354,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/notifications/resources/:id/subscriptions",
method: "POST",
telemetry: { service: "notifications" },
},
],
[
@@ -364,7 +361,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/notifications/resources/:id/subscriptions",
method: "GET",
telemetry: { service: "notifications" },
},
],
[
@@ -372,7 +368,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/notifications/resources/:id/subscriptions/:subscriptionArn",
method: "DELETE",
telemetry: { service: "notifications" },
},
],
[
@@ -380,7 +375,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/apigateway/resources/:id/routes",
method: "GET",
telemetry: { service: "apigateway" },
},
],
[
@@ -388,7 +382,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/apigateway/resources/:id/routes/:resourceId/:method",
method: "DELETE",
telemetry: { service: "apigateway" },
},
],
[
@@ -396,7 +389,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/apigateway/resources/:id/routes/test",
method: "POST",
telemetry: { service: "apigateway" },
},
],
[
@@ -404,7 +396,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/apigateway/resources/:id/methods/test",
method: "POST",
telemetry: { service: "apigateway" },
},
],
[
@@ -412,7 +403,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/apigateway/resources/:id/cors",
method: "POST",
telemetry: { service: "apigateway" },
},
],
[
@@ -420,7 +410,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/storage/resources/:id/lambda-triggers",
method: "POST",
telemetry: { service: "storage" },
},
],
[
@@ -428,7 +417,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/storage/resources/:id/lambda-triggers",
method: "GET",
telemetry: { service: "storage" },
},
],
[
@@ -436,7 +424,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/storage/resources/:id/lambda-triggers/:triggerId",
method: "DELETE",
telemetry: { service: "storage" },
},
],
[
@@ -444,7 +431,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/storage/resources/:id/website",
method: "GET",
telemetry: { service: "storage" },
},
],
[
@@ -452,7 +438,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/storage/resources/:id/website",
method: "PUT",
telemetry: { service: "storage" },
},
],
[
@@ -460,7 +445,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/storage/resources/:id/website",
method: "DELETE",
telemetry: { service: "storage" },
},
],
[
@@ -468,7 +452,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/serverless/resources/:id/eventbridge-triggers",
method: "POST",
telemetry: { service: "serverless" },
},
],
[
@@ -476,7 +459,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/serverless/resources/:id/eventbridge-triggers",
method: "GET",
telemetry: { service: "serverless" },
},
],
[
@@ -484,7 +466,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/serverless/resources/:id/eventbridge-triggers/:triggerId",
method: "DELETE",
telemetry: { service: "serverless" },
},
],
[
@@ -492,7 +473,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/events/resources/:id/rules",
method: "POST",
telemetry: { service: "events" },
},
],
[
@@ -500,7 +480,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/events/resources/:id/rules",
method: "GET",
telemetry: { service: "events" },
},
],
[
@@ -508,15 +487,25 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/events/resources/:id/rules/:ruleName",
method: "DELETE",
telemetry: { service: "events" },
},
],
[
apiEndpointKeys.clouds.resources.putEventBridgeEvent,
{
path: "/clouds/:cloud/services/events/resources/:id/events",
method: "POST",
},
],
[apiEndpointKeys.clouds.resources.listCloudFormationChangeSets, {path: "/clouds/:cloud/services/iac/resources/:id/change-sets", method: "GET"}],
[apiEndpointKeys.clouds.resources.createCloudFormationChangeSet, {path: "/clouds/:cloud/services/iac/resources/:id/change-sets", method: "POST"}],
[apiEndpointKeys.clouds.resources.executeCloudFormationChangeSet, {path: "/clouds/:cloud/services/iac/resources/:id/change-sets/:name/execute", method: "POST"}],
[apiEndpointKeys.clouds.resources.deleteCloudFormationChangeSet, {path: "/clouds/:cloud/services/iac/resources/:id/change-sets/:name", method: "DELETE"}],
[apiEndpointKeys.clouds.resources.updateCloudFormationTerminationProtection, {path: "/clouds/:cloud/services/iac/resources/:id/termination-protection", method: "PUT"}],
[
apiEndpointKeys.clouds.resources.createSqsLambdaEventSourceMapping,
{
path: "/clouds/:cloud/services/serverless/resources/:id/sqs-event-source-mappings",
method: "POST",
telemetry: { service: "serverless" },
},
],
[
@@ -524,7 +513,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/serverless/resources/:id/sqs-event-source-mappings",
method: "GET",
telemetry: { service: "serverless" },
},
],
[
@@ -532,35 +520,33 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/serverless/resources/:id/sqs-event-source-mappings/:mappingId",
method: "DELETE",
telemetry: { service: "serverless" },
},
],
[
apiEndpointKeys.clouds.resources.startWorkflowExecution,
{ path: "/clouds/:cloud/services/workflows/resources/:id/executions", method: "POST", telemetry: { service: "workflows" } },
{ path: "/clouds/:cloud/services/workflows/resources/:id/executions", method: "POST" },
],
[
apiEndpointKeys.clouds.resources.listWorkflowExecutions,
{ path: "/clouds/:cloud/services/workflows/resources/:id/executions", method: "GET", telemetry: { service: "workflows" } },
{ path: "/clouds/:cloud/services/workflows/resources/:id/executions", method: "GET" },
],
[
apiEndpointKeys.clouds.resources.describeWorkflowExecution,
{ path: "/clouds/:cloud/services/workflows/resources/:id/executions/:executionArn", method: "GET", telemetry: { service: "workflows" } },
{ path: "/clouds/:cloud/services/workflows/resources/:id/executions/:executionArn", method: "GET" },
],
[
apiEndpointKeys.clouds.resources.getWorkflowExecutionHistory,
{ path: "/clouds/:cloud/services/workflows/resources/:id/executions/:executionArn/history", method: "GET", telemetry: { service: "workflows" } },
{ path: "/clouds/:cloud/services/workflows/resources/:id/executions/:executionArn/history", method: "GET" },
],
[
apiEndpointKeys.clouds.resources.stopWorkflowExecution,
{ path: "/clouds/:cloud/services/workflows/resources/:id/executions/:executionArn/stop", method: "POST", telemetry: { service: "workflows" } },
{ path: "/clouds/:cloud/services/workflows/resources/:id/executions/:executionArn/stop", method: "POST" },
],
[
apiEndpointKeys.clouds.resources.get,
{
path: "/clouds/:cloud/services/:service/resources/:id",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -568,7 +554,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/kms/resources/:id/encrypt",
method: "POST",
telemetry: { service: "kms" },
},
],
[
@@ -576,7 +561,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/kms/resources/:id/decrypt",
method: "POST",
telemetry: { service: "kms" },
},
],
[
@@ -584,7 +568,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/:service/resources",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -592,7 +575,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/:service/resources/:id",
method: "PATCH",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -600,7 +582,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/:service/resources/:id",
method: "DELETE",
telemetry: { service: "cloud-proxy" },
},
],
@@ -609,7 +590,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/:service/resources/:id/invoke",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
@@ -618,7 +598,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/storage/resources/:id/objects",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -626,7 +605,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/storage/resources/:id/object",
method: "PUT",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -634,7 +612,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/storage/resources/:id/object",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -642,7 +619,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/storage/resources/:id/object",
method: "DELETE",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -650,7 +626,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/storage/resources/:id/object/copy",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -658,7 +633,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/nosql/resources/:id/containers",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -666,7 +640,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/nosql/resources/:id/containers",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -674,7 +647,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/nosql/resources/:id/containers/:containerId",
method: "DELETE",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -682,7 +654,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/nosql/resources/:id/containers/:containerId/items",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -690,7 +661,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/nosql/resources/:id/containers/:containerId/items",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -698,7 +668,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/nosql/resources/:id/containers/:containerId/items/:itemId",
method: "DELETE",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -706,7 +675,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/nosql/resources/:id/containers/:containerId/query",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -714,7 +682,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/database/resources/:id/sql/databases",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -722,7 +689,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/database/resources/:id/sql/tables",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -730,7 +696,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/database/resources/:id/sql/query",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -738,15 +703,25 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/logs/resources/:id/query",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
apiEndpointKeys.clouds.logs.filter,
{
path: "/clouds/:cloud/services/logs/resources/:id/filter",
method: "POST",
},
],
[apiEndpointKeys.clouds.messaging.messages.send, {path: "/clouds/:cloud/services/messaging/resources/:id/messages", method: "POST"}],
[apiEndpointKeys.clouds.messaging.messages.receive, {path: "/clouds/:cloud/services/messaging/resources/:id/messages/receive", method: "POST"}],
[apiEndpointKeys.clouds.messaging.messages.delete, {path: "/clouds/:cloud/services/messaging/resources/:id/messages/delete", method: "POST"}],
[apiEndpointKeys.clouds.messaging.messages.purge, {path: "/clouds/:cloud/services/messaging/resources/:id/messages", method: "DELETE"}],
[apiEndpointKeys.clouds.messaging.moveTasks, {path: "/clouds/:cloud/services/messaging/resources/:id/move-tasks", method: "POST"}],
[
apiEndpointKeys.clouds.database.snapshots.list,
{
path: "/clouds/:cloud/services/database/snapshots",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -754,7 +729,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/database/snapshots",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -762,23 +736,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/database/orderable-classes",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
apiEndpointKeys.clouds.nosql.items.list,
{
path: "/clouds/:cloud/services/nosql/resources/:id/items",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
apiEndpointKeys.clouds.nosql.items.put,
{
path: "/clouds/:cloud/services/nosql/resources/:id/items",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -786,7 +743,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/k8s/resources/:id/nodegroups",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -794,7 +750,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/k8s/resources/:id/nodegroups",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -802,7 +757,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/k8s/resources/:id/nodegroups/:nodegroupId",
method: "DELETE",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -810,7 +764,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/k8s/resources/:id/fargate-profiles",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -818,7 +771,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/k8s/resources/:id/fargate-profiles",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -826,7 +778,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/k8s/resources/:id/fargate-profiles/:profileId",
method: "DELETE",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -834,7 +785,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/email/inbox",
method: "DELETE",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -842,7 +792,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/resources/:id/environments",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -850,7 +799,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/resources/:id/environments",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -858,7 +806,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/resources/:id/environments/:environmentId",
method: "DELETE",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -866,7 +813,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/resources/:id/environments/:environmentId/deployments",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -874,7 +820,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/resources/:id/environments/:environmentId/deployments/:deploymentNumber",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -882,7 +827,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/resources/:id/configuration-profiles",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -890,7 +834,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/resources/:id/configuration-profiles",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -898,7 +841,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/resources/:id/configuration-profiles/:profileId",
method: "DELETE",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -906,7 +848,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/resources/:id/configuration-profiles/:profileId/hosted-configuration-versions",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -914,7 +855,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/resources/:id/configuration-profiles/:profileId/hosted-configuration-versions/:versionNumber",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -922,7 +862,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/resources/:id/configuration-profiles/:profileId/hosted-configuration-versions",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -930,7 +869,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/resources/:id/configuration-profiles/:profileId/hosted-configuration-versions/:versionNumber",
method: "DELETE",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -938,7 +876,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/deployment-strategies",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -946,7 +883,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/deployment-strategies",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -954,7 +890,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/configuration/deployment-strategies/:strategyId",
method: "DELETE",
telemetry: { service: "cloud-proxy" },
},
],
@@ -963,7 +898,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/:service/resources/:id/collections",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -971,7 +905,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/:service/resources/:id/collections/:cid/items",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -979,7 +912,13 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/:service/resources/:id/items",
method: "GET",
telemetry: { service: "cloud-proxy" },
},
],
[
apiEndpointKeys.clouds.flatItems.query,
{
path: "/clouds/:cloud/services/:service/resources/:id/query",
method: "POST",
},
],
[
@@ -987,7 +926,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/:service/resources/:id/items",
method: "POST",
telemetry: { service: "cloud-proxy" },
},
],
[
@@ -995,7 +933,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/clouds/:cloud/services/:service/resources/:id/items/:itemId",
method: "DELETE",
telemetry: { service: "cloud-proxy" },
},
],
// AWS EKS
@@ -1004,7 +941,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/eks/clusters",
method: "GET",
telemetry: { provider: "aws", service: "eks" },
},
],
[
@@ -1012,7 +948,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/eks/clusters/:name",
method: "GET",
telemetry: { provider: "aws", service: "eks" },
},
],
[
@@ -1020,7 +955,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/eks/clusters/:name/nodegroups",
method: "GET",
telemetry: { provider: "aws", service: "eks" },
},
],
[
@@ -1028,7 +962,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/eks/clusters/:name/nodegroups/:nodegroup",
method: "GET",
telemetry: { provider: "aws", service: "eks" },
},
],
[
@@ -1036,7 +969,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/eks/clusters/:name/nodegroups",
method: "POST",
telemetry: { provider: "aws", service: "eks" },
},
],
[
@@ -1044,7 +976,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/eks/clusters/:name/nodegroups/:nodegroup",
method: "DELETE",
telemetry: { provider: "aws", service: "eks" },
},
],
[
@@ -1052,7 +983,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/eks/clusters/:name/fargate-profiles",
method: "GET",
telemetry: { provider: "aws", service: "eks" },
},
],
[
@@ -1060,7 +990,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/eks/clusters/:name/fargate-profiles/:profile",
method: "GET",
telemetry: { provider: "aws", service: "eks" },
},
],
[
@@ -1068,7 +997,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/eks/clusters/:name/fargate-profiles",
method: "POST",
telemetry: { provider: "aws", service: "eks" },
},
],
[
@@ -1076,7 +1004,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/eks/clusters/:name/fargate-profiles/:profile",
method: "DELETE",
telemetry: { provider: "aws", service: "eks" },
},
],
@@ -1086,7 +1013,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/secretsmanager/secrets",
method: "GET",
telemetry: { provider: "aws", service: "secretsmanager" },
},
],
[
@@ -1094,7 +1020,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/secretsmanager/secrets",
method: "POST",
telemetry: { provider: "aws", service: "secretsmanager" },
},
],
[
@@ -1102,7 +1027,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/secretsmanager/secret",
method: "GET",
telemetry: { provider: "aws", service: "secretsmanager" },
},
],
[
@@ -1110,7 +1034,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/secretsmanager/secret",
method: "DELETE",
telemetry: { provider: "aws", service: "secretsmanager" },
},
],
[
@@ -1118,7 +1041,6 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/secretsmanager/secret/value",
method: "GET",
telemetry: { provider: "aws", service: "secretsmanager" },
},
],
[
@@ -1126,65 +1048,64 @@ export const endpointRegistry: EndpointRegistry = new Map([
{
path: "/secretsmanager/secret/value",
method: "PUT",
telemetry: { provider: "aws", service: "secretsmanager" },
},
],
// AWS EC2
[apiEndpointKeys.aws.ec2.instances.list, { path: "/ec2/instances", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.instances.describe, { path: "/ec2/instances/:instanceId", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.instances.create, { path: "/ec2/instances", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.instances.start, { path: "/ec2/instances/:instanceId/start", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.instances.stop, { path: "/ec2/instances/:instanceId/stop", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.instances.reboot, { path: "/ec2/instances/:instanceId/reboot", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.instances.terminate,{ path: "/ec2/instances/:instanceId/terminate", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.instances.tags, { path: "/ec2/instances/:instanceId/tags", method: "PUT", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.instances.createImage, { path: "/ec2/instances/:instanceId/image", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.instances.console, { path: "/ec2/instances/:instanceId/console", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.amis.list, { path: "/ec2/amis", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.amis.deregister, { path: "/ec2/amis/:imageId/deregister", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.keyPairs.list, { path: "/ec2/key-pairs", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.keyPairs.create, { path: "/ec2/key-pairs", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.keyPairs.delete, { path: "/ec2/key-pairs/:name", method: "DELETE", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.securityGroups.list, { path: "/ec2/security-groups", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.securityGroups.create, { path: "/ec2/security-groups", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.securityGroups.delete, { path: "/ec2/security-groups/:groupId", method: "DELETE", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.securityGroups.authorize, { path: "/ec2/security-groups/:groupId/ingress", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.securityGroups.revoke, { path: "/ec2/security-groups/:groupId/ingress", method: "DELETE", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.securityGroups.authorizeEgress, { path: "/ec2/security-groups/:groupId/egress", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.securityGroups.revokeEgress, { path: "/ec2/security-groups/:groupId/egress", method: "DELETE", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.vpcs.list, { path: "/ec2/vpcs", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.vpcs.create, { path: "/ec2/vpcs", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.vpcs.delete, { path: "/ec2/vpcs/:vpcId", method: "DELETE", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.vpcs.getAttributes, { path: "/ec2/vpcs/:vpcId/attributes", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.vpcs.modifyAttribute, { path: "/ec2/vpcs/:vpcId/attributes", method: "PUT", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.subnets.list, { path: "/ec2/subnets", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.subnets.create, { path: "/ec2/subnets", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.subnets.delete, { path: "/ec2/subnets/:subnetId", method: "DELETE", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.subnets.modifyAttribute, { path: "/ec2/subnets/:subnetId/attributes", method: "PUT", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.internetGateways.list, { path: "/ec2/internet-gateways", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.internetGateways.create, { path: "/ec2/internet-gateways", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.internetGateways.attach, { path: "/ec2/internet-gateways/:igwId/attach", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.internetGateways.detach, { path: "/ec2/internet-gateways/:igwId/detach", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.internetGateways.delete, { path: "/ec2/internet-gateways/:igwId", method: "DELETE", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.natGateways.list, { path: "/ec2/nat-gateways", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.natGateways.create, { path: "/ec2/nat-gateways", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.natGateways.delete, { path: "/ec2/nat-gateways/:natId", method: "DELETE", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.routeTables.list, { path: "/ec2/route-tables", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.routeTables.create, { path: "/ec2/route-tables", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.routeTables.delete, { path: "/ec2/route-tables/:rtbId", method: "DELETE", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.routeTables.createRoute, { path: "/ec2/route-tables/:rtbId/routes", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.routeTables.deleteRoute, { path: "/ec2/route-tables/:rtbId/routes", method: "DELETE", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.routeTables.associate, { path: "/ec2/route-tables/:rtbId/associations", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.routeTables.disassociate,{ path: "/ec2/route-table-associations/:associationId", method: "DELETE", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.elasticIps.list, { path: "/ec2/elastic-ips", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.elasticIps.create, { path: "/ec2/elastic-ips", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.elasticIps.release, { path: "/ec2/elastic-ips/:allocationId/release", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.elasticIps.associate, { path: "/ec2/elastic-ips/:allocationId/associate", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.elasticIps.disassociate, { path: "/ec2/elastic-ips/:allocationId/disassociate", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.availabilityZones, { path: "/ec2/availability-zones", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.instanceTypes, { path: "/ec2/instance-types", method: "GET", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.vpcWizard, { path: "/ec2/vpc-wizard", method: "POST", telemetry: { provider: "aws", service: "ec2" } }],
[apiEndpointKeys.aws.ec2.instances.list, { path: "/ec2/instances", method: "GET" }],
[apiEndpointKeys.aws.ec2.instances.describe, { path: "/ec2/instances/:instanceId", method: "GET" }],
[apiEndpointKeys.aws.ec2.instances.create, { path: "/ec2/instances", method: "POST" }],
[apiEndpointKeys.aws.ec2.instances.start, { path: "/ec2/instances/:instanceId/start", method: "POST" }],
[apiEndpointKeys.aws.ec2.instances.stop, { path: "/ec2/instances/:instanceId/stop", method: "POST" }],
[apiEndpointKeys.aws.ec2.instances.reboot, { path: "/ec2/instances/:instanceId/reboot", method: "POST" }],
[apiEndpointKeys.aws.ec2.instances.terminate,{ path: "/ec2/instances/:instanceId/terminate", method: "POST" }],
[apiEndpointKeys.aws.ec2.instances.tags, { path: "/ec2/instances/:instanceId/tags", method: "PUT" }],
[apiEndpointKeys.aws.ec2.instances.createImage, { path: "/ec2/instances/:instanceId/image", method: "POST" }],
[apiEndpointKeys.aws.ec2.instances.console, { path: "/ec2/instances/:instanceId/console", method: "GET" }],
[apiEndpointKeys.aws.ec2.amis.list, { path: "/ec2/amis", method: "GET" }],
[apiEndpointKeys.aws.ec2.amis.deregister, { path: "/ec2/amis/:imageId/deregister", method: "POST" }],
[apiEndpointKeys.aws.ec2.keyPairs.list, { path: "/ec2/key-pairs", method: "GET" }],
[apiEndpointKeys.aws.ec2.keyPairs.create, { path: "/ec2/key-pairs", method: "POST" }],
[apiEndpointKeys.aws.ec2.keyPairs.delete, { path: "/ec2/key-pairs/:name", method: "DELETE" }],
[apiEndpointKeys.aws.ec2.securityGroups.list, { path: "/ec2/security-groups", method: "GET" }],
[apiEndpointKeys.aws.ec2.securityGroups.create, { path: "/ec2/security-groups", method: "POST" }],
[apiEndpointKeys.aws.ec2.securityGroups.delete, { path: "/ec2/security-groups/:groupId", method: "DELETE" }],
[apiEndpointKeys.aws.ec2.securityGroups.authorize, { path: "/ec2/security-groups/:groupId/ingress", method: "POST" }],
[apiEndpointKeys.aws.ec2.securityGroups.revoke, { path: "/ec2/security-groups/:groupId/ingress", method: "DELETE" }],
[apiEndpointKeys.aws.ec2.securityGroups.authorizeEgress, { path: "/ec2/security-groups/:groupId/egress", method: "POST" }],
[apiEndpointKeys.aws.ec2.securityGroups.revokeEgress, { path: "/ec2/security-groups/:groupId/egress", method: "DELETE" }],
[apiEndpointKeys.aws.ec2.vpcs.list, { path: "/ec2/vpcs", method: "GET" }],
[apiEndpointKeys.aws.ec2.vpcs.create, { path: "/ec2/vpcs", method: "POST" }],
[apiEndpointKeys.aws.ec2.vpcs.delete, { path: "/ec2/vpcs/:vpcId", method: "DELETE" }],
[apiEndpointKeys.aws.ec2.vpcs.getAttributes, { path: "/ec2/vpcs/:vpcId/attributes", method: "GET" }],
[apiEndpointKeys.aws.ec2.vpcs.modifyAttribute, { path: "/ec2/vpcs/:vpcId/attributes", method: "PUT" }],
[apiEndpointKeys.aws.ec2.subnets.list, { path: "/ec2/subnets", method: "GET" }],
[apiEndpointKeys.aws.ec2.subnets.create, { path: "/ec2/subnets", method: "POST" }],
[apiEndpointKeys.aws.ec2.subnets.delete, { path: "/ec2/subnets/:subnetId", method: "DELETE" }],
[apiEndpointKeys.aws.ec2.subnets.modifyAttribute, { path: "/ec2/subnets/:subnetId/attributes", method: "PUT" }],
[apiEndpointKeys.aws.ec2.internetGateways.list, { path: "/ec2/internet-gateways", method: "GET" }],
[apiEndpointKeys.aws.ec2.internetGateways.create, { path: "/ec2/internet-gateways", method: "POST" }],
[apiEndpointKeys.aws.ec2.internetGateways.attach, { path: "/ec2/internet-gateways/:igwId/attach", method: "POST" }],
[apiEndpointKeys.aws.ec2.internetGateways.detach, { path: "/ec2/internet-gateways/:igwId/detach", method: "POST" }],
[apiEndpointKeys.aws.ec2.internetGateways.delete, { path: "/ec2/internet-gateways/:igwId", method: "DELETE" }],
[apiEndpointKeys.aws.ec2.natGateways.list, { path: "/ec2/nat-gateways", method: "GET" }],
[apiEndpointKeys.aws.ec2.natGateways.create, { path: "/ec2/nat-gateways", method: "POST" }],
[apiEndpointKeys.aws.ec2.natGateways.delete, { path: "/ec2/nat-gateways/:natId", method: "DELETE" }],
[apiEndpointKeys.aws.ec2.routeTables.list, { path: "/ec2/route-tables", method: "GET" }],
[apiEndpointKeys.aws.ec2.routeTables.create, { path: "/ec2/route-tables", method: "POST" }],
[apiEndpointKeys.aws.ec2.routeTables.delete, { path: "/ec2/route-tables/:rtbId", method: "DELETE" }],
[apiEndpointKeys.aws.ec2.routeTables.createRoute, { path: "/ec2/route-tables/:rtbId/routes", method: "POST" }],
[apiEndpointKeys.aws.ec2.routeTables.deleteRoute, { path: "/ec2/route-tables/:rtbId/routes", method: "DELETE" }],
[apiEndpointKeys.aws.ec2.routeTables.associate, { path: "/ec2/route-tables/:rtbId/associations", method: "POST" }],
[apiEndpointKeys.aws.ec2.routeTables.disassociate,{ path: "/ec2/route-table-associations/:associationId", method: "DELETE" }],
[apiEndpointKeys.aws.ec2.elasticIps.list, { path: "/ec2/elastic-ips", method: "GET" }],
[apiEndpointKeys.aws.ec2.elasticIps.create, { path: "/ec2/elastic-ips", method: "POST" }],
[apiEndpointKeys.aws.ec2.elasticIps.release, { path: "/ec2/elastic-ips/:allocationId/release", method: "POST" }],
[apiEndpointKeys.aws.ec2.elasticIps.associate, { path: "/ec2/elastic-ips/:allocationId/associate", method: "POST" }],
[apiEndpointKeys.aws.ec2.elasticIps.disassociate, { path: "/ec2/elastic-ips/:allocationId/disassociate", method: "POST" }],
[apiEndpointKeys.aws.ec2.availabilityZones, { path: "/ec2/availability-zones", method: "GET" }],
[apiEndpointKeys.aws.ec2.instanceTypes, { path: "/ec2/instance-types", method: "GET" }],
[apiEndpointKeys.aws.ec2.vpcWizard, { path: "/ec2/vpc-wizard", method: "POST" }],
]);
+105 -31
View File
@@ -28,7 +28,9 @@ import type {
KubernetesNodegroup,
LogsInsightsQueryInput,
LogsInsightsQueryResult,
NoSqlItem,
LogsFilterInput,
SqsMessage,
SqsSendMessageInput,
SqlCredentials,
SqlDatabase,
SqlEngine,
@@ -257,6 +259,8 @@ export interface WorkflowExecutionHistoryPage {
export interface CreateApiGatewayLambdaRouteInput {
path: string;
parentResourceId?: string;
pathPart?: string;
method: string;
stage: string;
functionName: string;
@@ -311,7 +315,16 @@ export interface ApiGatewayRouteOverview {
integrationType: string | null;
}
export interface ApiGatewayResourceOverview {
resourceId: string;
parentId: string | null;
path: string;
pathPart: string | null;
methods: ApiGatewayRouteOverview[];
}
export interface ApiGatewayRoutesResult {
resources: ApiGatewayResourceOverview[];
routes: ApiGatewayRouteOverview[];
stages: string[];
}
@@ -401,6 +414,20 @@ export interface EventBridgeRuleOverview extends CreateEventBridgeRuleInput {
state: "ENABLED" | "DISABLED";
}
export interface PutEventBridgeEventInput {
source: string;
detailType: string;
detail: string;
resources?: string[];
}
export interface PutEventBridgeEventResult {
eventId: string | null;
errorCode: string | null;
errorMessage: string | null;
}
export interface CloudFormationChangeSet { name: string; id: string; status: string | null; executionStatus: string | null; changes: Array<{action: string | null; logicalResourceId: string | null; resourceType: string | null}> }
export interface CreateSqsLambdaEventSourceMappingInput {
queueArn: string;
batchSize?: number;
@@ -697,6 +724,26 @@ export async function deleteEventBridgeRule(
);
}
export async function putEventBridgeEvent(
cloud: CloudProvider,
eventBusId: string,
input: PutEventBridgeEventInput,
signal?: AbortSignal,
): Promise<PutEventBridgeEventResult> {
const res = await apiClient.call<PutEventBridgeEventResult, PutEventBridgeEventInput>(
apiEndpointKeys.clouds.resources.putEventBridgeEvent,
requestOptions(cloud, "events", {signal, body: input}),
{cloud, id: eventBusId},
);
return res.data;
}
export async function listCloudFormationChangeSets(cloud: CloudProvider, stackName: string, signal?: AbortSignal): Promise<CloudFormationChangeSet[]> { const res = await apiClient.call<CloudFormationChangeSet[]>(apiEndpointKeys.clouds.resources.listCloudFormationChangeSets, requestOptions(cloud, 'iac', {signal}), {cloud, id: stackName}); return res.data }
export async function createCloudFormationChangeSet(cloud: CloudProvider, stackName: string, input: {name: string; templateBody: string; parameters?: Record<string, string>; capabilities?: string[]}): Promise<CloudFormationChangeSet> { const res = await apiClient.call<CloudFormationChangeSet, typeof input>(apiEndpointKeys.clouds.resources.createCloudFormationChangeSet, requestOptions(cloud, 'iac', {body: input}), {cloud, id: stackName}); return res.data }
export async function executeCloudFormationChangeSet(cloud: CloudProvider, stackName: string, name: string): Promise<void> { await apiClient.call<void>(apiEndpointKeys.clouds.resources.executeCloudFormationChangeSet, requestOptions(cloud, 'iac', {}), {cloud, id: stackName, name}) }
export async function deleteCloudFormationChangeSet(cloud: CloudProvider, stackName: string, name: string): Promise<void> { await apiClient.call<void>(apiEndpointKeys.clouds.resources.deleteCloudFormationChangeSet, requestOptions(cloud, 'iac', {}), {cloud, id: stackName, name}) }
export async function updateCloudFormationTerminationProtection(cloud: CloudProvider, stackName: string, enabled: boolean): Promise<void> { await apiClient.call<void, {enabled: boolean}>(apiEndpointKeys.clouds.resources.updateCloudFormationTerminationProtection, requestOptions(cloud, 'iac', {body: {enabled}}), {cloud, id: stackName}) }
export async function createSqsLambdaEventSourceMapping(
cloud: CloudProvider,
functionName: string,
@@ -1107,6 +1154,23 @@ export async function listFlatItems(
return res.data;
}
export async function queryFlatItems(
cloud: CloudProvider,
service: CloudServiceType,
resourceId: string,
query: Record<string, unknown>,
cursor?: string,
limit = 100,
signal?: AbortSignal,
): Promise<CollectionPage<ChildItem>> {
const res = await apiClient.call<CollectionPage<ChildItem>, {query: Record<string, unknown>}>(
apiEndpointKeys.clouds.flatItems.query,
requestOptions(cloud, service, {signal, params: {cursor, limit}, body: {query}}),
{cloud, service, id: resourceId},
);
return res.data;
}
export async function deleteFlatItem(
cloud: CloudProvider,
service: CloudServiceType,
@@ -1215,6 +1279,44 @@ export async function queryLogs(
return res.data;
}
export async function filterLogEvents(
cloud: CloudProvider,
logGroupName: string,
input: LogsFilterInput,
cursor?: string,
signal?: AbortSignal,
): Promise<CollectionPage<ChildItem>> {
const res = await apiClient.call<CollectionPage<ChildItem>, LogsFilterInput>(
apiEndpointKeys.clouds.logs.filter,
requestOptions(cloud, "logs", { signal, body: input, params: cursor ? { cursor } : undefined }),
{ cloud, id: logGroupName },
);
return res.data;
}
export async function sendSqsMessage(cloud: CloudProvider, queueId: string, input: SqsSendMessageInput): Promise<{messageId: string}> {
const res = await apiClient.call<{messageId: string}, SqsSendMessageInput>(apiEndpointKeys.clouds.messaging.messages.send, requestOptions(cloud, 'messaging', {body: input}), {cloud, id: queueId})
return res.data
}
export async function receiveSqsMessages(cloud: CloudProvider, queueId: string, maxNumberOfMessages: number): Promise<SqsMessage[]> {
const res = await apiClient.call<SqsMessage[], {maxNumberOfMessages: number}>(apiEndpointKeys.clouds.messaging.messages.receive, requestOptions(cloud, 'messaging', {body: {maxNumberOfMessages}}), {cloud, id: queueId})
return res.data
}
export async function deleteSqsMessage(cloud: CloudProvider, queueId: string, receiptHandle: string): Promise<void> {
await apiClient.call(apiEndpointKeys.clouds.messaging.messages.delete, requestOptions(cloud, 'messaging', {body: {receiptHandle}}), {cloud, id: queueId})
}
export async function purgeSqsQueue(cloud: CloudProvider, queueId: string): Promise<void> {
await apiClient.call(apiEndpointKeys.clouds.messaging.messages.purge, requestOptions(cloud, 'messaging'), {cloud, id: queueId})
}
export async function startSqsMoveTask(cloud: CloudProvider, queueId: string, destinationArn?: string): Promise<{taskHandle: string}> {
const res = await apiClient.call<{taskHandle: string}, {destinationArn?: string}>(apiEndpointKeys.clouds.messaging.moveTasks, requestOptions(cloud, 'messaging', {body: {destinationArn}}), {cloud, id: queueId})
return res.data
}
export async function listDatabaseSnapshots(
cloud: CloudProvider,
instanceIdentifier?: string,
@@ -1260,33 +1362,6 @@ export async function listDatabaseOrderableClasses(
return res.data;
}
export async function listNoSqlItems(
cloud: CloudProvider,
resourceId: string,
signal?: AbortSignal,
): Promise<NoSqlItem[]> {
const res = await apiClient.call<NoSqlItem[]>(
apiEndpointKeys.clouds.nosql.items.list,
requestOptions(cloud, "nosql", { signal }),
{ cloud, id: resourceId },
);
return res.data;
}
export async function putNoSqlItem(
cloud: CloudProvider,
resourceId: string,
document: Record<string, unknown>,
signal?: AbortSignal,
): Promise<NoSqlItem> {
const res = await apiClient.call<NoSqlItem, Record<string, unknown>>(
apiEndpointKeys.clouds.nosql.items.put,
requestOptions(cloud, "nosql", { signal, body: document }),
{ cloud, id: resourceId },
);
return res.data;
}
export async function listKubernetesNodegroups(
cloud: CloudProvider,
clusterId: string,
@@ -1560,8 +1635,8 @@ export async function getAppConfigDeployment(
}
function requestOptions<TBody = unknown>(
cloud: CloudProvider,
service: string,
_cloud: CloudProvider,
_service: string,
options: {
signal?: AbortSignal;
params?: Record<string, string | number | boolean | undefined>;
@@ -1574,7 +1649,6 @@ function requestOptions<TBody = unknown>(
) {
return {
...options,
telemetry: { provider: cloud, service },
};
}
-63
View File
@@ -1,63 +0,0 @@
import { apiClient } from "./api";
import type { HttpMethod } from "./HttpClient";
import {
subscribeApiRequests,
type ApiRequestEvent,
} from "@/telemetry";
export type FlociRequestEvent = ApiRequestEvent;
export function subscribeRequests(
cb: (event: FlociRequestEvent) => void,
): () => void {
return subscribeApiRequests(cb);
}
export function apiGet<T>(
path: string,
service: string,
signal?: AbortSignal,
): Promise<T> {
return apiRequest<T>("GET", path, service, undefined, signal);
}
export function apiPost<T>(
path: string,
service: string,
body: unknown,
signal?: AbortSignal,
): Promise<T> {
return apiRequest<T>("POST", path, service, body, signal);
}
export function apiPut<T>(
path: string,
service: string,
body: unknown,
signal?: AbortSignal,
): Promise<T> {
return apiRequest<T>("PUT", path, service, body, signal);
}
export function apiDelete<T>(
path: string,
service: string,
signal?: AbortSignal,
): Promise<T> {
return apiRequest<T>("DELETE", path, service, undefined, signal);
}
async function apiRequest<T>(
method: HttpMethod,
path: string,
service: string,
body?: unknown,
signal?: AbortSignal,
): Promise<T> {
const res = await apiClient.request<T>(method, path, {
signal,
...(body === undefined ? {} : { body }),
telemetry: { provider: "aws", service },
});
return res.data;
}
@@ -1,6 +0,0 @@
export {
apiRequestEventBus,
emitApiRequest,
subscribeApiRequests,
} from "@/telemetry/requestEventBus";
export type { ApiRequestEvent, CloudProvider } from "@/telemetry/types";