S9SourceNine Labs / CMAPI Docs 1.0
CMAPI / Getting started

Mod manifest

Every supported manifest field, dependency rule, and update key.

View source ↗
CMAPI 1.0.0Standalone runtimeWindows x64Tested with Planet Crafter 2.008

CMAPI mod manifest reference

Each mod directory must contain a UTF-8 manifest.json. CMAPI validates the entire manifest before loading the entry assembly and reports all detected metadata errors together.

Complete example

JSON
{
  "Name": "Hello Crafter",
  "Author": "Your Name",
  "Description": "Adds a friendly console greeting command.",
  "Version": "1.0.0",
  "MinimumApiVersion": "1.0.0",
  "UniqueID": "YourName.HelloCrafter",
  "EntryDll": "HelloCrafter.dll",
  "UpdateKeys": [
    "GitHub:YourGitHubName/HelloCrafter"
  ]
}

Fields

Field Required Meaning
Name Yes Player-facing mod name, at most 100 characters.
Author Yes Player-facing author or team name, at most 100 characters.
Description Yes Clear one-sentence summary, at most 300 characters.
Version Yes Installed semantic version, such as 1.2.0 or 1.2.0-beta.1.
MinimumApiVersion Yes Oldest CMAPI API version this build supports. CMAPI rejects a mod requiring a newer installed runtime.
UniqueID Yes Stable, globally unique ID such as SourceNineLabs.ExampleMod.
EntryDll Yes Relative path to the entry assembly inside this mod's directory. Absolute and escaping paths are rejected.
UpdateKeys No Zero to ten provider-prefixed release identifiers.

Unique IDs

A UniqueID has at least two dot-separated parts. Each part starts with a letter or number and can then contain letters, numbers, _, or -.

Good:

SourceNineLabs.ExampleMod
AuthorName.Mod-Tools

Rejected:

ExampleMod
.ExampleMod
Author Name.ExampleMod

Do not change an ID after publishing. CMAPI uses it for duplicate detection, command/event ownership, update state, and future dependency resolution.

Versions

CMAPI follows semantic-version precedence:

1.0.0-beta.1 < 1.0.0-beta.2 < 1.0.0 < 1.1.0 < 2.0.0

Use a higher major version for breaking mod behavior, a higher minor version for compatible features, and a higher patch version for compatible fixes.

Update keys

Each key uses Provider:Value. Provider names are case-insensitive.

Provider Format Status in 1.0.0
GitHub GitHub:owner/repository Implemented; checks the latest stable GitHub release.
Nexus Nexus:modNumber Reserved; requires a Nexus API key or SourceNine update proxy. Reported as unsupported for now.
CMAPI CMAPI:modNumber Reserved for a future SourceNine Labs registry.

GitHub release tags must be semantic versions such as 1.2.0 or v1.2.0. Checks run outside the game thread, time out safely, and cache successful results. updates check bypasses the cache for a fresh request.

Never put passwords, API keys, or private tokens in a manifest.