{
  "openapi": "3.1.0",
  "info": {
    "title": "Apache APISIX Admin API",
    "description": "The Apache APISIX Admin API is a REST interface for managing gateway resources and applying configuration changes without restarting APISIX. Accepted changes propagate to workers asynchronously.\n\nThis contract targets Apache APISIX 3.16.0. Resource operations are available with the etcd configuration provider; /configs operations require the YAML provider and replace those resource routes. The default response format is Admin API v3 (deployment.admin.admin_api_version: v3). The legacy v2 format is also described. List filtering and pagination apply only to v3.\n\nAuthentication uses a configured Admin API key in X-API-KEY; api_key query and x_api_key cookie are also accepted. Authentication can be disabled in deployment.admin.admin_key_required. The HEAD /apisix/admin probe and POST /schema/validate/{resource} handler do not check the key in this release. Network allowlists and deployment configuration still apply.\n\nSchemas describe built-in validation. Additional Lua checks validate references, enabled plugins and their plugin-specific schemas, certificates, expressions, upstreams, and protocol configuration. These checks depend on deployment state and are not expressible completely in OpenAPI. Plugin and metadata configurations remain open objects; query the schema endpoints and consult the plugin reference for the installed plugin. Changes propagate asynchronously to workers.\n\nSee [APISIX Documentation](https://apisix.apache.org/docs/apisix/3.16/getting-started/README/) for more information.",
    "version": "3.16.0",
    "license": {
      "name": "Apache 2.0",
      "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "servers": [
    {
      "url": "{protocol}://{host}:{port}",
      "description": "Admin API listener. HTTPS requires `deployment.admin.https_admin: true` and certificate and key paths under `deployment.admin.admin_api_mtls`.",
      "variables": {
        "protocol": {
          "default": "http",
          "enum": [
            "http",
            "https"
          ],
          "description": "Protocol scheme. Use `https` only when HTTPS is enabled and the Admin API certificate and key are configured."
        },
        "host": {
          "default": "127.0.0.1",
          "description": "Host used by the client. The default listener binds to all interfaces, while the default allowlist permits `127.0.0.0/24`."
        },
        "port": {
          "default": "9180",
          "description": "Admin API listening port."
        }
      }
    }
  ],
  "security": [
    {
      "AdminKey": []
    },
    {
      "ApiKeyQuery": []
    },
    {
      "ApiKeyCookie": []
    }
  ],
  "paths": {
    "/apisix/admin/routes": {
      "get": {
        "operationId": "listRoutes",
        "summary": "List routes",
        "description": "List routes. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "routes"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/label"
          },
          {
            "$ref": "#/components/parameters/uri"
          },
          {
            "$ref": "#/components/parameters/filter"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteListResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "list": [
                        {
                          "key": "/apisix/routes/1",
                          "value": {
                            "uri": "/example",
                            "upstream": {
                              "type": "roundrobin",
                              "nodes": {
                                "127.0.0.1:1980": 1
                              }
                            },
                            "id": "1"
                          },
                          "createdIndex": 10,
                          "modifiedIndex": 10
                        }
                      ],
                      "total": 1
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/routes",
                        "dir": true,
                        "nodes": [
                          {
                            "key": "/apisix/routes/1",
                            "value": {
                              "uri": "/example",
                              "upstream": {
                                "type": "roundrobin",
                                "nodes": {
                                  "127.0.0.1:1980": 1
                                }
                              },
                              "id": "1"
                            },
                            "createdIndex": 10,
                            "modifiedIndex": 10
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putRouteCollection",
        "summary": "Create or replace Route",
        "description": "Create or replace Route. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "routes"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/routes/1",
                      "value": {
                        "uri": "/example",
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/routes/1",
                        "value": {
                          "uri": "/example",
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/routes/1",
                      "value": {
                        "uri": "/example",
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/routes/1",
                        "value": {
                          "uri": "/example",
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/RouteRequest"
                  },
                  {
                    "required": [
                      "id"
                    ]
                  }
                ]
              },
              "example": {
                "uri": "/example",
                "upstream": {
                  "type": "roundrobin",
                  "nodes": {
                    "127.0.0.1:1980": 1
                  }
                },
                "id": "1"
              }
            }
          }
        }
      },
      "post": {
        "operationId": "postRouteCollection",
        "summary": "Create Route with a generated ID",
        "description": "Create Route with a generated ID. Do not send id.",
        "tags": [
          "routes"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/routes/1",
                      "value": {
                        "uri": "/example",
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "create",
                      "node": {
                        "key": "/apisix/routes/1",
                        "value": {
                          "uri": "/example",
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/RouteRequest"
                  },
                  {
                    "not": {
                      "required": [
                        "id"
                      ]
                    }
                  }
                ]
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/Route"
                }
              }
            }
          }
        }
      }
    },
    "/apisix/admin/routes/{id}": {
      "get": {
        "operationId": "getRoute",
        "summary": "Get Route",
        "description": "Get Route. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "routes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/routes/1",
                      "value": {
                        "uri": "/example",
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/routes/1",
                        "value": {
                          "uri": "/example",
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putRouteById",
        "summary": "Create or replace Route",
        "description": "Create or replace Route. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "routes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/routes/1",
                      "value": {
                        "uri": "/example",
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/routes/1",
                        "value": {
                          "uri": "/example",
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/routes/1",
                      "value": {
                        "uri": "/example",
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/routes/1",
                        "value": {
                          "uri": "/example",
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RouteRequest"
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/Route"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "patchRouteById",
        "summary": "Update Route",
        "description": "Update Route. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "routes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/routes/1",
                      "value": {
                        "uri": "/example",
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/routes/1",
                        "value": {
                          "uri": "/example",
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutePatch"
              },
              "example": {
                "plugins": {}
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteRoute",
        "summary": "Delete Route",
        "description": "Delete Route. ",
        "tags": [
          "routes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted. deleted is a string for compatibility.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResult"
                },
                "example": {
                  "key": "/apisix/routes/1",
                  "deleted": "1"
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/routes/{id}/{sub_path}": {
      "patch": {
        "operationId": "patchRouteSubPath",
        "summary": "Update Route",
        "description": "Update Route. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "routes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "name": "sub_path",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "description": "Slash-separated nested keys; may span several URL segments."
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/routes/1",
                      "value": {
                        "uri": "/example",
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/routes/1",
                        "value": {
                          "uri": "/example",
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {}
            }
          },
          "description": "Replacement JSON value for the subpath; string, number, boolean, object, or array. The complete resulting resource must remain valid."
        }
      }
    },
    "/apisix/admin/services": {
      "get": {
        "operationId": "listServices",
        "summary": "List services",
        "description": "List services. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "services"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/label"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceListResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "list": [
                        {
                          "key": "/apisix/services/1",
                          "value": {
                            "upstream": {
                              "type": "roundrobin",
                              "nodes": {
                                "127.0.0.1:1980": 1
                              }
                            },
                            "id": "1"
                          },
                          "createdIndex": 10,
                          "modifiedIndex": 10
                        }
                      ],
                      "total": 1
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/services",
                        "dir": true,
                        "nodes": [
                          {
                            "key": "/apisix/services/1",
                            "value": {
                              "upstream": {
                                "type": "roundrobin",
                                "nodes": {
                                  "127.0.0.1:1980": 1
                                }
                              },
                              "id": "1"
                            },
                            "createdIndex": 10,
                            "modifiedIndex": 10
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putServiceCollection",
        "summary": "Create or replace Service",
        "description": "Create or replace Service. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "services"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/services/1",
                      "value": {
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/services/1",
                        "value": {
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/services/1",
                      "value": {
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/services/1",
                        "value": {
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ServiceRequest"
                  },
                  {
                    "required": [
                      "id"
                    ]
                  }
                ]
              },
              "example": {
                "upstream": {
                  "type": "roundrobin",
                  "nodes": {
                    "127.0.0.1:1980": 1
                  }
                },
                "id": "1"
              }
            }
          }
        }
      },
      "post": {
        "operationId": "postServiceCollection",
        "summary": "Create Service with a generated ID",
        "description": "Create Service with a generated ID. Do not send id.",
        "tags": [
          "services"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/services/1",
                      "value": {
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "create",
                      "node": {
                        "key": "/apisix/services/1",
                        "value": {
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ServiceRequest"
                  },
                  {
                    "not": {
                      "required": [
                        "id"
                      ]
                    }
                  }
                ]
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/Service"
                }
              }
            }
          }
        }
      }
    },
    "/apisix/admin/services/{id}": {
      "get": {
        "operationId": "getService",
        "summary": "Get Service",
        "description": "Get Service. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "services"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/services/1",
                      "value": {
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/services/1",
                        "value": {
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putServiceById",
        "summary": "Create or replace Service",
        "description": "Create or replace Service. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "services"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/services/1",
                      "value": {
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/services/1",
                        "value": {
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/services/1",
                      "value": {
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/services/1",
                        "value": {
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServiceRequest"
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/Service"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "patchServiceById",
        "summary": "Update Service",
        "description": "Update Service. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "services"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/services/1",
                      "value": {
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/services/1",
                        "value": {
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServicePatch"
              },
              "example": {
                "plugins": {}
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteService",
        "summary": "Delete Service",
        "description": "Delete Service. The literal force=true bypasses reference checks.",
        "tags": [
          "services"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Force"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted. deleted is a string for compatibility.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResult"
                },
                "example": {
                  "key": "/apisix/services/1",
                  "deleted": "1"
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/services/{id}/{sub_path}": {
      "patch": {
        "operationId": "patchServiceSubPath",
        "summary": "Update Service",
        "description": "Update Service. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "services"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "name": "sub_path",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "description": "Slash-separated nested keys; may span several URL segments."
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/services/1",
                      "value": {
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/services/1",
                        "value": {
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {}
            }
          },
          "description": "Replacement JSON value for the subpath; string, number, boolean, object, or array. The complete resulting resource must remain valid."
        }
      }
    },
    "/apisix/admin/upstreams": {
      "get": {
        "operationId": "listUpstreams",
        "summary": "List upstreams",
        "description": "List upstreams. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "upstreams"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/label"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpstreamListResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "list": [
                        {
                          "key": "/apisix/upstreams/1",
                          "value": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            },
                            "id": "1"
                          },
                          "createdIndex": 10,
                          "modifiedIndex": 10
                        }
                      ],
                      "total": 1
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/upstreams",
                        "dir": true,
                        "nodes": [
                          {
                            "key": "/apisix/upstreams/1",
                            "value": {
                              "type": "roundrobin",
                              "nodes": {
                                "127.0.0.1:1980": 1
                              },
                              "id": "1"
                            },
                            "createdIndex": 10,
                            "modifiedIndex": 10
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putUpstreamCollection",
        "summary": "Create or replace Upstream",
        "description": "Create or replace Upstream. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "upstreams"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpstreamResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/upstreams/1",
                      "value": {
                        "type": "roundrobin",
                        "nodes": {
                          "127.0.0.1:1980": 1
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/upstreams/1",
                        "value": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpstreamResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/upstreams/1",
                      "value": {
                        "type": "roundrobin",
                        "nodes": {
                          "127.0.0.1:1980": 1
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/upstreams/1",
                        "value": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpstreamRequest"
                  },
                  {
                    "required": [
                      "id"
                    ]
                  }
                ]
              },
              "example": {
                "type": "roundrobin",
                "nodes": {
                  "127.0.0.1:1980": 1
                },
                "id": "1"
              }
            }
          }
        }
      },
      "post": {
        "operationId": "postUpstreamCollection",
        "summary": "Create Upstream with a generated ID",
        "description": "Create Upstream with a generated ID. Do not send id.",
        "tags": [
          "upstreams"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpstreamResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/upstreams/1",
                      "value": {
                        "type": "roundrobin",
                        "nodes": {
                          "127.0.0.1:1980": 1
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "create",
                      "node": {
                        "key": "/apisix/upstreams/1",
                        "value": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpstreamRequest"
                  },
                  {
                    "not": {
                      "required": [
                        "id"
                      ]
                    }
                  }
                ]
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/Upstream"
                }
              }
            }
          }
        }
      }
    },
    "/apisix/admin/upstreams/{id}": {
      "get": {
        "operationId": "getUpstream",
        "summary": "Get Upstream",
        "description": "Get Upstream. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "upstreams"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpstreamResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/upstreams/1",
                      "value": {
                        "type": "roundrobin",
                        "nodes": {
                          "127.0.0.1:1980": 1
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/upstreams/1",
                        "value": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putUpstreamById",
        "summary": "Create or replace Upstream",
        "description": "Create or replace Upstream. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "upstreams"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpstreamResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/upstreams/1",
                      "value": {
                        "type": "roundrobin",
                        "nodes": {
                          "127.0.0.1:1980": 1
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/upstreams/1",
                        "value": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpstreamResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/upstreams/1",
                      "value": {
                        "type": "roundrobin",
                        "nodes": {
                          "127.0.0.1:1980": 1
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/upstreams/1",
                        "value": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpstreamRequest"
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/Upstream"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "patchUpstreamById",
        "summary": "Update Upstream",
        "description": "Update Upstream. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "upstreams"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpstreamResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/upstreams/1",
                      "value": {
                        "type": "roundrobin",
                        "nodes": {
                          "127.0.0.1:1980": 1
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/upstreams/1",
                        "value": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpstreamPatch"
              },
              "example": {
                "plugins": {}
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteUpstream",
        "summary": "Delete Upstream",
        "description": "Delete Upstream. The literal force=true bypasses reference checks.",
        "tags": [
          "upstreams"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Force"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted. deleted is a string for compatibility.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResult"
                },
                "example": {
                  "key": "/apisix/upstreams/1",
                  "deleted": "1"
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/upstreams/{id}/{sub_path}": {
      "patch": {
        "operationId": "patchUpstreamSubPath",
        "summary": "Update Upstream",
        "description": "Update Upstream. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "upstreams"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "name": "sub_path",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "description": "Slash-separated nested keys; may span several URL segments."
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpstreamResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/upstreams/1",
                      "value": {
                        "type": "roundrobin",
                        "nodes": {
                          "127.0.0.1:1980": 1
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/upstreams/1",
                        "value": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {}
            }
          },
          "description": "Replacement JSON value for the subpath; string, number, boolean, object, or array. The complete resulting resource must remain valid."
        }
      }
    },
    "/apisix/admin/consumers": {
      "get": {
        "operationId": "listConsumers",
        "summary": "List consumers",
        "description": "List consumers. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "consumers"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/label"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumerListResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "list": [
                        {
                          "key": "/apisix/consumers/jack",
                          "value": {
                            "username": "jack",
                            "plugins": {
                              "key-auth": {
                                "key": "example-key"
                              }
                            }
                          },
                          "createdIndex": 10,
                          "modifiedIndex": 10
                        }
                      ],
                      "total": 1
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/consumers",
                        "dir": true,
                        "nodes": [
                          {
                            "key": "/apisix/consumers/jack",
                            "value": {
                              "username": "jack",
                              "plugins": {
                                "key-auth": {
                                  "key": "example-key"
                                }
                              }
                            },
                            "createdIndex": 10,
                            "modifiedIndex": 10
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putConsumerCollection",
        "summary": "Create or replace a Consumer",
        "description": "Create or replace a Consumer. The required username in the body selects the key and must match the path username when supplied.",
        "tags": [
          "consumers"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumerResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumers/jack",
                      "value": {
                        "username": "jack",
                        "plugins": {
                          "key-auth": {
                            "key": "example-key"
                          }
                        }
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/consumers/jack",
                        "value": {
                          "username": "jack",
                          "plugins": {
                            "key-auth": {
                              "key": "example-key"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumerResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumers/jack",
                      "value": {
                        "username": "jack",
                        "plugins": {
                          "key-auth": {
                            "key": "example-key"
                          }
                        }
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/consumers/jack",
                        "value": {
                          "username": "jack",
                          "plugins": {
                            "key-auth": {
                              "key": "example-key"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsumerRequest"
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/Consumer"
                }
              }
            }
          }
        }
      }
    },
    "/apisix/admin/consumers/{username}": {
      "get": {
        "operationId": "getConsumer",
        "summary": "Get Consumer",
        "description": "Get Consumer. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "consumers"
        ],
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^[a-zA-Z0-9_\\-]+$",
              "minLength": 1,
              "type": "string",
              "maxLength": 256
            },
            "description": "username"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumerResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumers/jack",
                      "value": {
                        "username": "jack",
                        "plugins": {
                          "key-auth": {
                            "key": "example-key"
                          }
                        }
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/consumers/jack",
                        "value": {
                          "username": "jack",
                          "plugins": {
                            "key-auth": {
                              "key": "example-key"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putConsumerById",
        "summary": "Create or replace a Consumer",
        "description": "Create or replace a Consumer. The required username in the body selects the key and must match the path username when supplied.",
        "tags": [
          "consumers"
        ],
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^[a-zA-Z0-9_\\-]+$",
              "minLength": 1,
              "type": "string",
              "maxLength": 256
            },
            "description": "username"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumerResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumers/jack",
                      "value": {
                        "username": "jack",
                        "plugins": {
                          "key-auth": {
                            "key": "example-key"
                          }
                        }
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/consumers/jack",
                        "value": {
                          "username": "jack",
                          "plugins": {
                            "key-auth": {
                              "key": "example-key"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumerResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumers/jack",
                      "value": {
                        "username": "jack",
                        "plugins": {
                          "key-auth": {
                            "key": "example-key"
                          }
                        }
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/consumers/jack",
                        "value": {
                          "username": "jack",
                          "plugins": {
                            "key-auth": {
                              "key": "example-key"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsumerRequest"
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/Consumer"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteConsumer",
        "summary": "Delete Consumer",
        "description": "Delete Consumer.  Consumer credentials are removed first.",
        "tags": [
          "consumers"
        ],
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^[a-zA-Z0-9_\\-]+$",
              "minLength": 1,
              "type": "string",
              "maxLength": 256
            },
            "description": "username"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted. deleted is a string for compatibility.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResult"
                },
                "example": {
                  "key": "/apisix/consumers/1",
                  "deleted": "1"
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/ssls": {
      "get": {
        "operationId": "listSSLs",
        "summary": "List ssls",
        "description": "List ssls. Responses follow deployment.admin.admin_api_version. Single GET removes key; list GET does not strip private-key fields. ",
        "tags": [
          "ssls"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/label"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSLListResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "list": [
                        {
                          "key": "/apisix/ssls/1",
                          "value": {
                            "sni": "test.com",
                            "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                            "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                            "id": "1"
                          },
                          "createdIndex": 10,
                          "modifiedIndex": 10
                        }
                      ],
                      "total": 1
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/ssls",
                        "dir": true,
                        "nodes": [
                          {
                            "key": "/apisix/ssls/1",
                            "value": {
                              "sni": "test.com",
                              "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                              "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                              "id": "1"
                            },
                            "createdIndex": 10,
                            "modifiedIndex": 10
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putSSLCollection",
        "summary": "Create or replace SSL",
        "description": "Create or replace SSL. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "ssls"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSLResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/ssls/1",
                      "value": {
                        "sni": "test.com",
                        "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                        "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/ssls/1",
                        "value": {
                          "sni": "test.com",
                          "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                          "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSLResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/ssls/1",
                      "value": {
                        "sni": "test.com",
                        "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                        "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/ssls/1",
                        "value": {
                          "sni": "test.com",
                          "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                          "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SSLRequest"
                  },
                  {
                    "required": [
                      "id"
                    ]
                  }
                ]
              },
              "example": {
                "sni": "test.com",
                "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                "id": "1"
              }
            }
          }
        }
      },
      "post": {
        "operationId": "postSSLCollection",
        "summary": "Create SSL with a generated ID",
        "description": "Create SSL with a generated ID. Do not send id.",
        "tags": [
          "ssls"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSLResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/ssls/1",
                      "value": {
                        "sni": "test.com",
                        "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                        "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "create",
                      "node": {
                        "key": "/apisix/ssls/1",
                        "value": {
                          "sni": "test.com",
                          "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                          "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SSLRequest"
                  },
                  {
                    "not": {
                      "required": [
                        "id"
                      ]
                    }
                  }
                ]
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/SSL"
                }
              }
            }
          }
        }
      }
    },
    "/apisix/admin/ssls/{id}": {
      "get": {
        "operationId": "getSSL",
        "summary": "Get SSL",
        "description": "Get SSL. Responses follow deployment.admin.admin_api_version. Single GET removes key; list GET does not strip private-key fields. ",
        "tags": [
          "ssls"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSLReadResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/ssls/1",
                      "value": {
                        "sni": "test.com",
                        "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/ssls/1",
                        "value": {
                          "sni": "test.com",
                          "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putSSLById",
        "summary": "Create or replace SSL",
        "description": "Create or replace SSL. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "ssls"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSLResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/ssls/1",
                      "value": {
                        "sni": "test.com",
                        "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                        "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/ssls/1",
                        "value": {
                          "sni": "test.com",
                          "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                          "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSLResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/ssls/1",
                      "value": {
                        "sni": "test.com",
                        "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                        "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/ssls/1",
                        "value": {
                          "sni": "test.com",
                          "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                          "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SSLRequest"
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/SSL"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "patchSSLById",
        "summary": "Update SSL",
        "description": "Update SSL. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "ssls"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSLResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/ssls/1",
                      "value": {
                        "sni": "test.com",
                        "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                        "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/ssls/1",
                        "value": {
                          "sni": "test.com",
                          "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                          "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SSLPatch"
              },
              "example": {
                "status": 1
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteSSL",
        "summary": "Delete SSL",
        "description": "Delete SSL. ",
        "tags": [
          "ssls"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted. deleted is a string for compatibility.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResult"
                },
                "example": {
                  "key": "/apisix/ssls/1",
                  "deleted": "1"
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/ssls/{id}/{sub_path}": {
      "patch": {
        "operationId": "patchSSLSubPath",
        "summary": "Update SSL",
        "description": "Update SSL. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "ssls"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "name": "sub_path",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "description": "Slash-separated nested keys; may span several URL segments."
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SSLResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/ssls/1",
                      "value": {
                        "sni": "test.com",
                        "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                        "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/ssls/1",
                        "value": {
                          "sni": "test.com",
                          "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
                          "key": "$env://APISIX_EXAMPLE_TLS_KEY",
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {}
            }
          },
          "description": "Replacement JSON value for the subpath; string, number, boolean, object, or array. The complete resulting resource must remain valid."
        }
      }
    },
    "/apisix/admin/global_rules": {
      "get": {
        "operationId": "listGlobalRules",
        "summary": "List global_rules",
        "description": "List global_rules. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "global_rules"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlobalRuleListResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "list": [
                        {
                          "key": "/apisix/global_rules/1",
                          "value": {
                            "plugins": {},
                            "id": "1"
                          },
                          "createdIndex": 10,
                          "modifiedIndex": 10
                        }
                      ],
                      "total": 1
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/global_rules",
                        "dir": true,
                        "nodes": [
                          {
                            "key": "/apisix/global_rules/1",
                            "value": {
                              "plugins": {},
                              "id": "1"
                            },
                            "createdIndex": 10,
                            "modifiedIndex": 10
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putGlobalRuleCollection",
        "summary": "Create or replace GlobalRule",
        "description": "Create or replace GlobalRule. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "global_rules"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlobalRuleResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/global_rules/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/global_rules/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlobalRuleResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/global_rules/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/global_rules/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/GlobalRuleRequest"
                  },
                  {
                    "required": [
                      "id"
                    ]
                  }
                ]
              },
              "example": {
                "plugins": {},
                "id": "1"
              }
            }
          }
        }
      }
    },
    "/apisix/admin/global_rules/{id}": {
      "get": {
        "operationId": "getGlobalRule",
        "summary": "Get GlobalRule",
        "description": "Get GlobalRule. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "global_rules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlobalRuleResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/global_rules/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/global_rules/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putGlobalRuleById",
        "summary": "Create or replace GlobalRule",
        "description": "Create or replace GlobalRule. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "global_rules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlobalRuleResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/global_rules/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/global_rules/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlobalRuleResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/global_rules/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/global_rules/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GlobalRuleRequest"
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/GlobalRule"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "patchGlobalRuleById",
        "summary": "Update GlobalRule",
        "description": "Update GlobalRule. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "global_rules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlobalRuleResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/global_rules/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/global_rules/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GlobalRulePatch"
              },
              "example": {
                "plugins": {}
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteGlobalRule",
        "summary": "Delete GlobalRule",
        "description": "Delete GlobalRule. ",
        "tags": [
          "global_rules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted. deleted is a string for compatibility.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResult"
                },
                "example": {
                  "key": "/apisix/global_rules/1",
                  "deleted": "1"
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/global_rules/{id}/{sub_path}": {
      "patch": {
        "operationId": "patchGlobalRuleSubPath",
        "summary": "Update GlobalRule",
        "description": "Update GlobalRule. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "global_rules"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "name": "sub_path",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "description": "Slash-separated nested keys; may span several URL segments."
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlobalRuleResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/global_rules/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/global_rules/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {}
            }
          },
          "description": "Replacement JSON value for the subpath; string, number, boolean, object, or array. The complete resulting resource must remain valid."
        }
      }
    },
    "/apisix/admin/consumer_groups": {
      "get": {
        "operationId": "listConsumerGroups",
        "summary": "List consumer_groups",
        "description": "List consumer_groups. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "consumer_groups"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/label"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumerGroupListResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "list": [
                        {
                          "key": "/apisix/consumer_groups/1",
                          "value": {
                            "plugins": {},
                            "id": "1"
                          },
                          "createdIndex": 10,
                          "modifiedIndex": 10
                        }
                      ],
                      "total": 1
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/consumer_groups",
                        "dir": true,
                        "nodes": [
                          {
                            "key": "/apisix/consumer_groups/1",
                            "value": {
                              "plugins": {},
                              "id": "1"
                            },
                            "createdIndex": 10,
                            "modifiedIndex": 10
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putConsumerGroupCollection",
        "summary": "Create or replace ConsumerGroup",
        "description": "Create or replace ConsumerGroup. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "consumer_groups"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumerGroupResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumer_groups/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/consumer_groups/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumerGroupResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumer_groups/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/consumer_groups/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ConsumerGroupRequest"
                  },
                  {
                    "required": [
                      "id"
                    ]
                  }
                ]
              },
              "example": {
                "plugins": {},
                "id": "1"
              }
            }
          }
        }
      }
    },
    "/apisix/admin/consumer_groups/{id}": {
      "get": {
        "operationId": "getConsumerGroup",
        "summary": "Get ConsumerGroup",
        "description": "Get ConsumerGroup. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "consumer_groups"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumerGroupResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumer_groups/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/consumer_groups/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putConsumerGroupById",
        "summary": "Create or replace ConsumerGroup",
        "description": "Create or replace ConsumerGroup. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "consumer_groups"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumerGroupResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumer_groups/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/consumer_groups/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumerGroupResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumer_groups/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/consumer_groups/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsumerGroupRequest"
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/ConsumerGroup"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "patchConsumerGroupById",
        "summary": "Update ConsumerGroup",
        "description": "Update ConsumerGroup. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "consumer_groups"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumerGroupResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumer_groups/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/consumer_groups/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsumerGroupPatch"
              },
              "example": {
                "plugins": {}
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteConsumerGroup",
        "summary": "Delete ConsumerGroup",
        "description": "Delete ConsumerGroup. The literal force=true bypasses reference checks.",
        "tags": [
          "consumer_groups"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Force"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted. deleted is a string for compatibility.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResult"
                },
                "example": {
                  "key": "/apisix/consumer_groups/1",
                  "deleted": "1"
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/consumer_groups/{id}/{sub_path}": {
      "patch": {
        "operationId": "patchConsumerGroupSubPath",
        "summary": "Update ConsumerGroup",
        "description": "Update ConsumerGroup. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "consumer_groups"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "name": "sub_path",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "description": "Slash-separated nested keys; may span several URL segments."
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConsumerGroupResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumer_groups/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/consumer_groups/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {}
            }
          },
          "description": "Replacement JSON value for the subpath; string, number, boolean, object, or array. The complete resulting resource must remain valid."
        }
      }
    },
    "/apisix/admin/plugin_configs": {
      "get": {
        "operationId": "listPluginConfigs",
        "summary": "List plugin_configs",
        "description": "List plugin_configs. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "plugin_configs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/label"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PluginConfigListResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "list": [
                        {
                          "key": "/apisix/plugin_configs/1",
                          "value": {
                            "plugins": {},
                            "id": "1"
                          },
                          "createdIndex": 10,
                          "modifiedIndex": 10
                        }
                      ],
                      "total": 1
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/plugin_configs",
                        "dir": true,
                        "nodes": [
                          {
                            "key": "/apisix/plugin_configs/1",
                            "value": {
                              "plugins": {},
                              "id": "1"
                            },
                            "createdIndex": 10,
                            "modifiedIndex": 10
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putPluginConfigCollection",
        "summary": "Create or replace PluginConfig",
        "description": "Create or replace PluginConfig. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "plugin_configs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PluginConfigResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/plugin_configs/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/plugin_configs/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PluginConfigResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/plugin_configs/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/plugin_configs/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PluginConfigRequest"
                  },
                  {
                    "required": [
                      "id"
                    ]
                  }
                ]
              },
              "example": {
                "plugins": {},
                "id": "1"
              }
            }
          }
        }
      }
    },
    "/apisix/admin/plugin_configs/{id}": {
      "get": {
        "operationId": "getPluginConfig",
        "summary": "Get PluginConfig",
        "description": "Get PluginConfig. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "plugin_configs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PluginConfigResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/plugin_configs/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/plugin_configs/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putPluginConfigById",
        "summary": "Create or replace PluginConfig",
        "description": "Create or replace PluginConfig. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "plugin_configs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PluginConfigResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/plugin_configs/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/plugin_configs/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PluginConfigResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/plugin_configs/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/plugin_configs/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PluginConfigRequest"
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/PluginConfig"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "patchPluginConfigById",
        "summary": "Update PluginConfig",
        "description": "Update PluginConfig. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "plugin_configs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PluginConfigResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/plugin_configs/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/plugin_configs/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PluginConfigPatch"
              },
              "example": {
                "plugins": {}
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deletePluginConfig",
        "summary": "Delete PluginConfig",
        "description": "Delete PluginConfig. The literal force=true bypasses reference checks.",
        "tags": [
          "plugin_configs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Force"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted. deleted is a string for compatibility.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResult"
                },
                "example": {
                  "key": "/apisix/plugin_configs/1",
                  "deleted": "1"
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/plugin_configs/{id}/{sub_path}": {
      "patch": {
        "operationId": "patchPluginConfigSubPath",
        "summary": "Update PluginConfig",
        "description": "Update PluginConfig. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "plugin_configs"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "name": "sub_path",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "description": "Slash-separated nested keys; may span several URL segments."
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PluginConfigResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/plugin_configs/1",
                      "value": {
                        "plugins": {},
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/plugin_configs/1",
                        "value": {
                          "plugins": {},
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {}
            }
          },
          "description": "Replacement JSON value for the subpath; string, number, boolean, object, or array. The complete resulting resource must remain valid."
        }
      }
    },
    "/apisix/admin/stream_routes": {
      "get": {
        "operationId": "listStreamRoutes",
        "summary": "List stream_routes",
        "description": "List stream_routes. Responses follow deployment.admin.admin_api_version. Requires apisix.proxy_mode stream or http&stream. ",
        "tags": [
          "stream_routes"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/label"
          },
          {
            "$ref": "#/components/parameters/filter"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamRouteListResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "list": [
                        {
                          "key": "/apisix/stream_routes/1",
                          "value": {
                            "server_port": 9100,
                            "upstream": {
                              "type": "roundrobin",
                              "nodes": {
                                "127.0.0.1:1980": 1
                              }
                            },
                            "id": "1"
                          },
                          "createdIndex": 10,
                          "modifiedIndex": 10
                        }
                      ],
                      "total": 1
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/stream_routes",
                        "dir": true,
                        "nodes": [
                          {
                            "key": "/apisix/stream_routes/1",
                            "value": {
                              "server_port": 9100,
                              "upstream": {
                                "type": "roundrobin",
                                "nodes": {
                                  "127.0.0.1:1980": 1
                                }
                              },
                              "id": "1"
                            },
                            "createdIndex": 10,
                            "modifiedIndex": 10
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putStreamRouteCollection",
        "summary": "Create or replace StreamRoute",
        "description": "Create or replace StreamRoute. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id. Requires apisix.proxy_mode stream or http&stream.",
        "tags": [
          "stream_routes"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamRouteResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/stream_routes/1",
                      "value": {
                        "server_port": 9100,
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/stream_routes/1",
                        "value": {
                          "server_port": 9100,
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamRouteResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/stream_routes/1",
                      "value": {
                        "server_port": 9100,
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/stream_routes/1",
                        "value": {
                          "server_port": 9100,
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/StreamRouteRequest"
                  },
                  {
                    "required": [
                      "id"
                    ]
                  }
                ]
              },
              "example": {
                "server_port": 9100,
                "upstream": {
                  "type": "roundrobin",
                  "nodes": {
                    "127.0.0.1:1980": 1
                  }
                },
                "id": "1"
              }
            }
          }
        }
      },
      "post": {
        "operationId": "postStreamRouteCollection",
        "summary": "Create StreamRoute with a generated ID",
        "description": "Create StreamRoute with a generated ID. Do not send id. Requires apisix.proxy_mode stream or http&stream.",
        "tags": [
          "stream_routes"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamRouteResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/stream_routes/1",
                      "value": {
                        "server_port": 9100,
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "create",
                      "node": {
                        "key": "/apisix/stream_routes/1",
                        "value": {
                          "server_port": 9100,
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/StreamRouteRequest"
                  },
                  {
                    "not": {
                      "required": [
                        "id"
                      ]
                    }
                  }
                ]
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/StreamRoute"
                }
              }
            }
          }
        }
      }
    },
    "/apisix/admin/stream_routes/{id}": {
      "get": {
        "operationId": "getStreamRoute",
        "summary": "Get StreamRoute",
        "description": "Get StreamRoute. Responses follow deployment.admin.admin_api_version. Requires apisix.proxy_mode stream or http&stream. ",
        "tags": [
          "stream_routes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamRouteResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/stream_routes/1",
                      "value": {
                        "server_port": 9100,
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/stream_routes/1",
                        "value": {
                          "server_port": 9100,
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putStreamRouteById",
        "summary": "Create or replace StreamRoute",
        "description": "Create or replace StreamRoute. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id. Requires apisix.proxy_mode stream or http&stream.",
        "tags": [
          "stream_routes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamRouteResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/stream_routes/1",
                      "value": {
                        "server_port": 9100,
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/stream_routes/1",
                        "value": {
                          "server_port": 9100,
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StreamRouteResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/stream_routes/1",
                      "value": {
                        "server_port": 9100,
                        "upstream": {
                          "type": "roundrobin",
                          "nodes": {
                            "127.0.0.1:1980": 1
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/stream_routes/1",
                        "value": {
                          "server_port": 9100,
                          "upstream": {
                            "type": "roundrobin",
                            "nodes": {
                              "127.0.0.1:1980": 1
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StreamRouteRequest"
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/StreamRoute"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteStreamRoute",
        "summary": "Delete StreamRoute",
        "description": "Delete StreamRoute. The literal force=true bypasses reference checks.",
        "tags": [
          "stream_routes"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Force"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted. deleted is a string for compatibility.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResult"
                },
                "example": {
                  "key": "/apisix/stream_routes/1",
                  "deleted": "1"
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/protos": {
      "get": {
        "operationId": "listProtos",
        "summary": "List protos",
        "description": "List protos. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "protos"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/label"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProtoListResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "list": [
                        {
                          "key": "/apisix/protos/1",
                          "value": {
                            "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                            "id": "1"
                          },
                          "createdIndex": 10,
                          "modifiedIndex": 10
                        }
                      ],
                      "total": 1
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/protos",
                        "dir": true,
                        "nodes": [
                          {
                            "key": "/apisix/protos/1",
                            "value": {
                              "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                              "id": "1"
                            },
                            "createdIndex": 10,
                            "modifiedIndex": 10
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putProtoCollection",
        "summary": "Create or replace Proto",
        "description": "Create or replace Proto. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "protos"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProtoResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/protos/1",
                      "value": {
                        "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/protos/1",
                        "value": {
                          "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProtoResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/protos/1",
                      "value": {
                        "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/protos/1",
                        "value": {
                          "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProtoRequest"
                  },
                  {
                    "required": [
                      "id"
                    ]
                  }
                ]
              },
              "example": {
                "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                "id": "1"
              }
            }
          }
        }
      },
      "post": {
        "operationId": "postProtoCollection",
        "summary": "Create Proto with a generated ID",
        "description": "Create Proto with a generated ID. Do not send id.",
        "tags": [
          "protos"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProtoResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/protos/1",
                      "value": {
                        "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "create",
                      "node": {
                        "key": "/apisix/protos/1",
                        "value": {
                          "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProtoRequest"
                  },
                  {
                    "not": {
                      "required": [
                        "id"
                      ]
                    }
                  }
                ]
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/Proto"
                }
              }
            }
          }
        }
      }
    },
    "/apisix/admin/protos/{id}": {
      "get": {
        "operationId": "getProto",
        "summary": "Get Proto",
        "description": "Get Proto. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "protos"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProtoResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/protos/1",
                      "value": {
                        "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/protos/1",
                        "value": {
                          "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putProtoById",
        "summary": "Create or replace Proto",
        "description": "Create or replace Proto. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "protos"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProtoResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/protos/1",
                      "value": {
                        "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/protos/1",
                        "value": {
                          "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProtoResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/protos/1",
                      "value": {
                        "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/protos/1",
                        "value": {
                          "content": "syntax = \"proto3\"; message Hello { string name = 1; }",
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProtoRequest"
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/Proto"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteProto",
        "summary": "Delete Proto",
        "description": "Delete Proto. The literal force=true bypasses reference checks.",
        "tags": [
          "protos"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Force"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted. deleted is a string for compatibility.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResult"
                },
                "example": {
                  "key": "/apisix/protos/1",
                  "deleted": "1"
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/plugin_metadata": {
      "get": {
        "operationId": "listMetadatas",
        "summary": "List plugin_metadata",
        "description": "List plugin_metadata. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "plugin_metadata"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataListResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "list": [
                        {
                          "key": "/apisix/plugin_metadata/example-plugin",
                          "value": {
                            "id": "example-plugin"
                          },
                          "createdIndex": 10,
                          "modifiedIndex": 10
                        }
                      ],
                      "total": 1
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/plugin_metadata",
                        "dir": true,
                        "nodes": [
                          {
                            "key": "/apisix/plugin_metadata/example-plugin",
                            "value": {
                              "id": "example-plugin"
                            },
                            "createdIndex": 10,
                            "modifiedIndex": 10
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/plugin_metadata/{plugin_name}": {
      "get": {
        "operationId": "getMetadata",
        "summary": "Get Metadata",
        "description": "Get Metadata. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "plugin_metadata"
        ],
        "parameters": [
          {
            "name": "plugin_name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "description": "plugin name"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/plugin_metadata/example-plugin",
                      "value": {
                        "id": "example-plugin"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/plugin_metadata/example-plugin",
                        "value": {
                          "id": "example-plugin"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putMetadataById",
        "summary": "Create or replace Metadata",
        "description": "Create or replace Metadata. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id. The path plugin name selects metadata_schema; this resource does not support POST or PATCH.",
        "tags": [
          "plugin_metadata"
        ],
        "parameters": [
          {
            "name": "plugin_name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "description": "plugin name"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/plugin_metadata/example-plugin",
                      "value": {
                        "id": "example-plugin"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/plugin_metadata/example-plugin",
                        "value": {
                          "id": "example-plugin"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/plugin_metadata/example-plugin",
                      "value": {
                        "id": "example-plugin"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/plugin_metadata/example-plugin",
                        "value": {
                          "id": "example-plugin"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MetadataRequest"
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/Metadata"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteMetadata",
        "summary": "Delete Metadata",
        "description": "Delete Metadata. ",
        "tags": [
          "plugin_metadata"
        ],
        "parameters": [
          {
            "name": "plugin_name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "description": "plugin name"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted. deleted is a string for compatibility.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResult"
                },
                "example": {
                  "key": "/apisix/plugin_metadata/1",
                  "deleted": "1"
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/secrets": {
      "get": {
        "operationId": "listSecrets",
        "summary": "List secrets",
        "description": "List secrets. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "secrets"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretListResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "list": [
                        {
                          "key": "/apisix/secrets/vault/1",
                          "value": {
                            "uri": "http://127.0.0.1:8200",
                            "prefix": "kv",
                            "token": "example-token",
                            "id": "vault/1"
                          },
                          "createdIndex": 10,
                          "modifiedIndex": 10
                        }
                      ],
                      "total": 1
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/secrets/vault",
                        "dir": true,
                        "nodes": [
                          {
                            "key": "/apisix/secrets/vault/1",
                            "value": {
                              "uri": "http://127.0.0.1:8200",
                              "prefix": "kv",
                              "token": "example-token",
                              "id": "vault/1"
                            },
                            "createdIndex": 10,
                            "modifiedIndex": 10
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/secrets/{secret_type}/{id}": {
      "get": {
        "operationId": "getSecret",
        "summary": "Get Secret",
        "description": "Get Secret. Responses follow deployment.admin.admin_api_version. ",
        "tags": [
          "secrets"
        ],
        "parameters": [
          {
            "name": "secret_type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "vault",
                "aws",
                "gcp"
              ]
            },
            "description": "secret type"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/secrets/vault/1",
                      "value": {
                        "uri": "http://127.0.0.1:8200",
                        "prefix": "kv",
                        "token": "example-token",
                        "id": "vault/1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/secrets/vault/1",
                        "value": {
                          "uri": "http://127.0.0.1:8200",
                          "prefix": "kv",
                          "token": "example-token",
                          "id": "vault/1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      },
      "put": {
        "operationId": "putSecretById",
        "summary": "Create or replace Secret",
        "description": "Create or replace Secret. Returns 201 for creation and 200 for replacement. If body id is present it must match the path; on collection PUT the body supplies id.",
        "tags": [
          "secrets"
        ],
        "parameters": [
          {
            "name": "secret_type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "vault",
                "aws",
                "gcp"
              ]
            },
            "description": "secret type"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/secrets/vault/1",
                      "value": {
                        "uri": "http://127.0.0.1:8200",
                        "prefix": "kv",
                        "token": "example-token",
                        "id": "vault/1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/secrets/vault/1",
                        "value": {
                          "uri": "http://127.0.0.1:8200",
                          "prefix": "kv",
                          "token": "example-token",
                          "id": "vault/1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "200": {
            "description": "Existing resource replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/secrets/vault/1",
                      "value": {
                        "uri": "http://127.0.0.1:8200",
                        "prefix": "kv",
                        "token": "example-token",
                        "id": "vault/1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/secrets/vault/1",
                        "value": {
                          "uri": "http://127.0.0.1:8200",
                          "prefix": "kv",
                          "token": "example-token",
                          "id": "vault/1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SecretRequest"
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/Secret"
                }
              }
            }
          }
        }
      },
      "patch": {
        "operationId": "patchSecretById",
        "summary": "Update Secret",
        "description": "Update Secret. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "secrets"
        ],
        "parameters": [
          {
            "name": "secret_type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "vault",
                "aws",
                "gcp"
              ]
            },
            "description": "secret type"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/secrets/vault/1",
                      "value": {
                        "uri": "http://127.0.0.1:8200",
                        "prefix": "kv",
                        "token": "example-token",
                        "id": "vault/1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/secrets/vault/1",
                        "value": {
                          "uri": "http://127.0.0.1:8200",
                          "prefix": "kv",
                          "token": "example-token",
                          "id": "vault/1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SecretPatch"
              },
              "example": {
                "token": "example-token"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteSecret",
        "summary": "Delete Secret",
        "description": "Delete Secret. ",
        "tags": [
          "secrets"
        ],
        "parameters": [
          {
            "name": "secret_type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "vault",
                "aws",
                "gcp"
              ]
            },
            "description": "secret type"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted. deleted is a string for compatibility.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResult"
                },
                "example": {
                  "key": "/apisix/secrets/1",
                  "deleted": "1"
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/secrets/{secret_type}": {
      "get": {
        "operationId": "listSecretsBackendAlias",
        "summary": "List secrets through a backend path alias",
        "description": "In 3.16, a backend-only GET still reads /secrets/ and returns all backends; the backend segment is used only when an id is supplied. Use /secrets for listing.",
        "tags": [
          "secrets"
        ],
        "parameters": [
          {
            "name": "secret_type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "vault",
                "aws",
                "gcp"
              ]
            },
            "description": "secret type"
          },
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          }
        ],
        "responses": {
          "200": {
            "description": "Resource data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretListResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "list": [
                        {
                          "key": "/apisix/secrets/vault/1",
                          "value": {
                            "uri": "http://127.0.0.1:8200",
                            "prefix": "kv",
                            "token": "example-token",
                            "id": "vault/1"
                          },
                          "createdIndex": 10,
                          "modifiedIndex": 10
                        }
                      ],
                      "total": 1
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/secrets/vault",
                        "dir": true,
                        "nodes": [
                          {
                            "key": "/apisix/secrets/vault/1",
                            "value": {
                              "uri": "http://127.0.0.1:8200",
                              "prefix": "kv",
                              "token": "example-token",
                              "id": "vault/1"
                            },
                            "createdIndex": 10,
                            "modifiedIndex": 10
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ]
      }
    },
    "/apisix/admin/secrets/{secret_type}/{id}/{sub_path}": {
      "patch": {
        "operationId": "patchSecretSubPath",
        "summary": "Update Secret",
        "description": "Update Secret. Merge an object into the existing resource, or replace the selected subpath value. The complete result is revalidated.",
        "tags": [
          "secrets"
        ],
        "parameters": [
          {
            "name": "secret_type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "vault",
                "aws",
                "gcp"
              ]
            },
            "description": "secret type"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "name": "sub_path",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "description": "Slash-separated nested keys; may span several URL segments."
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/secrets/vault/1",
                      "value": {
                        "uri": "http://127.0.0.1:8200",
                        "prefix": "kv",
                        "token": "example-token",
                        "id": "vault/1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "compareAndSwap",
                      "node": {
                        "key": "/apisix/secrets/vault/1",
                        "value": {
                          "uri": "http://127.0.0.1:8200",
                          "prefix": "kv",
                          "token": "example-token",
                          "id": "vault/1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/resource.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {}
            }
          },
          "description": "Replacement JSON value for the subpath; string, number, boolean, object, or array. The complete resulting resource must remain valid."
        }
      }
    },
    "/apisix/admin/consumers/{username}/credentials": {
      "get": {
        "operationId": "listCredentials",
        "summary": "Read consumer credentials",
        "description": "Read consumer credentials. At most one configured authentication plugin is allowed per credential; plugins is optional.",
        "tags": [
          "credentials"
        ],
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^[a-zA-Z0-9_\\-]+$",
              "minLength": 1,
              "type": "string",
              "maxLength": 256
            },
            "description": "username"
          },
          {
            "$ref": "#/components/parameters/Page"
          },
          {
            "$ref": "#/components/parameters/PageSize"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "$ref": "#/components/parameters/label"
          }
        ],
        "responses": {
          "200": {
            "description": "Credential data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CredentialListResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "list": [
                        {
                          "key": "/apisix/consumers/jack/credentials/1",
                          "value": {
                            "plugins": {
                              "key-auth": {
                                "key": "example-key"
                              }
                            },
                            "id": "1"
                          },
                          "createdIndex": 10,
                          "modifiedIndex": 10
                        }
                      ],
                      "total": 1
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/consumers/jack/credentials",
                        "dir": true,
                        "nodes": [
                          {
                            "key": "/apisix/consumers/jack/credentials/1",
                            "value": {
                              "plugins": {
                                "key-auth": {
                                  "key": "example-key"
                                }
                              },
                              "id": "1"
                            },
                            "createdIndex": 10,
                            "modifiedIndex": 10
                          }
                        ]
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/credentials.lua"
        ]
      },
      "put": {
        "operationId": "putCredentialCollection",
        "summary": "Create or replace a credential",
        "description": "Create or replace a credential. The parent consumer must exist. POST and PATCH are unsupported.",
        "tags": [
          "credentials"
        ],
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^[a-zA-Z0-9_\\-]+$",
              "minLength": 1,
              "type": "string",
              "maxLength": 256
            },
            "description": "username"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CredentialResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumers/jack/credentials/1",
                      "value": {
                        "plugins": {
                          "key-auth": {
                            "key": "example-key"
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/consumers/jack/credentials/1",
                        "value": {
                          "plugins": {
                            "key-auth": {
                              "key": "example-key"
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CredentialResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumers/jack/credentials/1",
                      "value": {
                        "plugins": {
                          "key-auth": {
                            "key": "example-key"
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/consumers/jack/credentials/1",
                        "value": {
                          "plugins": {
                            "key-auth": {
                              "key": "example-key"
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/credentials.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CredentialRequest"
                  },
                  {
                    "required": [
                      "id"
                    ]
                  }
                ]
              },
              "example": {
                "plugins": {
                  "key-auth": {
                    "key": "example-key"
                  }
                },
                "id": "1"
              }
            }
          }
        }
      }
    },
    "/apisix/admin/consumers/{username}/credentials/{id}": {
      "get": {
        "operationId": "getCredential",
        "summary": "Read consumer credentials",
        "description": "Read consumer credentials. At most one configured authentication plugin is allowed per credential; plugins is optional.",
        "tags": [
          "credentials"
        ],
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^[a-zA-Z0-9_\\-]+$",
              "minLength": 1,
              "type": "string",
              "maxLength": 256
            },
            "description": "username"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Credential data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CredentialResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumers/jack/credentials/1",
                      "value": {
                        "plugins": {
                          "key-auth": {
                            "key": "example-key"
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "get",
                      "node": {
                        "key": "/apisix/consumers/jack/credentials/1",
                        "value": {
                          "plugins": {
                            "key-auth": {
                              "key": "example-key"
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/credentials.lua"
        ]
      },
      "put": {
        "operationId": "putCredentialById",
        "summary": "Create or replace a credential",
        "description": "Create or replace a credential. The parent consumer must exist. POST and PATCH are unsupported.",
        "tags": [
          "credentials"
        ],
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^[a-zA-Z0-9_\\-]+$",
              "minLength": 1,
              "type": "string",
              "maxLength": 256
            },
            "description": "username"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          },
          {
            "$ref": "#/components/parameters/Ttl"
          }
        ],
        "responses": {
          "200": {
            "description": "Replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CredentialResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumers/jack/credentials/1",
                      "value": {
                        "plugins": {
                          "key-auth": {
                            "key": "example-key"
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/consumers/jack/credentials/1",
                        "value": {
                          "plugins": {
                            "key-auth": {
                              "key": "example-key"
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "201": {
            "description": "Created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CredentialResult"
                },
                "examples": {
                  "v3": {
                    "summary": "Illustrative default v3 response",
                    "value": {
                      "key": "/apisix/consumers/jack/credentials/1",
                      "value": {
                        "plugins": {
                          "key-auth": {
                            "key": "example-key"
                          }
                        },
                        "id": "1"
                      }
                    }
                  },
                  "v2": {
                    "summary": "Illustrative legacy response",
                    "value": {
                      "action": "set",
                      "node": {
                        "key": "/apisix/consumers/jack/credentials/1",
                        "value": {
                          "plugins": {
                            "key-auth": {
                              "key": "example-key"
                            }
                          },
                          "id": "1"
                        }
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/credentials.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CredentialRequest"
              },
              "examples": {
                "configuration": {
                  "$ref": "#/components/examples/Credential"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "deleteCredential",
        "summary": "Delete a credential",
        "description": "Delete a credential.",
        "tags": [
          "credentials"
        ],
        "parameters": [
          {
            "name": "username",
            "in": "path",
            "required": true,
            "schema": {
              "pattern": "^[a-zA-Z0-9_\\-]+$",
              "minLength": 1,
              "type": "string",
              "maxLength": 256
            },
            "description": "username"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64,
              "pattern": "^[a-zA-Z0-9-_.]+$"
            },
            "description": "id"
          }
        ],
        "responses": {
          "200": {
            "description": "Deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteResult"
                }
              }
            },
            "headers": {
              "X-API-VERSION": {
                "schema": {
                  "type": "string",
                  "enum": [
                    "v2",
                    "v3"
                  ]
                },
                "description": "Selected Admin API response format."
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "503": {
            "$ref": "#/components/responses/503"
          }
        },
        "x-apisix-source": [
          "apisix/admin/credentials.lua"
        ]
      }
    },
    "/apisix/admin/plugins/{plugin_name}": {
      "get": {
        "operationId": "getPluginSchema",
        "summary": "Get a loaded plugin schema",
        "description": "Get a loaded plugin schema. schema_type=consumer selects consumer_schema; metadata_schema is available through the all=true catalog.",
        "tags": [
          "plugins"
        ],
        "parameters": [
          {
            "name": "plugin_name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "description": "plugin name"
          },
          {
            "$ref": "#/components/parameters/Subsystem"
          },
          {
            "$ref": "#/components/parameters/SchemaType"
          },
          {
            "$ref": "#/components/parameters/All"
          }
        ],
        "responses": {
          "200": {
            "description": "JSON Schema or plugin catalog when all=true.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          }
        },
        "x-apisix-source": [
          "apisix/admin/plugins.lua"
        ]
      }
    },
    "/apisix/admin/schema/plugins/{plugin_name}": {
      "get": {
        "operationId": "getPluginSchemaAlias",
        "summary": "Get a loaded plugin schema",
        "description": "Get a loaded plugin schema. schema_type=consumer selects consumer_schema; metadata_schema is available through the all=true catalog.",
        "tags": [
          "plugins"
        ],
        "parameters": [
          {
            "name": "plugin_name",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "description": "plugin name"
          },
          {
            "$ref": "#/components/parameters/Subsystem"
          },
          {
            "$ref": "#/components/parameters/SchemaType"
          },
          {
            "$ref": "#/components/parameters/All"
          }
        ],
        "responses": {
          "200": {
            "description": "JSON Schema or plugin catalog when all=true.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          }
        },
        "x-apisix-source": [
          "apisix/admin/plugins.lua"
        ]
      }
    },
    "/apisix/admin/plugins": {
      "get": {
        "operationId": "getPluginCatalog",
        "summary": "Get loaded plugin attributes and schemas with all=true",
        "description": "Get loaded plugin attributes and schemas with all=true. Without all=true there is no plugin name, so this handler returns 404.",
        "tags": [
          "plugins"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Subsystem"
          },
          {
            "name": "all",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "true"
              ]
            },
            "description": "Required to select the catalog response.",
            "example": "true"
          }
        ],
        "responses": {
          "200": {
            "description": "Loaded plugin catalog, keyed by plugin name.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "object"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          }
        },
        "x-apisix-source": [
          "apisix/admin/plugins.lua"
        ]
      }
    },
    "/apisix/admin/plugins/list": {
      "get": {
        "operationId": "listPluginNames",
        "summary": "List enabled, successfully loaded plugins in descending priority order",
        "description": "List enabled, successfully loaded plugins in descending priority order.",
        "tags": [
          "plugins"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/Subsystem"
          }
        ],
        "responses": {
          "200": {
            "description": "Plugin names.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid subsystem.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                },
                "example": "invalid subsystem passed"
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          }
        },
        "x-apisix-source": [
          "apisix/admin/init.lua"
        ]
      }
    },
    "/apisix/admin/plugins/reload": {
      "put": {
        "operationId": "reloadPlugins",
        "summary": "Broadcast a plugin reload event",
        "description": "Broadcast a plugin reload event. Success acknowledges the event; it does not wait for every worker to finish.",
        "tags": [
          "plugins"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Event posted.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                },
                "example": "done"
              }
            }
          },
          "503": {
            "description": "Failed to post event.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          }
        },
        "x-apisix-source": [
          "apisix/admin/init.lua"
        ]
      }
    },
    "/apisix/admin/schema/{resource}": {
      "get": {
        "operationId": "getResourceSchema",
        "summary": "Get a core schema by its singular name (for example route, upstream, credential)",
        "description": "Get a core schema by its singular name (for example route, upstream, credential). Unknown names return 400.",
        "tags": [
          "schemas"
        ],
        "parameters": [
          {
            "name": "resource",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "examples": [
                "route",
                "upstream",
                "credential"
              ]
            },
            "description": "Core schema name, singular rather than resource directory name.",
            "example": "route"
          }
        ],
        "responses": {
          "200": {
            "description": "JSON Schema.",
            "content": {
              "application/json": {
                "schema": {
                  "type": [
                    "object",
                    "array"
                  ]
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          }
        },
        "x-apisix-source": [
          "apisix/admin/schema.lua"
        ]
      }
    },
    "/apisix/admin/schema/validate/{resource}": {
      "post": {
        "operationId": "validateResourceSchema",
        "summary": "Check the built-in resource JSON Schema only",
        "description": "Check the built-in resource JSON Schema only. Does not run resource checkers, resolve references, or validate plugin configuration. No API-key check is performed by this handler in 3.16.",
        "tags": [
          "schemas"
        ],
        "parameters": [
          {
            "name": "resource",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "routes",
                "services",
                "upstreams",
                "consumers",
                "ssls",
                "global_rules",
                "consumer_groups",
                "plugin_configs",
                "stream_routes",
                "protos",
                "credentials"
              ]
            },
            "description": "Plural resource directory name. secrets and plugin_metadata have no core schema and are not supported.",
            "example": "routes"
          }
        ],
        "responses": {
          "200": {
            "description": "Valid; empty response body."
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          }
        },
        "x-apisix-source": [
          "apisix/admin/init.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/Route"
                  },
                  {
                    "$ref": "#/components/schemas/Service"
                  },
                  {
                    "$ref": "#/components/schemas/Upstream"
                  },
                  {
                    "$ref": "#/components/schemas/Consumer"
                  },
                  {
                    "$ref": "#/components/schemas/Credential"
                  },
                  {
                    "$ref": "#/components/schemas/SSL"
                  },
                  {
                    "$ref": "#/components/schemas/GlobalRule"
                  },
                  {
                    "$ref": "#/components/schemas/PluginConfig"
                  },
                  {
                    "$ref": "#/components/schemas/ConsumerGroup"
                  },
                  {
                    "$ref": "#/components/schemas/StreamRoute"
                  },
                  {
                    "$ref": "#/components/schemas/Proto"
                  }
                ]
              }
            }
          }
        },
        "security": []
      }
    },
    "/apisix/admin": {
      "head": {
        "operationId": "probeAdmin",
        "summary": "Probe the Admin API listener",
        "description": "Probe the Admin API listener. Does not check the API key.",
        "tags": [
          "probe"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Listener reachable; no response body."
          }
        },
        "x-apisix-source": [
          "apisix/admin/init.lua"
        ],
        "security": []
      }
    },
    "/apisix/admin/configs": {
      "get": {
        "operationId": "getStandaloneConfig",
        "summary": "Read the current YAML-provider configuration as JSON or YAML",
        "description": "Read the current YAML-provider configuration as JSON or YAML. Before the first update only zero version counters are returned.",
        "tags": [
          "standalone"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Current configuration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StandaloneRead"
                }
              },
              "application/yaml": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "X-Digest": {
                "description": "Client-supplied configuration digest.",
                "schema": {
                  "type": "string"
                }
              },
              "X-Last-Modified": {
                "description": "Unix update time.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "500": {
            "description": "Configuration storage, serialization, or broadcast failed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": [
                    "object",
                    "string"
                  ]
                }
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/standalone.lua"
        ]
      },
      "put": {
        "operationId": "putStandaloneConfig",
        "summary": "Replace the YAML-provider configuration",
        "description": "Replace the YAML-provider configuration. Requires X-Digest; matching digest skips all validation and returns 204. A new digest applies the update asynchronously and returns 202.",
        "tags": [
          "standalone"
        ],
        "parameters": [
          {
            "name": "X-Digest",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Opaque digest supplied by the client; changed when configuration changes.",
            "example": "example-v1"
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted; empty body.",
            "headers": {
              "X-Digest": {
                "description": "Client-supplied configuration digest.",
                "schema": {
                  "type": "string"
                }
              },
              "X-Last-Modified": {
                "description": "Unix update time.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "204": {
            "description": "Digest unchanged; empty body.",
            "headers": {
              "X-Digest": {
                "description": "Client-supplied configuration digest.",
                "schema": {
                  "type": "string"
                }
              },
              "X-Last-Modified": {
                "description": "Unix update time.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "500": {
            "description": "Configuration storage, serialization, or broadcast failed.",
            "content": {
              "application/json": {
                "schema": {
                  "type": [
                    "object",
                    "string"
                  ]
                }
              }
            }
          }
        },
        "x-apisix-source": [
          "apisix/admin/standalone.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StandaloneConfig"
              },
              "example": {
                "routes": [
                  {
                    "uri": "/example",
                    "upstream": {
                      "type": "roundrobin",
                      "nodes": {
                        "127.0.0.1:1980": 1
                      }
                    },
                    "id": "1"
                  }
                ]
              }
            },
            "application/yaml": {
              "schema": {
                "type": "string"
              }
            }
          }
        }
      },
      "head": {
        "operationId": "headStandaloneConfig",
        "summary": "Read configuration metadata headers without a body",
        "description": "Read configuration metadata headers without a body. Headers can be absent before the first update.",
        "tags": [
          "standalone"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Metadata only.",
            "headers": {
              "X-Digest": {
                "description": "Client-supplied configuration digest.",
                "schema": {
                  "type": "string"
                }
              },
              "X-Last-Modified": {
                "description": "Unix update time.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or a referenced resource prevents this operation."
          },
          "401": {
            "description": "Missing/incorrect key or method forbidden for a viewer key."
          },
          "500": {
            "description": "Configuration storage, serialization, or broadcast failed."
          }
        },
        "x-apisix-source": [
          "apisix/admin/standalone.lua"
        ]
      }
    },
    "/apisix/admin/configs/validate": {
      "post": {
        "operationId": "validateStandaloneConfig",
        "summary": "Validate a YAML-provider configuration without applying it; reports all resource and duplicate-ID errors with zero-based array indexes",
        "description": "Validate a YAML-provider configuration without applying it; reports all resource and duplicate-ID errors with zero-based array indexes. Requires the YAML provider.",
        "tags": [
          "standalone"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Valid; empty body."
          },
          "400": {
            "description": "Invalid input or validation errors.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error_msg": {
                      "type": "string"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "resource_type": {
                            "type": "string"
                          },
                          "index": {
                            "type": "integer"
                          },
                          "error": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/401"
          }
        },
        "x-apisix-source": [
          "apisix/admin/standalone.lua"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StandaloneConfig"
              },
              "example": {
                "routes": [
                  {
                    "uri": "/example",
                    "upstream": {
                      "type": "roundrobin",
                      "nodes": {
                        "127.0.0.1:1980": 1
                      }
                    },
                    "id": "1"
                  }
                ]
              }
            },
            "application/yaml": {
              "schema": {
                "type": "string"
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "AdminKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-KEY",
        "description": "Admin API key configured in `config.yaml` under `deployment.admin.admin_key`."
      },
      "ApiKeyQuery": {
        "type": "apiKey",
        "in": "query",
        "name": "api_key",
        "description": "Admin API key passed as a query parameter. Avoid this form in production because URLs may be logged."
      },
      "ApiKeyCookie": {
        "type": "apiKey",
        "in": "cookie",
        "name": "x_api_key",
        "description": "Admin API key passed in a cookie."
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error_msg": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "req_body": {}
        },
        "description": "Handler and backend errors have different shapes; fields are not always present."
      },
      "Route": {
        "anyOf": [
          {
            "required": [
              "plugins",
              "uri"
            ]
          },
          {
            "required": [
              "upstream",
              "uri"
            ]
          },
          {
            "required": [
              "upstream_id",
              "uri"
            ]
          },
          {
            "required": [
              "service_id",
              "uri"
            ]
          },
          {
            "required": [
              "plugins",
              "uris"
            ]
          },
          {
            "required": [
              "upstream",
              "uris"
            ]
          },
          {
            "required": [
              "upstream_id",
              "uris"
            ]
          },
          {
            "required": [
              "service_id",
              "uris"
            ]
          },
          {
            "required": [
              "script",
              "uri"
            ]
          },
          {
            "required": [
              "script",
              "uris"
            ]
          }
        ],
        "type": "object",
        "properties": {
          "host": {
            "type": "string",
            "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
          },
          "enable_websocket": {
            "description": "enable websocket for request",
            "type": "boolean"
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "create_time": {
            "type": "integer"
          },
          "update_time": {
            "type": "integer"
          },
          "status": {
            "description": "route status, 1 to enable, 0 to disable",
            "default": 1,
            "type": "integer",
            "enum": [
              1,
              0
            ]
          },
          "upstream_id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "script_id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "uri": {
            "minLength": 1,
            "type": "string",
            "maxLength": 4096
          },
          "uris": {
            "uniqueItems": true,
            "minItems": 1,
            "type": "array",
            "items": {
              "description": "HTTP uri",
              "type": "string"
            }
          },
          "upstream": {
            "$ref": "#/components/schemas/EmbeddedUpstream"
          },
          "methods": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "description": "HTTP method",
              "type": "string",
              "enum": [
                "GET",
                "POST",
                "PUT",
                "DELETE",
                "PATCH",
                "HEAD",
                "OPTIONS",
                "CONNECT",
                "TRACE",
                "PURGE"
              ]
            }
          },
          "hosts": {
            "uniqueItems": true,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
            }
          },
          "remote_addr": {
            "description": "client IP",
            "anyOf": [
              {
                "type": "string",
                "title": "IPv4",
                "format": "ipv4"
              },
              {
                "pattern": "^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([12]?[0-9]|3[0-2])$",
                "title": "IPv4/CIDR",
                "type": "string"
              },
              {
                "type": "string",
                "title": "IPv6",
                "format": "ipv6"
              },
              {
                "pattern": "^([a-fA-F0-9]{0,4}:){1,8}(:[a-fA-F0-9]{0,4}){0,8}([a-fA-F0-9]{0,4})?/[0-9]{1,3}$",
                "title": "IPv6/CIDR",
                "type": "string"
              }
            ],
            "type": "string"
          },
          "remote_addrs": {
            "uniqueItems": true,
            "minItems": 1,
            "type": "array",
            "items": {
              "description": "client IP",
              "anyOf": [
                {
                  "type": "string",
                  "title": "IPv4",
                  "format": "ipv4"
                },
                {
                  "pattern": "^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([12]?[0-9]|3[0-2])$",
                  "title": "IPv4/CIDR",
                  "type": "string"
                },
                {
                  "type": "string",
                  "title": "IPv6",
                  "format": "ipv6"
                },
                {
                  "pattern": "^([a-fA-F0-9]{0,4}:){1,8}(:[a-fA-F0-9]{0,4}){0,8}([a-fA-F0-9]{0,4})?/[0-9]{1,3}$",
                  "title": "IPv6/CIDR",
                  "type": "string"
                }
              ],
              "type": "string"
            }
          },
          "filter_func": {
            "pattern": "^function",
            "minLength": 10,
            "type": "string"
          },
          "plugin_config_id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "script": {
            "minLength": 10,
            "type": "string",
            "maxLength": 102400
          },
          "priority": {
            "type": "integer",
            "default": 0
          },
          "plugins": {
            "type": "object"
          },
          "vars": {
            "type": "array"
          },
          "timeout": {
            "$ref": "#/components/schemas/Timeout"
          },
          "service_id": {
            "$ref": "#/components/schemas/ResourceId"
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "oneOf": [
              {
                "required": [
                  "uri"
                ]
              },
              {
                "required": [
                  "uris"
                ]
              }
            ]
          },
          {
            "oneOf": [
              {
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "host"
                      ]
                    },
                    {
                      "required": [
                        "hosts"
                      ]
                    }
                  ]
                }
              },
              {
                "required": [
                  "host"
                ]
              },
              {
                "required": [
                  "hosts"
                ]
              }
            ]
          },
          {
            "oneOf": [
              {
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "remote_addr"
                      ]
                    },
                    {
                      "required": [
                        "remote_addrs"
                      ]
                    }
                  ]
                }
              },
              {
                "required": [
                  "remote_addr"
                ]
              },
              {
                "required": [
                  "remote_addrs"
                ]
              }
            ]
          }
        ],
        "not": {
          "anyOf": [
            {
              "required": [
                "script",
                "plugins"
              ]
            },
            {
              "required": [
                "script",
                "plugin_config_id"
              ]
            }
          ]
        },
        "x-apisix-schema": "route",
        "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
      },
      "RouteRequest": {
        "anyOf": [
          {
            "required": [
              "plugins",
              "uri"
            ]
          },
          {
            "required": [
              "upstream",
              "uri"
            ]
          },
          {
            "required": [
              "upstream_id",
              "uri"
            ]
          },
          {
            "required": [
              "service_id",
              "uri"
            ]
          },
          {
            "required": [
              "plugins",
              "uris"
            ]
          },
          {
            "required": [
              "upstream",
              "uris"
            ]
          },
          {
            "required": [
              "upstream_id",
              "uris"
            ]
          },
          {
            "required": [
              "service_id",
              "uris"
            ]
          },
          {
            "required": [
              "script",
              "uri"
            ]
          },
          {
            "required": [
              "script",
              "uris"
            ]
          }
        ],
        "type": "object",
        "properties": {
          "host": {
            "type": "string",
            "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
          },
          "enable_websocket": {
            "description": "enable websocket for request",
            "type": "boolean"
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "status": {
            "description": "route status, 1 to enable, 0 to disable",
            "default": 1,
            "type": "integer",
            "enum": [
              1,
              0
            ]
          },
          "upstream_id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "script_id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "uri": {
            "minLength": 1,
            "type": "string",
            "maxLength": 4096
          },
          "uris": {
            "uniqueItems": true,
            "minItems": 1,
            "type": "array",
            "items": {
              "description": "HTTP uri",
              "type": "string"
            }
          },
          "upstream": {
            "$ref": "#/components/schemas/EmbeddedUpstreamRequest"
          },
          "methods": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "description": "HTTP method",
              "type": "string",
              "enum": [
                "GET",
                "POST",
                "PUT",
                "DELETE",
                "PATCH",
                "HEAD",
                "OPTIONS",
                "CONNECT",
                "TRACE",
                "PURGE"
              ]
            }
          },
          "hosts": {
            "uniqueItems": true,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
            }
          },
          "remote_addr": {
            "description": "client IP",
            "anyOf": [
              {
                "type": "string",
                "title": "IPv4",
                "format": "ipv4"
              },
              {
                "pattern": "^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([12]?[0-9]|3[0-2])$",
                "title": "IPv4/CIDR",
                "type": "string"
              },
              {
                "type": "string",
                "title": "IPv6",
                "format": "ipv6"
              },
              {
                "pattern": "^([a-fA-F0-9]{0,4}:){1,8}(:[a-fA-F0-9]{0,4}){0,8}([a-fA-F0-9]{0,4})?/[0-9]{1,3}$",
                "title": "IPv6/CIDR",
                "type": "string"
              }
            ],
            "type": "string"
          },
          "remote_addrs": {
            "uniqueItems": true,
            "minItems": 1,
            "type": "array",
            "items": {
              "description": "client IP",
              "anyOf": [
                {
                  "type": "string",
                  "title": "IPv4",
                  "format": "ipv4"
                },
                {
                  "pattern": "^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([12]?[0-9]|3[0-2])$",
                  "title": "IPv4/CIDR",
                  "type": "string"
                },
                {
                  "type": "string",
                  "title": "IPv6",
                  "format": "ipv6"
                },
                {
                  "pattern": "^([a-fA-F0-9]{0,4}:){1,8}(:[a-fA-F0-9]{0,4}){0,8}([a-fA-F0-9]{0,4})?/[0-9]{1,3}$",
                  "title": "IPv6/CIDR",
                  "type": "string"
                }
              ],
              "type": "string"
            }
          },
          "filter_func": {
            "pattern": "^function",
            "minLength": 10,
            "type": "string"
          },
          "plugin_config_id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "script": {
            "minLength": 10,
            "type": "string",
            "maxLength": 102400
          },
          "priority": {
            "type": "integer",
            "default": 0
          },
          "plugins": {
            "type": "object"
          },
          "vars": {
            "type": "array"
          },
          "timeout": {
            "$ref": "#/components/schemas/Timeout"
          },
          "service_id": {
            "$ref": "#/components/schemas/ResourceId"
          }
        },
        "additionalProperties": false,
        "allOf": [
          {
            "oneOf": [
              {
                "required": [
                  "uri"
                ]
              },
              {
                "required": [
                  "uris"
                ]
              }
            ]
          },
          {
            "oneOf": [
              {
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "host"
                      ]
                    },
                    {
                      "required": [
                        "hosts"
                      ]
                    }
                  ]
                }
              },
              {
                "required": [
                  "host"
                ]
              },
              {
                "required": [
                  "hosts"
                ]
              }
            ]
          },
          {
            "oneOf": [
              {
                "not": {
                  "anyOf": [
                    {
                      "required": [
                        "remote_addr"
                      ]
                    },
                    {
                      "required": [
                        "remote_addrs"
                      ]
                    }
                  ]
                }
              },
              {
                "required": [
                  "remote_addr"
                ]
              },
              {
                "required": [
                  "remote_addrs"
                ]
              }
            ]
          }
        ],
        "not": {
          "anyOf": [
            {
              "required": [
                "script",
                "plugins"
              ]
            },
            {
              "required": [
                "script",
                "plugin_config_id"
              ]
            }
          ]
        },
        "description": "Create/replace payload. The path (or collection body id) supplies id; create_time and update_time are assigned by APISIX. PUT replaces configuration, preserving the original create_time."
      },
      "RoutePatch": {
        "type": "object",
        "description": "Object merged into the existing value. The merged result is checked against the complete resource schema and handler checks; this is not JSON Patch. Arrays are replaced; null-valued object fields are deleted. Use a subpath PATCH to replace a nested value."
      },
      "RouteEnvelope": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/Route"
          },
          "createdIndex": {
            "type": "integer"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "RouteList": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RouteEnvelope"
            }
          }
        },
        "required": [
          "total",
          "list"
        ]
      },
      "RouteLegacy": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "node": {
            "$ref": "#/components/schemas/RouteEnvelope"
          }
        },
        "required": [
          "node"
        ]
      },
      "RouteLegacyList": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "node": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "dir": {
                "type": "boolean"
              },
              "nodes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/RouteEnvelope"
                }
              }
            }
          }
        },
        "required": [
          "node"
        ]
      },
      "RouteResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/RouteEnvelope"
          },
          {
            "$ref": "#/components/schemas/RouteLegacy"
          }
        ]
      },
      "RouteListResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/RouteList"
          },
          {
            "$ref": "#/components/schemas/RouteLegacyList"
          }
        ]
      },
      "Service": {
        "properties": {
          "upstream_id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "enable_websocket": {
            "description": "enable websocket for request",
            "type": "boolean"
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "create_time": {
            "type": "integer"
          },
          "update_time": {
            "type": "integer"
          },
          "script": {
            "minLength": 10,
            "type": "string",
            "maxLength": 102400
          },
          "plugins": {
            "type": "object"
          },
          "upstream": {
            "$ref": "#/components/schemas/EmbeddedUpstream"
          },
          "hosts": {
            "uniqueItems": true,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
            }
          }
        },
        "type": "object",
        "additionalProperties": false,
        "x-apisix-schema": "service",
        "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
      },
      "ServiceRequest": {
        "properties": {
          "upstream_id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "enable_websocket": {
            "description": "enable websocket for request",
            "type": "boolean"
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "script": {
            "minLength": 10,
            "type": "string",
            "maxLength": 102400
          },
          "plugins": {
            "type": "object"
          },
          "upstream": {
            "$ref": "#/components/schemas/EmbeddedUpstreamRequest"
          },
          "hosts": {
            "uniqueItems": true,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
            }
          }
        },
        "type": "object",
        "additionalProperties": false,
        "description": "Create/replace payload. The path (or collection body id) supplies id; create_time and update_time are assigned by APISIX. PUT replaces configuration, preserving the original create_time."
      },
      "ServicePatch": {
        "type": "object",
        "description": "Object merged into the existing value. The merged result is checked against the complete resource schema and handler checks; this is not JSON Patch. Arrays are replaced; null-valued object fields are deleted. Use a subpath PATCH to replace a nested value."
      },
      "ServiceEnvelope": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/Service"
          },
          "createdIndex": {
            "type": "integer"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "ServiceList": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceEnvelope"
            }
          }
        },
        "required": [
          "total",
          "list"
        ]
      },
      "ServiceLegacy": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "node": {
            "$ref": "#/components/schemas/ServiceEnvelope"
          }
        },
        "required": [
          "node"
        ]
      },
      "ServiceLegacyList": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "node": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "dir": {
                "type": "boolean"
              },
              "nodes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ServiceEnvelope"
                }
              }
            }
          }
        },
        "required": [
          "node"
        ]
      },
      "ServiceResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/ServiceEnvelope"
          },
          {
            "$ref": "#/components/schemas/ServiceLegacy"
          }
        ]
      },
      "ServiceListResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/ServiceList"
          },
          {
            "$ref": "#/components/schemas/ServiceLegacyList"
          }
        ]
      },
      "Upstream": {
        "properties": {
          "key": {
            "description": "the key of chash for dynamic load balancing",
            "type": "string"
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "create_time": {
            "type": "integer"
          },
          "update_time": {
            "type": "integer"
          },
          "nodes": {
            "anyOf": [
              {
                "type": "object",
                "patternProperties": {
                  ".*": {
                    "description": "weight of node",
                    "type": "integer",
                    "minimum": 0
                  }
                }
              },
              {
                "type": "array",
                "items": {
                  "properties": {
                    "host": {
                      "type": "string",
                      "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
                    },
                    "port": {
                      "description": "port of node",
                      "maximum": 65535,
                      "type": "integer",
                      "minimum": 1
                    },
                    "weight": {
                      "description": "weight of node",
                      "type": "integer",
                      "minimum": 0
                    },
                    "priority": {
                      "description": "priority of node",
                      "type": "integer",
                      "default": 0
                    },
                    "metadata": {
                      "description": "metadata of node",
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "required": [
                    "host",
                    "weight"
                  ]
                }
              }
            ]
          },
          "retries": {
            "type": "integer",
            "minimum": 0
          },
          "retry_timeout": {
            "type": "number",
            "minimum": 0
          },
          "tls": {
            "properties": {
              "client_key": {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              },
              "verify": {
                "description": "Turn on server certificate verification, currently only kafka upstream is supported",
                "type": "boolean",
                "default": false
              },
              "client_cert_id": {
                "$ref": "#/components/schemas/ResourceId"
              },
              "client_cert": {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              }
            },
            "type": "object",
            "dependentSchemas": {
              "client_key": {
                "required": [
                  "client_cert"
                ]
              },
              "client_cert_id": {
                "not": {
                  "required": [
                    "client_cert",
                    "client_key"
                  ]
                }
              },
              "client_cert": {
                "required": [
                  "client_key"
                ]
              }
            }
          },
          "discovery_args": {
            "type": "object",
            "properties": {
              "namespace_id": {
                "description": "namespace id",
                "type": "string"
              },
              "group_name": {
                "description": "group name",
                "type": "string"
              }
            }
          },
          "pass_host": {
            "description": "mod of host passing",
            "default": "pass",
            "type": "string",
            "enum": [
              "pass",
              "node",
              "rewrite"
            ]
          },
          "keepalive_pool": {
            "type": "object",
            "properties": {
              "requests": {
                "minimum": 1,
                "type": "integer",
                "default": 1000
              },
              "size": {
                "minimum": 1,
                "type": "integer",
                "default": 320
              },
              "idle_timeout": {
                "minimum": 0,
                "type": "number",
                "default": 60
              }
            }
          },
          "service_name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "upstream_host": {
            "type": "string",
            "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
          },
          "type": {
            "description": "algorithms of load balancing",
            "type": "string",
            "default": "roundrobin"
          },
          "checks": {
            "$ref": "#/components/schemas/HealthCheck"
          },
          "hash_on": {
            "enum": [
              "vars",
              "header",
              "cookie",
              "consumer",
              "vars_combinations"
            ],
            "type": "string",
            "default": "vars"
          },
          "discovery_type": {
            "description": "discovery type",
            "type": "string"
          },
          "timeout": {
            "$ref": "#/components/schemas/Timeout"
          },
          "scheme": {
            "description": "The scheme of the upstream. For L7 proxy, it can be one of grpc/grpcs/http/https. For L4 proxy, it can be one of tcp/tls/udp. For specific protocols, it can be kafka.",
            "default": "http",
            "enum": [
              "grpc",
              "grpcs",
              "http",
              "https",
              "tcp",
              "tls",
              "udp",
              "kafka"
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "oneOf": [
          {
            "required": [
              "nodes"
            ]
          },
          {
            "required": [
              "service_name",
              "discovery_type"
            ]
          }
        ],
        "x-apisix-schema": "upstream",
        "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
      },
      "UpstreamRequest": {
        "properties": {
          "key": {
            "description": "the key of chash for dynamic load balancing",
            "type": "string"
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "nodes": {
            "anyOf": [
              {
                "type": "object",
                "patternProperties": {
                  ".*": {
                    "description": "weight of node",
                    "type": "integer",
                    "minimum": 0
                  }
                }
              },
              {
                "type": "array",
                "items": {
                  "properties": {
                    "host": {
                      "type": "string",
                      "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
                    },
                    "port": {
                      "description": "port of node",
                      "maximum": 65535,
                      "type": "integer",
                      "minimum": 1
                    },
                    "weight": {
                      "description": "weight of node",
                      "type": "integer",
                      "minimum": 0
                    },
                    "priority": {
                      "description": "priority of node",
                      "type": "integer",
                      "default": 0
                    },
                    "metadata": {
                      "description": "metadata of node",
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "required": [
                    "host",
                    "weight"
                  ]
                }
              }
            ]
          },
          "retries": {
            "type": "integer",
            "minimum": 0
          },
          "retry_timeout": {
            "type": "number",
            "minimum": 0
          },
          "tls": {
            "properties": {
              "client_key": {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              },
              "verify": {
                "description": "Turn on server certificate verification, currently only kafka upstream is supported",
                "type": "boolean",
                "default": false
              },
              "client_cert_id": {
                "$ref": "#/components/schemas/ResourceId"
              },
              "client_cert": {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              }
            },
            "type": "object",
            "dependentSchemas": {
              "client_key": {
                "required": [
                  "client_cert"
                ]
              },
              "client_cert_id": {
                "not": {
                  "required": [
                    "client_cert",
                    "client_key"
                  ]
                }
              },
              "client_cert": {
                "required": [
                  "client_key"
                ]
              }
            }
          },
          "discovery_args": {
            "type": "object",
            "properties": {
              "namespace_id": {
                "description": "namespace id",
                "type": "string"
              },
              "group_name": {
                "description": "group name",
                "type": "string"
              }
            }
          },
          "pass_host": {
            "description": "mod of host passing",
            "default": "pass",
            "type": "string",
            "enum": [
              "pass",
              "node",
              "rewrite"
            ]
          },
          "keepalive_pool": {
            "type": "object",
            "properties": {
              "requests": {
                "minimum": 1,
                "type": "integer",
                "default": 1000
              },
              "size": {
                "minimum": 1,
                "type": "integer",
                "default": 320
              },
              "idle_timeout": {
                "minimum": 0,
                "type": "number",
                "default": 60
              }
            }
          },
          "service_name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "upstream_host": {
            "type": "string",
            "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
          },
          "type": {
            "description": "algorithms of load balancing",
            "type": "string",
            "default": "roundrobin"
          },
          "checks": {
            "$ref": "#/components/schemas/HealthCheck"
          },
          "hash_on": {
            "enum": [
              "vars",
              "header",
              "cookie",
              "consumer",
              "vars_combinations"
            ],
            "type": "string",
            "default": "vars"
          },
          "discovery_type": {
            "description": "discovery type",
            "type": "string"
          },
          "timeout": {
            "$ref": "#/components/schemas/Timeout"
          },
          "scheme": {
            "description": "The scheme of the upstream. For L7 proxy, it can be one of grpc/grpcs/http/https. For L4 proxy, it can be one of tcp/tls/udp. For specific protocols, it can be kafka.",
            "default": "http",
            "enum": [
              "grpc",
              "grpcs",
              "http",
              "https",
              "tcp",
              "tls",
              "udp",
              "kafka"
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "oneOf": [
          {
            "required": [
              "nodes"
            ]
          },
          {
            "required": [
              "service_name",
              "discovery_type"
            ]
          }
        ],
        "description": "Create/replace payload. The path (or collection body id) supplies id; create_time and update_time are assigned by APISIX. PUT replaces configuration, preserving the original create_time."
      },
      "UpstreamPatch": {
        "type": "object",
        "description": "Object merged into the existing value. The merged result is checked against the complete resource schema and handler checks; this is not JSON Patch. Arrays are replaced; null-valued object fields are deleted. Use a subpath PATCH to replace a nested value."
      },
      "UpstreamEnvelope": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/Upstream"
          },
          "createdIndex": {
            "type": "integer"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "UpstreamList": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UpstreamEnvelope"
            }
          }
        },
        "required": [
          "total",
          "list"
        ]
      },
      "UpstreamLegacy": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "node": {
            "$ref": "#/components/schemas/UpstreamEnvelope"
          }
        },
        "required": [
          "node"
        ]
      },
      "UpstreamLegacyList": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "node": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "dir": {
                "type": "boolean"
              },
              "nodes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/UpstreamEnvelope"
                }
              }
            }
          }
        },
        "required": [
          "node"
        ]
      },
      "UpstreamResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/UpstreamEnvelope"
          },
          {
            "$ref": "#/components/schemas/UpstreamLegacy"
          }
        ]
      },
      "UpstreamListResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/UpstreamList"
          },
          {
            "$ref": "#/components/schemas/UpstreamLegacyList"
          }
        ]
      },
      "Consumer": {
        "properties": {
          "create_time": {
            "type": "integer"
          },
          "update_time": {
            "type": "integer"
          },
          "group_id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "plugins": {
            "type": "object"
          },
          "username": {
            "pattern": "^[a-zA-Z0-9_\\-]+$",
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "username"
        ],
        "x-apisix-schema": "consumer",
        "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
      },
      "ConsumerRequest": {
        "properties": {
          "group_id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "plugins": {
            "type": "object"
          },
          "username": {
            "pattern": "^[a-zA-Z0-9_\\-]+$",
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "username"
        ],
        "description": "Create/replace payload. The path (or collection body id) supplies id; create_time and update_time are assigned by APISIX. PUT replaces configuration, preserving the original create_time."
      },
      "ConsumerPatch": {
        "type": "object",
        "description": "Object merged into the existing value. The merged result is checked against the complete resource schema and handler checks; this is not JSON Patch. Arrays are replaced; null-valued object fields are deleted. Use a subpath PATCH to replace a nested value."
      },
      "ConsumerEnvelope": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/Consumer"
          },
          "createdIndex": {
            "type": "integer"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "ConsumerList": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConsumerEnvelope"
            }
          }
        },
        "required": [
          "total",
          "list"
        ]
      },
      "ConsumerLegacy": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "node": {
            "$ref": "#/components/schemas/ConsumerEnvelope"
          }
        },
        "required": [
          "node"
        ]
      },
      "ConsumerLegacyList": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "node": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "dir": {
                "type": "boolean"
              },
              "nodes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ConsumerEnvelope"
                }
              }
            }
          }
        },
        "required": [
          "node"
        ]
      },
      "ConsumerResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/ConsumerEnvelope"
          },
          {
            "$ref": "#/components/schemas/ConsumerLegacy"
          }
        ]
      },
      "ConsumerListResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/ConsumerList"
          },
          {
            "$ref": "#/components/schemas/ConsumerLegacyList"
          }
        ]
      },
      "Credential": {
        "properties": {
          "create_time": {
            "type": "integer"
          },
          "update_time": {
            "type": "integer"
          },
          "plugins": {
            "type": "object",
            "maxProperties": 1
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          }
        },
        "type": "object",
        "additionalProperties": false,
        "x-apisix-schema": "credential",
        "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
      },
      "CredentialRequest": {
        "properties": {
          "plugins": {
            "type": "object",
            "maxProperties": 1
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          }
        },
        "type": "object",
        "additionalProperties": false,
        "description": "Create/replace payload. The path (or collection body id) supplies id; create_time and update_time are assigned by APISIX. PUT replaces configuration, preserving the original create_time."
      },
      "CredentialPatch": {
        "type": "object",
        "description": "Object merged into the existing value. The merged result is checked against the complete resource schema and handler checks; this is not JSON Patch. Arrays are replaced; null-valued object fields are deleted. Use a subpath PATCH to replace a nested value."
      },
      "CredentialEnvelope": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/Credential"
          },
          "createdIndex": {
            "type": "integer"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "CredentialList": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CredentialEnvelope"
            }
          }
        },
        "required": [
          "total",
          "list"
        ]
      },
      "CredentialLegacy": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "node": {
            "$ref": "#/components/schemas/CredentialEnvelope"
          }
        },
        "required": [
          "node"
        ]
      },
      "CredentialLegacyList": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "node": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "dir": {
                "type": "boolean"
              },
              "nodes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CredentialEnvelope"
                }
              }
            }
          }
        },
        "required": [
          "node"
        ]
      },
      "CredentialResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/CredentialEnvelope"
          },
          {
            "$ref": "#/components/schemas/CredentialLegacy"
          }
        ]
      },
      "CredentialListResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/CredentialList"
          },
          {
            "$ref": "#/components/schemas/CredentialLegacyList"
          }
        ]
      },
      "SSL": {
        "type": "object",
        "then": {
          "oneOf": [
            {
              "required": [
                "sni",
                "key",
                "cert"
              ]
            },
            {
              "required": [
                "snis",
                "key",
                "cert"
              ]
            }
          ]
        },
        "properties": {
          "keys": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "minLength": 128,
                  "type": "string",
                  "maxLength": 65536
                },
                {
                  "type": "string",
                  "pattern": "^\\$(secret|env|ENV)://"
                }
              ]
            }
          },
          "key": {
            "oneOf": [
              {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              },
              {
                "type": "string",
                "pattern": "^\\$(secret|env|ENV)://"
              }
            ]
          },
          "cert": {
            "oneOf": [
              {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              },
              {
                "type": "string",
                "pattern": "^\\$(secret|env|ENV)://"
              }
            ]
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "snis": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
            }
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "create_time": {
            "type": "integer"
          },
          "update_time": {
            "type": "integer"
          },
          "type": {
            "description": "ssl certificate type, server to server certificate, client to client certificate for upstream",
            "enum": [
              "server",
              "client"
            ],
            "type": "string",
            "default": "server"
          },
          "status": {
            "description": "ssl status, 1 to enable, 0 to disable",
            "default": 1,
            "type": "integer",
            "enum": [
              1,
              0
            ]
          },
          "client": {
            "properties": {
              "ca": {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              },
              "depth": {
                "minimum": 0,
                "type": "integer",
                "default": 1
              },
              "skip_mtls_uri_regex": {
                "uniqueItems": true,
                "minItems": 1,
                "type": "array",
                "items": {
                  "description": "uri regular expression to skip mtls",
                  "type": "string"
                }
              }
            },
            "type": "object",
            "required": [
              "ca"
            ]
          },
          "ssl_protocols": {
            "description": "set ssl protocols",
            "type": "array",
            "items": {
              "enum": [
                "TLSv1.1",
                "TLSv1.2",
                "TLSv1.3"
              ]
            },
            "uniqueItems": true,
            "maxItems": 3
          },
          "certs": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "minLength": 128,
                  "type": "string",
                  "maxLength": 65536
                },
                {
                  "type": "string",
                  "pattern": "^\\$(secret|env|ENV)://"
                }
              ]
            }
          },
          "sni": {
            "type": "string",
            "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
          }
        },
        "else": {
          "required": [
            "key",
            "cert"
          ]
        },
        "additionalProperties": false,
        "if": {
          "properties": {
            "type": {
              "enum": [
                "server"
              ]
            }
          }
        },
        "x-apisix-schema": "ssl",
        "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
      },
      "SSLRequest": {
        "type": "object",
        "then": {
          "oneOf": [
            {
              "required": [
                "sni",
                "key",
                "cert"
              ]
            },
            {
              "required": [
                "snis",
                "key",
                "cert"
              ]
            }
          ]
        },
        "properties": {
          "keys": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "minLength": 128,
                  "type": "string",
                  "maxLength": 65536
                },
                {
                  "type": "string",
                  "pattern": "^\\$(secret|env|ENV)://"
                }
              ]
            }
          },
          "key": {
            "oneOf": [
              {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              },
              {
                "type": "string",
                "pattern": "^\\$(secret|env|ENV)://"
              }
            ]
          },
          "cert": {
            "oneOf": [
              {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              },
              {
                "type": "string",
                "pattern": "^\\$(secret|env|ENV)://"
              }
            ]
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "snis": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
            }
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "type": {
            "description": "ssl certificate type, server to server certificate, client to client certificate for upstream",
            "enum": [
              "server",
              "client"
            ],
            "type": "string",
            "default": "server"
          },
          "status": {
            "description": "ssl status, 1 to enable, 0 to disable",
            "default": 1,
            "type": "integer",
            "enum": [
              1,
              0
            ]
          },
          "client": {
            "properties": {
              "ca": {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              },
              "depth": {
                "minimum": 0,
                "type": "integer",
                "default": 1
              },
              "skip_mtls_uri_regex": {
                "uniqueItems": true,
                "minItems": 1,
                "type": "array",
                "items": {
                  "description": "uri regular expression to skip mtls",
                  "type": "string"
                }
              }
            },
            "type": "object",
            "required": [
              "ca"
            ]
          },
          "ssl_protocols": {
            "description": "set ssl protocols",
            "type": "array",
            "items": {
              "enum": [
                "TLSv1.1",
                "TLSv1.2",
                "TLSv1.3"
              ]
            },
            "uniqueItems": true,
            "maxItems": 3
          },
          "certs": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "minLength": 128,
                  "type": "string",
                  "maxLength": 65536
                },
                {
                  "type": "string",
                  "pattern": "^\\$(secret|env|ENV)://"
                }
              ]
            }
          },
          "sni": {
            "type": "string",
            "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
          }
        },
        "else": {
          "required": [
            "key",
            "cert"
          ]
        },
        "additionalProperties": false,
        "if": {
          "properties": {
            "type": {
              "enum": [
                "server"
              ]
            }
          }
        },
        "description": "Create/replace payload. The path (or collection body id) supplies id; create_time and update_time are assigned by APISIX. PUT replaces configuration, preserving the original create_time."
      },
      "SSLPatch": {
        "type": "object",
        "description": "Object merged into the existing value. The merged result is checked against the complete resource schema and handler checks; this is not JSON Patch. Arrays are replaced; null-valued object fields are deleted. Use a subpath PATCH to replace a nested value."
      },
      "SSLRead": {
        "type": "object",
        "properties": {
          "keys": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "minLength": 128,
                  "type": "string",
                  "maxLength": 65536
                },
                {
                  "type": "string",
                  "pattern": "^\\$(secret|env|ENV)://"
                }
              ]
            }
          },
          "key": {
            "oneOf": [
              {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              },
              {
                "type": "string",
                "pattern": "^\\$(secret|env|ENV)://"
              }
            ]
          },
          "cert": {
            "oneOf": [
              {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              },
              {
                "type": "string",
                "pattern": "^\\$(secret|env|ENV)://"
              }
            ]
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "snis": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
            }
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "create_time": {
            "type": "integer"
          },
          "update_time": {
            "type": "integer"
          },
          "type": {
            "description": "ssl certificate type, server to server certificate, client to client certificate for upstream",
            "enum": [
              "server",
              "client"
            ],
            "type": "string",
            "default": "server"
          },
          "status": {
            "description": "ssl status, 1 to enable, 0 to disable",
            "default": 1,
            "type": "integer",
            "enum": [
              1,
              0
            ]
          },
          "client": {
            "properties": {
              "ca": {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              },
              "depth": {
                "minimum": 0,
                "type": "integer",
                "default": 1
              },
              "skip_mtls_uri_regex": {
                "uniqueItems": true,
                "minItems": 1,
                "type": "array",
                "items": {
                  "description": "uri regular expression to skip mtls",
                  "type": "string"
                }
              }
            },
            "type": "object",
            "required": [
              "ca"
            ]
          },
          "ssl_protocols": {
            "description": "set ssl protocols",
            "type": "array",
            "items": {
              "enum": [
                "TLSv1.1",
                "TLSv1.2",
                "TLSv1.3"
              ]
            },
            "uniqueItems": true,
            "maxItems": 3
          },
          "certs": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "minLength": 128,
                  "type": "string",
                  "maxLength": 65536
                },
                {
                  "type": "string",
                  "pattern": "^\\$(secret|env|ENV)://"
                }
              ]
            }
          },
          "sni": {
            "type": "string",
            "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
          }
        },
        "additionalProperties": false,
        "description": "Single SSL GET removes key only. keys is not stripped by resource.lua; list GET uses the stored SSL schema. Remaining certificate checks apply when writing."
      },
      "SSLEnvelope": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/SSL"
          },
          "createdIndex": {
            "type": "integer"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "SSLList": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SSLEnvelope"
            }
          }
        },
        "required": [
          "total",
          "list"
        ]
      },
      "SSLLegacy": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "node": {
            "$ref": "#/components/schemas/SSLEnvelope"
          }
        },
        "required": [
          "node"
        ]
      },
      "SSLLegacyList": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "node": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "dir": {
                "type": "boolean"
              },
              "nodes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/SSLEnvelope"
                }
              }
            }
          }
        },
        "required": [
          "node"
        ]
      },
      "SSLResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/SSLEnvelope"
          },
          {
            "$ref": "#/components/schemas/SSLLegacy"
          }
        ]
      },
      "SSLListResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/SSLList"
          },
          {
            "$ref": "#/components/schemas/SSLLegacyList"
          }
        ]
      },
      "GlobalRule": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "update_time": {
            "type": "integer"
          },
          "plugins": {
            "type": "object"
          },
          "create_time": {
            "type": "integer"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "plugins"
        ],
        "x-apisix-schema": "global_rule",
        "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
      },
      "GlobalRuleRequest": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "plugins": {
            "type": "object"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "plugins"
        ],
        "description": "Create/replace payload. The path (or collection body id) supplies id; create_time and update_time are assigned by APISIX. PUT replaces configuration, preserving the original create_time."
      },
      "GlobalRulePatch": {
        "type": "object",
        "description": "Object merged into the existing value. The merged result is checked against the complete resource schema and handler checks; this is not JSON Patch. Arrays are replaced; null-valued object fields are deleted. Use a subpath PATCH to replace a nested value."
      },
      "GlobalRuleEnvelope": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/GlobalRule"
          },
          "createdIndex": {
            "type": "integer"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "GlobalRuleList": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GlobalRuleEnvelope"
            }
          }
        },
        "required": [
          "total",
          "list"
        ]
      },
      "GlobalRuleLegacy": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "node": {
            "$ref": "#/components/schemas/GlobalRuleEnvelope"
          }
        },
        "required": [
          "node"
        ]
      },
      "GlobalRuleLegacyList": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "node": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "dir": {
                "type": "boolean"
              },
              "nodes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/GlobalRuleEnvelope"
                }
              }
            }
          }
        },
        "required": [
          "node"
        ]
      },
      "GlobalRuleResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/GlobalRuleEnvelope"
          },
          {
            "$ref": "#/components/schemas/GlobalRuleLegacy"
          }
        ]
      },
      "GlobalRuleListResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/GlobalRuleList"
          },
          {
            "$ref": "#/components/schemas/GlobalRuleLegacyList"
          }
        ]
      },
      "PluginConfig": {
        "properties": {
          "create_time": {
            "type": "integer"
          },
          "update_time": {
            "type": "integer"
          },
          "plugins": {
            "type": "object"
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "type": "string"
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "plugins"
        ],
        "x-apisix-schema": "plugin_config",
        "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
      },
      "PluginConfigRequest": {
        "properties": {
          "plugins": {
            "type": "object"
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "type": "string"
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "plugins"
        ],
        "description": "Create/replace payload. The path (or collection body id) supplies id; create_time and update_time are assigned by APISIX. PUT replaces configuration, preserving the original create_time."
      },
      "PluginConfigPatch": {
        "type": "object",
        "description": "Object merged into the existing value. The merged result is checked against the complete resource schema and handler checks; this is not JSON Patch. Arrays are replaced; null-valued object fields are deleted. Use a subpath PATCH to replace a nested value."
      },
      "PluginConfigEnvelope": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/PluginConfig"
          },
          "createdIndex": {
            "type": "integer"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "PluginConfigList": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PluginConfigEnvelope"
            }
          }
        },
        "required": [
          "total",
          "list"
        ]
      },
      "PluginConfigLegacy": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "node": {
            "$ref": "#/components/schemas/PluginConfigEnvelope"
          }
        },
        "required": [
          "node"
        ]
      },
      "PluginConfigLegacyList": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "node": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "dir": {
                "type": "boolean"
              },
              "nodes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PluginConfigEnvelope"
                }
              }
            }
          }
        },
        "required": [
          "node"
        ]
      },
      "PluginConfigResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/PluginConfigEnvelope"
          },
          {
            "$ref": "#/components/schemas/PluginConfigLegacy"
          }
        ]
      },
      "PluginConfigListResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/PluginConfigList"
          },
          {
            "$ref": "#/components/schemas/PluginConfigLegacyList"
          }
        ]
      },
      "ConsumerGroup": {
        "properties": {
          "create_time": {
            "type": "integer"
          },
          "update_time": {
            "type": "integer"
          },
          "plugins": {
            "type": "object"
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "plugins"
        ],
        "x-apisix-schema": "consumer_group",
        "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
      },
      "ConsumerGroupRequest": {
        "properties": {
          "plugins": {
            "type": "object"
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "plugins"
        ],
        "description": "Create/replace payload. The path (or collection body id) supplies id; create_time and update_time are assigned by APISIX. PUT replaces configuration, preserving the original create_time."
      },
      "ConsumerGroupPatch": {
        "type": "object",
        "description": "Object merged into the existing value. The merged result is checked against the complete resource schema and handler checks; this is not JSON Patch. Arrays are replaced; null-valued object fields are deleted. Use a subpath PATCH to replace a nested value."
      },
      "ConsumerGroupEnvelope": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/ConsumerGroup"
          },
          "createdIndex": {
            "type": "integer"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "ConsumerGroupList": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConsumerGroupEnvelope"
            }
          }
        },
        "required": [
          "total",
          "list"
        ]
      },
      "ConsumerGroupLegacy": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "node": {
            "$ref": "#/components/schemas/ConsumerGroupEnvelope"
          }
        },
        "required": [
          "node"
        ]
      },
      "ConsumerGroupLegacyList": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "node": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "dir": {
                "type": "boolean"
              },
              "nodes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ConsumerGroupEnvelope"
                }
              }
            }
          }
        },
        "required": [
          "node"
        ]
      },
      "ConsumerGroupResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/ConsumerGroupEnvelope"
          },
          {
            "$ref": "#/components/schemas/ConsumerGroupLegacy"
          }
        ]
      },
      "ConsumerGroupListResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/ConsumerGroupList"
          },
          {
            "$ref": "#/components/schemas/ConsumerGroupLegacyList"
          }
        ]
      },
      "StreamRoute": {
        "properties": {
          "upstream_id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "protocol": {
            "properties": {
              "conf": {
                "description": "protocol-specific configuration",
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "superior_id": {
                "$ref": "#/components/schemas/ResourceId"
              },
              "logger": {
                "type": "array",
                "items": {
                  "properties": {
                    "conf": {
                      "description": "logger plugin configuration",
                      "type": "object"
                    },
                    "name": {
                      "type": "string"
                    },
                    "filter": {
                      "description": "logger filter rules",
                      "type": "array"
                    }
                  },
                  "additionalProperties": false,
                  "dependentRequired": {
                    "name": [
                      "conf"
                    ]
                  }
                }
              }
            },
            "type": "object",
            "required": [
              "name"
            ]
          },
          "sni": {
            "description": "server name indication",
            "type": "string",
            "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "remote_addr": {
            "description": "client IP",
            "anyOf": [
              {
                "type": "string",
                "title": "IPv4",
                "format": "ipv4"
              },
              {
                "pattern": "^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([12]?[0-9]|3[0-2])$",
                "title": "IPv4/CIDR",
                "type": "string"
              },
              {
                "type": "string",
                "title": "IPv6",
                "format": "ipv6"
              },
              {
                "pattern": "^([a-fA-F0-9]{0,4}:){1,8}(:[a-fA-F0-9]{0,4}){0,8}([a-fA-F0-9]{0,4})?/[0-9]{1,3}$",
                "title": "IPv6/CIDR",
                "type": "string"
              }
            ],
            "type": "string"
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "create_time": {
            "type": "integer"
          },
          "update_time": {
            "type": "integer"
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "server_addr": {
            "description": "server IP",
            "anyOf": [
              {
                "type": "string",
                "title": "IPv4",
                "format": "ipv4"
              },
              {
                "pattern": "^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([12]?[0-9]|3[0-2])$",
                "title": "IPv4/CIDR",
                "type": "string"
              },
              {
                "type": "string",
                "title": "IPv6",
                "format": "ipv6"
              },
              {
                "pattern": "^([a-fA-F0-9]{0,4}:){1,8}(:[a-fA-F0-9]{0,4}){0,8}([a-fA-F0-9]{0,4})?/[0-9]{1,3}$",
                "title": "IPv6/CIDR",
                "type": "string"
              }
            ],
            "type": "string"
          },
          "plugins": {
            "type": "object"
          },
          "server_port": {
            "description": "server port",
            "maximum": 65535,
            "type": "integer",
            "minimum": 1
          },
          "upstream": {
            "$ref": "#/components/schemas/EmbeddedUpstream"
          },
          "service_id": {
            "$ref": "#/components/schemas/ResourceId"
          }
        },
        "type": "object",
        "additionalProperties": false,
        "x-apisix-schema": "stream_route",
        "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
      },
      "StreamRouteRequest": {
        "properties": {
          "upstream_id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "protocol": {
            "properties": {
              "conf": {
                "description": "protocol-specific configuration",
                "type": "object"
              },
              "name": {
                "type": "string"
              },
              "superior_id": {
                "$ref": "#/components/schemas/ResourceId"
              },
              "logger": {
                "type": "array",
                "items": {
                  "properties": {
                    "conf": {
                      "description": "logger plugin configuration",
                      "type": "object"
                    },
                    "name": {
                      "type": "string"
                    },
                    "filter": {
                      "description": "logger filter rules",
                      "type": "array"
                    }
                  },
                  "additionalProperties": false,
                  "dependentRequired": {
                    "name": [
                      "conf"
                    ]
                  }
                }
              }
            },
            "type": "object",
            "required": [
              "name"
            ]
          },
          "sni": {
            "description": "server name indication",
            "type": "string",
            "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "remote_addr": {
            "description": "client IP",
            "anyOf": [
              {
                "type": "string",
                "title": "IPv4",
                "format": "ipv4"
              },
              {
                "pattern": "^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([12]?[0-9]|3[0-2])$",
                "title": "IPv4/CIDR",
                "type": "string"
              },
              {
                "type": "string",
                "title": "IPv6",
                "format": "ipv6"
              },
              {
                "pattern": "^([a-fA-F0-9]{0,4}:){1,8}(:[a-fA-F0-9]{0,4}){0,8}([a-fA-F0-9]{0,4})?/[0-9]{1,3}$",
                "title": "IPv6/CIDR",
                "type": "string"
              }
            ],
            "type": "string"
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "server_addr": {
            "description": "server IP",
            "anyOf": [
              {
                "type": "string",
                "title": "IPv4",
                "format": "ipv4"
              },
              {
                "pattern": "^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([12]?[0-9]|3[0-2])$",
                "title": "IPv4/CIDR",
                "type": "string"
              },
              {
                "type": "string",
                "title": "IPv6",
                "format": "ipv6"
              },
              {
                "pattern": "^([a-fA-F0-9]{0,4}:){1,8}(:[a-fA-F0-9]{0,4}){0,8}([a-fA-F0-9]{0,4})?/[0-9]{1,3}$",
                "title": "IPv6/CIDR",
                "type": "string"
              }
            ],
            "type": "string"
          },
          "plugins": {
            "type": "object"
          },
          "server_port": {
            "description": "server port",
            "maximum": 65535,
            "type": "integer",
            "minimum": 1
          },
          "upstream": {
            "$ref": "#/components/schemas/EmbeddedUpstreamRequest"
          },
          "service_id": {
            "$ref": "#/components/schemas/ResourceId"
          }
        },
        "type": "object",
        "additionalProperties": false,
        "description": "Create/replace payload. The path (or collection body id) supplies id; create_time and update_time are assigned by APISIX. PUT replaces configuration, preserving the original create_time."
      },
      "StreamRoutePatch": {
        "type": "object",
        "description": "Object merged into the existing value. The merged result is checked against the complete resource schema and handler checks; this is not JSON Patch. Arrays are replaced; null-valued object fields are deleted. Use a subpath PATCH to replace a nested value."
      },
      "StreamRouteEnvelope": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/StreamRoute"
          },
          "createdIndex": {
            "type": "integer"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "StreamRouteList": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StreamRouteEnvelope"
            }
          }
        },
        "required": [
          "total",
          "list"
        ]
      },
      "StreamRouteLegacy": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "node": {
            "$ref": "#/components/schemas/StreamRouteEnvelope"
          }
        },
        "required": [
          "node"
        ]
      },
      "StreamRouteLegacyList": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "node": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "dir": {
                "type": "boolean"
              },
              "nodes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/StreamRouteEnvelope"
                }
              }
            }
          }
        },
        "required": [
          "node"
        ]
      },
      "StreamRouteResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StreamRouteEnvelope"
          },
          {
            "$ref": "#/components/schemas/StreamRouteLegacy"
          }
        ]
      },
      "StreamRouteListResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/StreamRouteList"
          },
          {
            "$ref": "#/components/schemas/StreamRouteLegacyList"
          }
        ]
      },
      "Proto": {
        "properties": {
          "create_time": {
            "type": "integer"
          },
          "update_time": {
            "type": "integer"
          },
          "content": {
            "minLength": 1,
            "type": "string",
            "maxLength": 1048576
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "content"
        ],
        "x-apisix-schema": "proto",
        "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
      },
      "ProtoRequest": {
        "properties": {
          "content": {
            "minLength": 1,
            "type": "string",
            "maxLength": 1048576
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "content"
        ],
        "description": "Create/replace payload. The path (or collection body id) supplies id; create_time and update_time are assigned by APISIX. PUT replaces configuration, preserving the original create_time."
      },
      "ProtoPatch": {
        "type": "object",
        "description": "Object merged into the existing value. The merged result is checked against the complete resource schema and handler checks; this is not JSON Patch. Arrays are replaced; null-valued object fields are deleted. Use a subpath PATCH to replace a nested value."
      },
      "ProtoEnvelope": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/Proto"
          },
          "createdIndex": {
            "type": "integer"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "ProtoList": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProtoEnvelope"
            }
          }
        },
        "required": [
          "total",
          "list"
        ]
      },
      "ProtoLegacy": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "node": {
            "$ref": "#/components/schemas/ProtoEnvelope"
          }
        },
        "required": [
          "node"
        ]
      },
      "ProtoLegacyList": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "node": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "dir": {
                "type": "boolean"
              },
              "nodes": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ProtoEnvelope"
                }
              }
            }
          }
        },
        "required": [
          "node"
        ]
      },
      "ProtoResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/ProtoEnvelope"
          },
          {
            "$ref": "#/components/schemas/ProtoLegacy"
          }
        ]
      },
      "ProtoListResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/ProtoList"
          },
          {
            "$ref": "#/components/schemas/ProtoLegacyList"
          }
        ]
      },
      "SSLReadEnvelope": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/SSLRead"
          },
          "createdIndex": {
            "type": "integer"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "SSLReadResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/SSLReadEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "node": {
                "$ref": "#/components/schemas/SSLReadEnvelope"
              }
            },
            "required": [
              "node"
            ]
          }
        ]
      },
      "VaultSecret": {
        "properties": {
          "uri": {
            "type": "string",
            "pattern": "^[^\\/]+:\\/\\/([\\da-zA-Z.-]+|\\[[\\da-fA-F:]+\\])(:\\d+)?"
          },
          "prefix": {
            "type": "string"
          },
          "token": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "uri",
          "prefix",
          "token"
        ]
      },
      "AwsSecret": {
        "properties": {
          "endpoint_url": {
            "type": "string",
            "pattern": "^[^\\/]+:\\/\\/([\\da-zA-Z.-]+|\\[[\\da-fA-F:]+\\])(:\\d+)?"
          },
          "access_key_id": {
            "type": "string"
          },
          "secret_access_key": {
            "type": "string"
          },
          "session_token": {
            "type": "string"
          },
          "region": {
            "type": "string",
            "default": "us-east-1"
          }
        },
        "type": "object",
        "required": [
          "access_key_id",
          "secret_access_key"
        ]
      },
      "GcpSecret": {
        "properties": {
          "ssl_verify": {
            "type": "boolean",
            "default": true
          },
          "auth_file": {
            "type": "string"
          },
          "auth_config": {
            "properties": {
              "scope": {
                "default": [
                  "https://www.googleapis.com/auth/cloud-platform"
                ],
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "entries_uri": {
                "type": "string",
                "default": "https://secretmanager.googleapis.com/v1"
              },
              "client_email": {
                "type": "string"
              },
              "private_key": {
                "type": "string"
              },
              "project_id": {
                "type": "string"
              },
              "token_uri": {
                "type": "string",
                "default": "https://oauth2.googleapis.com/token"
              }
            },
            "type": "object",
            "required": [
              "client_email",
              "private_key",
              "project_id"
            ]
          }
        },
        "type": "object",
        "oneOf": [
          {
            "required": [
              "auth_config"
            ]
          },
          {
            "required": [
              "auth_file"
            ]
          }
        ]
      },
      "Secret": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/VaultSecret"
          },
          {
            "$ref": "#/components/schemas/AwsSecret"
          },
          {
            "$ref": "#/components/schemas/GcpSecret"
          }
        ],
        "description": "Use the schema matching secret_type. APISIX adds id as backend/id and timestamps; these manager schemas allow extra fields."
      },
      "SecretRequest": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/VaultSecret"
          },
          {
            "$ref": "#/components/schemas/AwsSecret"
          },
          {
            "$ref": "#/components/schemas/GcpSecret"
          }
        ],
        "description": "Use the schema matching secret_type. APISIX adds id as backend/id and timestamps; these manager schemas allow extra fields."
      },
      "SecretPatch": {
        "type": "object"
      },
      "Metadata": {
        "type": "object",
        "description": "Validated against the named loaded plugin metadata_schema, or an injected open object schema if none is declared."
      },
      "MetadataRequest": {
        "$ref": "#/components/schemas/Metadata"
      },
      "MetadataPatch": {
        "type": "object"
      },
      "SecretEnvelope": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/Secret"
          },
          "createdIndex": {
            "type": "integer"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "SecretLegacy": {
        "type": "object",
        "properties": {
          "node": {
            "$ref": "#/components/schemas/SecretEnvelope"
          }
        },
        "required": [
          "node"
        ]
      },
      "SecretResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/SecretEnvelope"
          },
          {
            "$ref": "#/components/schemas/SecretLegacy"
          }
        ]
      },
      "SecretList": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SecretEnvelope"
            }
          }
        },
        "required": [
          "total",
          "list"
        ]
      },
      "SecretListResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/SecretList"
          },
          {
            "type": "object",
            "properties": {
              "node": {
                "type": "object",
                "properties": {
                  "nodes": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/SecretEnvelope"
                    }
                  }
                }
              }
            },
            "required": [
              "node"
            ]
          }
        ]
      },
      "MetadataEnvelope": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/Metadata"
          },
          "createdIndex": {
            "type": "integer"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "MetadataLegacy": {
        "type": "object",
        "properties": {
          "node": {
            "$ref": "#/components/schemas/MetadataEnvelope"
          }
        },
        "required": [
          "node"
        ]
      },
      "MetadataResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/MetadataEnvelope"
          },
          {
            "$ref": "#/components/schemas/MetadataLegacy"
          }
        ]
      },
      "MetadataList": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer"
          },
          "list": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MetadataEnvelope"
            }
          }
        },
        "required": [
          "total",
          "list"
        ]
      },
      "MetadataListResult": {
        "anyOf": [
          {
            "$ref": "#/components/schemas/MetadataList"
          },
          {
            "type": "object",
            "properties": {
              "node": {
                "type": "object",
                "properties": {
                  "nodes": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/MetadataEnvelope"
                    }
                  }
                }
              }
            },
            "required": [
              "node"
            ]
          }
        ]
      },
      "DeleteResult": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "deleted": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "node": {
            "type": "object"
          }
        },
        "required": [
          "key",
          "deleted"
        ]
      },
      "StandaloneCredential": {
        "properties": {
          "create_time": {
            "type": "integer"
          },
          "update_time": {
            "type": "integer"
          },
          "plugins": {
            "type": "object",
            "maxProperties": 1
          },
          "id": {
            "type": "string",
            "minLength": 15,
            "maxLength": 128,
            "pattern": "^[a-zA-Z0-9-_]+/credentials/[a-zA-Z0-9-_.]+$"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "modifiedIndex": {
            "type": "integer"
          }
        },
        "type": "object",
        "additionalProperties": false,
        "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
      },
      "StandaloneConfig": {
        "type": "object",
        "properties": {
          "routes": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "required": [
                    "plugins",
                    "uri"
                  ]
                },
                {
                  "required": [
                    "upstream",
                    "uri"
                  ]
                },
                {
                  "required": [
                    "upstream_id",
                    "uri"
                  ]
                },
                {
                  "required": [
                    "service_id",
                    "uri"
                  ]
                },
                {
                  "required": [
                    "plugins",
                    "uris"
                  ]
                },
                {
                  "required": [
                    "upstream",
                    "uris"
                  ]
                },
                {
                  "required": [
                    "upstream_id",
                    "uris"
                  ]
                },
                {
                  "required": [
                    "service_id",
                    "uris"
                  ]
                },
                {
                  "required": [
                    "script",
                    "uri"
                  ]
                },
                {
                  "required": [
                    "script",
                    "uris"
                  ]
                }
              ],
              "type": "object",
              "properties": {
                "host": {
                  "type": "string",
                  "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
                },
                "enable_websocket": {
                  "description": "enable websocket for request",
                  "type": "boolean"
                },
                "id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "name": {
                  "minLength": 1,
                  "type": "string",
                  "maxLength": 256
                },
                "desc": {
                  "type": "string",
                  "maxLength": 256
                },
                "labels": {
                  "$ref": "#/components/schemas/Labels"
                },
                "create_time": {
                  "type": "integer"
                },
                "update_time": {
                  "type": "integer"
                },
                "status": {
                  "description": "route status, 1 to enable, 0 to disable",
                  "default": 1,
                  "type": "integer",
                  "enum": [
                    1,
                    0
                  ]
                },
                "upstream_id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "script_id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "uri": {
                  "minLength": 1,
                  "type": "string",
                  "maxLength": 4096
                },
                "uris": {
                  "uniqueItems": true,
                  "minItems": 1,
                  "type": "array",
                  "items": {
                    "description": "HTTP uri",
                    "type": "string"
                  }
                },
                "upstream": {
                  "$ref": "#/components/schemas/EmbeddedUpstream"
                },
                "methods": {
                  "uniqueItems": true,
                  "type": "array",
                  "items": {
                    "description": "HTTP method",
                    "type": "string",
                    "enum": [
                      "GET",
                      "POST",
                      "PUT",
                      "DELETE",
                      "PATCH",
                      "HEAD",
                      "OPTIONS",
                      "CONNECT",
                      "TRACE",
                      "PURGE"
                    ]
                  }
                },
                "hosts": {
                  "uniqueItems": true,
                  "minItems": 1,
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
                  }
                },
                "remote_addr": {
                  "description": "client IP",
                  "anyOf": [
                    {
                      "type": "string",
                      "title": "IPv4",
                      "format": "ipv4"
                    },
                    {
                      "pattern": "^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([12]?[0-9]|3[0-2])$",
                      "title": "IPv4/CIDR",
                      "type": "string"
                    },
                    {
                      "type": "string",
                      "title": "IPv6",
                      "format": "ipv6"
                    },
                    {
                      "pattern": "^([a-fA-F0-9]{0,4}:){1,8}(:[a-fA-F0-9]{0,4}){0,8}([a-fA-F0-9]{0,4})?/[0-9]{1,3}$",
                      "title": "IPv6/CIDR",
                      "type": "string"
                    }
                  ],
                  "type": "string"
                },
                "remote_addrs": {
                  "uniqueItems": true,
                  "minItems": 1,
                  "type": "array",
                  "items": {
                    "description": "client IP",
                    "anyOf": [
                      {
                        "type": "string",
                        "title": "IPv4",
                        "format": "ipv4"
                      },
                      {
                        "pattern": "^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([12]?[0-9]|3[0-2])$",
                        "title": "IPv4/CIDR",
                        "type": "string"
                      },
                      {
                        "type": "string",
                        "title": "IPv6",
                        "format": "ipv6"
                      },
                      {
                        "pattern": "^([a-fA-F0-9]{0,4}:){1,8}(:[a-fA-F0-9]{0,4}){0,8}([a-fA-F0-9]{0,4})?/[0-9]{1,3}$",
                        "title": "IPv6/CIDR",
                        "type": "string"
                      }
                    ],
                    "type": "string"
                  }
                },
                "filter_func": {
                  "pattern": "^function",
                  "minLength": 10,
                  "type": "string"
                },
                "plugin_config_id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "script": {
                  "minLength": 10,
                  "type": "string",
                  "maxLength": 102400
                },
                "priority": {
                  "type": "integer",
                  "default": 0
                },
                "plugins": {
                  "type": "object"
                },
                "vars": {
                  "type": "array"
                },
                "timeout": {
                  "$ref": "#/components/schemas/Timeout"
                },
                "service_id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "modifiedIndex": {
                  "type": "integer"
                }
              },
              "additionalProperties": false,
              "allOf": [
                {
                  "oneOf": [
                    {
                      "required": [
                        "uri"
                      ]
                    },
                    {
                      "required": [
                        "uris"
                      ]
                    }
                  ]
                },
                {
                  "oneOf": [
                    {
                      "not": {
                        "anyOf": [
                          {
                            "required": [
                              "host"
                            ]
                          },
                          {
                            "required": [
                              "hosts"
                            ]
                          }
                        ]
                      }
                    },
                    {
                      "required": [
                        "host"
                      ]
                    },
                    {
                      "required": [
                        "hosts"
                      ]
                    }
                  ]
                },
                {
                  "oneOf": [
                    {
                      "not": {
                        "anyOf": [
                          {
                            "required": [
                              "remote_addr"
                            ]
                          },
                          {
                            "required": [
                              "remote_addrs"
                            ]
                          }
                        ]
                      }
                    },
                    {
                      "required": [
                        "remote_addr"
                      ]
                    },
                    {
                      "required": [
                        "remote_addrs"
                      ]
                    }
                  ]
                }
              ],
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "script",
                      "plugins"
                    ]
                  },
                  {
                    "required": [
                      "script",
                      "plugin_config_id"
                    ]
                  }
                ]
              },
              "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
            }
          },
          "routes_conf_version": {
            "type": "number"
          },
          "services": {
            "type": "array",
            "items": {
              "properties": {
                "upstream_id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "enable_websocket": {
                  "description": "enable websocket for request",
                  "type": "boolean"
                },
                "id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "name": {
                  "minLength": 1,
                  "type": "string",
                  "maxLength": 256
                },
                "desc": {
                  "type": "string",
                  "maxLength": 256
                },
                "labels": {
                  "$ref": "#/components/schemas/Labels"
                },
                "create_time": {
                  "type": "integer"
                },
                "update_time": {
                  "type": "integer"
                },
                "script": {
                  "minLength": 10,
                  "type": "string",
                  "maxLength": 102400
                },
                "plugins": {
                  "type": "object"
                },
                "upstream": {
                  "$ref": "#/components/schemas/EmbeddedUpstream"
                },
                "hosts": {
                  "uniqueItems": true,
                  "minItems": 1,
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
                  }
                },
                "modifiedIndex": {
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false,
              "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
            }
          },
          "services_conf_version": {
            "type": "number"
          },
          "upstreams": {
            "type": "array",
            "items": {
              "properties": {
                "key": {
                  "description": "the key of chash for dynamic load balancing",
                  "type": "string"
                },
                "id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "name": {
                  "minLength": 1,
                  "type": "string",
                  "maxLength": 256
                },
                "desc": {
                  "type": "string",
                  "maxLength": 256
                },
                "labels": {
                  "$ref": "#/components/schemas/Labels"
                },
                "create_time": {
                  "type": "integer"
                },
                "update_time": {
                  "type": "integer"
                },
                "nodes": {
                  "anyOf": [
                    {
                      "type": "object",
                      "patternProperties": {
                        ".*": {
                          "description": "weight of node",
                          "type": "integer",
                          "minimum": 0
                        }
                      }
                    },
                    {
                      "type": "array",
                      "items": {
                        "properties": {
                          "host": {
                            "type": "string",
                            "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
                          },
                          "port": {
                            "description": "port of node",
                            "maximum": 65535,
                            "type": "integer",
                            "minimum": 1
                          },
                          "weight": {
                            "description": "weight of node",
                            "type": "integer",
                            "minimum": 0
                          },
                          "priority": {
                            "description": "priority of node",
                            "type": "integer",
                            "default": 0
                          },
                          "metadata": {
                            "description": "metadata of node",
                            "type": "object"
                          }
                        },
                        "type": "object",
                        "required": [
                          "host",
                          "weight"
                        ]
                      }
                    }
                  ]
                },
                "retries": {
                  "type": "integer",
                  "minimum": 0
                },
                "retry_timeout": {
                  "type": "number",
                  "minimum": 0
                },
                "tls": {
                  "properties": {
                    "client_key": {
                      "minLength": 128,
                      "type": "string",
                      "maxLength": 65536
                    },
                    "verify": {
                      "description": "Turn on server certificate verification, currently only kafka upstream is supported",
                      "type": "boolean",
                      "default": false
                    },
                    "client_cert_id": {
                      "$ref": "#/components/schemas/ResourceId"
                    },
                    "client_cert": {
                      "minLength": 128,
                      "type": "string",
                      "maxLength": 65536
                    }
                  },
                  "type": "object",
                  "dependentSchemas": {
                    "client_key": {
                      "required": [
                        "client_cert"
                      ]
                    },
                    "client_cert_id": {
                      "not": {
                        "required": [
                          "client_cert",
                          "client_key"
                        ]
                      }
                    },
                    "client_cert": {
                      "required": [
                        "client_key"
                      ]
                    }
                  }
                },
                "discovery_args": {
                  "type": "object",
                  "properties": {
                    "namespace_id": {
                      "description": "namespace id",
                      "type": "string"
                    },
                    "group_name": {
                      "description": "group name",
                      "type": "string"
                    }
                  }
                },
                "pass_host": {
                  "description": "mod of host passing",
                  "default": "pass",
                  "type": "string",
                  "enum": [
                    "pass",
                    "node",
                    "rewrite"
                  ]
                },
                "keepalive_pool": {
                  "type": "object",
                  "properties": {
                    "requests": {
                      "minimum": 1,
                      "type": "integer",
                      "default": 1000
                    },
                    "size": {
                      "minimum": 1,
                      "type": "integer",
                      "default": 320
                    },
                    "idle_timeout": {
                      "minimum": 0,
                      "type": "number",
                      "default": 60
                    }
                  }
                },
                "service_name": {
                  "minLength": 1,
                  "type": "string",
                  "maxLength": 256
                },
                "upstream_host": {
                  "type": "string",
                  "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
                },
                "type": {
                  "description": "algorithms of load balancing",
                  "type": "string",
                  "default": "roundrobin"
                },
                "checks": {
                  "$ref": "#/components/schemas/HealthCheck"
                },
                "hash_on": {
                  "enum": [
                    "vars",
                    "header",
                    "cookie",
                    "consumer",
                    "vars_combinations"
                  ],
                  "type": "string",
                  "default": "vars"
                },
                "discovery_type": {
                  "description": "discovery type",
                  "type": "string"
                },
                "timeout": {
                  "$ref": "#/components/schemas/Timeout"
                },
                "scheme": {
                  "description": "The scheme of the upstream. For L7 proxy, it can be one of grpc/grpcs/http/https. For L4 proxy, it can be one of tcp/tls/udp. For specific protocols, it can be kafka.",
                  "default": "http",
                  "enum": [
                    "grpc",
                    "grpcs",
                    "http",
                    "https",
                    "tcp",
                    "tls",
                    "udp",
                    "kafka"
                  ]
                },
                "modifiedIndex": {
                  "type": "integer"
                }
              },
              "additionalProperties": false,
              "type": "object",
              "oneOf": [
                {
                  "required": [
                    "nodes"
                  ]
                },
                {
                  "required": [
                    "service_name",
                    "discovery_type"
                  ]
                }
              ],
              "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
            }
          },
          "upstreams_conf_version": {
            "type": "number"
          },
          "consumers": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "properties": {
                    "create_time": {
                      "type": "integer"
                    },
                    "update_time": {
                      "type": "integer"
                    },
                    "group_id": {
                      "$ref": "#/components/schemas/ResourceId"
                    },
                    "plugins": {
                      "type": "object"
                    },
                    "username": {
                      "pattern": "^[a-zA-Z0-9_\\-]+$",
                      "minLength": 1,
                      "type": "string",
                      "maxLength": 256
                    },
                    "desc": {
                      "type": "string",
                      "maxLength": 256
                    },
                    "labels": {
                      "$ref": "#/components/schemas/Labels"
                    },
                    "modifiedIndex": {
                      "type": "integer"
                    }
                  },
                  "additionalProperties": false,
                  "type": "object",
                  "required": [
                    "username"
                  ],
                  "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
                },
                {
                  "$ref": "#/components/schemas/StandaloneCredential"
                }
              ]
            }
          },
          "consumers_conf_version": {
            "type": "number"
          },
          "ssls": {
            "type": "array",
            "items": {
              "type": "object",
              "then": {
                "oneOf": [
                  {
                    "required": [
                      "sni",
                      "key",
                      "cert"
                    ]
                  },
                  {
                    "required": [
                      "snis",
                      "key",
                      "cert"
                    ]
                  }
                ]
              },
              "properties": {
                "keys": {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "minLength": 128,
                        "type": "string",
                        "maxLength": 65536
                      },
                      {
                        "type": "string",
                        "pattern": "^\\$(secret|env|ENV)://"
                      }
                    ]
                  }
                },
                "key": {
                  "oneOf": [
                    {
                      "minLength": 128,
                      "type": "string",
                      "maxLength": 65536
                    },
                    {
                      "type": "string",
                      "pattern": "^\\$(secret|env|ENV)://"
                    }
                  ]
                },
                "cert": {
                  "oneOf": [
                    {
                      "minLength": 128,
                      "type": "string",
                      "maxLength": 65536
                    },
                    {
                      "type": "string",
                      "pattern": "^\\$(secret|env|ENV)://"
                    }
                  ]
                },
                "id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "snis": {
                  "minItems": 1,
                  "type": "array",
                  "items": {
                    "type": "string",
                    "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
                  }
                },
                "desc": {
                  "type": "string",
                  "maxLength": 256
                },
                "labels": {
                  "$ref": "#/components/schemas/Labels"
                },
                "create_time": {
                  "type": "integer"
                },
                "update_time": {
                  "type": "integer"
                },
                "type": {
                  "description": "ssl certificate type, server to server certificate, client to client certificate for upstream",
                  "enum": [
                    "server",
                    "client"
                  ],
                  "type": "string",
                  "default": "server"
                },
                "status": {
                  "description": "ssl status, 1 to enable, 0 to disable",
                  "default": 1,
                  "type": "integer",
                  "enum": [
                    1,
                    0
                  ]
                },
                "client": {
                  "properties": {
                    "ca": {
                      "minLength": 128,
                      "type": "string",
                      "maxLength": 65536
                    },
                    "depth": {
                      "minimum": 0,
                      "type": "integer",
                      "default": 1
                    },
                    "skip_mtls_uri_regex": {
                      "uniqueItems": true,
                      "minItems": 1,
                      "type": "array",
                      "items": {
                        "description": "uri regular expression to skip mtls",
                        "type": "string"
                      }
                    }
                  },
                  "type": "object",
                  "required": [
                    "ca"
                  ]
                },
                "ssl_protocols": {
                  "description": "set ssl protocols",
                  "type": "array",
                  "items": {
                    "enum": [
                      "TLSv1.1",
                      "TLSv1.2",
                      "TLSv1.3"
                    ]
                  },
                  "uniqueItems": true,
                  "maxItems": 3
                },
                "certs": {
                  "type": "array",
                  "items": {
                    "oneOf": [
                      {
                        "minLength": 128,
                        "type": "string",
                        "maxLength": 65536
                      },
                      {
                        "type": "string",
                        "pattern": "^\\$(secret|env|ENV)://"
                      }
                    ]
                  }
                },
                "sni": {
                  "type": "string",
                  "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
                },
                "modifiedIndex": {
                  "type": "integer"
                }
              },
              "else": {
                "required": [
                  "key",
                  "cert"
                ]
              },
              "additionalProperties": false,
              "if": {
                "properties": {
                  "type": {
                    "enum": [
                      "server"
                    ]
                  }
                }
              },
              "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
            }
          },
          "ssls_conf_version": {
            "type": "number"
          },
          "global_rules": {
            "type": "array",
            "items": {
              "properties": {
                "id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "update_time": {
                  "type": "integer"
                },
                "plugins": {
                  "type": "object"
                },
                "create_time": {
                  "type": "integer"
                },
                "modifiedIndex": {
                  "type": "integer"
                }
              },
              "additionalProperties": false,
              "type": "object",
              "required": [
                "id",
                "plugins"
              ],
              "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
            }
          },
          "global_rules_conf_version": {
            "type": "number"
          },
          "consumer_groups": {
            "type": "array",
            "items": {
              "properties": {
                "create_time": {
                  "type": "integer"
                },
                "update_time": {
                  "type": "integer"
                },
                "plugins": {
                  "type": "object"
                },
                "id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "name": {
                  "minLength": 1,
                  "type": "string",
                  "maxLength": 256
                },
                "desc": {
                  "type": "string",
                  "maxLength": 256
                },
                "labels": {
                  "$ref": "#/components/schemas/Labels"
                },
                "modifiedIndex": {
                  "type": "integer"
                }
              },
              "additionalProperties": false,
              "type": "object",
              "required": [
                "id",
                "plugins"
              ],
              "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
            }
          },
          "consumer_groups_conf_version": {
            "type": "number"
          },
          "plugin_configs": {
            "type": "array",
            "items": {
              "properties": {
                "create_time": {
                  "type": "integer"
                },
                "update_time": {
                  "type": "integer"
                },
                "plugins": {
                  "type": "object"
                },
                "id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "name": {
                  "type": "string"
                },
                "desc": {
                  "type": "string",
                  "maxLength": 256
                },
                "labels": {
                  "$ref": "#/components/schemas/Labels"
                },
                "modifiedIndex": {
                  "type": "integer"
                }
              },
              "additionalProperties": false,
              "type": "object",
              "required": [
                "id",
                "plugins"
              ],
              "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
            }
          },
          "plugin_configs_conf_version": {
            "type": "number"
          },
          "stream_routes": {
            "type": "array",
            "items": {
              "properties": {
                "upstream_id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "protocol": {
                  "properties": {
                    "conf": {
                      "description": "protocol-specific configuration",
                      "type": "object"
                    },
                    "name": {
                      "type": "string"
                    },
                    "superior_id": {
                      "$ref": "#/components/schemas/ResourceId"
                    },
                    "logger": {
                      "type": "array",
                      "items": {
                        "properties": {
                          "conf": {
                            "description": "logger plugin configuration",
                            "type": "object"
                          },
                          "name": {
                            "type": "string"
                          },
                          "filter": {
                            "description": "logger filter rules",
                            "type": "array"
                          }
                        },
                        "additionalProperties": false,
                        "dependentRequired": {
                          "name": [
                            "conf"
                          ]
                        }
                      }
                    }
                  },
                  "type": "object",
                  "required": [
                    "name"
                  ]
                },
                "sni": {
                  "description": "server name indication",
                  "type": "string",
                  "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
                },
                "id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "name": {
                  "minLength": 1,
                  "type": "string",
                  "maxLength": 256
                },
                "remote_addr": {
                  "description": "client IP",
                  "anyOf": [
                    {
                      "type": "string",
                      "title": "IPv4",
                      "format": "ipv4"
                    },
                    {
                      "pattern": "^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([12]?[0-9]|3[0-2])$",
                      "title": "IPv4/CIDR",
                      "type": "string"
                    },
                    {
                      "type": "string",
                      "title": "IPv6",
                      "format": "ipv6"
                    },
                    {
                      "pattern": "^([a-fA-F0-9]{0,4}:){1,8}(:[a-fA-F0-9]{0,4}){0,8}([a-fA-F0-9]{0,4})?/[0-9]{1,3}$",
                      "title": "IPv6/CIDR",
                      "type": "string"
                    }
                  ],
                  "type": "string"
                },
                "labels": {
                  "$ref": "#/components/schemas/Labels"
                },
                "create_time": {
                  "type": "integer"
                },
                "update_time": {
                  "type": "integer"
                },
                "desc": {
                  "type": "string",
                  "maxLength": 256
                },
                "server_addr": {
                  "description": "server IP",
                  "anyOf": [
                    {
                      "type": "string",
                      "title": "IPv4",
                      "format": "ipv4"
                    },
                    {
                      "pattern": "^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([12]?[0-9]|3[0-2])$",
                      "title": "IPv4/CIDR",
                      "type": "string"
                    },
                    {
                      "type": "string",
                      "title": "IPv6",
                      "format": "ipv6"
                    },
                    {
                      "pattern": "^([a-fA-F0-9]{0,4}:){1,8}(:[a-fA-F0-9]{0,4}){0,8}([a-fA-F0-9]{0,4})?/[0-9]{1,3}$",
                      "title": "IPv6/CIDR",
                      "type": "string"
                    }
                  ],
                  "type": "string"
                },
                "plugins": {
                  "type": "object"
                },
                "server_port": {
                  "description": "server port",
                  "maximum": 65535,
                  "type": "integer",
                  "minimum": 1
                },
                "upstream": {
                  "$ref": "#/components/schemas/EmbeddedUpstream"
                },
                "service_id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "modifiedIndex": {
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false,
              "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
            }
          },
          "stream_routes_conf_version": {
            "type": "number"
          },
          "protos": {
            "type": "array",
            "items": {
              "properties": {
                "create_time": {
                  "type": "integer"
                },
                "update_time": {
                  "type": "integer"
                },
                "content": {
                  "minLength": 1,
                  "type": "string",
                  "maxLength": 1048576
                },
                "id": {
                  "$ref": "#/components/schemas/ResourceId"
                },
                "name": {
                  "minLength": 1,
                  "type": "string",
                  "maxLength": 256
                },
                "desc": {
                  "type": "string",
                  "maxLength": 256
                },
                "labels": {
                  "$ref": "#/components/schemas/Labels"
                },
                "modifiedIndex": {
                  "type": "integer"
                }
              },
              "additionalProperties": false,
              "type": "object",
              "required": [
                "content"
              ],
              "description": "Built-in schema from apisix/schema_def.lua; additional handler checks apply."
            }
          },
          "protos_conf_version": {
            "type": "number"
          },
          "plugin_metadata": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Metadata"
            }
          },
          "plugin_metadata_conf_version": {
            "type": "number"
          },
          "secrets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Secret"
            }
          },
          "secrets_conf_version": {
            "type": "number"
          },
          "plugins": {
            "type": "array",
            "items": {}
          },
          "plugins_conf_version": {
            "type": "number"
          }
        },
        "description": "YAML-provider configuration. Credentials are entries in consumers with id username/credentials/id. Resource version numbers may not decrease; unchanged versions retain existing resources. Omitted versions increment by one, and omitted resource arrays are cleared on update. Lua validates duplicate IDs and resource checkers, without cross-resource reference checks."
      },
      "StandaloneRead": {
        "allOf": [
          {
            "$ref": "#/components/schemas/StandaloneConfig"
          }
        ],
        "properties": {
          "X-Digest": {
            "type": "string"
          },
          "X-Last-Modified": {
            "type": "integer"
          }
        }
      },
      "HealthCheckActive": {
        "type": "object",
        "properties": {
          "host": {
            "type": "string",
            "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
          },
          "port": {
            "minimum": 1,
            "type": "integer",
            "maximum": 65535
          },
          "req_headers": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string",
              "uniqueItems": true
            }
          },
          "http_path": {
            "type": "string",
            "default": "/"
          },
          "https_verify_certificate": {
            "type": "boolean",
            "default": true
          },
          "healthy": {
            "type": "object",
            "properties": {
              "http_statuses": {
                "minItems": 1,
                "items": {
                  "minimum": 200,
                  "type": "integer",
                  "maximum": 599
                },
                "uniqueItems": true,
                "default": [
                  200,
                  302
                ],
                "type": "array"
              },
              "successes": {
                "minimum": 1,
                "default": 2,
                "type": "integer",
                "maximum": 254
              },
              "interval": {
                "minimum": 1,
                "type": "integer",
                "default": 1
              }
            }
          },
          "type": {
            "default": "http",
            "type": "string",
            "enum": [
              "http",
              "https",
              "tcp"
            ]
          },
          "unhealthy": {
            "type": "object",
            "properties": {
              "http_statuses": {
                "minItems": 1,
                "items": {
                  "minimum": 200,
                  "type": "integer",
                  "maximum": 599
                },
                "uniqueItems": true,
                "default": [
                  429,
                  404,
                  500,
                  501,
                  502,
                  503,
                  504,
                  505
                ],
                "type": "array"
              },
              "timeouts": {
                "minimum": 1,
                "default": 3,
                "type": "integer",
                "maximum": 254
              },
              "interval": {
                "minimum": 1,
                "type": "integer",
                "default": 1
              },
              "tcp_failures": {
                "minimum": 1,
                "default": 2,
                "type": "integer",
                "maximum": 254
              },
              "http_failures": {
                "minimum": 1,
                "default": 5,
                "type": "integer",
                "maximum": 254
              }
            }
          },
          "timeout": {
            "type": "number",
            "default": 1
          },
          "concurrency": {
            "type": "integer",
            "default": 10
          }
        }
      },
      "HealthCheckPassive": {
        "type": "object",
        "properties": {
          "unhealthy": {
            "type": "object",
            "properties": {
              "http_statuses": {
                "minItems": 1,
                "items": {
                  "minimum": 200,
                  "type": "integer",
                  "maximum": 599
                },
                "uniqueItems": true,
                "default": [
                  429,
                  500,
                  503
                ],
                "type": "array"
              },
              "timeouts": {
                "minimum": 0,
                "default": 7,
                "type": "integer",
                "maximum": 254
              },
              "tcp_failures": {
                "minimum": 0,
                "default": 2,
                "type": "integer",
                "maximum": 254
              },
              "http_failures": {
                "minimum": 0,
                "default": 5,
                "type": "integer",
                "maximum": 254
              }
            }
          },
          "type": {
            "default": "http",
            "type": "string",
            "enum": [
              "http",
              "https",
              "tcp"
            ]
          },
          "healthy": {
            "type": "object",
            "properties": {
              "http_statuses": {
                "minItems": 1,
                "items": {
                  "minimum": 200,
                  "type": "integer",
                  "maximum": 599
                },
                "uniqueItems": true,
                "default": [
                  200,
                  201,
                  202,
                  203,
                  204,
                  205,
                  206,
                  207,
                  208,
                  226,
                  300,
                  301,
                  302,
                  303,
                  304,
                  305,
                  306,
                  307,
                  308
                ],
                "type": "array"
              },
              "successes": {
                "minimum": 0,
                "default": 5,
                "type": "integer",
                "maximum": 254
              }
            }
          }
        }
      },
      "HealthCheck": {
        "properties": {
          "passive": {
            "$ref": "#/components/schemas/HealthCheckPassive"
          },
          "active": {
            "$ref": "#/components/schemas/HealthCheckActive"
          }
        },
        "anyOf": [
          {
            "required": [
              "active"
            ]
          },
          {
            "required": [
              "active",
              "passive"
            ]
          }
        ],
        "type": "object"
      },
      "EmbeddedUpstream": {
        "properties": {
          "key": {
            "description": "the key of chash for dynamic load balancing",
            "type": "string"
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "create_time": {
            "type": "integer"
          },
          "update_time": {
            "type": "integer"
          },
          "nodes": {
            "anyOf": [
              {
                "type": "object",
                "patternProperties": {
                  ".*": {
                    "description": "weight of node",
                    "type": "integer",
                    "minimum": 0
                  }
                }
              },
              {
                "type": "array",
                "items": {
                  "properties": {
                    "host": {
                      "type": "string",
                      "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
                    },
                    "port": {
                      "description": "port of node",
                      "maximum": 65535,
                      "type": "integer",
                      "minimum": 1
                    },
                    "weight": {
                      "description": "weight of node",
                      "type": "integer",
                      "minimum": 0
                    },
                    "priority": {
                      "description": "priority of node",
                      "type": "integer",
                      "default": 0
                    },
                    "metadata": {
                      "description": "metadata of node",
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "required": [
                    "host",
                    "weight"
                  ]
                }
              }
            ]
          },
          "retries": {
            "type": "integer",
            "minimum": 0
          },
          "retry_timeout": {
            "type": "number",
            "minimum": 0
          },
          "tls": {
            "properties": {
              "client_key": {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              },
              "verify": {
                "description": "Turn on server certificate verification, currently only kafka upstream is supported",
                "type": "boolean",
                "default": false
              },
              "client_cert_id": {
                "$ref": "#/components/schemas/ResourceId"
              },
              "client_cert": {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              }
            },
            "type": "object",
            "dependentSchemas": {
              "client_key": {
                "required": [
                  "client_cert"
                ]
              },
              "client_cert_id": {
                "not": {
                  "required": [
                    "client_cert",
                    "client_key"
                  ]
                }
              },
              "client_cert": {
                "required": [
                  "client_key"
                ]
              }
            }
          },
          "discovery_args": {
            "type": "object",
            "properties": {
              "namespace_id": {
                "description": "namespace id",
                "type": "string"
              },
              "group_name": {
                "description": "group name",
                "type": "string"
              }
            }
          },
          "pass_host": {
            "description": "mod of host passing",
            "default": "pass",
            "type": "string",
            "enum": [
              "pass",
              "node",
              "rewrite"
            ]
          },
          "keepalive_pool": {
            "type": "object",
            "properties": {
              "requests": {
                "minimum": 1,
                "type": "integer",
                "default": 1000
              },
              "size": {
                "minimum": 1,
                "type": "integer",
                "default": 320
              },
              "idle_timeout": {
                "minimum": 0,
                "type": "number",
                "default": 60
              }
            }
          },
          "service_name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "upstream_host": {
            "type": "string",
            "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
          },
          "type": {
            "description": "algorithms of load balancing",
            "type": "string",
            "default": "roundrobin"
          },
          "checks": {
            "$ref": "#/components/schemas/HealthCheck"
          },
          "hash_on": {
            "enum": [
              "vars",
              "header",
              "cookie",
              "consumer",
              "vars_combinations"
            ],
            "type": "string",
            "default": "vars"
          },
          "discovery_type": {
            "description": "discovery type",
            "type": "string"
          },
          "timeout": {
            "$ref": "#/components/schemas/Timeout"
          },
          "scheme": {
            "description": "The scheme of the upstream. For L7 proxy, it can be one of grpc/grpcs/http/https. For L4 proxy, it can be one of tcp/tls/udp. For specific protocols, it can be kafka.",
            "default": "http",
            "enum": [
              "grpc",
              "grpcs",
              "http",
              "https",
              "tcp",
              "tls",
              "udp",
              "kafka"
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "oneOf": [
          {
            "required": [
              "nodes"
            ]
          },
          {
            "required": [
              "service_name",
              "discovery_type"
            ]
          }
        ]
      },
      "EmbeddedUpstreamRequest": {
        "properties": {
          "key": {
            "description": "the key of chash for dynamic load balancing",
            "type": "string"
          },
          "id": {
            "$ref": "#/components/schemas/ResourceId"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "desc": {
            "type": "string",
            "maxLength": 256
          },
          "labels": {
            "$ref": "#/components/schemas/Labels"
          },
          "nodes": {
            "anyOf": [
              {
                "type": "object",
                "patternProperties": {
                  ".*": {
                    "description": "weight of node",
                    "type": "integer",
                    "minimum": 0
                  }
                }
              },
              {
                "type": "array",
                "items": {
                  "properties": {
                    "host": {
                      "type": "string",
                      "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
                    },
                    "port": {
                      "description": "port of node",
                      "maximum": 65535,
                      "type": "integer",
                      "minimum": 1
                    },
                    "weight": {
                      "description": "weight of node",
                      "type": "integer",
                      "minimum": 0
                    },
                    "priority": {
                      "description": "priority of node",
                      "type": "integer",
                      "default": 0
                    },
                    "metadata": {
                      "description": "metadata of node",
                      "type": "object"
                    }
                  },
                  "type": "object",
                  "required": [
                    "host",
                    "weight"
                  ]
                }
              }
            ]
          },
          "retries": {
            "type": "integer",
            "minimum": 0
          },
          "retry_timeout": {
            "type": "number",
            "minimum": 0
          },
          "tls": {
            "properties": {
              "client_key": {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              },
              "verify": {
                "description": "Turn on server certificate verification, currently only kafka upstream is supported",
                "type": "boolean",
                "default": false
              },
              "client_cert_id": {
                "$ref": "#/components/schemas/ResourceId"
              },
              "client_cert": {
                "minLength": 128,
                "type": "string",
                "maxLength": 65536
              }
            },
            "type": "object",
            "dependentSchemas": {
              "client_key": {
                "required": [
                  "client_cert"
                ]
              },
              "client_cert_id": {
                "not": {
                  "required": [
                    "client_cert",
                    "client_key"
                  ]
                }
              },
              "client_cert": {
                "required": [
                  "client_key"
                ]
              }
            }
          },
          "discovery_args": {
            "type": "object",
            "properties": {
              "namespace_id": {
                "description": "namespace id",
                "type": "string"
              },
              "group_name": {
                "description": "group name",
                "type": "string"
              }
            }
          },
          "pass_host": {
            "description": "mod of host passing",
            "default": "pass",
            "type": "string",
            "enum": [
              "pass",
              "node",
              "rewrite"
            ]
          },
          "keepalive_pool": {
            "type": "object",
            "properties": {
              "requests": {
                "minimum": 1,
                "type": "integer",
                "default": 1000
              },
              "size": {
                "minimum": 1,
                "type": "integer",
                "default": 320
              },
              "idle_timeout": {
                "minimum": 0,
                "type": "number",
                "default": 60
              }
            }
          },
          "service_name": {
            "minLength": 1,
            "type": "string",
            "maxLength": 256
          },
          "upstream_host": {
            "type": "string",
            "pattern": "^\\*$|^\\*?[0-9a-zA-Z-._\\[\\]:]+$"
          },
          "type": {
            "description": "algorithms of load balancing",
            "type": "string",
            "default": "roundrobin"
          },
          "checks": {
            "$ref": "#/components/schemas/HealthCheck"
          },
          "hash_on": {
            "enum": [
              "vars",
              "header",
              "cookie",
              "consumer",
              "vars_combinations"
            ],
            "type": "string",
            "default": "vars"
          },
          "discovery_type": {
            "description": "discovery type",
            "type": "string"
          },
          "timeout": {
            "$ref": "#/components/schemas/Timeout"
          },
          "scheme": {
            "description": "The scheme of the upstream. For L7 proxy, it can be one of grpc/grpcs/http/https. For L4 proxy, it can be one of tcp/tls/udp. For specific protocols, it can be kafka.",
            "default": "http",
            "enum": [
              "grpc",
              "grpcs",
              "http",
              "https",
              "tcp",
              "tls",
              "udp",
              "kafka"
            ]
          }
        },
        "additionalProperties": false,
        "type": "object",
        "oneOf": [
          {
            "required": [
              "nodes"
            ]
          },
          {
            "required": [
              "service_name",
              "discovery_type"
            ]
          }
        ]
      },
      "ResourceId": {
        "anyOf": [
          {
            "pattern": "^[a-zA-Z0-9-_.]+$",
            "minLength": 1,
            "type": "string",
            "maxLength": 64
          },
          {
            "type": "integer",
            "minimum": 1
          }
        ]
      },
      "Timeout": {
        "properties": {
          "read": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "connect": {
            "type": "number",
            "exclusiveMinimum": 0
          },
          "send": {
            "type": "number",
            "exclusiveMinimum": 0
          }
        },
        "type": "object",
        "required": [
          "connect",
          "send",
          "read"
        ]
      },
      "Labels": {
        "description": "key/value pairs to specify attributes",
        "type": "object",
        "patternProperties": {
          ".*": {
            "description": "value of label",
            "minLength": 1,
            "type": "string",
            "pattern": "^\\S+$",
            "maxLength": 256
          }
        }
      }
    },
    "parameters": {
      "Ttl": {
        "name": "ttl",
        "in": "query",
        "required": false,
        "schema": {
          "type": "number"
        },
        "description": "Lease duration in seconds, passed to etcd. Only numeric conversion is checked by the Admin handler; the backend can reject invalid lease durations.",
        "example": 3600
      },
      "Force": {
        "name": "force",
        "in": "query",
        "required": false,
        "schema": {
          "type": "string"
        },
        "description": "Only the literal true skips dependency checks.",
        "example": "true"
      },
      "Page": {
        "name": "page",
        "in": "query",
        "required": false,
        "schema": {
          "type": "integer"
        },
        "description": "v3 only. Pagination requires both page and page_size to be numeric. A page below 1 is clamped to 1. Omission does not supply a default.",
        "example": 1
      },
      "PageSize": {
        "name": "page_size",
        "in": "query",
        "required": false,
        "schema": {
          "type": "integer",
          "minimum": 10,
          "maximum": 500
        },
        "description": "v3 only. With a numeric page, paginate after filtering and sort by createdIndex. If either argument is absent, return all filtered entries.",
        "example": 20
      },
      "name": {
        "name": "name",
        "in": "query",
        "required": false,
        "schema": {
          "type": "string"
        },
        "description": "v3 only: regular expression matched against value.name."
      },
      "label": {
        "name": "label",
        "in": "query",
        "required": false,
        "schema": {
          "type": "string"
        },
        "description": "v3 only: match a label key (not its value)."
      },
      "uri": {
        "name": "uri",
        "in": "query",
        "required": false,
        "schema": {
          "type": "string"
        },
        "description": "v3 only: regular expression matched against uri and uris."
      },
      "filter": {
        "name": "filter",
        "in": "query",
        "required": false,
        "schema": {
          "type": "string"
        },
        "description": "v3 only: encoded query string of exact service_id/upstream_id matches. Supported only for routes and stream_routes. Unsupported fields are ignored."
      },
      "Subsystem": {
        "name": "subsystem",
        "in": "query",
        "required": false,
        "schema": {
          "type": "string",
          "enum": [
            "http",
            "stream"
          ],
          "default": "http"
        },
        "description": "Plugin subsystem."
      },
      "SchemaType": {
        "name": "schema_type",
        "in": "query",
        "required": false,
        "schema": {
          "type": "string"
        },
        "description": "The literal consumer selects consumer_schema; otherwise returns the normal schema."
      },
      "All": {
        "name": "all",
        "in": "query",
        "required": false,
        "schema": {
          "type": "string"
        },
        "description": "The literal true returns the loaded plugin catalog, including schemas and attributes. Deprecated.",
        "example": "true",
        "deprecated": true
      }
    },
    "responses": {
      "400": {
        "description": "Invalid input or a referenced resource prevents this operation.",
        "content": {
          "application/json": {
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/Error"
                },
                {
                  "type": "string"
                }
              ]
            }
          }
        }
      },
      "401": {
        "description": "Missing/incorrect key or method forbidden for a viewer key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "error_msg": "failed to check token",
              "description": "missing apikey"
            }
          }
        }
      },
      "404": {
        "description": "Resource, plugin, or key not found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            },
            "example": {
              "message": "Key not found"
            }
          }
        }
      },
      "503": {
        "description": "Backend unavailable, write disabled on data plane, or concurrent update failed.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      }
    },
    "examples": {
      "Route": {
        "summary": "Illustrative Route configuration",
        "value": {
          "uri": "/example",
          "upstream": {
            "type": "roundrobin",
            "nodes": {
              "127.0.0.1:1980": 1
            }
          }
        }
      },
      "Service": {
        "summary": "Illustrative Service configuration",
        "value": {
          "upstream": {
            "type": "roundrobin",
            "nodes": {
              "127.0.0.1:1980": 1
            }
          }
        }
      },
      "Upstream": {
        "summary": "Illustrative Upstream configuration",
        "value": {
          "type": "roundrobin",
          "nodes": {
            "127.0.0.1:1980": 1
          }
        }
      },
      "Consumer": {
        "summary": "Illustrative Consumer configuration",
        "value": {
          "username": "jack",
          "plugins": {
            "key-auth": {
              "key": "example-key"
            }
          }
        }
      },
      "Credential": {
        "summary": "Illustrative Credential configuration",
        "value": {
          "plugins": {
            "key-auth": {
              "key": "example-key"
            }
          }
        }
      },
      "GlobalRule": {
        "summary": "Illustrative GlobalRule configuration",
        "value": {
          "plugins": {}
        }
      },
      "ConsumerGroup": {
        "summary": "Illustrative ConsumerGroup configuration",
        "value": {
          "plugins": {}
        }
      },
      "PluginConfig": {
        "summary": "Illustrative PluginConfig configuration",
        "value": {
          "plugins": {}
        }
      },
      "StreamRoute": {
        "summary": "Illustrative StreamRoute configuration",
        "value": {
          "server_port": 9100,
          "upstream": {
            "type": "roundrobin",
            "nodes": {
              "127.0.0.1:1980": 1
            }
          }
        }
      },
      "Proto": {
        "summary": "Illustrative Proto configuration",
        "value": {
          "content": "syntax = \"proto3\"; message Hello { string name = 1; }"
        }
      },
      "SSL": {
        "summary": "Illustrative SSL configuration (set both APISIX_EXAMPLE_TLS_CERT and APISIX_EXAMPLE_TLS_KEY in the APISIX environment first)",
        "value": {
          "sni": "test.com",
          "cert": "$env://APISIX_EXAMPLE_TLS_CERT",
          "key": "$env://APISIX_EXAMPLE_TLS_KEY"
        }
      },
      "Secret": {
        "summary": "Illustrative Secret configuration",
        "value": {
          "uri": "http://127.0.0.1:8200",
          "prefix": "kv",
          "token": "example-token"
        }
      },
      "Metadata": {
        "summary": "Illustrative Metadata configuration",
        "value": {}
      }
    }
  },
  "x-apisix-source": {
    "repository": "https://github.com/apache/apisix",
    "revision": "3a504e5eef0a7cbbbc5ae18df37e0a7c3598c7bc",
    "version": "3.16.0",
    "files": [
      "apisix/admin/init.lua",
      "apisix/admin/resource.lua",
      "apisix/admin/v3_adapter.lua",
      "apisix/schema_def.lua",
      "apisix/core/etcd.lua",
      "apisix/admin/standalone.lua"
    ]
  }
}
