Products-API-CRUD

Verwalten Sie Produkte über den Core API unter https://api.licensechain.app/v1 mit denselben Feldern, die Sie im Dashboard bearbeiten können (Verkäufer Produkte), einschließlich Richtlinien-URLs, Optionen für Zahlungspartner von Drittanbietern und (auf unterstützten Ebenen) Liefereinstellungen.

Schicken Authorization: Bearer … mit einer Benutzer-Taste JWT oder einer App-Taste API. Beispiele zum Kopieren und Einfügen in vielen Sprachen: API Beispiele (mehrsprachig).

Endpunkte

  • GET /v1/products — Listen Sie Ihre Produkte auf (Paginierung und Filter unten)
  • POST /v1/products — erstellen (erforderlich: name, price; optionale Felder wie im Beispiel)
  • GET /v1/products/{id} — lies eins
  • PUT /v1/products/{id} — Vollständiger Ersatz der bereitgestellten Schlüssel (gleiche Validierung wie PATCH)
  • PATCH /v1/products/{id} — Teilaktualisierung; Ausgelassene Schlüssel bleiben unverändert
  • DELETE /v1/products/{id} — löschen, wenn keine Lizenzen oder Abonnements auf das Produkt verweisen

Abfrageparameter auflisten

GET /v1/products?limit=20&offset=0&active=true&search=pro&sortBy=createdAt&sortDir=desc

limit (Standard 20, max. 100), offset, optional active (true/false), search (Teilzeichenfolge ohne Berücksichtigung der Groß- und Kleinschreibung im Produktnamen), sortBy (createdAt | name | price), sortDir (asc | desc).

Produkt erstellen (Beispieltext)

Nur Enterprise-Felder (hideEmail, autoRedirect, licenseEmails, sendLicenseToCustomer) geben 403 zurück, wenn Ihr Konto nicht auf Enterprise steht. Für die wiederkehrende Abrechnung ist stripePriceIdRecurring erforderlich. Zum Deaktivieren von cryptoPaymentsEnabled ist Business oder Enterprise erforderlich. OpenAPI im API-Repo listet jedes Feld und jede Einschränkung auf.

{
  "name": "Pro Monthly",
  "description": "Recurring access to premium feature set",
  "price": 49.99,
  "currency": "USD",
  "active": true,
  "successUrl": "https://merchant.example.com/pay/success",
  "cancelUrl": "https://merchant.example.com/pay/cancel",
  "helpUrl": "https://merchant.example.com/help",
  "supportUrl": "https://merchant.example.com/support",
  "termsUrl": "https://merchant.example.com/terms",
  "privacyUrl": "https://merchant.example.com/privacy",
  "refundUrl": "https://merchant.example.com/refund",
  "productType": "subscription",
  "billingType": "recurring",
  "interval": "month",
  "stripePriceIdRecurring": "price_1AbCdEfGhIjKlMn",
  "stripeTaxEnabled": true,
  "stripeIdentityRequired": false,
  "cryptoPaymentsEnabled": true,
  "hideEmail": false,
  "autoRedirect": false
}

Produkt aktualisieren

Verwenden Sie PATCH für Teilaktualisierungen oder PUT für die Felder, die Sie ändern möchten. Weiterleitungs-URLs müssen http oder https sein und dürfen höchstens 2000 Zeichen lang sein.

PATCH /v1/products/{id}
{
  "name": "Pro Monthly Updated",
  "price": 59.99,
  "active": true,
  "stripeTaxEnabled": true
}

Produkt löschen

DELETE /v1/products/{id}

Gibt 409 zurück, wenn Lizenzen oder Kundenabonnements noch mit dem Produkt verknüpft sind.

Antwortform

callbackSecret wird für neue Produkte ausgegeben und kann rotiert werden, wenn die Funktion zum Ausblenden von E-Mail-Flüssen aktiviert ist; Behandeln Sie es als Geheimnis für die Webhook-Signatur (siehe Leitfaden für Zahlungs-Webhooks). userId kann in einigen internen oder Legacy-Zeilen null sein; Kunden sollten eine fehlende Eigentümer-ID tolerieren.

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "userId": "user_123",
  "name": "Pro Monthly",
  "description": "Recurring access to premium feature set",
  "price": 49.99,
  "currency": "USD",
  "active": true,
  "successUrl": "https://merchant.example.com/pay/success",
  "cancelUrl": "https://merchant.example.com/pay/cancel",
  "helpUrl": "https://merchant.example.com/help",
  "supportUrl": "https://merchant.example.com/support",
  "termsUrl": "https://merchant.example.com/terms",
  "privacyUrl": "https://merchant.example.com/privacy",
  "refundUrl": "https://merchant.example.com/refund",
  "productType": "subscription",
  "billingType": "recurring",
  "interval": "month",
  "stripePriceIdRecurring": "price_1AbCdEfGhIjKlMn",
  "stripeTaxEnabled": true,
  "stripeIdentityRequired": false,
  "cryptoPaymentsEnabled": true,
  "hideEmail": false,
  "autoRedirect": false,
  "licenseEmails": [
    "licenses-a@merchant.example.com",
    "licenses-b@merchant.example.com"
  ],
  "sendLicenseToCustomer": true,
  "callbackSecret": "base64url_or_base64_secret_from_product_record",
  "createdAt": "2026-05-11T07:00:00.000Z",
  "updatedAt": "2026-05-11T07:00:00.000Z"
}