@noue/tpl
v0.3.0
Published
Pacote de integração com a API da TPL
Downloads
44
Maintainers
Readme
@noue/tpl
SDK TypeScript para integração com a API da TPL (https://oms.tpl.com.br/api).
Instalação
npm install @noue/tplUso rápido
import { Tpl } from '@noue/tpl'
const client = new Tpl()
const auth = await client.auth.login({
apikey: 'SUA_API_KEY',
token: 'SEU_TOKEN',
email: '[email protected]',
})
const authedClient = new Tpl(auth.token)Cliente
const client = new Tpl(authToken?, baseUrl?)authToken(opcional): token retornado emauth.login.baseUrl(opcional): padrãohttps://oms.tpl.com.br/api.
Módulos disponíveis
auth
login(body)
Endpoint: POST /get/auth
const result = await client.auth.login({
apikey: 'SUA_API_KEY',
token: 'SEU_TOKEN',
email: '[email protected]',
})orders
find(params)
Endpoint: POST /get/orderdetail
Aceita um dos formatos:
{ id: number | bigint }{ number: string }
const byId = await client.orders.find({ id: 12345 })
const byNumber = await client.orders.find({ number: 'PED-12345' })shipping
validateZipcode(params)
Endpoint: POST /get/valid-zipcode
Payload:
{ zipcode: string }
const zipcode = await client.shipping.validateZipcode({
zipcode: '13270000',
})Resposta de sucesso:
{
"code": 200,
"message": "Sucesso",
"dados": [
{
"cidade": "Valinhos",
"logradouro": "",
"bairro": "Centro",
"uf": "SP"
}
]
}Quando o CEP não é encontrado, a API responde 404 (ex.: { "code": 404, "message": "CEP nao encontrado" }) e o SDK lança erro.
getFreight(params)
Endpoint: POST /get/freight
Payload nesta versão:
identification?: stringto: stringweight: number(gramas)value: number(valor do pedido sem frete)
const freight = await client.shipping.getFreight({
identification: '12345678901',
to: '13270000',
weight: 1200,
value: 199.9,
})Resposta (exemplo real):
[
{
"shipmentCompany": "Loggi (4 dias)",
"deadline": 4,
"value": "9.90",
"originalvalue": "8.20",
"region": "INTERIOR",
"observation": "",
"safe": 0,
"cost": 0,
"safecost": 0,
"role": "0",
"extra": 0,
"extraWeight": "0",
"extraValue": "0.00",
"icms": 0.88,
"iss": "0",
"aplicou": 0,
"weightVolume": 15,
"weightm3": -1,
"shipmentId": "3",
"state": "SP",
"cubageFactor": "167.00"
}
]Observação: no retorno de frete, campos numéricos podem vir como string ou number dependendo da regra aplicada pela API.
products
find(skus?)
Endpoint: POST /get/products
Retorna uma lista de produtos ou kits. Se skus não for informado (ou for vazio), retorna todos os produtos.
// Todos os produtos
const all = await client.products.find()
// SKUs específicos
const some = await client.products.find(['SECA.0003', 'SERU.0211'])Resposta de sucesso (exemplo):
{
"code": 200,
"stock": [
{
"type": "P",
"ean": "",
"sku": "SECA.0003",
"kit": "",
"descricao": "SECADOR DE CABELO LEAFLESS- 220V",
"unidade": "UN",
"code": 200,
"amount": 32,
"composition": []
},
{
"type": "K",
"ean": "170",
"sku": "3GUMMYUVA",
"kit": "SEM GTIN",
"descricao": "_",
"unidade": "",
"code": 200,
"amount": 0,
"composition": [
{
"sku": "SEM GTIN",
"ean": "170",
"descricao": "NEW HAIR GUMMY UVA VERDE",
"unidade": "UN",
"use": 3,
"amount": -16
}
]
}
]
}Códigos de erro da API:
400: já há um auth em uso (aguardar 1h)402: dados recebidos inválidos404: apikey/token não identificados500: cliente bloqueado
Tratamento de erros
Para respostas HTTP fora de 2xx, o SDK lança erro contendo:
messagestatusCoderesponse(quando retornado pela API)
try {
await client.shipping.validateZipcode({ zipcode: '00000000' })
}
catch (error: any) {
console.error(error.statusCode)
console.error(error.response)
}