@agent-ix/spec-objects-security 0.5.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +2 -0
  2. package/manifest.yaml +270 -26
  3. package/package.json +8 -2
  4. package/schemas/Asset.json +78 -0
  5. package/schemas/AttackSurface.json +55 -0
  6. package/schemas/AuditEvent.json +57 -0
  7. package/schemas/AuditFinding.json +67 -0
  8. package/schemas/AuthFlow.json +69 -0
  9. package/schemas/ConfidentialityLevel.json +13 -0
  10. package/schemas/Control.json +83 -0
  11. package/schemas/ControlEffectiveness.json +12 -0
  12. package/schemas/ControlMapping.json +26 -0
  13. package/schemas/CorsPolicy.json +46 -0
  14. package/schemas/CsrfToken.json +46 -0
  15. package/schemas/DataClassification.json +61 -0
  16. package/schemas/DefaultedField.json +14 -0
  17. package/schemas/EffectivenessField.json +15 -0
  18. package/schemas/EncryptionKey.json +78 -0
  19. package/schemas/FindingStatus.json +14 -0
  20. package/schemas/FlowStep.json +24 -0
  21. package/schemas/IdentityField.json +15 -0
  22. package/schemas/Impact.json +14 -0
  23. package/schemas/ImpactField.json +15 -0
  24. package/schemas/JwtClaim.json +49 -0
  25. package/schemas/LevelField.json +15 -0
  26. package/schemas/Likelihood.json +14 -0
  27. package/schemas/LikelihoodField.json +15 -0
  28. package/schemas/MfaFactorKind.json +12 -0
  29. package/schemas/MfaMethod.json +69 -0
  30. package/schemas/OccurrenceField.json +14 -0
  31. package/schemas/OccurrenceTypeRef.json +15 -0
  32. package/schemas/PasswordPolicy.json +40 -0
  33. package/schemas/Permission.json +49 -0
  34. package/schemas/Policy.json +52 -0
  35. package/schemas/Risk.json +79 -0
  36. package/schemas/Role.json +55 -0
  37. package/schemas/Scope.json +49 -0
  38. package/schemas/Secret.json +78 -0
  39. package/schemas/SecretLifecycle.json +14 -0
  40. package/schemas/SessionConfig.json +43 -0
  41. package/schemas/Severity.json +14 -0
  42. package/schemas/SeverityField.json +15 -0
  43. package/schemas/StatusField.json +15 -0
  44. package/schemas/StrideCategory.json +15 -0
  45. package/schemas/StrideCategoryField.json +15 -0
  46. package/schemas/Threat.json +67 -0
  47. package/schemas/TrustBoundary.json +69 -0
  48. package/schemas/TrustLevel.json +12 -0
  49. package/schemas/TrustLevelField.json +15 -0
  50. package/schemas/Vulnerability.json +70 -0
  51. package/schemas/toolchain.json +97 -0
  52. package/skeletons/asset.md +22 -14
  53. package/skeletons/asset.sysml.md +27 -0
  54. package/skeletons/attack_surface.md +21 -18
  55. package/skeletons/audit_event.md +31 -18
  56. package/skeletons/audit_finding.md +22 -18
  57. package/skeletons/auth_flow.md +56 -21
  58. package/skeletons/control.md +45 -16
  59. package/skeletons/cors_policy.md +33 -17
  60. package/skeletons/csrf_token.md +17 -13
  61. package/skeletons/data_classification.md +23 -18
  62. package/skeletons/encryption_key.md +19 -12
  63. package/skeletons/jwt_claim.md +25 -14
  64. package/skeletons/mfa_method.md +17 -11
  65. package/skeletons/password_policy.md +35 -20
  66. package/skeletons/permission.md +18 -12
  67. package/skeletons/policy.md +33 -17
  68. package/skeletons/risk.md +20 -14
  69. package/skeletons/role.md +20 -13
  70. package/skeletons/scope.md +18 -12
  71. package/skeletons/secret.md +23 -16
  72. package/skeletons/secret.sysml.md +29 -0
  73. package/skeletons/session_config.md +35 -18
  74. package/skeletons/threat.md +22 -11
  75. package/skeletons/threat.sysml.md +26 -0
  76. package/skeletons/trust_boundary.md +51 -16
  77. package/skeletons/vulnerability.md +18 -15
@@ -0,0 +1,24 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/FlowStep.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "name": {
7
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/Identifier.json"
8
+ },
9
+ "actor": {
10
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/Identifier.json"
11
+ },
12
+ "doc": {
13
+ "type": "string"
14
+ }
15
+ },
16
+ "required": [
17
+ "name",
18
+ "actor"
19
+ ],
20
+ "unevaluatedProperties": {
21
+ "not": {}
22
+ },
23
+ "description": "One exchange of an authentication flow, as a human-facing summary."
24
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/IdentityField.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "identity": {
7
+ "type": "boolean",
8
+ "const": true
9
+ }
10
+ },
11
+ "required": [
12
+ "identity"
13
+ ],
14
+ "description": "A `FieldDecl` flagged as identity."
15
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/Impact.json",
4
+ "type": "string",
5
+ "enum": [
6
+ "negligible",
7
+ "minor",
8
+ "moderate",
9
+ "major",
10
+ "severe",
11
+ "unknown"
12
+ ],
13
+ "description": "What a realized risk costs. `unknown` states that it was not assessed."
14
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/ImpactField.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "name": {
7
+ "type": "string",
8
+ "const": "impact"
9
+ }
10
+ },
11
+ "required": [
12
+ "name"
13
+ ],
14
+ "description": "A `FieldDecl` named `impact`."
15
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/JwtClaim.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "fields": {
7
+ "type": "array",
8
+ "items": {
9
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/FieldDecl.json"
10
+ },
11
+ "minItems": 1,
12
+ "contains": {
13
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/IdentityField.json"
14
+ }
15
+ },
16
+ "clauses": {
17
+ "type": "array",
18
+ "items": {
19
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/ClauseRef.json"
20
+ }
21
+ },
22
+ "classification": {
23
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/ConfidentialityLevel.json"
24
+ },
25
+ "issuer": {
26
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/SemanticId.json"
27
+ }
28
+ },
29
+ "required": [
30
+ "fields"
31
+ ],
32
+ "unevaluatedProperties": {
33
+ "not": {}
34
+ },
35
+ "description": "One assertion carried in a token. `operations` is forbidden by the seal.",
36
+ "allOf": [
37
+ {
38
+ "properties": {
39
+ "fields": {
40
+ "items": {
41
+ "not": {
42
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
43
+ }
44
+ }
45
+ }
46
+ }
47
+ }
48
+ ]
49
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/LevelField.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "name": {
7
+ "type": "string",
8
+ "const": "level"
9
+ }
10
+ },
11
+ "required": [
12
+ "name"
13
+ ],
14
+ "description": "A `FieldDecl` named `level`."
15
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/Likelihood.json",
4
+ "type": "string",
5
+ "enum": [
6
+ "rare",
7
+ "unlikely",
8
+ "possible",
9
+ "likely",
10
+ "almost_certain",
11
+ "unknown"
12
+ ],
13
+ "description": "How likely a risk is to be realized. `unknown` states that it was not assessed."
14
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/LikelihoodField.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "name": {
7
+ "type": "string",
8
+ "const": "likelihood"
9
+ }
10
+ },
11
+ "required": [
12
+ "name"
13
+ ],
14
+ "description": "A `FieldDecl` named `likelihood`."
15
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/MfaFactorKind.json",
4
+ "type": "string",
5
+ "enum": [
6
+ "knowledge",
7
+ "possession",
8
+ "inherence",
9
+ "unknown"
10
+ ],
11
+ "description": "Which authentication factor an MFA method is. `unknown` states that it was not classified."
12
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/MfaMethod.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "fields": {
7
+ "type": "array",
8
+ "items": {
9
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/FieldDecl.json"
10
+ },
11
+ "minItems": 1,
12
+ "contains": {
13
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/IdentityField.json"
14
+ }
15
+ },
16
+ "clauses": {
17
+ "type": "array",
18
+ "items": {
19
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/ClauseRef.json"
20
+ }
21
+ },
22
+ "operations": {
23
+ "type": "array",
24
+ "items": {
25
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/OperationDecl.json"
26
+ }
27
+ },
28
+ "factor_kind": {
29
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/MfaFactorKind.json"
30
+ }
31
+ },
32
+ "required": [
33
+ "fields"
34
+ ],
35
+ "unevaluatedProperties": {
36
+ "not": {}
37
+ },
38
+ "description": "An authentication factor a principal can present. Carries no defaulted field.",
39
+ "allOf": [
40
+ {
41
+ "properties": {
42
+ "fields": {
43
+ "items": {
44
+ "not": {
45
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
46
+ }
47
+ }
48
+ }
49
+ }
50
+ },
51
+ {
52
+ "properties": {
53
+ "operations": {
54
+ "items": {
55
+ "properties": {
56
+ "params": {
57
+ "items": {
58
+ "not": {
59
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
60
+ }
61
+ }
62
+ }
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ ]
69
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/OccurrenceField.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "type": {
7
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/OccurrenceTypeRef.json"
8
+ }
9
+ },
10
+ "required": [
11
+ "type"
12
+ ],
13
+ "description": "A `FieldDecl` whose type targets `Timestamp` — the occurrence time an audit event declaration must carry."
14
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/OccurrenceTypeRef.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "target": {
7
+ "type": "string",
8
+ "const": "Timestamp"
9
+ }
10
+ },
11
+ "required": [
12
+ "target"
13
+ ],
14
+ "description": "A `TypeRef` whose target is the kernel `Timestamp` scalar."
15
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/PasswordPolicy.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "clauses": {
7
+ "type": "array",
8
+ "items": {
9
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/ClauseRef.json"
10
+ },
11
+ "minItems": 1
12
+ },
13
+ "fields": {
14
+ "type": "array",
15
+ "items": {
16
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/FieldDecl.json"
17
+ }
18
+ }
19
+ },
20
+ "required": [
21
+ "clauses"
22
+ ],
23
+ "unevaluatedProperties": {
24
+ "not": {}
25
+ },
26
+ "description": "The rules a password must satisfy. `operations` and `relations` are forbidden by the seal.",
27
+ "allOf": [
28
+ {
29
+ "properties": {
30
+ "fields": {
31
+ "items": {
32
+ "not": {
33
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
34
+ }
35
+ }
36
+ }
37
+ }
38
+ }
39
+ ]
40
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/Permission.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "fields": {
7
+ "type": "array",
8
+ "items": {
9
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/FieldDecl.json"
10
+ },
11
+ "minItems": 1,
12
+ "contains": {
13
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/IdentityField.json"
14
+ }
15
+ },
16
+ "clauses": {
17
+ "type": "array",
18
+ "items": {
19
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/ClauseRef.json"
20
+ }
21
+ },
22
+ "resource": {
23
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/SemanticId.json"
24
+ },
25
+ "verb": {
26
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/Identifier.json"
27
+ }
28
+ },
29
+ "required": [
30
+ "fields"
31
+ ],
32
+ "unevaluatedProperties": {
33
+ "not": {}
34
+ },
35
+ "description": "One allowed action on one resource. `operations` and `relations` are forbidden by the seal.",
36
+ "allOf": [
37
+ {
38
+ "properties": {
39
+ "fields": {
40
+ "items": {
41
+ "not": {
42
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
43
+ }
44
+ }
45
+ }
46
+ }
47
+ }
48
+ ]
49
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/Policy.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "clauses": {
7
+ "type": "array",
8
+ "items": {
9
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/ClauseRef.json"
10
+ },
11
+ "minItems": 1
12
+ },
13
+ "fields": {
14
+ "type": "array",
15
+ "items": {
16
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/FieldDecl.json"
17
+ }
18
+ },
19
+ "relations": {
20
+ "type": "array",
21
+ "items": {
22
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/RelationDecl.json"
23
+ }
24
+ },
25
+ "governs": {
26
+ "type": "array",
27
+ "items": {
28
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/SemanticId.json"
29
+ }
30
+ }
31
+ },
32
+ "required": [
33
+ "clauses"
34
+ ],
35
+ "unevaluatedProperties": {
36
+ "not": {}
37
+ },
38
+ "description": "A declarative rule governing access or behaviour. `operations` is forbidden by the seal.",
39
+ "allOf": [
40
+ {
41
+ "properties": {
42
+ "fields": {
43
+ "items": {
44
+ "not": {
45
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
46
+ }
47
+ }
48
+ }
49
+ }
50
+ }
51
+ ]
52
+ }
@@ -0,0 +1,79 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/Risk.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "fields": {
7
+ "type": "array",
8
+ "items": {
9
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/FieldDecl.json"
10
+ },
11
+ "minItems": 1,
12
+ "contains": {
13
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/IdentityField.json"
14
+ }
15
+ },
16
+ "clauses": {
17
+ "type": "array",
18
+ "items": {
19
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/ClauseRef.json"
20
+ }
21
+ },
22
+ "relations": {
23
+ "type": "array",
24
+ "items": {
25
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/RelationDecl.json"
26
+ }
27
+ },
28
+ "likelihood": {
29
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/Likelihood.json"
30
+ },
31
+ "impact": {
32
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/Impact.json"
33
+ },
34
+ "arises_from": {
35
+ "type": "array",
36
+ "items": {
37
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/SemanticId.json"
38
+ }
39
+ }
40
+ },
41
+ "required": [
42
+ "fields"
43
+ ],
44
+ "unevaluatedProperties": {
45
+ "not": {}
46
+ },
47
+ "description": "A scored exposure. Both axes are stated as rows, never inferred.",
48
+ "allOf": [
49
+ {
50
+ "properties": {
51
+ "fields": {
52
+ "contains": {
53
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/LikelihoodField.json"
54
+ }
55
+ }
56
+ }
57
+ },
58
+ {
59
+ "properties": {
60
+ "fields": {
61
+ "contains": {
62
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/ImpactField.json"
63
+ }
64
+ }
65
+ }
66
+ },
67
+ {
68
+ "properties": {
69
+ "fields": {
70
+ "items": {
71
+ "not": {
72
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
73
+ }
74
+ }
75
+ }
76
+ }
77
+ }
78
+ ]
79
+ }
@@ -0,0 +1,55 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/Role.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "fields": {
7
+ "type": "array",
8
+ "items": {
9
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/FieldDecl.json"
10
+ },
11
+ "minItems": 1,
12
+ "contains": {
13
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/IdentityField.json"
14
+ }
15
+ },
16
+ "relations": {
17
+ "type": "array",
18
+ "items": {
19
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/RelationDecl.json"
20
+ }
21
+ },
22
+ "clauses": {
23
+ "type": "array",
24
+ "items": {
25
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/ClauseRef.json"
26
+ }
27
+ },
28
+ "grants": {
29
+ "type": "array",
30
+ "items": {
31
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/SemanticId.json"
32
+ }
33
+ }
34
+ },
35
+ "required": [
36
+ "fields"
37
+ ],
38
+ "unevaluatedProperties": {
39
+ "not": {}
40
+ },
41
+ "description": "A named bundle of grants. `operations` is forbidden by the seal: a role is a grant set, not behaviour.",
42
+ "allOf": [
43
+ {
44
+ "properties": {
45
+ "fields": {
46
+ "items": {
47
+ "not": {
48
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
49
+ }
50
+ }
51
+ }
52
+ }
53
+ }
54
+ ]
55
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/Scope.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "fields": {
7
+ "type": "array",
8
+ "items": {
9
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/FieldDecl.json"
10
+ },
11
+ "minItems": 1,
12
+ "contains": {
13
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/IdentityField.json"
14
+ }
15
+ },
16
+ "clauses": {
17
+ "type": "array",
18
+ "items": {
19
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/ClauseRef.json"
20
+ }
21
+ },
22
+ "includes": {
23
+ "type": "array",
24
+ "items": {
25
+ "$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/SemanticId.json"
26
+ }
27
+ }
28
+ },
29
+ "required": [
30
+ "fields"
31
+ ],
32
+ "unevaluatedProperties": {
33
+ "not": {}
34
+ },
35
+ "description": "A named permission boundary on a grant. `operations` and `relations` are forbidden by the seal.",
36
+ "allOf": [
37
+ {
38
+ "properties": {
39
+ "fields": {
40
+ "items": {
41
+ "not": {
42
+ "$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
43
+ }
44
+ }
45
+ }
46
+ }
47
+ }
48
+ ]
49
+ }