Skip to content

GCO Cluster Gateway (internal ALB) — API spec sheet

Gateway cluster-gateway · OpenAPI 3.1.0 · API version 1.0.0 · 44 endpoints · 12 schemas

The HTTP surface of the internal ALB that fronts a GCO region: the Kubernetes Gateway gco-system/gco-gateway (GatewayClass gco-aws-alb, implemented by gateway.k8s.aws/alb, the AWS Load Balancer Controller) with one HTTPS:443 listener. Its HTTPRoute gco-routes sends each request to a Service by longest path prefix; every operation below is one a backend Service serves and the route delivers to it, tagged with that Service and annotated with the winning rule (x-gco-route). The ALB is internal and answers only the API Gateway proxy Lambdas (over Global Accelerator or from the regional bridge's VPC), which sign every request with the HMAC envelope (x-gco-signature and companions) that the services verify on every path except /api/v1/health, /healthz, /metrics, /readyz. The ALB terminates TLS with a deployment-local certificate and re-encrypts to a TLS proxy sidecar on each pod; the service documents describe the same operations as their applications see them.

Servers

  • https://{alb_hostname}

The region's internal ALB, registered in SSM as /<project>/alb-hostname-<region> by ga-registration and kept current by the health monitor; reachable from inside the VPC and from Global Accelerator only. Clients present SNI backend.<project>.gco.internal.

Variable Default Description
alb_hostname "<internal-alb-hostname>" Assigned by the AWS Load Balancer Controller at deploy time.

Routing

  • Gateway: gco-system/gco-gateway (GatewayClass gco-aws-alb, controller gateway.k8s.aws/alb)
  • Listener: https HTTPS:443; load balancer scheme internal
  • HTTPRoute: gco-routes
  • Paths served without the HMAC envelope: /api/v1/health, /healthz, /metrics, /readyz

HTTPRoute rules

In document order; the controller awards precedence by path specificity (longest prefix wins), so / is the catch-all.

Path prefix Service Port
/api/v1/health health-monitor 443
/api/v1/metrics health-monitor 443
/api/v1/manifests manifest-processor 443
/inference inference-proxy 443
/healthz health-monitor 443
/ manifest-processor 443

Load balancer

{
  "listenerConfigurations": [
    {
      "defaultCertificate": "{{BACKEND_TLS_CERTIFICATE_ARN}}",
      "protocolPort": "HTTPS:443",
      "sslPolicy": "ELBSecurityPolicy-TLS13-1-2-2021-06"
    }
  ],
  "loadBalancerAttributes": [
    {
      "key": "idle_timeout.timeout_seconds",
      "value": "300"
    }
  ],
  "scheme": "internal",
  "tags": {
    "gco.aws/gateway": "gco-system/gco-gateway"
  }
}

Target group

{
  "healthCheck": {
    "healthCheckInterval": 15,
    "healthCheckPath": "/healthz",
    "healthCheckProtocol": "HTTPS",
    "healthCheckTimeout": 5,
    "healthyThresholdCount": 2,
    "unhealthyThresholdCount": 2
  },
  "protocol": "HTTPS",
  "targetGroupAttributes": [
    {
      "key": "deregistration_delay.timeout_seconds",
      "value": "900"
    }
  ],
  "targetType": "ip"
}

Paths a Service serves but never receives

A prefix cannot be split between Services, so these implementations are reachable only by addressing the Service inside the cluster.

Path Implemented by Winning rule Delivered to
/ health-monitor / manifest-processor
/api/v1/status health-monitor / manifest-processor
/readyz health-monitor / manifest-processor
/ inference-proxy / manifest-processor
/healthz inference-proxy /healthz health-monitor
/readyz inference-proxy / manifest-processor
/api/v1/health manifest-processor /api/v1/health health-monitor
/healthz manifest-processor /healthz health-monitor

Services not on the ALB

  • cost-monitor — reached through manifest-processor (/api/v1/cost*). Confined to manifest-processor traffic by a NetworkPolicy and runs no authentication middleware of its own; the manifest processor's /api/v1/cost/* routes are its authenticated front, reaching it at https://cost-monitor.gco-system.svc.cluster.local:8443 and verifying its certificate against the cluster's internal CA.

Downstream of the backends

  • inference-proxy → gco-inference/, -canary or -proxy Services. Resolves /inference/<endpoint>/... by endpoint name from the inference endpoint store, requires the endpoint to be running in this region, allows only its serving and health paths, and streams https://<service>.gco-inference.svc.cluster.local:8443/<path> back, verifying the model pod's TLS sidecar against the cluster's internal CA.

Security schemes

gcoHmac

  • Type: apiKey — header x-gco-signature

Request-bound HMAC envelope minted by the API Gateway proxy Lambdas (x-gco-signature-version, x-gco-timestamp, x-gco-nonce, x-gco-signature): the signature covers the method, exact path and query, body digest, timestamp and nonce under the shared signing key from Secrets Manager. Verified by gco/services/auth_middleware.py; a failure is a 403. Original caller identity is authenticated upstream by API Gateway IAM.

Endpoints

Method Path Summary Tags
GET / Root manifest-processor, Info
GET /api/v1/cost/reports List Cost Reports manifest-processor, Cost
POST /api/v1/cost/reports Generate Cost Report manifest-processor, Cost
GET /api/v1/cost/status Get Cost Status manifest-processor, Cost
GET /api/v1/health Health Check health-monitor
GET /api/v1/jobs List Jobs manifest-processor, Jobs
DELETE /api/v1/jobs Bulk Delete Jobs manifest-processor, Jobs
POST /api/v1/jobs/from-template/{name} Create Job From Template manifest-processor, Templates
GET /api/v1/jobs/{namespace}/{name} Get Job manifest-processor, Jobs
DELETE /api/v1/jobs/{namespace}/{name} Delete Job manifest-processor, Jobs
GET /api/v1/jobs/{namespace}/{name}/events Get Job Events manifest-processor, Jobs
GET /api/v1/jobs/{namespace}/{name}/logs Get Job Logs manifest-processor, Jobs
GET /api/v1/jobs/{namespace}/{name}/metrics Get Job Metrics manifest-processor, Jobs
GET /api/v1/jobs/{namespace}/{name}/pods Get Job Pods manifest-processor, Jobs
GET /api/v1/jobs/{namespace}/{name}/pods/{pod_name}/logs Get Pod Logs manifest-processor, Jobs
POST /api/v1/jobs/{namespace}/{name}/retry Retry Job manifest-processor, Jobs
POST /api/v1/manifests Submit Manifests manifest-processor, Manifests
POST /api/v1/manifests/validate Validate Manifests manifest-processor, Manifests
GET /api/v1/manifests/{namespace}/{name} Get Resource Status manifest-processor, Manifests
DELETE /api/v1/manifests/{namespace}/{name} Delete Resource manifest-processor, Manifests
GET /api/v1/metrics Get Metrics health-monitor
GET /api/v1/policy Get Job Validation Policy manifest-processor, Health
GET /api/v1/queue/jobs List Queued Jobs manifest-processor, Job Queue
POST /api/v1/queue/jobs Submit Job To Queue manifest-processor, Job Queue
GET /api/v1/queue/jobs/{job_id} Get Queued Job manifest-processor, Job Queue
DELETE /api/v1/queue/jobs/{job_id} Cancel Queued Job manifest-processor, Job Queue
POST /api/v1/queue/poll Poll And Process Jobs manifest-processor, Job Queue
GET /api/v1/queue/stats Get Queue Stats manifest-processor, Job Queue
GET /api/v1/status Get Service Status manifest-processor, Health
GET /api/v1/templates List Templates manifest-processor, Templates
POST /api/v1/templates Create Template manifest-processor, Templates
GET /api/v1/templates/{name} Get Template manifest-processor, Templates
DELETE /api/v1/templates/{name} Delete Template manifest-processor, Templates
GET /api/v1/webhooks List Webhooks manifest-processor, Webhooks
POST /api/v1/webhooks Create Webhook manifest-processor, Webhooks
DELETE /api/v1/webhooks/{webhook_id} Delete Webhook manifest-processor, Webhooks
GET /healthz Kubernetes Health Check health-monitor
GET /inference/{endpoint_name} Proxy Inference Root inference-proxy, Inference
POST /inference/{endpoint_name} Proxy Inference Root inference-proxy, Inference
HEAD /inference/{endpoint_name} Proxy Inference Root inference-proxy, Inference
GET /inference/{endpoint_name}/{upstream_path} Proxy Inference Path inference-proxy, Inference
POST /inference/{endpoint_name}/{upstream_path} Proxy Inference Path inference-proxy, Inference
HEAD /inference/{endpoint_name}/{upstream_path} Proxy Inference Path inference-proxy, Inference
GET /readyz Kubernetes Readiness Check manifest-processor, Health

Endpoint details

GET /

Root endpoint with basic service information and API overview.

  • Operation ID: root__get
  • Tags: manifest-processor, Info
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Responses

Status Description Content
200 Successful Response application/json: object (free-form)

GET /api/v1/cost/reports

List this region's most recent cost report objects in S3.

  • Operation ID: list_cost_reports_api_v1_cost_reports_get
  • Tags: manifest-processor, Cost
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
adhoc query boolean no false — List ad-hoc instead of scheduled reports
limit query integer no 50 ≥ 1; ≤ 1000 Maximum objects returned

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

POST /api/v1/cost/reports

Generate an ad-hoc cost report for the trailing window.

  • Operation ID: generate_cost_report_api_v1_cost_reports_post
  • Tags: manifest-processor, Cost
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Request body (required): application/json: CostReportRequest

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /api/v1/cost/status

Cost monitoring status for this region, including OpenCost health.

  • Operation ID: get_cost_status_api_v1_cost_status_get
  • Tags: manifest-processor, Cost
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Responses

Status Description Content
200 Successful Response application/json: any

GET /api/v1/health

Primary health check endpoint for ALB health checks Returns 200 if cluster is healthy, 503 if unhealthy

  • Operation ID: health_check_api_v1_health_get
  • Tags: health-monitor
  • Security: none (unauthenticated)
  • Delivered by rule: /api/v1/health → Service health-monitor:443 in gco-system

Responses

Status Description Content
200 Successful Response application/json: any

GET /api/v1/jobs

List Kubernetes Jobs with pagination and filtering.

  • Operation ID: list_jobs_api_v1_jobs_get
  • Tags: manifest-processor, Jobs
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
namespace query string (nullable) no — — Filter by namespace
status query string (nullable) no — — Filter by status
limit query integer no 50 ≥ 1; ≤ 1000 Maximum number of jobs to return
offset query integer no 0 ≥ 0 Number of jobs to skip
sort query string no "createdAt:desc" — Sort field and order (field:asc|desc)
label_selector query string (nullable) no — max length 1024 Comma-separated exact-match label filters (key=value only)

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

DELETE /api/v1/jobs

Bulk delete jobs based on filters.

  • Operation ID: bulk_delete_jobs_api_v1_jobs_delete
  • Tags: manifest-processor, Jobs
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Request body (required): application/json: BulkDeleteRequest

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

POST /api/v1/jobs/from-template/{name}

Create a job from a template with parameter substitution.

  • Operation ID: create_job_from_template_api_v1_jobs_from_template__name__post
  • Tags: manifest-processor, Templates
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
name path string yes — — —

Request body (required): application/json: JobFromTemplateRequest

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /api/v1/jobs/{namespace}/{name}

Get details of a specific Job, including where its pods were scheduled.

  • Operation ID: get_job_api_v1_jobs__namespace___name__get
  • Tags: manifest-processor, Jobs
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
namespace path string yes — — —
name path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

DELETE /api/v1/jobs/{namespace}/{name}

Delete a Job, optionally requiring its immutable Kubernetes UID.

  • Operation ID: delete_job_api_v1_jobs__namespace___name__delete
  • Tags: manifest-processor, Jobs
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
namespace path string yes — — —
name path string yes — — —
expected_uid query string (nullable) no — min length 1; max length 128 Optional immutable Kubernetes UID deletion precondition

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /api/v1/jobs/{namespace}/{name}/events

Get events related to a Job.

  • Operation ID: get_job_events_api_v1_jobs__namespace___name__events_get
  • Tags: manifest-processor, Jobs
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
namespace path string yes — — —
name path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /api/v1/jobs/{namespace}/{name}/logs

Get logs from a Job's pods.

  • Operation ID: get_job_logs_api_v1_jobs__namespace___name__logs_get
  • Tags: manifest-processor, Jobs
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
namespace path string yes — — —
name path string yes — — —
container query string (nullable) no — — Container name (for multi-container pods)
tail query integer no 100 ≥ 1; ≤ 10000 Number of lines from the end
previous query boolean no false — Get logs from previous terminated container
since_seconds query integer (nullable) no — ≥ 1 Only return logs newer than N seconds
timestamps query boolean no false — Include timestamps in log lines

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /api/v1/jobs/{namespace}/{name}/metrics

Get resource usage metrics for a Job's pods.

  • Operation ID: get_job_metrics_api_v1_jobs__namespace___name__metrics_get
  • Tags: manifest-processor, Jobs
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
namespace path string yes — — —
name path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /api/v1/jobs/{namespace}/{name}/pods

Get pods belonging to a Job, with the hardware each one landed on.

  • Operation ID: get_job_pods_api_v1_jobs__namespace___name__pods_get
  • Tags: manifest-processor, Jobs
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
namespace path string yes — — —
name path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /api/v1/jobs/{namespace}/{name}/pods/{pod_name}/logs

Get logs from a specific pod belonging to a Job.

  • Operation ID: get_pod_logs_api_v1_jobs__namespace___name__pods__pod_name__logs_get
  • Tags: manifest-processor, Jobs
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
namespace path string yes — — —
name path string yes — — —
pod_name path string yes — — —
container query string (nullable) no — — Container name
tail query integer no 100 ≥ 1; ≤ 10000 Number of lines from the end
previous query boolean no false — Get logs from previous terminated container

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

POST /api/v1/jobs/{namespace}/{name}/retry

Retry a failed job by creating a new job from its spec.

  • Operation ID: retry_job_api_v1_jobs__namespace___name__retry_post
  • Tags: manifest-processor, Jobs
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
namespace path string yes — — —
name path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

POST /api/v1/manifests

Submit Kubernetes manifests for processing.

  • Operation ID: submit_manifests_api_v1_manifests_post
  • Tags: manifest-processor, Manifests
  • Security: gcoHmac
  • Delivered by rule: /api/v1/manifests → Service manifest-processor:443 in gco-system

Request body (required): application/json: ManifestSubmissionAPIRequest

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

POST /api/v1/manifests/validate

Validate manifests without applying them.

  • Operation ID: validate_manifests_api_v1_manifests_validate_post
  • Tags: manifest-processor, Manifests
  • Security: gcoHmac
  • Delivered by rule: /api/v1/manifests → Service manifest-processor:443 in gco-system

Request body (required): application/json: ManifestSubmissionAPIRequest

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /api/v1/manifests/{namespace}/{name}

Get the status of a specific resource.

  • Operation ID: get_resource_status_api_v1_manifests__namespace___name__get
  • Tags: manifest-processor, Manifests
  • Security: gcoHmac
  • Delivered by rule: /api/v1/manifests → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
namespace path string yes — — —
name path string yes — — —
api_version query string no "apps/v1" — Kubernetes API version
kind query string no "Deployment" — Resource kind

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

DELETE /api/v1/manifests/{namespace}/{name}

Delete a specific resource from the cluster.

  • Operation ID: delete_resource_api_v1_manifests__namespace___name__delete
  • Tags: manifest-processor, Manifests
  • Security: gcoHmac
  • Delivered by rule: /api/v1/manifests → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
namespace path string yes — — —
name path string yes — — —
api_version query string no "apps/v1" — Kubernetes API version
kind query string no "Deployment" — Resource kind

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /api/v1/metrics

Detailed metrics endpoint with resource utilization information

  • Operation ID: get_metrics_api_v1_metrics_get
  • Tags: health-monitor
  • Security: gcoHmac
  • Delivered by rule: /api/v1/metrics → Service health-monitor:443 in gco-system

Responses

Status Description Content
200 Successful Response application/json: object (free-form)

GET /api/v1/policy

The validation policy this region actually enforces, as deployed.

Answers "will this cluster admit the job I am about to pay to run?" before submission, so a policy conflict surfaces at plan time instead of after a region has been provisioned and billed.

Reads the live ManifestProcessor instance rather than any config file. A local cdk.json is the input to a deploy, not the state of one: the cluster may have been deployed from a different checkout, and CDK augments trusted_registries with the project's own ECR hostnames at synth time, so the effective allowlist is strictly larger than the configured one.

Three layers govern admission and all three are reported:

  1. policy — the front-door checks the manifest processor and the SQS queue processor both apply (they read the same env vars, so neither submission path is a bypass).
  2. cluster_enforcement.limit_ranges — per-container ceilings.
  3. cluster_enforcement.resource_quotas — namespace aggregate ceilings.

A manifest must clear all three. Layers 2 and 3 are read live from the Kubernetes API and degrade to status="unavailable" rather than failing the whole response.

  • Operation ID: get_job_validation_policy_api_v1_policy_get
  • Tags: manifest-processor, Health
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Responses

Status Description Content
200 Successful Response application/json: object (free-form)

GET /api/v1/queue/jobs

List one bounded page of jobs with optional filters.

  • Operation ID: list_queued_jobs_api_v1_queue_jobs_get
  • Tags: manifest-processor, Job Queue
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
target_region query string (nullable) no — — Filter by target region
status query string (nullable) no — — Filter by status
namespace query string (nullable) no — — Filter by namespace
limit query integer no 100 ≥ 1; ≤ 1000 Maximum results
cursor query string (nullable) no — max length 2048 Opaque continuation cursor returned by the previous page

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

POST /api/v1/queue/jobs

Submit one validated batch/v1 Job exactly once.

  • Operation ID: submit_job_to_queue_api_v1_queue_jobs_post
  • Tags: manifest-processor, Job Queue
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
Idempotency-Key header string (nullable) no — — Stable key for safely replaying an identical submission

Request body (required): application/json: QueuedJobRequest

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /api/v1/queue/jobs/{job_id}

Get details of a specific queued job.

  • Operation ID: get_queued_job_api_v1_queue_jobs__job_id__get
  • Tags: manifest-processor, Job Queue
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
job_id path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

DELETE /api/v1/queue/jobs/{job_id}

Cancel a job only while it remains unclaimed in the queue.

  • Operation ID: cancel_queued_job_api_v1_queue_jobs__job_id__delete
  • Tags: manifest-processor, Job Queue
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
job_id path string yes — — —
reason query string (nullable) no — — Cancellation reason

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

POST /api/v1/queue/poll

Run one immediate queue-worker pass for this region.

The manifest API also runs this same processor continuously when the deployment enables CENTRAL_QUEUE_WORKER_ENABLED. This endpoint remains useful for an authenticated operator-triggered pass and diagnostics.

  • Operation ID: poll_and_process_jobs_api_v1_queue_poll_post
  • Tags: manifest-processor, Job Queue
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
limit query integer no 5 ≥ 1; ≤ 20 Maximum jobs to process

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /api/v1/queue/stats

Get job queue statistics by region and status.

  • Operation ID: get_queue_stats_api_v1_queue_stats_get
  • Tags: manifest-processor, Job Queue
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Responses

Status Description Content
200 Successful Response application/json: any

GET /api/v1/status

Service status endpoint with detailed information.

  • Operation ID: get_service_status_api_v1_status_get
  • Tags: manifest-processor, Health
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Responses

Status Description Content
200 Successful Response application/json: object (free-form)

GET /api/v1/templates

List all job templates.

  • Operation ID: list_templates_api_v1_templates_get
  • Tags: manifest-processor, Templates
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Responses

Status Description Content
200 Successful Response application/json: any

POST /api/v1/templates

Create a new job template.

  • Operation ID: create_template_api_v1_templates_post
  • Tags: manifest-processor, Templates
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Request body (required): application/json: JobTemplateRequest

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /api/v1/templates/{name}

Get a specific job template.

  • Operation ID: get_template_api_v1_templates__name__get
  • Tags: manifest-processor, Templates
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
name path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

DELETE /api/v1/templates/{name}

Delete a job template.

  • Operation ID: delete_template_api_v1_templates__name__delete
  • Tags: manifest-processor, Templates
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
name path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /api/v1/webhooks

List all registered webhooks.

  • Operation ID: list_webhooks_api_v1_webhooks_get
  • Tags: manifest-processor, Webhooks
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
namespace query string (nullable) no — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

POST /api/v1/webhooks

Register a new webhook for job events.

  • Operation ID: create_webhook_api_v1_webhooks_post
  • Tags: manifest-processor, Webhooks
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Request body (required): application/json: WebhookRequest

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

DELETE /api/v1/webhooks/{webhook_id}

Delete a webhook.

  • Operation ID: delete_webhook_api_v1_webhooks__webhook_id__delete
  • Tags: manifest-processor, Webhooks
  • Security: gcoHmac
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
webhook_id path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /healthz

Kubernetes-style health check endpoint Simple endpoint that returns 200 if the service is running

  • Operation ID: kubernetes_health_check_healthz_get
  • Tags: health-monitor
  • Security: none (unauthenticated)
  • Delivered by rule: /healthz → Service health-monitor:443 in gco-system

Responses

Status Description Content
200 Successful Response application/json: object of string

GET /inference/{endpoint_name}

Proxy an endpoint-root request after platform authentication.

  • Operation ID: proxy_inference_root_inference__endpoint_name__get
  • Tags: inference-proxy, Inference
  • Security: gcoHmac
  • Delivered by rule: /inference → Service inference-proxy:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
endpoint_name path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

POST /inference/{endpoint_name}

Proxy an endpoint-root request after platform authentication.

  • Operation ID: proxy_inference_root_inference__endpoint_name__post
  • Tags: inference-proxy, Inference
  • Security: gcoHmac
  • Delivered by rule: /inference → Service inference-proxy:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
endpoint_name path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

HEAD /inference/{endpoint_name}

Proxy an endpoint-root request after platform authentication.

  • Operation ID: proxy_inference_root_inference__endpoint_name__head
  • Tags: inference-proxy, Inference
  • Security: gcoHmac
  • Delivered by rule: /inference → Service inference-proxy:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
endpoint_name path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /inference/{endpoint_name}/{upstream_path}

Proxy an endpoint sub-path after platform authentication.

  • Operation ID: proxy_inference_path_inference__endpoint_name___upstream_path__get
  • Tags: inference-proxy, Inference
  • Security: gcoHmac
  • Delivered by rule: /inference → Service inference-proxy:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
endpoint_name path string yes — — —
upstream_path path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

POST /inference/{endpoint_name}/{upstream_path}

Proxy an endpoint sub-path after platform authentication.

  • Operation ID: proxy_inference_path_inference__endpoint_name___upstream_path__post
  • Tags: inference-proxy, Inference
  • Security: gcoHmac
  • Delivered by rule: /inference → Service inference-proxy:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
endpoint_name path string yes — — —
upstream_path path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

HEAD /inference/{endpoint_name}/{upstream_path}

Proxy an endpoint sub-path after platform authentication.

  • Operation ID: proxy_inference_path_inference__endpoint_name___upstream_path__head
  • Tags: inference-proxy, Inference
  • Security: gcoHmac
  • Delivered by rule: /inference → Service inference-proxy:443 in gco-system

Parameters

Name In Type Required Default Constraints Description
endpoint_name path string yes — — —
upstream_path path string yes — — —

Responses

Status Description Content
200 Successful Response application/json: any
422 Validation Error application/json: HTTPValidationError

GET /readyz

Kubernetes readiness includes the enabled queue worker task.

  • Operation ID: kubernetes_readiness_check_readyz_get
  • Tags: manifest-processor, Health
  • Security: none (unauthenticated)
  • Delivered by rule: / → Service manifest-processor:443 in gco-system

Responses

Status Description Content
200 Successful Response application/json: object of string

Schemas

AdhocReportRequest

Request body for POST /internal/reports.

Property Type Required Default Constraints Description
include_rows boolean no false — Include the normalized allocation rows in the response
window_hours integer no 24 ≥ 1.0; ≤ 168.0 Trailing window the report covers, in hours

BulkDeleteRequest

Property Type Required Default Constraints Description
dry_run boolean no false — If true, only return what would be deleted
label_selector string (nullable) no — max length 1024 Comma-separated exact-match label filters (key=value only)
namespace string (nullable) no — — Filter by namespace
older_than_days integer (nullable) no — ≥ 1.0; ≤ 365.0 Delete jobs older than N days
status JobStatus (nullable) no — — Filter by status

Example:

{
  "dry_run": false,
  "namespace": "gco-jobs",
  "older_than_days": 7,
  "status": "completed"
}

CostReportRequest

Request body for POST /api/v1/cost/reports.

Property Type Required Default Constraints Description
include_rows boolean no false — Include the normalized allocation rows in the response
window_hours integer no 24 ≥ 1.0; ≤ 168.0 Trailing window the ad-hoc report covers, in hours

HTTPValidationError

Property Type Required Default Constraints Description
detail array of ValidationError no — — —

JobFromTemplateRequest

Property Type Required Default Constraints Description
name string yes — min length 1; max length 63 Job name
namespace string no "gco-jobs" — Target namespace
parameters object (free-form) (nullable) no — — Parameter overrides

Example:

{
  "name": "my-training-job",
  "namespace": "gco-jobs",
  "parameters": {
    "image": "my-custom-image:v1"
  }
}

JobStatus

  • Type: enum: "pending", "running", "completed", "succeeded", "failed"

JobTemplateRequest

Property Type Required Default Constraints Description
description string (nullable) no — — Template description
manifest object (free-form) yes — — Job manifest template
name string yes — min length 1; max length 63 Template name
parameters object (free-form) (nullable) no — — Default parameter values

Example:

{
  "description": "Template for GPU training jobs",
  "manifest": {
    "apiVersion": "batch/v1",
    "kind": "Job",
    "metadata": {
      "name": "{{name}}"
    }
  },
  "name": "gpu-training-template",
  "parameters": {
    "image": "pytorch/pytorch:latest"
  }
}

ManifestSubmissionAPIRequest

API model for manifest submission requests.

Property Type Required Default Constraints Description
dry_run boolean no false — If true, validate manifests without applying them
manifests array of object (free-form) yes — — List of Kubernetes manifests to apply
namespace string (nullable) no — — Default namespace for resources without namespace specified
validate boolean no true — If true, perform validation checks on manifests

Example:

{
  "dry_run": false,
  "manifests": [
    {
      "apiVersion": "batch/v1",
      "kind": "Job",
      "metadata": {
        "name": "example"
      }
    }
  ],
  "namespace": "gco-jobs"
}

QueuedJobRequest

Property Type Required Default Constraints Description
labels object of string (nullable) no — — Optional labels for filtering
manifest object (free-form) yes — — Kubernetes job manifest
max_spot_price number (nullable) no — > 0.0 Optional spot price cap in USD/hour. The job is not dispatched until the current spot price of spot_instance_type in the target region drops to or below this value. Requires spot_instance_type.
namespace string no "gco-jobs" — Kubernetes namespace
priority integer no 0 ≥ 0.0; ≤ 100.0 Job priority (higher = more important)
spot_instance_type string (nullable) no — — EC2 instance type whose spot price gates dispatch (e.g. g5.xlarge). Requires max_spot_price.
target_region string yes — — Target region for job execution

Example:

{
  "manifest": {
    "apiVersion": "batch/v1",
    "kind": "Job",
    "metadata": {
      "name": "my-training-job"
    }
  },
  "max_spot_price": 0.5,
  "namespace": "gco-jobs",
  "priority": 10,
  "spot_instance_type": "g5.xlarge",
  "target_region": "us-east-1"
}

ValidationError

Property Type Required Default Constraints Description
ctx object no — — —
input any no — — —
loc array of string or integer yes — — —
msg string yes — — —
type string yes — — —

WebhookEvent

  • Type: enum: "job.completed", "job.failed", "job.started"

WebhookRequest

Property Type Required Default Constraints Description
events array of WebhookEvent yes — — Events to subscribe to
namespace string (nullable) no — — Filter by namespace (optional)
secret string (nullable) no — — Secret for HMAC signature (optional)
url string yes — — Webhook URL to call

Example:

{
  "events": [
    "job.completed",
    "job.failed"
  ],
  "namespace": "gco-jobs",
  "url": "https://example.com/webhook"
}