Quiz Velvet API
O código pode ser encontrado neste repositório
APIS:
POST /recommendation
Utilizado pela planilha do quiz velvet para montar a combinação de resultados.
Quando o script da planilha envia as combinações, verifica-se se todos os produtos da planilha existem, além de pegar mais infos do produto como preco e imagem.
Este endpoint é privado, ou seja, é preciso obter a x-api-key no API Gateway para poder acessá-lo. Enviar tal chave pleo header da chamada.
Payload de exemplo
{
"id":11100,
"products":[
{
"name":"Base velvet tom 10",
"id":7827775062235,
"variantId":44151440670939,
"tone":10,
"hex":"#EFD0B9",
"type":"foundation",
"title":"",
"description":"",
"photo":"https://cdn.shopify.com/s/files/1/0645/6895/1003/files/10_4cbe002e-37b8-460a-860d-c7186805e993.png?v=1692997395"
},
{
"name":"Base velvet tom 20",
"id":7827775062235,
"variantId":44151440703707,
"tone":20,
"hex":"#F2D7BC",
"type":"foundation",
"title":"",
"description":"",
"photo":"https://cdn.shopify.com/s/files/1/0645/6895/1003/files/20_4af46c10-4976-4f69-b5a7-6aab558a9540.png?v=1692997400"
},
{
"name":"Corretivo Líquido Velvet tom 1",
"id":8038693568731,
"variantId":44129083883739,
"tone":1,
"hex":"#E8BEA4",
"type":"concealer",
"title":"",
"description":"",
"photo":""
},
{
"name":"Pó solto Velvet Invisiblur",
"id":8048447324379,
"variantId":44158019797211,
"tone":"",
"hex":"",
"type":"powder",
"title":"",
"description":"",
"photo":""
}
]
}
GET /pre-recommendation
Esse endpoint é utilizado para obter-se todas as possíveis combinacões dado uma resposta inicial. Ex:. na primeira pergunta, a pessoa responde "1", é possível fazer um /pre-recommendation?factor=5 para obter todas os possíveis resultados que se iniciam com a resposta "1". Isso é utilizado para obter-se as fotos da última pergunta do quiz.
Exemplo retorno da chamada: https://quizvelvet.services.sallve.dev/dev/pre-recommendation/12?factor=3
[
{
"id": 12400,
"products": [
{
"image": {
"altText": "cor_B40",
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/BASE_40.jpg?v=1692975380"
},
"product": {
"title": "Base Velvet Semi Mate",
"featuredImage": {
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/1-Pack.png?v=1692975073"
},
"onlineStoreUrl": null
},
"tone": 40,
"description": null,
"photo": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/40_39841417-082d-4b24-92ee-437d7d50d466.png?v=1692997396",
"type": "foundation",
"title": null,
"price": "94.90",
"name": "Base velvet tom 40",
"hex": "#F7CBAE",
"id": 7827775062235,
"variantId": 44151440769243,
"compareAtPrice": null
},
{
"image": {
"altText": "cor_B50",
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/BASE_50.jpg?v=1692975380"
},
"product": {
"title": "Base Velvet Semi Mate",
"featuredImage": {
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/1-Pack.png?v=1692975073"
},
"onlineStoreUrl": null
},
"tone": 50,
"description": null,
"photo": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/50_c76dd02f-c389-4a22-bf02-d129eeac28b6.png?v=1692997402",
"type": "foundation",
"title": null,
"price": "94.90",
"name": "Base velvet tom 50",
"hex": "#E8BF9E",
"id": 7827775062235,
"variantId": 44151440802011,
"compareAtPrice": null
},
{
"image": {
"altText": "cor_B30",
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/BASE_30.jpg?v=1692975380"
},
"product": {
"title": "Base Velvet Semi Mate",
"featuredImage": {
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/1-Pack.png?v=1692975073"
},
"onlineStoreUrl": null
},
"tone": 30,
"description": null,
"photo": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/30_56611be7-5867-4010-b2ad-13bba72a6441.png?v=1692997399",
"type": "foundation",
"title": null,
"price": "94.90",
"name": "Base velvet tom 30",
"hex": "#EBC8AB",
"id": 7827775062235,
"variantId": 44151440736475,
"compareAtPrice": null
},
{
"image": {
"altText": "cor_C3",
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/cor_C3_2.png?v=1692896356"
},
"product": {
"title": "Corretivo Líquido Velvet",
"featuredImage": {
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/1-Pack_27d0ca7e-889f-4c66-8475-ed536af33f75.png?v=1692896356"
},
"onlineStoreUrl": null
},
"tone": 3,
"description": null,
"photo": null,
"type": "concealer",
"title": null,
"price": "64.90",
"name": "Corretivo Líquido Velvet tom 3",
"hex": "#DEB38E",
"id": 8038693568731,
"variantId": 44129083916507,
"compareAtPrice": null
},
{
"image": null,
"product": {
"title": "Pó Velvet Invisiblur",
"featuredImage": {
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/1-Pack_981cc109-9598-47ee-a3ff-0a641ddc211c.png?v=1692821370"
},
"onlineStoreUrl": null
},
"tone": null,
"description": null,
"photo": null,
"type": "powder",
"title": null,
"price": "94.90",
"name": "Pó solto Velvet Invisiblur",
"hex": null,
"id": 8048447324379,
"variantId": 44158019797211,
"compareAtPrice": null
}
]
}
]
POST /result
Uma vez que todas as respostas foram coletadas, então envia-se para esse endpoint o id da combinacão e será retornado o id do resultado para aquela pessoa.
Este endpoint também verifica se o e-mail foi enviado, e em caso positivo, envia os dados do lead para o customer.io
Payload
{
"id": 11100,
"email": "string",
"name": "string",
"skinType": "string",
"coverage": "string",
"finish": "string"
}
GET /result/:id
Retorna o resultado para a página de resultados do quiz.
O resultado é composto por: base principal, base um tom mais claro, base um tom mais escuro, corretivo e pó, nessa ordem. No caso de não existir um tom mais claro ou mais escuro, como é o caso das bases 10 e 350, então o array terá apenas 4 itens.
Exemplo de retorno da chamada:
{
"recommendation": {
"id": 11100,
"products": [
{
"image": {
"altText": "cor_B10",
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/products/BASE_10.jpg?v=1692825907"
},
"product": {
"title": "Base Velvet Semi Mate",
"featuredImage": {
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/1-Pack.png?v=1692825907"
},
"onlineStoreUrl": null
},
"tone": 10,
"description": "Lorem ipsum is placeholder text commonly used in the graphic, print, aqui é o máximo de texto.",
"photo": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/velvet-10.jpg?v=1691790573",
"type": "foundation",
"title": null,
"price": "94.90",
"name": "Base velvet tom 10",
"hex": "#EFD0B9",
"id": 7827775062235,
"variantId": 44151440670939,
"compareAtPrice": null
},
{
"image": {
"altText": "cor_B20",
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/products/BASE_20.jpg?v=1692825907"
},
"product": {
"title": "Base Velvet Semi Mate",
"featuredImage": {
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/1-Pack.png?v=1692825907"
},
"onlineStoreUrl": null
},
"tone": 20,
"description": "Lorem ipsum is placeholder text commonly used in the graphic, print, aqui é o máximo de texto.",
"photo": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/velvet-20.jpg?v=1691790571",
"type": "foundation",
"title": null,
"price": "94.90",
"name": "Base velvet tom 20",
"hex": "#F2D7BC",
"id": 7827775062235,
"variantId": 44151440703707,
"compareAtPrice": null
},
{
"image": {
"altText": "cor_C1",
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/cor_C1_2.png?v=1692896443"
},
"product": {
"title": "Corretivo Líquido Velvet",
"featuredImage": {
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/1-Pack_27d0ca7e-889f-4c66-8475-ed536af33f75.png?v=1692896356"
},
"onlineStoreUrl": null
},
"tone": 1,
"description": "Lorem ipsum is placeholder text commonly used in the graphic, print, aqui é o máximo de texto.",
"photo": null,
"type": "concealer",
"title": null,
"price": "64.90",
"name": "Corretivo Líquido Velvet tom 1",
"hex": "#E8BEA4",
"id": 8038693568731,
"variantId": 44129083883739,
"compareAtPrice": null
},
{
"image": null,
"product": {
"title": "Pó Velvet Invisiblur",
"featuredImage": {
"url": "https://cdn.shopify.com/s/files/1/0645/6895/1003/files/1-Pack_981cc109-9598-47ee-a3ff-0a641ddc211c.png?v=1692821370"
},
"onlineStoreUrl": null
},
"tone": null,
"description": "Lorem ipsum is placeholder text commonly used in the graphic, print, aqui é o máximo de texto.",
"photo": null,
"type": "powder",
"title": null,
"price": "94.90",
"name": "Pó solto Velvet Invisiblur",
"hex": null,
"id": 8048447324379,
"variantId": 44158019797211,
"compareAtPrice": null
}
]
},
"skinType": "mista",
"finish": "matte",
"id": "ec1679d7-34f7-46b4-9053-425e58d06b09",
"coverage": "leve"
}