Attesto

Marketplace

Connector marketplace

De Attesto Marketplace op https://marketplace.attesto.eu is de publieke catalogus voor gevalideerde evidence producers. Publieke bezoekers kunnen connector cards bekijken. Tenant acquisition, install, update, revoke en artifact download vereisen een geauthenticeerde dashboard tenant session. Publisher signup, publisher profile management en connector submission gebruiken een apart marketplace-only developer account. Attesto review en publication zijn private interne processen en worden niet aan publieke bezoekers of marketplace developers blootgesteld.

Marketplace model

Een marketplace item is een gevalideerd connector asset. De catalogus bewaart asset metadata, current version, manifest hash, artifact hash, validation result, entitlement state, install state en marketplace evidence events. De marketplace draait geen connectorcode in de browser en stelt geen connector secrets bloot.

ObjectBetekenis
assetEen connector listing zoals GitHub, GitLab of S3/R2 object commitments.
versionEen gevalideerd connector manifest met manifest- en artifact hashes.
entitlementHet recht van de tenant om een version te downloaden of installeren.
installEen tenant-scoped installatierecord voor de gekozen version.
evidence eventEen canonieke marketplace receipt voor acquisition, installation, submission of validation.

Bekijk de publieke catalogus

De publieke catalogus toont alleen gevalideerde publieke assets. Hij is veilig te bekijken zonder tenant session:

GET https://marketplace.attesto.eu/v1/marketplace/categories
GET https://marketplace.attesto.eu/v1/marketplace/items?category=devops
GET https://marketplace.attesto.eu/v1/marketplace/items/attesto-github-repository-reference

Elke card toont de evidence score, validation state, supported languages, category, current version en documentatielink. Publieke bezoekers zien een sign-in action in plaats van acquire/install/download commands.

De Evidence Score is geen marketingrating. Het is een deterministische output van attesto-marketplace-validation-v1: hetzelfde manifest, dezelfde source reference en dezelfde validator version produceren dezelfde score. De score is de som van expliciete criteria voor receipts, offline verification, secret scanning, dependency scanning, witness compatibility, documentation, repository reference, Proofstream capability, source reference en ondersteunde Attesto languages. Het validation report bewaart formula, criteria, components, total en max, zodat operators en publishers kunnen reproduceren waarom een connector zijn tier kreeg.

Tenant acquisition and install lifecycle

Tenant users met owner-, admin- of developer-role kunnen een gratis first-party connector acquiren en installeren. De browser moet de tenant session cookie en leesbare CSRF token hebben. Production cookies zijn scoped op .attesto.eu, zodat een session die op dashboard.attesto.eu is gemaakt ook werkt op marketplace.attesto.eu.

POST /v1/marketplace/items/attesto-github-repository-reference/acquire
X-CSRF-Token: <attesto_csrf cookie>

POST /v1/marketplace/items/attesto-github-repository-reference/install
Content-Type: application/json
X-CSRF-Token: <attesto_csrf cookie>

{
  "configRef": "tenant-managed-github-installation"
}

Geïnstalleerde gratis assets kunnen naar de huidige gevalideerde version worden bijgewerkt of door een owner/admin worden gerevoked. Revoke deactiveert zowel entitlement als tenant install; artifact download faalt totdat de tenant het asset opnieuw acquiret en installeert.

POST /v1/marketplace/items/attesto-github-repository-reference/install/update
Content-Type: application/json
X-CSRF-Token: <attesto_csrf cookie>

{
  "configRef": "tenant-managed-github-installation-v2"
}

POST /v1/marketplace/items/attesto-github-repository-reference/revoke
Content-Type: application/json
X-CSRF-Token: <attesto_csrf cookie>

{
  "reason": "tenant_request"
}

De artifact endpoint retourneert het connector manifest alleen nadat de tenant een actieve entitlement heeft:

GET /v1/marketplace/items/attesto-github-repository-reference/artifact

Connector manifest

Een manifest beschrijft de connector zonder secrets op te nemen. Het is het object dat Python, TypeScript, Go, CLI, backend validation en de marketplace allemaal tegen hetzelfde contract valideren.

{
  "schemaVersion": "attesto.connector.v2",
  "slug": "attesto-github-repository-reference",
  "name": "GitHub Repository Reference",
  "version": "1.0.0",
  "assetType": "connector",
  "category": "devops",
  "summary": "Creates Proofstream references for repository changes.",
  "description": "Records repository change references as verifiable Attesto events.",
  "publisher": {
    "slug": "attesto",
    "name": "Attesto"
  },
  "repository": {
    "url": "https://git.example.com/attesto/connectors/github"
  },
  "documentation": {
    "url": "https://docs.attesto.eu/manuals/connectors.html#github"
  },
  "capabilities": ["proofstream", "offline-verification"],
  "evidence": {
    "receipts": true,
    "offlineVerification": true,
    "witnessCompatible": true
  },
  "security": {
    "secretScan": true,
    "dependencyScan": true
  },
  "supportedLanguages": ["en", "nl", "de", "fr", "es", "pl", "it"],
  "provider": {
    "id": "github",
    "name": "GitHub",
    "websiteUrl": "https://github.com"
  },
  "auth": {
    "mode": "signed-webhook",
    "scopes": ["repo", "push-events"]
  },
  "sync": {
    "modes": ["webhook"],
    "supportsReplay": true,
    "rateLimitPolicy": "provider-default"
  },
  "eventTypes": ["repository.push", "repository.merge_request"],
  "sourceTime": {
    "required": true,
    "timezonePolicy": "source-offset-required"
  },
  "configSchema": { "type": "object", "properties": {} },
  "secretSchema": { "type": "object", "properties": {} },
  "diagnostics": {
    "providerAuthStatus": true,
    "testConnection": true,
    "syncLag": true,
    "replayConflictCheck": true,
    "revocationCheck": true
  },
  "runtime": {
    "officialConnectorKit": true,
    "sdkSurfaces": ["python", "typescript", "go", "cli"],
    "requiredMethods": [
      "metadata",
      "validateConfig",
      "testConnection",
      "sync",
      "handleWebhook",
      "emitProofstreamEvent",
      "diagnostics",
      "revoke"
    ],
    "canary": {
      "status": "green",
      "ref": "release/attesto-2.0-connector-assurance-readiness/result.json"
    }
  },
  "installRequirements": {
    "tenantLoginRequired": true,
    "entitlementRequired": true
  },
  "changelog": [
    {
      "version": "1.0.0",
      "date": "2026-06-09",
      "changes": ["Validated first-party connector release."]
    }
  ]
}

Verplichte velden worden gecontroleerd voordat een asset kan worden geaccepteerd. De backend validator laat hidden assets onder een Evidence Score van 50 falen; Attesto kan nog steeds een strengere private release policy toepassen voor first-party of partner connectors. Een score is evidence-derived validation output, geen adoption badge of marketingoordeel.

Marketplace CLI publishing flow

Publisher automation kan de Attesto CLI gebruiken voor hetzelfde manifestcontract als backend en connector kits. De CLI valideert het manifest lokaal voordat er iets naar Attesto wordt verstuurd. Submission gebruikt een marketplace publisher bearer token. Publieke documentatie dekt alleen het publisher-pad; Attesto review en publication blijven private interne processen. Publisher commands printen nooit stored tokens, Stripe identifiers, connector secrets of raw customer payloads.

attesto --json marketplace init \
  --output attesto.connector.json \
  --slug acme-risk-connector \
  --name "ACME Risk Connector" \
  --version 1.0.0 \
  --category ai-governance \
  --summary "Produces Attesto evidence for ACME risk decisions." \
  --description "Produces verifiable Proofstream events for ACME risk decisions." \
  --publisher-slug acme \
  --publisher-name ACME \
  --repository-url https://git.example.com/acme/risk-connector \
  --docs-url https://docs.example.com/acme/risk-connector \
  --provider-url https://example.com/acme \
  --auth-mode oauth2 \
  --auth-scopes risk.read,risk.events \
  --sync-modes polling,webhook \
  --event-types risk.decision.created,risk.decision.updated \
  --canary-ref release/acme-risk-connector/canary-result.json \
  --capabilities proofstream,offline-verification

attesto --json marketplace validate \
  --manifest-file attesto.connector.json

attesto --json --token-env ATTESTO_MARKETPLACE_TOKEN marketplace submit \
  --manifest-file attesto.connector.json \
  --source-ref https://git.example.com/acme/risk-connector/releases/v1.0.0 \
  --visibility public \
  --pricing-model free

Na submission blijft de asset private pending Attesto review. Attesto reviewt validation evidence, source reference, publisher identity, pricing en release provenance privé. Publieke docs stoppen bewust bij de developer submission boundary.

Publisher validation

Marketplace developer accounts zijn marketplace-only. Ze kunnen zich aanmelden en inloggen op marketplace.attesto.eu, een publisher profile beheren, een developer tier kiezen, gratis connector assets voor private Attesto review indienen en de echte developer billing flow starten voor paid publishing. Ze kunnen niet inloggen op dashboard.attesto.eu; normale tenant users hebben nog steeds een normaal Attesto tenant account nodig voor het dashboard.

POST /v1/marketplace/auth/signup
Content-Type: application/json

{
  "displayName": "ACME Evidence Labs",
  "name": "Publisher Operator",
  "email": "publisher@example.com",
  "password": "<operator-chosen password>"
}

POST /v1/marketplace/auth/login
Content-Type: application/json

{
  "email": "publisher@example.com",
  "password": "<operator-chosen password>"
}

GET /v1/marketplace/auth/me

Het aanmaken of bijwerken van een publisher profile registreert marketplace evidence voordat assets worden ingediend. Een profiel publiceert nooit zelfstandig een asset: free submissions zijn private pending review, en paid submissions vereisen een actieve paid developer tier plus Stripe Connect readiness. Zo wordt voorkomen dat de publieke marketplace een open upload surface wordt.

POST /v1/marketplace/publisher/profile
Content-Type: application/json
X-CSRF-Token: <attesto_csrf cookie>

{
  "displayName": "Attesto Official Connector Team"
}

GET /v1/marketplace/publisher/profile

PATCH /v1/marketplace/publisher/profile
Content-Type: application/json
X-CSRF-Token: <attesto_csrf cookie>

{
  "displayName": "Attesto Business Connectors"
}

Developer publisher rights worden in-place geüpgraded. De publisher behoudt hetzelfde marketplace-only account en publisher profile. Community developers kunnen gratis assets indienen voor private review. Verified Developer, Professional Publisher en Marketplace Partner plans gebruiken een 14-day Stripe trial en unlocken paid connector submission pas nadat Stripe het subscription bevestigt. Paid listing publication vereist daarnaast Stripe Connect payout readiness. Checkout en portal URLs worden server-side gemaakt via de encrypted Stripe integration store.

GET /v1/marketplace/developer-tiers

[
  {
    "tier": "community",
    "label": "Free Developer",
    "monthlyCents": 0,
    "annualCents": 0,
    "currency": "EUR",
    "checkoutRequired": false,
    "submissionEnabledWhenActive": false,
    "description": "Marketplace-only developer identity for profile management, manifest preparation, documentation review, and free connector submission into private Attesto review.",
    "requirements": [
      "marketplace publisher profile",
      "private Attesto review before public listing",
      "paid developer publisher tier before paid connector submission"
    ],
    "trialDays": 0
  },
  {
    "tier": "premium",
    "label": "Verified Developer",
    "monthlyCents": 1900,
    "annualCents": 19000,
    "currency": "EUR",
    "checkoutRequired": true,
    "submissionEnabledWhenActive": true,
    "description": "Paid developer publishing tier with a 14-day Stripe trial.",
    "requirements": [
      "active developer subscription",
      "connector validation passes",
      "private Attesto review before public listing"
    ],
    "trialDays": 14
  }
]

GET /v1/marketplace/publisher/billing-state

{
  "publisher": {
    "tier": "premium",
    "developerSubscriptionState": "active",
    "payoutState": "ready",
    "commercialEnabled": true
  },
  "checkoutAvailable": true,
  "billingPortalAvailable": true,
  "canSubmitAssets": true,
  "developerSignupRequired": false,
  "supportedTiers": [
    {"tier": "premium", "label": "Verified Developer", "monthlyCents": 1900, "annualCents": 19000, "currency": "EUR"},
    {"tier": "professional", "label": "Professional Publisher", "monthlyCents": 4900, "annualCents": 49000, "currency": "EUR"},
    {"tier": "partner", "label": "Marketplace Partner", "monthlyCents": 9900, "annualCents": 99000, "currency": "EUR"}
  ],
  "submissionRequirements": [],
  "commercialRequirements": [
    "active developer subscription",
    "Stripe Connect payout readiness"
  ],
  "gracePeriodDays": 14
}

POST /v1/marketplace/publisher/upgrade
Content-Type: application/json
X-CSRF-Token: <attesto_csrf cookie>

{
  "tier": "premium",
  "interval": "month",
  "successUrl": "https://marketplace.attesto.eu/?publisher=upgrade-success",
  "cancelUrl": "https://marketplace.attesto.eu/?publisher=upgrade-cancel"
}

POST /v1/marketplace/publisher/billing-portal
Content-Type: application/json
X-CSRF-Token: <attesto_csrf cookie>

{
  "returnUrl": "https://marketplace.attesto.eu/?publisher=billing-return"
}

Publishers die betaalde assets willen verkopen moeten Stripe Connect payout onboarding afronden nadat het developer account actief is. De API gebruikt Attesto's server-side encrypted Stripe configuration en retourneert alleen een Stripe-hosted onboarding URL. Hij retourneert geen Stripe secret keys, connected-account IDs of payout credentials naar de frontend.

POST /v1/marketplace/publisher/payout/onboarding
Content-Type: application/json
X-CSRF-Token: <attesto_csrf cookie>

{
  "returnUrl": "https://marketplace.attesto.eu/?publisher=payout-return",
  "refreshUrl": "https://marketplace.attesto.eu/?publisher=payout-refresh",
  "country": "NL"
}

POST /v1/marketplace/publisher/payout/status

Paid connector acquisition gebruikt Stripe Checkout met Stripe Connect. De backend maakt de Checkout Session, past de Attesto application fee toe, routeert het developer share naar het connected account en wacht op de verified Stripe webhook voordat tenant entitlement en marketplace ledger entry worden aangemaakt.

POST /v1/marketplace/items/{slug}/acquire
Content-Type: application/json
X-CSRF-Token: <attesto_csrf cookie>

{
  "successUrl": "https://marketplace.attesto.eu/?marketplace=checkout-success",
  "cancelUrl": "https://marketplace.attesto.eu/?marketplace=checkout-cancel"
}

Webhook result:
marketplace_purchase_created
marketplace_entitlement_created
marketplace_revenue_split_recorded

Stripe refund- en payout-notifications worden ook via de verified webhook endpoint verwerkt. Een volledige refund sluit de entitlement, revoket actieve installs voor de connector, blokkeert artifact download en registreert refund- en entitlement-revocation evidence. Payout events reconciliëren eligible publisher ledger entries en leggen payout evidence vast zonder Stripe object identifiers of provider payloads aan de browser bloot te stellen.

Webhook result for full refund:
marketplace_refund_recorded
marketplace_entitlement_revoked

Webhook result for payout:
developer_payout_completed

Webhook result for failed payout/refund:
developer_payout_failed
marketplace_refund_failed

Actieve developer publishers kunnen daarna business connectors indienen via de marketplace publisher surface. De submit action valideert het manifest, registreert een validation run, maakt een private pending-review asset, bewaart de version hashes en schrijft marketplace evidence. Zelfs wanneer visibility als public wordt gevraagd, blijft de listing verborgen totdat private Attesto review en publication policy zijn afgerond. Niet-gekwalificeerde tenants krijgen een fail-closed response voordat manifest validation draait.

POST /v1/marketplace/publisher/assets
Content-Type: application/json
X-CSRF-Token: <attesto_csrf cookie>

{
  "sourceRef": "https://example.com/repository/connector-release",
  "visibility": "private",
  "pricingModel": "free",
  "manifest": { "...": "attesto.connector.v2 manifest" }
}

Attesto review en publication zijn private interne processen. Ze schrijven marketplace evidence, maar de interne endpoints en procedures horen niet in de publieke developer documentatie. De publieke catalogus retourneert alleen approved, non-revoked versions.

De source reference moet naar de echte release source van de connector wijzen. Secrets, private keys, API tokens en customer payloads mogen nooit in connector manifests worden geplaatst.

Marketplace evidence events

Marketplace publisher profile create/update, acquisition, install, install update, entitlement revoke, paid purchase, refund, payout, publisher submission en validation/review actions schrijven canonieke marketplace evidence. De receipt hash wordt afgeleid van de canonieke evidence envelope en payload hash; het receipt record bewaart tenant, actor, subject, timestamp en sanitized payload voor tenant audit views. Zo krijgen operators een deterministische audit trail voor wie publisher identity veranderde en wie welke connector version acquired, installed, updated, reviewed, published, refunded, paid out of revoked.

GET /v1/marketplace/evidence/<receipt-id-or-receipt-hash>

Security boundaries