README.md
# anymarket-php-sdk
Biblioteca que realiza integração com a API da [Anymarket](https=>//anymarket.com.br/)
[![Maintainability](https://api.codeclimate.com/v1/badges/f85cb8c0448cdc8e0a8f/maintainability)](https://codeclimate.com/github/somosyampi/anymarket-php-sdk/maintainability)
**Documentação oficial da API**
[http://developers.anymarket.com.br/](http://developers.anymarket.com.br/)
## Instalação via composer
```bash
$ composer require yampi/anymarket-php-sdk
```
## Serviços
Este SDK suporta os seguintes serviços:
- [Produtos](#produtos)
- [Skus](#skus)
- [Variações](#variações)
- [Valores de variação](#valores)
- [Estoques](#estoques)
- [Marcas](#marcas)
- [Categorias](#categorias)
- [Pedidos](#pedidos)
- [Callbacks](#callbacks)
### Configuração
Para utilizar este SDK, será necessário utilizar o token de acesso (GumgaToken) de sua conta na Anymarket, e setar qual o ambiente que será usado: `sandbox` ou `production`;
```php
use Yampi\Anymarket\Anymarket;
use Yampi\Anymarket\Services\Environment;
use Yampi\Anymarket\Exceptions\AnymarketException;
use Yampi\Anymarket\Exceptions\AnymarketValidationException;
// Ambiente de sandbox
$anymarket = new Anymarket('SEU_TOKEN', Environment::sandbox());
// Ambiente de produção
$anymarket = new Anymarket('SEU_TOKEN', Environment::production());
```
### Produtos
#### Buscar todos os produtos com um limite de 50 registros por página
```php
$product = $anymarket->product()->get(0, 50);
```
#### Buscar produto
```php
$product = $anymarket->product()->find('ID_PRODUTO');
```
#### Criar produto
```php
$product = $anymarket->product()->create([
'title '=> 'string',
'description '=> 'string',
'category '=> [
'id '=> 0,
'name '=> 'string',
'path '=> 'string'
],
'brand '=> [
'id '=> 0,
'name '=> 'string',
'partnerId '=> 'string'
],
'nbm '=> [
'id '=> 'string'
],
'origin '=> [
'id '=> 0
],
'model '=> 'string',
'videoUrl '=> 'string',
'gender '=> 'string',
'warrantyTime '=> 0,
'warrantyText '=> 'string',
'height '=> 0,
'width '=> 0,
'weight '=> 0,
'length '=> 0,
'priceFactor '=> 0,
'calculatedPrice '=> true,
'definitionPriceScope '=> 'string',
'characteristics '=> [
[
'index '=> 0,
'name '=> 'string',
'value '=> 'string'
]
],
'images '=> [
[
'main '=> true,
'url '=> 'string',
'variation '=> 'string'
]
],
'skus '=> [
[
'title '=> 'string ',
'partnerId '=> 'string ',
'ean '=> 'string ',
'amount '=> 0,
'price '=> 0,
'additionalTime '=> 0,
'variations '=> [
'variationName '=> 'VariationValue '
]
]
],
'allowAutomaticSkuMarketplaceCreation '=> true
]);
```
#### Atualizar produto
```php
$product = $anymarket->product()->update('ID_PRODUTO', [
'title' => 'string',
'description' => 'string',
'category' => [
'id' => 0,
'name' => 'string',
'path' => 'string'
],
'brand' => [
'id' => 0,
'name' => 'string',
'partnerId' => 'string'
],
'nbm' => [
'id' => 'string'
],
'origin' => [
'id' => 0
],
'model' => 'string',
'videoUrl' => 'string',
'gender' => 'string',
'warrantyTime' => 0,
'warrantyText' => 'string',
'height' => 0,
'width' => 0,
'weight' => 0,
'length' => 0,
'priceFactor' => 0,
'calculatedPrice' => true,
'definitionPriceScope' => 'string',
'characteristics' => [
[
'index' => 0,
'name' => 'string',
'value' => 'string'
]
],
'images' => [
[
'main' => true,
'url' => 'string',
'variation' => 'string'
]
],
'skus' => [
[
'title' => 'string',
'partnerId' => 'string',
'ean' => 'string',
'amount' => 0,
'price' => 0,
'variations' => [
'variationName' => 'VariationValue'
]
]
],
'allowAutomaticSkuMarketplaceCreation' => true
]);
```
#### Atualizar título de um produto
```php
$product = $anymarket->product()->updateTitle('ID_PRODUTO', 'TÍTULO');
```
### Skus
**É necessario utlizar setProduct para utlizar esse recurso**
```php
$anymarket->sku()->setProduct('ID_PRODUTO');
```
#### Buscar SKUS de um produto
```php
$sku = $anymarket->sku()->setProduct('ID_PRODUTO')->get(0, 50);
```
#### Buscar SKU de um produto
```php
$sku = $anymarket->sku()->setProduct('ID_PRODUTO')->find('ID_SKU');
```
#### Criar um SKU
```php
$sku = $anymarket->sku()->setProduct('ID_PRODUTO')->create([
'title' => 'string',
'partnerId' => 'string',
'ean' => 'string',
'amount' => 0,
'price' => 0,
'additionalTime' => 0,
'variations' => [
'variationName' => 'VariationValue'
]
]);
```
#### Atualizar um SKU
```php
$sku = $anymarket->sku()->setProduct('ID_PRODUTO')->update('ID_SKU', [
'title ' => 'string ',
'partnerId ' => 'string ',
'ean ' => 'string ',
'price ' => 0,
'sellPrice ' => 0
]);
```
#### Atualizar título de um SKU
```php
$sku = $anymarket->sku()->setProduct('ID_PRODUTO')->updateTitle('ID_SKU', 'TÍTULO')
```
#### Atualizar preço de um SKU
```php
$sku = $anymarket->sku()->setProduct('ID_PRODUTO')->updatePrice('ID_SKU', 12.00, 10.00);
```
### Variações
#### Buscar todas as variações
Para realizar a busca de variações é necessário passar os parâmetros offset e limit
```php
$variation = $anymarket->variation()->get(0, 50);
```
#### Buscar variação
```php
$variation = $anymarket->variation()->find('ID_VARIAÇÃO');
```
#### Criar variação
```php
$variation = $anymarket->variation()->create([
'name' => 'string',
'partnerId' => 'string',
'visualVariation' => true,
'values' => [
[
'description' => 'string'
]
]
]);
```
#### Atualizar variação
```php
$variation = $anymarket->variation()->update('ID_VARIAÇÃO', [
'name' => 'string',
'partnerId' => 'string',
'visualVariation' => true
]);
```
#### Excluir uma variação
```php
$variation = $anymarket->variation()->delete('ID_VARIAÇÃO');
```
### Valores de uma variação
**É necessário utilizar o método `setVariation()` neste recurso**
```php
$anymarket->variationValue()->setVariation('ID_VARIAÇÃO')
```
#### Buscar valores de uma variação
```php
$value = $anymarket->variationValue()->setVariation('ID_VARIAÇÃO')->get(0, 50);
```
#### Buscar um valor de variação
```php
$value = $anymarket->variationValue()->setVariation('ID_VARIAÇÃO')->find('ID_VALOR');
```
#### Criar um valor para uma variação
```php
$value = $anymarket->variationValue()->setVariation('ID_VARIAÇÃO')->create([
'description' => 'string',
'partnerId' => 'string'
])
```
#### Atualizar valor de uma variação
```php
$value = $anymarket->variationValue()->setVariation('ID_VARIAÇÃO')->update('ID_VALOR', [
'description' => 'string',
'partnerId' => 'string'
]);
```
#### Excluir valor de uma variação
```php
$value = $anymarket->variationValue()->setVariation('ID_VARIAÇÃO')->find('ID_VALOR');
```
### Estoques
#### Criar estoque
```php
$stock = $anymarket->stock()->create([
'id '=> 0,
'partnerId '=> 0,
'quantity '=> 0,
'cost '=> 0,
'additionalTime '=> 0,
'stockLocalId '=> 0
]);
```
#### Atualizar estoque
```php
$stock = $anymarket->stock()->update('ID_SKU', [
'id '=> 0,
'partnerId '=> 0,
'quantity '=> 0,
'cost '=> 0,
'additionalTime '=> 0,
'stockLocalId '=> 0
]);
```
#### Atualizar quantidade em estoque
```php
$stock = $anymarket->stock()->updateStockQuantity('ID_SKU', 10);
```
#### Atualizar preço de estoque
```php
$stock = $anymarket->stock()->updatePrice('ID_SKU', 100.00);
```
#### Buscar locais de estoque
```php
$stock = $anymarket->stock()->getLocals()
```
### Marcas
#### Buscar todas as marcas
Para realizar a busca das marcas é necessario passar os parâmetros offset e limit
```php
$brands = $anymarket->brand()->get(0, 50);
```
#### Buscar marca
```php
$brands = $anymarket->brand()->find('ID_MARCA');
```
#### Criar marca
```php
$brand = $anymarket->brand()->create([
'name' => 'Nome da marca',
'partnerId' => 'ID da marca no parceiro'
]);
```
#### Atualizar marca
```php
$brand = $anymarket->brand()->update('ID_MARCA', [
'name' => 'Atualização de marca'
]);
```
#### Excluir marca
```php
$brand = $anymarket->brand()->delete('ID_MARCA');
```
### Categorias
#### Buscar todas as categorias
Para realizar a busca das categorias é necessario passar os parâmetros offset e limit
```php
$category = $anymarket->category()->get(0, 50);
```
#### Buscar categoria
```php
$category = $anymarket->category()->find('ID_CATEGORIA');
```
#### Criar categoria
```php
$category = $anymarket->category()->create([
'name' => 'Categoria',
'partnerId' => '123',
'priceFactor' => 1,
'calculatedPrice' => true,
'definitionPriceScope' => 'SKU'
]);
```
#### Atualizar categoria
```php
$category = $anymarket->category()->update('ID_CATEGORIA', [
'name' => 'Atualizar categoria',
'partnerId' => '1234',
'priceFactor' => 1,
'calculatedPrice' => true,
'definitionPriceScope' => 'SKU'
]);
```
#### Excluir categoria
```php
$category = $anymarket->category()->delete('ID_CATEGORIA');
```
### Pedidos
#### Buscar todos os pedidos
Para realizar a busca dos pedidos é necessario passar os parâmetros offset e limit
```php
$orders = $anymarket->order()->get(0, 50);
```
#### Buscar pedido
```php
$orders = $anymarket->order()->find('ID_PEDIDO');
```
#### Atualizar status do pedido
```php
$orders = $anymarket->order()->updateStatus('ID_PEDIDO', [
'status' => 'string',
'invoice' => [
'accessKey' => 'string',
'series' => 'string',
'number' => 'string',
'date' => '2019-04-23T13=>25=>53Z',
'cfop' => 'string',
'companyStateTaxId' => 'string'
]
]);
```
#### Consultar feed de pedidos
```php
$orders = $anymarket->order()->feed()
```
#### Atualizar feed de pedidos
```php
$orders = $anymarket->order()->feedUpdate('ID_FEED', 'TOKEN_FEED');
```
### Callbacks
#### Buscar todas as callbacks
Para realizar a busca das callbacks é necessário passar os parâmetros offset e limit
```php
$callbacks = $anymarket->callback()->get(0, 50);
```
#### Buscar callback
```php
$callback = $anymarket->callback()->find('ID_CALLBACK');
```
#### Criar callback
```php
$callback = $anymarket->callback()->create([
'url' => 'URL de callback',
]);
```
#### Atualizar callback
```php
$callback = $anymarket->callback()->update('ID_CALLBACK', [
'url' => 'URL de callback'
]);
```
#### Excluir callback
```php
$callback = $anymarket->callback()->delete('ID_CALLBACK');
```