{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://quantumsoftware.tech/schemas/nm-package-publication-policy-0.1.schema.json","title":"N/M Package Publication Policy 0.1","type":"object","additionalProperties":false,"required":["format","version","decision","allowedLicenses","namespaces","stagingEvidence"],"properties":{"format":{"const":"nm-package-publication-policy"},"version":{"const":"0.1"},"decision":{"type":"object","additionalProperties":false,"required":["id","decidedBy","decidedAt","rationale"],"properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{2,127}$","minLength":3,"maxLength":128},"decidedBy":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:@-]{2,127}$","minLength":3,"maxLength":128},"decidedAt":{"type":"string","format":"date-time"},"rationale":{"type":"string","minLength":20,"maxLength":1000}}},"allowedLicenses":{"type":"array","minItems":1,"maxItems":32,"uniqueItems":true,"items":{"type":"string","pattern":"^[A-Za-z0-9.+-]+(?:\\s+(?:AND|OR|WITH)\\s+[A-Za-z0-9.+-]+)*$","minLength":2,"maxLength":128}},"namespaces":{"type":"array","minItems":1,"maxItems":32,"items":{"type":"object","additionalProperties":false,"required":["namespace","publishers"],"properties":{"namespace":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,31}$","minLength":1,"maxLength":32},"publishers":{"type":"array","minItems":1,"maxItems":32,"items":{"type":"object","additionalProperties":false,"required":["publisherId","signingKeyIds"],"properties":{"publisherId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:@-]{2,127}$","minLength":3,"maxLength":128},"signingKeyIds":{"type":"array","minItems":1,"maxItems":16,"uniqueItems":true,"items":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{2,127}$","minLength":3,"maxLength":128}}}}}}}},"stagingEvidence":{"type":"object","additionalProperties":false,"required":["candidateSha","environment","deploymentId","verifiedAt","reviewedBy","artifactSha256"],"properties":{"candidateSha":{"type":"string","pattern":"^[0-9a-f]{40}$"},"environment":{"const":"staging"},"deploymentId":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{2,127}$","minLength":3,"maxLength":128},"verifiedAt":{"type":"string","format":"date-time"},"reviewedBy":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:@-]{2,127}$","minLength":3,"maxLength":128},"artifactSha256":{"type":"string","pattern":"^[0-9a-f]{64}$"}}}}}