70 lines
2.0 KiB
JSON
70 lines
2.0 KiB
JSON
{
|
|
"format": 1,
|
|
"seat": "node-launcher",
|
|
"scope": "node",
|
|
"grain": "seat-list",
|
|
"domain": "Core",
|
|
"decision": "novox/hq ADR 0208",
|
|
"verbs": [
|
|
{
|
|
"name": "menu",
|
|
"description": "Put a menu of choices in front of the operator and answer with the one chosen, or nothing when the menu was dismissed — the dmenu-compatible contract.",
|
|
"input": {
|
|
"properties": {
|
|
"choices": {
|
|
"description": "the lines to choose between, in order",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
"prompt": {
|
|
"description": "what the menu asks (optional)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"choices"
|
|
],
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "secret",
|
|
"description": "Ask the operator for a value in a prompt that does not show what is typed, and answer it sealed to the key the asker gives — never in the clear — or cancelled when the prompt was dismissed or not answered in time.",
|
|
"optional": true,
|
|
"input": {
|
|
"properties": {
|
|
"module": {
|
|
"description": "the module whose own secret is asked for",
|
|
"type": "string"
|
|
},
|
|
"node": {
|
|
"description": "the machine the module runs on",
|
|
"type": "string"
|
|
},
|
|
"seal_to": {
|
|
"description": "the asker's public sealing key: the answer is sealed to it",
|
|
"type": "string"
|
|
},
|
|
"secret": {
|
|
"description": "the own secret's name",
|
|
"type": "string"
|
|
},
|
|
"timeout_seconds": {
|
|
"description": "give up after this long (optional)",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"module",
|
|
"secret",
|
|
"node",
|
|
"seal_to"
|
|
],
|
|
"type": "object"
|
|
}
|
|
}
|
|
]
|
|
}
|