Como pegar o AddressID

Bom dia pessoal!

Como faço para pegar o AddressID?
Estou criando um endereço novo nesse endpoint. No entanto ele me retorna alguns valores que não parecem ser um AddressId

Quero usar esse ID para utilizar o seguinte endpoint

1 Like

Opa @leoamaral tudo bem? Vamos ver se eu entendi e vou deixar alguns caminhos para você testar.

Com base no seu print, idealmente:

  1. Criação de um Endereço:
  • Quando você cria um novo endereço na VTEX, ele é armazenado dentro da entidade AD (que é a abreviação para Address no Master Data).
  • Após a criação, você recebe um DocumentId como mostrado na sua imagem, que é o identificador único desse registro dentro da entidade AD.
  1. Recuperando o AddressID:
  • Para obter detalhes específicos sobre o endereço, incluindo o AddressID, você deve fazer um GET na URL retornada no campo Href. Esse GET retornará todos os dados do endereço armazenado.
  • O AddressID que você está procurando pode estar incluído na resposta como parte dos dados detalhados do endereço.

Uso do AddressID na API de Assinaturas:

  • Após recuperar os detalhes do endereço usando o DocumentId (e verificar o conteúdo retornado), você deve encontrar o AddressID dentro desses detalhes.
  • Esse AddressID será o que você precisa para manipular assinaturas usando o endpoint da API de Subscriptions.

Exemplo de Fluxo:

  1. Criação do Endereço (POST):
  • Cria um endereço no Master Data e recebe o DocumentId.
  1. Consulta do Documento (GET):
  • Faz um GET no endpoint usando o DocumentId para extrair todos os detalhes do endereço, incluindo o AddressID.
  1. Utilização do AddressID:
  • Usa o AddressID em outras operações, como na API de Subscriptions.

Exemplo de Uso:

  1. Criando o Endereço:
POST https://{workspace}.myvtex.com/api/dataentities/AD/documents

Retorna:

{
   "Id": "AD-01a195d6-5e21-11ef-b37f-fa466f0d5d7f",
   "Href": "http://{workspace}.myvtex.com/api/dataentities/AD/documents/01a195d6-5e21-11ef-b37f-fa466f0d5d7f",
   "DocumentId": "01a195d6-5e21-11ef-b37f-fa466f0d5d7f"
}
  1. Consultando o Endereço:
GET http://{workspace}.myvtex.com/api/dataentities/AD/documents/01a195d6-5e21-11ef-b37f-fa466f0d5d7f
  • A resposta JSON incluirá o AddressID.

Como falei, são ideias para você testar.

Veja se funciona.

Abs,
Estevão.

2 Likes

Bom dia @estevao_santos obrigado pela ajuda e pela resposta.

Fiz os testes aqui como você orientou. Ao fazer o GET para o Href o retorno obtido foi o seguinte:

Porém quando vou usar esse ID (Imagino que deveria ser esse o addressId) na API de Subscriptions, recebo o seguinte retorno:

Como se o addressID não estivesse sendo associado ao ID.

Desconfiei que se poderia ser uma diferença de email/userid nas 2 requisições. Mas verifiquei e o email/userid está sendo o mesmo

2 Likes

Oi @leoamaral

Seguindo as documentações da própria VTEX, há uma diferença em como os dados são usados nas duas APIs. O que pode acontecer é uma incompatibilidade se você está usando mesmo tipo ou mesmo nome, etc. Daí talvez precise fazer um DE/PARA passando esse dado que você deseja associar para dentro da aplicação da subscription. Isso porque:

1. Master Data API - Quando criamos um Endereço:

A API de Master Data é usada para criar e armazenar dados de endereços. Quando você faz uma requisição POST para o endpoint /api/dataentities/AD/documents, um novo endereço é criado e o Master Data gera um documentId. Esse documentId é exclusivo e identifica o registro do endereço no contexto do Master Data.

2. Subscriptions API - Uso do addressId:

A API de Subscriptions utiliza o addressId para associar um endereço a uma assinatura específica. No entanto, o addressId esperado pela Subscriptions API pode não ser diretamente o documentId gerado pelo Master Data. Em alguns casos, a Subscriptions API espera um ID específico ou pode necessitar que o endereço esteja associado ao cliente de forma específica antes de ser utilizado.

Você pode seguir alguns desses cenários abaixo:

  1. Verificar a Associação do Endereço: Certifique-se de que o endereço criado no Master Data está associado ao perfil de cliente correto. Isso é essencial para que a Subscriptions API possa reconhecê-lo.
  2. Validar o addressId: Verifique se o documentId gerado pelo Master Data pode ser diretamente utilizado como addressId na Subscriptions API. Caso contrário, você pode precisar de um processo adicional para obter ou converter esse ID em um formato reconhecível pela Subscriptions API.
  3. Possíveis Diferenças de Implementação: Se o documentId não está funcionando como addressId na Subscriptions API, pode ser que a Subscriptions API esteja esperando um ID diferente ou que o processo de vinculação do endereço ao cliente não tenha sido completado corretamente.

Um exemplo, APENAS como teste, você pode tentar o seguinte:

1. Tente criar um Endereço via Master Data API

Primeiro, você pode tentar criar um endereço usando a Master Data API. O exemplo abaixo faz uma requisição POST para o endpoint /api/dataentities/AD/documents para criar um novo endereço.

curl --request POST \
  --url https://{{accountName}}.vtexcommercestable.com.br/api/dataentities/AD/documents \
  --header 'Content-Type: application/json' \
  --header 'VtexIdclientAutCookie: {{authToken}}' \
  --data '{
    "addressName": "Endereço Principal",
    "receiverName": "João da Silva",
    "addressType": "residential",
    "postalCode": "12345-678",
    "city": "São Paulo",
    "state": "SP",
    "country": "BRA",
    "street": "Rua Exemplo",
    "number": "123",
    "complement": "Apt 12",
    "neighborhood": "Bairro Exemplo",
    "userId": "53ea3f4d-cf24-11ee-8452-0ec22849e8ab"
  }'

Observação: Substitua {{accountName}}, {{authToken}} e userId pelos valores apropriados para sua loja.

2. Pegando o documentId como addressId

Após a criação do endereço, você obterá um documentId, que será utilizado como addressId na Subscriptions API.

{
  "Id": "01a195d6-5e21-11ef-b37f-fa466f0d5d7f",
  "Href": "https://{{accountName}}.vtexcommercestable.com.br/api/dataentities/AD/documents/01a195d6-5e21-11ef-b37f-fa466f0d5d7f",
  "DocumentId": "01a195d6-5e21-11ef-b37f-fa466f0d5d7f"
}

3. Associando o Endereço a uma Assinatura na Subscriptions API

Agora, vamos usar o DocumentId (que é o addressId) na Subscriptions API. Neste exemplo, estamos atualizando uma assinatura existente para associar o endereço.

curl --request PATCH \
  --url https://{{accountName}}.vtexcommercestable.com.br/api/rns/pub/subscriptions/{{subscriptionId}} \
  --header 'Content-Type: application/json' \
  --header 'VtexIdclientAutCookie: {{authToken}}' \
  --data '{
    "shippingAddress": {
      "addressId": "01a195d6-5e21-11ef-b37f-fa466f0d5d7f",
      "receiverName": "João da Silva",
      "addressType": "residential",
      "postalCode": "12345-678",
      "city": "São Paulo",
      "state": "SP",
      "country": "BRA",
      "street": "Rua Exemplo",
      "number": "123",
      "complement": "Apt 12",
      "neighborhood": "Bairro Exemplo"
    }
  }'

Observações e testes da integração:

  1. Crie o endereço usando a Master Data API e obtenha o documentId.
  2. Use o documentId como addressId na Subscriptions API para associar o endereço a uma assinatura existente.
  3. Certifique-se de que o userId associado ao endereço é o mesmo do cliente que possui a assinatura.
  4. Verifique se o endereço está corretamente vinculado ao perfil do cliente na sua loja.

Espero que estas informações te ajude. Nos avise aqui após testar.

Abs,
Estevão.

1 Like

Bom dia @estevao_santos muito obrigado pelo esclarecimento e pela ajuda!

Tentei fazer esse processo, mas a resposta continua dando a mesma. Irei tentar algumas alternativas, caso eu obtenha sucesso volto aqui para explicar como consegui.

1 Like