{"openapi":"3.1.0","info":{"title":"HappyNM Extension Center API","version":"0.1.0-server-test"},"components":{"schemas":{}},"paths":{"/health/live":{"get":{"operationId":"getLiveness","tags":["Health"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","status","service","checkedAt"],"properties":{"schemaVersion":{"const":"happynm.extension-service-health/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"status":{"const":"live"},"service":{"type":"object","additionalProperties":false,"required":["name","version","stage"],"properties":{"name":{"const":"happynm-extension-center"},"version":{"type":"string","pattern":"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z.-]+)?$"},"stage":{"const":"foundation"}}},"checkedAt":{"type":"string","pattern":"^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$"}}}}}}}}},"/health/ready":{"get":{"operationId":"getReadiness","tags":["Health"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","status","service","checkedAt","checks"],"properties":{"schemaVersion":{"const":"happynm.extension-service-health/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"status":{"enum":["ready","degraded","unavailable"]},"service":{"type":"object","additionalProperties":false,"required":["name","version","stage"],"properties":{"name":{"const":"happynm-extension-center"},"version":{"type":"string","pattern":"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z.-]+)?$"},"stage":{"const":"foundation"}}},"checkedAt":{"type":"string","pattern":"^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$"},"checks":{"type":"array","maxItems":64,"uniqueItems":true,"items":{"type":"object","additionalProperties":false,"required":["id","required","status","code","durationMs"],"properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9.-]{0,63}$"},"required":{"type":"boolean"},"status":{"enum":["ready","degraded","unavailable"]},"code":{"type":"string","pattern":"^[a-z][a-z0-9._-]{0,63}$"},"durationMs":{"type":"integer","minimum":0}}}}}}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","status","service","checkedAt","checks"],"properties":{"schemaVersion":{"const":"happynm.extension-service-health/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"status":{"enum":["ready","degraded","unavailable"]},"service":{"type":"object","additionalProperties":false,"required":["name","version","stage"],"properties":{"name":{"const":"happynm-extension-center"},"version":{"type":"string","pattern":"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z.-]+)?$"},"stage":{"const":"foundation"}}},"checkedAt":{"type":"string","pattern":"^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$"},"checks":{"type":"array","maxItems":64,"uniqueItems":true,"items":{"type":"object","additionalProperties":false,"required":["id","required","status","code","durationMs"],"properties":{"id":{"type":"string","pattern":"^[a-z][a-z0-9.-]{0,63}$"},"required":{"type":"boolean"},"status":{"enum":["ready","degraded","unavailable"]},"code":{"type":"string","pattern":"^[a-z][a-z0-9._-]{0,63}$"},"durationMs":{"type":"integer","minimum":0}}}}}}}}}}}},"/v1/catalog/extensions":{"get":{"operationId":"listPublicCatalogExtensions","tags":["Catalog"],"parameters":[{"schema":{"enum":["agent-skill","business-plugin","mcp-server"]},"in":"query","name":"kind","required":false},{"schema":{"type":"string","minLength":1,"maxLength":200},"in":"query","name":"q","required":false},{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","minLength":16,"maxLength":1024,"pattern":"^[A-Za-z0-9_-]+$"},"in":"query","name":"cursor","required":false}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","serviceAuthority","tenantId","catalogVersion","generatedAt","page","items"],"properties":{"schemaVersion":{"const":"happynm.extension-catalog-list/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"serviceAuthority":{"type":"object","additionalProperties":false,"required":["serviceInstanceId","trustDomain","envelopeIssuer"],"properties":{"serviceInstanceId":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"trustDomain":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)(?:\\.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?))*$"},"envelopeIssuer":{"type":"string","minLength":9,"maxLength":512,"pattern":"^https://[^\\s?#]+(?:/[^\\s?#]*)?$"}}},"tenantId":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"catalogVersion":{"type":"integer","minimum":1,"maximum":9007199254740991},"generatedAt":{"type":"string","pattern":"^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\.[0-9]{3}Z$"},"page":{"type":"object","additionalProperties":false,"required":["limit","nextCursor"],"properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"nextCursor":{"oneOf":[{"type":"null"},{"type":"string","minLength":16,"maxLength":1024,"pattern":"^[A-Za-z0-9_-]+$"}]}}},"items":{"type":"array","maxItems":100,"uniqueItems":true,"items":{"type":"object","additionalProperties":false,"required":["extensionId","kind","publisher","display","latestRelease","access","maintenanceStatus"],"properties":{"extensionId":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"enum":["business-plugin","mcp-server","agent-skill"]},"publisher":{"type":"object","additionalProperties":false,"required":["publisherId","displayName"],"properties":{"publisherId":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"displayName":{"allOf":[{"type":"string","minLength":1,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},{"type":"string","maxLength":128}]}}},"display":{"type":"object","additionalProperties":false,"required":["locale","name","summary"],"properties":{"locale":{"type":"string","pattern":"^[a-z]{2,3}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}|[0-9]{3}))?$"},"name":{"allOf":[{"type":"string","minLength":1,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},{"type":"string","maxLength":128}]},"summary":{"allOf":[{"type":"string","minLength":1,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},{"type":"string","maxLength":512}]}}},"latestRelease":{"type":"object","additionalProperties":false,"required":["version","channel","publishedAt","manifestDigest","riskTier","security"],"properties":{"version":{"type":"string","pattern":"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"},"channel":{"const":"stable"},"publishedAt":{"type":"string","pattern":"^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\.[0-9]{3}Z$"},"manifestDigest":{"type":"object","additionalProperties":false,"required":["sha256"],"properties":{"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}}},"riskTier":{"enum":["l0","l1","l2","l3"]},"security":{"type":"object","additionalProperties":false,"required":["reviewStatus","scanStatus"],"properties":{"reviewStatus":{"const":"approved"},"scanStatus":{"const":"passed"}}}}},"access":{"type":"object","additionalProperties":false,"required":["visibility","offer"],"properties":{"visibility":{"const":"public"},"offer":{"const":"free"}}},"maintenanceStatus":{"enum":["active","deprecated","unmaintained"]}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","error"],"properties":{"schemaVersion":{"const":"happynm.extension-service-error/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"error":{"type":"object","additionalProperties":false,"required":["code","status","retryable","userAction"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"userAction":{"enum":["none","fix-request","reduce-request","retry-later","contact-operator"]}}}}}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","error"],"properties":{"schemaVersion":{"const":"happynm.extension-service-error/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"error":{"type":"object","additionalProperties":false,"required":["code","status","retryable","userAction"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"userAction":{"enum":["none","fix-request","reduce-request","retry-later","contact-operator"]}}}}}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","error"],"properties":{"schemaVersion":{"const":"happynm.extension-service-error/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"error":{"type":"object","additionalProperties":false,"required":["code","status","retryable","userAction"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"userAction":{"enum":["none","fix-request","reduce-request","retry-later","contact-operator"]}}}}}}}}}}},"/v1/catalog/extensions/{extensionId}":{"get":{"operationId":"getPublicCatalogExtension","tags":["Catalog"],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"in":"path","name":"extensionId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","serviceAuthority","tenantId","catalogVersion","generatedAt","item"],"properties":{"schemaVersion":{"const":"happynm.extension-catalog-detail/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"serviceAuthority":{"type":"object","additionalProperties":false,"required":["serviceInstanceId","trustDomain","envelopeIssuer"],"properties":{"serviceInstanceId":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"trustDomain":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)(?:\\.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?))*$"},"envelopeIssuer":{"type":"string","minLength":9,"maxLength":512,"pattern":"^https://[^\\s?#]+(?:/[^\\s?#]*)?$"}}},"tenantId":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"catalogVersion":{"type":"integer","minimum":1,"maximum":9007199254740991},"generatedAt":{"type":"string","pattern":"^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\.[0-9]{3}Z$"},"item":{"type":"object","additionalProperties":false,"required":["extensionId","kind","publisher","display","latestRelease","access","maintenanceStatus","description","tags","compatibility"],"properties":{"extensionId":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"kind":{"enum":["business-plugin","mcp-server","agent-skill"]},"publisher":{"type":"object","additionalProperties":false,"required":["publisherId","displayName"],"properties":{"publisherId":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"displayName":{"allOf":[{"type":"string","minLength":1,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},{"type":"string","maxLength":128}]}}},"display":{"type":"object","additionalProperties":false,"required":["locale","name","summary"],"properties":{"locale":{"type":"string","pattern":"^[a-z]{2,3}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}|[0-9]{3}))?$"},"name":{"allOf":[{"type":"string","minLength":1,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},{"type":"string","maxLength":128}]},"summary":{"allOf":[{"type":"string","minLength":1,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},{"type":"string","maxLength":512}]}}},"latestRelease":{"type":"object","additionalProperties":false,"required":["version","channel","publishedAt","manifestDigest","riskTier","security"],"properties":{"version":{"type":"string","pattern":"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"},"channel":{"const":"stable"},"publishedAt":{"type":"string","pattern":"^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\.[0-9]{3}Z$"},"manifestDigest":{"type":"object","additionalProperties":false,"required":["sha256"],"properties":{"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}}},"riskTier":{"enum":["l0","l1","l2","l3"]},"security":{"type":"object","additionalProperties":false,"required":["reviewStatus","scanStatus"],"properties":{"reviewStatus":{"const":"approved"},"scanStatus":{"const":"passed"}}}}},"access":{"type":"object","additionalProperties":false,"required":["visibility","offer"],"properties":{"visibility":{"const":"public"},"offer":{"const":"free"}}},"maintenanceStatus":{"enum":["active","deprecated","unmaintained"]},"description":{"allOf":[{"type":"string","minLength":1,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},{"type":"string","maxLength":8192}]},"tags":{"type":"array","maxItems":16,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,31}$"}},"compatibility":{"type":"object","additionalProperties":false,"required":["happynm","operatingSystems","architectures"],"properties":{"happynm":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[0-9A-Za-z*<>=~^| .+-]+$"},"operatingSystems":{"type":"array","minItems":1,"maxItems":3,"uniqueItems":true,"items":{"enum":["linux","macos","windows"]}},"architectures":{"type":"array","minItems":1,"maxItems":3,"uniqueItems":true,"items":{"enum":["arm64","universal","x64"]}}}}}}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","error"],"properties":{"schemaVersion":{"const":"happynm.extension-service-error/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"error":{"type":"object","additionalProperties":false,"required":["code","status","retryable","userAction"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"userAction":{"enum":["none","fix-request","reduce-request","retry-later","contact-operator"]}}}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","error"],"properties":{"schemaVersion":{"const":"happynm.extension-service-error/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"error":{"type":"object","additionalProperties":false,"required":["code","status","retryable","userAction"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"userAction":{"enum":["none","fix-request","reduce-request","retry-later","contact-operator"]}}}}}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","error"],"properties":{"schemaVersion":{"const":"happynm.extension-service-error/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"error":{"type":"object","additionalProperties":false,"required":["code","status","retryable","userAction"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"userAction":{"enum":["none","fix-request","reduce-request","retry-later","contact-operator"]}}}}}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","error"],"properties":{"schemaVersion":{"const":"happynm.extension-service-error/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"error":{"type":"object","additionalProperties":false,"required":["code","status","retryable","userAction"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"userAction":{"enum":["none","fix-request","reduce-request","retry-later","contact-operator"]}}}}}}}}}}},"/v1/extensions/{extensionId}/access-decision":{"post":{"operationId":"decidePublicFreeExtensionAccess","tags":["Access"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","release","client"],"properties":{"schemaVersion":{"const":"happynm.public-free-access-decision-request/v1alpha1"},"release":{"type":"object","additionalProperties":false,"required":["version","channel"],"properties":{"version":{"type":"string","minLength":5,"maxLength":128,"pattern":"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},"channel":{"const":"stable"}}},"client":{"type":"object","additionalProperties":false,"required":["happynmVersion","operatingSystem","architecture"],"properties":{"happynmVersion":{"type":"string","minLength":5,"maxLength":128,"pattern":"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},"operatingSystem":{"enum":["linux","macos","windows"]},"architecture":{"enum":["arm64","x64"]}}}}}}}},"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"in":"path","name":"extensionId","required":true}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","serviceAuthority","tenantId","extensionId","release","client","decision","nextAction"],"properties":{"schemaVersion":{"const":"happynm.public-free-access-decision/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"serviceAuthority":{"type":"object","additionalProperties":false,"required":["serviceInstanceId","trustDomain","envelopeIssuer"],"properties":{"serviceInstanceId":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"trustDomain":{"type":"string","minLength":1,"maxLength":253,"pattern":"^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)(?:\\.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?))*$"},"envelopeIssuer":{"type":"string","minLength":9,"maxLength":512,"pattern":"^https://[^\\s?#]+(?:/[^\\s?#]*)?$"}}},"tenantId":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"extensionId":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]*$"},"release":{"type":"object","additionalProperties":false,"required":["version","channel"],"properties":{"version":{"type":"string","minLength":5,"maxLength":128,"pattern":"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},"channel":{"const":"stable"}}},"client":{"type":"object","additionalProperties":false,"required":["happynmVersion","operatingSystem","architecture"],"properties":{"happynmVersion":{"type":"string","minLength":5,"maxLength":128,"pattern":"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"},"operatingSystem":{"enum":["linux","macos","windows"]},"architecture":{"enum":["arm64","x64"]}}},"decision":{"type":"object","additionalProperties":false,"required":["outcome","reasonCode","policyVersion","catalogVersion","revocationCheckpoint","evaluatedAt","expiresAt"],"properties":{"outcome":{"enum":["allowed","denied"]},"reasonCode":{"enum":["public-free-eligible","release-not-eligible","client-incompatible"]},"policyVersion":{"type":"integer","minimum":1,"maximum":9007199254740991},"catalogVersion":{"type":"integer","minimum":1,"maximum":9007199254740991},"revocationCheckpoint":{"type":"integer","minimum":0,"maximum":9007199254740991},"evaluatedAt":{"type":"string","pattern":"^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\.[0-9]{3}Z$"},"expiresAt":{"type":"string","pattern":"^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])T(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\\.[0-9]{3}Z$"}}},"nextAction":{"oneOf":[{"const":"prepare-acquisition"},{"type":"null"}]}},"allOf":[{"if":{"type":"object","properties":{"decision":{"type":"object","properties":{"outcome":{"const":"allowed"}},"required":["outcome"]}},"required":["decision"]},"then":{"type":"object","properties":{"decision":{"type":"object","properties":{"reasonCode":{"const":"public-free-eligible"}},"required":["reasonCode"]},"nextAction":{"const":"prepare-acquisition"}}},"else":{"type":"object","properties":{"decision":{"type":"object","properties":{"reasonCode":{"enum":["release-not-eligible","client-incompatible"]}},"required":["reasonCode"]},"nextAction":{"type":"null"}}}}]}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","error"],"properties":{"schemaVersion":{"const":"happynm.extension-service-error/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"error":{"type":"object","additionalProperties":false,"required":["code","status","retryable","userAction"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"userAction":{"enum":["none","fix-request","reduce-request","retry-later","contact-operator"]}}}}}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","error"],"properties":{"schemaVersion":{"const":"happynm.extension-service-error/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"error":{"type":"object","additionalProperties":false,"required":["code","status","retryable","userAction"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"userAction":{"enum":["none","fix-request","reduce-request","retry-later","contact-operator"]}}}}}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","requestId","error"],"properties":{"schemaVersion":{"const":"happynm.extension-service-error/v1alpha1"},"requestId":{"type":"string","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},"error":{"type":"object","additionalProperties":false,"required":["code","status","retryable","userAction"],"properties":{"code":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,63}$"},"status":{"type":"integer","minimum":400,"maximum":599},"retryable":{"type":"boolean"},"userAction":{"enum":["none","fix-request","reduce-request","retry-later","contact-operator"]}}}}}}}}}}},"/openapi.json":{"get":{"operationId":"getOpenApiDocument","tags":["Service Metadata"],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}}}}