---
title: "Upload custom plugin schema"
method: POST
path: "/v2/control-planes/{controlPlaneId}/core-entities/plugin-schemas"
tags: ["Custom Plugin Schemas"]
---

# Upload custom plugin schema

`POST /v2/control-planes/{controlPlaneId}/core-entities/plugin-schemas`

Upload a custom plugin schema associated with a control plane.

## Request body

- object
  - `lua_schema` string, required — The custom plugin schema; `jq -Rs '.' schema.lua`.

## Response `201`

A response for a single custom plugin schema.

- object
  - `item` object, nullable
    - `lua_schema` string, nullable — The custom plugin schema; `jq -Rs '.' schema.lua`.
    - `name` string, nullable — The custom plugin name determined by the custom plugin schema.
    - `created_at` integer — An ISO-8604 timestamp representation of custom plugin schema creation date.
    - `updated_at` integer — An ISO-8604 timestamp representation of custom plugin schema update date.

## Other responses

- `400` — Forbidden
- `401` — Unauthorized
- `403` — Forbidden
- `409` — Forbidden

## Changes

- **2025-08-22** `96118a9cd7f4` — 3 breaking
  - the response property `item` became nullable for the status `201`
  - the response property `item/lua_schema` became nullable for the status `201`
  - the response property `item/name` became nullable for the status `201`
- **2025-06-19** `60ce7598bbd0` — 6 breaking, 19 warning, 12 info
  - the response's body type/format changed from `object`/`` to ``/`` for status `401`
  - media type `application/problem+json` was changed to a more general media type `application/json` for the response status `400`
  - media type `application/problem+json` was changed to a more general media type `application/json` for the response status `401`
  - media type `application/problem+json` was changed to a more general media type `application/json` for the response status `403`
  - …33 more
- **2025-02-10** `d833d4dbb1fa` — 1 warning
  - added the new `missing_reference` enum value to the `allOf[subschema #2]/invalid_parameters/items/oneOf[#/components/schemas/InvalidParameterStandard]/rule` response property for the response status `400`
- …earlier changes not shown

[Full history](https://skmtc.dev/kong/apis/konnect-api/changes/v2/control-planes/:controlPlaneId/core-entities/plugin-schemas/post.md)

---

[API](https://skmtc.dev/kong/apis/konnect-api.md) · [All operations](https://skmtc.dev/kong/apis/konnect-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/kong/konnect-api/revisions/72502a676a92/schema)
