Go Micro · Schema

Go Micro Service Definition

JSON Schema representing a Go Micro service definition, including service metadata, endpoint registration, and node information as exposed via the registry.

Distributed SystemsFrameworksGoGolangMicroservicesRPCService Discovery

Properties

Name Type Description
name string Unique service name used for discovery and routing.
version string Service version string.
metadata object Custom key-value metadata for the service.
endpoints array List of RPC endpoints exposed by the service.
nodes array Registered nodes running this service.
View JSON Schema on GitHub

JSON Schema

go-micro-service.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/api-evangelist/go-micro/json-schema/go-micro-service.json",
  "title": "Go Micro Service Definition",
  "description": "JSON Schema representing a Go Micro service definition, including service metadata, endpoint registration, and node information as exposed via the registry.",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Unique service name used for discovery and routing."
    },
    "version": {
      "type": "string",
      "description": "Service version string."
    },
    "metadata": {
      "type": "object",
      "description": "Custom key-value metadata for the service.",
      "additionalProperties": {
        "type": "string"
      }
    },
    "endpoints": {
      "type": "array",
      "description": "List of RPC endpoints exposed by the service.",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Fully qualified endpoint name (e.g., Greeter.Hello)."
          },
          "request": {
            "type": "object",
            "description": "Request type information.",
            "properties": {
              "name": {
                "type": "string",
                "description": "Request message type name."
              },
              "type": {
                "type": "string",
                "description": "Request type (e.g., protobuf message name)."
              }
            },
            "additionalProperties": true
          },
          "response": {
            "type": "object",
            "description": "Response type information.",
            "properties": {
              "name": {
                "type": "string",
                "description": "Response message type name."
              },
              "type": {
                "type": "string",
                "description": "Response type (e.g., protobuf message name)."
              }
            },
            "additionalProperties": true
          },
          "metadata": {
            "type": "object",
            "description": "Endpoint metadata (e.g., stream, subscriber info).",
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "required": ["name"],
        "additionalProperties": true
      }
    },
    "nodes": {
      "type": "array",
      "description": "Registered nodes running this service.",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique node identifier."
          },
          "address": {
            "type": "string",
            "description": "Node address (host:port)."
          },
          "metadata": {
            "type": "object",
            "description": "Node-level metadata (e.g., transport, broker, protocol).",
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "required": ["id", "address"],
        "additionalProperties": true
      }
    }
  },
  "required": ["name"],
  "additionalProperties": true
}