Tabela de preço para usuário logado

Olá!

Eu desenvolvo apps externos e utilizo as APIs REST da VTEX.

Possuo um cliente que possui preços especiais de acordo com uma regra criada dessa forma: https://help.vtex.com/pt/tutorial/configurar-price-tables-especificas--5S9oDOMHNmY4K0kAewAiWY

No site, quando o usário está logado, os preços especiais aparecem corretamente na busca e no checkout.

Eu utilizo os endpoints api/vtexid/pub/authentication/start e api/vtexid/pub/authentication/classic/validate para autenticar o usuário e pegar o authCookie

{
    "authStatus": "Success",
    "promptMFA": false,
    "lastAttemptAvailable": null,
    "clientToken": null,
    "authCookie": {
        "Name": "VtexIdclientAutCookie_vendor",
        "Value": "eyJhbGciOiJFUzI1NiIsImtpZCI6IjhCMUZEMjlENzRGMzBEQzhDQzcyQjFDMzAzOTc0OEIzNDQ0REE0OTUiLCJ0eXAiOiJqd3QifQ.eyJzdWIiOiJpZ29yLm5hc3NpZkBjb3"
    },
    "accountAuthCookie": {
        "Name": "VtexIdclientAutCookie_64c257eb-e3ba-43fe-9ca2-9bc0ffaecb9e",
        "Value": "eyJhbGciOiJFUzI1NiIsImtpZCI6IjhCMUZEMjlENzRGMzBEQzhDQzcyQjFDMzAzOTc0OEIzNDQ0REE0OTUiLCJ0eXAiOiJqd3QifQ.eyJzdWIiOiJpZ29yLm5hc3NpZkBjb3JlYml6LmFnIiwiYWNjb3VudCI6InNvcnZvZWMiLCJhdWRpZW5jZSI6IndlYnN0b3JlIiwic2VzcyI6IjI2NzI1YWVlLWRhNTQtNDVmNi04Yzk3LTYwZjdiMjI0ZmJmOSIsImV4cCI6MTY4OTY4NTkyNS"
    },
    "expiresIn": 86399,
    "userId": "e7e45e20-055f-4a41-bd3b-e91e",
    "phoneNumber": null,
    "scope": null
}

Não sei o motivo, mas apenas esse endpoint consta na documentação: VTEX ID. Ele apenas gera um token para a appKey e appToken.

Quando eu faço uma busca pelo https://{{accountName}}.{{environment}}.com.br/api/catalog_system/pub/products/search, os produtos são retornados com o preço da tabela principal.

Já tentei passar tanto o VtexIdclientAutCookie_vendor, quanto o VtexIdclientAutCookie_64c257eb-e3ba-43fe-9ca2-9bc0ffaecb9e no header, mas sem sucesso.

Como faço para a API entender o contexto do usuário logado?

Oi, Igor!

Estes cookies armazenam apenas a autenticação em si. O sistema responsável por armazenar contexto do usuário é o VTEX Session, que trabalha com os cookies “vtex_session” e “vtex_segment”.

Você pode ter um overview aqui: Sessions System Overview

Não tenho experiência direta com a implementação headless desse fluxo e também não sei se há um guia/documentação direcionada sobre sua necessidade, mas desconfio fortemente que um simples POST /api/sessions sem enviar nenhuma informação será o suficiente tanto para receber os cookies de contexto quanto alimentá-los com o usuário logado (de forma automática, a partir dos cookies de autenticação que já vão trafegar no request HTTP). :smiley:

Olá, @garrucho !

Muito obrigado pela resposta. Eu até já havia tentado criar uma session, mas nenhum dos dois cookies era retornado.

A documentação diz que o body é obrigatório, então eu estava tentando criar passando o país e um postal code.

Como o cliente é do Equador e eles não usam postal code, não me retornava nada. Seguindo sua dica, passei apenas o país e retornou com os cookies.

Só não vi onde eu posso adicionar o e-mail do cliente nos dados da sessão. Mas lendo o link que você enviou, acho que vou ter que passar a tabela de preço naquele vtex_segment, correto? Então eu vou ter que verificar se o cliente possui alguma tabela especial e controlar isso na sessão.

Ou eu consigo informar o cliente logado em algum lugar?

[EDIT]

Como faço para informar o usuário logado?