Portal Community
Phase 3 — PENDING This feature is planned but not yet implemented.

Manifest Completeness

The manifest.json must include all required fields before submission. Use the pre-submission validation endpoint to check completeness without submitting.

FieldRequired for CommunityRequired for CertifiedNotes
manifestVersionYesYesMust be "1.0"
packageIdYesYesGlobally unique, assigned by publisher
nameYesYesHuman-readable, max 100 chars
versionYesYesValid SemVer, not previously published
packageTypeYesYesOne of the 5 package types
descriptionYesYesMax 500 chars
publisherYesYesMust match your verified publisher slug
platformVersionYesYesMinimum platform version required
licenseNoYesSPDX identifier (e.g., MIT, Apache-2.0)
changelogNoYesRelease notes for this version
screenshotsNoRecommendedURLs to package screenshots

README Requirements

All packages must include a README.md at the root of the ZIP. The export pipeline auto-generates a template README — you should replace the template content with actual documentation before submitting.

README SectionRequired for CommunityRequired for Certified
# Package Name headingYesYes
Description paragraphYesYes
## What's IncludedNoYes
## PrerequisitesNoYes
## Installation NotesNoYes
## ConfigurationNoYes (if configurable)
## ChangelogNoYes
## SupportNoYes

Changelog Format

The changelog field in the manifest should follow Keep a Changelog format:

{
  "changelog": "## [3.0.0] - 2026-05-25\n### Breaking Changes\n- ApprovalRules schema updated — existing customizations must be migrated\n\n### Added\n- Parallel approval paths\n- Deadline escalation support\n\n### Fixed\n- Thread assignment race condition under high concurrency"
}

Screenshots

Screenshots are displayed on the marketplace package detail page. Recommended specifications:

{
  "screenshots": [
    {
      "url":     "https://acmecorp.com/screenshots/onboarding-flow-1.png",
      "caption": "Employee onboarding workflow — main flow view"
    },
    {
      "url":     "https://acmecorp.com/screenshots/onboarding-form-1.png",
      "caption": "Employee intake form with department routing"
    }
  ]
}

Pre-Submission Validation

Run this endpoint before submitting to catch issues early:

POST /api/marketplace/validate
Authorization: Bearer {publisherToken}
Content-Type: multipart/form-data

Fields:
  package — the .installhub.zip file

// Response:
{
  "valid": false,
  "errors": [
    { "code": "MissingLicense",     "message": "manifest.json missing required 'license' field for Certified submission" },
    { "code": "ReadmeTooShort",     "message": "README.md is 42 characters — minimum for Certified is 500 characters" }
  ],
  "warnings": [
    { "code": "NoScreenshots",      "message": "No screenshots provided — screenshots improve marketplace discoverability" },
    { "code": "OldPlatformVersion", "message": "platformVersion '4.0.0' is two major versions behind current '4.2.0'" }
  ]
}