name: Schema Design description: Schema Design is the practice of defining the structure, constraints, and semantics of data models used in APIs, databases, and data exchange formats. It encompasses schema-first API design approaches, data modeling methodologies, type systems, and tooling for creating, validating, and evolving data schemas. Key formats include JSON Schema, OpenAPI components/schemas, GraphQL types, Protocol Buffers, Apache Avro, and database DDL. Good schema design improves API consistency, enables automated validation, supports code generation, and facilitates interoperability between systems. url: https://github.com/api-evangelist/schema-design x-type: topic tags: - Schema Design - Data Modeling - API Design - JSON Schema - OpenAPI - GraphQL - Data Validation - Type Systems created: '2026-05-02' modified: '2026-05-02' apis: - name: JSON Schema Specification description: JSON Schema is a vocabulary that allows you to annotate and validate JSON documents. It is the foundation for defining request and response body schemas in OpenAPI specifications and is used across many API tooling platforms for validation, documentation, and code generation. humanURL: https://json-schema.org baseURL: https://json-schema.org tags: - JSON Schema - Validation - Specification properties: - type: Documentation url: https://json-schema.org/learn/ - type: Reference url: https://json-schema.org/specification - name: OpenAPI Schema Objects description: OpenAPI uses a subset of JSON Schema (with extensions) to define the schema of request bodies, parameters, and response payloads. Understanding OpenAPI schema design is essential for building well-documented, machine-readable REST APIs. humanURL: https://spec.openapis.org/oas/v3.1.0#schema-object baseURL: https://spec.openapis.org tags: - OpenAPI - REST - API Design - Schema properties: - type: Documentation url: https://spec.openapis.org/oas/v3.1.0#schema-object - type: Reference url: https://swagger.io/specification/ - name: GraphQL Type System description: GraphQL uses a strong type system to define the shape of data that can be queried. GraphQL schemas define types, queries, mutations, and subscriptions that form the contract between clients and servers. humanURL: https://graphql.org/learn/schema/ baseURL: https://graphql.org tags: - GraphQL - Type System - API Design - Schema properties: - type: Documentation url: https://graphql.org/learn/schema/ - type: Reference url: https://spec.graphql.org/ - name: Apache Avro Schema description: Apache Avro is a data serialization system that uses JSON for schema definition. Avro schemas are widely used in event streaming with Apache Kafka and provide rich schema evolution support including backward and forward compatibility. humanURL: https://avro.apache.org/docs/current/spec.html baseURL: https://avro.apache.org tags: - Avro - Event Streaming - Kafka - Serialization properties: - type: Documentation url: https://avro.apache.org/docs/current/spec.html - name: Protocol Buffers (Protobuf) Schema description: Protocol Buffers is Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data. Proto schemas (.proto files) define messages and services, and are used heavily in gRPC APIs. humanURL: https://protobuf.dev/programming-guides/proto3/ baseURL: https://protobuf.dev tags: - Protobuf - gRPC - Serialization - API Design properties: - type: Documentation url: https://protobuf.dev/programming-guides/proto3/ common: - type: Website url: https://json-schema.org - type: JSONSchema url: json-schema/schema-design-api-schema-schema.json - type: JSONStructure url: json-structure/schema-design-api-schema-structure.json - type: JSONLDContext url: json-ld/schema-design-context.jsonld - type: Vocabulary url: vocabulary/schema-design-vocabulary.yml maintainers: - FN: API Evangelist email: info@apievangelist.com