API

Adresy zákazníka

<form class="address">
    <input type="text" name="firstName">
    <input type="text" name="lastName">
    <input type="text" name="street">
    <input type="text" name="city">
    <input type="text" name="region">
    <input type="text" name="zip">
    <input type="text" name="country">
    <input type="email" name="email">
    <input type="tel" name="phone">
    <input type="text" name="companyName">
    <input type="text" name="companyId">
    <input type="text" name="vatId">
</form>
document.querySelector('form.address').addEventListener('submit', function(event){
    event.preventDefault();

    // @todo loading
    api.user.address.add(new FormData(this))
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error
        });
});

document.querySelector('form.address').addEventListener('submit', function(event){
    event.preventDefault();

    // @todo loading
    api.user.address.update(123456789, new FormData(this))
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error
        });
});

document.querySelector('a.delete-address').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.user.address.delete(123456789)
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error
        });
});

// @todo loading
api.user.address.get(123456789)
    .then(function(response){
        // fill form?
    })
    .catch(function(error){
        // display error
    });

Newsletter (přihlášený zákazník)

api.user.newsletter.unsubscribe

document.querySelector('a.customer-unsubscribe').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.user.newsletter.unsubscribe()
        .then(function(){
            // reload page?
        })
        .catch(function(error){
            // display error
        });
});

Objednávka

api.order.delete

document.querySelector('a.delete-order').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.order.delete()
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error
        });
});

api.order.voucher.add

document.querySelector('a.add-voucher').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.order.voucher.add('XYZ1234')
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error
            alert(error.message);
        });
});

api.order.voucher.delete

document.querySelector('a.delete-voucher').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.order.voucher.delete('XYZ1234')
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error
            alert(error.message);
        });
});

api.order.item.changeAmount

document.querySelector('a.remove-change-amount').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.order.item.changeAmount(/* item id*/ 123, 7 /* new amount (cannot be zero)  */)
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error

            // Currently one of stock, unavailable, min_amount, max_amount, amount_multiple
            // More can be added later - always fallback to error message
            console.log(error.code);

            // translated error message
            console.log(error.message);

            // item name (useful if rule was triggered by bundle part)
            console.log(error.item.name);

            // correct amount for current validation (may not be valid for next validation)
            // zero for unavailable items
            console.log(error.recommendedAmount);
        });
});

api.order.item.remove

document.querySelector('a.remove-cart-item').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.order.item.delete(123)
        .then(function(response){
            // reload page?
        })
        .catch(function(error){
            // display error
            alert(error.message);
        });
});

api.order.status.lookup

Vyhledání stavu objednávky pomocí kódu objednávky a emailu. Metoda je chráněna proof-of-work a rate limitingem.

document.querySelector('form.order-lookup').addEventListener('submit', function(event){
    event.preventDefault();

    var orderCode = this.querySelector('[name="orderCode"]').value;
    var email = this.querySelector('[name="email"]').value;

    api.order.status.lookup(orderCode, email)
        .then(function(response){
            // redirect to order status page
            window.location.href = response.url;
        })
        .catch(function(error){
            // display error
            alert(error.message);
        });
});

Produkty

api.product.compare.add

document.querySelector('a.compare-product').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.product.compare.add(123)
        .then(function(response){
            response.count // počet produktů v porovnání
            response.url // URL na stránku se srovnání produktů
        })
        .catch(function(error){
            // display error
            alert(error.message);
        });
});

api.product.compare.remove

document.querySelector('a.compare-product').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.product.compare.remove(123)
        .then(function(response){
            response.count // počet produktů v porovnání
            response.url // URL na stránku se srovnání produktů
        })
        .catch(function(error){
            // display error
            alert(error.message);
        });
});

api.product.compare.clear

document.querySelector('a.compare-product').addEventListener('click', function(event){
    event.preventDefault();

    // @todo loading
    api.product.compare.remove()
        .then(function(response){
        })
        .catch(function(error){
            // display error
            alert(error.message);
        });
});

api.log.feature.used

Logování použití funkce je určené na sledování méně používaných funkcí a po omezenou dobu - například pro A/B test. Název může být libovolný - používá se jen pro debug reportování.

document.querySelector('a.compare-product').addEventListener('click', function(event){
    event.preventDefault();

    api.log.feature.used('product-added-to-compare');
});

api.geo.suggest.location

Vrátí seznam míst (adres, měst, krajů, …) pro zadanou frázi. Volitelně lze omezit podle země („cz“) nebo ovlivnit výsledky podle souřadnic. Pokud není známá přesná poloha, mělo by se vždy používat alespoň se souřadnicemi z GeoIP

api.geo.suggest.location('Drtinova 10', 'cz', 50.0843, 14.4075);