Download OpenAPI specification:Download
This is the API for the Astro Plane - control plane for Astro Platform
Returns all active, expired, and revoked API keys owned by the authenticated user across all organizations. Requires Auth0 authentication.
| Authorization required | string Auth0 Bearer token |
{- "data": [
- {
- "createdAt": "string",
- "duration": "string",
- "expiresAt": "string",
- "featureFlags": {
- "deployPreviewAccess": true,
- "novaChatEnabled": true
}, - "id": "string",
- "isPermanent": true,
- "key": "string",
- "lastUsedAt": "string",
- "maskedKey": "string",
- "name": "string",
- "orgId": "string",
- "orgNamespace": "string",
- "revokedAt": "string",
- "revokedBy": "string",
- "revokedReason": "string",
- "source": "string",
- "status": "ACTIVE",
- "userId": "string"
}
], - "id": "string",
- "message": "string",
- "status": "string"
}Create an API key for an organization. The API key will be used to authenticate the requests to the Astro Platform API. Requires Auth0 authentication.
| Authorization required | string Auth0 Bearer token |
API Key creation request
| duration required | integer <int64> Enum: -9223372036854776000 9223372036854776000 1 1000 1000000 1000000000 60000000000 3600000000000 duration is the duration for which the API key is valid. It is a string in the format of a number followed by "h" for hours or "d" for days. If not specified, the default duration is 24h. |
| isPermanent | boolean isPermanent is a flag to make the API key permanent. If true, the API key will not expire. If false, the API key will expire after the duration. If not specified, the default value is false. |
| name | string Name is an optional human-readable label for the API key (e.g. "CI/CD Pipeline", "Local Dev"). |
| orgId required | string orgId is the organization Id to which the API key is created. The id is uuid generated by the platform. Use the organization name to get the orgId. |
| source required | string Enum: "cli" "ui" source indicates where the API key was created from (cli or ui) This is used for audit purposes and rate limiting |
{- "duration": -9223372036854776000,
- "isPermanent": true,
- "name": "string",
- "orgId": "string",
- "source": "cli"
}{- "data": {
- "createdAt": "string",
- "duration": "string",
- "expiresAt": "string",
- "featureFlags": {
- "deployPreviewAccess": true,
- "novaChatEnabled": true
}, - "id": "string",
- "isPermanent": true,
- "key": "string",
- "lastUsedAt": "string",
- "maskedKey": "string",
- "name": "string",
- "orgId": "string",
- "orgNamespace": "string",
- "revokedAt": "string",
- "revokedBy": "string",
- "revokedReason": "string",
- "source": "string",
- "status": "ACTIVE",
- "userId": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Delete an API key for an organization by its ID. The API key will no longer be valid for authentication. Requires Auth0 authentication.
| orgId required | string Organization Id |
| Authorization required | string Auth0 Bearer token |
API Key deletion request
| keyId required | string KeyID is the unique identifier of the API key to delete. This is the ID field, not the actual API key value. |
{- "keyId": "string"
}{- "data": {
- "keyId": "string",
- "success": true
}, - "id": "string",
- "message": "string",
- "status": "string"
}Returns the name, status, expiry, and organization association for a specific API key. Requires Auth0 authentication.
| orgId required | string Organization Id |
| keyId required | string Key ID |
| Authorization required | string Auth0 Bearer token |
{- "data": {
- "createdAt": "string",
- "duration": "string",
- "expiresAt": "string",
- "featureFlags": {
- "deployPreviewAccess": true,
- "novaChatEnabled": true
}, - "id": "string",
- "isPermanent": true,
- "key": "string",
- "lastUsedAt": "string",
- "maskedKey": "string",
- "name": "string",
- "orgId": "string",
- "orgNamespace": "string",
- "revokedAt": "string",
- "revokedBy": "string",
- "revokedReason": "string",
- "source": "string",
- "status": "ACTIVE",
- "userId": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Marks the API key as revoked so it can no longer authenticate requests. The key record is retained for audit purposes. Requires Auth0 authentication.
| orgId required | string Organization Id |
| Authorization required | string Auth0 Bearer token |
Reason for revocation
| keyId required | string KeyID is the unique identifier of the API key to revoke. This is the ID field, not the actual API key value. |
| reason | string Reason is the reason for revoking the API key. This is optional and can be used to provide a reason for revoking the API key. |
{- "keyId": "string",
- "reason": "string"
}{- "data": true,
- "id": "string",
- "message": "string",
- "status": "string"
}Returns aggregate counts (active, expired, revoked) and the most recent key activity for the user in the specified organization. Requires Auth0 authentication.
| Authorization required | string Auth0 Bearer token |
{- "data": {
- "activeKeyCount": 0,
- "expiredKeyCount": 0,
- "nearestExpiringKey": {
- "expiresAt": "string",
- "maskedKey": "string"
}, - "revokedKeyCount": 0
}, - "id": "string",
- "message": "string",
- "status": "string"
}Returns the current status of the API key (active, expired, or revoked) along with its expiry timestamp and associated organization. Requires Auth0 authentication.
| Authorization required | string Auth0 Bearer token |
| X-Validate-API-Key required | string API Key to validate |
{- "data": {
- "createdAt": "string",
- "duration": "string",
- "expiresAt": "string",
- "featureFlags": {
- "deployPreviewAccess": true,
- "novaChatEnabled": true
}, - "id": "string",
- "isPermanent": true,
- "key": "string",
- "lastUsedAt": "string",
- "maskedKey": "string",
- "name": "string",
- "orgId": "string",
- "orgNamespace": "string",
- "revokedAt": "string",
- "revokedBy": "string",
- "revokedReason": "string",
- "source": "string",
- "status": "ACTIVE",
- "userId": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Returns all applications deployed within the authenticated user's organization.
| X-Astro-API-Key required | string APIKey |
{- "data": [
- {
- "appName": "string",
- "appProfileName": "string",
- "clusterName": "string",
- "createdTimestamp": "string",
- "endpoint": "string",
- "id": "string",
- "lastUpdatedTimestamp": "string",
- "namespace": "string",
- "orgId": "string",
- "slug": "string",
- "sourceType": "string",
- "status": "PROVISIONING",
- "targetNamespace": "string"
}
], - "id": "string",
- "message": "string",
- "status": "string"
}Permanently removes the application and its associated resources. Only the organization owner can delete applications.
| appId required | string Application Id |
| X-Astro-API-Key required | string APIKey |
{- "details": { },
- "error": "Resource not found",
- "error_code": "NOT_FOUND",
- "status": 404,
- "trace_id": "trace-5e6f7g8h9i"
}Retrieve details of a specific application within an organization
| appId required | string Application Id |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "appName": "string",
- "appProfileName": "string",
- "clusterName": "string",
- "createdTimestamp": "string",
- "endpoint": "string",
- "id": "string",
- "lastUpdatedTimestamp": "string",
- "namespace": "string",
- "orgId": "string",
- "slug": "string",
- "sourceType": "string",
- "status": "PROVISIONING",
- "targetNamespace": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Establishes a WebSocket connection for real-time application event streaming. Upgrades HTTP to WebSocket and streams Pulse (CD) service and optionally Kubernetes events.
| appId required | string Application ID |
| k8s | boolean Default: false Include Kubernetes events in addition to application events |
| X-Astro-API-Key required | string APIKey |
"string"Establishes a WebSocket connection for real-time application log streaming. Upgrades HTTP to WebSocket and streams logs with optional pod and container targeting.
| appId required | string Application ID |
| follow | boolean Default: true Follow logs in real-time |
| tail | integer Number of lines to show from the end of the logs |
| previous | boolean Show previous logs from terminated containers |
| pod | string Specific pod name to get logs from |
| container | string Specific container name within the pod |
| X-Astro-API-Key required | string APIKey |
"string"Triggers an immediate GitOps resync for the application, reconciling the deployed state with the desired configuration in the repository.
| appId required | string Application Id |
| X-Astro-API-Key required | string APIKey |
Resync options
| force | boolean Force sync even if no changes detected or previous operation is stuck Useful when previous deployments are stuck in terminating state |
{- "force": true
}{- "data": {
- "applicationId": "string",
- "force": true,
- "message": "string",
- "status": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Returns the original deployment specification for the application, useful for auditing or re-deploying with modified parameters.
| appId required | string Application ID |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "externalAccess": {
- "accessType": "Ingress",
- "dnsEndpoint": "string"
}, - "name": "string",
- "namespace": "string",
- "profileName": "string",
- "source": {
- "helm": {
- "repo": {
- "chartName": "string",
- "chartVersion": "string",
- "releaseName": "string",
- "repoURL": "string"
}, - "values": {
- "files": [
- "string"
], - "object": { },
- "type": "files"
}
}, - "image": {
- "registry": "string",
- "repository": "string",
- "tag": "string"
}, - "repository": {
- "repo": {
- "path": "string",
- "releaseName": "string",
- "repoURL": "string",
- "targetRevision": "string"
}, - "values": {
- "files": [
- "string"
], - "object": { },
- "type": "files"
}
}, - "type": "image",
- "yaml": {
- "exclude": "string",
- "include": "string",
- "recursive": true,
- "repo": {
- "path": "string",
- "releaseName": "string",
- "repoURL": "string",
- "targetRevision": "string"
}
}
}, - "syncType": "auto"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Opens a WebSocket connection that streams real-time status events for the specified application, including deployment progress, health conditions, and ArgoCD sync state.
| appId required | string Application ID |
| X-Astro-API-Key required | string APIKey |
{- "body": {
- "details": { },
- "error": "Resource not found",
- "error_code": "NOT_FOUND",
- "status": 404,
- "trace_id": "trace-5e6f7g8h9i"
}
}Deploy an application. Use ?dryRun=true to validate without deploying.
| dryRun | boolean When true, validates the configuration without deploying |
| X-Astro-API-Key required | string APIKey |
Application deployment data
object ExternalAccess configures how the application is exposed externally (optional). Defaults to Ingress. The "None" option is only valid for helm/repository source types. | |
| name required | string [ 1 .. 50 ] characters Name is the application name (required, 1-50 characters, valid DNS name). Must be unique within the organization. Format: lowercase alphanumeric and hyphens. |
| namespace | string <= 63 characters Namespace is the Kubernetes namespace for deployment (optional, max 63 characters). Must be a valid Kubernetes namespace name. If omitted, auto-generated from the application name. |
| profileName required | string [ 1 .. 50 ] characters ProfileName is the application profile name (required, 1-50 characters, valid DNS name). Immutable once set — cannot be changed after application creation. |
required | object Source defines where the application artifact is fetched from (required, immutable once set). Must include a valid source type (image, helm, repository, or yaml). |
| syncType | string Enum: "auto" "manual" SyncType controls application synchronization mode (optional, default: "auto"). One of: auto, manual. Use "manual" only for testing on a live cluster. |
{- "externalAccess": {
- "accessType": "Ingress",
- "dnsEndpoint": "string"
}, - "name": "string",
- "namespace": "string",
- "profileName": "string",
- "source": {
- "helm": {
- "repo": {
- "chartName": "string",
- "chartVersion": "string",
- "releaseName": "string",
- "repoURL": "string"
}, - "values": {
- "files": [
- "string"
], - "object": { },
- "type": "files"
}
}, - "image": {
- "registry": "string",
- "repository": "string",
- "tag": "string"
}, - "repository": {
- "repo": {
- "path": "string",
- "releaseName": "string",
- "repoURL": "string",
- "targetRevision": "string"
}, - "values": {
- "files": [
- "string"
], - "object": { },
- "type": "files"
}
}, - "type": "image",
- "yaml": {
- "exclude": "string",
- "include": "string",
- "recursive": true,
- "repo": {
- "path": "string",
- "releaseName": "string",
- "repoURL": "string",
- "targetRevision": "string"
}
}
}, - "syncType": "auto"
}{- "data": { },
- "id": "string",
- "message": "string",
- "status": "string"
}Returns all application profiles for the organization, including their deployment tiers and associated resource configuration.
| X-Astro-API-Key required | string APIKey |
{- "data": [
- {
- "clusterName": "string",
- "clusterSelection": {
- "cloudProvider": {
- "availabilityZones": [
- "string"
], - "provider": "aws",
- "region": "string"
}, - "cluster": {
- "name": "string"
}, - "type": "specified"
}, - "constraints": {
- "availability": {
- "tier": "basic"
}, - "networkTraffic": {
- "incomingRPS": 0,
- "outgoingRPS": 0
}, - "resources": {
- "cpu": {
- "maximum": {
- "Format": "DecimalExponent"
}, - "minimum": {
- "Format": "DecimalExponent"
}
}, - "memory": {
- "maximum": {
- "Format": "DecimalExponent"
}, - "minimum": {
- "Format": "DecimalExponent"
}
}
}
}, - "id": "string",
- "name": "string",
- "namespace": "string",
- "orgId": "string",
- "slug": "string"
}
], - "id": "string",
- "message": "string",
- "status": "string"
}Creates an application profile that defines deployment resources, tier configuration, and environment settings for applications in the organization.
| X-Astro-API-Key required | string APIKey |
Application profile configuration
| availabilityTier | string Enum: "basic" "standard" "premium" AvailabilityTier is the availability tier (optional, default: "basic"). One of: basic, standard, premium. |
object CloudProvider specifies the cloud provider and region for deployment (optional). If omitted, cluster selection is determined by ClusterName or platform defaults. | |
| clusterName | string ClusterName is the target cluster name (optional). Takes precedence over CloudProvider when both are set. |
| profileName required | string [ 1 .. 50 ] characters ProfileName is the profile name (required, 1-50 characters, valid DNS name). Format: lowercase alphanumeric and hyphens, must start with a letter. Example: "example-profile" |
object resources specifies resource requirements for the application. example: {"memory":{"minimum":"1Gi","maximum":"2Gi"}} |
{- "availabilityTier": "basic",
- "cloudProvider": {
- "provider": "aws",
- "region": "string"
}, - "clusterName": "string",
- "profileName": "string",
- "resources": {
- "memory": {
- "maximum": "string",
- "minimum": "string"
}
}
}{- "data": {
- "clusterName": "string",
- "clusterSelection": {
- "cloudProvider": {
- "availabilityZones": [
- "string"
], - "provider": "aws",
- "region": "string"
}, - "cluster": {
- "name": "string"
}, - "type": "specified"
}, - "constraints": {
- "availability": {
- "tier": "basic"
}, - "networkTraffic": {
- "incomingRPS": 0,
- "outgoingRPS": 0
}, - "resources": {
- "cpu": {
- "maximum": {
- "Format": "DecimalExponent"
}, - "minimum": {
- "Format": "DecimalExponent"
}
}, - "memory": {
- "maximum": {
- "Format": "DecimalExponent"
}, - "minimum": {
- "Format": "DecimalExponent"
}
}
}
}, - "id": "string",
- "name": "string",
- "namespace": "string",
- "orgId": "string",
- "slug": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Permanently removes the application profile. Profiles currently in use by deployed applications cannot be deleted.
| profileId required | string Profile ID |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "clusterName": "string",
- "clusterSelection": {
- "cloudProvider": {
- "availabilityZones": [
- "string"
], - "provider": "aws",
- "region": "string"
}, - "cluster": {
- "name": "string"
}, - "type": "specified"
}, - "constraints": {
- "availability": {
- "tier": "basic"
}, - "networkTraffic": {
- "incomingRPS": 0,
- "outgoingRPS": 0
}, - "resources": {
- "cpu": {
- "maximum": {
- "Format": "DecimalExponent"
}, - "minimum": {
- "Format": "DecimalExponent"
}
}, - "memory": {
- "maximum": {
- "Format": "DecimalExponent"
}, - "minimum": {
- "Format": "DecimalExponent"
}
}
}
}, - "id": "string",
- "name": "string",
- "namespace": "string",
- "orgId": "string",
- "slug": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Returns the configuration and tier details for the specified application profile.
| profileId required | string Profile ID |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "clusterName": "string",
- "clusterSelection": {
- "cloudProvider": {
- "availabilityZones": [
- "string"
], - "provider": "aws",
- "region": "string"
}, - "cluster": {
- "name": "string"
}, - "type": "specified"
}, - "constraints": {
- "availability": {
- "tier": "basic"
}, - "networkTraffic": {
- "incomingRPS": 0,
- "outgoingRPS": 0
}, - "resources": {
- "cpu": {
- "maximum": {
- "Format": "DecimalExponent"
}, - "minimum": {
- "Format": "DecimalExponent"
}
}, - "memory": {
- "maximum": {
- "Format": "DecimalExponent"
}, - "minimum": {
- "Format": "DecimalExponent"
}
}
}
}, - "id": "string",
- "name": "string",
- "namespace": "string",
- "orgId": "string",
- "slug": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Removes multiple application profiles in a single request. Profiles in use by active deployments are skipped and reported in the response.
| X-Astro-API-Key required | string APIKey |
List of profile names to delete
| profileNames required | Array of strings |
{- "profileNames": [
- "string"
]
}{- "body": {
- "details": { },
- "error": "Resource not found",
- "error_code": "NOT_FOUND",
- "status": 404,
- "trace_id": "trace-5e6f7g8h9i"
}
}List audit events with filtering and pagination. Requires enterprise plan and admin role.
| page | integer Page number (default: 1) |
| pageSize | integer Items per page (default: 50, max: 100) |
| eventType | string Filter by event type (API_KEY, CLUSTER, APPLICATION, etc.) |
| action | string Filter by action (CREATE, DELETE, UPDATE, REVOKE) |
| userId | string Filter by user ID |
| startDate | string Start date (flexible formats: 2024-01-15, 2024-01-15T00:00:00Z, etc.) |
| endDate | string End date (flexible formats: 2024-01-16, 2024-01-16T23:59:59Z, etc.) |
| X-Astro-API-Key required | string API Key |
{- "data": {
- "events": [
- {
- "action": "string",
- "details": { },
- "event_type": "string",
- "id": "string",
- "ip_address": "string",
- "org_id": "string",
- "request_id": "string",
- "resource": "string",
- "resource_id": "string",
- "source": "string",
- "success": true,
- "timestamp": "string",
- "user_agent": "string",
- "user_id": "string",
- "user_profile": { }
}
], - "pagination": {
- "hasNext": true,
- "page": 0,
- "pageSize": 0,
- "totalItems": 0,
- "totalPages": 0
}
}, - "id": "string",
- "message": "string",
- "status": "string"
}Get details of a specific audit event by ID. Requires enterprise plan and admin role.
| eventId required | string Event ID |
| X-Astro-API-Key required | string API Key |
{- "data": {
- "action": "string",
- "details": { },
- "event_type": "string",
- "id": "string",
- "ip_address": "string",
- "org_id": "string",
- "request_id": "string",
- "resource": "string",
- "resource_id": "string",
- "source": "string",
- "success": true,
- "timestamp": "string",
- "user_agent": "string",
- "user_id": "string",
- "user_profile": { }
}, - "id": "string",
- "message": "string",
- "status": "string"
}Export audit events in CSV or JSON format. Requires enterprise plan and admin role.
| format | string Export format (json, csv) - default: json |
| eventType | string Filter by event type (API_KEY, CLUSTER, APPLICATION, etc.) |
| action | string Filter by action (CREATE, DELETE, UPDATE, REVOKE) |
| userId | string Filter by user ID |
| startDate | string Start date (flexible formats: 2024-01-15, 2024-01-15T00:00:00Z, etc.) |
| endDate | string End date (flexible formats: 2024-01-16, 2024-01-16T23:59:59Z, etc.) |
| X-Astro-API-Key required | string API Key |
"string"Get audit statistics and analytics for an organization. Requires enterprise plan and admin role.
| period | string Time period for statistics (7d, 30d, 90d) - default: 30d |
| X-Astro-API-Key required | string API Key |
{- "data": {
- "events_by_action": {
- "property1": 0,
- "property2": 0
}, - "events_by_type": {
- "property1": 0,
- "property2": 0
}, - "org_id": "string",
- "period": "string",
- "top_users": [
- {
- "event_count": 0,
- "name": "string",
- "user_id": "string"
}
], - "total_events": 0
}, - "id": "string",
- "message": "string",
- "status": "string"
}Get detailed information about a specific availability tier
| tierId required | string Availability tier ID |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "container": {
- "maxSize": 1,
- "minSize": 1
}, - "horizontalAutoScaling": {
- "cpuUtilizationPercentage": 20,
- "enabled": true,
- "maxReplicas": 1,
- "memoryUtilizationPercentage": 20,
- "minReplicas": 1
}, - "id": "string",
- "multiZoneDeployment": true,
- "name": "string",
- "orgId": "string",
- "placementPreference": "soft",
- "priorityLevel": "astro-critical-pc",
- "resources": {
- "cpu": {
- "maximum": "string",
- "minimum": "string"
}, - "memory": {
- "maximum": "string",
- "minimum": "string"
}
}, - "verticalAutoScaling": {
- "enabled": true
}
}, - "id": "string",
- "message": "string",
- "status": "string"
}Check the status of an AWS cloud account connection workflow
| id required | string Cloud account operation ID |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "error": {
- "message": "string"
}, - "id": "string",
- "preSignedTargetCFTemplateURL": "string",
- "status": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Connect your AWS account so AstroPulse can provision EKS clusters. Creates an IAM role via CloudFormation.
| X-Astro-API-Key required | string APIKey |
AWS cloud account request
| clusterName required | string [ 1 .. 50 ] characters ClusterName is the cluster name (required, 1-50 characters, valid DNS name) |
| destinationAccountId | string DestinationAccountId is the target AWS account ID (optional, 12-digit numeric string). Auto-detected from cluster metadata if not provided. |
| duration | integer <int64> Enum: -9223372036854776000 9223372036854776000 1 1000 1000000 1000000000 60000000000 3600000000000 Duration is the validity period for credentials (optional, Go duration format e.g. "1h", "30m") |
| forceUpdate | boolean ForceUpdate bypasses cluster existence checks and forces resource updates (optional, default: false) |
| level | string Enum: "read" "manage" Level is the cloud access level (optional, default: "manage"). One of: read, manage. |
| targetRegion | string TargetRegion is the AWS region for resource creation (optional, e.g. "us-west-2"). Auto-detected from cluster metadata if not provided. |
{- "clusterName": "string",
- "destinationAccountId": "string",
- "duration": -9223372036854776000,
- "forceUpdate": true,
- "level": "read",
- "targetRegion": "string"
}{- "data": {
- "error": {
- "message": "string"
}, - "id": "string",
- "preSignedTargetCFTemplateURL": "string",
- "status": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Get temporary AWS credentials for cluster operations
| X-Astro-API-Key required | string APIKey |
AWS credential request
| clusterName required | string [ 1 .. 50 ] characters ClusterName is the cluster name (required, 1-50 characters, valid DNS name) |
| destinationAccountId | string DestinationAccountId is the target AWS account ID (optional, 12-digit numeric string). Auto-detected from cluster metadata if not provided. |
| duration | integer <int64> Enum: -9223372036854776000 9223372036854776000 1 1000 1000000 1000000000 60000000000 3600000000000 Duration is the validity period for credentials (optional, Go duration format e.g. "1h", "30m") |
| targetRegion | string TargetRegion is the AWS region (optional). Auto-detected from cluster metadata if not provided. |
{- "clusterName": "string",
- "destinationAccountId": "string",
- "duration": -9223372036854776000,
- "targetRegion": "string"
}{- "data": {
- "accessKeyId": "string",
- "expiration": "string",
- "secretAccessKey": "string",
- "sessionToken": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Check the status of an Azure cloud account connection workflow
| id required | string Cloud account operation ID |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "error": {
- "message": "string"
}, - "id": "string",
- "setupScript": "string",
- "setupScriptURL": "string",
- "status": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Connect your Azure subscription so AstroPulse can provision AKS clusters via Workload Identity Federation.
| X-Astro-API-Key required | string APIKey |
Azure cloud account request
| clusterName required | string [ 1 .. 50 ] characters ClusterName is the name of the cluster |
| duration | integer <int64> Enum: -9223372036854776000 9223372036854776000 1 1000 1000000 1000000000 60000000000 3600000000000 Duration is the duration for which the credentials are valid |
| forceUpdate | boolean ForceUpdate bypasses cluster existence checks and forces reconfiguration |
| resourceGroup | string ResourceGroup is the target Azure resource group |
| subscriptionId | string SubscriptionId is the target Azure subscription ID |
| targetRegion | string TargetRegion is the Azure region where resources should be created |
{- "clusterName": "string",
- "duration": -9223372036854776000,
- "forceUpdate": true,
- "resourceGroup": "string",
- "subscriptionId": "string",
- "targetRegion": "string"
}{- "data": {
- "error": {
- "message": "string"
}, - "id": "string",
- "setupScript": "string",
- "setupScriptURL": "string",
- "status": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Get temporary Azure credentials for cluster operations
| clusterName required | string Cluster name |
| subscriptionId | string Azure subscription ID |
| resourceGroup | string Azure resource group |
| targetRegion | string Azure region |
| duration | string Credential duration |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "accessToken": "string",
- "aksApiAudience": "string",
- "clientId": "string",
- "expiration": "string",
- "resourceGroup": "string",
- "subscriptionId": "string",
- "tenantId": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Check the status of a GCP cloud account connection workflow
| id required | string Cloud account operation ID |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "cloudShellScript": "string",
- "cloudShellScriptURL": "string",
- "error": {
- "message": "string"
}, - "id": "string",
- "status": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Connect your GCP project so AstroPulse can provision GKE clusters. Sets up Workload Identity Federation.
| X-Astro-API-Key required | string APIKey |
GCP cloud account request
| clusterName required | string [ 1 .. 50 ] characters ClusterName is the name of the cluster |
| duration | integer <int64> Enum: -9223372036854776000 9223372036854776000 1 1000 1000000 1000000000 60000000000 3600000000000 Duration is the duration for which the credentials are valid |
| forceUpdate | boolean ForceUpdate bypasses cluster existence checks and forces resource updates |
| level | string Enum: "read" "manage" Level specifies the cloud access level: "read" or "manage" (default: "manage") |
| targetProjectId | string TargetProjectId is the ID of the target GCP project (customer project) Optional for credentials - looked up from cluster if not provided Format: 6-30 lowercase letters, digits, hyphens; must start with letter |
| targetProjectNumber | string TargetProjectNumber is the numeric GCP project number (required for cloud connect) Retrieve via: gcloud projects describe PROJECT_ID --format="value(projectNumber)" |
| targetRegion | string TargetRegion is the GCP region where resources should be created Optional for credentials - looked up from cluster if not provided Format: location-direction-number (e.g., us-central1) |
{- "clusterName": "string",
- "duration": -9223372036854776000,
- "forceUpdate": true,
- "level": "read",
- "targetProjectId": "string",
- "targetProjectNumber": "string",
- "targetRegion": "string"
}{- "data": {
- "cloudShellScript": "string",
- "cloudShellScriptURL": "string",
- "error": {
- "message": "string"
}, - "id": "string",
- "status": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Get temporary GCP credentials for cluster operations
| X-Astro-API-Key required | string APIKey |
GCP credential request
| clusterName required | string [ 1 .. 50 ] characters ClusterName is the name of the cluster |
| duration | integer <int64> Enum: -9223372036854776000 9223372036854776000 1 1000 1000000 1000000000 60000000000 3600000000000 Duration is the duration for which the credentials are valid |
| targetProjectId | string TargetProjectId is the ID of the target GCP project Optional - looked up from cluster if not provided |
| targetRegion | string TargetRegion is the GCP region Optional - looked up from cluster if not provided |
{- "clusterName": "string",
- "duration": -9223372036854776000,
- "targetProjectId": "string",
- "targetRegion": "string"
}{- "data": {
- "accessToken": "string",
- "expiration": "string",
- "projectId": "string",
- "serviceAccountEmail": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Get the list of supported Kubernetes versions for a specific provisioner and cloud provider. For GKE, you can filter by release channel to see versions available in that channel.
| cloudProvider required | string Enum: "aws" "gcp" "azure" Cloud provider |
| provisionerType required | string Enum: "selfHosted" "eks" "gke" "aks" Provisioner type |
| region | string Cloud region (optional, uses default region per provider) |
| releaseChannel | string Enum: "RAPID" "REGULAR" "STABLE" GKE release channel filter (GKE only) |
| autopilot | boolean Filter for GKE Autopilot compatible versions (GKE only) |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "channelVersions": {
- "property1": {
- "defaultVersion": "string",
- "validVersions": [
- "string"
]
}, - "property2": {
- "defaultVersion": "string",
- "validVersions": [
- "string"
]
}
}, - "defaultVersion": "string",
- "error": {
- "message": "string"
}, - "supportedVersions": [
- "string"
], - "upgradePaths": [
- {
- "fromVersion": "string",
- "toVersion": "string",
- "upgradeType": "string",
- "warnings": [
- "string"
]
}
]
}, - "id": "string",
- "message": "string",
- "status": "string"
}Stores AWS or GCP credentials for a self-hosted cluster in the encrypted platform vault
| X-Astro-API-Key required | string APIKey |
Self-hosted connect request
| accountId required | string AccountId is the cloud account or project ID (required) |
| bucketName required | string BucketName is the state store bucket name (required) |
| clusterName required | string [ 1 .. 50 ] characters ClusterName is the cluster name (required, 1-50 characters, valid DNS name) |
required | object Credentials contains the cloud provider credential key-value pairs (required) |
| forceUpdate | boolean ForceUpdate overwrites existing vault credentials if true |
| provider required | string Enum: "aws" "azure" "gcp" Provider is the cloud provider (required). One of: aws, gcp. |
| region required | string Region is the cloud region (required) |
{- "accountId": "string",
- "bucketName": "string",
- "clusterName": "string",
- "credentials": {
- "property1": "string",
- "property2": "string"
}, - "forceUpdate": true,
- "provider": "aws",
- "region": "string"
}{- "data": {
- "clusterName": "string",
- "error": {
- "message": "string"
}, - "status": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Removes stored credentials for a self-hosted cluster from the platform vault
| clusterName required | string Cluster name |
| X-Astro-API-Key required | string APIKey |
{- "data": { },
- "id": "string",
- "message": "string",
- "status": "string"
}Returns the status of stored credentials for a self-hosted cluster
| clusterName required | string Cluster name |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "error": {
- "message": "string"
}, - "lastValidated": "string",
- "status": "string",
- "vaultType": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Retrieves a list of all Kubernetes clusters managed by the platform
| providerId | string Cloud Provider ID (e.g., aws, gcp) |
| X-Astro-API-Key required | string APIKey |
{- "data": [
- {
- "addOnService": [
- {
- "createdTimestamp": "string",
- "lastUpdatedTimestamp": "string",
- "name": "string",
- "version": "string"
}
], - "application": [
- {
- "createdTimestamp": "string",
- "dnsEndpoint": "string",
- "inputSourceType": "string",
- "lastUpdatedTimestamp": "string",
- "name": "string",
- "namespace": "string",
- "resourceName": "string"
}
], - "approvalToken": "string",
- "architecture": "string",
- "cloudAccessLevel": "string",
- "clusterFQDN": "string",
- "clusterId": "string",
- "clusterName": "string",
- "controlPlaneNode": {
- "availabilityZones": [
- "string"
], - "instanceType": "ondemand",
- "labels": {
- "property1": "string",
- "property2": "string"
}, - "machineTypes": [
- "string"
], - "maxNode": 0,
- "minNode": 0,
- "name": "string",
- "taints": [
- {
- "effect": "NoSchedule",
- "key": "string",
- "operator": "Equal",
- "value": "string"
}
]
}, - "createdTimestamp": "string",
- "kubernetesVersion": "string",
- "lastUpdatedTimestamp": "string",
- "provider": "string",
- "provisionerType": "eks",
- "region": "string",
- "rollbackStatus": {
- "completedAt": "string",
- "reason": "string",
- "startedAt": "string",
- "status": "UNSPECIFIED",
- "suggestedAction": "string"
}, - "state": "PROVISIONING",
- "totalMonthlyCost": "string",
- "upgradeStatus": {
- "completedAt": "string",
- "reason": "string",
- "startedAt": "string",
- "status": "UNSPECIFIED",
- "suggestedAction": "string"
}, - "workerNodes": [
- {
- "availabilityZones": [
- "string"
], - "instanceType": "ondemand",
- "labels": {
- "property1": "string",
- "property2": "string"
}, - "machineTypes": [
- "string"
], - "maxNode": 0,
- "minNode": 0,
- "name": "string",
- "taints": [
- {
- "effect": "NoSchedule",
- "key": "string",
- "operator": "Equal",
- "value": "string"
}
]
}
]
}
], - "id": "string",
- "message": "string",
- "status": "string"
}Deploys a new Kubernetes cluster with the specified configuration. Accepts both new format (apiVersion/kind/spec) and legacy flat format for backward compatibility. Use ?dryRun=true to validate without creating.
| dryRun | boolean When true, validates the configuration without creating the cluster |
| X-Astro-API-Key required | string APIKey |
Cluster deployment configuration
| apiVersion required | string APIVersion is the API version (required, must be "platform.astropulse.io/v1") |
| kind required | string Kind is the resource kind (required, must be "K8sCluster") |
required | object Spec is the cluster creation specification (required) |
{- "apiVersion": "string",
- "kind": "string",
- "spec": {
- "clusterName": "string",
- "clusterSpec": {
- "controlPlane": {
- "nodeGroup": {
- "labels": {
- "property1": "string",
- "property2": "string"
}, - "machineTypes": [
- "string"
], - "maxNode": 0,
- "minNode": 0,
- "name": "string"
}
}, - "dataPlane": {
- "nodeGroups": [
- {
- "availabilityZones": [
- "string"
], - "instanceType": "ondemand",
- "labels": {
- "property1": "string",
- "property2": "string"
}, - "machineTypes": [
- "string"
], - "maxNode": 0,
- "minNode": 0,
- "name": "string",
- "taints": [
- {
- "effect": "NoSchedule",
- "key": "string",
- "operator": "Equal",
- "value": "string"
}
]
}
]
}
}, - "provider": "aws",
- "provisioner": {
- "aks": {
- "authorizedIPRanges": [
- "string"
], - "autoUpgradeChannel": "patch",
- "credentials": {
- "data": {
- "property1": "string",
- "property2": "string"
}, - "type": "static"
}, - "enableOidcIssuer": true,
- "enableWorkloadIdentity": true,
- "kubernetesVersion": "string",
- "networkPlugin": "azure",
- "networkPluginMode": "overlay",
- "nodeOsUpgradeChannel": "SecurityPatch",
- "privateCluster": true,
- "resourceGroup": "string",
- "subscriptionId": "string",
- "tags": {
- "property1": "string",
- "property2": "string"
}, - "vnetSubnetId": "string"
}, - "eks": {
- "accountId": "string",
- "amiFamily": "string",
- "credentials": {
- "data": {
- "property1": "string",
- "property2": "string"
}, - "type": "static"
}, - "kubernetesVersion": "string",
- "subnets": {
- "property1": [
- {
- "cidr": "string",
- "id": "string",
- "type": "public"
}
], - "property2": [
- {
- "cidr": "string",
- "id": "string",
- "type": "public"
}
]
}, - "tags": {
- "property1": "string",
- "property2": "string"
}, - "vpcCIDR": "string",
- "vpcId": "string"
}, - "gke": {
- "authorizedNetworks": [
- "string"
], - "autopilot": true,
- "credentials": {
- "data": {
- "property1": "string",
- "property2": "string"
}, - "type": "static"
}, - "enableWorkloadIdentity": true,
- "kubernetesVersion": "string",
- "labels": {
- "property1": "string",
- "property2": "string"
}, - "masterIPv4CidrBlock": "string",
- "networkCIDR": "string",
- "networkId": "string",
- "privateCluster": true,
- "projectId": "string",
- "releaseChannel": "string",
- "subnet": {
- "name": "string",
- "podsRange": "string",
- "servicesRange": "string"
}
}, - "selfHosted": {
- "accountId": "string",
- "bucketName": "string",
- "credentials": {
- "data": {
- "property1": "string",
- "property2": "string"
}, - "type": "static"
}, - "kubernetesVersion": "string",
- "networkId": "string"
}, - "type": "selfHosted"
}, - "region": "string"
}
}{- "data": {
- "message": "string",
- "valid": true
}, - "id": "string",
- "message": "string",
- "status": "string"
}Permanently removes the cluster and all associated cloud resources. Registered (agent-based) clusters must use the unregister endpoint instead.
| clusterId required | string Cluster ID |
| X-Astro-API-Key required | string APIKey |
Optional credentials for cluster deletion
required | object Data contains credential key-value pairs. Required for static credentials; may be empty for dynamic credentials. |
| type required | string Enum: "static" "dynamic" "vault" Type is the credential method: "static" for explicit access keys, "dynamic" for cloud provider role-based authentication |
{- "data": {
- "property1": "string",
- "property2": "string"
}, - "type": "static"
}{- "data": {
- "addOnService": [
- {
- "createdTimestamp": "string",
- "lastUpdatedTimestamp": "string",
- "name": "string",
- "version": "string"
}
], - "application": [
- {
- "createdTimestamp": "string",
- "dnsEndpoint": "string",
- "inputSourceType": "string",
- "lastUpdatedTimestamp": "string",
- "name": "string",
- "namespace": "string",
- "resourceName": "string"
}
], - "approvalToken": "string",
- "architecture": "string",
- "cloudAccessLevel": "string",
- "clusterFQDN": "string",
- "clusterId": "string",
- "clusterName": "string",
- "controlPlaneNode": {
- "availabilityZones": [
- "string"
], - "instanceType": "ondemand",
- "labels": {
- "property1": "string",
- "property2": "string"
}, - "machineTypes": [
- "string"
], - "maxNode": 0,
- "minNode": 0,
- "name": "string",
- "taints": [
- {
- "effect": "NoSchedule",
- "key": "string",
- "operator": "Equal",
- "value": "string"
}
]
}, - "createdTimestamp": "string",
- "kubernetesVersion": "string",
- "lastUpdatedTimestamp": "string",
- "provider": "string",
- "provisionerType": "eks",
- "region": "string",
- "rollbackStatus": {
- "completedAt": "string",
- "reason": "string",
- "startedAt": "string",
- "status": "UNSPECIFIED",
- "suggestedAction": "string"
}, - "state": "PROVISIONING",
- "totalMonthlyCost": "string",
- "upgradeStatus": {
- "completedAt": "string",
- "reason": "string",
- "startedAt": "string",
- "status": "UNSPECIFIED",
- "suggestedAction": "string"
}, - "workerNodes": [
- {
- "availabilityZones": [
- "string"
], - "instanceType": "ondemand",
- "labels": {
- "property1": "string",
- "property2": "string"
}, - "machineTypes": [
- "string"
], - "maxNode": 0,
- "minNode": 0,
- "name": "string",
- "taints": [
- {
- "effect": "NoSchedule",
- "key": "string",
- "operator": "Equal",
- "value": "string"
}
]
}
]
}, - "id": "string",
- "message": "string",
- "status": "string"
}Retrieves detailed information about a specific Kubernetes cluster
| clusterId required | string Cluster ID |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "addOnService": [
- {
- "createdTimestamp": "string",
- "lastUpdatedTimestamp": "string",
- "name": "string",
- "version": "string"
}
], - "application": [
- {
- "createdTimestamp": "string",
- "dnsEndpoint": "string",
- "inputSourceType": "string",
- "lastUpdatedTimestamp": "string",
- "name": "string",
- "namespace": "string",
- "resourceName": "string"
}
], - "approvalToken": "string",
- "architecture": "string",
- "cloudAccessLevel": "string",
- "clusterFQDN": "string",
- "clusterId": "string",
- "clusterName": "string",
- "controlPlaneNode": {
- "availabilityZones": [
- "string"
], - "instanceType": "ondemand",
- "labels": {
- "property1": "string",
- "property2": "string"
}, - "machineTypes": [
- "string"
], - "maxNode": 0,
- "minNode": 0,
- "name": "string",
- "taints": [
- {
- "effect": "NoSchedule",
- "key": "string",
- "operator": "Equal",
- "value": "string"
}
]
}, - "createdTimestamp": "string",
- "kubernetesVersion": "string",
- "lastUpdatedTimestamp": "string",
- "provider": "string",
- "provisionerType": "eks",
- "region": "string",
- "rollbackStatus": {
- "completedAt": "string",
- "reason": "string",
- "startedAt": "string",
- "status": "UNSPECIFIED",
- "suggestedAction": "string"
}, - "state": "PROVISIONING",
- "totalMonthlyCost": "string",
- "upgradeStatus": {
- "completedAt": "string",
- "reason": "string",
- "startedAt": "string",
- "status": "UNSPECIFIED",
- "suggestedAction": "string"
}, - "workerNodes": [
- {
- "availabilityZones": [
- "string"
], - "instanceType": "ondemand",
- "labels": {
- "property1": "string",
- "property2": "string"
}, - "machineTypes": [
- "string"
], - "maxNode": 0,
- "minNode": 0,
- "name": "string",
- "taints": [
- {
- "effect": "NoSchedule",
- "key": "string",
- "operator": "Equal",
- "value": "string"
}
]
}
]
}, - "id": "string",
- "message": "string",
- "status": "string"
}Updates an existing Kubernetes cluster configuration including Kubernetes version, node groups, and tags. The platform automatically selects the optimal update strategy based on the provider and what is changing. Use allowDowngrade=true for rollback operations. Dry-run and generate-report requests always return 200 with validation details; clients inspect validationPassed and preflightChecks to determine if the operation is blocked.
| clusterId required | string Cluster ID |
| X-Astro-API-Key required | string APIKey |
Cluster update configuration
| apiVersion required | string APIVersion is the API version (required, must be "platform.astropulse.io/v1") |
| kind required | string Kind is the resource kind (required, must be "K8sClusterUpdate") |
required | object Spec is the update specification (required) |
{- "apiVersion": "string",
- "kind": "string",
- "spec": {
- "aks": {
- "authorizedIPRanges": [
- "string"
], - "autoUpgradeChannel": "patch",
- "nodeOsUpgradeChannel": "SecurityPatch"
}, - "eks": {
- "amiFamily": "AmazonLinux2023"
}, - "gke": {
- "authorizedNetworks": [
- "string"
], - "imageType": "COS_CONTAINERD",
- "maintenanceWindow": {
- "duration": "string",
- "startTime": "string"
}, - "releaseChannel": "RAPID"
}, - "kubernetesVersion": "string",
- "nodeGroups": [
- {
- "availabilityZones": [
- "string"
], - "instanceType": "ondemand",
- "labels": {
- "property1": "string",
- "property2": "string"
}, - "machineTypes": [
- "string"
], - "maxNode": 0,
- "minNode": 0,
- "name": "string",
- "taints": [
- {
- "effect": "NoSchedule",
- "key": "string",
- "operator": "Equal",
- "value": "string"
}
]
}
], - "selfHosted": {
- "controlPlane": {
- "availabilityZones": [
- "string"
], - "instanceType": "ondemand",
- "labels": {
- "property1": "string",
- "property2": "string"
}, - "machineTypes": [
- "string"
], - "maxNode": 0,
- "minNode": 0,
- "name": "string",
- "taints": [
- {
- "effect": "NoSchedule",
- "key": "string",
- "operator": "Equal",
- "value": "string"
}
]
}
}, - "tags": {
- "property1": "string",
- "property2": "string"
}, - "updateConfig": {
- "allowDowngrade": true,
- "dryRun": true,
- "generateReport": true,
- "maxSurge": "string",
- "maxUnavailable": "string",
- "outputFormat": "json"
}
}
}{- "clusterId": "string",
- "errors": [
- "string"
], - "message": "string",
- "status": "PROVISIONING",
- "upgradePlan": {
- "clusterName": "string",
- "currentVersion": "string",
- "phases": [
- {
- "description": "string",
- "details": [
- "string"
], - "estimatedDuration": "string",
- "name": "string",
- "nodePools": [
- {
- "changeType": "UNSPECIFIED",
- "instanceType": "string",
- "machineTypes": [
- "string"
], - "maxNodes": 0,
- "minNodes": 0,
- "name": "string",
- "strategy": "UNSPECIFIED"
}
], - "strategy": "UNSPECIFIED"
}
], - "preflightChecks": [
- {
- "category": "AUTOMATED",
- "description": "string",
- "name": "string",
- "remediation": "string",
- "status": "PASS"
}
], - "provider": "string",
- "provisionerType": "string",
- "region": "string",
- "rollingStrategy": {
- "description": "string",
- "maxSurge": "string",
- "maxUnavailable": "string"
}, - "targetVersion": "string"
}, - "upgradeReport": {
- "canProceed": true,
- "clusterHealth": {
- "issues": [
- "string"
], - "nodesNotReady": 0,
- "nodesReady": 0,
- "systemPodsHealth": "string"
}, - "criticalIssues": [
- {
- "affected": [
- "string"
], - "description": "string",
- "resolution": "string",
- "severity": "string",
- "type": "string"
}
], - "estimatedTime": "string",
- "readinessScore": 0,
- "recommendations": [
- "string"
], - "reportSummary": "string",
- "resourceAnalysis": {
- "cpuUtilization": "string",
- "currentNodes": 0,
- "hasCapacity": true,
- "memoryUtilization": "string",
- "requiredForSurge": 0
}, - "riskLevel": "string",
- "versionAnalysis": {
- "breakingChanges": [
- "string"
], - "currentVersion": "string",
- "deprecatedAPIs": [
- "string"
], - "skippedVersions": [
- "string"
], - "targetVersion": "string",
- "upgradeType": "string"
}, - "warnings": [
- {
- "affected": [
- "string"
], - "description": "string",
- "resolution": "string",
- "severity": "string",
- "type": "string"
}
], - "workloadAnalysis": {
- "criticalWorkloads": [
- "string"
], - "daemonSets": 0,
- "impactSummary": "string",
- "singleReplicas": 0,
- "statefulSets": 0,
- "totalDeployments": 0,
- "withoutPDB": 0
}
}, - "validationPassed": true,
- "warnings": [
- "string"
]
}Removes the agent from a registered cluster. Default: full cleanup. With agent-only=true: only tombstone.
| clusterId required | string Cluster ID |
| agent-only | boolean Default: false Only tombstone agent, keep cluster record |
| X-Astro-API-Key required | string APIKey |
{- "data": { },
- "id": "string",
- "message": "string",
- "status": "string"
}Returns agent connection status and registration progress. Use operationId query param during in-flight registration.
| clusterId required | string Cluster name |
| operationId | string Operation ID for in-flight registration polling |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "connectionStatus": "string",
- "error": {
- "message": "string"
}, - "instructions": {
- "message": "string",
- "scriptContent": "string",
- "url": "string"
}, - "lastHealthCheck": "string",
- "message": "string",
- "operationId": "string",
- "status": "PROVISIONING"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Registers an agent-based tunnel on a Kubernetes cluster. Works with any cluster type.
| clusterId required | string Cluster name |
| X-Astro-API-Key required | string APIKey |
Cluster registration configuration
| architecture | string Enum: "amd64" "arm64" architecture specifies cluster architecture. Defaults to amd64 when omitted. |
| clusterName | string clusterName is the cluster name. Set from the URL path param — ignored if provided in body. |
| dryRun | boolean dryRun generates the agent manifest without persisting the cluster or waiting for agent connection. |
| kubernetesVersion | string kubernetesVersion is optional. If omitted, it is detected from the cluster. |
| provisioner | string provisioner is set automatically by the server — ignored if provided in the request body. |
object provisionerConfig holds provisioner-specific settings (reserved for future use). | |
| region | string region is the cloud region where the cluster is located. Auto-detected when possible. |
{- "architecture": "amd64",
- "clusterName": "string",
- "dryRun": true,
- "kubernetesVersion": "string",
- "provisioner": "string",
- "provisionerConfig": {
- "property1": "string",
- "property2": "string"
}, - "region": "string"
}{- "data": {
- "error": {
- "message": "string"
}, - "message": "string",
- "operationId": "string",
- "status": "PROVISIONING"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Re-synchronizes internal authentication configuration for a specific cluster to fix missing certificates or connectivity issues
| clusterId required | string Cluster ID |
| X-Astro-API-Key required | string APIKey |
{- "data": "string",
- "id": "string",
- "message": "string",
- "status": "string"
}Cancels a running cluster operation (deploy, update, delete) by sending a terminate signal
| clusterId required | string Cluster ID or name |
| X-Astro-API-Key required | string APIKey |
{- "data": { },
- "id": "string",
- "message": "string",
- "status": "string"
}Returns the kubeconfig for the cluster. Returns 202 Accepted while generation is in progress (self-managed clusters), or 200 with the config when ready.
| clusterId required | string Cluster ID |
| X-Astro-API-Key required | string APIKey |
{- "data": [
- 0
], - "id": "string",
- "message": "string",
- "status": "string"
}Initiates kubeconfig generation for the cluster. Managed cloud clusters (EKS, GKE, AKS) return the config immediately; self-managed clusters return 202 and require polling via GET.
| clusterId required | string Cluster ID |
| X-Astro-API-Key required | string APIKey |
Kubeconfig generation request
| clusterName required | string [ 1 .. 50 ] characters ClusterName is the cluster name (required, 1-50 characters, valid DNS name) |
required | object Credentials holds the cloud provider authentication credentials (required) |
| duration required | integer <int64> Enum: -9223372036854776000 9223372036854776000 1 1000 1000000 1000000000 60000000000 3600000000000 Duration is the validity period for the kubeconfig (required, Go duration format e.g. "1h", "30m", "24h") |
{- "clusterName": "string",
- "credentials": {
- "data": {
- "property1": "string",
- "property2": "string"
}, - "type": "static"
}, - "duration": -9223372036854776000
}{- "data": [
- 0
], - "id": "string",
- "message": "string",
- "status": "string"
}Returns historical operations for the cluster. If the cluster record no longer exists, pass provider, provisionerType, accountId, and region as query parameters to look up by storage location.
| clusterId required | string Cluster ID (cluster name) |
| limit | integer Default: 100 Maximum number of operations to return |
| pageToken | string Page token for pagination |
| provider | string Cloud provider: aws, gcp, azure (required if cluster not found) |
| provisionerType | string Provisioner type: selfmanaged, eks, gke, aks (required if cluster not found) |
| accountId | string Cloud account ID (required if cluster not found) |
| region | string Cloud region (required if cluster not found) |
{- "data": {
- "nextPageToken": "string",
- "operations": [
- {
- "clusterId": "string",
- "clusterName": "string",
- "completedAt": {
- "nanos": 0,
- "seconds": 0
}, - "currentPhase": "string",
- "lastUpdate": {
- "nanos": 0,
- "seconds": 0
}, - "message": "string",
- "metadata": {
- "property1": "string",
- "property2": "string"
}, - "operationId": "string",
- "operationType": 0,
- "organizationId": "string",
- "progressPercentage": 0,
- "recentEvents": [
- {
- "clusterId": "string",
- "clusterName": "string",
- "idempotencyKey": "string",
- "labels": {
- "property1": "string",
- "property2": "string"
}, - "level": "string",
- "message": "string",
- "operationId": "string",
- "operationType": 0,
- "phase": "string",
- "progressPercentage": 0,
- "rawOutput": "string",
- "timestamp": {
- "nanos": 0,
- "seconds": 0
}
}
], - "startedAt": {
- "nanos": 0,
- "seconds": 0
}, - "status": 0,
- "userId": "string"
}
], - "totalCount": 0
}, - "id": "string",
- "message": "string",
- "status": "string"
}Returns progress details for the most recent or specified cluster operation. Pass operationId to target a specific operation.
| clusterId required | string Cluster ID |
| operationId | string Operation ID to get progress for (optional) |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "clusterId": "string",
- "clusterName": "string",
- "completedAt": {
- "nanos": 0,
- "seconds": 0
}, - "currentPhase": "string",
- "lastUpdate": {
- "nanos": 0,
- "seconds": 0
}, - "message": "string",
- "metadata": {
- "property1": "string",
- "property2": "string"
}, - "operationId": "string",
- "operationType": 0,
- "organizationId": "string",
- "progressPercentage": 0,
- "recentEvents": [
- {
- "clusterId": "string",
- "clusterName": "string",
- "idempotencyKey": "string",
- "labels": {
- "property1": "string",
- "property2": "string"
}, - "level": "string",
- "message": "string",
- "operationId": "string",
- "operationType": 0,
- "phase": "string",
- "progressPercentage": 0,
- "rawOutput": "string",
- "timestamp": {
- "nanos": 0,
- "seconds": 0
}
}
], - "startedAt": {
- "nanos": 0,
- "seconds": 0
}, - "status": 0,
- "userId": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Opens a WebSocket connection and streams live progress events for an in-progress cluster operation. Use operationId to target a specific run.
| clusterId required | string Cluster ID |
| operationId | string Operation ID to stream progress for (optional) |
| X-Astro-API-Key required | string APIKey |
"string"Retrieves the original specification used to create the cluster
| clusterId required | string Cluster ID |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "apiVersion": "string",
- "kind": "string",
- "spec": {
- "property1": null,
- "property2": null
}
}, - "id": "string",
- "message": "string",
- "status": "string"
}Submits an approve or reject decision for a pending cluster operation. Requires an Auth0 session with org-owner role.
| clusterName required | string Name of the cluster |
| orgId required | string Organization ID |
| token required | string Approval token |
| action required | string Action to perform (APPROVE/REJECT) |
{- "data": "string",
- "id": "string",
- "message": "string",
- "status": "string"
}Returns paginated progress records across all clusters in the organization, filterable by operation type and status.
| operationType | string Operation type filter |
| status | string Status filter |
| limit | integer Limit number of results |
| pageToken | string Page token for pagination |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "nextPageToken": "string",
- "operations": [
- {
- "clusterId": "string",
- "clusterName": "string",
- "completedAt": {
- "nanos": 0,
- "seconds": 0
}, - "currentPhase": "string",
- "lastUpdate": {
- "nanos": 0,
- "seconds": 0
}, - "message": "string",
- "metadata": {
- "property1": "string",
- "property2": "string"
}, - "operationId": "string",
- "operationType": 0,
- "organizationId": "string",
- "progressPercentage": 0,
- "recentEvents": [
- {
- "clusterId": "string",
- "clusterName": "string",
- "idempotencyKey": "string",
- "labels": {
- "property1": "string",
- "property2": "string"
}, - "level": "string",
- "message": "string",
- "operationId": "string",
- "operationType": 0,
- "phase": "string",
- "progressPercentage": 0,
- "rawOutput": "string",
- "timestamp": {
- "nanos": 0,
- "seconds": 0
}
}
], - "startedAt": {
- "nanos": 0,
- "seconds": 0
}, - "status": 0,
- "userId": "string"
}
], - "totalCount": 0
}, - "id": "string",
- "message": "string",
- "status": "string"
}Handles the OAuth redirect from GitHub after a user authorizes the GitHub App installation, persisting the installation ID for the organization.
| installation_id required | string GitHub Installation ID |
| setup_action required | string Setup Action |
{- "data": { },
- "id": "string",
- "message": "string",
- "status": "string"
}Returns all GitHub App installations linked to the organization, including account login, type, and sync status.
| X-Astro-API-Key required | string APIKey |
{- "data": [
- {
- "accountId": "string",
- "accountLogin": "string",
- "accountType": "string",
- "createdAt": "string",
- "createdByUserId": "string",
- "id": "string",
- "organizationId": "string",
- "status": "string",
- "suspendedAt": "string",
- "updatedAt": "string",
- "updatedByUserId": "string"
}
], - "id": "string",
- "message": "string",
- "status": "string"
}Removes the GitHub App installation record from the organization and revokes any stored deployment credentials. The installation remains active on GitHub.
| installation_id required | string Installation ID |
| X-Astro-API-Key required | string APIKey |
{- "data": { },
- "id": "string",
- "message": "string",
- "status": "string"
}Returns account details, permissions, and sync status for the specified GitHub App installation.
| installation_id required | string Installation ID |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "accountId": "string",
- "accountLogin": "string",
- "accountType": "string",
- "createdAt": "string",
- "createdByUserId": "string",
- "id": "string",
- "organizationId": "string",
- "status": "string",
- "suspendedAt": "string",
- "updatedAt": "string",
- "updatedByUserId": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Links an existing GitHub App installation (from another organization or a personal account) to the current organization, enabling repository access.
| installation_id required | string Installation ID |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "accountId": "string",
- "accountLogin": "string",
- "accountType": "string",
- "createdAt": "string",
- "createdByUserId": "string",
- "id": "string",
- "organizationId": "string",
- "status": "string",
- "suspendedAt": "string",
- "updatedAt": "string",
- "updatedByUserId": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Returns all repositories the GitHub App installation has been granted access to, filtered by the specified installation ID.
| installation_id required | string Installation ID |
| X-Astro-API-Key required | string APIKey |
{- "data": [
- {
- "allow_auto_merge": true,
- "allow_forking": true,
- "allow_merge_commit": true,
- "allow_rebase_merge": true,
- "allow_squash_merge": true,
- "allow_update_branch": true,
- "archive_url": "string",
- "archived": true,
- "assignees_url": "string",
- "auto_init": true,
- "blobs_url": "string",
- "branches_url": "string",
- "clone_url": "string",
- "code_of_conduct": {
- "body": "string",
- "key": "string",
- "name": "string",
- "url": "string"
}, - "collaborators_url": "string",
- "comments_url": "string",
- "commits_url": "string",
- "compare_url": "string",
- "contents_url": "string",
- "contributors_url": "string",
- "created_at": {
- "time.Time": "string"
}, - "custom_properties": {
- "property1": "string",
- "property2": "string"
}, - "default_branch": "string",
- "delete_branch_on_merge": true,
- "deployments_url": "string",
- "description": "string",
- "disabled": true,
- "downloads_url": "string",
- "events_url": "string",
- "fork": true,
- "forks_count": 0,
- "forks_url": "string",
- "full_name": "string",
- "git_commits_url": "string",
- "git_refs_url": "string",
- "git_tags_url": "string",
- "git_url": "string",
- "gitignore_template": "string",
- "has_discussions": true,
- "has_downloads": true,
- "has_issues": true,
- "has_pages": true,
- "has_projects": true,
- "has_wiki": true,
- "homepage": "string",
- "hooks_url": "string",
- "html_url": "string",
- "id": 0,
- "is_template": true,
- "issue_comment_url": "string",
- "issue_events_url": "string",
- "issues_url": "string",
- "keys_url": "string",
- "labels_url": "string",
- "language": "string",
- "languages_url": "string",
- "license": {
- "body": "string",
- "conditions": [
- "string"
], - "description": "string",
- "featured": true,
- "html_url": "string",
- "implementation": "string",
- "key": "string",
- "limitations": [
- "string"
], - "name": "string",
- "permissions": [
- "string"
], - "spdx_id": "string",
- "url": "string"
}, - "license_template": "string",
- "master_branch": "string",
- "merge_commit_message": "string",
- "merge_commit_title": "string",
- "merges_url": "string",
- "milestones_url": "string",
- "mirror_url": "string",
- "name": "string",
- "network_count": 0,
- "node_id": "string",
- "notifications_url": "string",
- "open_issues": 0,
- "open_issues_count": 0,
- "organization": {
- "advanced_security_enabled_for_new_repositories": true,
- "avatar_url": "string",
- "billing_email": "string",
- "blog": "string",
- "collaborators": 0,
- "company": "string",
- "created_at": {
- "time.Time": "string"
}, - "default_repository_permission": "string",
- "default_repository_settings": "string",
- "dependabot_alerts_enabled_for_new_repositories": true,
- "dependabot_security_updates_enabled_for_new_repositories": true,
- "dependency_graph_enabled_for_new_repositories": true,
- "description": "string",
- "disk_usage": 0,
- "email": "string",
- "events_url": "string",
- "followers": 0,
- "following": 0,
- "has_organization_projects": true,
- "has_repository_projects": true,
- "hooks_url": "string",
- "html_url": "string",
- "id": 0,
- "is_verified": true,
- "issues_url": "string",
- "location": "string",
- "login": "string",
- "members_allowed_repository_creation_type": "string",
- "members_can_create_internal_repositories": true,
- "members_can_create_pages": true,
- "members_can_create_private_pages": true,
- "members_can_create_private_repositories": true,
- "members_can_create_public_pages": true,
- "members_can_create_public_repositories": true,
- "members_can_create_repositories": true,
- "members_can_fork_private_repositories": true,
- "members_url": "string",
- "name": "string",
- "node_id": "string",
- "owned_private_repos": 0,
- "plan": {
- "collaborators": 0,
- "filled_seats": 0,
- "name": "string",
- "private_repos": 0,
- "seats": 0,
- "space": 0
}, - "private_gists": 0,
- "public_gists": 0,
- "public_members_url": "string",
- "public_repos": 0,
- "repos_url": "string",
- "secret_scanning_enabled_for_new_repositories": true,
- "secret_scanning_push_protection_enabled_for_new_repositories": true,
- "secret_scanning_validity_checks_enabled": true,
- "total_private_repos": 0,
- "twitter_username": "string",
- "two_factor_requirement_enabled": true,
- "type": "string",
- "updated_at": {
- "time.Time": "string"
}, - "url": "string",
- "web_commit_signoff_required": true
}, - "owner": {
- "avatar_url": "string",
- "bio": "string",
- "blog": "string",
- "collaborators": 0,
- "company": "string",
- "created_at": {
- "time.Time": "string"
}, - "disk_usage": 0,
- "email": "string",
- "events_url": "string",
- "followers": 0,
- "followers_url": "string",
- "following": 0,
- "following_url": "string",
- "gists_url": "string",
- "gravatar_id": "string",
- "hireable": true,
- "html_url": "string",
- "id": 0,
- "ldap_dn": "string",
- "location": "string",
- "login": "string",
- "name": "string",
- "node_id": "string",
- "organizations_url": "string",
- "owned_private_repos": 0,
- "permissions": {
- "property1": true,
- "property2": true
}, - "plan": {
- "collaborators": 0,
- "filled_seats": 0,
- "name": "string",
- "private_repos": 0,
- "seats": 0,
- "space": 0
}, - "private_gists": 0,
- "public_gists": 0,
- "public_repos": 0,
- "received_events_url": "string",
- "repos_url": "string",
- "role_name": "string",
- "site_admin": true,
- "starred_url": "string",
- "subscriptions_url": "string",
- "suspended_at": {
- "time.Time": "string"
}, - "text_matches": [
- {
- "fragment": "string",
- "matches": [
- {
- "indices": [
- 0
], - "text": "string"
}
], - "object_type": "string",
- "object_url": "string",
- "property": "string"
}
], - "total_private_repos": 0,
- "twitter_username": "string",
- "two_factor_authentication": true,
- "type": "string",
- "updated_at": {
- "time.Time": "string"
}, - "url": "string"
}, - "parent": { },
- "permissions": {
- "property1": true,
- "property2": true
}, - "private": true,
- "pulls_url": "string",
- "pushed_at": {
- "time.Time": "string"
}, - "releases_url": "string",
- "role_name": "string",
- "security_and_analysis": {
- "advanced_security": {
- "status": "string"
}, - "dependabot_security_updates": {
- "status": "string"
}, - "secret_scanning": {
- "status": "string"
}, - "secret_scanning_push_protection": {
- "status": "string"
}, - "secret_scanning_validity_checks": {
- "status": "string"
}
}, - "size": 0,
- "source": { },
- "squash_merge_commit_message": "string",
- "squash_merge_commit_title": "string",
- "ssh_url": "string",
- "stargazers_count": 0,
- "stargazers_url": "string",
- "statuses_url": "string",
- "subscribers_count": 0,
- "subscribers_url": "string",
- "subscription_url": "string",
- "svn_url": "string",
- "tags_url": "string",
- "team_id": 0,
- "teams_url": "string",
- "template_repository": { },
- "text_matches": [
- {
- "fragment": "string",
- "matches": [
- {
- "indices": [
- 0
], - "text": "string"
}
], - "object_type": "string",
- "object_url": "string",
- "property": "string"
}
], - "topics": [
- "string"
], - "trees_url": "string",
- "updated_at": {
- "time.Time": "string"
}, - "url": "string",
- "use_squash_pr_title_as_default": true,
- "visibility": "string",
- "watchers": 0,
- "watchers_count": 0,
- "web_commit_signoff_required": true
}
], - "id": "string",
- "message": "string",
- "status": "string"
}Returns a short-lived GitHub App installation access token scoped to the given installation. Use this token to make authenticated GitHub API calls on behalf of the installation.
| installation_id required | string Installation ID |
| X-Astro-API-Key required | string APIKey |
{- "data": { },
- "id": "string",
- "message": "string",
- "status": "string"
}Detects GitHub App installations and cross-references with local records. Returns linked (already mapped) and available (on GitHub but not mapped) installations. With refresh=true, re-verifies linked installations and re-creates deployment credentials.
| X-Astro-API-Key required | string APIKey |
Options: refresh (bool)
| property name* additional property | boolean |
{- "property1": true,
- "property2": true
}{- "data": { },
- "id": "string",
- "message": "string",
- "status": "string"
}Returns a short-lived access token scoped to a single repository. Intended for CI/CD systems that need read access to deploy configuration files.
| X-Astro-API-Key required | string APIKey |
Repository information
| property name* additional property | string |
{- "property1": "string",
- "property2": "string"
}{- "data": { },
- "id": "string",
- "message": "string",
- "status": "string"
}Returns all branch names in the specified GitHub repository, useful for populating branch selectors in deployment workflows.
| repoUrl required | string Repository URL |
| X-Astro-API-Key required | string APIKey |
{- "data": [
- {
- "commit": {
- "author": {
- "avatar_url": "string",
- "bio": "string",
- "blog": "string",
- "collaborators": 0,
- "company": "string",
- "created_at": {
- "time.Time": "string"
}, - "disk_usage": 0,
- "email": "string",
- "events_url": "string",
- "followers": 0,
- "followers_url": "string",
- "following": 0,
- "following_url": "string",
- "gists_url": "string",
- "gravatar_id": "string",
- "hireable": true,
- "html_url": "string",
- "id": 0,
- "ldap_dn": "string",
- "location": "string",
- "login": "string",
- "name": "string",
- "node_id": "string",
- "organizations_url": "string",
- "owned_private_repos": 0,
- "permissions": {
- "property1": true,
- "property2": true
}, - "plan": {
- "collaborators": 0,
- "filled_seats": 0,
- "name": "string",
- "private_repos": 0,
- "seats": 0,
- "space": 0
}, - "private_gists": 0,
- "public_gists": 0,
- "public_repos": 0,
- "received_events_url": "string",
- "repos_url": "string",
- "role_name": "string",
- "site_admin": true,
- "starred_url": "string",
- "subscriptions_url": "string",
- "suspended_at": {
- "time.Time": "string"
}, - "text_matches": [
- {
- "fragment": "string",
- "matches": [
- {
- "indices": [
- null
], - "text": "string"
}
], - "object_type": "string",
- "object_url": "string",
- "property": "string"
}
], - "total_private_repos": 0,
- "twitter_username": "string",
- "two_factor_authentication": true,
- "type": "string",
- "updated_at": {
- "time.Time": "string"
}, - "url": "string"
}, - "comments_url": "string",
- "commit": {
- "author": {
- "date": {
- "time.Time": "string"
}, - "email": "string",
- "name": "string",
- "username": "string"
}, - "comment_count": 0,
- "committer": {
- "date": {
- "time.Time": "string"
}, - "email": "string",
- "name": "string",
- "username": "string"
}, - "html_url": "string",
- "message": "string",
- "node_id": "string",
- "parents": [
- { }
], - "sha": "string",
- "stats": {
- "additions": 0,
- "deletions": 0,
- "total": 0
}, - "tree": {
- "sha": "string",
- "tree": [
- {
- "content": "string",
- "mode": "string",
- "path": "string",
- "sha": "string",
- "size": 0,
- "type": "string",
- "url": "string"
}
], - "truncated": true
}, - "url": "string",
- "verification": {
- "payload": "string",
- "reason": "string",
- "signature": "string",
- "verified": true
}
}, - "committer": {
- "avatar_url": "string",
- "bio": "string",
- "blog": "string",
- "collaborators": 0,
- "company": "string",
- "created_at": {
- "time.Time": "string"
}, - "disk_usage": 0,
- "email": "string",
- "events_url": "string",
- "followers": 0,
- "followers_url": "string",
- "following": 0,
- "following_url": "string",
- "gists_url": "string",
- "gravatar_id": "string",
- "hireable": true,
- "html_url": "string",
- "id": 0,
- "ldap_dn": "string",
- "location": "string",
- "login": "string",
- "name": "string",
- "node_id": "string",
- "organizations_url": "string",
- "owned_private_repos": 0,
- "permissions": {
- "property1": true,
- "property2": true
}, - "plan": {
- "collaborators": 0,
- "filled_seats": 0,
- "name": "string",
- "private_repos": 0,
- "seats": 0,
- "space": 0
}, - "private_gists": 0,
- "public_gists": 0,
- "public_repos": 0,
- "received_events_url": "string",
- "repos_url": "string",
- "role_name": "string",
- "site_admin": true,
- "starred_url": "string",
- "subscriptions_url": "string",
- "suspended_at": {
- "time.Time": "string"
}, - "text_matches": [
- {
- "fragment": "string",
- "matches": [
- {
- "indices": [
- null
], - "text": "string"
}
], - "object_type": "string",
- "object_url": "string",
- "property": "string"
}
], - "total_private_repos": 0,
- "twitter_username": "string",
- "two_factor_authentication": true,
- "type": "string",
- "updated_at": {
- "time.Time": "string"
}, - "url": "string"
}, - "files": [
- {
- "additions": 0,
- "blob_url": "string",
- "changes": 0,
- "contents_url": "string",
- "deletions": 0,
- "filename": "string",
- "patch": "string",
- "previous_filename": "string",
- "raw_url": "string",
- "sha": "string",
- "status": "string"
}
], - "html_url": "string",
- "node_id": "string",
- "parents": [
- {
- "author": {
- "date": {
- "time.Time": "string"
}, - "email": "string",
- "name": "string",
- "username": "string"
}, - "comment_count": 0,
- "committer": {
- "date": {
- "time.Time": "string"
}, - "email": "string",
- "name": "string",
- "username": "string"
}, - "html_url": "string",
- "message": "string",
- "node_id": "string",
- "parents": [
- { }
], - "sha": "string",
- "stats": {
- "additions": 0,
- "deletions": 0,
- "total": 0
}, - "tree": {
- "sha": "string",
- "tree": [
- {
- "content": "string",
- "mode": "string",
- "path": "string",
- "sha": "string",
- "size": 0,
- "type": "string",
- "url": "string"
}
], - "truncated": true
}, - "url": "string",
- "verification": {
- "payload": "string",
- "reason": "string",
- "signature": "string",
- "verified": true
}
}
], - "sha": "string",
- "stats": {
- "additions": 0,
- "deletions": 0,
- "total": 0
}, - "url": "string"
}, - "name": "string",
- "protected": true,
- "protection": {
- "allow_deletions": {
- "enabled": true
}, - "allow_force_pushes": {
- "enabled": true
}, - "allow_fork_syncing": {
- "enabled": true
}, - "block_creations": {
- "enabled": true
}, - "enforce_admins": {
- "enabled": true,
- "url": "string"
}, - "lock_branch": {
- "enabled": true
}, - "required_conversation_resolution": {
- "enabled": true
}, - "required_linear_history": {
- "enabled": true
}, - "required_pull_request_reviews": {
- "bypass_pull_request_allowances": {
- "apps": [
- {
- "created_at": {
- "time.Time": "string"
}, - "description": "string",
- "events": [
- "string"
], - "external_url": "string",
- "html_url": "string",
- "id": 0,
- "installations_count": 0,
- "name": "string",
- "node_id": "string",
- "owner": {
- "avatar_url": "string",
- "bio": "string",
- "blog": "string",
- "collaborators": 0,
- "company": "string",
- "created_at": {
- "time.Time": null
}, - "disk_usage": 0,
- "email": "string",
- "events_url": "string",
- "followers": 0,
- "followers_url": "string",
- "following": 0,
- "following_url": "string",
- "gists_url": "string",
- "gravatar_id": "string",
- "hireable": true,
- "html_url": "string",
- "id": 0,
- "ldap_dn": "string",
- "location": "string",
- "login": "string",
- "name": "string",
- "node_id": "string",
- "organizations_url": "string",
- "owned_private_repos": 0,
- "permissions": {
- "property1": null,
- "property2": null
}, - "plan": {
- "collaborators": null,
- "filled_seats": null,
- "name": null,
- "private_repos": null,
- "seats": null,
- "space": null
}, - "private_gists": 0,
- "public_gists": 0,
- "public_repos": 0,
- "received_events_url": "string",
- "repos_url": "string",
- "role_name": "string",
- "site_admin": true,
- "starred_url": "string",
- "subscriptions_url": "string",
- "suspended_at": {
- "time.Time": null
}, - "text_matches": [
- null
], - "total_private_repos": 0,
- "twitter_username": "string",
- "two_factor_authentication": true,
- "type": "string",
- "updated_at": {
- "time.Time": null
}, - "url": "string"
}, - "permissions": {
- "actions": "string",
- "administration": "string",
- "blocking": "string",
- "checks": "string",
- "content_references": "string",
- "contents": "string",
- "deployments": "string",
- "emails": "string",
- "environments": "string",
- "followers": "string",
- "issues": "string",
- "members": "string",
- "metadata": "string",
- "organization_administration": "string",
- "organization_custom_properties": "string",
- "organization_custom_roles": "string",
- "organization_hooks": "string",
- "organization_packages": "string",
- "organization_plan": "string",
- "organization_pre_receive_hooks": "string",
- "organization_projects": "string",
- "organization_secrets": "string",
- "organization_self_hosted_runners": "string",
- "organization_user_blocking": "string",
- "packages": "string",
- "pages": "string",
- "pull_requests": "string",
- "repository_hooks": "string",
- "repository_pre_receive_hooks": "string",
- "repository_projects": "string",
- "secret_scanning_alerts": "string",
- "secrets": "string",
- "security_events": "string",
- "single_file": "string",
- "statuses": "string",
- "team_discussions": "string",
- "vulnerability_alerts": "string",
- "workflows": "string"
}, - "slug": "string",
- "updated_at": {
- "time.Time": "string"
}
}
], - "teams": [
- {
- "description": "string",
- "html_url": "string",
- "id": 0,
- "ldap_dn": "string",
- "members_count": 0,
- "members_url": "string",
- "name": "string",
- "node_id": "string",
- "organization": {
- "advanced_security_enabled_for_new_repositories": true,
- "avatar_url": "string",
- "billing_email": "string",
- "blog": "string",
- "collaborators": 0,
- "company": "string",
- "created_at": {
- "time.Time": null
}, - "default_repository_permission": "string",
- "default_repository_settings": "string",
- "dependabot_alerts_enabled_for_new_repositories": true,
- "dependabot_security_updates_enabled_for_new_repositories": true,
- "dependency_graph_enabled_for_new_repositories": true,
- "description": "string",
- "disk_usage": 0,
- "email": "string",
- "events_url": "string",
- "followers": 0,
- "following": 0,
- "has_organization_projects": true,
- "has_repository_projects": true,
- "hooks_url": "string",
- "html_url": "string",
- "id": 0,
- "is_verified": true,
- "issues_url": "string",
- "location": "string",
- "login": "string",
- "members_allowed_repository_creation_type": "string",
- "members_can_create_internal_repositories": true,
- "members_can_create_pages": true,
- "members_can_create_private_pages": true,
- "members_can_create_private_repositories": true,
- "members_can_create_public_pages": true,
- "members_can_create_public_repositories": true,
- "members_can_create_repositories": true,
- "members_can_fork_private_repositories": true,
- "members_url": "string",
- "name": "string",
- "node_id": "string",
- "owned_private_repos": 0,
- "plan": {
- "collaborators": null,
- "filled_seats": null,
- "name": null,
- "private_repos": null,
- "seats": null,
- "space": null
}, - "private_gists": 0,
- "public_gists": 0,
- "public_members_url": "string",
- "public_repos": 0,
- "repos_url": "string",
- "secret_scanning_enabled_for_new_repositories": true,
- "secret_scanning_push_protection_enabled_for_new_repositories": true,
- "secret_scanning_validity_checks_enabled": true,
- "total_private_repos": 0,
- "twitter_username": "string",
- "two_factor_requirement_enabled": true,
- "type": "string",
- "updated_at": {
- "time.Time": null
}, - "url": "string",
- "web_commit_signoff_required": true
}, - "parent": { },
- "permission": "string",
- "permissions": {
- "property1": true,
- "property2": true
}, - "privacy": "string",
- "repos_count": 0,
- "repositories_url": "string",
- "slug": "string",
- "url": "string"
}
], - "users": [
- {
- "avatar_url": "string",
- "bio": "string",
- "blog": "string",
- "collaborators": 0,
- "company": "string",
- "created_at": {
- "time.Time": "string"
}, - "disk_usage": 0,
- "email": "string",
- "events_url": "string",
- "followers": 0,
- "followers_url": "string",
- "following": 0,
- "following_url": "string",
- "gists_url": "string",
- "gravatar_id": "string",
- "hireable": true,
- "html_url": "string",
- "id": 0,
- "ldap_dn": "string",
- "location": "string",
- "login": "string",
- "name": "string",
- "node_id": "string",
- "organizations_url": "string",
- "owned_private_repos": 0,
- "permissions": {
- "property1": true,
- "property2": true
}, - "plan": {
- "collaborators": 0,
- "filled_seats": 0,
- "name": "string",
- "private_repos": 0,
- "seats": 0,
- "space": 0
}, - "private_gists": 0,
- "public_gists": 0,
- "public_repos": 0,
- "received_events_url": "string",
- "repos_url": "string",
- "role_name": "string",
- "site_admin": true,
- "starred_url": "string",
- "subscriptions_url": "string",
- "suspended_at": {
- "time.Time": "string"
}, - "text_matches": [
- {
- "fragment": null,
- "matches": [ ],
- "object_type": null,
- "object_url": null,
- "property": null
}
], - "total_private_repos": 0,
- "twitter_username": "string",
- "two_factor_authentication": true,
- "type": "string",
- "updated_at": {
- "time.Time": "string"
}, - "url": "string"
}
]
}, - "dismiss_stale_reviews": true,
- "dismissal_restrictions": {
- "apps": [
- {
- "created_at": {
- "time.Time": "string"
}, - "description": "string",
- "events": [
- "string"
], - "external_url": "string",
- "html_url": "string",
- "id": 0,
- "installations_count": 0,
- "name": "string",
- "node_id": "string",
- "owner": {
- "avatar_url": "string",
- "bio": "string",
- "blog": "string",
- "collaborators": 0,
- "company": "string",
- "created_at": {
- "time.Time": null
}, - "disk_usage": 0,
- "email": "string",
- "events_url": "string",
- "followers": 0,
- "followers_url": "string",
- "following": 0,
- "following_url": "string",
- "gists_url": "string",
- "gravatar_id": "string",
- "hireable": true,
- "html_url": "string",
- "id": 0,
- "ldap_dn": "string",
- "location": "string",
- "login": "string",
- "name": "string",
- "node_id": "string",
- "organizations_url": "string",
- "owned_private_repos": 0,
- "permissions": {
- "property1": null,
- "property2": null
}, - "plan": {
- "collaborators": null,
- "filled_seats": null,
- "name": null,
- "private_repos": null,
- "seats": null,
- "space": null
}, - "private_gists": 0,
- "public_gists": 0,
- "public_repos": 0,
- "received_events_url": "string",
- "repos_url": "string",
- "role_name": "string",
- "site_admin": true,
- "starred_url": "string",
- "subscriptions_url": "string",
- "suspended_at": {
- "time.Time": null
}, - "text_matches": [
- null
], - "total_private_repos": 0,
- "twitter_username": "string",
- "two_factor_authentication": true,
- "type": "string",
- "updated_at": {
- "time.Time": null
}, - "url": "string"
}, - "permissions": {
- "actions": "string",
- "administration": "string",
- "blocking": "string",
- "checks": "string",
- "content_references": "string",
- "contents": "string",
- "deployments": "string",
- "emails": "string",
- "environments": "string",
- "followers": "string",
- "issues": "string",
- "members": "string",
- "metadata": "string",
- "organization_administration": "string",
- "organization_custom_properties": "string",
- "organization_custom_roles": "string",
- "organization_hooks": "string",
- "organization_packages": "string",
- "organization_plan": "string",
- "organization_pre_receive_hooks": "string",
- "organization_projects": "string",
- "organization_secrets": "string",
- "organization_self_hosted_runners": "string",
- "organization_user_blocking": "string",
- "packages": "string",
- "pages": "string",
- "pull_requests": "string",
- "repository_hooks": "string",
- "repository_pre_receive_hooks": "string",
- "repository_projects": "string",
- "secret_scanning_alerts": "string",
- "secrets": "string",
- "security_events": "string",
- "single_file": "string",
- "statuses": "string",
- "team_discussions": "string",
- "vulnerability_alerts": "string",
- "workflows": "string"
}, - "slug": "string",
- "updated_at": {
- "time.Time": "string"
}
}
], - "teams": [
- {
- "description": "string",
- "html_url": "string",
- "id": 0,
- "ldap_dn": "string",
- "members_count": 0,
- "members_url": "string",
- "name": "string",
- "node_id": "string",
- "organization": {
- "advanced_security_enabled_for_new_repositories": true,
- "avatar_url": "string",
- "billing_email": "string",
- "blog": "string",
- "collaborators": 0,
- "company": "string",
- "created_at": {
- "time.Time": null
}, - "default_repository_permission": "string",
- "default_repository_settings": "string",
- "dependabot_alerts_enabled_for_new_repositories": true,
- "dependabot_security_updates_enabled_for_new_repositories": true,
- "dependency_graph_enabled_for_new_repositories": true,
- "description": "string",
- "disk_usage": 0,
- "email": "string",
- "events_url": "string",
- "followers": 0,
- "following": 0,
- "has_organization_projects": true,
- "has_repository_projects": true,
- "hooks_url": "string",
- "html_url": "string",
- "id": 0,
- "is_verified": true,
- "issues_url": "string",
- "location": "string",
- "login": "string",
- "members_allowed_repository_creation_type": "string",
- "members_can_create_internal_repositories": true,
- "members_can_create_pages": true,
- "members_can_create_private_pages": true,
- "members_can_create_private_repositories": true,
- "members_can_create_public_pages": true,
- "members_can_create_public_repositories": true,
- "members_can_create_repositories": true,
- "members_can_fork_private_repositories": true,
- "members_url": "string",
- "name": "string",
- "node_id": "string",
- "owned_private_repos": 0,
- "plan": {
- "collaborators": null,
- "filled_seats": null,
- "name": null,
- "private_repos": null,
- "seats": null,
- "space": null
}, - "private_gists": 0,
- "public_gists": 0,
- "public_members_url": "string",
- "public_repos": 0,
- "repos_url": "string",
- "secret_scanning_enabled_for_new_repositories": true,
- "secret_scanning_push_protection_enabled_for_new_repositories": true,
- "secret_scanning_validity_checks_enabled": true,
- "total_private_repos": 0,
- "twitter_username": "string",
- "two_factor_requirement_enabled": true,
- "type": "string",
- "updated_at": {
- "time.Time": null
}, - "url": "string",
- "web_commit_signoff_required": true
}, - "parent": { },
- "permission": "string",
- "permissions": {
- "property1": true,
- "property2": true
}, - "privacy": "string",
- "repos_count": 0,
- "repositories_url": "string",
- "slug": "string",
- "url": "string"
}
], - "users": [
- {
- "avatar_url": "string",
- "bio": "string",
- "blog": "string",
- "collaborators": 0,
- "company": "string",
- "created_at": {
- "time.Time": "string"
}, - "disk_usage": 0,
- "email": "string",
- "events_url": "string",
- "followers": 0,
- "followers_url": "string",
- "following": 0,
- "following_url": "string",
- "gists_url": "string",
- "gravatar_id": "string",
- "hireable": true,
- "html_url": "string",
- "id": 0,
- "ldap_dn": "string",
- "location": "string",
- "login": "string",
- "name": "string",
- "node_id": "string",
- "organizations_url": "string",
- "owned_private_repos": 0,
- "permissions": {
- "property1": true,
- "property2": true
}, - "plan": {
- "collaborators": 0,
- "filled_seats": 0,
- "name": "string",
- "private_repos": 0,
- "seats": 0,
- "space": 0
}, - "private_gists": 0,
- "public_gists": 0,
- "public_repos": 0,
- "received_events_url": "string",
- "repos_url": "string",
- "role_name": "string",
- "site_admin": true,
- "starred_url": "string",
- "subscriptions_url": "string",
- "suspended_at": {
- "time.Time": "string"
}, - "text_matches": [
- {
- "fragment": null,
- "matches": [ ],
- "object_type": null,
- "object_url": null,
- "property": null
}
], - "total_private_repos": 0,
- "twitter_username": "string",
- "two_factor_authentication": true,
- "type": "string",
- "updated_at": {
- "time.Time": "string"
}, - "url": "string"
}
]
}, - "require_code_owner_reviews": true,
- "require_last_push_approval": true,
- "required_approving_review_count": 0
}, - "required_signatures": {
- "enabled": true,
- "url": "string"
}, - "required_status_checks": {
- "checks": [
- {
- "app_id": 0,
- "context": "string"
}
], - "contexts": [
- "string"
], - "contexts_url": "string",
- "strict": true,
- "url": "string"
}, - "restrictions": {
- "apps": [
- {
- "created_at": {
- "time.Time": "string"
}, - "description": "string",
- "events": [
- "string"
], - "external_url": "string",
- "html_url": "string",
- "id": 0,
- "installations_count": 0,
- "name": "string",
- "node_id": "string",
- "owner": {
- "avatar_url": "string",
- "bio": "string",
- "blog": "string",
- "collaborators": 0,
- "company": "string",
- "created_at": {
- "time.Time": "string"
}, - "disk_usage": 0,
- "email": "string",
- "events_url": "string",
- "followers": 0,
- "followers_url": "string",
- "following": 0,
- "following_url": "string",
- "gists_url": "string",
- "gravatar_id": "string",
- "hireable": true,
- "html_url": "string",
- "id": 0,
- "ldap_dn": "string",
- "location": "string",
- "login": "string",
- "name": "string",
- "node_id": "string",
- "organizations_url": "string",
- "owned_private_repos": 0,
- "permissions": {
- "property1": true,
- "property2": true
}, - "plan": {
- "collaborators": 0,
- "filled_seats": 0,
- "name": "string",
- "private_repos": 0,
- "seats": 0,
- "space": 0
}, - "private_gists": 0,
- "public_gists": 0,
- "public_repos": 0,
- "received_events_url": "string",
- "repos_url": "string",
- "role_name": "string",
- "site_admin": true,
- "starred_url": "string",
- "subscriptions_url": "string",
- "suspended_at": {
- "time.Time": "string"
}, - "text_matches": [
- {
- "fragment": null,
- "matches": [ ],
- "object_type": null,
- "object_url": null,
- "property": null
}
], - "total_private_repos": 0,
- "twitter_username": "string",
- "two_factor_authentication": true,
- "type": "string",
- "updated_at": {
- "time.Time": "string"
}, - "url": "string"
}, - "permissions": {
- "actions": "string",
- "administration": "string",
- "blocking": "string",
- "checks": "string",
- "content_references": "string",
- "contents": "string",
- "deployments": "string",
- "emails": "string",
- "environments": "string",
- "followers": "string",
- "issues": "string",
- "members": "string",
- "metadata": "string",
- "organization_administration": "string",
- "organization_custom_properties": "string",
- "organization_custom_roles": "string",
- "organization_hooks": "string",
- "organization_packages": "string",
- "organization_plan": "string",
- "organization_pre_receive_hooks": "string",
- "organization_projects": "string",
- "organization_secrets": "string",
- "organization_self_hosted_runners": "string",
- "organization_user_blocking": "string",
- "packages": "string",
- "pages": "string",
- "pull_requests": "string",
- "repository_hooks": "string",
- "repository_pre_receive_hooks": "string",
- "repository_projects": "string",
- "secret_scanning_alerts": "string",
- "secrets": "string",
- "security_events": "string",
- "single_file": "string",
- "statuses": "string",
- "team_discussions": "string",
- "vulnerability_alerts": "string",
- "workflows": "string"
}, - "slug": "string",
- "updated_at": {
- "time.Time": "string"
}
}
], - "teams": [
- {
- "description": "string",
- "html_url": "string",
- "id": 0,
- "ldap_dn": "string",
- "members_count": 0,
- "members_url": "string",
- "name": "string",
- "node_id": "string",
- "organization": {
- "advanced_security_enabled_for_new_repositories": true,
- "avatar_url": "string",
- "billing_email": "string",
- "blog": "string",
- "collaborators": 0,
- "company": "string",
- "created_at": {
- "time.Time": "string"
}, - "default_repository_permission": "string",
- "default_repository_settings": "string",
- "dependabot_alerts_enabled_for_new_repositories": true,
- "dependabot_security_updates_enabled_for_new_repositories": true,
- "dependency_graph_enabled_for_new_repositories": true,
- "description": "string",
- "disk_usage": 0,
- "email": "string",
- "events_url": "string",
- "followers": 0,
- "following": 0,
- "has_organization_projects": true,
- "has_repository_projects": true,
- "hooks_url": "string",
- "html_url": "string",
- "id": 0,
- "is_verified": true,
- "issues_url": "string",
- "location": "string",
- "login": "string",
- "members_allowed_repository_creation_type": "string",
- "members_can_create_internal_repositories": true,
- "members_can_create_pages": true,
- "members_can_create_private_pages": true,
- "members_can_create_private_repositories": true,
- "members_can_create_public_pages": true,
- "members_can_create_public_repositories": true,
- "members_can_create_repositories": true,
- "members_can_fork_private_repositories": true,
- "members_url": "string",
- "name": "string",
- "node_id": "string",
- "owned_private_repos": 0,
- "plan": {
- "collaborators": 0,
- "filled_seats": 0,
- "name": "string",
- "private_repos": 0,
- "seats": 0,
- "space": 0
}, - "private_gists": 0,
- "public_gists": 0,
- "public_members_url": "string",
- "public_repos": 0,
- "repos_url": "string",
- "secret_scanning_enabled_for_new_repositories": true,
- "secret_scanning_push_protection_enabled_for_new_repositories": true,
- "secret_scanning_validity_checks_enabled": true,
- "total_private_repos": 0,
- "twitter_username": "string",
- "two_factor_requirement_enabled": true,
- "type": "string",
- "updated_at": {
- "time.Time": "string"
}, - "url": "string",
- "web_commit_signoff_required": true
}, - "parent": { },
- "permission": "string",
- "permissions": {
- "property1": true,
- "property2": true
}, - "privacy": "string",
- "repos_count": 0,
- "repositories_url": "string",
- "slug": "string",
- "url": "string"
}
], - "users": [
- {
- "avatar_url": "string",
- "bio": "string",
- "blog": "string",
- "collaborators": 0,
- "company": "string",
- "created_at": {
- "time.Time": "string"
}, - "disk_usage": 0,
- "email": "string",
- "events_url": "string",
- "followers": 0,
- "followers_url": "string",
- "following": 0,
- "following_url": "string",
- "gists_url": "string",
- "gravatar_id": "string",
- "hireable": true,
- "html_url": "string",
- "id": 0,
- "ldap_dn": "string",
- "location": "string",
- "login": "string",
- "name": "string",
- "node_id": "string",
- "organizations_url": "string",
- "owned_private_repos": 0,
- "permissions": {
- "property1": true,
- "property2": true
}, - "plan": {
- "collaborators": 0,
- "filled_seats": 0,
- "name": "string",
- "private_repos": 0,
- "seats": 0,
- "space": 0
}, - "private_gists": 0,
- "public_gists": 0,
- "public_repos": 0,
- "received_events_url": "string",
- "repos_url": "string",
- "role_name": "string",
- "site_admin": true,
- "starred_url": "string",
- "subscriptions_url": "string",
- "suspended_at": {
- "time.Time": "string"
}, - "text_matches": [
- {
- "fragment": "string",
- "matches": [
- null
], - "object_type": "string",
- "object_url": "string",
- "property": "string"
}
], - "total_private_repos": 0,
- "twitter_username": "string",
- "two_factor_authentication": true,
- "type": "string",
- "updated_at": {
- "time.Time": "string"
}, - "url": "string"
}
]
}, - "url": "string"
}
}
], - "id": "string",
- "message": "string",
- "status": "string"
}Returns file and directory entries for the given path in the repository. Defaults to the repository root if no path is specified.
| repoUrl required | string Repository URL |
| branch | string Branch name (defaults to default branch) |
| path | string Path within repository (defaults to root) |
| X-Astro-API-Key required | string APIKey |
{- "data": [
- {
- "content": "string",
- "download_url": "string",
- "encoding": "string",
- "git_url": "string",
- "html_url": "string",
- "name": "string",
- "path": "string",
- "sha": "string",
- "size": 0,
- "submodule_git_url": "string",
- "target": "string",
- "type": "string",
- "url": "string"
}
], - "id": "string",
- "message": "string",
- "status": "string"
}Returns the decoded content of a file at the specified path and ref. Supports YAML, JSON, and plain text files up to GitHub's API size limit.
| repoUrl required | string Repository URL |
| branch | string Branch name (defaults to main) |
| filePath required | string File path within repository |
| X-Astro-API-Key required | string APIKey |
{- "data": { },
- "id": "string",
- "message": "string",
- "status": "string"
}Verifies that a file or directory at the given path exists in the repository. Returns the content type (file or directory) and metadata if found.
| X-Astro-API-Key required | string APIKey |
Repository and path information
| property name* additional property | string |
{- "property1": "string",
- "property2": "string"
}{- "data": { },
- "id": "string",
- "message": "string",
- "status": "string"
}Returns all configured notification delivery integrations (e.g., email, Slack) for the organization.
| X-Astro-API-Key | string APIKey |
| Authorization | string Auth0 Bearer token |
| X-Astro-Organization-ID required | string Organization ID |
{- "data": [
- {
- "channel": "email",
- "config": {
- "addresses": [
- "string"
], - "botTokenRef": "string",
- "channel": "string",
- "enabled": true,
- "installedBy": [
- "string"
], - "type": "webhook",
- "webhookUrl": "string",
- "workspaceId": "string"
}, - "createdAt": "string",
- "enabled": true,
- "id": "string",
- "orgId": "string",
- "updatedAt": "string"
}
], - "id": "string",
- "message": "string",
- "status": "string"
}Saves the delivery channel configuration (e.g., Slack webhook URL or email recipients) for the organization, replacing any existing settings for that channel type.
| X-Astro-API-Key | string APIKey |
| Authorization | string Auth0 Bearer token |
| X-Astro-Organization-ID required | string Organization ID |
Integration configuration
| channel | string (models.NotificationChannelType) Enum: "email" "slack" |
object (models.NotificationIntegrationConfigInput) | |
| enabled | boolean |
{- "channel": "email",
- "config": {
- "addresses": [
- "string"
], - "botTokenRef": "string",
- "channel": "string",
- "enabled": true,
- "installedBy": [
- "string"
], - "type": "webhook",
- "webhookUrl": "string",
- "workspaceId": "string"
}, - "enabled": true
}{- "data": {
- "channel": "email",
- "config": {
- "addresses": [
- "string"
], - "botTokenRef": "string",
- "channel": "string",
- "enabled": true,
- "installedBy": [
- "string"
], - "type": "webhook",
- "webhookUrl": "string",
- "workspaceId": "string"
}, - "createdAt": "string",
- "enabled": true,
- "id": "string",
- "orgId": "string",
- "updatedAt": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Removes the notification delivery integration for the specified channel. Existing subscriptions using this channel will no longer deliver notifications.
| channel required | string Channel type (email, slack) |
| X-Astro-API-Key | string APIKey |
| Authorization | string Auth0 Bearer token |
| X-Astro-Organization-ID required | string Organization ID |
{- "data": true,
- "id": "string",
- "message": "string",
- "status": "string"
}Returns the configuration for the specified notification delivery channel (email or slack).
| channel required | string Channel type (email, slack) |
| X-Astro-API-Key | string APIKey |
| Authorization | string Auth0 Bearer token |
| X-Astro-Organization-ID required | string Organization ID |
{- "data": {
- "channel": "email",
- "config": {
- "addresses": [
- "string"
], - "botTokenRef": "string",
- "channel": "string",
- "enabled": true,
- "installedBy": [
- "string"
], - "type": "webhook",
- "webhookUrl": "string",
- "workspaceId": "string"
}, - "createdAt": "string",
- "enabled": true,
- "id": "string",
- "orgId": "string",
- "updatedAt": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Returns all configured notification subscriptions for the organization, including topics and delivery channels.
| X-Astro-API-Key | string APIKey |
| Authorization | string Auth0 Bearer token |
| X-Astro-Organization-ID required | string Organization ID |
{- "data": [
- {
- "channels": [
- "email"
], - "createdAt": "string",
- "enabled": true,
- "id": "string",
- "orgId": "string",
- "system": true,
- "topic": "string",
- "updatedAt": "string"
}
], - "id": "string",
- "message": "string",
- "status": "string"
}Saves the notification subscription for the given topic, replacing any existing configuration. At least one delivery channel is required.
| X-Astro-API-Key | string APIKey |
| Authorization | string Auth0 Bearer token |
| X-Astro-Organization-ID required | string Organization ID |
Subscription configuration
| channels | Array of strings (models.NotificationChannelType) Items Enum: "email" "slack" |
| enabled | boolean |
| topic | string |
{- "channels": [
- "email"
], - "enabled": true,
- "topic": "string"
}{- "data": {
- "channels": [
- "email"
], - "createdAt": "string",
- "enabled": true,
- "id": "string",
- "orgId": "string",
- "system": true,
- "topic": "string",
- "updatedAt": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Removes the notification subscription for the given topic. The organization will no longer receive alerts for this event type.
| topic required | string Notification topic |
| X-Astro-API-Key | string APIKey |
| Authorization | string Auth0 Bearer token |
| X-Astro-Organization-ID required | string Organization ID |
{- "data": true,
- "id": "string",
- "message": "string",
- "status": "string"
}Returns the notification subscription configuration for the specified event topic, including its enabled channels.
| topic required | string Notification topic |
| X-Astro-API-Key | string APIKey |
| Authorization | string Auth0 Bearer token |
| X-Astro-Organization-ID required | string Organization ID |
{- "data": {
- "channels": [
- "email"
], - "createdAt": "string",
- "enabled": true,
- "id": "string",
- "orgId": "string",
- "system": true,
- "topic": "string",
- "updatedAt": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Processes an unsubscribe link click, disabling the specified notification subscription for the organization associated with the unsubscribe token.
| X-Astro-API-Key | string APIKey |
| Authorization | string Auth0 Bearer token |
| X-Astro-Organization-ID required | string Organization ID |
Unsubscribe request
| channel | string channel is the optional notification channel to unsubscribe from If not specified, unsubscribes from all channels for the topic |
| topic required | string topic is the notification topic to unsubscribe from |
{- "channel": "string",
- "topic": "string"
}{- "data": true,
- "id": "string",
- "message": "string",
- "status": "string"
}Get a list of organizations associated with the authenticated user
| page | integer Page number for pagination |
| pageSize | integer Number of items per page |
| X-Astro-API-Key required | string APIKey |
{- "data": [
- {
- "createdAt": "string",
- "featureFlags": {
- "deployPreviewAccess": true,
- "novaChatEnabled": true
}, - "id": "string",
- "members": [
- {
- "joinedAt": "string",
- "role": "string",
- "userId": "string"
}
], - "name": "string",
- "orgNamespace": "string",
- "owner": true,
- "ownerUserId": "string",
- "planId": "string",
- "roles": [
- {
- "id": "string",
- "name": "string",
- "permissions": [
- {
- "description": "string",
- "id": "string",
- "name": "string"
}
]
}
], - "slug": "string",
- "title": "string",
- "userRole": "string"
}
], - "id": "string",
- "message": "string",
- "status": "string"
}Create a new organization and provision its associated resources. The authenticated user becomes the organization admin. Organization names must be unique.
| X-Astro-API-Key required | string APIKey |
organization request
| name required | string [ 1 .. 50 ] characters Name is the organization name (required, 1-50 characters, valid DNS name). Must be unique. Format: lowercase alphanumeric and hyphens, must start with a letter. |
| title | string Title is a human-readable display title for the organization (optional) |
{- "name": "string",
- "title": "string"
}{- "data": {
- "createdAt": "string",
- "featureFlags": {
- "deployPreviewAccess": true,
- "novaChatEnabled": true
}, - "id": "string",
- "members": [
- {
- "joinedAt": "string",
- "role": "string",
- "userId": "string"
}
], - "name": "string",
- "orgNamespace": "string",
- "owner": true,
- "ownerUserId": "string",
- "planId": "string",
- "roles": [
- {
- "id": "string",
- "name": "string",
- "permissions": [
- {
- "description": "string",
- "id": "string",
- "name": "string"
}
]
}
], - "slug": "string",
- "title": "string",
- "userRole": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Returns full organization details including name, plan, member count, and provisioning status.
| id required | string Organization ID |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "createdAt": "string",
- "featureFlags": {
- "deployPreviewAccess": true,
- "novaChatEnabled": true
}, - "id": "string",
- "members": [
- {
- "joinedAt": "string",
- "role": "string",
- "userId": "string"
}
], - "name": "string",
- "orgNamespace": "string",
- "owner": true,
- "ownerUserId": "string",
- "planId": "string",
- "roles": [
- {
- "id": "string",
- "name": "string",
- "permissions": [
- {
- "description": "string",
- "id": "string",
- "name": "string"
}
]
}
], - "slug": "string",
- "title": "string",
- "userRole": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Get all members of an organization with pagination
| id required | string Organization ID |
| page | integer Page number (default: 1) |
| pageSize | integer Items per page (default: 10) |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "pagination": {
- "currentPage": 0,
- "hasNextPage": true,
- "itemsPerPage": 0,
- "totalItem": 0,
- "totalPages": 0
}, - "users": [
- {
- "email": "string",
- "joinedAt": "string",
- "name": "string",
- "orgId": "string",
- "planId": "string",
- "role": "string",
- "userId": "string"
}
]
}, - "id": "string",
- "message": "string",
- "status": "string"
}Get the current subscription plan for an organization
| id required | string Organization ID |
| X-Astro-API-Key required | string APIKey |
{- "data": "string",
- "id": "string",
- "message": "string",
- "status": "string"
}Add a user to an organization with specified role
| X-Astro-API-Key required | string APIKey |
User details and role
| orgId required | string OrgId is the organization identifier (required, UUID format) |
| role required | string Enum: "viewer" "editor" "admin" Role is the organization role to assign (required). One of: viewer, editor, admin. |
| userId required | string UserId is the user identifier (required, UUID format) |
{- "orgId": "string",
- "role": "viewer",
- "userId": "string"
}{- "data": {
- "email": "string",
- "joinedAt": "string",
- "name": "string",
- "orgId": "string",
- "planId": "string",
- "role": "string",
- "userId": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Get all available subscription plans
| X-Astro-API-Key required | string APIKey |
{- "data": [
- {
- "createdAt": "string",
- "cta": {
- "href": "string",
- "text": "string",
- "variant": "string"
}, - "description": "string",
- "highlight": true,
- "id": "string",
- "name": "string",
- "popular": true,
- "price": {
- "monthly": 0,
- "yearly": 0
}, - "updatedAt": "string"
}
], - "id": "string",
- "message": "string",
- "status": "string"
}Removes the specified user from the organization. The last admin cannot be removed.
| X-Astro-API-Key required | string APIKey |
User details
| orgId required | string OrgId is the organization identifier (required, UUID format) |
| userId required | string UserId is the user identifier (required, UUID format) |
{- "orgId": "string",
- "userId": "string"
}{- "data": "string",
- "id": "string",
- "message": "string",
- "status": "string"
}Returns the list of roles that can be assigned to organization members (e.g. admin, member).
| X-Astro-API-Key required | string APIKey |
{- "data": [
- {
- "id": "string",
- "name": "string",
- "permissions": [
- {
- "description": "string",
- "id": "string",
- "name": "string"
}
]
}
], - "id": "string",
- "message": "string",
- "status": "string"
}Returns all active pricing plans and categories. No authentication required.
{- "data": {
- "categories": [
- {
- "features": [
- {
- "description": "string",
- "developer": {
- "allowedRoles": [
- "string"
], - "enabled": true,
- "limit": 0,
- "tier": "string"
}, - "enterprise": {
- "allowedRoles": [
- "string"
], - "enabled": true,
- "limit": 0,
- "tier": "string"
}, - "id": "string",
- "name": "string"
}
], - "id": "string",
- "name": "string"
}
], - "plans": [
- {
- "createdAt": "string",
- "cta": {
- "href": "string",
- "text": "string",
- "variant": "string"
}, - "description": "string",
- "highlight": true,
- "id": "string",
- "name": "string",
- "popular": true,
- "price": {
- "monthly": 0,
- "yearly": 0
}, - "updatedAt": "string"
}
]
}, - "id": "string",
- "message": "string",
- "status": "string"
}Returns the list of cloud providers available for cluster provisioning on this platform.
| X-Astro-API-Key required | string APIKey |
{- "data": [
- "string"
], - "id": "string",
- "message": "string",
- "status": "string"
}Returns all regions supported for cluster deployment with the given cloud provider.
| providerId required | string Provider ID (e.g., aws, gcp, azure) |
| X-Astro-API-Key required | string APIKey |
{- "data": [
- "string"
], - "id": "string",
- "message": "string",
- "status": "string"
}Lists all available machine types for the specified provider, region, and zone
| providerId required | string Provider ID (e.g., aws, gcp, azure) |
| regionId required | string Region ID |
| zoneId required | string Zone ID |
| cpuMin | string Minimum CPU requirement (e.g., '1', '500m') |
| cpuMax | string Maximum CPU requirement (e.g., '4', '2000m') |
| memMin | string Minimum memory requirement (e.g., '1Gi', '512Mi') |
| memMax | string Maximum memory requirement (e.g., '8Gi', '4Gi') |
| category | string Enum: "GeneralPurpose" "ComputeOptimized" "MemoryOptimized" "AcceleratorOptimized" "GPU" Machine type category |
| architecture | string Enum: "x86_64" "arm64" CPU architecture |
| zoneId | string Zone ID (if not specified, first available zone will be used) |
| X-Astro-API-Key required | string APIKey |
{- "data": [
- {
- "architecture": [
- "string"
], - "category": "string",
- "infos": { },
- "memoryMb": 0,
- "name": "string",
- "onDemandPricePerHour": "string",
- "osPlatform": "string",
- "spotPricePerHour": "string",
- "timeGenerated": "string",
- "vCPU": 0,
- "zone": "string"
}
], - "id": "string",
- "message": "string",
- "status": "string"
}Get detailed information about a specific machine type
| providerId required | string Provider ID (e.g., aws, gcp, azure) |
| regionId required | string Region name |
| machinetypeId required | string Machine type name |
| zoneId | string Zone ID (if not specified, first available zone will be used) |
| X-Astro-API-Key required | string APIKey |
{- "data": {
- "architecture": [
- "string"
], - "category": "string",
- "infos": { },
- "memoryMb": 0,
- "name": "string",
- "onDemandPricePerHour": "string",
- "osPlatform": "string",
- "spotPricePerHour": "string",
- "timeGenerated": "string",
- "vCPU": 0,
- "zone": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Lists all available zones for the specified region in a cloud provider
| providerId required | string Provider ID (e.g., aws, gcp, azure) |
| regionId required | string Region ID |
| X-Astro-API-Key required | string APIKey |
{- "data": [
- "string"
], - "id": "string",
- "message": "string",
- "status": "string"
}Sets the user's active organization so subsequent API calls default to that organization's scope. The user must be a member of the target organization.
Organization to switch to
| orgId required | string |
{- "orgId": "string"
}{- "data": {
- "orgId": "string",
- "orgName": "string",
- "orgNamespace": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Returns the authenticated user's profile, organization memberships, roles, and active organization context.
{- "data": {
- "createdAt": "string",
- "currentOrgId": "string",
- "email": "string",
- "identityProvider": "string",
- "loginCount": 0,
- "name": "string",
- "organization": [
- {
- "createdAt": "string",
- "featureFlags": {
- "deployPreviewAccess": true,
- "novaChatEnabled": true
}, - "id": "string",
- "members": [
- {
- "joinedAt": "string",
- "role": "string",
- "userId": "string"
}
], - "name": "string",
- "orgNamespace": "string",
- "owner": true,
- "ownerUserId": "string",
- "planId": "string",
- "roles": [
- {
- "id": "string",
- "name": "string",
- "permissions": [
- {
- "description": "string",
- "id": "string",
- "name": "string"
}
]
}
], - "slug": "string",
- "title": "string",
- "userRole": "string"
}
], - "preferredOrganizationId": "string",
- "roles": [
- "string"
], - "userId": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}Creates a platform profile for the authenticated user if one does not yet exist, or returns the existing profile. Called automatically after first login.
{- "data": {
- "createdAt": "string",
- "currentOrgId": "string",
- "email": "string",
- "identityProvider": "string",
- "loginCount": 0,
- "name": "string",
- "organization": [
- {
- "createdAt": "string",
- "featureFlags": {
- "deployPreviewAccess": true,
- "novaChatEnabled": true
}, - "id": "string",
- "members": [
- {
- "joinedAt": "string",
- "role": "string",
- "userId": "string"
}
], - "name": "string",
- "orgNamespace": "string",
- "owner": true,
- "ownerUserId": "string",
- "planId": "string",
- "roles": [
- {
- "id": "string",
- "name": "string",
- "permissions": [
- {
- "description": "string",
- "id": "string",
- "name": "string"
}
]
}
], - "slug": "string",
- "title": "string",
- "userRole": "string"
}
], - "preferredOrganizationId": "string",
- "roles": [
- "string"
], - "userId": "string"
}, - "id": "string",
- "message": "string",
- "status": "string"
}