2024-05-27 02:40:41 +03:00
|
|
|
interface main {
|
|
|
|
//
|
|
|
|
// app store API as presented by main:app_store:sys-v0
|
|
|
|
//
|
|
|
|
|
2024-05-29 00:51:55 +03:00
|
|
|
use standard.{package-id};
|
2024-05-27 02:40:41 +03:00
|
|
|
|
|
|
|
record onchain-metadata {
|
|
|
|
name: option<string>,
|
|
|
|
description: option<string>,
|
|
|
|
image: option<string>,
|
|
|
|
external-url: option<string>,
|
|
|
|
animation-url: option<string>,
|
|
|
|
properties: onchain-properties,
|
|
|
|
}
|
|
|
|
|
|
|
|
record onchain-properties {
|
|
|
|
package-name: string,
|
|
|
|
publisher: string,
|
|
|
|
current-version: string,
|
|
|
|
mirrors: list<string>,
|
|
|
|
code-hashes: list<tuple<string, string>>,
|
|
|
|
license: option<string>,
|
|
|
|
screenshots: option<list<string>>,
|
|
|
|
wit-version: option<u32>,
|
|
|
|
dependencies: option<list<string>>,
|
|
|
|
}
|
|
|
|
|
|
|
|
variant request {
|
|
|
|
remote(remote-request),
|
|
|
|
local(local-request),
|
|
|
|
}
|
|
|
|
|
|
|
|
variant response {
|
|
|
|
remote(remote-response),
|
|
|
|
local(local-response),
|
|
|
|
}
|
|
|
|
|
|
|
|
variant remote-request {
|
|
|
|
download(remote-download-request),
|
|
|
|
}
|
|
|
|
|
|
|
|
record remote-download-request {
|
|
|
|
package-id: package-id,
|
|
|
|
desired-version-hash: option<string>,
|
|
|
|
}
|
|
|
|
|
|
|
|
variant remote-response {
|
|
|
|
approved,
|
|
|
|
denied(reason),
|
|
|
|
}
|
|
|
|
|
|
|
|
enum reason {
|
|
|
|
no-package,
|
|
|
|
not-mirroring,
|
|
|
|
hash-mismatch,
|
|
|
|
}
|
|
|
|
|
|
|
|
variant local-request {
|
|
|
|
new-package(new-package-request),
|
|
|
|
download(download-request),
|
|
|
|
install(package-id),
|
|
|
|
uninstall(package-id),
|
|
|
|
start-mirroring(package-id),
|
|
|
|
stop-mirroring(package-id),
|
|
|
|
start-auto-update(package-id),
|
|
|
|
stop-auto-update(package-id),
|
|
|
|
rebuild-index,
|
|
|
|
apis,
|
|
|
|
get-api(package-id),
|
|
|
|
}
|
|
|
|
|
|
|
|
record new-package-request {
|
|
|
|
package-id: package-id,
|
|
|
|
metadata: onchain-metadata,
|
|
|
|
mirror: bool,
|
|
|
|
}
|
|
|
|
|
|
|
|
record download-request {
|
|
|
|
package-id: package-id,
|
|
|
|
download-from: string,
|
|
|
|
mirror: bool,
|
|
|
|
auto-update: bool,
|
|
|
|
desired-version-hash: option<string>,
|
|
|
|
}
|
|
|
|
|
|
|
|
variant local-response {
|
|
|
|
new-package-response(new-package-response),
|
|
|
|
download-response(download-response),
|
|
|
|
install-response(install-response),
|
|
|
|
uninstall-response(uninstall-response),
|
|
|
|
mirror-response(mirror-response),
|
|
|
|
auto-update-response(auto-update-response),
|
|
|
|
rebuild-index-response(rebuild-index-response),
|
|
|
|
apis-response(apis-response),
|
|
|
|
get-api-response(get-api-response),
|
|
|
|
}
|
|
|
|
|
|
|
|
enum new-package-response {
|
|
|
|
success,
|
|
|
|
no-blob,
|
|
|
|
install-failed,
|
|
|
|
already-exists,
|
|
|
|
}
|
|
|
|
|
|
|
|
variant download-response {
|
|
|
|
started,
|
|
|
|
bad-response,
|
|
|
|
denied(reason),
|
|
|
|
already-exists,
|
|
|
|
already-downloading,
|
|
|
|
}
|
|
|
|
|
|
|
|
enum install-response {
|
|
|
|
success,
|
|
|
|
failure, // TODO
|
|
|
|
}
|
|
|
|
|
|
|
|
enum uninstall-response {
|
|
|
|
success,
|
|
|
|
failure, // TODO
|
|
|
|
}
|
|
|
|
|
|
|
|
enum mirror-response {
|
|
|
|
success,
|
|
|
|
failure, // TODO
|
|
|
|
}
|
|
|
|
|
|
|
|
enum auto-update-response {
|
|
|
|
success,
|
|
|
|
failure, // TODO
|
|
|
|
}
|
|
|
|
|
|
|
|
enum rebuild-index-response {
|
|
|
|
success,
|
|
|
|
failure, // TODO
|
|
|
|
}
|
|
|
|
|
|
|
|
record apis-response {
|
|
|
|
apis: list<package-id>,
|
|
|
|
}
|
|
|
|
|
|
|
|
// the API itself will be in response blob if success!
|
|
|
|
enum get-api-response {
|
|
|
|
success,
|
|
|
|
failure, // TODO
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
world app-store-sys-v0 {
|
|
|
|
import main;
|
|
|
|
include process-v0;
|
|
|
|
}
|