Version 1.2.0
An OwlPlug Registry is a single remote resource providing a list of available Packages.
The Owlplug Registry Specification is versioned using Semantic Versioning 2.0.0 semver.
The major
.minor
portion of the semver (for example 3.0
) designate the Registry Specification feature set. Typically, .patch
versions address errors in this document, not the feature set. Tooling which supports Registry Specification 3.0 should be compatible with all 3.0.* versions. The patch version should not be considered by tooling, making no distinction between 3.0.0
and 3.0.1
for example.
Subsequent minor version releases of the Specification should not interfere with tooling developed to a lower minor version and same major version. Thus a hypothetical 3.1.0
specification should be usable with tooling designed for 3.0.0
.
A Registry endpoint serve a JSON document. All field names in the specification are case-sensitive. The root object is a Registry object.
Document root object. Provides general information about the registry and carries a list of products.
Field Name | Type | Description |
---|---|---|
name | string |
REQUIRED. The name of the registry. 255 characters max. |
url | string |
REQUIRED. An url to access registry or developer information. This is not necessarily the endpoint URL. 255 characters max. |
schemaVersion | string |
REQUIRED. This string must be the semantic version number of the OwlPlug Registry Specification that the document uses. 255 characters max. |
packages | object |
REQUIRED. An associative array with package id string as key and Package as value. Can be empty. |
A Package is basically an Audio Plugin product. For example, Serum
, Massive
, Sylenth
are 3 distinct packages. Each Package contains a list of PackageVersion
Field Name | Type | Description |
---|---|---|
slug | string |
REQUIRED. Unique lower case and hyphen-separated identifier. 255 characters max and must match ^[a-z0-9]+(?:[a-z0-9]+)*$ . Examples: wobbleizer , my-plugin , an-other-slug . |
latestVersion | string |
REQUIRED. The name of the product/plugin. 255 characters max. |
versions | object |
REQUIRED. An associative array with version string as key and PackageVersion as value. Can be empty. |
A PackageVersion is a released version for a Package. For example Serum 1.3.5.7
and Serum 1.3.6.3
are two PackageVersion for the Serum
Package.
Each PackageVersion conains a list of Bundle
Field Name | Type | Description |
---|---|---|
name | string |
REQUIRED. The name of the product/plugin. 255 characters max. |
creator | string |
REQUIRED. Product creator / manufacturer name. 255 characters max. |
license | string |
Distribution license. Free field but keep it short. Use the Github keywords like gpl-3.0 , mit , ... as most as possible for consistency. 255 character max. |
type | string |
REQUIRED. Must be instrument for VSTi or effect for VST/VSTfx or unknown . 255 characters max. |
stage | string |
Can be beta for an early release, demo for a limited release or release for stable build. 255 characters max. |
pageUrl | string |
REQUIRED. The plugin page url. 255 characters max. |
donateUrl | string |
Creator support/donation URL. 255 characters max. |
screenshotUrl | string |
REQUIRED. Plugin screenshot url. Must be a png file. 255 characters max. |
description | string |
REQUIRED. A short plugin description. 1000 characters max. |
version | string |
Plugin version. Version will be applied to all bundles if not overloaded. |
technicalUid | string |
Plugin unique id. Uid will be applied to all bundles if not overloaded. |
tags | array |
An array of Tag. Can be empty. |
bundles | array |
REQUIRED. An array of Bundle. Can be empty. |
A bundle is a binary artifact containing a plugin in a specific format
for one or multiple targets
environments (Windows, OSX...).
For example, a bundle can contains a vst3 plugin binary for Win64 and OSX environment.
Field Name | Type | Description |
---|---|---|
name | string |
REQUIRED. The name of the bundle. 255 characters max. |
targets | array |
REQUIRED. Array of plugin Target. Supported environements by the bundle. |
formats | array |
REQUIRED. List of plugins formats in the bundle. Items must be vst , vst3 , au , lv2 , clap , aax or unknown . |
format | string |
Deprecated. Use Bundle formats field instead. |
technicalUid | string |
Bundle/Plugin unique id. Overload parent registry.packages[p].versions[v].technicalUid property. |
downloadUrl | string |
REQUIRED. Bundle download url. 255 characters max. Check Bundle file structure |
downloadSha256 | string |
REQUIRED. SHA256 digest for the file download from downloadUrl |
fileSize | long |
Size of bundle file in bytes. |
A Tag is just a simple string describing main features of a Plugin. 255 characters max are allowed for each tag. You can specify any keywords that describes the plugin. OwlPlug will suggest the following list of tags:
Ambient,Amp,Analog,Bass,Brass,Compressor,Delay,Distortion,Drum,Equalizer,Filter,Flanger,Gate,Guitar,LFO,Limiter,Maximizer,Monophonic,Orchestral,Organ,Panner,Phaser,Piano,Reverb,Synth,Tremolo,Tube,Vintage
A Target is just a simple string describing main target environments of a plugin. You must use following identifiers:
- Windows 32 bit:
win32
- Windows 64 bit:
win64
- OSX:
osx
- Linux:
linux
For example, in case of a win 64 bit release, you should specify win64
. If a bundle contains both x64 and x86 windows distributions, you can have an array of target like this ["win64", "win32"]
. This is not a compatibility flag so if you are distributing Win 32 release only, you should not specify win64
.
A bundle file must be a zip file. There is no naming convention for the file. A bundle file can be organized in 4 different way:
- Directly
plugin.zip/
├── plugin.[dll | vst | vst3]
└── (other files...)
- Environment Specific
plugin.zip/
├── win64
│ ├── plugin.dll
│ └── (other required files...)
└── osx
├── plugin.dll
└── (other required files...)
- Directly nested (in a root subfolder)
plugin.zip/
└── plugin
├── plugin.[dll | vst | vst3]
└── (other required files...)
- Environment Specific nested (in a root subfolder)
plugin.zip/
└── plugin
├── win64
│ ├── plugin.dll
│ └── (other required files...)
└── osx
├── plugin.vst
└── (other required files...)
Environment folders names must follow Target convention. Using one of this structure allow OwlPlug to maintain a clean directory tree. If your archive structure don't match, the bundle will be installed as it.
Bundle file must contains plugin file used by the DAW and all required files. It's a common practice to add some docs in bundles subfolders. All .exe
, .msi
are not recognized by OwlPlug and cannot be launched for security reasons.
It's up to you to decide how to organize your plugin distribution. One bundle with different environment targets, or multiple specific bundles. If you are distributing VST 3.6.10+, it's a best practice to distribute only one packaged bundle.