{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/kinference-ai/json-schema/kinference-ai-inferenceprovider-schema.json",
  "title": "InferenceProvider (kinference.buoyant.io/v1alpha1)",
  "x-source": "https://github.com/Kinference-AI/kinference/blob/main/charts/kinference-crds/templates/kinference.buoyant.io_inferenceproviders.yaml",
  "x-derived-from": "Kubernetes CRD spec.versions[].schema.openAPIV3Schema, copied unmodified",
  "x-generated": "2026-11-05",
  "description": "An inference provider, potentially off-cluster or remote.",
  "type": "object",
  "properties": {
    "apiVersion": {
      "type": "string"
    },
    "kind": {
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "type": "object",
      "required": [
        "backendRef",
        "api",
        "models"
      ],
      "properties": {
        "backendRef": {
          "description": "A gateway.linkerd.io/GatewayBackend corresponding to the\nremote destination.",
          "type": "object",
          "required": [
            "name"
          ],
          "properties": {
            "group": {
              "type": "string",
              "default": "gateway.linkerd.io",
              "maxLength": 253
            },
            "kind": {
              "type": "string",
              "default": "GatewayBackend",
              "maxLength": 253
            },
            "name": {
              "type": "string",
              "maxLength": 253
            },
            "namespace": {
              "type": "string",
              "maxLength": 253
            }
          }
        },
        "api": {
          "description": "Wire format that the provider speaks. The only\ncurrently-supported value is `OpenAI`.",
          "type": "string",
          "enum": [
            "OpenAI"
          ]
        },
        "path": {
          "description": "Path to dispatch on, replacing the one the client sent.\nOptional; omit it whenever this provider serves the same path\nthe clients already use.\nMust start with `/`, and may carry a query string, which\nreplaces the client's. It is joined AFTER any path prefix in\nthe GatewayBackend's `baseURL`.",
          "type": "string",
          "maxLength": 1024,
          "pattern": "^/"
        },
        "models": {
          "description": "All models this provider serves. Required.",
          "type": "array",
          "minItems": 1,
          "maxItems": 64,
          "x-kubernetes-list-type": "atomic",
          "items": {
            "type": "object",
            "required": [
              "name"
            ],
            "properties": {
              "name": {
                "description": "Canonical name for the model.",
                "type": "string",
                "maxLength": 512
              },
              "aliases": {
                "description": "Any client-facing names that should also resolve to `name`.",
                "type": "array",
                "maxItems": 32,
                "x-kubernetes-list-type": "atomic",
                "items": {
                  "type": "string",
                  "maxLength": 512
                }
              },
              "contextWindow": {
                "description": "Required; in bytes.",
                "type": "integer",
                "minimum": 1
              }
            }
          }
        }
      }
    },
    "status": {
      "type": "object",
      "properties": {
        "state": {
          "type": "string",
          "maxLength": 256
        },
        "conditions": {
          "type": "array",
          "maxItems": 8,
          "x-kubernetes-list-type": "map",
          "x-kubernetes-list-map-keys": [
            "type"
          ],
          "items": {
            "type": "object",
            "required": [
              "type",
              "status",
              "lastTransitionTime",
              "reason",
              "message"
            ],
            "properties": {
              "type": {
                "type": "string",
                "maxLength": 316
              },
              "status": {
                "type": "string",
                "enum": [
                  "True",
                  "False",
                  "Unknown"
                ]
              },
              "observedGeneration": {
                "type": "integer",
                "format": "int64",
                "minimum": 0
              },
              "lastTransitionTime": {
                "type": "string",
                "format": "date-time"
              },
              "reason": {
                "type": "string",
                "maxLength": 1024
              },
              "message": {
                "type": "string",
                "maxLength": 32768
              }
            }
          }
        }
      }
    }
  }
}