Microservice

Describes a microservice in a scalable architecture, including its service boundaries, communication contracts, resource requirements, and operational characteristics.

Cloud ArchitectureCloud-NativeDistributed SystemsHigh AvailabilityInfrastructureMicroservicesPerformanceResilienceScalabilityService Mesh

Properties

Name Type Description
name string Service name in kebab-case.
version string Semantic version of the service.
description string Human-readable description of the service's bounded context and responsibilities.
team string Team responsible for this service (follows domain-driven team ownership).
domain string Domain or bounded context this service belongs to.
api object Service API contract definition.
dependencies array List of upstream services this service depends on.
resources object
scaling object
resilience object
observability object
tags array
View JSON Schema on GitHub

JSON Schema

scalable-architecture-microservice-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/scalable-architecture/main/json-schema/scalable-architecture-microservice-schema.json",
  "title": "Microservice",
  "description": "Describes a microservice in a scalable architecture, including its service boundaries, communication contracts, resource requirements, and operational characteristics.",
  "type": "object",
  "required": ["name", "version", "api"],
  "properties": {
    "name": {
      "type": "string",
      "description": "Service name in kebab-case.",
      "pattern": "^[a-z][a-z0-9-]*$"
    },
    "version": {
      "type": "string",
      "description": "Semantic version of the service.",
      "pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.]+)?$"
    },
    "description": {
      "type": "string",
      "description": "Human-readable description of the service's bounded context and responsibilities."
    },
    "team": {
      "type": "string",
      "description": "Team responsible for this service (follows domain-driven team ownership)."
    },
    "domain": {
      "type": "string",
      "description": "Domain or bounded context this service belongs to."
    },
    "api": {
      "type": "object",
      "description": "Service API contract definition.",
      "required": ["protocol"],
      "properties": {
        "protocol": {
          "type": "string",
          "enum": ["HTTP/REST", "gRPC", "GraphQL", "WebSocket", "AMQP", "Kafka"],
          "description": "Primary communication protocol."
        },
        "version": {
          "type": "string",
          "description": "API version (e.g., v1, v2).",
          "default": "v1"
        },
        "baseUrl": {
          "type": "string",
          "format": "uri",
          "description": "Base URL for the service API."
        },
        "healthEndpoint": {
          "type": "string",
          "description": "Health check endpoint path.",
          "default": "/health"
        },
        "metricsEndpoint": {
          "type": "string",
          "description": "Prometheus metrics endpoint path.",
          "default": "/metrics"
        }
      }
    },
    "dependencies": {
      "type": "array",
      "description": "List of upstream services this service depends on.",
      "items": {
        "type": "object",
        "required": ["name", "type"],
        "properties": {
          "name": {"type": "string"},
          "type": {
            "type": "string",
            "enum": ["synchronous", "asynchronous", "database", "cache", "queue"]
          },
          "required": {"type": "boolean", "default": true},
          "circuitBreaker": {"type": "boolean", "default": false}
        }
      }
    },
    "resources": {
      "$ref": "#/$defs/ResourceRequirements"
    },
    "scaling": {
      "$ref": "#/$defs/ScalingConfig"
    },
    "resilience": {
      "$ref": "#/$defs/ResilienceConfig"
    },
    "observability": {
      "$ref": "#/$defs/ObservabilityConfig"
    },
    "tags": {
      "type": "array",
      "items": {"type": "string"}
    }
  },
  "$defs": {
    "ResourceRequirements": {
      "type": "object",
      "description": "Kubernetes-style resource requests and limits.",
      "properties": {
        "requests": {
          "type": "object",
          "properties": {
            "cpu": {"type": "string", "description": "CPU request (e.g., '100m', '0.5')."},
            "memory": {"type": "string", "description": "Memory request (e.g., '128Mi', '1Gi')."}
          }
        },
        "limits": {
          "type": "object",
          "properties": {
            "cpu": {"type": "string"},
            "memory": {"type": "string"}
          }
        }
      }
    },
    "ScalingConfig": {
      "type": "object",
      "description": "Autoscaling configuration for the service.",
      "properties": {
        "minReplicas": {"type": "integer", "minimum": 0, "default": 1},
        "maxReplicas": {"type": "integer", "minimum": 1},
        "targetCPUUtilizationPercentage": {"type": "integer", "minimum": 1, "maximum": 100},
        "scaleToZero": {"type": "boolean", "default": false},
        "scalingTrigger": {
          "type": "string",
          "enum": ["cpu", "memory", "custom-metric", "queue-depth", "event-driven"]
        }
      }
    },
    "ResilienceConfig": {
      "type": "object",
      "description": "Resilience patterns applied to the service.",
      "properties": {
        "circuitBreaker": {
          "type": "object",
          "properties": {
            "enabled": {"type": "boolean", "default": false},
            "threshold": {"type": "number", "minimum": 0, "maximum": 1},
            "timeout": {"type": "integer", "description": "Recovery timeout in seconds."}
          }
        },
        "retry": {
          "type": "object",
          "properties": {
            "enabled": {"type": "boolean", "default": false},
            "maxAttempts": {"type": "integer", "minimum": 1, "default": 3},
            "backoff": {
              "type": "string",
              "enum": ["fixed", "exponential", "jitter"],
              "default": "exponential"
            }
          }
        },
        "timeout": {
          "type": "object",
          "properties": {
            "requestTimeoutMs": {"type": "integer", "minimum": 0},
            "connectionTimeoutMs": {"type": "integer", "minimum": 0}
          }
        }
      }
    },
    "ObservabilityConfig": {
      "type": "object",
      "description": "Observability instrumentation settings.",
      "properties": {
        "tracingEnabled": {"type": "boolean", "default": true},
        "metricsEnabled": {"type": "boolean", "default": true},
        "loggingLevel": {
          "type": "string",
          "enum": ["DEBUG", "INFO", "WARN", "ERROR"],
          "default": "INFO"
        },
        "samplingRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 1,
          "description": "Distributed trace sampling rate (0.0-1.0).",
          "default": 0.1
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/scalable-architecture-microservice"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.