A HappyView plugin, as one entry in a software.release.manifest's `artifacts`. It carries the module and its manifest.json as blobs, so they are verified by their CIDs, and the manifest's facts in the signed record, so a consent screen renders without downloading the module. Those facts are not trusted: the loader checks them against the module itself and refuses a plugin that misstates what it does. The registry refuses a manifest whose artifact breaks a rule stated here, including the ones a lexicon cannot express.
Properties
allowedHosts
array
of string
Optional
Hosts the module's outbound requests may reach.
apiVersion
string
Required
The plugin API version the module targets. Its major version must be 2 or later.
maxLength: 16 bytesbanner
ref
#image
Optional
A wide image shown at the top of the plugin's page.
capabilities
array
of string
Required
What the module may do. The loader checks it against the module's imports, so a plugin cannot import what this does not cover.
fileExtensions
array
of string
Optional
Required for an interpreter: the file extensions of the scripts it runs, without the dot. Each is 1 to 16 lowercase letters or digits, none is `json`, and none repeats.
maxLength: 8 itemsminLength: 1 itemslanguageId
string
Optional
Required for an interpreter: the script type it runs.
maxLength: 64 byteslicense
string
Required
An SPDX expression, or `proprietary`.
maxLength: 256 bytesmanifest
blob
Required
The module's manifest.json. A module stored as a blob has no directory beside it to hold a sibling file, so this is what says how to load it.
maxSize: 1.0 MBnamespace
string
Optional
Required for a library: the name scripts load it by, which is unique across a HappyView's installed plugins.
maxLength: 256 bytespackage
blob
Required
The WASM module.
maxSize: 16.8 MBpluginType
string
Required
What the plugin is. Any other value is refused.
auth, library, interpreterrequires
unknown
Optional
Dependencies, as a map a lexicon cannot type. Each key is `env:<name>`, such as `env:happyview`, or the at-uri of a software.release.project; each value is a Cargo version requirement, such as `>=3.0.0` or `^1.0`, without `||`.
screenshots
array
of ref#image
Optional
No description available.
maxLength: 8 itemssections
ref
#sections
Required
No description available.
View raw schema
{
"description": "A HappyView plugin, as one entry in a software.release.manifest's `artifacts`. It carries the module and its manifest.json as blobs, so they are verified by their CIDs, and the manifest's facts in the signed record, so a consent screen renders without downloading the module. Those facts are not trusted: the loader checks them against the module itself and refuses a plugin that misstates what it does. The registry refuses a manifest whose artifact breaks a rule stated here, including the ones a lexicon cannot express.",
"properties": {
"allowedHosts": {
"description": "Hosts the module's outbound requests may reach.",
"items": {
"maxLength": 256,
"type": "string"
},
"type": "array"
},
"apiVersion": {
"description": "The plugin API version the module targets. Its major version must be 2 or later.",
"maxLength": 16,
"type": "string"
},
"banner": {
"description": "A wide image shown at the top of the plugin's page.",
"ref": "#image",
"type": "ref"
},
"capabilities": {
"description": "What the module may do. The loader checks it against the module's imports, so a plugin cannot import what this does not cover.",
"items": {
"maxLength": 128,
"type": "string"
},
"type": "array"
},
"fileExtensions": {
"description": "Required for an interpreter: the file extensions of the scripts it runs, without the dot. Each is 1 to 16 lowercase letters or digits, none is `json`, and none repeats.",
"items": {
"maxLength": 16,
"minLength": 1,
"type": "string"
},
"maxLength": 8,
"minLength": 1,
"type": "array"
},
"languageId": {
"description": "Required for an interpreter: the script type it runs.",
"maxLength": 64,
"type": "string"
},
"license": {
"description": "An SPDX expression, or `proprietary`.",
"maxLength": 256,
"type": "string"
},
"manifest": {
"accept": [
"application/json"
],
"description": "The module's manifest.json. A module stored as a blob has no directory beside it to hold a sibling file, so this is what says how to load it.",
"maxSize": 1000000,
"type": "blob"
},
"namespace": {
"description": "Required for a library: the name scripts load it by, which is unique across a HappyView's installed plugins.",
"maxLength": 256,
"type": "string"
},
"package": {
"accept": [
"application/wasm"
],
"description": "The WASM module.",
"maxSize": 16777216,
"type": "blob"
},
"pluginType": {
"description": "What the plugin is. Any other value is refused.",
"knownValues": [
"auth",
"library",
"interpreter"
],
"type": "string"
},
"requires": {
"description": "Dependencies, as a map a lexicon cannot type. Each key is `env:<name>`, such as `env:happyview`, or the at-uri of a software.release.project; each value is a Cargo version requirement, such as `>=3.0.0` or `^1.0`, without `||`.",
"type": "unknown"
},
"screenshots": {
"items": {
"ref": "#image",
"type": "ref"
},
"maxLength": 8,
"type": "array"
},
"sections": {
"ref": "#sections",
"type": "ref"
}
},
"required": [
"package",
"manifest",
"pluginType",
"apiVersion",
"capabilities",
"license",
"sections"
],
"type": "object"
}