ObjectStackObjectStack

Marketplace Admin

Marketplace Admin protocol schemas

Marketplace Administration Protocol

Defines schemas for the platform (Cloud) side of marketplace operations.

Covers the administrative workflows for managing and governing the marketplace.

Architecture Alignment

  • Salesforce AppExchange Admin: Security review, ISV monitoring, partner management

  • Apple App Store Connect Review: Human review process, guidelines, rejection reasons

  • Google Play Console: Policy enforcement, quality gates, content moderation

Key Concepts

  • Review Process: Structured workflow for submission review (automated + manual)

  • Curation: Featured apps, curated collections, editorial picks

  • Governance: Policy enforcement, takedown, compliance

  • Platform Analytics: Marketplace health, trending, abuse detection

Source: packages/spec/src/cloud/marketplace-admin.zod.ts

TypeScript Usage

import { CuratedCollection, FeaturedListing, MarketplaceHealthMetrics, PolicyAction, PolicyViolationType, RejectionReason, ReviewCriterion, ReviewDecision, SubmissionReview, TrendingListing } from '@objectstack/spec/cloud';
import type { CuratedCollection, FeaturedListing, MarketplaceHealthMetrics, PolicyAction, PolicyViolationType, RejectionReason, ReviewCriterion, ReviewDecision, SubmissionReview, TrendingListing } from '@objectstack/spec/cloud';

// Validate data
const result = CuratedCollection.parse(data);

CuratedCollection

Properties

PropertyTypeRequiredDescription
idstringCollection ID
namestringCollection name
descriptionstringoptional
coverImageUrlstringoptional
listingIdsstring[]Ordered listing IDs
publishedboolean
sortOrderinteger
createdBystringoptional
createdAtstringoptional
updatedAtstringoptional

FeaturedListing

Properties

PropertyTypeRequiredDescription
listingIdstringFeatured listing ID
priorityinteger
bannerUrlstringoptional
editorialNotestringoptional
startDatestring
endDatestringoptional
activeboolean

MarketplaceHealthMetrics

Properties

PropertyTypeRequiredDescription
totalListingsinteger
listingsByStatusRecord<string, integer>optional
listingsByCategoryRecord<string, integer>optional
totalPublishersinteger
verifiedPublishersinteger
totalInstallsinteger
averageReviewTimenumberoptional
pendingReviewsinteger
listingsByPricingRecord<string, integer>optional
snapshotAtstring

PolicyAction

Properties

PropertyTypeRequiredDescription
idstringAction ID
listingIdstringTarget listing ID
violationTypeEnum<'malware' | 'data-harvesting' | 'spam' | 'copyright' | 'inappropriate-content' | 'terms-of-service' | 'security-risk' | 'abandoned'>
actionEnum<'warning' | 'suspend' | 'takedown' | 'restrict'>
reasonstringExplanation of the violation
actionBystringAdmin user ID
actionAtstring
resolutionstringoptional
resolvedboolean

PolicyViolationType

Allowed Values

  • malware
  • data-harvesting
  • spam
  • copyright
  • inappropriate-content
  • terms-of-service
  • security-risk
  • abandoned

RejectionReason

Allowed Values

  • security-vulnerability
  • policy-violation
  • quality-below-standard
  • misleading-metadata
  • incompatible
  • duplicate
  • insufficient-documentation
  • other

ReviewCriterion

Properties

PropertyTypeRequiredDescription
idstringCriterion ID
categoryEnum<'security' | 'performance' | 'quality' | 'ux' | 'documentation' | 'policy' | 'compatibility'>
descriptionstring
requiredboolean
passedbooleanoptional
notesstringoptional

ReviewDecision

Allowed Values

  • approved
  • rejected
  • changes-requested

SubmissionReview

Properties

PropertyTypeRequiredDescription
idstringReview ID
submissionIdstringSubmission being reviewed
reviewerIdstringPlatform reviewer ID
decisionEnum<'approved' | 'rejected' | 'changes-requested'>optionalFinal decision
criteriaObject[]optionalReview checklist results
rejectionReasonsEnum<'security-vulnerability' | 'policy-violation' | 'quality-below-standard' | 'misleading-metadata' | 'incompatible' | 'duplicate' | 'insufficient-documentation' | 'other'>[]optional
feedbackstringoptionalDetailed review feedback (Markdown)
internalNotesstringoptionalInternal reviewer notes
startedAtstringoptional
completedAtstringoptional

TrendingListing

Properties

PropertyTypeRequiredDescription
listingIdstring
rankinteger
trendScorenumber
installVelocitynumber
periodstring

On this page