Skip to content

docs: document Marketplace provider registration and content-for label - #251

Open
lpgarzonr wants to merge 3 commits into
platform-mesh:mainfrom
lpgarzonr:docs/marketplace-provider-registration-guide
Open

lpgarzonr wants to merge 3 commits into
platform-mesh:mainfrom
lpgarzonr:docs/marketplace-provider-registration-guide

Conversation

@lpgarzonr

@lpgarzonr lpgarzonr commented Aug 31, 2026

Copy link
Copy Markdown

Summary

  • Adds steps 5 and 6 to how-to-guides/bootstrap-provider.md documenting:
    • The three resources required for a provider to appear in the Marketplace (ProviderMetadata + APIExport + ContentConfiguration) and how the ui.platform-mesh.io/content-for label joins them — with different values per resource (see below).
    • The bind ClusterRole/ClusterRoleBinding required for the Enable button to work.
  • Adds ui.platform-mesh.io/content-for to the labels table in reference/resources/metadata-catalog.md, which previously omitted it entirely.

Key finding: content-for has two different values

The content-for label serves two independent join operations with different values:

Resource content-for value Purpose
ProviderMetadata + APIExport <ProviderMetadata.name> e.g. my-service Marketplace listing — filter.go joins these two by this value
ContentConfiguration <APIExport.name> e.g. my-service.example.com Nav projection into consumer workspace after install — filter.go joins by the APIExport name from the APIBinding

Verified in virtual-workspaces/pkg/storage/filter.go:144 (CC lookup) and filter.go:219 (Marketplace listing), and against the github provider in local-setup (APIExport has content-for: github, CC has content-for: github.dxp.sap.com).

Motivation

A provider author following the existing docs would end up with a workspace that has all the right resources but whose card never appears in the Marketplace and whose nav nodes never project into consumer workspaces — with no error to explain why. Neither the content-for label nor the bind RBAC requirement were documented anywhere.

Note: the original gap also included a len(latestResourceSchemas) == 0 filter that blocked UI-only providers — that is fixed separately in platform-mesh/platform-mesh#332. This docs PR reflects the corrected behavior (UI-only exports with no schemas are valid once identityHash is set).

Discovered while validating the HSP → Platform Mesh extension migration end-to-end on a local kind cluster (DXPFRAME-2475).

Test plan

  • Internal links resolve (no broken refs introduced)
  • npm run build passes
  • Prose follows style guide (sentence case headings, US English, no forbidden words, ## Related present)

Add steps 5 and 6 to bootstrap-provider.md covering the three-resource
requirement for Marketplace visibility (ProviderMetadata + APIExport with
at least one schema + ContentConfiguration, all linked by the
ui.platform-mesh.io/content-for label) and the bind ClusterRole/
ClusterRoleBinding required for the Enable button to work.

Add the ui.platform-mesh.io/content-for label to the metadata-catalog
labels table with a cross-reference to the new how-to steps.

These gaps were discovered while validating the HSP → Platform Mesh
extension migration end-to-end on a local kind cluster.

Signed-off-by: Leidy Garzon <leidy.garzon@sap.com>
platform-mesh/platform-mesh#332 fixes the Marketplace filter to use
status.identityHash instead of len(latestResourceSchemas), so UI-only
providers no longer need a dummy APIResourceSchema to appear in the
Marketplace. Update the example accordingly.

Signed-off-by: Leidy Garzon <leidy.garzon@sap.com>
…iderMetadata name

The content-for label has two different values depending on the resource:
- ProviderMetadata and APIExport: content-for: <ProviderMetadata.name>
  (joins them for Marketplace listing, filter.go:219)
- ContentConfiguration: content-for: <APIExport.name>
  (projects nav into consumer workspace after install, filter.go:144)

Previously the doc incorrectly stated all three resources share the same
value. Verified against virtual-workspaces/pkg/storage/filter.go and
the github provider in local-setup (APIExport has content-for: github,
CC has content-for: github.dxp.sap.com).

Signed-off-by: Leidy Garzon <leidy.garzon@sap.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant