Duas advertências primeiro:
Este artigo é destinado aos desenvolvedores; é técnico e demonstra ferramentas e técnicas que não são comumente vistas pelos usuários comerciais.
CargoSnap usa ferramentas como Excel, Power Query e Power Automate nestes exemplos. Estas são soluções Microsoft e não fazem parte da oferta de produtos da CargoSnap. Nós não fornecemos, vendemos ou suportamos estas ferramentas! Apenas as achamos fantásticas para atingir objetivos comerciais, mas você pode escolher um produto concorrente ou usar a funcionalidade descrita em seu próprio WMS/TMS.
DICA! Tenha a documentação da API da CargoSnap em fácil acesso! 😉
Obtendo seus dados no Excel, a partir da API
Deseja obter seus dados do CargoSnap no Excel (ou PowerBI e similares)? Confira este vídeo explicativo:
Usando Webhooks e chamadas API para seu caso de uso específico
"Se isso acontecer, então esta ação deve ontecer". Há tantos cenários imagináveis. Com Webhooks e API's você pode agora fazer isso acontecer! Siga esta demonstração onde mostramos um caso de uso sendo resolvido com o Microsoft Power Automate:
Observe que este fluxo de vídeo retrata um 'fluxo feliz'; um onde as condições são cumpridas e todos os dados são bem formados. Para o código de nível de produção, você provavelmente vai querer incluir mais algumas verificações de sanidade da base.
Anexo: Paginação
Para lidar com a Paginação em Power Query, os seguintes trechos serão úteis:
Para o ponto final/formas:
let
Source = List.Skip(List.Generate( () => [Counter = 0, isMore = true], each [isMore] <> false,
each [WebCall = Json.Document(Web.Contents( "https://api.cargosnap.com/api/v2/forms/[my-form-id]?"
& "token=[my-API-token]"
& "&limit=250"
& "&startdate=2020-01-01"
& "&enddate=2020-12-31"
& "&page=" & Number.ToText(Counter))),
isMore = if [Counter] < 1 then null else
if [WebCall][current_page] = [WebCall][last_page] then false else true,
Counter = [Counter] + 1
]
), 1),
#"Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
Para o ponto final / arquivos:
let
Source = List.Skip(List.Generate( () => [Counter = 0, isMore = true],
each [isMore] <> false,
each [WebCall = Json.Document(Web.Contents( "https://api.cargosnap.com/api/v2/files?"
& "token=[my-API-token]"
& "&limit=250"
& "&startdate=-2020-01-01"
& "&enddate=2020-12-31"
& "&page=" & Number.ToText(Counter))),
isMore = if [Counter] < 1 then null else
if [WebCall][current_page] = [WebCall][last_page] then false else true,
Counter = [Counter] + 1
]
), 1),
#"Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error)