Dúvidas Frequentes: O que são as chamadas de “ValidateSession” e “ValidateCart” que acontecem na minha loja em FastStore?

Esse tópico tem como objetivo ajudar os clientes que hoje operam em um front na tecnologia da VTEX “FastStore” e estão com dúvidas acerca das chamadas de “ValidateSession” e “ValidateCart”, que acontecem constantemente na loja e que podem ser validadas através do Chrome DevTools > Network.

Afinal, o que são essas chamadas e porquê elas existem? :thinking:

Hoje, o ambiente no qual a Faststore opera é desacoplado dos demais ambientes nos quais as Commerce APIs da VTEX, como checkout, pricing, logistics, etc. rodam.

Nesse sentido, para que a Faststore consiga se comunicar com esses módulos é necessário criar uma camada de integração desse front com essas APIs que são necessárias para a jornada de compra do usuário final.

Visando sanar a questão apresentada é que existe uma camada de APIs graphQL que roda entre a Faststore e as Core APIs da VTEX, permitindo essa comunicação e a sincronização de algumas informações.

Duas dessas chamadas de sincronização mais importantes são as de “ValidateSession” e “ValidateCart”, que visam sincronizar as alterações relacionadas ao Session do usuário e as informações do carrinho dele, respectivamente.

Abaixo explico um pouco melhor como cada uma funciona em detalhes:

A chamada de “ValidateSession” é uma mutation da camada de graphQL mencionada anteriormente, que busca validar e sincronizar ações que causem possíveis mudanças nas informações de session do cliente.

Para entender quais informações que ficam armazenadas dentro da session de um usuário recomendo a leitura da seguinte documentação: Sessions System Overview

Todos os dados citados na documentação acima são sincronizados entre a FastStore e o sistema de Sessions da VTEX através da mutation de “ValidateSession”. Segue abaixo um exemplo do payload dessa chamada de um usuário logado em uma loja Faststore:

No payload podemos ver informações acerca do salesChannel daquele usuário, country, currency, locale, email, etc.

A chamada no Network do DevTools que representa essa chamada é a /api/graphql?operationName=ValidateSession.

Em relação a chamada de “ValidateCart” ela tem o objetivo de sincronizar possíveis ações que alterem informações relacionadas ao carrinho de determinado usuário, que ficam armazenadas dentro do orderForm daquele cliente.

Dentro do payload da chamada de “ValidateCart” existem dois objetos: de “cart” e de “session”. O “cart” traz as informações de carrinho em si, enquanto o “session” também puxa os dados da sessão do usuário.

Dentro do “cart” temos as informações acerca do item, do seller, preço e o ID daquele orderform, que fica dentro do campo de “orderNumber”.

Segue abaixo um exemplo do payload dessa chamada de um usuário com um item no carrinho:

Note que todas as chamadas acompanham um campo de “operationHash”, que gera um ID/hash que identifica aquele request.

Para entender mais no detalhe como essas operações funcionam recomendo a leitura e compreensão dos resolvers dessas mutations, que estão presentes dentro do código do pacote da faststore. Seguem os links abaixo:

ValidateCart - https://github.com/vtex/faststore/blob/c75d1f53d7efeae52483db94d9e66ddbebb8de5f/packages/api/src/platforms/vtex/resolvers/validateCart.ts

ValidateSession - https://github.com/vtex/faststore/blob/c75d1f53d7efeae52483db94d9e66ddbebb8de5f/packages/api/src/platforms/vtex/resolvers/validateSession.ts

Caso ainda tenha alguma dúvida sobre o assunto, sinta-se à vontade para perguntar por aqui! Será um prazer respondê-lo e ajudá-lo!

3 Likes