Lagom · Schema
Lagom Service Descriptor
JSON Schema representing the structure of a Lagom service descriptor, defining service calls, topics, and ACLs.
AkkaEvent SourcingFrameworksJavaMicroservicesReactiveScala
Properties
| Name | Type | Description |
|---|---|---|
| name | string | The name of the service. |
| calls | array | List of service call definitions. |
| topics | array | List of topic definitions for event publishing. |
| acls | array | Access control list entries. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://github.com/api-evangelist/lagom/json-schema/lagom-service-descriptor.json",
"title": "Lagom Service Descriptor",
"description": "JSON Schema representing the structure of a Lagom service descriptor, defining service calls, topics, and ACLs.",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the service."
},
"calls": {
"type": "array",
"description": "List of service call definitions.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the service call."
},
"method": {
"type": "string",
"description": "HTTP method for the call.",
"enum": ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"]
},
"path": {
"type": "string",
"description": "URL path pattern for the call (e.g., /api/items/:id)."
},
"circuitBreaker": {
"type": "object",
"description": "Circuit breaker configuration for this call.",
"properties": {
"enabled": {
"type": "boolean",
"default": true
},
"maxFailures": {
"type": "integer",
"default": 10
},
"callTimeout": {
"type": "string",
"description": "Duration string (e.g., 10s).",
"default": "10s"
},
"resetTimeout": {
"type": "string",
"description": "Duration string (e.g., 15s).",
"default": "15s"
}
},
"additionalProperties": true
},
"autoAcl": {
"type": "boolean",
"description": "Automatically generate ACL for this call.",
"default": true
}
},
"required": ["name", "path"],
"additionalProperties": true
}
},
"topics": {
"type": "array",
"description": "List of topic definitions for event publishing.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Topic name."
},
"partitionKeyStrategy": {
"type": "string",
"description": "Fully qualified class name of the partition key strategy."
}
},
"required": ["name"],
"additionalProperties": true
}
},
"acls": {
"type": "array",
"description": "Access control list entries.",
"items": {
"type": "object",
"properties": {
"method": {
"type": "string",
"enum": ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "OPTIONS"]
},
"pathRegex": {
"type": "string",
"description": "Regex pattern for matching request paths."
}
},
"additionalProperties": true
}
}
},
"required": ["name"],
"additionalProperties": true
}