@dharma-ai-labs/agent-fabric 0.2.209 → 0.2.210
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.
- package/dist/bin.js +2 -2
- package/dist/bin.js.map +1 -1
- package/dist/bootstrapHostScope.test.js +1 -1
- package/dist/bootstrapHostScope.test.js.map +1 -1
- package/dist/bootstrapProcessCaller.test.js +1 -0
- package/dist/bootstrapProcessCaller.test.js.map +1 -1
- package/dist/bootstrapVaultScope.test.js +25 -1
- package/dist/bootstrapVaultScope.test.js.map +1 -1
- package/dist/codexBoundSession.d.ts +59 -0
- package/dist/codexBoundSession.d.ts.map +1 -1
- package/dist/codexBoundSession.js +140 -1
- package/dist/codexBoundSession.js.map +1 -1
- package/dist/codexInboxSession.d.ts +1 -1
- package/dist/codexInboxSession.d.ts.map +1 -1
- package/dist/codexRecoveryController.test.d.ts +2 -0
- package/dist/codexRecoveryController.test.d.ts.map +1 -0
- package/dist/codexRecoveryController.test.js +295 -0
- package/dist/codexRecoveryController.test.js.map +1 -0
- package/dist/codexScopedDispatch.test.js +2 -1
- package/dist/codexScopedDispatch.test.js.map +1 -1
- package/dist/codexSetupChildProvider.test.js +20 -0
- package/dist/codexSetupChildProvider.test.js.map +1 -1
- package/dist/codexSetupNativeHost.test.js +2 -1
- package/dist/codexSetupNativeHost.test.js.map +1 -1
- package/dist/codexSetupSessionCaller.test.js +1 -0
- package/dist/codexSetupSessionCaller.test.js.map +1 -1
- package/dist/codexSigningRecoveryNativeHost.d.ts +50 -0
- package/dist/codexSigningRecoveryNativeHost.d.ts.map +1 -0
- package/dist/codexSigningRecoveryNativeHost.js +186 -0
- package/dist/codexSigningRecoveryNativeHost.js.map +1 -0
- package/dist/codexSigningRecoveryNativeHost.test.d.ts +2 -0
- package/dist/codexSigningRecoveryNativeHost.test.d.ts.map +1 -0
- package/dist/codexSigningRecoveryNativeHost.test.js +475 -0
- package/dist/codexSigningRecoveryNativeHost.test.js.map +1 -0
- package/dist/codexSigningRecoveryTool.d.ts +25 -0
- package/dist/codexSigningRecoveryTool.d.ts.map +1 -0
- package/dist/codexSigningRecoveryTool.js +24 -0
- package/dist/codexSigningRecoveryTool.js.map +1 -0
- package/dist/containerRelayLifecycle.d.ts +1 -1
- package/dist/cooperativeInboxSession.d.ts +1 -1
- package/dist/demoPackage.d.ts +1 -1
- package/dist/demoWatchControl.d.ts +6 -6
- package/dist/deviceSigningMaintenanceController.d.ts +35 -0
- package/dist/deviceSigningMaintenanceController.d.ts.map +1 -0
- package/dist/deviceSigningMaintenanceController.js +197 -0
- package/dist/deviceSigningMaintenanceController.js.map +1 -0
- package/dist/deviceSigningMaintenanceController.test.d.ts +2 -0
- package/dist/deviceSigningMaintenanceController.test.d.ts.map +1 -0
- package/dist/deviceSigningMaintenanceController.test.js +67 -0
- package/dist/deviceSigningMaintenanceController.test.js.map +1 -0
- package/dist/deviceSigningMaintenanceFlow.test.d.ts +2 -0
- package/dist/deviceSigningMaintenanceFlow.test.d.ts.map +1 -0
- package/dist/deviceSigningMaintenanceFlow.test.js +196 -0
- package/dist/deviceSigningMaintenanceFlow.test.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +609 -466
- package/dist/index.js.map +1 -1
- package/dist/legacySigningMaintenanceBoundary.d.ts +14 -0
- package/dist/legacySigningMaintenanceBoundary.d.ts.map +1 -0
- package/dist/legacySigningMaintenanceBoundary.js +128 -0
- package/dist/legacySigningMaintenanceBoundary.js.map +1 -0
- package/dist/legacySigningMaintenanceBoundary.test.d.ts +2 -0
- package/dist/legacySigningMaintenanceBoundary.test.d.ts.map +1 -0
- package/dist/legacySigningMaintenanceBoundary.test.js +109 -0
- package/dist/legacySigningMaintenanceBoundary.test.js.map +1 -0
- package/dist/namedCodexThread.d.ts.map +1 -1
- package/dist/namedCodexThread.js +3 -1
- package/dist/namedCodexThread.js.map +1 -1
- package/dist/namedCodexThread.test.js +17 -1
- package/dist/namedCodexThread.test.js.map +1 -1
- package/dist/namedSessionMaintenance.d.ts +1 -1
- package/dist/namedSessionStartupFence.test.d.ts +2 -0
- package/dist/namedSessionStartupFence.test.d.ts.map +1 -0
- package/dist/namedSessionStartupFence.test.js +81 -0
- package/dist/namedSessionStartupFence.test.js.map +1 -0
- package/dist/providerSessionReplyRecovery.d.ts +1 -1
- package/dist/relayRuntimeUpgrade.d.ts +1 -1
- package/dist/schemas/codex-signing-recovery-native-progress.schema.json +16 -0
- package/dist/schemas/device-enrollment-recovery-journal.schema.json +20 -0
- package/dist/schemas/device-signing-maintenance-challenge.schema.json +185 -0
- package/dist/schemas/device-signing-maintenance-completion.schema.json +98 -0
- package/dist/schemas/device-signing-maintenance-context-request.schema.json +68 -0
- package/dist/schemas/device-signing-maintenance-context.schema.json +137 -0
- package/dist/schemas/device-signing-maintenance-control.schema.json +12 -0
- package/dist/schemas/device-signing-maintenance-controller-progress.schema.json +26 -0
- package/dist/schemas/device-signing-maintenance-delivery-request.schema.json +45 -0
- package/dist/schemas/device-signing-maintenance-host-progress.schema.json +121 -0
- package/dist/schemas/device-signing-maintenance-plan.schema.json +136 -0
- package/dist/schemas/device-signing-maintenance-preparation.schema.json +56 -0
- package/dist/schemas/device-signing-recovery-candidate.schema.json +28 -0
- package/dist/schemas/device-signing-recovery-challenge.schema.json +52 -0
- package/dist/schemas/device-signing-recovery-completion.schema.json +23 -0
- package/dist/schemas/device-signing-recovery-delivery-request.schema.json +16 -0
- package/dist/schemas/device-signing-recovery-delivery.schema.json +22 -0
- package/dist/schemas/device-signing-recovery-host-progress.schema.json +28 -0
- package/dist/schemas/device-signing-recovery-offer-progress.schema.json +32 -0
- package/dist/schemas/device-signing-recovery-offer-read-request.schema.json +16 -0
- package/dist/schemas/device-signing-recovery-offer-registration-receipt.schema.json +16 -0
- package/dist/schemas/device-signing-recovery-offer-registration-request.schema.json +18 -0
- package/dist/schemas/device-signing-recovery-offer-response.schema.json +43 -0
- package/dist/schemas/device-signing-recovery-plan.schema.json +40 -0
- package/dist/schemas/device-signing-recovery-preparation.schema.json +23 -0
- package/dist/schemas/provider-session-recovery-declaration.schema.json +21 -0
- package/dist/signingMaintenanceCohort.test.d.ts +2 -0
- package/dist/signingMaintenanceCohort.test.d.ts.map +1 -0
- package/dist/signingMaintenanceCohort.test.js +55 -0
- package/dist/signingMaintenanceCohort.test.js.map +1 -0
- package/dist/usage.d.ts.map +1 -1
- package/dist/usage.js +3 -2
- package/dist/usage.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.dharma-ai.io/device-signing-maintenance-host-progress/v1",
|
|
4
|
+
"title": "Device trust maintenance host-progress; not native continuation",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schema",
|
|
9
|
+
"organizationId",
|
|
10
|
+
"deviceId",
|
|
11
|
+
"preparationId",
|
|
12
|
+
"state",
|
|
13
|
+
"expiresAt",
|
|
14
|
+
"clientTrustInstalled",
|
|
15
|
+
"ready",
|
|
16
|
+
"disposition",
|
|
17
|
+
"authorityKind",
|
|
18
|
+
"nativeContinuationAuthorized"
|
|
19
|
+
],
|
|
20
|
+
"properties": {
|
|
21
|
+
"schema": {
|
|
22
|
+
"const": "dharma.device-signing-maintenance-host-progress/v1"
|
|
23
|
+
},
|
|
24
|
+
"organizationId": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"maxLength": 128,
|
|
27
|
+
"pattern": "^org_[A-Za-z0-9]+$"
|
|
28
|
+
},
|
|
29
|
+
"deviceId": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"format": "uuid"
|
|
32
|
+
},
|
|
33
|
+
"preparationId": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"format": "uuid"
|
|
36
|
+
},
|
|
37
|
+
"recoveryId": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"format": "uuid"
|
|
40
|
+
},
|
|
41
|
+
"approvalId": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"format": "uuid"
|
|
44
|
+
},
|
|
45
|
+
"state": {
|
|
46
|
+
"enum": [
|
|
47
|
+
"prepared",
|
|
48
|
+
"awaiting_browser_offer",
|
|
49
|
+
"pending_approval",
|
|
50
|
+
"submission_unconfirmed",
|
|
51
|
+
"offer_unconfirmed",
|
|
52
|
+
"delivery_unconfirmed",
|
|
53
|
+
"failed",
|
|
54
|
+
"trust_installed"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"expiresAt": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"format": "date-time"
|
|
60
|
+
},
|
|
61
|
+
"clientTrustInstalled": {
|
|
62
|
+
"type": "boolean"
|
|
63
|
+
},
|
|
64
|
+
"ready": {
|
|
65
|
+
"const": false
|
|
66
|
+
},
|
|
67
|
+
"disposition": {
|
|
68
|
+
"const": "owned_host_progress_not_onboarding_ready"
|
|
69
|
+
},
|
|
70
|
+
"authorityKind": {
|
|
71
|
+
"const": "device_trust_maintenance"
|
|
72
|
+
},
|
|
73
|
+
"nativeContinuationAuthorized": {
|
|
74
|
+
"const": false
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"allOf": [
|
|
78
|
+
{
|
|
79
|
+
"if": {
|
|
80
|
+
"properties": {
|
|
81
|
+
"state": {
|
|
82
|
+
"enum": [
|
|
83
|
+
"pending_approval",
|
|
84
|
+
"delivery_unconfirmed",
|
|
85
|
+
"trust_installed"
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"then": {
|
|
91
|
+
"required": [
|
|
92
|
+
"recoveryId",
|
|
93
|
+
"approvalId"
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"if": {
|
|
99
|
+
"properties": {
|
|
100
|
+
"state": {
|
|
101
|
+
"const": "trust_installed"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"then": {
|
|
106
|
+
"properties": {
|
|
107
|
+
"clientTrustInstalled": {
|
|
108
|
+
"const": true
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"else": {
|
|
113
|
+
"properties": {
|
|
114
|
+
"clientTrustInstalled": {
|
|
115
|
+
"const": false
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.dharma-ai.io/device-signing-maintenance-plan/v1",
|
|
4
|
+
"title": "Existing-device signing maintenance plan; no native continuation authority",
|
|
5
|
+
"$comment": "Distinct device-maintenance origin. Device possession, both fresh browser consents, current member/device/source, independent configured-key provenance, publication CAS and protected installation remain separate and mandatory. Native session liveness or execution is not asserted.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schema",
|
|
10
|
+
"planId",
|
|
11
|
+
"authority",
|
|
12
|
+
"preparedAt",
|
|
13
|
+
"expiresAt",
|
|
14
|
+
"origin",
|
|
15
|
+
"issuer",
|
|
16
|
+
"audience",
|
|
17
|
+
"organizationId",
|
|
18
|
+
"recipientMembershipId",
|
|
19
|
+
"deviceId",
|
|
20
|
+
"installationId",
|
|
21
|
+
"workspaceId",
|
|
22
|
+
"publicKeyEd25519",
|
|
23
|
+
"repositoryFingerprint",
|
|
24
|
+
"policyRevision",
|
|
25
|
+
"scopeDigest",
|
|
26
|
+
"contractDigest",
|
|
27
|
+
"sourceSelectionDigest",
|
|
28
|
+
"controllerBindingDigest",
|
|
29
|
+
"previousAnchorHash",
|
|
30
|
+
"protectedConfigDigest",
|
|
31
|
+
"previousGeneration",
|
|
32
|
+
"previousKeysetHash",
|
|
33
|
+
"previousRootFingerprint"
|
|
34
|
+
],
|
|
35
|
+
"properties": {
|
|
36
|
+
"schema": {
|
|
37
|
+
"const": "dharma.device-signing-maintenance-plan/v1"
|
|
38
|
+
},
|
|
39
|
+
"planId": {
|
|
40
|
+
"$ref": "#/$defs/uuid"
|
|
41
|
+
},
|
|
42
|
+
"authority": {
|
|
43
|
+
"const": "local_context_only_not_recovery_authorization"
|
|
44
|
+
},
|
|
45
|
+
"preparedAt": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"format": "date-time"
|
|
48
|
+
},
|
|
49
|
+
"expiresAt": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"format": "date-time"
|
|
52
|
+
},
|
|
53
|
+
"origin": {
|
|
54
|
+
"type": "string",
|
|
55
|
+
"maxLength": 256,
|
|
56
|
+
"format": "uri",
|
|
57
|
+
"pattern": "^https://[^/@?#\\s]+$(?![\\s\\S])"
|
|
58
|
+
},
|
|
59
|
+
"issuer": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"maxLength": 256,
|
|
62
|
+
"format": "uri",
|
|
63
|
+
"pattern": "^https://[^/@?#\\s]+$(?![\\s\\S])"
|
|
64
|
+
},
|
|
65
|
+
"audience": {
|
|
66
|
+
"const": "dharma.agent-fabric.signing-maintenance/v1"
|
|
67
|
+
},
|
|
68
|
+
"organizationId": {
|
|
69
|
+
"type": "string",
|
|
70
|
+
"maxLength": 256,
|
|
71
|
+
"pattern": "^org_[A-Za-z0-9]+$(?![\\s\\S])"
|
|
72
|
+
},
|
|
73
|
+
"recipientMembershipId": {
|
|
74
|
+
"$ref": "#/$defs/uuid"
|
|
75
|
+
},
|
|
76
|
+
"deviceId": {
|
|
77
|
+
"$ref": "#/$defs/uuid"
|
|
78
|
+
},
|
|
79
|
+
"installationId": {
|
|
80
|
+
"$ref": "#/$defs/uuid"
|
|
81
|
+
},
|
|
82
|
+
"workspaceId": {
|
|
83
|
+
"$ref": "#/$defs/uuid"
|
|
84
|
+
},
|
|
85
|
+
"publicKeyEd25519": {
|
|
86
|
+
"type": "string",
|
|
87
|
+
"pattern": "^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$(?![\\s\\S])"
|
|
88
|
+
},
|
|
89
|
+
"repositoryFingerprint": {
|
|
90
|
+
"$ref": "#/$defs/digest"
|
|
91
|
+
},
|
|
92
|
+
"policyRevision": {
|
|
93
|
+
"type": "string",
|
|
94
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$(?![\\s\\S])"
|
|
95
|
+
},
|
|
96
|
+
"scopeDigest": {
|
|
97
|
+
"$ref": "#/$defs/digest"
|
|
98
|
+
},
|
|
99
|
+
"contractDigest": {
|
|
100
|
+
"$ref": "#/$defs/digest"
|
|
101
|
+
},
|
|
102
|
+
"sourceSelectionDigest": {
|
|
103
|
+
"$ref": "#/$defs/digest"
|
|
104
|
+
},
|
|
105
|
+
"controllerBindingDigest": {
|
|
106
|
+
"$ref": "#/$defs/digest"
|
|
107
|
+
},
|
|
108
|
+
"previousAnchorHash": {
|
|
109
|
+
"$ref": "#/$defs/digest"
|
|
110
|
+
},
|
|
111
|
+
"protectedConfigDigest": {
|
|
112
|
+
"$ref": "#/$defs/digest"
|
|
113
|
+
},
|
|
114
|
+
"previousGeneration": {
|
|
115
|
+
"type": "integer",
|
|
116
|
+
"minimum": 1,
|
|
117
|
+
"maximum": 9007199254740991
|
|
118
|
+
},
|
|
119
|
+
"previousKeysetHash": {
|
|
120
|
+
"$ref": "#/$defs/digest"
|
|
121
|
+
},
|
|
122
|
+
"previousRootFingerprint": {
|
|
123
|
+
"$ref": "#/$defs/digest"
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"$defs": {
|
|
127
|
+
"uuid": {
|
|
128
|
+
"type": "string",
|
|
129
|
+
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$(?![\\s\\S])"
|
|
130
|
+
},
|
|
131
|
+
"digest": {
|
|
132
|
+
"type": "string",
|
|
133
|
+
"pattern": "^sha256:[a-f0-9]{64}$(?![\\s\\S])"
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.dharma-ai.io/device-signing-maintenance-preparation/v1",
|
|
4
|
+
"title": "Existing-device signing maintenance preparation; no native continuation authority",
|
|
5
|
+
"$comment": "Distinct device-maintenance origin. Device possession, both fresh browser consents, current member/device/source, independent configured-key provenance, publication CAS and protected installation remain separate and mandatory. Native session liveness or execution is not asserted.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schema",
|
|
10
|
+
"purpose",
|
|
11
|
+
"method",
|
|
12
|
+
"path",
|
|
13
|
+
"plan",
|
|
14
|
+
"historicalKeysetCanonical",
|
|
15
|
+
"historicalRootPublicKey",
|
|
16
|
+
"credentialEncryptionPublicKey",
|
|
17
|
+
"nonce"
|
|
18
|
+
],
|
|
19
|
+
"properties": {
|
|
20
|
+
"schema": {
|
|
21
|
+
"const": "dharma.device-signing-maintenance-preparation/v1"
|
|
22
|
+
},
|
|
23
|
+
"purpose": {
|
|
24
|
+
"const": "prepare_expired_signing_trust_recovery"
|
|
25
|
+
},
|
|
26
|
+
"method": {
|
|
27
|
+
"const": "POST"
|
|
28
|
+
},
|
|
29
|
+
"path": {
|
|
30
|
+
"const": "/api/v1/agent-fabric/signing-recovery/preparations"
|
|
31
|
+
},
|
|
32
|
+
"plan": {
|
|
33
|
+
"$ref": "https://schemas.dharma-ai.io/device-signing-maintenance-plan/v1"
|
|
34
|
+
},
|
|
35
|
+
"historicalKeysetCanonical": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"minLength": 2,
|
|
38
|
+
"maxLength": 16384
|
|
39
|
+
},
|
|
40
|
+
"historicalRootPublicKey": {
|
|
41
|
+
"$ref": "#/$defs/bytes32"
|
|
42
|
+
},
|
|
43
|
+
"credentialEncryptionPublicKey": {
|
|
44
|
+
"$ref": "#/$defs/bytes32"
|
|
45
|
+
},
|
|
46
|
+
"nonce": {
|
|
47
|
+
"$ref": "#/$defs/bytes32"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"$defs": {
|
|
51
|
+
"bytes32": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"pattern": "^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$(?![\\s\\S])"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.dharma-ai.io/device-signing-recovery-candidate/v1",
|
|
4
|
+
"title": "Public candidate and publication evidence, not installation authority",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schema", "organizationId", "recoveryId", "approvalId", "keysetCanonical", "rootPublicKey", "publication"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": {"const": "dharma.device-signing-recovery-candidate/v1"},
|
|
10
|
+
"organizationId": {"type": "string", "pattern": "^org_[A-Za-z0-9]+$(?![\\s\\S])", "maxLength": 200},
|
|
11
|
+
"recoveryId": {"type": "string", "format": "uuid", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$(?![\\s\\S])"},
|
|
12
|
+
"approvalId": {"type": "string", "format": "uuid", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$(?![\\s\\S])"},
|
|
13
|
+
"keysetCanonical": {"type": "string", "minLength": 1, "maxLength": 16384},
|
|
14
|
+
"rootPublicKey": {"type": "string", "pattern": "^[A-Za-z0-9_-]{43}$(?![\\s\\S])"},
|
|
15
|
+
"publication": {
|
|
16
|
+
"type": "object", "additionalProperties": false,
|
|
17
|
+
"required": ["schema", "organizationId", "recoveryId", "generation", "artifactHash", "publishedAt"],
|
|
18
|
+
"properties": {
|
|
19
|
+
"schema": {"const": "dharma.signing-recovery-publication/v1"},
|
|
20
|
+
"organizationId": {"type": "string", "pattern": "^org_[A-Za-z0-9]+$(?![\\s\\S])", "maxLength": 200},
|
|
21
|
+
"recoveryId": {"type": "string", "format": "uuid", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$(?![\\s\\S])"},
|
|
22
|
+
"generation": {"type": "integer", "minimum": 1, "maximum": 9007199254740991},
|
|
23
|
+
"artifactHash": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$(?![\\s\\S])"},
|
|
24
|
+
"publishedAt": {"type": "string", "format": "date-time"}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.dharma-ai.io/device-signing-recovery-challenge/v1",
|
|
4
|
+
"title": "Public device signing recovery proof; not consent or trust-installation authority",
|
|
5
|
+
"$comment": "Runtime validation additionally enforces canonical HTTPS origin/encoding/timestamps, matching expected context, strictly increasing generation, changed artifact and a live window no longer than 15 minutes. Server approval, provenance and replay fencing are separate.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["schema", "origin", "issuer", "audience", "recoveryId", "approvalId", "organizationId", "recipientMembershipId", "deviceId", "installationId", "workspaceId", "publicKeyEd25519", "credentialEncryptionPublicKey", "repositoryFingerprint", "policyRevision", "scopeDigest", "contractDigest", "sourceSelectionDigest", "nativeSessionBindingDigest", "previousAnchorHash", "protectedConfigDigest", "previousGeneration", "previousKeysetHash", "previousRootFingerprint", "candidateGeneration", "candidateKeysetHash", "candidateRootFingerprint", "candidateKeyVersionFingerprint", "purpose", "method", "path", "nonce", "issuedAt", "expiresAt", "authenticator"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"schema": {"const": "dharma.device-signing-recovery-challenge/v1"},
|
|
11
|
+
"origin": {"type": "string", "maxLength": 256, "format": "uri", "pattern": "^https://[^/@?#\\s]+$"},
|
|
12
|
+
"issuer": {"type": "string", "maxLength": 256, "format": "uri", "pattern": "^https://[^/@?#\\s]+$"},
|
|
13
|
+
"audience": {"const": "dharma.agent-fabric.signing-recovery/v1"},
|
|
14
|
+
"recoveryId": {"$ref": "#/$defs/uuid"},
|
|
15
|
+
"approvalId": {"$ref": "#/$defs/uuid"},
|
|
16
|
+
"organizationId": {"type": "string", "maxLength": 256, "pattern": "^org_[A-Za-z0-9]+$"},
|
|
17
|
+
"recipientMembershipId": {"$ref": "#/$defs/uuid"},
|
|
18
|
+
"deviceId": {"$ref": "#/$defs/uuid"},
|
|
19
|
+
"installationId": {"$ref": "#/$defs/uuid"},
|
|
20
|
+
"workspaceId": {"$ref": "#/$defs/uuid"},
|
|
21
|
+
"publicKeyEd25519": {"$ref": "#/$defs/bytes32"},
|
|
22
|
+
"credentialEncryptionPublicKey": {"$ref": "#/$defs/bytes32"},
|
|
23
|
+
"repositoryFingerprint": {"$ref": "#/$defs/digest"},
|
|
24
|
+
"policyRevision": {"type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"},
|
|
25
|
+
"scopeDigest": {"$ref": "#/$defs/digest"},
|
|
26
|
+
"contractDigest": {"$ref": "#/$defs/digest"},
|
|
27
|
+
"sourceSelectionDigest": {"$ref": "#/$defs/digest"},
|
|
28
|
+
"nativeSessionBindingDigest": {"$ref": "#/$defs/digest"},
|
|
29
|
+
"previousAnchorHash": {"$ref": "#/$defs/digest"},
|
|
30
|
+
"protectedConfigDigest": {"$ref": "#/$defs/digest"},
|
|
31
|
+
"previousGeneration": {"$ref": "#/$defs/generation"},
|
|
32
|
+
"previousKeysetHash": {"$ref": "#/$defs/digest"},
|
|
33
|
+
"previousRootFingerprint": {"$ref": "#/$defs/digest"},
|
|
34
|
+
"candidateGeneration": {"$ref": "#/$defs/generation"},
|
|
35
|
+
"candidateKeysetHash": {"$ref": "#/$defs/digest"},
|
|
36
|
+
"candidateRootFingerprint": {"$ref": "#/$defs/digest"},
|
|
37
|
+
"candidateKeyVersionFingerprint": {"$ref": "#/$defs/digest"},
|
|
38
|
+
"purpose": {"const": "expired_signing_trust_reapproval"},
|
|
39
|
+
"method": {"const": "POST"},
|
|
40
|
+
"path": {"const": "/api/v1/agent-fabric/signing-recovery"},
|
|
41
|
+
"nonce": {"$ref": "#/$defs/bytes32"},
|
|
42
|
+
"issuedAt": {"type": "string", "format": "date-time", "maxLength": 256},
|
|
43
|
+
"expiresAt": {"type": "string", "format": "date-time", "maxLength": 256},
|
|
44
|
+
"authenticator": {"$ref": "#/$defs/bytes32"}
|
|
45
|
+
},
|
|
46
|
+
"$defs": {
|
|
47
|
+
"uuid": {"type": "string", "format": "uuid", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"},
|
|
48
|
+
"bytes32": {"type": "string", "pattern": "^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$"},
|
|
49
|
+
"digest": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$"},
|
|
50
|
+
"generation": {"type": "integer", "minimum": 1, "maximum": 9007199254740991}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.dharma-ai.io/device-signing-recovery-completion/v1",
|
|
4
|
+
"title": "Trust installation receipt, not customer readiness",
|
|
5
|
+
"type": "object", "additionalProperties": false,
|
|
6
|
+
"required": ["schema", "organizationId", "deviceId", "installationId", "workspaceId", "recoveryId", "approvalId", "generation", "keysetHash", "rootFingerprint", "publicationArtifactHash", "observedAt", "connectionMode", "ready", "disposition"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schema": {"const": "dharma.device-signing-recovery-completion/v1"},
|
|
9
|
+
"organizationId": {"type": "string", "pattern": "^org_[A-Za-z0-9]+$(?![\\s\\S])", "maxLength": 200},
|
|
10
|
+
"deviceId": {"$ref": "#/$defs/uuid"}, "installationId": {"$ref": "#/$defs/uuid"},
|
|
11
|
+
"workspaceId": {"$ref": "#/$defs/uuid"}, "recoveryId": {"$ref": "#/$defs/uuid"}, "approvalId": {"$ref": "#/$defs/uuid"},
|
|
12
|
+
"generation": {"type": "integer", "minimum": 1, "maximum": 9007199254740991},
|
|
13
|
+
"keysetHash": {"$ref": "#/$defs/digest"}, "rootFingerprint": {"$ref": "#/$defs/digest"},
|
|
14
|
+
"publicationArtifactHash": {"$ref": "#/$defs/digest"},
|
|
15
|
+
"observedAt": {"type": "string", "format": "date-time"},
|
|
16
|
+
"connectionMode": {"enum": ["manual", "resume"]},
|
|
17
|
+
"ready": {"const": false}, "disposition": {"const": "signing_trust_installed_not_onboarding_ready"}
|
|
18
|
+
},
|
|
19
|
+
"$defs": {
|
|
20
|
+
"uuid": {"type": "string", "format": "uuid", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$(?![\\s\\S])"},
|
|
21
|
+
"digest": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$(?![\\s\\S])"}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.dharma-ai.io/device-signing-recovery-delivery-request/v1",
|
|
4
|
+
"title": "Existing device possession request for exact approved recovery delivery",
|
|
5
|
+
"type": "object", "additionalProperties": false,
|
|
6
|
+
"required": ["schema", "action", "organizationId", "recoveryId", "approvalId", "signature"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schema": {"const": "dharma.device-signing-recovery-delivery-request/v1"},
|
|
9
|
+
"action": {"const": "delivery"},
|
|
10
|
+
"organizationId": {"type": "string", "pattern": "^org_[A-Za-z0-9]+$(?![\\s\\S])", "maxLength": 200},
|
|
11
|
+
"recoveryId": {"$ref": "#/$defs/uuid"},
|
|
12
|
+
"approvalId": {"$ref": "#/$defs/uuid"},
|
|
13
|
+
"signature": {"type": "string", "pattern": "^[A-Za-z0-9_-]{86}$(?![\\s\\S])"}
|
|
14
|
+
},
|
|
15
|
+
"$defs": {"uuid": {"type": "string", "format": "uuid", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$(?![\\s\\S])"}}
|
|
16
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.dharma-ai.io/device-signing-recovery-delivery/v1",
|
|
4
|
+
"title": "Encrypted device signing recovery delivery, not installation authority",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schema", "organizationId", "recoveryId", "approvalId", "deviceId", "issuedAt", "expiresAt", "ephemeralPublicKey", "iv", "ciphertext", "tag", "contextDigest"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": {"const": "dharma.device-signing-recovery-delivery/v1"},
|
|
10
|
+
"organizationId": {"type": "string", "pattern": "^org_[A-Za-z0-9]+$(?![\\s\\S])", "maxLength": 200},
|
|
11
|
+
"recoveryId": {"type": "string", "format": "uuid", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$(?![\\s\\S])"},
|
|
12
|
+
"approvalId": {"type": "string", "format": "uuid", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$(?![\\s\\S])"},
|
|
13
|
+
"deviceId": {"type": "string", "format": "uuid", "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$(?![\\s\\S])"},
|
|
14
|
+
"issuedAt": {"type": "string", "format": "date-time"},
|
|
15
|
+
"expiresAt": {"type": "string", "format": "date-time"},
|
|
16
|
+
"ephemeralPublicKey": {"type": "string", "pattern": "^[A-Za-z0-9_-]{43}$(?![\\s\\S])"},
|
|
17
|
+
"iv": {"type": "string", "pattern": "^[A-Za-z0-9_-]{16}$(?![\\s\\S])"},
|
|
18
|
+
"ciphertext": {"type": "string", "pattern": "^[A-Za-z0-9_-]+$(?![\\s\\S])", "minLength": 1, "maxLength": 43691},
|
|
19
|
+
"tag": {"type": "string", "pattern": "^[A-Za-z0-9_-]{22}$(?![\\s\\S])"},
|
|
20
|
+
"contextDigest": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$(?![\\s\\S])"}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.dharma-ai.io/device-signing-recovery-host-progress/v1",
|
|
4
|
+
"title": "Owning-host signing recovery progress, not onboarding readiness",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schema", "organizationId", "deviceId", "preparationId", "state", "expiresAt", "clientTrustInstalled", "ready", "disposition"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": {"const": "dharma.device-signing-recovery-host-progress/v1"},
|
|
10
|
+
"organizationId": {"type": "string", "maxLength": 128, "pattern": "^org_[A-Za-z0-9]+$"},
|
|
11
|
+
"deviceId": {"type": "string", "format": "uuid"},
|
|
12
|
+
"preparationId": {"type": "string", "format": "uuid"},
|
|
13
|
+
"recoveryId": {"type": "string", "format": "uuid"},
|
|
14
|
+
"approvalId": {"type": "string", "format": "uuid"},
|
|
15
|
+
"state": {"enum": ["prepared", "awaiting_browser_offer", "pending_approval", "submission_unconfirmed", "offer_unconfirmed", "delivery_unconfirmed", "failed", "trust_installed"]},
|
|
16
|
+
"expiresAt": {"type": "string", "format": "date-time"},
|
|
17
|
+
"clientTrustInstalled": {"type": "boolean"},
|
|
18
|
+
"ready": {"const": false},
|
|
19
|
+
"disposition": {"const": "owned_host_progress_not_onboarding_ready"}
|
|
20
|
+
},
|
|
21
|
+
"allOf": [
|
|
22
|
+
{"if": {"properties": {"state": {"enum": ["pending_approval", "delivery_unconfirmed", "trust_installed"]}}},
|
|
23
|
+
"then": {"required": ["recoveryId", "approvalId"]}},
|
|
24
|
+
{"if": {"properties": {"state": {"const": "trust_installed"}}},
|
|
25
|
+
"then": {"properties": {"clientTrustInstalled": {"const": true}}},
|
|
26
|
+
"else": {"properties": {"clientTrustInstalled": {"const": false}}}}
|
|
27
|
+
]
|
|
28
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.dharma-ai.io/device-signing-recovery-offer-progress/v1",
|
|
4
|
+
"title": "Prepared signing recovery offer progress without installed authority",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schema", "organizationId", "deviceId", "preparationId", "state", "expiresAt", "deviceProofRegistered", "clientTrustInstalled", "ready", "disposition"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": {"const": "dharma.device-signing-recovery-offer-progress/v1"},
|
|
10
|
+
"organizationId": {"type": "string", "maxLength": 128, "pattern": "^org_[A-Za-z0-9]+$"},
|
|
11
|
+
"deviceId": {"type": "string", "format": "uuid"},
|
|
12
|
+
"preparationId": {"type": "string", "format": "uuid"},
|
|
13
|
+
"recoveryId": {"type": "string", "format": "uuid"},
|
|
14
|
+
"approvalId": {"type": "string", "format": "uuid"},
|
|
15
|
+
"state": {"enum": ["awaiting_browser_offer", "pending_approval"]},
|
|
16
|
+
"expiresAt": {"type": "string", "format": "date-time"},
|
|
17
|
+
"deviceProofRegistered": {"type": "boolean"},
|
|
18
|
+
"clientTrustInstalled": {"const": false},
|
|
19
|
+
"ready": {"const": false},
|
|
20
|
+
"disposition": {"const": "awaiting_separate_browser_consent_not_onboarding_ready"}
|
|
21
|
+
},
|
|
22
|
+
"oneOf": [
|
|
23
|
+
{
|
|
24
|
+
"properties": {"state": {"const": "awaiting_browser_offer"}, "deviceProofRegistered": {"const": false}},
|
|
25
|
+
"not": {"anyOf": [{"required": ["recoveryId"]}, {"required": ["approvalId"]}]}
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"required": ["recoveryId", "approvalId"],
|
|
29
|
+
"properties": {"state": {"const": "pending_approval"}, "deviceProofRegistered": {"const": true}}
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema":"https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id":"https://schemas.dharma-ai.io/device-signing-recovery-offer-read-request/v1",
|
|
4
|
+
"title":"Exact signed-device pending offer read; not connected relay or browser authority",
|
|
5
|
+
"$comment":"Runtime also enforces canonical timestamps, a live maximum 60-second request window, exact expected selection and canonical base64. The server verifies device transport separately.",
|
|
6
|
+
"type":"object","additionalProperties":false,
|
|
7
|
+
"required":["schema","purpose","method","path","organizationId","deviceId","preparationId","requestId","nonce","issuedAt","expiresAt"],
|
|
8
|
+
"properties":{
|
|
9
|
+
"schema":{"const":"dharma.device-signing-recovery-offer-read-request/v1"},"purpose":{"const":"read_prepared_recovery_offer"},
|
|
10
|
+
"method":{"const":"POST"},"path":{"const":"/api/v1/agent-fabric/signing-recovery/offers/read"},
|
|
11
|
+
"organizationId":{"type":"string","maxLength":128,"pattern":"^org_[A-Za-z0-9]+$(?![\\s\\S])"},
|
|
12
|
+
"deviceId":{"type":"string","format":"uuid"},"preparationId":{"type":"string","format":"uuid"},"requestId":{"type":"string","format":"uuid"},
|
|
13
|
+
"nonce":{"type":"string","pattern":"^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$(?![\\s\\S])"},
|
|
14
|
+
"issuedAt":{"type":"string","format":"date-time","maxLength":40},"expiresAt":{"type":"string","format":"date-time","maxLength":40}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema":"https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id":"https://schemas.dharma-ai.io/device-signing-recovery-offer-registration-receipt/v1",
|
|
4
|
+
"title":"Idempotent pending device proof receipt; no consent, publication or credentials",
|
|
5
|
+
"$comment":"Runtime binds all identifiers to the exact request and expiry to the already validated challenge, checks current time, and retains explicit not-ready state.",
|
|
6
|
+
"type":"object","additionalProperties":false,
|
|
7
|
+
"required":["schema","organizationId","deviceId","preparationId","recoveryId","approvalId","state","expiresAt","deviceProofRegistered","clientTrustInstalled","ready"],
|
|
8
|
+
"properties":{
|
|
9
|
+
"schema":{"const":"dharma.device-signing-recovery-offer-registration-receipt/v1"},
|
|
10
|
+
"organizationId":{"type":"string","maxLength":128,"pattern":"^org_[A-Za-z0-9]+$(?![\\s\\S])"},
|
|
11
|
+
"deviceId":{"type":"string","format":"uuid"},"preparationId":{"type":"string","format":"uuid"},
|
|
12
|
+
"recoveryId":{"type":"string","format":"uuid"},"approvalId":{"type":"string","format":"uuid"},
|
|
13
|
+
"state":{"const":"pending_approval"},"expiresAt":{"type":"string","format":"date-time","maxLength":40},
|
|
14
|
+
"deviceProofRegistered":{"const":true},"clientTrustInstalled":{"const":false},"ready":{"const":false}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema":"https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id":"https://schemas.dharma-ai.io/device-signing-recovery-offer-registration-request/v1",
|
|
4
|
+
"title":"Exact retained-offer device proof registration; not consent or trust installation",
|
|
5
|
+
"$comment":"The request carries only identifiers and the dedicated device purpose proof. Server-owned intent, current authority, device transport and purpose proof are independently verified before an idempotent registration.",
|
|
6
|
+
"type":"object","additionalProperties":false,
|
|
7
|
+
"required":["schema","purpose","method","path","organizationId","deviceId","preparationId","requestId","nonce","issuedAt","expiresAt","recoveryId","approvalId","signature"],
|
|
8
|
+
"properties":{
|
|
9
|
+
"schema":{"const":"dharma.device-signing-recovery-offer-registration-request/v1"},"purpose":{"const":"register_prepared_recovery_proof"},
|
|
10
|
+
"method":{"const":"POST"},"path":{"const":"/api/v1/agent-fabric/signing-recovery/offers/register"},
|
|
11
|
+
"organizationId":{"type":"string","maxLength":128,"pattern":"^org_[A-Za-z0-9]+$(?![\\s\\S])"},
|
|
12
|
+
"deviceId":{"type":"string","format":"uuid"},"preparationId":{"type":"string","format":"uuid"},"requestId":{"type":"string","format":"uuid"},
|
|
13
|
+
"nonce":{"type":"string","pattern":"^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$(?![\\s\\S])"},
|
|
14
|
+
"issuedAt":{"type":"string","format":"date-time","maxLength":40},"expiresAt":{"type":"string","format":"date-time","maxLength":40},
|
|
15
|
+
"recoveryId":{"type":"string","format":"uuid"},"approvalId":{"type":"string","format":"uuid"},
|
|
16
|
+
"signature":{"type":"string","pattern":"^[A-Za-z0-9_-]{85}[AQgw]$(?![\\s\\S])"}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema":"https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id":"https://schemas.dharma-ai.io/device-signing-recovery-offer-response/v1",
|
|
4
|
+
"title":"Public pending challenge for its exact prepared device; always not ready",
|
|
5
|
+
"$comment":"Runtime additionally validates the original preparation and every local challenge binding, immutable expiry, exact next generation and distinct root. No intent, candidate keyset, credential, consent or installation is returned.",
|
|
6
|
+
"oneOf":[
|
|
7
|
+
{
|
|
8
|
+
"type":"object","additionalProperties":false,
|
|
9
|
+
"required":["schema","organizationId","deviceId","preparationId","expiresAt","state","deviceProofRegistered","clientTrustInstalled","ready"],
|
|
10
|
+
"properties":{
|
|
11
|
+
"schema":{"const":"dharma.device-signing-recovery-offer-response/v1"},
|
|
12
|
+
"organizationId":{"type":"string","maxLength":128,"pattern":"^org_[A-Za-z0-9]+$(?![\\s\\S])"},
|
|
13
|
+
"deviceId":{"type":"string","format":"uuid"},"preparationId":{"type":"string","format":"uuid"},
|
|
14
|
+
"expiresAt":{"type":"string","format":"date-time","maxLength":40},"state":{"const":"awaiting_browser_offer"},
|
|
15
|
+
"deviceProofRegistered":{"const":false},"clientTrustInstalled":{"const":false},"ready":{"const":false}
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"type":"object","additionalProperties":false,
|
|
20
|
+
"required":["schema","organizationId","deviceId","preparationId","expiresAt","state","deviceProofRegistered","clientTrustInstalled","ready","challenge"],
|
|
21
|
+
"properties":{
|
|
22
|
+
"schema":{"const":"dharma.device-signing-recovery-offer-response/v1"},
|
|
23
|
+
"organizationId":{"type":"string","maxLength":128,"pattern":"^org_[A-Za-z0-9]+$(?![\\s\\S])"},
|
|
24
|
+
"deviceId":{"type":"string","format":"uuid"},"preparationId":{"type":"string","format":"uuid"},
|
|
25
|
+
"expiresAt":{"type":"string","format":"date-time","maxLength":40},"state":{"const":"awaiting_device_proof"},
|
|
26
|
+
"deviceProofRegistered":{"const":false},"clientTrustInstalled":{"const":false},"ready":{"const":false},
|
|
27
|
+
"challenge":{"oneOf":[{"$ref":"https://schemas.dharma-ai.io/device-signing-recovery-challenge/v1"},{"$ref":"https://schemas.dharma-ai.io/device-signing-maintenance-challenge/v1"}]}
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"type":"object","additionalProperties":false,
|
|
32
|
+
"required":["schema","organizationId","deviceId","preparationId","expiresAt","state","deviceProofRegistered","clientTrustInstalled","ready","challenge"],
|
|
33
|
+
"properties":{
|
|
34
|
+
"schema":{"const":"dharma.device-signing-recovery-offer-response/v1"},
|
|
35
|
+
"organizationId":{"type":"string","maxLength":128,"pattern":"^org_[A-Za-z0-9]+$(?![\\s\\S])"},
|
|
36
|
+
"deviceId":{"type":"string","format":"uuid"},"preparationId":{"type":"string","format":"uuid"},
|
|
37
|
+
"expiresAt":{"type":"string","format":"date-time","maxLength":40},"state":{"const":"pending_approval"},
|
|
38
|
+
"deviceProofRegistered":{"const":true},"clientTrustInstalled":{"const":false},"ready":{"const":false},
|
|
39
|
+
"challenge":{"oneOf":[{"$ref":"https://schemas.dharma-ai.io/device-signing-recovery-challenge/v1"},{"$ref":"https://schemas.dharma-ai.io/device-signing-maintenance-challenge/v1"}]}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|