Ambassador Mappings API

Manage Mapping resources that associate URL prefixes or paths with backend services. Mappings are the core routing mechanism in Ambassador.

OpenAPI Specification

ambassador-mappings-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Ambassador Edge Stack Diagnostics Mappings API
  description: API for managing Ambassador Edge Stack resources in Kubernetes environments. Ambassador Edge Stack is a Kubernetes-native API gateway built on Envoy Proxy that provides routing, load balancing, authentication, rate limiting, and observability for microservices. This specification covers the management of core custom resource definitions (CRDs) including Mapping, Host, TLSContext, RateLimitService, and related configuration resources exposed through the Edge Stack management API.
  version: 3.x
  contact:
    name: Ambassador Labs
    url: https://www.getambassador.io
    email: support@datawire.io
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://{ambassador-host}:8877
  description: Ambassador Edge Stack Admin API
  variables:
    ambassador-host:
      default: localhost
      description: Hostname or IP of the Ambassador Edge Stack admin interface
- url: https://{ambassador-host}/edge_stack/api
  description: Ambassador Edge Stack Management API
  variables:
    ambassador-host:
      default: localhost
      description: Hostname or IP of the Ambassador Edge Stack service
security:
- bearerAuth: []
tags:
- name: Mappings
  description: Manage Mapping resources that associate URL prefixes or paths with backend services. Mappings are the core routing mechanism in Ambassador.
  externalDocs:
    url: https://www.getambassador.io/docs/edge-stack/latest/topics/using/intro-mappings
paths:
  /apis/getambassador.io/v3alpha1/namespaces/{namespace}/mappings:
    get:
      operationId: listMappings
      summary: Ambassador List All Mappings in a Namespace
      description: Returns a list of all Mapping resources in the specified Kubernetes namespace. Mappings associate URL prefixes or exact paths with backend services and configure routing behavior.
      tags:
      - Mappings
      parameters:
      - $ref: '#/components/parameters/Namespace'
      - $ref: '#/components/parameters/LabelSelector'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Continue'
      responses:
        '200':
          description: Mapping list retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MappingList'
              examples:
                Listmappings200Example:
                  summary: Default listMappings 200 response
                  x-microcks-default: true
                  value:
                    apiVersion: example_value
                    kind: example_value
                    metadata:
                      continue: example_value
                      resourceVersion: example_value
                    items:
                    - apiVersion: example_value
                      kind: example_value
        '401':
          description: Authentication required
        '403':
          description: Insufficient permissions
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createMapping
      summary: Ambassador Create a New Mapping
      description: Creates a new Mapping resource in the specified namespace. A Mapping defines how requests matching a URL prefix, path, or header should be routed to a backend service.
      tags:
      - Mappings
      parameters:
      - $ref: '#/components/parameters/Namespace'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Mapping'
            examples:
              CreatemappingRequestExample:
                summary: Default createMapping request
                x-microcks-default: true
                value:
                  apiVersion: example_value
                  kind: example_value
                  metadata:
                    name: Example Title
                    namespace: example_value
                    labels: example_value
                    annotations: example_value
                    creationTimestamp: '2026-01-15T10:30:00Z'
                    generation: 10
                    resourceVersion: example_value
                    uid: '500123'
                  spec:
                    hostname: example_value
                    prefix: example_value
                    prefix_regex: true
                    prefix_exact: true
                    service: example_value
                    rewrite: example_value
                    method: GET
                    method_regex: true
                    headers: example_value
                    query_parameters: example_value
                    host: example_value
                    host_regex: true
                    timeout_ms: 10
                    idle_timeout_ms: 10
                    connect_timeout_ms: 10
                    cluster_idle_timeout_ms: 10
                    weight: 10
                    bypass_auth: true
                    circuit_breakers:
                    - {}
                    labels: example_value
                    add_request_headers: example_value
                    add_response_headers: example_value
                    remove_request_headers:
                    - {}
                    remove_response_headers:
                    - {}
                    allow_upgrade:
                    - {}
                    grpc: true
                    enable_ipv4: true
                    enable_ipv6: true
                    ambassador_id:
                    - {}
                  status:
                    state: Inactive
                    reason: example_value
      responses:
        '201':
          description: Mapping created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Mapping'
              examples:
                Createmapping201Example:
                  summary: Default createMapping 201 response
                  x-microcks-default: true
                  value:
                    apiVersion: example_value
                    kind: example_value
                    metadata:
                      name: Example Title
                      namespace: example_value
                      labels: example_value
                      annotations: example_value
                      creationTimestamp: '2026-01-15T10:30:00Z'
                      generation: 10
                      resourceVersion: example_value
                      uid: '500123'
                    spec:
                      hostname: example_value
                      prefix: example_value
                      prefix_regex: true
                      prefix_exact: true
                      service: example_value
                      rewrite: example_value
                      method: GET
                      method_regex: true
                      headers: example_value
                      query_parameters: example_value
                      host: example_value
                      host_regex: true
                      timeout_ms: 10
                      idle_timeout_ms: 10
                      connect_timeout_ms: 10
                      cluster_idle_timeout_ms: 10
                      weight: 10
                      bypass_auth: true
                      circuit_breakers:
                      - {}
                      labels: example_value
                      add_request_headers: example_value
                      add_response_headers: example_value
                      remove_request_headers:
                      - {}
                      remove_response_headers:
                      - {}
                      allow_upgrade:
                      - {}
                      grpc: true
                      enable_ipv4: true
                      enable_ipv6: true
                      ambassador_id:
                      - {}
                    status:
                      state: Inactive
                      reason: example_value
        '400':
          description: Invalid Mapping specification
        '401':
          description: Authentication required
        '409':
          description: Mapping with this name already exists
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /apis/getambassador.io/v3alpha1/namespaces/{namespace}/mappings/{name}:
    get:
      operationId: getMapping
      summary: Ambassador Get a Specific Mapping
      description: Retrieves the full specification and status of a specific Mapping resource identified by name and namespace.
      tags:
      - Mappings
      parameters:
      - $ref: '#/components/parameters/Namespace'
      - $ref: '#/components/parameters/ResourceName'
      responses:
        '200':
          description: Mapping retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Mapping'
              examples:
                Getmapping200Example:
                  summary: Default getMapping 200 response
                  x-microcks-default: true
                  value:
                    apiVersion: example_value
                    kind: example_value
                    metadata:
                      name: Example Title
                      namespace: example_value
                      labels: example_value
                      annotations: example_value
                      creationTimestamp: '2026-01-15T10:30:00Z'
                      generation: 10
                      resourceVersion: example_value
                      uid: '500123'
                    spec:
                      hostname: example_value
                      prefix: example_value
                      prefix_regex: true
                      prefix_exact: true
                      service: example_value
                      rewrite: example_value
                      method: GET
                      method_regex: true
                      headers: example_value
                      query_parameters: example_value
                      host: example_value
                      host_regex: true
                      timeout_ms: 10
                      idle_timeout_ms: 10
                      connect_timeout_ms: 10
                      cluster_idle_timeout_ms: 10
                      weight: 10
                      bypass_auth: true
                      circuit_breakers:
                      - {}
                      labels: example_value
                      add_request_headers: example_value
                      add_response_headers: example_value
                      remove_request_headers:
                      - {}
                      remove_response_headers:
                      - {}
                      allow_upgrade:
                      - {}
                      grpc: true
                      enable_ipv4: true
                      enable_ipv6: true
                      ambassador_id:
                      - {}
                    status:
                      state: Inactive
                      reason: example_value
        '401':
          description: Authentication required
        '404':
          description: Mapping not found
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      operationId: updateMapping
      summary: Ambassador Update a Mapping
      description: Replaces an existing Mapping resource with the provided specification. The full Mapping object must be provided.
      tags:
      - Mappings
      parameters:
      - $ref: '#/components/parameters/Namespace'
      - $ref: '#/components/parameters/ResourceName'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Mapping'
            examples:
              UpdatemappingRequestExample:
                summary: Default updateMapping request
                x-microcks-default: true
                value:
                  apiVersion: example_value
                  kind: example_value
                  metadata:
                    name: Example Title
                    namespace: example_value
                    labels: example_value
                    annotations: example_value
                    creationTimestamp: '2026-01-15T10:30:00Z'
                    generation: 10
                    resourceVersion: example_value
                    uid: '500123'
                  spec:
                    hostname: example_value
                    prefix: example_value
                    prefix_regex: true
                    prefix_exact: true
                    service: example_value
                    rewrite: example_value
                    method: GET
                    method_regex: true
                    headers: example_value
                    query_parameters: example_value
                    host: example_value
                    host_regex: true
                    timeout_ms: 10
                    idle_timeout_ms: 10
                    connect_timeout_ms: 10
                    cluster_idle_timeout_ms: 10
                    weight: 10
                    bypass_auth: true
                    circuit_breakers:
                    - {}
                    labels: example_value
                    add_request_headers: example_value
                    add_response_headers: example_value
                    remove_request_headers:
                    - {}
                    remove_response_headers:
                    - {}
                    allow_upgrade:
                    - {}
                    grpc: true
                    enable_ipv4: true
                    enable_ipv6: true
                    ambassador_id:
                    - {}
                  status:
                    state: Inactive
                    reason: example_value
      responses:
        '200':
          description: Mapping updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Mapping'
              examples:
                Updatemapping200Example:
                  summary: Default updateMapping 200 response
                  x-microcks-default: true
                  value:
                    apiVersion: example_value
                    kind: example_value
                    metadata:
                      name: Example Title
                      namespace: example_value
                      labels: example_value
                      annotations: example_value
                      creationTimestamp: '2026-01-15T10:30:00Z'
                      generation: 10
                      resourceVersion: example_value
                      uid: '500123'
                    spec:
                      hostname: example_value
                      prefix: example_value
                      prefix_regex: true
                      prefix_exact: true
                      service: example_value
                      rewrite: example_value
                      method: GET
                      method_regex: true
                      headers: example_value
                      query_parameters: example_value
                      host: example_value
                      host_regex: true
                      timeout_ms: 10
                      idle_timeout_ms: 10
                      connect_timeout_ms: 10
                      cluster_idle_timeout_ms: 10
                      weight: 10
                      bypass_auth: true
                      circuit_breakers:
                      - {}
                      labels: example_value
                      add_request_headers: example_value
                      add_response_headers: example_value
                      remove_request_headers:
                      - {}
                      remove_response_headers:
                      - {}
                      allow_upgrade:
                      - {}
                      grpc: true
                      enable_ipv4: true
                      enable_ipv6: true
                      ambassador_id:
                      - {}
                    status:
                      state: Inactive
                      reason: example_value
        '400':
          description: Invalid Mapping specification
        '401':
          description: Authentication required
        '404':
          description: Mapping not found
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deleteMapping
      summary: Ambassador Delete a Mapping
      description: Deletes a specific Mapping resource. Any traffic previously routed by this Mapping will no longer be handled.
      tags:
      - Mappings
      parameters:
      - $ref: '#/components/parameters/Namespace'
      - $ref: '#/components/parameters/ResourceName'
      responses:
        '200':
          description: Mapping deleted successfully
        '401':
          description: Authentication required
        '404':
          description: Mapping not found
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    CircuitBreaker:
      type: object
      description: Circuit breaker configuration for an upstream cluster
      properties:
        priority:
          type: string
          description: Envoy routing priority
          enum:
          - default
          - high
          example: default
        max_connections:
          type: integer
          description: Maximum number of connections to the upstream cluster
          minimum: 1
          example: 10
        max_pending_requests:
          type: integer
          description: Maximum number of pending requests to the upstream cluster
          minimum: 1
          example: 10
        max_requests:
          type: integer
          description: Maximum number of parallel requests to the upstream cluster
          minimum: 1
          example: 10
        max_retries:
          type: integer
          description: Maximum number of parallel retries to the upstream cluster
          minimum: 1
          example: 10
    ObjectMeta:
      type: object
      description: Standard Kubernetes object metadata
      properties:
        name:
          type: string
          description: Name of the resource, unique within a namespace
          example: Example Title
        namespace:
          type: string
          description: Kubernetes namespace the resource belongs to
          example: example_value
        labels:
          type: object
          description: Key-value pairs for organizing and selecting resources
          additionalProperties:
            type: string
          example: example_value
        annotations:
          type: object
          description: Key-value pairs for storing arbitrary non-identifying metadata
          additionalProperties:
            type: string
          example: example_value
        creationTimestamp:
          type: string
          format: date-time
          description: Timestamp when the resource was created
          example: '2026-01-15T10:30:00Z'
        generation:
          type: integer
          description: Sequence number representing a specific generation of the resource
          example: 10
        resourceVersion:
          type: string
          description: Opaque value for optimistic concurrency control
          example: example_value
        uid:
          type: string
          description: Unique identifier for the resource
          example: '500123'
      required:
      - name
      - namespace
    MappingList:
      type: object
      description: List of Mapping resources
      properties:
        apiVersion:
          type: string
          const: getambassador.io/v3alpha1
          example: example_value
        kind:
          type: string
          const: MappingList
          example: example_value
        metadata:
          type: object
          properties:
            continue:
              type: string
              description: Continuation token for pagination
            resourceVersion:
              type: string
          example: example_value
        items:
          type: array
          description: List of Mapping resources
          items:
            $ref: '#/components/schemas/Mapping'
          example: []
    MappingSpec:
      type: object
      description: Specification for an Ambassador Mapping
      required:
      - hostname
      - prefix
      - service
      properties:
        hostname:
          type: string
          description: Hostname to match for this Mapping. Use '*' to match all hostnames.
          example: api.example.com
        prefix:
          type: string
          description: URL prefix to match for routing
          example: /api/v1/
        prefix_regex:
          type: boolean
          description: Whether the prefix should be interpreted as a regular expression
          default: false
          example: true
        prefix_exact:
          type: boolean
          description: Whether the prefix should be matched exactly rather than as a prefix
          default: false
          example: true
        service:
          type: string
          description: Target service to route to, in the format service-name.namespace:port or a full URL
          example: my-service.default:8080
        rewrite:
          type: string
          description: Prefix rewrite rule applied to the URL before forwarding to the backend service. Set to empty string to disable rewriting.
          example: /
        method:
          type: string
          description: HTTP method to match
          enum:
          - GET
          - POST
          - PUT
          - DELETE
          - PATCH
          - HEAD
          - OPTIONS
          example: GET
        method_regex:
          type: boolean
          description: Whether the method value is a regular expression
          default: false
          example: true
        headers:
          type: object
          description: HTTP headers that must be present on the request for this Mapping to match. Values can be exact strings or regular expressions.
          additionalProperties:
            type: string
          example: example_value
        query_parameters:
          type: object
          description: Query parameters that must be present for this Mapping to match
          additionalProperties:
            type: string
          example: example_value
        host:
          type: string
          description: Deprecated. Use hostname instead.
          deprecated: true
          example: example_value
        host_regex:
          type: boolean
          description: Deprecated. Whether host is a regular expression.
          deprecated: true
          example: true
        timeout_ms:
          type: integer
          description: Request timeout in milliseconds
          minimum: 0
          example: 30000
        idle_timeout_ms:
          type: integer
          description: Idle timeout for streaming connections in milliseconds
          minimum: 0
          example: 10
        connect_timeout_ms:
          type: integer
          description: Upstream connection timeout in milliseconds
          minimum: 0
          example: 10
        cluster_idle_timeout_ms:
          type: integer
          description: Idle timeout for upstream connections in the cluster in milliseconds
          minimum: 0
          example: 10
        weight:
          type: integer
          description: Weight for traffic splitting when multiple Mappings match the same prefix. Used in canary deployments.
          minimum: 0
          maximum: 100
          example: 10
        bypass_auth:
          type: boolean
          description: Whether to bypass the external authentication service for this Mapping
          default: false
          example: true
        cors:
          $ref: '#/components/schemas/CORSPolicy'
        retry_policy:
          $ref: '#/components/schemas/RetryPolicy'
        circuit_breakers:
          type: array
          description: Circuit breaker configurations for the upstream cluster
          items:
            $ref: '#/components/schemas/CircuitBreaker'
          example: []
        load_balancer:
          $ref: '#/components/schemas/LoadBalancer'
        labels:
          type: object
          description: Rate limiting labels to apply to requests matching this Mapping. Labels are sent to the rate limiting service for evaluation.
          additionalProperties: true
          example: example_value
        add_request_headers:
          type: object
          description: Headers to add to the request before forwarding to the upstream
          additionalProperties:
            type: string
          example: example_value
        add_response_headers:
          type: object
          description: Headers to add to the response before sending to the client
          additionalProperties:
            type: string
          example: example_value
        remove_request_headers:
          type: array
          description: Header names to remove from the request
          items:
            type: string
          example: []
        remove_response_headers:
          type: array
          description: Header names to remove from the response
          items:
            type: string
          example: []
        allow_upgrade:
          type: array
          description: Protocols to allow upgrade to, such as websocket
          items:
            type: string
          example:
          - websocket
        grpc:
          type: boolean
          description: Whether the upstream service uses gRPC
          default: false
          example: true
        enable_ipv4:
          type: boolean
          description: Whether to enable IPv4 DNS lookups for the upstream service
          example: true
        enable_ipv6:
          type: boolean
          description: Whether to enable IPv6 DNS lookups for the upstream service
          example: true
        ambassador_id:
          type: array
          description: List of Ambassador IDs that should apply this Mapping. Used to partition a single Kubernetes cluster among multiple Ambassador instances.
          items:
            type: string
          example: '500123'
    RetryPolicy:
      type: object
      description: Retry configuration for failed requests
      properties:
        retry_on:
          type: string
          description: Envoy retry condition. Common values include 5xx, gateway-error, connect-failure, retriable-4xx.
          example: 5xx
        num_retries:
          type: integer
          description: Maximum number of retry attempts
          minimum: 0
          example: 3
        per_try_timeout:
          type: string
          description: Timeout per retry attempt (e.g., '3s', '500ms')
          example: 3s
    LoadBalancer:
      type: object
      description: Load balancing configuration for an upstream cluster
      properties:
        policy:
          type: string
          description: Load balancing algorithm
          enum:
          - round_robin
          - least_request
          - ring_hash
          - maglev
          example: round_robin
        cookie:
          type: object
          description: Cookie-based session affinity configuration (for ring_hash policy)
          properties:
            name:
              type: string
              description: Name of the session affinity cookie
            ttl:
              type: string
              description: Time-to-live for the cookie
            path:
              type: string
              description: Cookie path
          example: example_value
        header:
          type: string
          description: Header to use for hash-based load balancing
          example: example_value
        source_ip:
          type: boolean
          description: Whether to use source IP for hash-based load balancing
          example: true
    Mapping:
      type: object
      description: An Ambassador Mapping resource that associates a URL prefix or path with a backend service. Mappings are the primary mechanism for configuring routing in Ambassador Edge Stack.
      required:
      - apiVersion
      - kind
      - metadata
      - spec
      properties:
        apiVersion:
          type: string
          description: API version for the Mapping resource
          const: getambassador.io/v3alpha1
          example: example_value
        kind:
          type: string
          description: Resource kind
          const: Mapping
          example: example_value
        metadata:
          $ref: '#/components/schemas/ObjectMeta'
        spec:
          $ref: '#/components/schemas/MappingSpec'
        status:
          $ref: '#/components/schemas/MappingStatus'
    MappingStatus:
      type: object
      description: Status information for a Mapping resource
      properties:
        state:
          type: string
          description: Current state of the Mapping
          enum:
          - Inactive
          - Running
          - Error
          example: Inactive
        reason:
          type: string
          description: Human-readable reason for the current state
          example: example_value
    CORSPolicy:
      type: object
      description: Cross-Origin Resource Sharing configuration
      properties:
        origins:
          type: array
          description: Allowed origins. Use a string for exact match or a regex pattern.
          items:
            type: string
          example:
          - https://example.com
          - https://*.example.com
        methods:
          type: array
          description: Allowed HTTP methods
          items:
            type: string
          example:
          - GET
          - POST
          - PUT
          - DELETE
        headers:
          type: array
          description: Allowed request headers
          items:
            type: string
          example: []
        credentials:
          type: boolean
          description: Whether to allow credentials (cookies, authorization headers)
          example: true
        exposed_headers:
          type: array
          description: Headers exposed to the browser
          items:
            type: string
          example: []
        max_age:
          type: string
          description: How long the preflight response can be cached (e.g., '86400')
          example: example_value
  parameters:
    Namespace:
      name: namespace
      in: path
      required: true
      description: Kubernetes namespace
      schema:
        type: string
      example: default
    Limit:
      name: limit
      in: query
      required: false
      description: Maximum number of resources to return
      schema:
        type: integer
        minimum: 1
    ResourceName:
      name: name
      in: path
      required: true
      description: Name of the resource
      schema:
        type: string
    LabelSelector:
      name: labelSelector
      in: query
      required: false
      description: Kubernetes label selector to filter resources
      schema:
        type: string
      example: app=my-service
    Continue:
      name: continue
      in: query
      required: false
      description: Continuation token for paginated results
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token authentication. Tokens are managed through the Ambassador Edge Stack management interface or Kubernetes service account tokens.
externalDocs:
  description: Ambassador Edge Stack Documentation
  url: https://www.getambassador.io/docs/edge-stack/latest/