CRUD Products API

Gestisci i prodotti attraverso il Core API a https://api.licensechain.app/v1 con gli stessi campi puoi modificare nel Dashboard (prodotti del venditore), inclusi URL delle norme, opzioni di partner di pagamento di terze parti e (sui livelli supportati) impostazioni di consegna.

Inviare Authorization: Bearer โ€ฆ con una chiave utente JWT o una chiave app API. Esempi di copia-incolla in molte lingue: API esempi (multilingue).

Endpoint

  • GET /v1/products โ€” elenca i tuoi prodotti (impaginazione e filtri di seguito)
  • POST /v1/products โ€” creare (richiesto: name, price; campi facoltativi come nell'esempio)
  • GET /v1/products/{id} โ€” leggine uno
  • PUT /v1/products/{id} โ€” sostituzione completa delle chiavi fornite (stessa convalida di PATCH)
  • PATCH /v1/products/{id} โ€” aggiornamento parziale; le chiavi omesse rimangono invariate
  • DELETE /v1/products/{id} โ€” eliminare quando nessuna licenza o abbonamento fa riferimento al prodotto

Elenca i parametri della query

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

limit (default 20, max 100), offset, opzionale active (true/false), search (sottostringa senza distinzione tra maiuscole e minuscole sul nome del prodotto), sortBy (createdAt | name | price), sortDir (asc | desc).

Crea prodotto (corpo di esempio)

I campi solo Enterprise (hideEmail, autoRedirect, licenseEmails, sendLicenseToCustomer) restituiscono 403 se il tuo account non รจ su Enterprise. La fatturazione ricorrente richiede stripePriceIdRecurring. La disabilitazione di cryptoPaymentsEnabled richiede Business o Enterprise. OpenAPI nel repository API elenca ogni campo e vincolo.

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

Aggiorna prodotto

Utilizza PATCH per aggiornamenti parziali o PUT con i campi che desideri modificare. Gli URL di reindirizzamento devono essere http o https e contenere al massimo 2000 caratteri.

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

Elimina prodotto

DELETE /v1/products/{id}

Restituisce 409 quando le licenze o gli abbonamenti dei clienti sono ancora collegati al prodotto.

Forma della risposta

callbackSecret viene rilasciato per i nuovi prodotti e puรฒ essere ruotato quando si abilitano i flussi di posta elettronica nascosta; trattalo come un segreto per la firma del webhook (vedi la guida al webhook di pagamento). userId puรฒ essere null in alcune righe interne o legacy; i client dovrebbero tollerare la mancanza dell'ID proprietario.

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