skyhub
Version:
461 lines • 15.3 kB
TypeScript
import { EventEmitter } from 'eventemitter3';
export declare namespace SkyHub {
interface Parameters {
/** User email for 'X-User-Email' header */
userEmail: string;
/** Api Key or token for 'X-Api-Key' header */
apiKey: string;
/** Account Manager Key for 'X-Accountmanager-Key' header */
accountManagerKey: string;
}
interface IResult<T> {
success: boolean;
response: T;
httpStatus: number;
statusText: string;
elapsed: number;
}
interface IGetPedidos {
total: number;
orders: Array<Order>;
}
class Address {
/** Exemplo: "Nome do comprador"*/
full_name: string;
/** Exemplo: "Rua de teste"*/
street: string;
/** Exemplo: 1234*/
number: number;
/** Exemplo: "Ponto de referência teste"*/
detail: string;
/** Exemplo: "Bairro teste"*/
neighborhood: string;
/** Exemplo: "Cidade de teste"*/
city: string;
/** Exemplo: "UF"*/
region: string;
/** Exemplo: "BR"*/
country: string;
/** Exemplo: "90000000"*/
postcode: string;
}
class OrderPayment {
}
class OrderItem {
/** Exemplo: "teste002-azul"*/
id: string;
/** Exemplo: "teste002"*/
product_id: string;
/** Exemplo: "Produto de teste com variação"*/
name: string;
/** Exemplo: 1*/
qty: number;
/** Exemplo: 0.85*/
original_price: number;
/** Exemplo: 0.85*/
special_price: number;
}
class Order {
/**
Exemplo: "Marketplace-000000002"
*/
code: string;
/**
Exemplo: "Marketplace"
*/
channel: string;
/**
Exemplo: "2015-01-01T10:10:00-03:00"
*/
placed_at: string;
/**
Exemplo: "2015-01-01T10:10:00-03:00"
*/
updated_at: string;
/**
Exemplo: 5.85
*/
total_ordered: number;
/**
Exemplo: 0
*/
interest: number;
/**
Exemplo: 5
*/
shipping_cost: number;
/**
Exemplo: "Transportadora"
*/
shipping_method: string;
/**
Exemplo: "2015-01-10T10:10:10-03:00"
*/
estimated_delivery: string;
/**
Exemplo: null
*/
estimated_delivery_shift: object;
/**
Exemplo: { "full_name": "Nome do recebedor", "street": "Rua de teste", "number": 1234, "detail": "Ponto de referência teste", "neighborhood": "Bairro teste", "city": "Cidade de teste", "region": "UF", "country": "BR", "postcode": "90000000" }
*/
shipping_address: Address;
/**
Exemplo: { "full_name": "Nome do comprador", "street": "Rua de teste", "number": 1234, "detail": "Ponto de referência teste", "neighborhood": "Bairro teste", "city": "Cidade de teste", "region": "UF", "country": "BR", "postcode": "90000000" }
*/
billing_address: Address;
/**
Exemplo: { "name": "Nome do comprador", "email": "comprador@exemplo.com.br", "date_of_birth": null, "gender": "", "vat_number": 12312312309, "phones": ["8899999999"] }
*/
customer: Customer;
/**
Exemplo: [{ "id": "teste002-azul", "product_id": "teste002", "name": "Produto de teste com variação", "qty": 1, "original_price": 0.85, "special_price": 0.85 }]
*/
items: Array<OrderItem>;
/**
Exemplo: { "code": "payment_received", "label": "Pagamento aprovado", "type": "APPROVED" }
*/
status: OrderStatus;
/**
Exemplo: "NOT_SYNCED" ou "SYNCED"
*/
sync_status: string | 'SYNCED' | 'NOT_SYNCED';
/**
Exemplo: []
*/
invoices: Array<OrderInvoice>;
/**
Exemplo: []
*/
shipments: Array<OrderShipment>;
/**
Exemplo: []
*/
payments: Array<OrderPayment>;
}
/** Interface para definição de atributos como: Tamanho, Cor, Crossdocking, etc
* Exemplo: { "key": "Tamanho", "value: "M" }
* */
class Specification {
/** Exemplo: Tamanho */
key: string;
/** Exemplo: M */
value: string;
}
/** Interface para definição de categorias
* Exemplo: { "code": "01", "name": "Blusa" }
* Exemplo Sub-categoria: { "code": "02", "name": "Blusa > Manga Curta" }
* */
class Category {
/** Exemplo: "01" */
code: string;
/** Exemplo: "skyhub homologação" */
name: string;
}
class SimpleProduct {
/** Exemplo: "200" */ sku: string;
/** Exemplo: "PRODUTO SIMPLES" */ name: string;
/** Exemplo: "PRODUTO SIMPLES" */ description: string;
/** Exemplo: "enable" */ status: string;
/** Exemplo: 0 */ qty: number;
/** Exemplo: 100 */ price: number;
/** Exemplo: 89.99 */ promotional_price: number;
/** Exemplo: 49 */ cost: number;
/** Exemplo: 3 */ weight: number;
/** Exemplo: 1 */ height: number;
/** Exemplo: 1 */ width: number;
/** Exemplo: 1 */ length: number;
/** Exemplo: "SKYHUB" */ brand: string;
/** Exemplo: "" */ ean: string;
/** Exemplo: "" */ nbm: string;
/** Exemplo: [{ "code": "01", "name": "skyhub homologação" }] */ categories: Array<Category>;
/** Exemplo: [""] */ images: Array<string>;
/** Exemplo: [{ "key": "Tamanho", "value": "M" }] */ specifications: Array<Specification>;
}
class Variation {
/**
Exemplo: "COD_SKU_VARIACAO"
*/
sku: string;
/**
Exemplo: 10
*/
qty: number;
/**
Exemplo: "9876543210987"
*/
ean: string;
/**
Exemplo: ["http://d26lpennugtm8s.cloudfront.net/stores/154/284/products/camiseta-lisa-verde-bandeira-algodo-p-ao-gg-pronta-entrega-355901-mlb20431777049_092015-o-07fadec89e5ed54705c1b9ab5411dec8-1024-1024.jpg"]
*/
images: Array<string>;
/**
Exemplo: [{ "key": "Cor", "value": "Verde" }, { "key": "Tamanho", "value": "M" }]
*/
specifications: Array<Specification>;
}
class ProductWithVariation {
/**
Exemplo: "CODIGO_SKU"
*/
sku: string;
/**
Exemplo: "DESCRICAO PRODUTO"
*/
name: string;
/**
Exemplo: "CRIAR PRODUTO COM UMA VARIAÇÃO"
*/
description: string;
/**
Exemplo: "enabled"
*/
status: string;
/**
Exemplo: 30
*/
price: number;
/**
Exemplo: 29.9
*/
promotional_price: number;
/**
Exemplo: 0
*/
cost: number;
/**
Exemplo: 0.1
*/
weight: number;
/**
Exemplo: 20
*/
height: number;
/**
Exemplo: 30
*/
width: number;
/**
Exemplo: 20
*/
length: number;
/**
Exemplo: "Marca"
*/
brand: string;
/**
Exemplo: "98769898"
*/
nbm: string;
/**
Exemplo: [{ "code": "01", "name": "SKYHUB HOMOLOGAÇÃO" }]
*/
categories: Array<Category>;
/**
Exemplo: ["http://d26lpennugtm8s.cloudfront.net/stores/154/284/products/camiseta-lisa-verde-bandeira-algodo-p-ao-gg-pronta-entrega-355901-mlb20431777049_092015-o-07fadec89e5ed54705c1b9ab5411dec8-1024-1024.jpg"]
*/
images: Array<string>;
/**
Exemplo: [{ "key": "Especicações do Produto PAI", "value": "Especificações do Produto PAI" }]
*/
specifications: Array<Specification>;
/**
Exemplo: [{ "sku": "COD_SKU_VARIACAO", "qty": 10, "ean": "9876543210987", "images": ["http://d26lpennugtm8s.cloudfront.net/stores/154/284/products/camiseta-lisa-verde-bandeira-algodo-p-ao-gg-pronta-entrega-355901-mlb20431777049_092015-o-07fadec89e5ed54705c1b9ab5411dec8-1024-1024.jpg"], "specifications": [{ "key": "Cor", "value": "Verde" }, { "key": "Tamanho", "value": "M" }] }]
*/
variations: Array<Variation>;
/**
Exemplo: ["Cor", "Tamanho"]
*/
variation_attributes: Array<string>;
}
class OrderShipment {
/**
Exemplo: "Submarino-1493069158776"
*/
code: string;
/**
Exemplo: [{ "sku": "1001", "qty": 1 }]
*/
items: Array<OrderShipmentItem>;
/**
Exemplo: { "code": "BR1321830198302DR", "carrier": "Correios", "method": "SEDEX", "url": "www.correios.com.br" }
*/
track: OrderShipmentTrack;
}
class OrderShipmentItem {
/**
Exemplo: "1001"
*/
sku: string;
/**
Exemplo: 1
*/
qty: number;
}
class OrderShipmentTrack {
/**
Exemplo: "BR1321830198302DR"
*/
code: string;
/**
Exemplo: "Correios"
*/
carrier: string;
/**
Exemplo: "SEDEX"
*/
method: string;
/**
Exemplo: "www.correios.com.br"
*/
url: string;
}
class OrderStatus {
/** Exemplo: "payment_received"*/ code: string;
/** Exemplo: "Pagamento aprovado"*/ label: string;
/** Exemplo: "APPROVED"*/ type: string;
}
class OrderInvoice {
/** Exemplo: "99999999999999999999999999999999999999999999" */
key: string;
}
class Customer {
/**
Exemplo: "Nome do comprador"
*/
name: string;
/**
Exemplo: "comprador@exemplo.com.br"
*/
email: string;
/**
Exemplo: null
*/
date_of_birth: string;
/**
Exemplo: ""
*/
gender: string;
/**
Exemplo: 12312312309
*/
vat_number: number;
/**
Exemplo: ["8899999999"]
*/
phones: Array<string>;
}
interface Headers {
'X-User-Email': string;
'X-Api-Key': string;
'X-Accountmanager-Key': string;
'Accept': 'application/json;charset=UTF-8';
'Content-Type': 'application/json';
}
interface IClient {
on(event: 'status-429', listener: Function): any;
}
class Client extends EventEmitter implements IClient {
private headers;
private client;
private lastResponse;
private post;
private get;
/**
*
* @param {string} api
* @param {any} data
* @returns {{ success: boolean, response: any, httpStatus: number, statusText: string, elapsed: number }}
*/
private put;
/**
*
* @param {string} api
* @param {any} data
* @returns {{ success: boolean, response: any, httpStatus: number, statusText: string, elapsed: number }}
*/
private delete;
constructor(parameters: SkyHub.Parameters);
/**
* Max Products Returned Per Page: 100
* @param page (min: 1)
* @param per_page (max: 100)
*/
getProdutos(page?: number, per_page?: number): Promise<IResult<any>>;
/**
* Lista os produtos cadastrados agrupados por página (conforme parametro 'per_page', suportado no máx 100)
* NOTA: Não será possível listar mais que 10.000 (dez mil) itens
*/
getProduto(codigo_sku: string): Promise<any>;
/**
* Cadastra um novo Produto
*/
postProduto(product: SkyHub.SimpleProduct | SkyHub.ProductWithVariation): Promise<any>;
/**
* Atualiza Cadastro do Produto
* Nota: Atualiza apenas campos informados no parametro produto
* @param {Produto} produto Campos informados serão atualizados, campos não informados serão mantidos os valores atuais
* @returns {SkyHub.IResult<SkyHub.PutProduto>}
*/
putProduto(sku: string, produto: SkyHub.SimpleProduct | SkyHub.ProductWithVariation): Promise<any>;
/**
* Remove um Produto
*/
deleteProduto(sku: string): Promise<any>;
/** Retorna 1 Pedido da fila
* */
getPedidoNaFila(): Promise<any>;
/** Retorna lista de pedidos
*/
getPedidos(): Promise<any>;
/**
* Retorna 1 único pedido
*/
getPedido(id_pedido: string): Promise<any>;
/**
* Confirma o Processamento (gravação no ERP) do pedido, removendo-o da fila de pedidos do SkyHub
*/
confirmarProcessamentoPedido(id_pedido_skyhub: string): Promise<any>;
/**
* Altera Status do Pedido para 'Aprovado' no SkyHub
* NOTA: ESTA CHAMADA NÃO ESTÁ DISPONÍVEL EM PRODUÇÃO!
* @param {string} id_pedido_skyhub
* @returns {Promise<SkyHub.IResult<SkyHub.ISetPedidoAprovado>>}
*/
setPedidoAprovado(id_pedido_skyhub: string): Promise<any>;
/**
* Altera Status do Pedido para 'Faturado' no SkyHub, vinculando a chave de acesso
* @param {string} id_pedido_skyhub
* @param {string} chaveAcesso
* @returns {Promise<SkyHub.IResult<SkyHub.ISetPedidoFaturado>>}
*/
setPedidoFaturado(id_pedido_skyhub: string, chaveAcesso: string): Promise<any>;
/**
* Altera Status do Pedido para 'Não Entregue' no SkyHub
*/
setPedidoNaoEntregue(id_pedido_skyhub: string, obs: string): Promise<any>;
/**
* Altera Status do Pedido para 'Entregue a Transportadora' no SkyHub, vinculando dados da Transportadora
*/
setPedidoEntregueTransportadora(id_pedido_skyhub: string, shipment: SkyHub.OrderShipment): Promise<any>;
/**
* Altera Status do Pedido para 'Entregue ao Cliente' no SkyHub
*/
setPedidoEntregueCliente(id_pedido_skyhub: string): Promise<any>;
/**
* Altera Status do Pedido para 'Cancelado' no SkyHub
* @param id_pedido_skyhub
*/
setPedidoCancelado(id_pedido_skyhub: string): Promise<any>;
/**
* Cria um novo pedido no SkyHub
* IMPORTANTE: Esta chamada só funciona em homologação
* @param {SkyHub.NewOrder} order
* @returns {Promise<SkyHub.IResult<SkyHub.INovoPedidoTeste>>}
*/
novoPedidoTeste(order: any): Promise<any>;
}
}
declare const _default: typeof SkyHub.Client;
export default _default;
//# sourceMappingURL=skyhub.d.ts.map