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.
36 lines
3.3 KiB
JSON
36 lines
3.3 KiB
JSON
{
|
|
"schemaVersion": "notify.template.api-deprecation@1",
|
|
"templateId": "api-deprecation-teams",
|
|
"tenantId": "_system",
|
|
"channelType": "teams",
|
|
"key": "api.deprecation.announced",
|
|
"locale": "en-US",
|
|
"subject": null,
|
|
"description": "Microsoft Teams Adaptive Card template for API deprecation announcements",
|
|
"body": "{\n \"type\": \"AdaptiveCard\",\n \"$schema\": \"http://adaptivecards.io/schemas/adaptive-card.json\",\n \"version\": \"1.4\",\n \"body\": [\n {\n \"type\": \"TextBlock\",\n \"text\": \"⚠️ API Deprecation Notice\",\n \"weight\": \"Bolder\",\n \"size\": \"Large\",\n \"color\": \"Warning\"\n },\n {\n \"type\": \"FactSet\",\n \"facts\": [\n { \"title\": \"Service\", \"value\": \"{{service}}\" },\n { \"title\": \"Endpoint\", \"value\": \"{{method}} {{path}}\" },\n { \"title\": \"Operation\", \"value\": \"{{operationId}}\" },\n { \"title\": \"Deprecated\", \"value\": \"{{deprecatedAt}}\" },\n { \"title\": \"Sunset Date\", \"value\": \"{{sunsetAt}} ({{daysUntilSunset}} days)\" }\n ]\n },\n {\n \"type\": \"TextBlock\",\n \"text\": \"{{reason}}\",\n \"wrap\": true,\n \"isSubtle\": true\n },\n {\n \"type\": \"TextBlock\",\n \"text\": \"Replacement: `{{successorPath}}`\",\n \"wrap\": true\n }\n ],\n \"actions\": [\n {\n \"type\": \"Action.OpenUrl\",\n \"title\": \"Migration Guide\",\n \"url\": \"{{migrationGuide}}\"\n },\n {\n \"type\": \"Action.OpenUrl\",\n \"title\": \"Changelog\",\n \"url\": \"{{changelogUrl}}\"\n }\n ]\n}",
|
|
"renderMode": "adaptiveCard",
|
|
"format": "teams",
|
|
"metadata": {
|
|
"priority": "high",
|
|
"category": "api-governance",
|
|
"tags": ["deprecation", "api", "migration"]
|
|
},
|
|
"placeholders": [
|
|
{ "name": "service", "description": "Service name owning the deprecated endpoint", "example": "authority", "required": true },
|
|
{ "name": "path", "description": "API path of the deprecated endpoint", "example": "/v1/tokens", "required": true },
|
|
{ "name": "method", "description": "HTTP method", "example": "POST", "required": true },
|
|
{ "name": "operationId", "description": "OpenAPI operation ID", "example": "createToken", "required": false },
|
|
{ "name": "deprecatedAt", "description": "When the endpoint was deprecated", "example": "2025-01-15", "required": true },
|
|
{ "name": "sunsetAt", "description": "When the endpoint will be removed", "example": "2025-07-15", "required": true },
|
|
{ "name": "daysUntilSunset", "description": "Days remaining until sunset", "example": "180", "required": true },
|
|
{ "name": "reason", "description": "Deprecation reason", "example": "Replaced by v2 endpoint", "required": false },
|
|
{ "name": "successorPath", "description": "Replacement endpoint path", "example": "/v2/tokens", "required": false },
|
|
{ "name": "migrationGuide", "description": "URL to migration documentation", "example": "https://docs.stella-ops.org/migration/tokens-v2", "required": false },
|
|
{ "name": "changelogUrl", "description": "URL to the changelog entry", "example": "https://docs.stella-ops.org/changelog#2025-01-15", "required": false }
|
|
],
|
|
"createdBy": "api-governance-guild",
|
|
"createdAt": "2025-12-11T00:00:00Z",
|
|
"updatedBy": "api-governance-guild",
|
|
"updatedAt": "2025-12-11T00:00:00Z"
|
|
}
|