Some checks failed
devportal-offline / build-offline (push) Has been cancelled
Mirror Thin Bundle Sign & Verify / mirror-sign (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
api-governance / spectral-lint (push) Has been cancelled
oas-ci / oas-validate (push) Has been cancelled
- Introduced InMemoryIssuerAuditSink to retain audit entries for testing. - Implemented InMemoryIssuerKeyRepository for deterministic key storage. - Created InMemoryIssuerRepository to manage issuer records in memory. - Added InMemoryIssuerTrustRepository for managing issuer trust overrides. - Each repository utilizes concurrent collections for thread-safe operations. - Enhanced deprecation tracking with a comprehensive YAML schema for API governance.
128 lines
3.6 KiB
JSON
128 lines
3.6 KiB
JSON
{
|
|
"$id": "https://stella-ops.org/schemas/notify/api-deprecation@1.json",
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "API Deprecation Notification Template",
|
|
"description": "Notification template schema for API deprecation announcements. Used by Notify service to render channel-specific messages.",
|
|
"type": "object",
|
|
"required": [
|
|
"schemaVersion",
|
|
"templateId",
|
|
"tenantId",
|
|
"channelType",
|
|
"key",
|
|
"locale",
|
|
"body",
|
|
"renderMode",
|
|
"format",
|
|
"createdAt",
|
|
"updatedAt"
|
|
],
|
|
"properties": {
|
|
"schemaVersion": {
|
|
"type": "string",
|
|
"const": "notify.template.api-deprecation@1"
|
|
},
|
|
"templateId": {
|
|
"type": "string",
|
|
"pattern": "^api-deprecation-[a-z]+(-[a-z0-9]+)*$",
|
|
"description": "Template identifier following api-deprecation-{channel}[-variant] pattern."
|
|
},
|
|
"tenantId": {
|
|
"type": "string",
|
|
"description": "Tenant scope for the template. Use '_system' for platform-wide defaults."
|
|
},
|
|
"channelType": {
|
|
"type": "string",
|
|
"enum": ["slack", "teams", "email", "webhook"],
|
|
"description": "Target notification channel."
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"const": "api.deprecation.announced",
|
|
"description": "Event key this template handles."
|
|
},
|
|
"locale": {
|
|
"type": "string",
|
|
"default": "en-US",
|
|
"description": "Locale for the template content."
|
|
},
|
|
"body": {
|
|
"type": "string",
|
|
"description": "Template body with Mustache/Handlebars placeholders for deprecation fields."
|
|
},
|
|
"subject": {
|
|
"type": "string",
|
|
"description": "Email subject line (for email channel only)."
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "Human-readable description of the template."
|
|
},
|
|
"renderMode": {
|
|
"type": "string",
|
|
"enum": ["markdown", "html", "adaptiveCard", "plainText", "json"],
|
|
"description": "How the body should be rendered."
|
|
},
|
|
"format": {
|
|
"type": "string",
|
|
"enum": ["slack", "teams", "email", "webhook", "json"],
|
|
"description": "Output format for the rendered message."
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"properties": {
|
|
"priority": {
|
|
"type": "string",
|
|
"enum": ["low", "normal", "high", "urgent"],
|
|
"default": "normal"
|
|
},
|
|
"category": {
|
|
"type": "string",
|
|
"const": "api-governance"
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
}
|
|
},
|
|
"additionalProperties": { "type": "string" }
|
|
},
|
|
"placeholders": {
|
|
"type": "array",
|
|
"description": "Documented placeholders available in the template body.",
|
|
"items": {
|
|
"$ref": "#/$defs/placeholder"
|
|
}
|
|
},
|
|
"createdBy": { "type": "string" },
|
|
"createdAt": { "type": "string", "format": "date-time" },
|
|
"updatedBy": { "type": "string" },
|
|
"updatedAt": { "type": "string", "format": "date-time" }
|
|
},
|
|
"additionalProperties": false,
|
|
"$defs": {
|
|
"placeholder": {
|
|
"type": "object",
|
|
"required": ["name", "description"],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Placeholder name (e.g., {{service}})."
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"description": "Description of what the placeholder contains."
|
|
},
|
|
"example": {
|
|
"type": "string",
|
|
"description": "Example value for the placeholder."
|
|
},
|
|
"required": {
|
|
"type": "boolean",
|
|
"default": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|