Thank you for your interest in contributing to Meshery Schemas β we're thrilled to have you here! Whether you're fixing a typo, proposing a new schema, or diving deep into code generation, every contribution matters and is genuinely appreciated.
Meshery Schemas is the central repository for all schema definitions used across Meshery's components. It follows a schema-driven development model where OpenAPI schemas are used to auto-generate Go structs, TypeScript types, and API clients.
For comprehensive, step-by-step instructions on schema-driven development β including how to create and modify schemas, understand the build pipeline, and follow project conventions β please visit:
π docs.meshery.io
You'll find detailed guides covering:
- Schema structure and conventions
- Code generation workflow (
make build) - What to commit (and what not to)
- OpenAPI best practices for this project
The single most important rule when contributing a new entity schema:
The
<construct>.yamlfile is a response schema. POST/PUT bodies always use a separate*Payloadschema.
These schemas drive Go struct generation (oapi-codegen) and TypeScript client generation. If the full entity schema (which has id, created_at, updated_at in required) is used as a POST request body, generated clients will incorrectly require clients to supply server-generated fields.
-
<construct>.yamlβ represents the persisted object as returned from the API:- Must have
additionalProperties: false - Must include all server-generated fields (
id,created_at,updated_at,deleted_at) inproperties - Server-generated fields that are always present in responses belong in
required
- Must have
-
{Construct}Payloadinapi.ymlβ used asrequestBodyforPOST/PUT:- Contains only client-settable fields
idis optional (withjson:"id,omitempty") for upsert patterns, or absent for create-only- Never includes
created_at,updated_at,deleted_at
-
POST/PUToperations must reference{Construct}Payloadβ never the full entity schema -
GETresponses reference the full entity schema
schemas/constructs/v1beta1/connection/βConnection+ConnectionPayloadschemas/constructs/v1beta1/key/βKey+KeyPayloadschemas/constructs/v1beta1/team/βteam.yaml+teamPayload/teamUpdatePayloadschemas/constructs/v1beta1/environment/βenvironment.yaml+environmentPayload
See the Schema Design Principles section in the README for full examples and a contributor checklist.
make setup && npm install # install dependencies
make build # generate Go, TypeScript, and RTK code
npm run build # build the TypeScript distribution- GitHub Issues - report bugs or request features
- Community Slack - chat with maintainers and contributors
- Weekly Meetings - join our community calls
For general Meshery contribution guidelines, see the Meshery Contributing Guide.