60 lines
1.6 KiB
Plaintext
60 lines
1.6 KiB
Plaintext
interface contacts {
|
|
enum capability {
|
|
read-name-only,
|
|
read,
|
|
add,
|
|
remove,
|
|
}
|
|
|
|
variant request {
|
|
/// requires ReadNameOnly capability
|
|
/// lazy-load-blob: none.
|
|
get-names,
|
|
/// requires Read capability
|
|
/// lazy-load-blob: none.
|
|
get-all-contacts,
|
|
/// requires Read capability
|
|
/// lazy-load-blob: none.
|
|
get-contact(string),
|
|
/// requires Add capability
|
|
/// lazy-load-blob: none.
|
|
add-contact(string),
|
|
/// requires Add capability
|
|
/// lazy-load-blob: none.
|
|
/// tuple<node, field, value>
|
|
add-field(tuple<string, string, string>),
|
|
/// requires Remove capability
|
|
/// lazy-load-blob: none.
|
|
remove-contact(string),
|
|
/// requires Remove capability
|
|
/// lazy-load-blob: none.
|
|
/// tuple<node, field>
|
|
remove-field(tuple<string, string>),
|
|
}
|
|
|
|
variant response {
|
|
/// lazy-load-blob: none.
|
|
get-names(list<string>),
|
|
/// lazy-load-blob: required; JSON all-contacts dict in blob.
|
|
get-all-contacts,
|
|
/// lazy-load-blob: required; JSON contact dict in blob.
|
|
get-contact,
|
|
/// lazy-load-blob: none.
|
|
add-contact,
|
|
/// lazy-load-blob: none.
|
|
add-field,
|
|
/// lazy-load-blob: none.
|
|
remove-contact,
|
|
/// lazy-load-blob: none.
|
|
remove-field,
|
|
/// any failed request will receive this response
|
|
/// lazy-load-blob: none.
|
|
err(string),
|
|
}
|
|
}
|
|
|
|
world contacts-sys-v0 {
|
|
import contacts;
|
|
include process-v1;
|
|
}
|