{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://github.com/api-evangelist/graphql-mesh/json-schema/meshrc-configuration.json", "title": "GraphQL Mesh Configuration", "description": "JSON Schema for the .meshrc.yml configuration file that defines a GraphQL Mesh gateway.", "type": "object", "required": ["sources"], "properties": { "sources": { "type": "array", "items": { "$ref": "#/$defs/Source" }, "description": "List of data sources to mesh together." }, "transforms": { "type": "array", "items": { "$ref": "#/$defs/Transform" }, "description": "Transformations to apply to the unified schema." }, "additionalTypeDefs": { "type": "string", "description": "Additional SDL type definitions to add." }, "additionalResolvers": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "object", "properties": { "targetTypeName": { "type": "string" }, "targetFieldName": { "type": "string" }, "sourceName": { "type": "string" }, "sourceTypeName": { "type": "string" }, "sourceFieldName": { "type": "string" }, "requiredSelectionSet": { "type": "string" }, "sourceArgs": { "type": "object" } } } } ], "description": "Additional resolvers for cross-source type merging." }, "serve": { "type": "object", "properties": { "hostname": { "type": "string", "default": "0.0.0.0", "description": "Server hostname." }, "port": { "type": "integer", "default": 4000, "description": "Server port." }, "cors": { "type": "object", "properties": { "origin": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ] }, "credentials": { "type": "boolean" }, "allowedHeaders": { "type": "array", "items": { "type": "string" } }, "methods": { "type": "array", "items": { "type": "string" } } } }, "endpoint": { "type": "string", "default": "/graphql", "description": "GraphQL endpoint path." }, "playground": { "type": "boolean", "default": true, "description": "Enable GraphQL Playground." }, "browser": { "oneOf": [ { "type": "boolean" }, { "type": "string" } ], "description": "Open browser on start." } } }, "cache": { "type": "object", "properties": { "redis": { "type": "object", "properties": { "host": { "type": "string" }, "port": { "type": "integer" }, "password": { "type": "string" } } }, "file": { "type": "object", "properties": { "path": { "type": "string" } } } }, "description": "Cache configuration." }, "documents": { "type": "array", "items": { "type": "string" }, "description": "Glob patterns for GraphQL documents." }, "sdk": { "type": "object", "properties": { "generateOperations": { "type": "object", "properties": { "selectionSetDepth": { "type": "integer" } } } }, "description": "SDK generation configuration." } }, "$defs": { "Source": { "type": "object", "required": ["name", "handler"], "properties": { "name": { "type": "string", "description": "Unique name for this data source." }, "handler": { "type": "object", "properties": { "openapi": { "type": "object", "properties": { "source": { "type": "string", "description": "URL or path to OpenAPI spec." }, "baseUrl": { "type": "string" }, "operationHeaders": { "type": "object", "additionalProperties": { "type": "string" } } } }, "graphql": { "type": "object", "properties": { "endpoint": { "type": "string" }, "operationHeaders": { "type": "object", "additionalProperties": { "type": "string" } }, "useGETForQueries": { "type": "boolean" } } }, "grpc": { "type": "object", "properties": { "endpoint": { "type": "string" }, "protoFilePath": { "type": "string" } } }, "jsonSchema": { "type": "object", "properties": { "baseUrl": { "type": "string" }, "operations": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": ["Query", "Mutation"] }, "field": { "type": "string" }, "path": { "type": "string" }, "method": { "type": "string" }, "requestSchema": { "type": "string" }, "responseSchema": { "type": "string" } } } } } }, "soap": { "type": "object", "properties": { "wsdl": { "type": "string" } } }, "postgraphile": { "type": "object", "properties": { "connectionString": { "type": "string" } } }, "mysql": { "type": "object", "properties": { "host": { "type": "string" }, "port": { "type": "integer" }, "user": { "type": "string" }, "password": { "type": "string" }, "database": { "type": "string" } } } }, "description": "Handler configuration (one handler type per source)." }, "transforms": { "type": "array", "items": { "$ref": "#/$defs/Transform" }, "description": "Source-level transformations." } } }, "Transform": { "type": "object", "properties": { "rename": { "type": "object", "properties": { "renames": { "type": "array", "items": { "type": "object", "properties": { "from": { "type": "object", "properties": { "type": { "type": "string" }, "field": { "type": "string" } } }, "to": { "type": "object", "properties": { "type": { "type": "string" }, "field": { "type": "string" } } } } } } } }, "prefix": { "type": "object", "properties": { "value": { "type": "string" }, "includeRootOperations": { "type": "boolean" } } }, "filterSchema": { "type": "object", "properties": { "filters": { "type": "array", "items": { "type": "string" } } } }, "cache": { "type": "array", "items": { "type": "object", "properties": { "field": { "type": "string" }, "cacheKey": { "type": "string" }, "invalidate": { "type": "object", "properties": { "ttl": { "type": "integer" } } } } } } }, "description": "Schema transformation." } } }