Playground API

Testa l'endpoint di aggiornamento stato di pubblicazione.

Autenticazione Richiesta

Devi essere loggato per utilizzare il Playground API. Accedi per continuare.

Endpoint Aggiornamento Stato di Pubblicazione

Aggiorna lo stato di pubblicazione di uno o più prodotti nel tuo inventario

PUT

Questo endpoint consente di aggiornare lo stato di pubblicazione di uno o più prodotti nel tuo inventario. Lo stato di pubblicazione indica la fase del ciclo di vita del prodotto nel tuo catalogo, ad esempio se è in fase di revisione, pronto per essere pubblicato o già pubblicato online.

L'aggiornamento può essere applicato a più prodotti contemporaneamente fornendo un elenco di ID separati da virgola.

URL dell'Endpoint
PUT https://api.commerceclarity.io/inventories/set-publication-state

Parametri della Richiesta

Parametro Tipo Obbligatorio Descrizione
ids string Obbligatorio Elenco di ID prodotto separati da virgola. Possono essere codice prodotto (EAN, ASIN, MINSAN) o SKU
publication_state string Obbligatorio Il nuovo stato di pubblicazione da assegnare ai prodotti. Valori accettati: pending_review, ready, online

Stati di Pubblicazione

Stato Descrizione
pending_review Il prodotto è in attesa di revisione prima di essere approvato per la pubblicazione
ready Il prodotto è stato revisionato ed è pronto per essere pubblicato
online Il prodotto è attualmente pubblicato e visibile online

Risposta

Risposta di Successo
{
  "status": "success",
  "message": "Inventory statuses set"
}
Risposta di Errore - Validazione
{
  "status": "error",
  "message": "Invalid publication state",
  "errors": [
    "The publication state field is required.",
    "The selected publication state is invalid."
  ]
}

Esempi di Codice

Esempio PHP (Utilizzo del Client HTTP Guzzle)
<?php

require 'vendor/autoload.php';

use GuzzleHttp\Client;
use GuzzleHttp\Exception\RequestException;

$client = new Client([
    'base_uri' => 'https://api.commerceclarity.io',
    'timeout'  => 10.0,
    'headers' => [
        'Authorization' => 'Bearer IL_TUO_TOKEN_API',
        'Accept' => 'application/json',
        'Content-Type' => 'application/json',
    ]
]);

// Lista di ID prodotto separati da virgola
$productIds = '8004120057724,8004120061721,NS-CRIO-001';

// Stato di pubblicazione da impostare
$publicationState = 'online'; // Valori possibili: pending_review, ready, online

$requestData = [
    'ids' => $productIds,
    'publication_state' => $publicationState
];

try {
    $response = $client->put('/inventories/set-publication-state', [
        'json' => $requestData
    ]);
    
    $result = json_decode($response->getBody()->getContents(), true);
    
    echo "Stato: " . $result['status'] . "\n";
    echo "Messaggio: " . $result['message'] . "\n";
    
} catch (RequestException $e) {
    echo "Errore: " . $e->getMessage() . "\n";
    
    if ($e->hasResponse()) {
        $errorResponse = json_decode($e->getResponse()->getBody()->getContents(), true);
        
        echo "Stato: " . ($errorResponse['status'] ?? 'sconosciuto') . "\n";
        echo "Messaggio: " . ($errorResponse['message'] ?? 'nessun messaggio') . "\n";
        
        if (isset($errorResponse['errors'])) {
            echo "Errori di validazione:\n";
            foreach ($errorResponse['errors'] as $error) {
                echo "- " . $error . "\n";
            }
        }
    }
}
Esempio JavaScript (Fetch API)
// Configurazione della richiesta
const apiUrl = 'https://api.commerceclarity.io/inventories/set-publication-state';
const token = 'IL_TUO_TOKEN_API';

// Dati della richiesta
const requestData = {
  ids: '8004120057724,8004120061721,NS-CRIO-001', // Lista di ID prodotto separati da virgola
  publication_state: 'online' // Valori possibili: pending_review, ready, online
};

// Configurazione della richiesta
const requestOptions = {
  method: 'PUT',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  },
  body: JSON.stringify(requestData)
};

// Effettua la richiesta API
fetch(apiUrl, requestOptions)
  .then(response => {
    if (!response.ok) {
      return response.json().then(errorData => {
        throw new Error(errorData.message || `Status: ${response.status}`);
      });
    }
    return response.json();
  })
  .then(data => {
    console.log('Risposta:', data);
    console.log(`Stato: ${data.status}`);
    console.log(`Messaggio: ${data.message}`);
    
    // Esempio: aggiornare l'interfaccia utente per riflettere lo stato aggiornato
    if (data.status === 'success') {
      // Aggiorna l'UI con i nuovi stati di pubblicazione
      const productIds = requestData.ids.split(',');
      productIds.forEach(productId => {
        const productElement = document.querySelector(`[data-product-id="${productId}"]`);
        if (productElement) {
          // Aggiorna il badge dello stato di pubblicazione
          const statusBadge = productElement.querySelector('.publication-state-badge');
          if (statusBadge) {
            statusBadge.textContent = requestData.publication_state;
            
            // Aggiorna la classe CSS in base allo stato
            statusBadge.classList.remove('badge-pending', 'badge-ready', 'badge-online');
            
            switch (requestData.publication_state) {
              case 'pending_review':
                statusBadge.classList.add('badge-pending');
                break;
              case 'ready':
                statusBadge.classList.add('badge-ready');
                break;
              case 'online':
                statusBadge.classList.add('badge-online');
                break;
            }
          }
        }
      });
      
      // Mostra un messaggio di conferma
      showNotification('Stato di pubblicazione aggiornato con successo', 'success');
    }
  })
  .catch(error => {
    console.error('Errore durante l'aggiornamento dello stato di pubblicazione:', error.message);
    
    // Esempio: mostrare un messaggio di errore all'utente
    showNotification(`error: ${error.message}`, 'error');
  });

// Funzione di utilità per mostrare notifiche
function showNotification(message, type) {
  // Implementazione della tua funzione di notifica
  console.log(`[${type.toUpperCase()}] ${message}`);
}
Esempio Python (Requests)
import requests
import json

# Configurazione API
api_url = 'https://api.commerceclarity.io/inventories/set-publication-state'
token = 'IL_TUO_TOKEN_API'

headers = {
    'Authorization': f'Bearer {token}',
    'Content-Type': 'application/json',
    'Accept': 'application/json'
}

# Dati della richiesta
request_data = {
    'ids': '8004120057724,8004120061721,NS-CRIO-001',  # Lista di ID prodotto separati da virgola
    'publication_state': 'online'  # Valori possibili: pending_review, ready, online
}

try:
    # Effettua la richiesta PUT
    response = requests.put(
        api_url,
        headers=headers,
        json=request_data
    )
    
    # Solleva eccezione per errori HTTP
    response.raise_for_status()
    
    # Estrai i dati dalla risposta
    result = response.json()
    
    print(f"Stato: {result['status']}")
    print(f"Messaggio: {result['message']}")
    
    # Esempio: aggiornare un registro locale dei prodotti
    if result['status'] == 'success':
        product_ids = request_data['ids'].split(',')
        
        # Esempio di aggiornamento di un database locale
        def update_product_publication_state(product_id, state):
            print(f"Aggiornamento stato pubblicazione per prodotto {product_id} a '{state}'")
            # Qui inserisci la logica per aggiornare un database locale
            # Ad esempio: db.execute("UPDATE products SET publication_state = ? WHERE id = ?", (state, product_id))
        
        # Aggiorna lo stato di pubblicazione per ogni prodotto
        for product_id in product_ids:
            update_product_publication_state(product_id, request_data['publication_state'])
            
        print(f"\nStato di pubblicazione aggiornato con successo per {len(product_ids)} prodotti")
    
except requests.exceptions.HTTPError as err:
    print(f"Errore HTTP: {err}")
    if response.text:
        error_data = response.json()
        print(f"Stato: {error_data.get('status', 'sconosciuto')}")
        print(f"Messaggio: {error_data.get('message', 'nessun messaggio')}")
        
        if 'errors' in error_data:
            print("Errori di validazione:")
            for error in error_data['errors']:
                print(f"- {error}")
        
except requests.exceptions.RequestException as err:
    print(f"Errore durante la richiesta: {err}")
Esempio cURL
curl -X PUT "https://api.commerceclarity.io/inventories/set-publication-state" \
     -H "Authorization: Bearer IL_TUO_TOKEN_API" \
     -H "Content-Type: application/json" \
     -H "Accept: application/json" \
     -d '{
       "ids": "8004120057724,8004120061721,NS-CRIO-001",
       "publication_state": "online"
     }'

Casi d'Uso

Approvazione Prodotti

Utile per gestire un flusso di approvazione dei prodotti prima della pubblicazione, impostando i prodotti da pending_review a ready dopo la verifica.

Pubblicazione in Batch

Permette di pubblicare online contemporaneamente un gruppo di prodotti che hanno superato la fase di controllo qualità.

Rimozione Temporanea

Consente di riportare i prodotti da online a pending_review per rimuoverli temporaneamente dal catalogo online senza eliminarli.

Risorse Correlate

Autenticazione

Impara come autenticare le tue richieste API con token di accesso.

Vai all'Autenticazione
Analisi Prodotti

Aggiungi nuovi prodotti al tuo inventario per poterne recuperare i dettagli.

Vedi Endpoint
Dettagli Prodotto

Verifica lo stato attuale di un prodotto specifico nel tuo inventario.

Vedi Endpoint