Attesto

Marketplace

Connector marketplace

Die Attesto Marketplace unter https://marketplace.attesto.eu ist der öffentliche Katalog für validierte Evidence Producers. Öffentliche Besucher können Connector Cards ansehen. Tenant Acquisition, Install, Update, Revoke und Artifact Download erfordern eine authentifizierte Dashboard Tenant Session. Publisher Signup, Publisher Profile Management und Connector Submission nutzen ein separates marketplace-only Developer Account. Attesto Review und Publication sind private interne Prozesse und werden öffentlichen Besuchern oder Marketplace Developers nicht offengelegt.

Marketplace model

Ein Marketplace Item ist ein validiertes Connector Asset. Der Katalog speichert Asset Metadata, Current Version, Manifest Hash, Artifact Hash, Validation Result, Entitlement State, Install State und Marketplace Evidence Events. Die Marketplace führt keinen Connector-Code im Browser aus und legt keine Connector Secrets offen.

ObjectBedeutung
assetEine Connector Listing wie GitHub, GitLab oder S3/R2 object commitments.
versionEin validiertes Connector Manifest mit Manifest- und Artifact-Hashes.
entitlementDas Recht des Tenants, eine Version herunterzuladen oder zu installieren.
installEin tenant-scoped Installation Record für die gewählte Version.
evidence eventEine kanonische Marketplace Receipt für Acquisition, Installation, Submission oder Validation.

Öffentlichen Katalog durchsuchen

Der öffentliche Katalog zeigt nur validierte öffentliche Assets. Er kann sicher ohne Tenant Session durchsucht werden:

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

Jede Card zeigt Evidence Score, Validation State, Supported Languages, Category, Current Version und Documentation Link. Öffentliche Besucher sehen eine Sign-in Action statt Acquire/Install/Download Commands.

Der Evidence Score ist kein Marketing-Rating. Er ist ein deterministischer Output von attesto-marketplace-validation-v1: dasselbe Manifest, dieselbe Source Reference und dieselbe Validator Version erzeugen denselben Score. Der Score ist die Summe expliziter Kriterien für Receipts, Offline Verification, Secret Scanning, Dependency Scanning, Witness Compatibility, Documentation, Repository Reference, Proofstream Capability, Source Reference und unterstützte Attesto Languages. Der Validation Report speichert formula, criteria, components, total und max, damit Operators und Publishers reproduzieren können, warum ein Connector sein Tier erhalten hat.

Tenant acquisition and install lifecycle

Tenant Users mit Owner-, Admin- oder Developer-Rolle können einen kostenlosen First-Party Connector acquiren und installieren. Der Browser muss Tenant Session Cookie und lesbaren CSRF Token besitzen. Production Cookies sind auf .attesto.eu gescoped, sodass eine Session von dashboard.attesto.eu auch auf marketplace.attesto.eu funktioniert.

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"
}

Installierte kostenlose Assets können auf die aktuelle validierte Version aktualisiert oder durch einen Owner/Admin revoked werden. Revoke deaktiviert sowohl Entitlement als auch Tenant Install; Artifact Download schlägt fehl, bis der Tenant das Asset erneut acquired und installiert.

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"
}

Der Artifact Endpoint gibt das Connector Manifest nur zurück, wenn der Tenant ein aktives Entitlement hat:

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

Connector manifest

Ein Manifest beschreibt den Connector ohne Secrets. Es ist das Objekt, das Python, TypeScript, Go, CLI, Backend Validation und Marketplace gegen denselben Contract validieren.

{
  "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."]
    }
  ]
}

Pflichtfelder werden geprüft, bevor ein Asset akzeptiert werden kann. Der Backend Validator lässt hidden Assets unter einem Evidence Score von 50 fehlschlagen; Attesto kann trotzdem eine strengere private Release Policy für First-party oder Partner Connectors anwenden. Ein Score ist evidence-derived Validation Output, kein Adoption Badge oder Marketingurteil.

Marketplace CLI publishing flow

Publisher Automation kann die Attesto CLI für denselben Manifest Contract wie Backend und Connector Kits verwenden. Die CLI validiert das Manifest lokal, bevor etwas an Attesto gesendet wird. Submission nutzt ein Marketplace Publisher Bearer Token. Öffentliche Dokumentation deckt nur den Publisher Path ab; Attesto Review und Publication bleiben private interne Prozesse. Publisher Commands geben nie stored tokens, Stripe identifiers, connector secrets oder raw customer payloads aus.

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

Nach Submission bleibt das Asset private pending Attesto review. Attesto prüft validation evidence, source reference, publisher identity, pricing und release provenance privat. Öffentliche Docs enden bewusst an der Developer Submission Boundary.

Publisher validation

Marketplace Developer Accounts sind marketplace-only. Sie können sich auf marketplace.attesto.eu registrieren und einloggen, ein Publisher Profile verwalten, ein Developer Tier wählen, kostenlose Connector Assets für private Attesto Review einreichen und den echten Developer Billing Flow für Paid Publishing starten. Sie können sich nicht auf dashboard.attesto.eu einloggen; normale Tenant Users brauchen weiterhin ein normales Attesto Tenant Account für das 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

Das Erstellen oder Aktualisieren eines Publisher Profile zeichnet Marketplace Evidence auf, bevor Assets eingereicht werden. Ein Profil allein veröffentlicht nie ein Asset: Free Submissions bleiben private pending review, und Paid Submissions erfordern ein aktives Paid Developer Tier plus Stripe Connect Readiness. So wird verhindert, dass die öffentliche Marketplace zu einer offenen Upload Surface wird.

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 werden in-place aktualisiert. Der Publisher behält denselben marketplace-only Account und dasselbe Publisher Profile. Community Developers können kostenlose Assets zur privaten Review einreichen. Verified Developer, Professional Publisher und Marketplace Partner Plans nutzen eine 14-day Stripe Trial und schalten Paid Connector Submission erst frei, nachdem Stripe das Subscription bestätigt. Paid Listing Publication erfordert zusätzlich Stripe Connect Payout Readiness. Checkout- und Portal-URLs werden server-side über den encrypted Stripe integration store erzeugt.

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"
}

Publisher, die Paid Assets verkaufen möchten, müssen nach Aktivierung des Developer Accounts Stripe Connect Payout Onboarding abschließen. Die API nutzt Attesto's server-side encrypted Stripe Configuration und gibt nur eine Stripe-hosted Onboarding URL zurück. Sie gibt keine Stripe Secret Keys, Connected-Account IDs oder Payout Credentials an das Frontend zurück.

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 nutzt Stripe Checkout mit Stripe Connect. Das Backend erstellt die Checkout Session, wendet die Attesto Application Fee an, routet den Developer Share zum Connected Account und wartet auf den verified Stripe Webhook, bevor Tenant Entitlement und Marketplace Ledger Entry erzeugt werden.

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- und Payout-Notifications werden ebenfalls über den verified Webhook Endpoint verarbeitet. Ein Full Refund schließt das Entitlement, revoked aktive Installs für den Connector, blockiert Artifact Download und zeichnet Refund- sowie Entitlement-Revocation Evidence auf. Payout Events reconciliieren eligible Publisher Ledger Entries und erfassen Payout Evidence, ohne Stripe Object Identifiers oder Provider Payloads dem Browser offenzulegen.

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

Aktive Developer Publishers können anschließend Business Connectors über die Marketplace Publisher Surface einreichen. Die Submit Action validiert das Manifest, zeichnet einen Validation Run auf, erstellt ein private pending-review Asset, speichert Version Hashes und schreibt Marketplace Evidence. Selbst wenn visibility als public angefordert wird, bleibt das Listing verborgen, bis private Attesto Review und Publication Policy abgeschlossen sind. Nicht qualifizierte Tenants erhalten eine fail-closed Response, bevor Manifest Validation läuft.

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 und Publication sind private interne Prozesse. Sie schreiben Marketplace Evidence, aber die internen Endpoints und Verfahren gehören nicht in die öffentliche Developer Documentation. Der öffentliche Katalog gibt nur approved, non-revoked Versions zurück.

Die Source Reference muss auf die echte Release Source des Connectors zeigen. Secrets, Private Keys, API Tokens und Customer Payloads dürfen niemals in Connector Manifests platziert werden.

Marketplace evidence events

Marketplace Publisher Profile Create/Update, Acquisition, Install, Install Update, Entitlement Revoke, Paid Purchase, Refund, Payout, Publisher Submission und Validation/Review Actions schreiben kanonische Marketplace Evidence. Der Receipt Hash wird aus der kanonischen Evidence Envelope und Payload Hash abgeleitet; der Receipt Record speichert Tenant, Actor, Subject, Timestamp und Sanitized Payload für Tenant Audit Views. So erhalten Operators einen deterministischen Audit Trail darüber, wer Publisher Identity geändert und wer welche Connector Version acquired, installed, updated, reviewed, published, refunded, paid out oder revoked hat.

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

Security boundaries