From 0c89923589c39403bd36ebb6f48d405a3b3baaf9 Mon Sep 17 00:00:00 2001 From: Lucas Leite <70826073+leitecsleite@users.noreply.github.com> Date: Mon, 4 Nov 2024 18:26:20 -0300 Subject: [PATCH] error:update --- .deco/blocks/app-tags.json | 3 + .deco/metadata/blocks.json | 2 +- .gitignore | 2 + _docker_deps.ts | 8 - app-tags/README.md | 1 + app-tags/actions/myAction.ts | 25 + app-tags/deno.json | 70 + app-tags/loaders/collections/list.ts | 37 + app-tags/loaders/getCategoryTree.ts | 51 + app-tags/loaders/tags.ts | 26 + app-tags/manifest.gen.ts | 29 + app-tags/mod.ts | 108 + app-tags/sections/tags.tsx | 20 + app-tags/utils/normalize.ts | 38 + app-tags/utils/openapi/api.openapi.gen.ts | 762 + app-tags/utils/openapi/api.openapi.json | 2183 + app-tags/utils/openapi/my.openapi.gen.ts | 313 + app-tags/utils/openapi/my.openapi.json | 801 + app-tags/utils/openapi/vcs.openapi.gen.ts | 21186 ++++++++++ app-tags/utils/openapi/vcs.openapi.json | 42331 ++++++++++++++++++++ app-tags/utils/types.ts | 295 + apps/local/app-tags.ts | 2 + components/home/TimedProductShelf.tsx | 106 +- components/product/ProductDetails.tsx | 403 +- deno.json | 59 +- dev.ts | 2 + fresh.config.ts | 4 +- fresh.gen.ts | 2 +- manifest.gen.ts | 6 +- sdk/useId.ts | 13 + sections/DesignSystem/DesignSystem.tsx | 3 +- 31 files changed, 68518 insertions(+), 373 deletions(-) create mode 100644 .deco/blocks/app-tags.json delete mode 100644 _docker_deps.ts create mode 100644 app-tags/README.md create mode 100644 app-tags/actions/myAction.ts create mode 100644 app-tags/deno.json create mode 100644 app-tags/loaders/collections/list.ts create mode 100644 app-tags/loaders/getCategoryTree.ts create mode 100644 app-tags/loaders/tags.ts create mode 100644 app-tags/manifest.gen.ts create mode 100644 app-tags/mod.ts create mode 100644 app-tags/sections/tags.tsx create mode 100644 app-tags/utils/normalize.ts create mode 100644 app-tags/utils/openapi/api.openapi.gen.ts create mode 100644 app-tags/utils/openapi/api.openapi.json create mode 100644 app-tags/utils/openapi/my.openapi.gen.ts create mode 100644 app-tags/utils/openapi/my.openapi.json create mode 100644 app-tags/utils/openapi/vcs.openapi.gen.ts create mode 100644 app-tags/utils/openapi/vcs.openapi.json create mode 100644 app-tags/utils/types.ts create mode 100644 apps/local/app-tags.ts create mode 100644 sdk/useId.ts diff --git a/.deco/blocks/app-tags.json b/.deco/blocks/app-tags.json new file mode 100644 index 0000000..27ebbd8 --- /dev/null +++ b/.deco/blocks/app-tags.json @@ -0,0 +1,3 @@ +{ + "__resolveType": "site/apps/local/app-tags.ts" +} \ No newline at end of file diff --git a/.deco/metadata/blocks.json b/.deco/metadata/blocks.json index a3070a2..ee3a694 100644 --- a/.deco/metadata/blocks.json +++ b/.deco/metadata/blocks.json @@ -1 +1 @@ -{"/.deco/blocks/Os%20mais%20vendidos%20-%20ProductShelf.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/CookieConsent.json":{"blockType":"sections","__resolveType":"site/sections/Miscellaneous/CookieConsent.tsx"},"/.deco/blocks/pages-searchpage-f5ee23444cb9.json":{"name":"Search page","path":"/busca","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-topmoveisparaempresa-46a644126148.json":{"name":"top moveis para empresa","path":"/topmoveis-paraempresas","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-testecolecao-f1826f7a6e10.json":{"name":"testecolecao","path":"/testecolecao","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-pol%C3%ADticadeprivacidade-7c6625a423bc.json":{"name":"Política de Privacidade","path":"/politica-de-privacidade","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/Categories.json":{"name":"Categories","path":"/*","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-account-80f202a5b269.json":{"name":"Account","path":"/my-account","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-home-para-testes-n1-ebf8a2839f08.json":{"name":"Home-Para-Testes-N1","path":"/2","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/Institutional%20Global.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/SearchResults%20Global.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/pages-Pois%2520tai%2520que%2520ta%2520top-315606.json":{"name":"Pois tai que ta top","path":"/poistaiquetatop","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/Footer%20Global.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/pages-termosecondi%C3%A7%C3%B5es-b6ab6a740bc1.json":{"name":"Termos e Condições","path":"/termos-e-condicoes","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-campanhalivelo-683c0721a70f.json":{"name":"Campanha Livelo","path":"/campanhalivelocompreepontue","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-quemsomos-c60ee4f48e8b.json":{"name":"Quem Somos","path":"/quem-somos","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/Sobre%20a%20loja%20-%20InfoCard.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Banner%20Carrosel.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Product%20Page.json":{"name":"Product page","path":"/:slug/p","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-Home%2520Lid-437157.json":{"name":"Home Lid","path":"/home-lid","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/analytics.json":{"blockType":"sections","__resolveType":"deco-sites/std/sections/Analytics.tsx"},"/.deco/blocks/pages-sald%C3%A3odeofertastopm%C3%B3veis-fd9ed8a0f9bb.json":{"name":"Saldão de Ofertas Top Móveis ","path":"/saldaodeofertastopmoveis","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/decohub.json":{"blockType":"apps","__resolveType":"site/apps/decohub.ts"},"/.deco/blocks/Default%20-%20Design%20System.json":{"blockType":"sections","__resolveType":"site/sections/DesignSystem/DesignSystem.tsx"},"/.deco/blocks/Cupom%20na%20area%20-%20ProductShelf.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/NewsletterModal.json":{"blockType":"sections","__resolveType":"site/sections/Newsletter/NewsletterModal.tsx"},"/.deco/blocks/deco-crux.json":{"blockType":"apps","__resolveType":"site/apps/deco/crux.ts"},"/.deco/blocks/pages-trocasedevolu%C3%A7%C3%B5es-7006bf9a4089.json":{"name":"Trocas e devoluções","path":"/trocas-devolucoes","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/Preview%20%2Fsections%2FContainer.tsx.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/storefront.json":{"blockType":"apps","__resolveType":"site/apps/site.ts"},"/.deco/blocks/PDP%20-%20Intelligent%20Search%20Loader.json":{"blockType":"loaders","__resolveType":"vtex/loaders/intelligentSearch/productDetailsPage.ts"},"/.deco/blocks/Aside%20Menu%20Global.json":{"blockType":"sections","__resolveType":"site/sections/Institutional/AsideMenu.tsx"},"/.deco/blocks/pages-nossaslojas-67b2b40ddf53.json":{"name":"Nossas lojas","path":"/nossas-lojas","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/Header%20Global.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Exclusivos%20no%20Site.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Header.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/.%2Froutes%2F_middleware.ts.json":{"blockType":"loaders","__resolveType":"$live/loaders/state.ts"},"/.deco/blocks/Categorias%20-%20ImageGallery.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/pages-pol%C3%ADticadefretegr%C3%A1tis-5a23bf8575bf.json":{"name":"Política de Frete Grátis","path":"/politicadefretegratis","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-institucional-c0b0ef99d3e0.json":{"name":"Institucional","path":"/i","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-faleconosco-bbd4a96c9430.json":{"name":"Fale Conosco","path":"/central-de-atendimento","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-parcelex-9e9945a8ffae.json":{"name":"Pagaleve","path":"/pagaleve","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-testecolecao2-d20a05e7bef3.json":{"name":"testecolecao2","path":"/testecolecao2","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-Regulamento%2520Sua%2520Casa%2520Mais%2520Top-379183.json":{"name":"Regulamento Sua Casa Mais Top","path":"/suacasamaistop","blockType":"pages","__resolveType":"website/pages/Page.tsx"},"/.deco/blocks/PDP%20-%20Loader.json":{"blockType":"loaders","__resolveType":"vtex/loaders/legacy/productDetailsPage.ts"},"/.deco/blocks/Footer.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/analytics%40v0.json":{"blockType":"apps","__resolveType":"decohub/apps/analytics.ts"},"/.deco/blocks/pages-Parceria%2520Premium%2520Madesa-342016.json":{"name":"Parceria Premium Madesa","path":"/parceriapremiummadesa","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/Home.json":{"name":"Home","path":"/","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/Produtos%20relacionados%20-%20ProductShelf.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Nossas%20redes%20sociais%20-%20InfoCard%2FImageGallery.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Home%20-%20Carousel.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Linha%20infantil%20-%20ProductShelf.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/pages-politicadeseguran%C3%A7a-f1a979f669ec.json":{"name":"Politica de Segurança","path":"/politica-de-seguranca","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-topofertasdodia-30bd73d9ba88.json":{"name":"Top Ofertas do Dia","path":"/topofertasdodia","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-Esquenta%2520Black%2520Top%2520-338388.json":{"name":"Esquenta Black Top ","path":"/esquentablacktop","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/.%2Froutes%2F%5B...catchall%5D.tsx.json":{"blockType":"handlers","__resolveType":"$live/handlers/routesSelection.ts"},"/.deco/blocks/categoryBreadcrumb.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/BannerGrid.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Preview%20site%2Fsections%2FHeader%2FHeaderNavMenu.tsx.json":{"blockType":"sections","__resolveType":"site/sections/Header/HeaderNavMenu.tsx"},"/.deco/blocks/pages-comocomprar-c80e817fd016.json":{"name":"Como Comprar","path":"/como-comprar","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/Default%20-%20Product%20Details.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Not%20Found%20Global.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/pages-orders-6397532f591b.json":{"name":"Orders","path":"/my-account/orders","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/everyone.json":{"blockType":"flags","__resolveType":"$live/flags/everyone.ts"},"/.deco/blocks/SEODefault.json":{"blockType":"sections","__resolveType":"deco-sites/std/sections/SEO.tsx"},"/.deco/blocks/pages-freteseenvios-acc9739071ea.json":{"name":"Fretes e Envios","path":"/fretes-e-envios","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/vtex_proxy.json":{"blockType":"flags","__resolveType":"$live/flags/audience.ts"}} \ No newline at end of file +{"/.deco/blocks/.%2Froutes%2F%5B...catchall%5D.tsx.json":{"blockType":"handlers","__resolveType":"$live/handlers/routesSelection.ts"},"/.deco/blocks/.%2Froutes%2F_middleware.ts.json":{"blockType":"loaders","__resolveType":"$live/loaders/state.ts"},"/.deco/blocks/analytics%40v0.json":{"blockType":"apps","__resolveType":"decohub/apps/analytics.ts"},"/.deco/blocks/analytics.json":{"blockType":"sections","__resolveType":"deco-sites/std/sections/Analytics.tsx"},"/.deco/blocks/app-tags.json":{"blockType":"apps","__resolveType":"site/apps/local/app-tags.ts"},"/.deco/blocks/Aside%20Menu%20Global.json":{"blockType":"sections","__resolveType":"site/sections/Institutional/AsideMenu.tsx"},"/.deco/blocks/Banner%20Carrosel.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/BannerGrid.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Categorias%20-%20ImageGallery.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Categories.json":{"name":"Categories","path":"/*","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/categoryBreadcrumb.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/CookieConsent.json":{"blockType":"sections","__resolveType":"site/sections/Miscellaneous/CookieConsent.tsx"},"/.deco/blocks/Cupom%20na%20area%20-%20ProductShelf.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/deco-crux.json":{"blockType":"apps","__resolveType":"site/apps/deco/crux.ts"},"/.deco/blocks/decohub.json":{"blockType":"apps","__resolveType":"site/apps/decohub.ts"},"/.deco/blocks/Default%20-%20Design%20System.json":{"blockType":"sections","__resolveType":"site/sections/DesignSystem/DesignSystem.tsx"},"/.deco/blocks/Default%20-%20Product%20Details.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/everyone.json":{"blockType":"flags","__resolveType":"$live/flags/everyone.ts"},"/.deco/blocks/Exclusivos%20no%20Site.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Footer%20Global.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Footer.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Header%20Global.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Header.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Home%20-%20Carousel.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Home.json":{"name":"Home","path":"/","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/Institutional%20Global.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Linha%20infantil%20-%20ProductShelf.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/NewsletterModal.json":{"blockType":"sections","__resolveType":"site/sections/Newsletter/NewsletterModal.tsx"},"/.deco/blocks/Nossas%20redes%20sociais%20-%20InfoCard%2FImageGallery.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Not%20Found%20Global.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Os%20mais%20vendidos%20-%20ProductShelf.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/pages-account-80f202a5b269.json":{"name":"Account","path":"/my-account","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-campanhalivelo-683c0721a70f.json":{"name":"Campanha Livelo","path":"/campanhalivelocompreepontue","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-comocomprar-c80e817fd016.json":{"name":"Como Comprar","path":"/como-comprar","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-Esquenta%2520Black%2520Top%2520-338388.json":{"name":"Esquenta Black Top ","path":"/esquentablacktop","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-faleconosco-bbd4a96c9430.json":{"name":"Fale Conosco","path":"/central-de-atendimento","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-freteseenvios-acc9739071ea.json":{"name":"Fretes e Envios","path":"/fretes-e-envios","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-Home%2520Lid-437157.json":{"name":"Home Lid","path":"/home-lid","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-home-para-testes-n1-ebf8a2839f08.json":{"name":"Home-Para-Testes-N1","path":"/2","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-institucional-c0b0ef99d3e0.json":{"name":"Institucional","path":"/i","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-nossaslojas-67b2b40ddf53.json":{"name":"Nossas lojas","path":"/nossas-lojas","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-orders-6397532f591b.json":{"name":"Orders","path":"/my-account/orders","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-parcelex-9e9945a8ffae.json":{"name":"Pagaleve","path":"/pagaleve","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-Parceria%2520Premium%2520Madesa-342016.json":{"name":"Parceria Premium Madesa","path":"/parceriapremiummadesa","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-Pois%2520tai%2520que%2520ta%2520top-315606.json":{"name":"Pois tai que ta top","path":"/poistaiquetatop","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-pol%C3%ADticadefretegr%C3%A1tis-5a23bf8575bf.json":{"name":"Política de Frete Grátis","path":"/politicadefretegratis","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-pol%C3%ADticadeprivacidade-7c6625a423bc.json":{"name":"Política de Privacidade","path":"/politica-de-privacidade","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-politicadeseguran%C3%A7a-f1a979f669ec.json":{"name":"Politica de Segurança","path":"/politica-de-seguranca","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-quemsomos-c60ee4f48e8b.json":{"name":"Quem Somos","path":"/quem-somos","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-Regulamento%2520Sua%2520Casa%2520Mais%2520Top-379183.json":{"name":"Regulamento Sua Casa Mais Top","path":"/suacasamaistop","blockType":"pages","__resolveType":"website/pages/Page.tsx"},"/.deco/blocks/pages-sald%C3%A3odeofertastopm%C3%B3veis-fd9ed8a0f9bb.json":{"name":"Saldão de Ofertas Top Móveis ","path":"/saldaodeofertastopmoveis","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-searchpage-f5ee23444cb9.json":{"name":"Search page","path":"/busca","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-termosecondi%C3%A7%C3%B5es-b6ab6a740bc1.json":{"name":"Termos e Condições","path":"/termos-e-condicoes","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-testecolecao-f1826f7a6e10.json":{"name":"testecolecao","path":"/testecolecao","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-testecolecao2-d20a05e7bef3.json":{"name":"testecolecao2","path":"/testecolecao2","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-topmoveisparaempresa-46a644126148.json":{"name":"top moveis para empresa","path":"/topmoveis-paraempresas","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-topofertasdodia-30bd73d9ba88.json":{"name":"Top Ofertas do Dia","path":"/topofertasdodia","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/pages-trocasedevolu%C3%A7%C3%B5es-7006bf9a4089.json":{"name":"Trocas e devoluções","path":"/trocas-devolucoes","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/PDP%20-%20Intelligent%20Search%20Loader.json":{"blockType":"loaders","__resolveType":"vtex/loaders/intelligentSearch/productDetailsPage.ts"},"/.deco/blocks/PDP%20-%20Loader.json":{"blockType":"loaders","__resolveType":"vtex/loaders/legacy/productDetailsPage.ts"},"/.deco/blocks/Preview%20%2Fsections%2FContainer.tsx.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/Preview%20site%2Fsections%2FHeader%2FHeaderNavMenu.tsx.json":{"blockType":"sections","__resolveType":"site/sections/Header/HeaderNavMenu.tsx"},"/.deco/blocks/Product%20Page.json":{"name":"Product page","path":"/:slug/p","blockType":"pages","__resolveType":"$live/pages/LivePage.tsx"},"/.deco/blocks/Produtos%20relacionados%20-%20ProductShelf.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/SearchResults%20Global.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/SEODefault.json":{"blockType":"sections","__resolveType":"deco-sites/std/sections/SEO.tsx"},"/.deco/blocks/Sobre%20a%20loja%20-%20InfoCard.json":{"blockType":"sections","__resolveType":"site/sections/Container.tsx"},"/.deco/blocks/storefront.json":{"blockType":"apps","__resolveType":"site/apps/site.ts"},"/.deco/blocks/vtex_proxy.json":{"blockType":"flags","__resolveType":"$live/flags/audience.ts"}} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 896f358..db98126 100644 --- a/.gitignore +++ b/.gitignore @@ -76,3 +76,5 @@ deno.lock .config.json # Fresh build directory _fresh/ + +_docker_deps.ts \ No newline at end of file diff --git a/_docker_deps.ts b/_docker_deps.ts deleted file mode 100644 index da38efb..0000000 --- a/_docker_deps.ts +++ /dev/null @@ -1,8 +0,0 @@ -import "https://denopkg.com/deco-sites/std/utils/worker.ts"; -import "https://denopkg.com/deco-sites/std/plugins/tailwind/bundler.ts"; -import "npm:daisyui"; -import "https://denopkg.com/deco-cx/apps/website/utils/image/engines/wasm/worker.ts"; -import "$fresh/src/build/deps.ts"; -import "$fresh/src/runtime/entrypoints/main.ts"; -import "$fresh/src/runtime/entrypoints/deserializer.ts"; -import "$fresh/src/runtime/entrypoints/signals.ts"; \ No newline at end of file diff --git a/app-tags/README.md b/app-tags/README.md new file mode 100644 index 0000000..15cc77b --- /dev/null +++ b/app-tags/README.md @@ -0,0 +1 @@ +# app-tags \ No newline at end of file diff --git a/app-tags/actions/myAction.ts b/app-tags/actions/myAction.ts new file mode 100644 index 0000000..c1fade2 --- /dev/null +++ b/app-tags/actions/myAction.ts @@ -0,0 +1,25 @@ +import { AppContext } from "../mod.ts"; +import { GithubUser } from "../utils/types.ts"; + +interface Props { + username: string; +} + +/** + * @title This name will appear on the admin + */ +const action = async ( + props: Props, + _req: Request, + ctx: AppContext, +): Promise => { + const response = await ctx.api[`POST /users/:username`]({ + username: props.username, + }, { body: { filter: "filter" } }); + + const result = await response.json(); + + return result; +}; + +export default action; diff --git a/app-tags/deno.json b/app-tags/deno.json new file mode 100644 index 0000000..0a0a0a3 --- /dev/null +++ b/app-tags/deno.json @@ -0,0 +1,70 @@ +{ + "imports": { + "$fresh/": "https://denopkg.com/denoland/fresh@1.7.3/", + "preact": "npm:preact@10.23.1", + "preact-render-to-string": "npm:preact-render-to-string@6.4.2", + "@preact/signals": "https://esm.sh/*@preact/signals@1.1.3", + "@preact/signals-core": "https://esm.sh/@preact/signals-core@1.3.0", + "std/": "https://deno.land/std@0.204.0/", + "partytown/": "https://deno.land/x/partytown@0.4.8/", + "deco-sites/std/": "https://denopkg.com/deco-sites/std@1.26.8/", + "deco/": "https://denopkg.com/deco-cx/deco@1.106.3/", + "apps/": "https://denopkg.com/deco-cx/apps@0.63.0/", + "@deco/deco": "jsr:@deco/deco@1.106.3", + "@std/assert": "jsr:@std/assert@^1.0.2", + "@std/async": "jsr:@std/async@^0.224.1", + "@std/crypto": "jsr:@std/crypto@1.0.0-rc.1", + "@std/datetime": "jsr:@std/datetime@^0.224.0", + "@std/encoding": "jsr:@std/encoding@^1.0.0-rc.1", + "@std/flags": "jsr:@std/flags@^0.224.0", + "@std/fmt": "jsr:@std/fmt@^0.225.3", + "@std/fs": "jsr:@std/fs@^0.229.1", + "@std/http": "jsr:@std/http@^1.0.0", + "@std/io": "jsr:@std/io@^0.224.4", + "@std/log": "jsr:@std/log@^0.224.5", + "@std/media-types": "jsr:@std/media-types@^1.0.0-rc.1", + "@std/path": "jsr:@std/path@^0.225.2", + "@std/semver": "jsr:@std/semver@^0.224.3", + "@std/streams": "jsr:@std/streams@^1.0.0", + "@std/testing": "jsr:@std/testing@^1.0.0", + "@cliffy/prompt": "jsr:@cliffy/prompt@^1.0.0-rc.5", + "@core/asyncutil": "jsr:@core/asyncutil@^1.0.2", + "@deco/durable": "jsr:@deco/durable@0.5.3", + "@deco/warp": "jsr:@deco/warp@0.3.8", + "@hono/hono": "jsr:@hono/hono@^4.5.4", + "@std/cli": "jsr:@std/cli@^1.0.3", + "@zaubrik/djwt": "jsr:@zaubrik/djwt@^3.0.2", + "fast-json-patch": "npm:fast-json-patch@^3.1.1", + "simple-git": "npm:simple-git@^3.25.0", + "https://esm.sh/*preact-render-to-string@6.3.1": "npm:preact-render-to-string@6.4.2", + "@deco/dev": "jsr:@deco/dev@1.106.3" + }, + "lock": false, + "tasks": { + "check": "deno fmt && deno lint && deno check **/mod.ts", + "release": "deno eval 'import \"deco/scripts/release.ts\"'", + "start": "deno run -A --unstable-http --env https://deco.cx/run -- deno task dev", + "bundle": "deno run -A jsr:@deco/deco/scripts/bundle app-tags", + "link": "deno eval 'import \"deco/scripts/apps/link.ts\"'", + "unlink": "deno eval 'import \"deco/scripts/apps/unlink.ts\"'", + "serve": "deno eval 'import \"deco/scripts/apps/serve.ts\"'", + "watcher": "deno eval 'import \"deco/scripts/apps/watcher.ts\"'", + "update": "deno run -Ar https://deco.cx/update", + "new": "deno run -A ./scripts/new.ts", + "reload": "deno cache -r https://deco.cx/run", + "dev": "deno run -A --env --unstable-kv --unstable-hmr dev.ts" + }, + "githooks": { + "pre-commit": "check" + }, + "exclude": [ + "static", + "README.md", + "**/README.md" + ], + "compilerOptions": { + "jsx": "react-jsx", + "jsxImportSource": "preact" + }, + "version": "0.1.0" +} diff --git a/app-tags/loaders/collections/list.ts b/app-tags/loaders/collections/list.ts new file mode 100644 index 0000000..b74d5b1 --- /dev/null +++ b/app-tags/loaders/collections/list.ts @@ -0,0 +1,37 @@ +import { AppContext } from "../../mod.ts"; +import { CollectionList } from "../../utils/types.ts"; +import { allowCorsFor } from "@deco/deco"; +export interface Props { + term?: string; +} +export default async function loader( + { term }: Props, + req: Request, + ctx: AppContext, +) { + Object.entries(allowCorsFor(req)).map(([name, value]) => { + ctx.response.headers.set(name, value); + }); + + const api = ctx.api; + + const collectionResponse = term + ? await api["GET /api/catalog_system/pvt/collection/search/:searchTerms"]({ + searchTerms: term, + page: 1, + pageSize: 15, + }) + : await api["GET /api/catalog_system/pvt/collection/search"]({ + page: 1, + pageSize: 3000, + orderByAsc: false, + }); + const collectionList = await collectionResponse.json(); + const stringList = (collectionList as CollectionList)?.items?.map(( + collection, + ) => ({ + value: `${collection.id}`, + label: `${collection.id} - ${collection.name}`, + })); + return stringList; +} \ No newline at end of file diff --git a/app-tags/loaders/getCategoryTree.ts b/app-tags/loaders/getCategoryTree.ts new file mode 100644 index 0000000..758fbe9 --- /dev/null +++ b/app-tags/loaders/getCategoryTree.ts @@ -0,0 +1,51 @@ +import { allowCorsFor } from "@deco/deco"; +import { AppContext } from "../mod.ts"; +import { Category, OrganizedCategory, PropsCategory } from "../utils/types.ts"; +/** + * @title Tag Integration + * @description Category List + */ +const loader = async ( + _props: PropsCategory, + req: Request, + ctx: AppContext, +): Promise => { + + Object.entries(allowCorsFor(req)).map(([name, value]) => { + ctx.response.headers.set(name, value); + }); + + try { + // Fetch categories from VTEX API + const response = await fetch(`https://${ctx.account}.vtexcommercestable.com.br/api/catalog_system/pub/category/tree/1`); + + if (!response.ok) { + throw new Error("Network response was not ok"); + } + const categories: Category[] = await response.json(); + const organizedCategories = organizeCategories(categories); + + return organizedCategories; + } catch (error) { + console.error("Error:", error); + return null; + } +}; + +export default loader; + +/** + * This function organizes categories into a flat list with `value` and `label` + */ +function organizeCategories(data: Category[]): OrganizedCategory[] { + const result: OrganizedCategory[] = []; + + data.forEach((category) => { + result.push({ value: `${category.id}`, label: `${category.id} - ${category.name}` }); + category.children.forEach((child) => { + result.push({ value: `${child.id}`, label: `${child.id} - ${child.name}` }); + }); + }); + + return result; +} diff --git a/app-tags/loaders/tags.ts b/app-tags/loaders/tags.ts new file mode 100644 index 0000000..1d3d454 --- /dev/null +++ b/app-tags/loaders/tags.ts @@ -0,0 +1,26 @@ +import { AppContext } from "../mod.ts"; + +/** + * @title This name will appear on the admin + */ +const loader = ( + _props: unknown, + _req: Request, + ctx: AppContext, +) => { + const flagDiscountThirdFor = ctx.flagDiscountThirdFor; + const flagCustom = ctx.flagCustom; + const flagSpecial = ctx.flagSpecial; + const discount = ctx.discount; + + + const result = { + flagDiscountThirdFor: flagDiscountThirdFor, + flagCustom: flagCustom, + flagSpecial: flagSpecial, + discount: discount + }; + + return result; +}; +export default loader; diff --git a/app-tags/manifest.gen.ts b/app-tags/manifest.gen.ts new file mode 100644 index 0000000..a0f99cb --- /dev/null +++ b/app-tags/manifest.gen.ts @@ -0,0 +1,29 @@ +// DO NOT EDIT. This file is generated by deco. +// This file SHOULD be checked into source version control. +// This file is automatically updated during development when running `dev.ts`. + +import * as $$$$$$$$$0 from "./actions/myAction.ts"; +import * as $$$0 from "./loaders/collections/list.ts"; +import * as $$$1 from "./loaders/getCategoryTree.ts"; +import * as $$$2 from "./loaders/tags.ts"; +import * as $$$$$$0 from "./sections/tags.tsx"; + +const manifest = { + "loaders": { + "app-tags/loaders/collections/list.ts": $$$0, + "app-tags/loaders/getCategoryTree.ts": $$$1, + "app-tags/loaders/tags.ts": $$$2, + }, + "sections": { + "app-tags/sections/tags.tsx": $$$$$$0, + }, + "actions": { + "app-tags/actions/myAction.ts": $$$$$$$$$0, + }, + "name": "app-tags", + "baseUrl": import.meta.url, +}; + +export type Manifest = typeof manifest; + +export default manifest; diff --git a/app-tags/mod.ts b/app-tags/mod.ts new file mode 100644 index 0000000..6c140fd --- /dev/null +++ b/app-tags/mod.ts @@ -0,0 +1,108 @@ +import type { App, FnContext } from "@deco/deco"; +import { fetchSafe } from "apps/utils/fetch.ts"; +import { createHttpClient } from "apps/utils/http.ts"; +import { PreviewContainer } from "apps/utils/preview.tsx"; +import { Secret } from "apps/website/loaders/secret.ts"; +import manifest, { Manifest } from "./manifest.gen.ts"; +import { OpenAPI as VCS } from "./utils/openapi/vcs.openapi.gen.ts"; +import { FlagDiscountThirdForProps, FlagSpecialProps } from "./utils/types.ts"; +import { Flags } from "./utils/types.ts"; + +export type AppContext = FnContext; + + +export interface Props { + /** + * @title Account Name + * @description ex: lojaN1 + */ + account: string; + + /** + * @title X-VTEX-API-AppKey + * @description Unique identifier of the application key. + * @format string + */ + appKey: Secret; + + /** + * @title X-VTEX-API-AppToken + * @description Secret token of the application key. + * @format string + */ + + appToken: Secret + + /** + * @title Flag Desconto na terceira compra + */ + flagDiscountThirdFor?: FlagDiscountThirdForProps[]; + + /**@title Flags Personalizada */ + flagCustom?: Flags[]; + + /**@title Flags Especiais */ + flagSpecial?: FlagSpecialProps[]; + + /**@title Desconto */ + /** @description Flag de porcetagem de desconto % */ + discount?: boolean; + +} + +// Here we define the state of the app +// You choose what to put in the state +export interface State extends Omit { + api: ReturnType>; +} + +/** + * @title App Template + * @description This is an template of an app to be used as a reference. + * @category Tools + * @logo https:// + */ +export default function App(props: Props): App { + const { appKey, appToken, account: _account, flagCustom, flagDiscountThirdFor } = props; + + // const stringAppToken = typeof appToken === "string" ? appToken : appToken?.get() ?? ""; + + // const stringAppKey = typeof appKey === "string" ? appKey : appKey?.get() ?? ""; + + console.log("chave da api", typeof appKey) + + const api = createHttpClient({ + base: `https://${_account}.vtexcommercestable.com.br`, + fetcher: fetchSafe, + headers: new Headers({ + "Accept": "application/json", + "Content-Type": "application/json", + "X-VTEX-API-AppKey": appKey?.get() ?? '', + "X-VTEX-API-AppToken": appToken?.get() ?? '', + }), + }); + + const tags = { flagCustom, flagDiscountThirdFor }; + const state = { ...props, api, tags }; + + return { + state, + manifest, + }; +} + +// It is important to use the same name as the default export of the app +export const preview = () => { + return { + Component: PreviewContainer, + props: { + name: "App Tags", + owner: "Agência N1", + description: "This is an template of an app to be used as a reference.", + logo: + "https://ozksgdmyrqcxcwhnbepg.supabase.co/storage/v1/object/public/assets/1/0ac02239-61e6-4289-8a36-e78c0975bcc8", + images: [], + tabs: [], + }, + }; +}; diff --git a/app-tags/sections/tags.tsx b/app-tags/sections/tags.tsx new file mode 100644 index 0000000..15aab25 --- /dev/null +++ b/app-tags/sections/tags.tsx @@ -0,0 +1,20 @@ + + +// notice that using the same types from the loaders +// it will be easier to use the data from the loaders +// on deco.cx admin + +interface Props { + title?: string +} + +/** + * @title This name will appear on the admin + */ +export default function Section(props: Props) { + return ( +
+

{props.title}

+
+ ); +} diff --git a/app-tags/utils/normalize.ts b/app-tags/utils/normalize.ts new file mode 100644 index 0000000..7ec7ca1 --- /dev/null +++ b/app-tags/utils/normalize.ts @@ -0,0 +1,38 @@ +export const removeScriptChars = (str: string): string => { + const removedPlus = str.replace(/\+/g, "").replaceAll(" ", ""); + const removedBrackets = removedPlus.replace(/[\[\]{}()<>]/g, ""); + const normalized = removedBrackets.normalize("NFD").replace( + /[\u0300-\u036f]/g, + "", + ); + return normalized; + }; + + export const removeNonLatin1Chars = (str: string): string => { + // deno-lint-ignore no-control-regex + const latin1Regex = /[^\x00-\x7F]|[\"\']/g; + return str.replace(latin1Regex, ""); + }; + + export const removeNonAscChars = (str: string): string => { + // deno-lint-ignore no-control-regex + const latin1Regex = /[^\x00-\x7F]|[\"\']/g; + return str.replace(latin1Regex, ""); + }; + + export const removeDirtyCookies = (headers?: Headers) => { + if (!headers) { + return; + } + const existingCookie = removeNonAscChars(headers.get("cookie") || ""); + // remove only brackets + const removedBrackets = existingCookie?.replace(/[\[\]]/g, "").normalize( + "NFD", + ).replace( + /[\u0300-\u036f]/g, + "", + ); + headers.set("cookie", `${removedBrackets}`); + return headers; + }; + \ No newline at end of file diff --git a/app-tags/utils/openapi/api.openapi.gen.ts b/app-tags/utils/openapi/api.openapi.gen.ts new file mode 100644 index 0000000..f69bcb4 --- /dev/null +++ b/app-tags/utils/openapi/api.openapi.gen.ts @@ -0,0 +1,762 @@ + +// deno-fmt-ignore-file +// deno-lint-ignore-file no-explicit-any ban-types ban-unused-ignore +// +// DO NOT EDIT. This file is generated by deco. +// This file SHOULD be checked into source version control. +// To generate this file: deno task start +// + + +export interface OpenAPI { +/** + * Retrieves price data given a specific SKU ID. Within the `fixedPrices` object, there might be a list of prices for specific Trade Policies and Minimium Quantities of the SKU. Fixed Prices may also be scheduled. + * + * ## Response body example + * + * ```json + * { + * "itemId": "1", + * "listPrice": 50, + * "costPrice": 90, + * "markup": 30, + * "basePrice": 117, + * "fixedPrices": [ + * { + * "tradePolicyId": "1", + * "value": 50.5, + * "listPrice": 50.5, + * "minQuantity": 2, + * "dateRange": { + * "from": "2021-12-31T01:00:00Z", + * "to": "2022-12-31T01:00:00Z" + * } + * }, + * { + * "tradePolicyId": "2", + * "value": 30, + * "listPrice": 50, + * "minQuantity": 2 + * } + * ] + * } + * ``` + */ +"GET /pricing/prices/:itemId": { +response: Getprice +} +/** + * Creates or updates an SKU Base Price or Fixed Prices. The **base price** is the basic selling price of a product, it comprises the cost price and the markup wanted in the sale of the product. The **fixed price** is an optional price of the SKU for a specific trade policy with a specific minimum quantity to be activated. + * + *

You may optionally set a list price. Additionally, you may set either a cost price or a markup value. By defining either one of them, the other will be calculated to conform to the formula costPrice * (1 + markup) = basePrice.

Request body example

+ * + * ```json + * { + * "markup": 30, + * "basePrice": 100, + * "listPrice": 35, + * "fixedPrices": [ + * { + * "tradePolicyId": "1", + * "value": 31, + * "listPrice": 32, + * "minQuantity": 1, + * "dateRange": { + * "from": "2022-05-21T22:00:00Z", + * "to": "2023-05-28T22:00:00Z" + * } + * }, + * { + * "tradePolicyId": "1", + * "value": 31.5, + * "listPrice": 33, + * "minQuantity": 2 + * } + * ] + * } + * ``` + */ +"PUT /pricing/prices/:itemId": { +body: { +/** + * The profit percentage that is to be obtained from the sale of that SKU. If you decide to fill the `markup` item, you must also fill the `costPrice`. The `basePrice` will be automatically generated based on both values. + */ +markup: number +/** + * SKU's suggested selling price. + */ +listPrice: number +/** + * SKU selling base price. If you decide to fill only the `basePrice` item, the `markup` and `costPrice` will be automatically generated to adapt to the number inserted in `basePrice`. + */ +basePrice: number +/** + * SKU selling cost price. If you decide to fill the `costPrice` item, you must also fill the `markup` and `basePrice` will be automatically generated based on both values. + */ +costPrice?: number +fixedPrices?: { +/** + * Trade policy name or ID that will have the fixed price configured. + */ +tradePolicyId: string +/** + * Fixed price value. + */ +value: number +/** + * SKU List Fixed Price. + */ +listPrice?: number +/** + * Minimum quantity of the SKU for the fixed price to be applied. + */ +minQuantity: number +/** + * Period of time when the fixed price will be applied to the SKU. + */ +dateRange?: { +/** + * Start date of the price. + */ +from: string +/** + * End date of the price. + */ +to: string +} +}[] +} +} +/** + * Deletes the Base Price and all available Fixed Prices for an SKU in all trade policies. + */ +"DELETE /pricing/prices/:itemId": { + +} +/** + * The **fixed price** is an optional price of the SKU for a specific trade policy with a specific minimum quantity to be activated. This method retrieves an array of Fixed Prices for an SKU in a Trade Policy with Minimum Quantities. + * + * The default value for a Minimum Quantity is `1`. This means a Fixed Price will be valid for a SKU in a Trade Policy for orders containing the specified number of Minimum Quantity or above, unless a higher Minimum Quantity is specified. + * + * Fixed prices may, optionally, be scheduled. If so, these objects will contain the `dateRange` object with `from` and `to` properties, indicating the start and end time of the scheduled fixed price in the RFC3339 timestamp format (`YYYY-MM-DDT23:59:60Z`). + * + * Note that the 'Z', at the end, represents the UTC time (GMT+00:00). If it was in GMT-03:00, for example, it would be (`YYYY-MM-DDT23:59:60-03:00`). + * + * ## Response body example + * + * ```json + * [ + * { + * "tradePolicyId": "6", + * "value": 20.9, + * "listPrice": 22.9, + * "minQuantity": 1, + * "dateRange": { + * "from": "2021-12-30T22:00:00-03:00", + * "to": "2021-12-30T22:00:00-03:00" + * } + * }, + * { + * "tradePolicyId": "1", + * "value": 18.9, + * "listPrice": null, + * "minQuantity": 1, + * "dateRange": { + * "from": "2021-12-30T22:00:00-03:00", + * "to": "2021-12-30T22:00:00-03:00" + * } + * } + * ] + * ``` + */ +"GET /pricing/prices/:itemId/fixed": { + +} +/** + * Retrieves all Fixed Prices on a price table or trade policy. + * + * ## Response body example + * + * ```json + * [ + * { + * "tradePolicyId": "6", + * "value": 20.9, + * "listPrice": 22.9, + * "minQuantity": 1, + * "dateRange": { + * "from": "2021-12-30T22:00:00-03:00", + * "to": "2021-12-30T22:00:00-04:00" + * } + * }, + * { + * "tradePolicyId": "1", + * "value": 18.9, + * "listPrice": null, + * "minQuantity": 1 + * } + * ] + * ``` + */ +"GET /pricing/prices/:itemId/fixed/:priceTableId": { + +} +/** + * Creates or updates the fixed prices of an SKU for a specific price table or trade policy. You can add one or multiple fixed prices per SKU. + * + * ## Request body example + * + * ```json + * [ + * { + * "value": 50.5, + * "listPrice": 50.5, + * "minQuantity": 2, + * "dateRange": { + * "from": "2021-12-30T22:00:00-03:00", + * "to": "2021-12-30T22:00:00-04:00" + * } + * } + * ] + * ``` + */ +"POST /pricing/prices/:itemId/fixed/:priceTableId": { +body: { +/** + * Fixed price value. + */ +value: number +/** + * SKU List Fixed Price. + */ +listPrice?: number +/** + * The minimum SKU quantity for the fixed price to be applied. + */ +minQuantity: number +/** + * Period of time when the fixed price will be applied to the SKU. + */ +dateRange?: { +/** + * Start date of the price. + */ +from: string +/** + * End date of the price. + */ +to: string +} +}[] +} +/** + * Deletes all Fixed Prices of an SKU in a specific Price Table or Trade Policy. + */ +"DELETE /pricing/prices/:itemId/fixed/:priceTableId": { + +} +/** + * Gets the Computed Price, which is the price after all the steps in the Pricing pipeline, for an SKU in a specific price table or trade policy. + * + * ## Response body example + * + * ```json + * { + * "tradePolicyId": "1", + * "listPrice": 30, + * "costPrice": 76.92, + * "sellingPrice": 18.9, + * "priceValidUntil": "2018-12-20T18:12:14Z" + * } + * ``` + */ +"GET /pricing/prices/:itemId/computed/:priceTableId": { +searchParams: { +/** + * Category ID. + */ +categoryIds: number +/** + * Brand ID. + */ +brandId: number +/** + * SKU quantity. + */ +quantity: number +} +} +/** + * Retrieves Pricing Configuration. + * ## Response body example + * + * ```json + * { + * "hasMigrated": true, + * "migrationStatus": "Completed", + * "defaultMarkup": 100, + * "priceVariation": { + * "upperLimit": null, + * "lowerLimit": null + * }, + * "minimumMarkups": { + * "1": 100, + * "2": 90 + * }, + * "tradePolicyConfigs": [], + * "sellersToOverride": [], + * "hasPriceInheritance": false, + * "priceInheritance": "never", + * "hasOptionalBasePrice": false, + * "blockAccount": false, + * "blockedRoutes": null, + * "priceTableSelectionStrategy": "first", + * "priceTableLimit": null + * } + * ``` + */ +"GET /pricing/config": { + +} +/** + * Retrieves Pricing v2 Status. + * ## Response body example + * + * ```json + * { + * "isActive": true, + * "hasMigrated": true + * } + * ``` + */ +"GET /pricing/migration": { + +} +/** + * This method will retrieve the rules from a specific Price Table. + * + * ## Response body example + * + * ```json + * { + * "tradePolicyId": "b2c", + * "rules": [{ + * "id": 0, + * "context": { + * "categories": {}, + * "brands": { + * "2000009": "Whiskas" + * }, + * "stockStatuses": null, + * "internalCategories": null, + * "markupRange": null, + * "dateRange": null + * }, + * "percentualModifier": 15 + * }] + * } + * ``` + */ +"GET /pricing/pipeline/catalog/:priceTableId": { +response: { +/** + * Trade Policy ID (Price Table ID). + */ +tradePolicyId?: string +/** + * Array of rules for the price table. + */ +rules?: { +/** + * Rule ID. + */ +id?: number +/** + * Rule Context is a group of filters to be checked at an item level when applying the rule. If all those filters check out, the rule will be applied for that item, unless there is a fixed price for that item. + */ +context?: { +/** + * Categories that an item should have to be eligible for the rule. Format: key: `categoryId`, value: `categoryName`. + */ +categories?: { +/** + * Category ID. + */ +[k: string]: string +} +/** + * Brands that an item should have to be eligible for the rule. Format: key: `brandId`, value: `brandName`. + */ +brands?: { +/** + * Brand ID. + */ +[k: string]: string +} +/** + * Stock statuses. + */ +stockStatuses?: (null | { + +}) +/** + * Internal Categories. + */ +internalCategories?: (null | { + +}) +/** + * For an item to be eligible to the rule, it's markup should be in this Markup Range. + */ +markupRange?: (null | { +/** + * Item markup should be greater than or equal to this value. + */ +from?: number +/** + * Item markup should be less than or equal to this value. + */ +to?: number +}) +/** + * The rule will be active during this time range. + */ +dateRange?: (null | { +/** + * Date when rule will be activated. Date format: `RFC3339`. + */ +from?: string +/** + * Date when the rule will be deactivated. Date format: `RFC3339`. + */ +to?: string +}) +} +}[] +/** + * Percentual modifier. + */ +percentualModifier?: number +} +} +/** + * This method will update the rules from a specific Price Table. It will delete all the rules from the requested Price Table and create new rules based on the content of the request. + * + * ## Request body example + * + * ```json + * { + * "rules": [ + * { + * "id": 1, + * "context": { + * "categories": { + * "Category ID": "1", + * "Category Name": "Alimentação" + * }, + * "brands": { + * "Brand ID": "2000002", + * "Brand Name": "Whiskas" + * }, + * "markupRange": { + * "from": 0, + * "to": 200 + * }, + * "dateRange": { + * "from": "2022-01-23T19:00:00.000Z", + * "to": "2023-10-26T00:00:00.000Z" + * } + * }, + * "percentualModifier": 0 + * } + * ] + * } + * ``` + */ +"PUT /pricing/pipeline/catalog/:priceTableId": { +body: { +/** + * Array of rules for the price table. + */ +rules: { +/** + * Rule ID. + */ +id: number +/** + * Rule Context is a group of filters to be checked at an item level when applying the rule. If all those filters check out, the rule will be applied for that item, unless there is a fixed price for that item. + */ +context: { +/** + * Categories that an item should have to be eligible for the rule. Format: key: `categoryId`, value: `categoryName`. + */ +categories: { +/** + * Category ID. + */ +[k: string]: string +} +/** + * Brands that an item should have to be eligible for the rule. Format: key: `brandId`, value: `brandName`. + */ +brands: { +/** + * Brand ID. + */ +[k: string]: string +} +/** + * Stock statuses. + */ +stockStatuses?: (null | { + +}) +/** + * Internal Categories. + */ +internalCategories?: (null | { + +}) +/** + * For an item to be eligible to the rule, it's markup should be in this Markup Range. + */ +markupRange: (null | { +/** + * Item markup should be greater than or equal to this value. + */ +from: number +/** + * Item markup should be less than or equal to this value. + */ +to: number +}) +/** + * The rule will be active during this time range. + */ +dateRange: { +/** + * Date when rule will be activated. Date format: `RFC3339`. + */ +from: string +/** + * Date when the rule will be deactivated. Date format: `RFC3339`. + */ +to: string +} +} +/** + * Percentual modifier. + */ +percentualModifier: number +}[] +} +} +/** + * This method will retrieve all price tables and their rules. + * + * ## Response body example + * + * ```json + * [ + * { + * "tradePolicyId": "2", + * "rules": [ + * { + * "id": 0, + * "context": { + * "categories": {}, + * "brands": {}, + * "stockStatuses": null, + * "internalCategories": null, + * "markupRange": null, + * "dateRange": null + * }, + * "percentualModifier": 20 + * } + * ] + * }, + * { + * "tradePolicyId": "b2c", + * "rules": [ + * { + * "id": 0, + * "context": { + * "categories": {}, + * "brands": { + * "2000009": "Whiskas" + * }, + * "stockStatuses": null, + * "internalCategories": null, + * "markupRange": null, + * "dateRange": null + * }, + * "percentualModifier": 15 + * } + * ] + * } + * ] + * ``` + */ +"GET /pricing/pipeline/catalog": { +response: { +/** + * Trade Policy ID (Price Table ID). + */ +tradePolicyId?: string +/** + * Array of rules for the price table. + */ +rules?: { +/** + * Rule ID. + */ +id?: number +/** + * Rule Context is a group of filters to be checked at an item level when applying the rule. If all those filters check out, the rule will be applied for that item, unless there is a fixed price for that item. + */ +context?: { +/** + * Categories that an item should have to be eligible for the rule. Format: key: `categoryId`, value: `categoryName`. + */ +categories?: { +/** + * Category ID. + */ +[k: string]: string +} +/** + * Brands that an item should have to be eligible for the rule. Format: key: `brandId`, value: `brandName`. + */ +brands?: { +/** + * Brand ID. + */ +[k: string]: string +} +/** + * Stock statuses. + */ +stockStatuses?: (null | { + +}) +/** + * Internal Categories. + */ +internalCategories?: (null | { + +}) +/** + * For an item to be eligible to the rule, it's markup should be in this Markup Range. + */ +markupRange?: (null | { +/** + * Item markup should be greater than or equal to this value. + */ +from?: number +/** + * Item markup should be less than or equal to this value. + */ +to?: number +}) +/** + * The rule will be active during this time range. + */ +dateRange?: (null | { +/** + * Date when rule will be activated. Date format: `RFC3339`. + */ +from?: string +/** + * Date when the rule will be deactivated. Date format: `RFC3339`. + */ +to?: string +}) +} +}[] +/** + * Percentual modifier. + */ +percentualModifier?: number +}[] +} +/** + * This method will list all price tables. + * + * ## Response body example + * + * ```json + * [ + * "1", + * "2", + * "3", + * "b2c", + * "b2b", + * "gold" + * ] + * ``` + */ +"GET /pricing/tables": { +/** + * Array of price tables. + */ +response: string[] +} +} +export interface Getprice { +/** + * SKU ID. + */ +itemId: string +/** + * Suggested retail price for the SKU. + */ +listPrice: number +/** + * SKU's cost price. + */ +costPrice: number +/** + * Desired profit margin with the SKU's sale. + */ +markup: number +/** + * SKU's reference price. + */ +basePrice: number +/** + * The fixed price is a price that overlaps all other existing price configurations of a price table. + */ +fixedPrices: FixedPrice[] +} +export interface FixedPrice { +/** + * Trade Policy ID. + */ +tradePolicyId: string +/** + * Trade Policy Fixed Price Value. + */ +value: number +/** + * Trade Policy List Price Value. + */ +listPrice: number +/** + * Trade Policy Fixed Price Minimum Item Quantity. + */ +minQuantity: number +dateRange?: DateRange +} +/** + * Trade Policy Fixed Price Validity Period Object. + */ +export interface DateRange { +/** + * Indicates the date and time when the fixed price will start to be valid. + */ +from: string +/** + * Indicates the date and time from which the fixed price will no longer be valid. + */ +to: string +} diff --git a/app-tags/utils/openapi/api.openapi.json b/app-tags/utils/openapi/api.openapi.json new file mode 100644 index 0000000..c59531f --- /dev/null +++ b/app-tags/utils/openapi/api.openapi.json @@ -0,0 +1,2183 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "Pricing API", + "description": "\r\n> Check the new [Pricing onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/pricing-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Pricing and is organized by focusing on the developer's journey.\r\n\r\nPricing is the VTEX module responsible for the SKU's price list. At this module we have the base price of each SKU, some optional fixed prices by trade policy, and some rules that can be applied to generate dynamically different final prices according to the purchase context and the trade policy. The variables used in this collection are:\n\n`{{accountName}}` = You VTEX account name.\n\n`{{tradePolicyId}}` = Current Trade Policy ID.\n\n`{{itemId}}` = SKU ID.\n\n`{{X-VTEX-API-AppKey}}` and `{{X-VTEX-API-AppToken}}` = Credentials used in Authentication.\n\nYou can get more information about how to use this module and its business logic at our [Pricing onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/pricing-overview).\n\n## Rate Limits per route\nThe rate limits per route revolve around the following values:\n\n\n| Operation | Rate | Burst credits |\n|-----------|----------------------------------|----------------|\n| GET | No rate limits | No rate limits |\n| POST/PUT |- 2000 per minute
- 33 per second | 500 |\n| DELETE | - 1000 per minute
-16 per second | 300 |\n\n### What are Burst Credits?\nIn case the account exceeds the limit frequency for a Rate Limiter (for instance, when one account makes 41 requests/second in any price insert/update route), we decrease from the Burst Credit count the exceeding (in this example, 1 Credit).\n\nIn the event of the Burst Credits reaching 0 (zero), the request is blocked with a Status 429 response.\n\nThe credits fill up over time when the route is not being used, in the same rate as the route's Rate Limiter. In our example, for each second not sending a PUT or POST request, we increase 40 Burst Credits to this Rate Limiter\n\n### Response Headers for rate limits\nIn the response headers of any request to the Pricing API, there are some headers indicating the current status of the Rate Limiting. This information may be useful to evaluate the ideal frequency to send requests to a route, and when to send a new request in the event of reaching a Rate Limit.\n\n- `Ratelimit-Limit`: Total Burst Credits offered to a route\n- `Ratelimit-Remaining`: How many Burst Credits are still available to use\n- `Ratelimit-Reset`: How long (in seconds) it will take for Burst Credits to fill up completely (it will fill up to the *Ratelimit-Limit*)\n- `Retry-After`: Indicates how many seconds you will need to wait until the Rate Limiter accepts a new request to this route again. If this header response exists, this means your current request has been rate limited and has not been processed.\n\n\n### How to integrate with Pricing v2 considering our Rate Limits\nIntegrate considering the limits of requests/route/account specified in the [Rate Limits per route](#rate-limits-per-route) section, avoiding to surpass this frequency.\n\nIf you happen to be Rate Limited, please await the time in seconds specified in `Retry-After` before making another request to the service, and reduce the rate of requests per second that your integration is making.", + "contact": {}, + "version": "1.0" + }, + "servers": [ + { + "url": "https://api.vtex.com/{accountName}", + "description": "VTEX server url", + "variables": { + "accountName": { + "description": "Name of the VTEX account. Used as part of the URL", + "default": "{accountName}" + } + } + } + ], + "paths": { + "/pricing/prices/{itemId}": { + "get": { + "tags": [ + "Prices and Fixed Prices" + ], + "summary": "Get Price", + "description": "Retrieves price data given a specific SKU ID. Within the `fixedPrices` object, there might be a list of prices for specific Trade Policies and Minimium Quantities of the SKU. Fixed Prices may also be scheduled.\r\n\r\n ## Response body example\r\n\r\n```json\r\n{\r\n \"itemId\": \"1\",\r\n \"listPrice\": 50,\r\n \"costPrice\": 90,\r\n \"markup\": 30,\r\n \"basePrice\": 117,\r\n \"fixedPrices\": [\r\n {\r\n \"tradePolicyId\": \"1\",\r\n \"value\": 50.5,\r\n \"listPrice\": 50.5,\r\n \"minQuantity\": 2,\r\n \"dateRange\": {\r\n \"from\": \"2021-12-31T01:00:00Z\",\r\n \"to\": \"2022-12-31T01:00:00Z\"\r\n }\r\n },\r\n {\r\n \"tradePolicyId\": \"2\",\r\n \"value\": 30,\r\n \"listPrice\": 50,\r\n \"minQuantity\": 2\r\n }\r\n ]\r\n}\r\n```", + "operationId": "GetPrice", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "application/json" + } + }, + { + "name": "itemId", + "in": "path", + "description": "SKU ID.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Getprice" + }, + "example": { + "itemId": "1", + "listPrice": 50, + "costPrice": 90, + "markup": 30, + "basePrice": 117, + "fixedPrices": [ + { + "tradePolicyId": "1", + "value": 50.5, + "listPrice": 50.5, + "minQuantity": 2, + "dateRange": { + "from": "2021-12-31T01:00:00Z", + "to": "2022-12-31T01:00:00Z" + } + }, + { + "tradePolicyId": "2", + "value": 30, + "listPrice": 50, + "minQuantity": 2 + } + ] + } + } + } + } + }, + "deprecated": false + }, + "delete": { + "tags": [ + "Prices and Fixed Prices" + ], + "summary": "Delete Price", + "description": "Deletes the Base Price and all available Fixed Prices for an SKU in all trade policies.", + "operationId": "DeletePrice", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "itemId", + "in": "path", + "description": "SKU ID.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + }, + "deprecated": false + }, + "put": { + "tags": [ + "Prices and Fixed Prices" + ], + "summary": "Create or Update Base Price or Fixed Prices", + "description": "Creates or updates an SKU Base Price or Fixed Prices. The **base price** is the basic selling price of a product, it comprises the cost price and the markup wanted in the sale of the product. The **fixed price** is an optional price of the SKU for a specific trade policy with a specific minimum quantity to be activated.\r\n\r\n

You may optionally set a list price. Additionally, you may set either a cost price or a markup value. By defining either one of them, the other will be calculated to conform to the formula costPrice * (1 + markup) = basePrice.

Request body example

\r\n\r\n```json\r\n{\r\n \"markup\": 30,\r\n \"basePrice\": 100,\r\n \"listPrice\": 35,\r\n \"fixedPrices\": [\r\n {\r\n \"tradePolicyId\": \"1\",\r\n \"value\": 31,\r\n \"listPrice\": 32,\r\n \"minQuantity\": 1,\r\n \"dateRange\": {\r\n \"from\": \"2022-05-21T22:00:00Z\",\r\n \"to\": \"2023-05-28T22:00:00Z\"\r\n }\r\n },\r\n {\r\n \"tradePolicyId\": \"1\",\r\n \"value\": 31.5,\r\n \"listPrice\": 33,\r\n \"minQuantity\": 2\r\n }\r\n ]\r\n}\r\n```", + "operationId": "CreateUpdatePriceOrFixedPrice", + "parameters": [ + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "application/json" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "itemId", + "in": "path", + "description": "SKU unique identifier number.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "markup", + "basePrice", + "listPrice" + ], + "properties": { + "markup": { + "type": "integer", + "description": "The profit percentage that is to be obtained from the sale of that SKU. If you decide to fill the `markup` item, you must also fill the `costPrice`. The `basePrice` will be automatically generated based on both values.", + "default": 30 + }, + "listPrice": { + "type": "number", + "description": "SKU's suggested selling price.", + "default": 50.00 + }, + "basePrice": { + "type": "number", + "description": "SKU selling base price. If you decide to fill only the `basePrice` item, the `markup` and `costPrice` will be automatically generated to adapt to the number inserted in `basePrice`.", + "default": 100.00 + }, + "costPrice": { + "type": "number", + "description": "SKU selling cost price. If you decide to fill the `costPrice` item, you must also fill the `markup` and `basePrice` will be automatically generated based on both values.", + "default": 35.00 + }, + "fixedPrices": { + "type": "array", + "items": { + "description": "Array with general information about the SKU's fixed prices.", + "default": [], + "required": [ + "minQuantity", + "value", + "tradePolicyId" + ], + "properties": { + "tradePolicyId": { + "type": "string", + "description": "Trade policy name or ID that will have the fixed price configured.", + "example": "1" + }, + "value": { + "type": "number", + "description": "Fixed price value.", + "example": 50.50 + }, + "listPrice": { + "type": "number", + "description": "SKU List Fixed Price.", + "example": 50.50 + }, + "minQuantity": { + "type": "integer", + "description": "Minimum quantity of the SKU for the fixed price to be applied.", + "example": 2 + }, + "dateRange": { + "type": "object", + "description": "Period of time when the fixed price will be applied to the SKU.", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "type": "string", + "description": "Start date of the price.", + "example": "2021-12-30T22:00:00-03:00" + }, + "to": { + "type": "string", + "description": "End date of the price.", + "example": "2021-12-30T22:00:00-03:00" + } + } + } + } + } + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/pricing/prices/{itemId}/fixed": { + "get": { + "tags": [ + "Prices and Fixed Prices" + ], + "summary": "Get Fixed Prices", + "description": "The **fixed price** is an optional price of the SKU for a specific trade policy with a specific minimum quantity to be activated. This method retrieves an array of Fixed Prices for an SKU in a Trade Policy with Minimum Quantities.\r\n\r\n The default value for a Minimum Quantity is `1`. This means a Fixed Price will be valid for a SKU in a Trade Policy for orders containing the specified number of Minimum Quantity or above, unless a higher Minimum Quantity is specified.\r\n\r\n Fixed prices may, optionally, be scheduled. If so, these objects will contain the `dateRange` object with `from` and `to` properties, indicating the start and end time of the scheduled fixed price in the RFC3339 timestamp format (`YYYY-MM-DDT23:59:60Z`).\r\n\r\n Note that the 'Z', at the end, represents the UTC time (GMT+00:00). If it was in GMT-03:00, for example, it would be (`YYYY-MM-DDT23:59:60-03:00`).\r\n\r\n ## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"tradePolicyId\": \"6\",\r\n \"value\": 20.9,\r\n \"listPrice\": 22.9,\r\n \"minQuantity\": 1,\r\n \"dateRange\": {\r\n \"from\": \"2021-12-30T22:00:00-03:00\",\r\n \"to\": \"2021-12-30T22:00:00-03:00\"\r\n }\r\n },\r\n {\r\n \"tradePolicyId\": \"1\",\r\n \"value\": 18.9,\r\n \"listPrice\": null,\r\n \"minQuantity\": 1,\r\n \"dateRange\": {\r\n \"from\": \"2021-12-30T22:00:00-03:00\",\r\n \"to\": \"2021-12-30T22:00:00-03:00\"\r\n }\r\n }\r\n]\r\n```", + "operationId": "GetFixedPrices", + "parameters": [ + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "application/json" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "itemId", + "in": "path", + "description": "SKU ID.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; charset=utf-8": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FixedPrice" + } + }, + "example": [ + { + "tradePolicyId": "6", + "value": 20.9, + "listPrice": 22.9, + "minQuantity": 1, + "dateRange": { + "from": "2021-12-30T22:00:00-03:00", + "to": "2021-12-30T22:00:00-03:00" + } + }, + { + "tradePolicyId": "1", + "value": 18.9, + "listPrice": null, + "minQuantity": 1, + "dateRange": { + "from": "2021-12-30T22:00:00-03:00", + "to": "2021-12-30T22:00:00-03:00" + } + } + ] + } + } + } + }, + "deprecated": false + } + }, + "/pricing/prices/{itemId}/fixed/{priceTableId}": { + "post": { + "tags": [ + "Prices and Fixed Prices" + ], + "summary": "Create or Update Fixed Prices on a price table or trade policy", + "description": "Creates or updates the fixed prices of an SKU for a specific price table or trade policy. You can add one or multiple fixed prices per SKU.\r\n\r\n ## Request body example\r\n\r\n```json\r\n[\r\n {\r\n \"value\": 50.5,\r\n \"listPrice\": 50.5,\r\n \"minQuantity\": 2,\r\n \"dateRange\": {\r\n \"from\": \"2021-12-30T22:00:00-03:00\",\r\n \"to\": \"2021-12-30T22:00:00-04:00\"\r\n }\r\n }\r\n]\r\n```", + "operationId": "createorupdatefixedpricesonpricetableortradepolicy", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "itemId", + "in": "path", + "description": "SKU ID.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "priceTableId", + "in": "path", + "description": "SKU **price table** name or **trade policy** ID.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "priceTableA" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "required": [ + "value", + "minQuantity" + ], + "properties": { + "value": { + "type": "number", + "description": "Fixed price value.", + "example": 50.50 + }, + "listPrice": { + "type": "number", + "description": "SKU List Fixed Price.", + "example": 50.50 + }, + "minQuantity": { + "type": "integer", + "description": "The minimum SKU quantity for the fixed price to be applied.", + "example": 2 + }, + "dateRange": { + "type": "object", + "description": "Period of time when the fixed price will be applied to the SKU.", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "type": "string", + "description": "Start date of the price.", + "example": "2021-12-30T22:00:00-03:00" + }, + "to": { + "type": "string", + "description": "End date of the price.", + "example": "2021-12-30T22:00:00-04:00" + } + } + } + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + }, + "deprecated": false + }, + "get": { + "tags": [ + "Prices and Fixed Prices" + ], + "summary": "Get Fixed Prices on a price table or trade policy", + "description": "Retrieves all Fixed Prices on a price table or trade policy. \r\n\r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"tradePolicyId\": \"6\",\r\n \"value\": 20.9,\r\n \"listPrice\": 22.9,\r\n \"minQuantity\": 1,\r\n \"dateRange\": {\r\n \"from\": \"2021-12-30T22:00:00-03:00\",\r\n \"to\": \"2021-12-30T22:00:00-04:00\"\r\n }\r\n },\r\n {\r\n \"tradePolicyId\": \"1\",\r\n \"value\": 18.9,\r\n \"listPrice\": null,\r\n \"minQuantity\": 1\r\n }\r\n]\r\n```", + "operationId": "GetFixedPricesonapricetable", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "application/json" + } + }, + { + "name": "itemId", + "in": "path", + "description": "SKU ID.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "priceTableId", + "in": "path", + "description": "Price Table Name", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "gold" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; charset=utf-8": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FixedPrice" + } + }, + "example": [ + { + "tradePolicyId": "6", + "value": 20.9, + "listPrice": 22.9, + "minQuantity": 1, + "dateRange": { + "from": "2021-12-30T22:00:00-03:00", + "to": "2021-12-30T22:00:00-04:00" + } + }, + { + "tradePolicyId": "1", + "value": 18.9, + "listPrice": null, + "minQuantity": 1 + } + ] + } + } + } + }, + "deprecated": false + }, + "delete": { + "tags": [ + "Prices and Fixed Prices" + ], + "summary": "Delete Fixed Prices on a price table or trade policy", + "description": "Deletes all Fixed Prices of an SKU in a specific Price Table or Trade Policy.", + "operationId": "Deletefixedpricesonapricetableortradepolicy", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "application/json" + } + }, + { + "name": "itemId", + "in": "path", + "description": "SKU ID.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "priceTableId", + "in": "path", + "description": "Price Table or Trade Policy Name.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "gold" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + }, + "deprecated": false + } + }, + "/pricing/prices/{itemId}/computed/{priceTableId}": { + "get": { + "tags": [ + "Prices and Fixed Prices" + ], + "summary": "Get Computed Price by price table or trade policy", + "description": "Gets the Computed Price, which is the price after all the steps in the Pricing pipeline, for an SKU in a specific price table or trade policy. \r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"tradePolicyId\": \"1\",\r\n \"listPrice\": 30,\r\n \"costPrice\": 76.92,\r\n \"sellingPrice\": 18.9,\r\n \"priceValidUntil\": \"2018-12-20T18:12:14Z\"\r\n}\r\n```", + "operationId": "GetComputedPricebypricetable", + "parameters": [ + { + "name": "categoryIds", + "in": "query", + "description": "Category ID.", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "brandId", + "in": "query", + "description": "Brand ID.", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "example": 3 + } + }, + { + "name": "quantity", + "in": "query", + "description": "SKU quantity.", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "example": 2 + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "application/json" + } + }, + { + "name": "itemId", + "in": "path", + "description": "SKU ID.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "priceTableId", + "in": "path", + "description": "SKU Price Table Name.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "gold" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/Getcomputedprice" + }, + "example": { + "tradePolicyId": "1", + "listPrice": 30, + "costPrice": 76.92, + "sellingPrice": 18.9, + "priceValidUntil": "2018-12-20T18:12:14Z" + } + } + } + } + }, + "deprecated": false, + "servers": [ + { + "url": "https://api.vtex.com/{account}/pricing", + "variables": { + "account": { + "default": "DefaultParameterValue" + } + } + } + ] + } + }, + "/pricing/config": { + "get": { + "tags": [ + "Pricing Configuration" + ], + "summary": "Get Pricing Configuration", + "description": "Retrieves Pricing Configuration.\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"hasMigrated\": true,\r\n \"migrationStatus\": \"Completed\",\r\n \"defaultMarkup\": 100,\r\n \"priceVariation\": {\r\n \"upperLimit\": null,\r\n \"lowerLimit\": null\r\n },\r\n \"minimumMarkups\": {\r\n \"1\": 100,\r\n \"2\": 90\r\n },\r\n \"tradePolicyConfigs\": [],\r\n \"sellersToOverride\": [],\r\n \"hasPriceInheritance\": false,\r\n \"priceInheritance\": \"never\",\r\n \"hasOptionalBasePrice\": false,\r\n \"blockAccount\": false,\r\n \"blockedRoutes\": null,\r\n \"priceTableSelectionStrategy\": \"first\",\r\n \"priceTableLimit\": null\r\n}\r\n```", + "operationId": "GetPricingConfig", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Access-Control-Allow-Credentials": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "true" + } + } + }, + "Access-Control-Allow-Origin": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "*" + } + } + }, + "Connection": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "keep-alive" + } + } + }, + "Content-Encoding": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "gzip" + } + } + }, + "Content-Length": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "118" + } + } + }, + "Date": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Tue, 21 Feb 2017 16:11:39 GMT" + } + } + }, + "Server": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "nginx" + } + } + }, + "X-CDNIgnore": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "1" + } + } + }, + "X-Powered-by-VTEX-Janus-Edge": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "v1.35.3" + } + } + }, + "X-Track": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "stable" + } + } + }, + "X-VTEX-Janus-Router-Backend-App": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "pricing-v3.21.12" + } + } + } + }, + "content": { + "application/json; charset=utf-8": { + "schema": { + "$ref": "#/components/schemas/PricingConfiguration" + }, + "example": { + "hasMigrated": true, + "migrationStatus": "Completed", + "defaultMarkup": 100, + "priceVariation": { + "upperLimit": null, + "lowerLimit": null + }, + "minimumMarkups": { + "1": 100, + "2": 90 + }, + "tradePolicyConfigs": [], + "sellersToOverride": [], + "hasPriceInheritance": false, + "priceInheritance": "never", + "hasOptionalBasePrice": false, + "blockAccount": false, + "blockedRoutes": null, + "priceTableSelectionStrategy": "first", + "priceTableLimit": null + } + } + } + } + }, + "deprecated": false, + "servers": [ + { + "url": "https://api.vtex.com/{account}/pricing", + "variables": { + "account": { + "default": "DefaultParameterValue" + } + } + } + ] + } + }, + "/pricing/migration": { + "get": { + "tags": [ + "Pricing Configuration" + ], + "summary": "Get Pricing v2 Status", + "description": "Retrieves Pricing v2 Status. \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"isActive\": true,\r\n \"hasMigrated\": true\r\n}\r\n```", + "operationId": "GetPricingv2Status", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Access-Control-Allow-Credentials": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "true" + } + } + }, + "Access-Control-Allow-Origin": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "*" + } + } + }, + "Connection": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "keep-alive" + } + } + }, + "Content-Encoding": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "gzip" + } + } + }, + "Content-Length": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "52" + } + } + }, + "Date": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Tue, 21 Feb 2017 16:13:39 GMT" + } + } + }, + "Server": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "nginx" + } + } + }, + "X-CDNIgnore": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "1" + } + } + }, + "X-Powered-by-VTEX-Janus-Edge": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "v1.35.3" + } + } + }, + "X-Track": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "stable" + } + } + }, + "X-VTEX-Janus-Router-Backend-App": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "pricing-v3.21.12" + } + } + } + }, + "content": { + "application/json; charset=utf-8": { + "schema": { + "type": "object", + "properties": { + "isActive": { + "type": "boolean", + "description": "Defines if the account is active.", + "example": true + }, + "hasMigrated": { + "type": "boolean", + "description": "Defines if the account has migrated to Pricing V2.", + "example": true + } + } + }, + "example": { + "isActive": true, + "hasMigrated": true + } + } + } + } + }, + "deprecated": false, + "servers": [ + { + "url": "https://api.vtex.com/{account}/pricing", + "variables": { + "account": { + "default": "DefaultParameterValue" + } + } + } + ] + } + }, + "/pricing/pipeline/catalog/{priceTableId}": { + "get": { + "tags": [ + "Price Tables" + ], + "summary": "Get rules for a price table", + "description": "This method will retrieve the rules from a specific Price Table.\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"tradePolicyId\": \"b2c\",\r\n \"rules\": [{\r\n \"id\": 0,\r\n \"context\": {\r\n \"categories\": {},\r\n \"brands\": {\r\n \"2000009\": \"Whiskas\"\r\n },\r\n \"stockStatuses\": null,\r\n \"internalCategories\": null,\r\n \"markupRange\": null,\r\n \"dateRange\": null\r\n },\r\n \"percentualModifier\": 15\r\n }]\r\n}\r\n```", + "operationId": "Getrulesforapricetable", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "application/json" + } + }, + { + "name": "priceTableId", + "in": "path", + "description": "Price Table Name.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "b2c" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "tradePolicyId": "b2c", + "rules": [ + { + "id": 0, + "context": { + "categories": {}, + "brands": { + "2000009": "Whiskas" + }, + "stockStatuses": null, + "internalCategories": null, + "markupRange": null, + "dateRange": null + }, + "percentualModifier": 15 + } + ] + }, + "schema": { + "type": "object", + "properties": { + "tradePolicyId": { + "type": "string", + "description": "Trade Policy ID (Price Table ID)." + }, + "rules": { + "type": "array", + "description": "Array of rules for the price table.", + "items": { + "type": "object", + "description": "Object containing a price table rule.", + "properties": { + "id": { + "type": "number", + "description": "Rule ID." + }, + "context": { + "type": "object", + "description": "Rule Context is a group of filters to be checked at an item level when applying the rule. If all those filters check out, the rule will be applied for that item, unless there is a fixed price for that item.", + "properties": { + "categories": { + "type": "object", + "description": "Categories that an item should have to be eligible for the rule. Format: key: `categoryId`, value: `categoryName`.", + "additionalProperties": { + "type": "string", + "description": "Category ID.", + "additionalProperties": { + "type": "string", + "description": "Category Name." + } + } + }, + "brands": { + "type": "object", + "description": "Brands that an item should have to be eligible for the rule. Format: key: `brandId`, value: `brandName`.", + "additionalProperties": { + "type": "string", + "description": "Brand ID.", + "additionalProperties": { + "type": "string", + "description": "Brand Name." + } + } + }, + "stockStatuses": { + "type": "object", + "description": "Stock statuses.", + "nullable": true + }, + "internalCategories": { + "type": "object", + "description": "Internal Categories.", + "nullable": true + }, + "markupRange": { + "type": "object", + "description": "For an item to be eligible to the rule, it's markup should be in this Markup Range.", + "nullable": true, + "properties": { + "from": { + "type": "integer", + "description": "Item markup should be greater than or equal to this value." + }, + "to": { + "type": "integer", + "description": "Item markup should be less than or equal to this value." + } + } + }, + "dateRange": { + "type": "object", + "description": "The rule will be active during this time range.", + "nullable": true, + "properties": { + "from": { + "type": "string", + "description": "Date when rule will be activated. Date format: `RFC3339`." + }, + "to": { + "type": "string", + "description": "Date when the rule will be deactivated. Date format: `RFC3339`." + } + } + } + } + } + } + } + }, + "percentualModifier": { + "type": "integer", + "description": "Percentual modifier." + } + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "429": { + "description": "Too many requests" + } + }, + "deprecated": false, + "servers": [ + { + "url": "https://api.vtex.com/{account}/pricing", + "variables": { + "account": { + "default": "DefaultParameterValue" + } + } + } + ] + }, + "put": { + "tags": [ + "Price Tables" + ], + "summary": "Update rules for a price table", + "description": "This method will update the rules from a specific Price Table. It will delete all the rules from the requested Price Table and create new rules based on the content of the request.\r\n\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"rules\": [\r\n {\r\n \"id\": 1,\r\n \"context\": {\r\n \"categories\": {\r\n \"Category ID\": \"1\",\r\n \"Category Name\": \"Alimenta\u00E7\u00E3o\"\r\n },\r\n \"brands\": {\r\n \"Brand ID\": \"2000002\",\r\n \"Brand Name\": \"Whiskas\"\r\n },\r\n \"markupRange\": {\r\n \"from\": 0,\r\n \"to\": 200\r\n },\r\n \"dateRange\": {\r\n \"from\": \"2022-01-23T19:00:00.000Z\",\r\n \"to\": \"2023-10-26T00:00:00.000Z\"\r\n }\r\n },\r\n \"percentualModifier\": 0\r\n }\r\n ]\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "application/json" + } + }, + { + "name": "priceTableId", + "in": "path", + "description": "Price Table Name.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "responses": { + "201": { + "description": "Created" + } + }, + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "rules" + ], + "example": { + "rules": [ + { + "id": 1, + "context": { + "categories": { + "Category ID": "1", + "Category Name": "Alimentação" + }, + "brands": { + "Brand ID": "2000002", + "Brand Name": "Whiskas" + }, + "markupRange": { + "from": 0, + "to": 200 + }, + "dateRange": { + "from": "2022-01-23T19:00:00.000Z", + "to": "2023-10-26T00:00:00.000Z" + } + }, + "percentualModifier": 0 + } + ] + }, + "properties": { + "rules": { + "type": "array", + "description": "Array of rules for the price table.", + "items": { + "type": "object", + "description": "Object containing a price table rule.", + "required": [ + "id", + "context", + "percentualModifier" + ], + "properties": { + "id": { + "type": "integer", + "description": "Rule ID.", + "example": 0 + }, + "context": { + "type": "object", + "description": "Rule Context is a group of filters to be checked at an item level when applying the rule. If all those filters check out, the rule will be applied for that item, unless there is a fixed price for that item.", + "required": [ + "categories", + "brands", + "markupRange", + "dateRange" + ], + "properties": { + "categories": { + "type": "object", + "description": "Categories that an item should have to be eligible for the rule. Format: key: `categoryId`, value: `categoryName`.", + "additionalProperties": { + "type": "string", + "description": "Category ID.", + "example": "209", + "additionalProperties": { + "type": "string", + "description": "Category Name.", + "example": "Books" + } + } + }, + "brands": { + "type": "object", + "description": "Brands that an item should have to be eligible for the rule. Format: key: `brandId`, value: `brandName`.", + "additionalProperties": { + "type": "string", + "description": "Brand ID.", + "example": "421", + "additionalProperties": { + "type": "string", + "description": "Brand Name.", + "example": "Goldman" + } + } + }, + "stockStatuses": { + "type": "object", + "description": "Stock statuses.", + "nullable": true, + "example": null + }, + "internalCategories": { + "type": "object", + "description": "Internal Categories.", + "nullable": true, + "example": null + }, + "markupRange": { + "type": "object", + "description": "For an item to be eligible to the rule, it's markup should be in this Markup Range.", + "nullable": true, + "example": null, + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "type": "integer", + "description": "Item markup should be greater than or equal to this value.", + "example": 0 + }, + "to": { + "type": "integer", + "description": "Item markup should be less than or equal to this value.", + "example": 200 + } + } + }, + "dateRange": { + "type": "object", + "description": "The rule will be active during this time range.", + "required": [ + "from", + "to" + ], + "properties": { + "from": { + "type": "string", + "description": "Date when rule will be activated. Date format: `RFC3339`.", + "example": "2019-10-23T19:00:00.000Z" + }, + "to": { + "type": "string", + "description": "Date when the rule will be deactivated. Date format: `RFC3339`.", + "example": "2019-10-26T00:00:00.000Z" + } + } + } + } + }, + "percentualModifier": { + "type": "number", + "description": "Percentual modifier.", + "example": 0 + } + } + } + } + } + } + } + } + } + } + }, + "/pricing/pipeline/catalog": { + "get": { + "tags": [ + "Price Tables" + ], + "summary": "Get all price tables and their rules", + "description": "This method will retrieve all price tables and their rules.\r\n\r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"tradePolicyId\": \"2\",\r\n \"rules\": [\r\n {\r\n \"id\": 0,\r\n \"context\": {\r\n \"categories\": {},\r\n \"brands\": {},\r\n \"stockStatuses\": null,\r\n \"internalCategories\": null,\r\n \"markupRange\": null,\r\n \"dateRange\": null\r\n },\r\n \"percentualModifier\": 20\r\n }\r\n ]\r\n },\r\n {\r\n \"tradePolicyId\": \"b2c\",\r\n \"rules\": [\r\n {\r\n \"id\": 0,\r\n \"context\": {\r\n \"categories\": {},\r\n \"brands\": {\r\n \"2000009\": \"Whiskas\"\r\n },\r\n \"stockStatuses\": null,\r\n \"internalCategories\": null,\r\n \"markupRange\": null,\r\n \"dateRange\": null\r\n },\r\n \"percentualModifier\": 15\r\n }\r\n ]\r\n }\r\n]\r\n```", + "operationId": "getallpricetablesandrules", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": [ + { + "tradePolicyId": "2", + "rules": [ + { + "id": 0, + "context": { + "categories": {}, + "brands": {}, + "stockStatuses": null, + "internalCategories": null, + "markupRange": null, + "dateRange": null + }, + "percentualModifier": 20 + } + ] + }, + { + "tradePolicyId": "b2c", + "rules": [ + { + "id": 0, + "context": { + "categories": {}, + "brands": { + "2000009": "Whiskas" + }, + "stockStatuses": null, + "internalCategories": null, + "markupRange": null, + "dateRange": null + }, + "percentualModifier": 15 + } + ] + } + ], + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "tradePolicyId": { + "type": "string", + "description": "Trade Policy ID (Price Table ID)." + }, + "rules": { + "type": "array", + "description": "Array of rules for the price table.", + "items": { + "type": "object", + "description": "Object containing a price table rule.", + "properties": { + "id": { + "type": "number", + "description": "Rule ID." + }, + "context": { + "type": "object", + "description": "Rule Context is a group of filters to be checked at an item level when applying the rule. If all those filters check out, the rule will be applied for that item, unless there is a fixed price for that item.", + "properties": { + "categories": { + "type": "object", + "description": "Categories that an item should have to be eligible for the rule. Format: key: `categoryId`, value: `categoryName`.", + "additionalProperties": { + "type": "string", + "description": "Category ID.", + "additionalProperties": { + "type": "string", + "description": "Category Name." + } + } + }, + "brands": { + "type": "object", + "description": "Brands that an item should have to be eligible for the rule. Format: key: `brandId`, value: `brandName`.", + "additionalProperties": { + "type": "string", + "description": "Brand ID.", + "additionalProperties": { + "type": "string", + "description": "Brand Name." + } + } + }, + "stockStatuses": { + "type": "object", + "description": "Stock statuses.", + "nullable": true + }, + "internalCategories": { + "type": "object", + "description": "Internal Categories.", + "nullable": true + }, + "markupRange": { + "type": "object", + "description": "For an item to be eligible to the rule, it's markup should be in this Markup Range.", + "nullable": true, + "properties": { + "from": { + "type": "integer", + "description": "Item markup should be greater than or equal to this value." + }, + "to": { + "type": "integer", + "description": "Item markup should be less than or equal to this value." + } + } + }, + "dateRange": { + "type": "object", + "description": "The rule will be active during this time range.", + "nullable": true, + "properties": { + "from": { + "type": "string", + "description": "Date when rule will be activated. Date format: `RFC3339`." + }, + "to": { + "type": "string", + "description": "Date when the rule will be deactivated. Date format: `RFC3339`." + } + } + } + } + } + } + } + }, + "percentualModifier": { + "type": "integer", + "description": "Percentual modifier." + } + } + } + } + } + } + } + }, + "deprecated": false, + "servers": [ + { + "url": "https://api.vtex.com/{account}/pricing", + "variables": { + "account": { + "default": "DefaultParameterValue" + } + } + } + ] + } + }, + "/pricing/tables": { + "get": { + "tags": [ + "Price Tables" + ], + "summary": "List price tables", + "description": "This method will list all price tables.\r\n\r\n## Response body example\r\n\r\n```json\r\n[\r\n \"1\",\r\n \"2\",\r\n \"3\",\r\n \"b2c\",\r\n \"b2b\",\r\n \"gold\"\r\n]\r\n```", + "operationId": "Listpricetables", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": [ + "1", + "2", + "3", + "b2c", + "b2b", + "gold" + ], + "schema": { + "type": "array", + "description": "Array of price tables.", + "items": { + "type": "string", + "description": "Price table name." + } + } + } + } + } + }, + "deprecated": false, + "servers": [ + { + "url": "https://api.vtex.com/{account}/pricing", + "variables": { + "account": { + "default": "DefaultParameterValue" + } + } + } + ] + } + } + }, + "components": { + "schemas": { + "FixedPrice": { + "required": [ + "tradePolicyId", + "value", + "listPrice", + "minQuantity" + ], + "type": "object", + "properties": { + "tradePolicyId": { + "type": "string", + "description": "Trade Policy ID." + }, + "value": { + "type": "number", + "description": "Trade Policy Fixed Price Value." + }, + "listPrice": { + "type": "number", + "description": "Trade Policy List Price Value.", + "nullable": true + }, + "minQuantity": { + "type": "integer", + "format": "int32", + "description": "Trade Policy Fixed Price Minimum Item Quantity." + }, + "dateRange": { + "$ref": "#/components/schemas/DateRange" + } + }, + "example": { + "tradePolicyId": "9", + "value": 300, + "listPrice": null, + "minQuantity": 1, + "dateRange": { + "from": "2017-12-07T14:30:00Z", + "to": "2017-12-30T14:30:00Z" + } + } + }, + "DateRange": { + "description": "Trade Policy Fixed Price Validity Period Object.", + "required": [ + "from", + "to" + ], + "type": "object", + "properties": { + "from": { + "type": "string", + "description": "Indicates the date and time when the fixed price will start to be valid." + }, + "to": { + "type": "string", + "description": "Indicates the date and time from which the fixed price will no longer be valid." + } + }, + "example": { + "from": "2017-12-07T14:30:00Z", + "to": "2017-12-30T14:30:00Z" + } + }, + "Getprice": { + "required": [ + "itemId", + "listPrice", + "costPrice", + "markup", + "basePrice", + "fixedPrices" + ], + "type": "object", + "properties": { + "itemId": { + "type": "string", + "description": "SKU ID." + }, + "listPrice": { + "type": "integer", + "format": "int32", + "description": "Suggested retail price for the SKU." + }, + "costPrice": { + "type": "integer", + "format": "int32", + "description": "SKU's cost price." + }, + "markup": { + "type": "integer", + "format": "int32", + "description": "Desired profit margin with the SKU's sale." + }, + "basePrice": { + "type": "integer", + "format": "int32", + "description": "SKU's reference price." + }, + "fixedPrices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FixedPrice" + }, + "description": "The fixed price is a price that overlaps all other existing price configurations of a price table." + } + }, + "example": { + "itemId": "1234512354", + "listPrice": 300, + "costPrice": 10, + "markup": 2400, + "basePrice": 250, + "fixedPrices": [ + { + "tradePolicyId": "1", + "value": 666.66, + "listPrice": null, + "minQuantity": 1 + }, + { + "tradePolicyId": "9", + "value": 4500, + "listPrice": null, + "minQuantity": 1 + }, + { + "tradePolicyId": "9", + "value": 600, + "listPrice": null, + "minQuantity": 1, + "dateRange": { + "from": "2017-12-07T14:30:00Z", + "to": "2017-12-30T14:30:00Z" + } + }, + { + "tradePolicyId": "9", + "value": 5555.55, + "listPrice": null, + "minQuantity": 1, + "dateRange": { + "from": "2017-12-20T14:30:00Z", + "to": "2017-12-22T14:30:00Z" + } + }, + { + "tradePolicyId": "9", + "value": 555.55, + "listPrice": null, + "minQuantity": 1, + "dateRange": { + "from": "2017-12-06T15:00:00Z", + "to": "2017-12-14T15:00:00Z" + } + }, + { + "tradePolicyId": "10", + "value": 5555.55, + "listPrice": null, + "minQuantity": 1 + }, + { + "tradePolicyId": "18", + "value": 555.55, + "listPrice": null, + "minQuantity": 1 + } + ] + } + }, + "Getcomputedprice": { + "required": [ + "tradePolicyId", + "listPrice", + "sellingPrice", + "priceValidUntil" + ], + "type": "object", + "properties": { + "tradePolicyId": { + "type": "string", + "description": "Trade Policy ID." + }, + "listPrice": { + "type": "integer", + "format": "int32", + "description": "Trade Policy List Price, also known as \"from\" price." + }, + "costPrice": { + "type": "number", + "description": "Cost price." + }, + "sellingPrice": { + "type": "number", + "description": "Computed Price before applying coupons, promotions and taxes. This price may change before reaching the shelf." + }, + "priceValidUntil": { + "type": "string", + "description": "Date until when the computed price will be valid, due to price scheduling. If no price scheduling applies, this will be set a year from the current time." + } + }, + "example": { + "tradePolicyId": "1", + "listPrice": 30, + "costPrice": 76.92, + "sellingPrice": 18.9, + "priceValidUntil": "2018-12-20T18:12:14Z" + } + }, + "PricingConfiguration": { + "required": [ + "hasMigrated", + "defaultMarkup", + "minimumMarkups" + ], + "type": "object", + "properties": { + "hasMigrated": { + "type": "boolean", + "description": "Defines if the account has migrated to Pricing V2.", + "example": true + }, + "migrationStatus": { + "type": "string", + "description": "Pricing V2 migration status.", + "example": "Completed" + }, + "defaultMarkup": { + "type": "integer", + "format": "int32", + "description": "Account default markup.", + "example": 2 + }, + "priceVariation": { + "type": "object", + "description": "Price Variation object.", + "properties": { + "upperLimit": { + "type": "integer", + "description": "Upper variation limit.", + "nullable": true, + "example": 10 + }, + "lowerLimit": { + "type": "integer", + "description": "Lower variation limit.", + "nullable": true, + "example": 1 + } + } + }, + "minimumMarkups": { + "type": "object", + "description": "Account minimum markup.", + "additionalProperties": { + "type": "integer", + "format": "int32" + } + }, + "tradePolicyConfigs": { + "type": "array", + "description": "Trade Policy Configurations array.", + "items": { + "type": "object", + "properties": { + "tradePolicyId": { + "type": "string", + "description": "Trade Policy ID.", + "example": "b2c" + }, + "minimumMarkup": { + "type": "integer", + "description": "Trade Policy Minimum Markup.", + "example": 80 + }, + "rulesShouldAffectListPrice": { + "type": "boolean", + "description": "Defines if the Price Rule should affect the list price too.", + "example": false + } + } + } + }, + "sellersToOverride": { + "type": "array", + "description": "Overrides prices from sellers." + }, + "hasPriceInheritance": { + "type": "boolean", + "description": "Deprecated. Use the `priceInheritance` field instead.", + "deprecated": true + }, + "priceInheritance": { + "type": "string", + "description": "Condition of price inheritance from its parent account. This field can have three possible values: `never` if the store should never inherit prices, `nonexistent` if the store should only inherit prices in case of nonexistent prices for a given product, or `always` if the store should always inherit prices, regardless of its own prices.", + "example": "nonexistent" + }, + "hasOptionalBasePrice": { + "type": "boolean", + "description": "Defines if optional base price is allowed.", + "example": false + }, + "blockAccount": { + "type": "boolean", + "description": "Defines if access to the Pricing APIs is blocked for external requests.", + "example": false + }, + "blockedRoutes": { + "type": "array", + "description": "Array with all blocked routes.", + "nullable": true, + "items": { + "type": "string", + "description": "Blocked route." + } + }, + "priceTableSelectionStrategy": { + "type": "string", + "description": "The strategy used to get prices when there is more than one option. Possible values: `first`, `highest`, `lowest`. Default: `first`.", + "default": "first", + "example": "highest" + }, + "priceTableLimit": { + "type": "integer", + "description": "Price Table Limit.", + "nullable": true, + "example": 100 + } + }, + "example": { + "hasMigrated": true, + "migrationStatus": "Completed", + "defaultMarkup": 100, + "priceVariation": { + "upperLimit": null, + "lowerLimit": null + }, + "minimumMarkups": { + "1": 100, + "2": 90 + }, + "tradePolicyConfigs": [], + "sellersToOverride": [], + "hasPriceInheritance": false, + "priceInheritance": "never", + "hasOptionalBasePrice": false, + "blockAccount": false, + "blockedRoutes": null, + "priceTableSelectionStrategy": "first", + "priceTableLimit": null + } + } + }, + "securitySchemes": { + "appKey": { + "type": "apiKey", + "in": "header", + "name": "X-VTEX-API-AppKey" + }, + "appToken": { + "type": "apiKey", + "in": "header", + "name": "X-VTEX-API-AppToken" + } + } + }, + "tags": [ + { + "name": "Price Tables" + }, + { + "name": "Prices and Fixed Prices" + }, + { + "name": "Pricing Configuration" + } + ], + "security": [ + { + "appKey": [], + "appToken": [] + } + ] +} diff --git a/app-tags/utils/openapi/my.openapi.gen.ts b/app-tags/utils/openapi/my.openapi.gen.ts new file mode 100644 index 0000000..e6dcc73 --- /dev/null +++ b/app-tags/utils/openapi/my.openapi.gen.ts @@ -0,0 +1,313 @@ + +// deno-fmt-ignore-file +// deno-lint-ignore-file no-explicit-any ban-types ban-unused-ignore +// +// DO NOT EDIT. This file is generated by deco. +// This file SHOULD be checked into source version control. +// To generate this file: deno task start +// + + +export interface OpenAPI { +/** + * Get Product Rating + */ +"GET /reviews-and-ratings/api/rating/:inProductGroupWithId": { +response: { +average?: number +totalCount?: number +} +} +/** + * Retrieves a list of reviews related to a product. + * ## Permissions + * + * This endpoint does not require [permissions](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3). + */ +"GET /reviews-and-ratings/api/reviews": { +searchParams: { +/** + * Returns Reviews that contain the search term in `productId`, `sku`, `shopperId`, or `reviewerName`. + */ +search_term: string +/** + * Zero base starting record number, `0` is the default value. + */ +from: string +/** + * Zero base ending record number, `3` is the default value. + */ +to: string +/** + * Field name to order records. The field name must have the first letter uppercase. Allowed field names: `ProductId`, `ShopperId`, `Approved`, `ReviewDateTime`, `SearchDate`, `Rating`, `Locale`. Optionally add `:asc` or `:desc`. + */ +order_by: string +/** + * Status of the review, approved (`true`) or not (`false`). + */ +status: boolean +/** + * Filter the reviews by product ID. + */ +product_id: string +} +/** + * Response body object. + */ +response: { +/** + * Array of reviews. + */ +data?: { +/** + * Review ID. + */ +id?: string +/** + * Product ID. + */ +productId?: string +/** + * Customer rating. + */ +rating?: number +/** + * Review's title. + */ +title?: string +/** + * Review's text. + */ +text?: string +/** + * Reviewer name. + */ +reviewerName?: string +/** + * Shopper email. + */ +shopperId?: string +/** + * Review's date and time. + */ +reviewDateTime?: string +/** + * Review's search date. + */ +searchDate?: string +/** + * Indicates if the reviewer is a verified purchaser (`true`) or not (`false`). + */ +verifiedPurchaser?: boolean +/** + * SKU ID. + */ +sku?: (null | string) +/** + * Indicates if the review was approved (`true`) or not (`false`). + */ +approved?: boolean +/** + * Review's origin location. + */ +location?: (null | string) +/** + * Review's locale. + */ +locale?: (null | string) +/** + * Past reviews of the same product. + */ +pastReviews?: (null | string) +}[] +/** + * Range of the reviews list. + */ +range?: { +/** + * Total number of reviews on the list. + */ +total?: number +/** + * Zero base starting record number. + */ +from?: number +/** + * Zero base ending record number. + */ +to?: number +} +} +} +/** + * Creates multiple reviews for more than one product in a single operation. + * ## Permissions + * + * This endpoint does not require [permissions](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3). + * For authentication, you must generate and use only the Application Key and the Application Token to work with this endpoint. Refer to the [API authentication using application keys](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys) and [Generating internal application keys](https://help.vtex.com/en/tutorial/application-keys--2iffYzlvvz4BDMr6WGUtet#generating-internal-application-keys) guide for more information. + */ +"POST /reviews-and-ratings/api/reviews": { +/** + * List of reviews. + */ +body: SaveMultipleReviewsRequest[] +/** + * List of review IDs. + */ +response: string[] +} +/** + * Deletes multiple reviews at once. + * + * ## Permissions + * + * This endpoint does not require [permissions](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3). + */ +"DELETE /reviews-and-ratings/api/reviews": { +/** + * Array of reviews IDs. + */ +body: string[] +/** + * Indicates if the review was deleted (`true`) or not (`false`). + */ +response: boolean +} +/** + * Creates a single review. + * ## Permissions + * + * This endpoint does not require [permissions](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3). + * For authentication, you must generate and use only your `VtexidClientAutCookie` to work with this endpoint. Refer to the [Generating user tokens](https://developers.vtex.com/docs/guides/api-authentication-using-user-tokens#generating-a-user-token-with-the-vtex-io-cli) guide for more information. + */ +"POST /reviews-and-ratings/api/review": { +body: SaveReviewRequest +/** + * Response body object. + */ +response: { +/** + * Review ID. + */ +id?: string +/** + * Product ID. + */ +productId?: string +/** + * Customer rating. + */ +rating?: number +/** + * Review's title. + */ +title?: string +/** + * Review's text. + */ +text?: string +/** + * Reviewer name. + */ +reviewerName?: string +/** + * Shopper email. + */ +shopperId?: string +/** + * Review's date and time. + */ +reviewDateTime?: string +/** + * Review's search date. + */ +searchDate?: string +/** + * Indicates if the reviewer is a verified purchaser (`true`) or not (`false`). + */ +verifiedPurchaser?: boolean +/** + * SKU ID. + */ +sku?: (null | string) +/** + * Indicates if the review was approved (`true`) or not (`false`). + */ +approved?: boolean +/** + * Review's origin location. + */ +location?: (null | string) +/** + * Review's locale. + */ +locale?: (null | string) +/** + * Past reviews of the same product. + */ +pastReviews?: (null | string) +} +} +} +/** + * Request body. + */ +export interface SaveMultipleReviewsRequest { +/** + * Review ID. + */ +id?: string +/** + * Product ID. + */ +productId: string +/** + * Customer rating. + */ +rating: number +/** + * Review's title. + */ +title: string +/** + * Review's text. + */ +text: string +/** + * Reviewer name. + */ +reviewerName: string +/** + * Defines if the review was approved (`true`) or not (`false`). + */ +approved: boolean +} +/** + * Request body. + */ +export interface SaveReviewRequest { +/** + * Product ID. + */ +productId: string +/** + * Customer rating. + */ +rating: number +/** + * Review's title. + */ +title: string +/** + * Review's text. + */ +text: string +/** + * Reviewer name. + */ +reviewerName: string +/** + * Indicates if the review was approved (`true`) or not (`false`). + */ +approved: boolean +} diff --git a/app-tags/utils/openapi/my.openapi.json b/app-tags/utils/openapi/my.openapi.json new file mode 100644 index 0000000..bc8c957 --- /dev/null +++ b/app-tags/utils/openapi/my.openapi.json @@ -0,0 +1,801 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "VTEX API", + "description": "created from https://github.com/vtex/openapi-schemas/tree/master", + "contact": {}, + "version": "1.0" + }, + "paths": { + "/reviews-and-ratings/api/rating/{inProductGroupWithID}": { + "get": { + "tags": [ + "Product Rating" + ], + "summary": "Get Product Rating", + "parameters": [ + { + "name": "inProductGroupWithID", + "in": "path", + "schema": { + "type": "string" + }, + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Content-Type": { + "schema": { + "type": "string", + "example": "application/json" + } + }, + "Transfer-Encoding": { + "schema": { + "type": "string", + "example": "chunked" + } + }, + "Connection": { + "schema": { + "type": "string", + "example": "keep-alive" + } + }, + "Date": { + "schema": { + "type": "string", + "example": "Fri, 23 Feb 2024 17:29:13 GMT" + } + }, + "Content-Encoding": { + "schema": { + "type": "string", + "example": "gzip" + } + }, + "X-VTEX-Janus-Router-Backend-App": { + "schema": { + "type": "string", + "example": "io-admins-vadmin-group-1+2-1a-z4z" + } + }, + "X-Router-Cache": { + "schema": { + "type": "string", + "example": "MISS" + } + }, + "X-Request-ID": { + "schema": { + "type": "string", + "example": "8231da1db7e1447bbeb7fcce8695c06b" + } + }, + "X-Vtex-Router-Version": { + "schema": { + "type": "string", + "example": "9.14.0" + } + }, + "X-Vtex-Router-Elapsed-Time": { + "schema": { + "type": "string", + "example": "00:00:00.2134759" + } + }, + "X-Vtex-Backend-Elapsed-Time": { + "schema": { + "type": "string", + "example": "00:00:00.1846180" + } + }, + "X-Vtex-Io-Cluster-Id": { + "schema": { + "type": "string", + "example": "prod-dj-ioadmin-eks-use1a-z4z" + } + }, + "Vary": { + "schema": { + "type": "string", + "example": "Accept-Encoding" + } + }, + "X-Cache": { + "schema": { + "type": "string", + "example": "Miss from cloudfront" + } + }, + "Via": { + "schema": { + "type": "string", + "example": "1.1 90c491496585980aceb1033cb1612270.cloudfront.net (CloudFront)" + } + }, + "X-Amz-Cf-Pop": { + "schema": { + "type": "string", + "example": "GRU1-C2" + } + }, + "X-Amz-Cf-Id": { + "schema": { + "type": "string", + "example": "REB9WZ74BDW3S8waNwpYbZhlGmLa3k-pkT4MobgY6ge0BHtvcOwBCQ==" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "average": { + "type": "number" + }, + "totalCount": { + "type": "integer" + } + } + } + } + } + } + } + } + }, + "/reviews-and-ratings/api/reviews": { + "get": { + "tags": [ + "Review" + ], + "summary": "Get list of reviews", + "description": "Retrieves a list of reviews related to a product.\r\n## Permissions\r\n\r\nThis endpoint does not require [permissions](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "operationId": "GetalistofReviews", + "parameters": [ + { + "name": "search_term", + "in": "query", + "description": "Returns Reviews that contain the search term in `productId`, `sku`, `shopperId`, or `reviewerName`.", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "string", + "example": "search_term" + } + }, + { + "name": "from", + "in": "query", + "description": "Zero base starting record number, `0` is the default value.", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "string", + "example": "0" + } + }, + { + "name": "to", + "in": "query", + "description": "Zero base ending record number, `3` is the default value.", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "string", + "example": "3" + } + }, + { + "name": "order_by", + "in": "query", + "description": "Field name to order records. The field name must have the first letter uppercase. Allowed field names: `ProductId`, `ShopperId`, `Approved`, `ReviewDateTime`, `SearchDate`, `Rating`, `Locale`. Optionally add `:asc` or `:desc`.", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "string", + "example": "SearchDate:asc" + } + }, + { + "name": "status", + "in": "query", + "description": "Status of the review, approved (`true`) or not (`false`).", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "boolean", + "example": true + } + }, + { + "name": "product_id", + "in": "query", + "description": "Filter the reviews by product ID.", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "string", + "example": "1" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "Response body object.", + "type": "object", + "properties": { + "data": { + "description": "Array of reviews.", + "type": "array", + "items": { + "description": "Review's information.", + "type": "object", + "properties": { + "id": { + "description": "Review ID.", + "type": "string" + }, + "productId": { + "description": "Product ID.", + "type": "string" + }, + "rating": { + "description": "Customer rating.", + "type": "number" + }, + "title": { + "description": "Review's title.", + "type": "string" + }, + "text": { + "description": "Review's text.", + "type": "string" + }, + "reviewerName": { + "description": "Reviewer name.", + "type": "string" + }, + "shopperId": { + "description": "Shopper email.", + "type": "string" + }, + "reviewDateTime": { + "description": "Review's date and time.", + "type": "string" + }, + "searchDate": { + "description": "Review's search date.", + "type": "string" + }, + "verifiedPurchaser": { + "description": "Indicates if the reviewer is a verified purchaser (`true`) or not (`false`).", + "type": "boolean" + }, + "sku": { + "description": "SKU ID.", + "type": "string", + "nullable": true + }, + "approved": { + "description": "Indicates if the review was approved (`true`) or not (`false`).", + "type": "boolean" + }, + "location": { + "description": "Review's origin location.", + "type": "string", + "nullable": true + }, + "locale": { + "description": "Review's locale.", + "type": "string", + "nullable": true + }, + "pastReviews": { + "description": "Past reviews of the same product.", + "type": "string", + "nullable": true + } + } + } + }, + "range": { + "description": "Range of the reviews list.", + "type": "object", + "properties": { + "total": { + "description": "Total number of reviews on the list.", + "type": "number" + }, + "from": { + "description": "Zero base starting record number.", + "type": "number" + }, + "to": { + "description": "Zero base ending record number.", + "type": "number" + } + } + } + } + }, + "example": { + "data": [ + { + "id": "1", + "productId": "880035", + "rating": 3, + "title": "anon", + "text": "anon", + "reviewerName": "anon", + "shopperId": "anon@email.com", + "reviewDateTime": "06/02/2021 20:58:43", + "searchDate": "2021-06-02T20:58:43Z", + "verifiedPurchaser": false, + "sku": null, + "approved": true, + "location": "", + "locale": null, + "pastReviews": null + }, + { + "id": "2", + "productId": "880035", + "rating": 5, + "title": "logged in", + "text": "it's cool", + "reviewerName": "Brian", + "shopperId": "brian@email.com.br", + "reviewDateTime": "06/02/2021 21:00:00", + "searchDate": "2021-06-02T21:00:00Z", + "verifiedPurchaser": false, + "sku": null, + "approved": true, + "location": "", + "locale": null, + "pastReviews": null + }, + { + "id": "c66d8bc0-787c-11ec-82ac-028dd4526e77", + "productId": "880035", + "rating": 3, + "title": "Korean", + "text": "ko-KR", + "reviewerName": "ko-KR", + "shopperId": "user@email.com", + "reviewDateTime": "01/18/2022 16:36:33", + "searchDate": "2022-01-18T16:36:33Z", + "verifiedPurchaser": false, + "sku": null, + "approved": true, + "location": null, + "locale": "ko-KR", + "pastReviews": null + } + ], + "range": { + "total": 26, + "from": 0, + "to": 3 + } + } + } + } + } + }, + "deprecated": false + }, + "post": { + "tags": [ + "Review" + ], + "summary": "Create multiple reviews", + "description": "Creates multiple reviews for more than one product in a single operation.\r\n## Permissions\r\n\r\nThis endpoint does not require [permissions](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3). \r\n For authentication, you must generate and use only the Application Key and the Application Token to work with this endpoint. Refer to the [API authentication using application keys](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys) and [Generating internal application keys](https://help.vtex.com/en/tutorial/application-keys--2iffYzlvvz4BDMr6WGUtet#generating-internal-application-keys) guide for more information.", + "operationId": "SaveMultipleReviews", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "List of reviews.", + "items": { + "title": "SaveMultipleReviewsRequest", + "required": [ + "productId", + "rating", + "title", + "text", + "reviewerName", + "approved" + ], + "type": "object", + "description": "Request body.", + "properties": { + "id": { + "description": "Review ID.", + "type": "string", + "example": "1" + }, + "productId": { + "description": "Product ID.", + "type": "string", + "example": "65444" + }, + "rating": { + "description": "Customer rating.", + "type": "number", + "example": 4 + }, + "title": { + "description": "Review's title.", + "type": "string", + "example": "Great product" + }, + "text": { + "description": "Review's text.", + "type": "string", + "example": "Great product!" + }, + "reviewerName": { + "description": "Reviewer name.", + "type": "string", + "example": "Arturo" + }, + "approved": { + "description": "Defines if the review was approved (`true`) or not (`false`).", + "type": "boolean", + "example": true + } + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "List of review IDs.", + "type": "array", + "items": { + "description": "Review ID.", + "type": "string" + } + }, + "example": [ + "8e1a5e11-c0c9-11ec-835d-0a591b8a3ec1", + "9257c203-c0c9-11ec-835d-0e02dd207951" + ] + } + } + } + }, + "deprecated": false + }, + "delete": { + "tags": [ + "Review" + ], + "summary": "Delete multiple reviews", + "description": "Deletes multiple reviews at once. \r\n\r\n ## Permissions\r\n\r\nThis endpoint does not require [permissions](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "operationId": "DeleteMultipleReviews", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "Array of reviews IDs.", + "type": "array", + "items": { + "type": "string", + "description": "Review ID.", + "example": "babefcf4-e0f7-11ec-835d-16c4e59c4351" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "Indicates if the review was deleted (`true`) or not (`false`).", + "type": "boolean" + }, + "example": true + } + } + } + }, + "deprecated": false + } + }, + "/reviews-and-ratings/api/review": { + "post": { + "tags": [ + "Review" + ], + "summary": "Create a review", + "description": "Creates a single review. \r\n## Permissions\r\n\r\nThis endpoint does not require [permissions](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3). \r\n For authentication, you must generate and use only your `VtexidClientAutCookie` to work with this endpoint. Refer to the [Generating user tokens](https://developers.vtex.com/docs/guides/api-authentication-using-user-tokens#generating-a-user-token-with-the-vtex-io-cli) guide for more information.", + "operationId": "SaveReview", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "title": "SaveReviewRequest", + "required": [ + "productId", + "rating", + "title", + "text", + "reviewerName", + "approved" + ], + "type": "object", + "description": "Request body.", + "properties": { + "productId": { + "description": "Product ID.", + "type": "string", + "example": "65444" + }, + "rating": { + "description": "Customer rating.", + "type": "integer", + "format": "int32", + "example": 5 + }, + "title": { + "description": "Review's title.", + "type": "string", + "example": "Good Product" + }, + "text": { + "description": "Review's text.", + "type": "string", + "example": "It is the best product that I have seen" + }, + "reviewerName": { + "description": "Reviewer name.", + "type": "string", + "example": "Arturo" + }, + "approved": { + "description": "Indicates if the review was approved (`true`) or not (`false`).", + "type": "boolean", + "example": true + } + } + }, + "example": { + "productId": "65444", + "rating": 5, + "title": "Good Product", + "text": "It is the best product that I have seen", + "reviewerName": "Arturo", + "approved": true + } + } + }, + "required": true + }, + "security": [ + { + "VtexIdclientAutCookie": [] + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "Response body object.", + "type": "object", + "properties": { + "id": { + "description": "Review ID.", + "type": "string" + }, + "productId": { + "description": "Product ID.", + "type": "string" + }, + "rating": { + "description": "Customer rating.", + "type": "number" + }, + "title": { + "description": "Review's title.", + "type": "string" + }, + "text": { + "description": "Review's text.", + "type": "string" + }, + "reviewerName": { + "description": "Reviewer name.", + "type": "string" + }, + "shopperId": { + "description": "Shopper email.", + "type": "string" + }, + "reviewDateTime": { + "description": "Review's date and time.", + "type": "string" + }, + "searchDate": { + "description": "Review's search date.", + "type": "string" + }, + "verifiedPurchaser": { + "description": "Indicates if the reviewer is a verified purchaser (`true`) or not (`false`).", + "type": "boolean" + }, + "sku": { + "description": "SKU ID.", + "type": "string", + "nullable": true + }, + "approved": { + "description": "Indicates if the review was approved (`true`) or not (`false`).", + "type": "boolean" + }, + "location": { + "description": "Review's origin location.", + "type": "string", + "nullable": true + }, + "locale": { + "description": "Review's locale.", + "type": "string", + "nullable": true + }, + "pastReviews": { + "description": "Past reviews of the same product.", + "type": "string", + "nullable": true + } + } + }, + "example": { + "id": "5323fdaa-c012-11ec-835d-0ebee58edbb3", + "productId": "65444", + "rating": 5, + "title": "Good Product", + "text": "It is the best product that I have seen", + "reviewerName": "Arturo", + "shopperId": "user@email.com", + "reviewDateTime": "04/19/2022 18:55:58", + "searchDate": "2022-04-19T18:55:58Z", + "verifiedPurchaser": false, + "sku": "2", + "approved": false, + "location": null, + "locale": "en-US", + "pastReviews": null + } + } + } + } + }, + "deprecated": false + } + } + } +} diff --git a/app-tags/utils/openapi/vcs.openapi.gen.ts b/app-tags/utils/openapi/vcs.openapi.gen.ts new file mode 100644 index 0000000..32d9fc7 --- /dev/null +++ b/app-tags/utils/openapi/vcs.openapi.gen.ts @@ -0,0 +1,21186 @@ + +// deno-fmt-ignore-file +// deno-lint-ignore-file no-explicit-any ban-types ban-unused-ignore +// +// DO NOT EDIT. This file is generated by deco. +// This file SHOULD be checked into source version control. +// To generate this file: deno task start +// + + +export type SkuComplement = { +/** + * SKU Complement’s unique numerical identifier. + */ +Id?: number +/** + * ID of the SKU which will be inserted as a Complement in the Parent SKU. + */ +SkuId?: number +/** + * ID of the Parent SKU, where the Complement will be inserted. + */ +ParentSkuId?: number +/** + * Complement Type ID. This represents the type of the complement. The possible values are: `1` for Accessory; `2` for Suggestion; `3` for Similar Product; `5` for Show Together. + */ +ComplementTypeId?: number +}[] +/** + * Array of objects. + */ +export type CategorySpecification = { +/** + * Specification name. Limited to 100 characters. + */ +Name?: string +/** + * Category ID. + */ +CategoryId?: number +/** + * Specification field ID. + */ +FieldId?: number +/** + * Defines if the specification is active. + */ +IsActive?: boolean +/** + * Defines if it is an SKU specification. + */ +IsStockKeepingUnit?: boolean +}[] +/** + * ID of the `orderForm` corresponding to the cart from which to place the order. This is the same as the `orderFormId` parameter. + */ +export type ReferenceId = string +/** + * `true` if the shopper's data provided during checkout should be saved for future reference. + */ +export type SavePersonalData = boolean +/** + * True if the shopper opted to receive the newsletter. + */ +export type OptinNewsLetter = boolean + +export interface OpenAPI { +/** + * Searches Master Data v1 documents with highly customizable filters. + * + * > Learn more about [Master Data v1 search queries](https://developers.vtex.com/vtex-rest-api/docs/how-the-queries-in-master-data-v1-work). + * + * ## Query Examples + * + * + * ### Simple filter + * + * ``` + * /dataentities/CL/search?email=my@email.com + * ``` + * + * ### Complex filter + * + * ``` + * /dataentities/CL/search?_where=(firstName=Jon OR lastName=Smith) OR (createdIn between 2001-01-01 AND 2016-01-01) + * ``` + * + * ### Filter by range + * + * #### Date Range + * + * ``` + * /dataentities/CL/search?_where=createdIn between 2001-01-01 AND 2016-01-01 + * ``` + * + * #### Range numeric fields + * + * ``` + * /dataentities/CL/search?_where=age between 18 AND 25 + * ``` + * + * ### Partial filter + * + * ``` + * /dataentities/CL/search?firstName=*Maria* + * ``` + * + * ### Filter for null values + * + * ``` + * /dataentities/CL/search?_where=firstName is null + * ``` + * + * ### Filter for non-null values + * + * ``` + * /dataentities/CL/search?_where=firstName is not null + * ``` + * + * ### Filter for difference + * ``` + * /dataentities/CL/search?_where=firstName<>maria + * ``` + * + * ### Filter greater than or less than + * ``` + * /dataentities/CL/search?_where=number>5 + * /dataentities/CL/search?_where=date<2001-01-01 + * ``` + * + * > Avoid sending too many requests with wildcards (`*`) in the search parameters or that use the `keyword` parameter. This may lead to this endpoint being temporarily blocked for your account. If this happens you will receive an error with status code `503`. + * + * ## Permissions + * + * Any user or [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys) must have at least one of the appropriate [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3) to be able to successfully run this request. Otherwise they will receive a status code `403` error. These are the applicable resources for this endpoint: + * + * | **Product** | **Category** | **Resource** | + * | --------------- | ----------------- | ----------------- | + * | Dynamic Storage | Dynamic storage generic resources | **Read only documents** | + * | Dynamic Storage | Dynamic storage generic resources | **Insert or update document (not remove)** | + * | Dynamic Storage | Dynamic storage generic resources | **Full access to all documents** | + * | Dynamic Storage | Dynamic storage generic resources | **Master Data administrator** | + * + * There are no applicable [predefined roles](https://help.vtex.com/en/tutorial/predefined-roles--jGDurZKJHvHJS13LnO7Dy) for this resource list. You must [create a custom role](https://help.vtex.com/en/tutorial/roles--7HKK5Uau2H6wxE1rH5oRbc#creating-a-role) and add at least one of the resources above in order to use this endpoint.To learn more about machine authentication at VTEX, see [Authentication overview](https://developers.vtex.com/docs/guides/authentication). + * + * >❗ To prevent integrations from having excessive permissions, consider the [best practices for managing app keys](https://help.vtex.com/en/tutorial/best-practices-application-keys--7b6nD1VMHa49aI5brlOvJm) when assigning License Manager roles to integrations. + */ +"GET /api/dataentities/:acronym/search": { +searchParams: { +/** + * Names of the fields that will be returned per document, separated by a comma `,`. It is possible to fetch all fields using `_all` as the value of this query parameter. However, in order to avoid permission errors, we strongly recommend informing only the names of the exact fields that will be used. + */ +_fields?: string +/** + * Specification of filters. + */ +_where?: string +/** + * Inform a field name plus `ASC` to sort results by this field value in ascending order or `DESC` to sort by descending order. + */ +_sort?: string +} +/** + * List of documents. + */ +response: { +/** + * Custom properties. + */ +additionalProperties?: string +/** + * Unique identifier of the document. + */ +id?: string +/** + * Unique identifier of the account. + */ +accountId?: string +/** + * Account name. + */ +accountName?: string +/** + * Two-letter string that identifies the data entity. + */ +dataEntityId?: string +}[] +} +"GET /api/logistics/pvt/inventory/skus/:skuId": { +response: { +/** + * Unique identifier of the SKU. + */ +skuId?: string +/** + * List of warehouses. + */ +balance?: { +hasUnlimitedQuantity?: boolean +leadTime?: string +reservedQuantity?: number +totalQuantity?: number +/** + * Warehouse ID. + */ +warehouseId?: string +/** + * Warehouse name. + */ +warehouseName?: string +}[] +} +} +/** + * Retrieves information about [pickup points](https://help.vtex.com/en/tutorial/pickup-points--2fljn6wLjn8M4lJHA6HP3R) of your store. + * + * >⚠️ The response is limited to 1.000 pickup points. If you need more than 1000 results, you can use the [List paged pickup points](https://developers.vtex.com/docs/api-reference/logistics-api#get-/api/logistics/pvt/configuration/pickuppoints/_search) endpoint. + */ +"GET /api/logistics/pvt/configuration/pickuppoints": { +/** + * List of pickup points, limited to 1.000 pickup points. If you need more than 1000 results, you can use the [List paged pickup points](https://developers.vtex.com/docs/api-reference/logistics-api#get-/api/logistics/pvt/configuration/pickuppoints/_search) endpoint. + */ +response: PickupPoint[] +} +/** + * Retrieves the IDs of products and SKUs. + * > 📘 Onboarding guide + * > + * > Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey. + */ +"GET /api/catalog_system/pvt/products/GetProductAndSkuIds": { +searchParams: { +/** + * ID of the category from which you need to retrieve Products and SKUs. + */ +categoryId?: number +/** + * Insert the ID that will start the request result. + */ +_from?: number +/** + * Insert the ID that will end the request result. + */ +_to?: number +} +response: { +/** + * Object composed by Product IDs and SKU IDs, where the parent ID is from Products and the SKU IDs are the Child IDs. + */ +data?: { +/** + * Array with SKU IDs of a certain product. + */ +"Product ID"?: number[] +} +/** + * Object with information about the product and SKUs list. + */ +range?: { +/** + * Total quantity of SKUs. + */ +total?: number +/** + * Initial product ID. + */ +from?: number +/** + * Final product ID. + */ +to?: number +} +} +} +/** + * Create a new document + */ +"POST /api/dataentities/:acronym/documents": { +body: { +anyProperty?: string +} +response: { +Id?: string +Href?: string +DocumentId?: string +} +} +/** + * Retrieves a specific Product by its ID. This information is exactly what is needed to create a new Product. + * > 📘 Onboarding guide + * > + * > Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey. + */ +"GET /api/catalog/pvt/product/:productId": { +response: { +/** + * Product’s unique numerical identifier. + */ +Id?: number +/** + * Product's name. Limited to 150 characters. + */ +Name?: string +/** + * Department ID according to the product's category. + */ +DepartmentId?: number +/** + * Category ID associated with this product. + */ +CategoryId?: number +/** + * Brand ID associated with this product. + */ +BrandId?: number +/** + * Slug that will be used to build the product page URL. If it not informed, it will be generated according to the product's name replacing spaces and special characters by hyphens (`-`). + */ +LinkId?: string +/** + * Product Reference Code. + */ +RefId?: string +/** + * Shows (`true`) or hides (`false`) the product in search result and product pages, but the product can still be added to the shopping cart. Usually applicable for gifts. + */ +IsVisible?: boolean +/** + * Product description. + */ +Description?: string +/** + * Short product description. This information can be displayed on both the product page and the shelf, using the following controls: + * Store Framework: `$product.DescriptionShort`. + * Legacy CMS Portal: ``. + * + */ +DescriptionShort?: string +/** + * Used to assist in the ordering of the search result of the site. Using the `O=OrderByReleaseDateDESC` query string, you can pull this value and show the display order by release date. This attribute is also used as a condition for dynamic collections. + */ +ReleaseDate?: string +/** + * Store Framework: Deprecated. + * Legacy CMS Portal: Keywords or synonyms related to the product, separated by comma (`,`). "Television", for example, can have a substitute word like "TV". This field is important to make your searches more comprehensive. + * + */ +KeyWords?: string +/** + * Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO. + */ +Title?: string +/** + * Activate (`true`) or inactivate (`false`) product. + */ +IsActive?: boolean +/** + * Product tax code, used for tax calculation. + */ +TaxCode?: string +/** + * Brief description of the product for SEO. It is recommended not to exceed 150 characters. + */ +MetaTagDescription?: string +/** + * @deprecated + */ +SupplierId?: (null | number) +/** + * If `true`, activates the [Notify Me](https://help.vtex.com/en/tutorial/setting-up-the-notify-me-option--2VqVifQuf6Co2KG048Yu6e) option when the product is out of stock. + */ +ShowWithoutStock?: boolean +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +AdWordsRemarketingCode?: string +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +LomadeeCampaignCode?: string +/** + * Value used to set the priority on the search result page. + */ +Score?: number +} +} +/** + * Updates an existing Product. + */ +"PUT /api/catalog/pvt/product/:productId": { +body: { +/** + * Product's name. Limited to 150 characters. + */ +Name: string +/** + * Department ID according to the product's category. + */ +DepartmentId?: number +/** + * Category ID associated with this product. + */ +CategoryId: number +/** + * Brand ID associated with this product. + */ +BrandId: number +/** + * Slug that will be used to build the product page URL. If it not informed, it will be generated according to the product's name replacing spaces and special characters by hyphens (`-`). + */ +LinkId?: string +/** + * Product Reference Code. + */ +RefId?: string +/** + * Shows (`true`) or hides (`false`) the product in search result and product pages, but the product can still be added to the shopping cart. Usually applicable for gifts. + */ +IsVisible?: boolean +/** + * Product description. + */ +Description?: string +/** + * Short product description. This information can be displayed on both the product page and the shelf, using the following controls: + * Store Framework: `$product.DescriptionShort`. + * Legacy CMS Portal: ``. + * + */ +DescriptionShort?: string +/** + * Used to assist in the ordering of the search result of the site. Using the `O=OrderByReleaseDateDESC` query string, you can pull this value and show the display order by release date. This attribute is also used as a condition for dynamic collections. + */ +ReleaseDate?: string +/** + * Store Framework: Deprecated. + * Legacy CMS Portal: Keywords or synonyms related to the product, separated by comma (`,`). "Television", for example, can have a substitute word like "TV". This field is important to make your searches more comprehensive. + * + */ +KeyWords?: string +/** + * Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO. + */ +Title?: string +/** + * Activate (`true`) or inactivate (`false`) product. + */ +IsActive?: boolean +/** + * Product tax code, used for tax calculation. + */ +TaxCode?: string +/** + * Brief description of the product for SEO. It is recommended not to exceed 150 characters. + */ +MetaTagDescription?: string +/** + * @deprecated + */ +SupplierId?: (null | number) +/** + * If `true`, activates the [Notify Me](https://help.vtex.com/en/tutorial/setting-up-the-notify-me-option--2VqVifQuf6Co2KG048Yu6e) option when the product is out of stock. + */ +ShowWithoutStock?: boolean +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +AdWordsRemarketingCode?: string +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +LomadeeCampaignCode?: string +/** + * Value used to set the priority on the search result page. + */ +Score?: number +} +response: { +/** + * Product’s unique numerical identifier. + */ +Id?: number +/** + * Product's name. Limited to 150 characters. + */ +Name?: string +/** + * Department ID according to the product's category. + */ +DepartmentId?: number +/** + * Category ID associated with this product. + */ +CategoryId?: number +/** + * Brand ID associated with this product. + */ +BrandId?: number +/** + * Slug that will be used to build the product page URL. If it not informed, it will be generated according to the product's name replacing spaces and special characters by hyphens (`-`). + */ +LinkId?: string +/** + * Product Reference Code. + */ +RefId?: string +/** + * Shows (`true`) or hides (`false`) the product in search result and product pages, but the product can still be added to the shopping cart. Usually applicable for gifts. + */ +IsVisible?: boolean +/** + * Product description. + */ +Description?: string +/** + * Short product description. This information can be displayed on both the product page and the shelf, using the following controls: + * Store Framework: `$product.DescriptionShort`. + * Legacy CMS Portal: ``. + * + */ +DescriptionShort?: string +/** + * Used to assist in the ordering of the search result of the site. Using the `O=OrderByReleaseDateDESC` query string, you can pull this value and show the display order by release date. This attribute is also used as a condition for dynamic collections. + */ +ReleaseDate?: string +/** + * Store Framework: Deprecated. + * Legacy CMS Portal: Keywords or synonyms related to the product, separated by comma (`,`). "Television", for example, can have a substitute word like "TV". This field is important to make your searches more comprehensive. + * + */ +KeyWords?: string +/** + * Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO. + */ +Title?: string +/** + * Activate (`true`) or inactivate (`false`) product. + */ +IsActive?: boolean +/** + * Product tax code, used for tax calculation. + */ +TaxCode?: string +/** + * Brief description of the product for SEO. It's recommended that you don't exceed 150 characters. + */ +MetaTagDescription?: string +/** + * @deprecated + */ +SupplierId?: (null | number) +/** + * If `true`, activates the [Notify Me](https://help.vtex.com/en/tutorial/setting-up-the-notify-me-option--2VqVifQuf6Co2KG048Yu6e) option when the product is out of stock. + */ +ShowWithoutStock?: boolean +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +AdWordsRemarketingCode?: string +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +LomadeeCampaignCode?: string +/** + * Value used to set the priority on the search result page. + */ +Score?: number +} +} +/** + * Retrieves a specific product's general information as name, description and the trade policies that it is included. + */ +"GET /api/catalog_system/pvt/products/productget/:productId": { +response: { +/** + * Product ID. + */ +Id?: number +/** + * Product's name. Limited to 150 characters. + */ +Name?: string +/** + * Product department ID. + */ +DepartmentId?: number +/** + * Product category ID. + */ +CategoryId?: number +/** + * Product brand ID. + */ +BrandId?: number +/** + * Product text link. + */ +LinkId?: string +/** + * Product referecial code. + */ +RefId?: string +/** + * If the Product is visible on the store. + */ +IsVisible?: boolean +/** + * Product description. + */ +Description?: string +/** + * Product complement name. + */ +DescriptionShort?: string +/** + * Product release date. + */ +ReleaseDate?: string +/** + * Substitutes words for the product. + */ +KeyWords?: string +/** + * Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO. + */ +Title?: string +/** + * If the product is active (`true`) or not (`false`) at the store. + */ +IsActive?: boolean +/** + * Product fiscal code. + */ +TaxCode?: string +/** + * Product meta tag description. + */ +MetaTagDescription?: string +/** + * Product supplier ID. + */ +SupplierId?: number +/** + * Defines if the Product will remain being shown in the store even if it’s out of stock. + */ +ShowWithoutStock?: boolean +/** + * List with the Trade Policies IDs that the product is included. + */ +ListStoreId?: number[] +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +AdWordsRemarketingCode?: string +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +LomadeeCampaignCode?: string +} +} +/** + * Retrieves a specific product by its Reference ID. + */ +"GET /api/catalog_system/pvt/products/productgetbyrefid/:refId": { +response: { +/** + * ID of the Product. + */ +Id?: number +/** + * Name of the Product. + */ +Name?: string +/** + * ID of product department. + */ +DepartmentId?: number +/** + * ID of product Category. + */ +CategoryId?: number +/** + * ID of the product Brand. + */ +BrandId?: number +/** + * Category URL. + */ +LinkId?: string +/** + * Product Reference ID. + */ +RefId?: string +/** + * If the product are visible in search and list pages. + */ +IsVisible?: boolean +/** + * Product Description, HTML is allowed. + */ +Description?: string +/** + * Product Short Description. + */ +DescriptionShort?: string +/** + * Product Release Date, for list ordering and product cluster highlight. + */ +ReleaseDate?: string +/** + * Alternatives Keywords to improve the product findability. + */ +KeyWords?: string +/** + * Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO. + */ +Title?: string +/** + * If the product is Active. + */ +IsActive?: boolean +/** + * SKU Tax Code. + */ +TaxCode?: string +/** + * Meta Description for the Product page. + */ +MetaTagDescription?: string +/** + * Product Supplier ID. + */ +SupplierId?: number +/** + * If the product can be visible without stock. + */ +ShowWithoutStock?: boolean +/** + * Array with the ID of all the trade policies that are related to the product. + */ +ListStoreId?: number[] +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +AdWordsRemarketingCode?: string +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +LomadeeCampaignCode?: string +} +} +/** + * Retrieves data about the product and all SKUs related to it by the product's ID. + * ## Response body example + * + * ```json + * { + * "productId": 9, + * "name": "Camisa Masculina", + * "salesChannel": "2", + * "available": true, + * "displayMode": "lista", + * "dimensions": [ + * "Cores", + * "Tamanho", + * "País de origem", + * "Gênero" + * ], + * "dimensionsInputType": { + * "Cores": "Combo", + * "Tamanho": "Combo", + * "País de origem": "Combo", + * "Gênero": "Combo" + * }, + * "dimensionsMap": { + * "Cores": [ + * "Amarelo", + * "Azul", + * "Vermelho" + * ], + * "Tamanho": [ + * "P", + * "M", + * "G" + * ], + * "País de origem": [ + * "Brasil" + * ], + * "Gênero": [ + * "Masculino" + * ] + * }, + * "skus": [ + * { + * "sku": 310118454, + * "skuname": "Amarela - G", + * "dimensions": { + * "Cores": "Amarelo", + * "Tamanho": "G", + * "País de origem": "Brasil", + * "Gênero": "Masculino" + * }, + * "available": false, + * "availablequantity": 0, + * "cacheVersionUsedToCallCheckout": null, + * "listPriceFormated": "R$ 0,00", + * "listPrice": 0, + * "taxFormated": "R$ 0,00", + * "taxAsInt": 0, + * "bestPriceFormated": "R$ 9.999.876,00", + * "bestPrice": 999987600, + * "spotPrice": 999987600, + * "installments": 0, + * "installmentsValue": 0, + * "installmentsInsterestRate": null, + * "image": "https://lojadobreno.vteximg.com.br/arquivos/ids/155467-292-292/image-5d7ad76ad1954c53adecab4138319034.jpg?v=637321899584500000", + * "sellerId": "1", + * "seller": "lojadobreno", + * "measures": { + * "cubicweight": 1.0000, + * "height": 5.0000, + * "length": 20.0000, + * "weight": 200.0000, + * "width": 20.0000 + * }, + * "unitMultiplier": 1.0000, + * "rewardValue": 0 + * }, + * { + * "sku": 310118455, + * "skuname": "Vermelha - M", + * "dimensions": { + * "Cores": "Vermelho", + * "Tamanho": "M", + * "País de origem": "Brasil", + * "Gênero": "Masculino" + * }, + * "available": true, + * "availablequantity": 99999, + * "cacheVersionUsedToCallCheckout": "38395F1AEF59DF5CEAEDE472328145CD_", + * "listPriceFormated": "R$ 0,00", + * "listPrice": 0, + * "taxFormated": "R$ 0,00", + * "taxAsInt": 0, + * "bestPriceFormated": "R$ 20,00", + * "bestPrice": 2000, + * "spotPrice": 2000, + * "installments": 1, + * "installmentsValue": 2000, + * "installmentsInsterestRate": 0, + * "image": "https://lojadobreno.vteximg.com.br/arquivos/ids/155468-292-292/image-601a6099aace48b89d26fc9f22e8e611.jpg?v=637321906602470000", + * "sellerId": "pedrostore", + * "seller": "pedrostore", + * "measures": { + * "cubicweight": 0.4167, + * "height": 5.0000, + * "length": 20.0000, + * "weight": 200.0000, + * "width": 20.0000 + * }, + * "unitMultiplier": 1.0000, + * "rewardValue": 0 + * } + * ] + * } + * ``` + */ +"GET /api/catalog_system/pub/products/variations/:productId": { +/** + * Response body. + */ +response: { +/** + * Product’s unique numerical identifier. + */ +productId?: number +/** + * Product name. + */ +name?: string +/** + * Trade policy ID. + */ +salesChannel?: string +/** + * Defines if the product is available (`true`) or not (`false`). + */ +available?: boolean +/** + * Defines the mannner SKUs are displayed. + */ +displayMode?: string +/** + * Lists SKU specifications. + */ +dimensions?: string[] +/** + * Lists SKU specifications and their field type, in the following format: `"{specificationName}":"{fieldType}"`. + */ +dimensionsInputType?: { +[k: string]: string +} +/** + * Lists SKU specifications and their possible values inside arrays. + */ +dimensionsMap?: { +[k: string]: any[] +} +/** + * Array containing information about the product's SKUs. + */ +skus?: { +/** + * SKU ID. + */ +sku?: number +/** + * SKU Name. + */ +skuname?: string +/** + * Lists SKU specifications and their respective values. + */ +dimensions?: { +[k: string]: string +} +/** + * Defines if the SKU is available (`true`) or not (`false`). + */ +available?: boolean +/** + * Available quantity of the SKU in stock. + */ +availablequantity?: number +/** + * Cache version used to call Checkout. + */ +cacheVersionUsedToCallCheckout?: (null | string) +/** + * List price formatted according to the valid currency. + */ +listPriceFormated?: string +/** + * List price. + */ +listPrice?: number +/** + * Tax value formatted according to the valid currency. + */ +taxFormated?: string +/** + * Tax value. + */ +taxAsInt?: number +/** + * Best price formatted according to the valid currency. + */ +bestPriceFormated?: string +/** + * Best price. + */ +bestPrice?: number +/** + * Spot price. + */ +spotPrice?: number +/** + * Number of installments. + */ +installments?: number +/** + * Value of installments. + */ +installmentsValue?: number +/** + * Interest rate of installments. + */ +installmentsInsterestRate?: (null | number) +/** + * SKU image URL. + */ +image?: string +/** + * Seller ID. + */ +sellerId?: string +/** + * SKU measures. + */ +measures?: { +/** + * Cubic weight. + */ +cubicweight?: number +/** + * Height. + */ +height?: number +/** + * Length. + */ +length?: number +/** + * Weight. + */ +weight?: number +/** + * Width. + */ +width?: number +} +/** + * SKU Unit Multiplier. + */ +unitMultiplier?: number +/** + * SKU reward value for rewards program. + */ +rewardValue?: number +}[] +} +} +/** + * Retrieves the review rate of a product by this product's ID. + */ +"GET /api/addon/pvt/review/GetProductRate/:productId": { +/** + * Review rate numeber. + */ +response: number +} +/** + * This endpoint allows two types of request: + * + * **Type 1:** Creating a new Product as well as a new Category path (including subcategories) and a new Brand by using `CategoryPath` and `BrandName` parameters. + * + * **Type 2:** Creating a new Product given an existing `BrandId` and an existing `CategoryId`. + * + * When creating a product, regardless of the type of request, if there is a need to create a new product with a specific custom product ID, specify the `Id` (integer) in the request body. Otherwise, VTEX will generate the ID automatically. + * + * ## Request body examples + * + * ### Type 1 + * + * Request to create a product, associating it to a new Category and a new Brand by using `CategoryPath` and `BrandName`: + * + * ```json + * { + * "Name": "Black T-Shirt", + * "CategoryPath": "Mens/Clothing/T-Shirts", + * "BrandName": "Nike", + * "RefId": "31011706925", + * "Title": "Black T-Shirt", + * "LinkId": "tshirt-black", + * "Description": "This is a cool Tshirt", + * "ReleaseDate": "2022-01-01T00:00:00", + * "IsVisible": true, + * "IsActive": true, + * "TaxCode": "", + * "MetaTagDescription": "tshirt black", + * "ShowWithoutStock": true, + * "Score": 1 + * } + * ``` + * + * ### Type 2 + * + * Request to create a product, associating it to an existing `CategoryId` and `BrandId`: + * + * ```json + * { + * "Name": "insert product test", + * "DepartmentId": 1, + * "CategoryId": 2, + * "BrandId": 2000000, + * "LinkId": "insert-product-test", + * "RefId": "310117869", + * "IsVisible": true, + * "Description": "texto de descrição", + * "DescriptionShort": "Utilize o CEP 04548-005 para frete grátis", + * "ReleaseDate": "2019-01-01T00:00:00", + * "KeyWords": "teste,teste2", + * "Title": "product de teste", + * "IsActive": true, + * "TaxCode": "", + * "MetaTagDescription": "tag test", + * "SupplierId": 1, + * "ShowWithoutStock": true, + * "AdWordsRemarketingCode": null, + * "LomadeeCampaignCode": null, + * "Score": 1 + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 52, + * "Name": "insert product test", + * "DepartmentId": 1, + * "CategoryId": 2, + * "BrandId": 2000000, + * "LinkId": "insert-product-test", + * "RefId": "310117869", + * "IsVisible": true, + * "Description": "texto de descrição", + * "DescriptionShort": "Utilize o CEP 04548-005 para frete grátis", + * "ReleaseDate": "2019-01-01T00:00:00", + * "KeyWords": "teste,teste2", + * "Title": "product de teste", + * "IsActive": true, + * "TaxCode": "", + * "MetaTagDescription": "tag test", + * "SupplierId": 1, + * "ShowWithoutStock": true, + * "AdWordsRemarketingCode": null, + * "LomadeeCampaignCode": null, + * "Score": 1 + * } + * ``` + * + * > 📘 Onboarding guide + * > + * > Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey. + */ +"POST /api/catalog/pvt/product": { +body: { +/** + * Product’s unique numerical identifier. If not informed, it will be automatically generated by VTEX. + */ +Id?: number +/** + * Product's name. Limited to 150 characters. + */ +Name: string +/** + * Path of categories associated with this product, from the highest level of category to the lowest level, separated by `/`. It is mandatory to use either this field or the `CategoryId` field. + */ +CategoryPath?: string +/** + * ID of an existing Category that will be associated with this product. It is mandatory to use either this field or the `CategoryPath` field. + */ +CategoryId?: number +/** + * Name of the brand that will be associated with this product. It is mandatory to use either this field or the `BrandId` field. If you wish to create a new brand, that is, in case the brand does not exist yet, use this field instead of `BrandId`. + */ +BrandName?: string +/** + * ID of an existing Brand that will be associated with this product. It is mandatory to use either this field or the `BrandName` field. + */ +BrandId?: number +/** + * Slug that will be used to build the product page URL. If it not informed, it will be generated according to the product's name replacing spaces and special characters by hyphens (`-`). + */ +LinkId?: string +/** + * Product Reference Code. + */ +RefId?: string +/** + * Shows (`true`) or hides (`false`) the product in search result and product pages, but the product can still be added to the shopping cart. Usually applicable for gifts. + */ +IsVisible?: boolean +/** + * Product description. + */ +Description?: string +/** + * Short product description. This information can be displayed on both the product page and the shelf, using the following controls: + * Store Framework: `$product.DescriptionShort`. + * Legacy CMS Portal: ``. + * + */ +DescriptionShort?: string +/** + * Used to assist in the ordering of the search result of the site. Using the `O=OrderByReleaseDateDESC` query string, you can pull this value and show the display order by release date. This attribute is also used as a condition for dynamic collections. + */ +ReleaseDate?: string +/** + * Store Framework: Deprecated. + * Legacy CMS Portal: Keywords or synonyms related to the product, separated by comma (`,`). "Television", for example, can have a substitute word like "TV". This field is important to make your searches more comprehensive. + * + */ +KeyWords?: string +/** + * Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO. + */ +Title?: string +/** + * Activate (`true`) or inactivate (`false`) product. + */ +IsActive?: boolean +/** + * Product tax code, used for tax calculation. + */ +TaxCode?: string +/** + * Brief description of the product for SEO. It is recommended not to exceed 150 characters. + */ +MetaTagDescription?: string +/** + * @deprecated + */ +SupplierId?: (null | number) +/** + * If `true`, activates the [Notify Me](https://help.vtex.com/en/tutorial/setting-up-the-notify-me-option--2VqVifQuf6Co2KG048Yu6e) option when the product is out of stock. + */ +ShowWithoutStock?: boolean +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +AdWordsRemarketingCode?: string +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +LomadeeCampaignCode?: string +/** + * Value used to set the priority on the search result page. + */ +Score?: number +} +response: { +/** + * Product’s unique numerical identifier. + */ +Id?: number +/** + * Product's name. Limited to 150 characters. + */ +Name?: string +/** + * Department ID according to the product's category. + */ +DepartmentId?: number +/** + * Category ID associated with this product. + */ +CategoryId?: number +/** + * Brand ID associated with this product. + */ +BrandId?: number +/** + * Slug that will be used to build the product page URL. If it not informed, it will be generated according to the product's name replacing spaces and special characters by hyphens (`-`). + */ +LinkId?: string +/** + * Product Reference Code. + */ +RefId?: string +/** + * Shows (`true`) or hides (`false`) the product in search result and product pages, but the product can still be added to the shopping cart. Usually applicable for gifts. + */ +IsVisible?: boolean +/** + * Product description. + */ +Description?: string +/** + * Short product description. This information can be displayed on both the product page and the shelf, using the following controls: + * Store Framework: `$product.DescriptionShort`. + * Legacy CMS Portal: ``. + * + */ +DescriptionShort?: string +/** + * Used to assist in the ordering of the search result of the site. Using the `O=OrderByReleaseDateDESC` query string, you can pull this value and show the display order by release date. This attribute is also used as a condition for dynamic collections. + */ +ReleaseDate?: string +/** + * Store Framework: Deprecated. + * Legacy CMS Portal: Keywords or synonyms related to the product, separated by comma (`,`). "Television", for example, can have a substitute word like "TV". This field is important to make your searches more comprehensive. + * + */ +KeyWords?: string +/** + * Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO. + */ +Title?: string +/** + * Activate (`true`) or inactivate (`false`) product. + */ +IsActive?: boolean +/** + * Product tax code, used for tax calculation. + */ +TaxCode?: string +/** + * Brief description of the product for SEO. It's recommended that you don't exceed 150 characters. + */ +MetaTagDescription?: string +/** + * @deprecated + */ +SupplierId?: (null | number) +/** + * If `true`, activates the [Notify Me](https://help.vtex.com/en/tutorial/setting-up-the-notify-me-option--2VqVifQuf6Co2KG048Yu6e) option when the product is out of stock. + */ +ShowWithoutStock?: boolean +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +AdWordsRemarketingCode?: string +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +LomadeeCampaignCode?: string +/** + * Value used to set the priority on the search result page. + */ +Score?: number +} +} +/** + * Retrieves all specifications of a product by the product's ID. + * > 📘 Onboarding guide + * > + * > Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey. + * + * ### Response body example + * + * ```json + * [ + * { + * "Value": [ + * "Iron", + * "Plastic" + * ], + * "Id": 30, + * "Name": "Material" + * } + * ] + * ``` + */ +"GET /api/catalog_system/pvt/products/:productId/specification": { +response: GetorUpdateProductSpecification[] +} +/** + * Updates the value of a product specification by the product's ID. The ID or name can be used to identify what product specification will be updated. Specification fields must be previously created in your Catalog. + * + * ### Request body example + * + * ```json + * [ + * { + * "Value": [ + * "Iron", + * "Plastic" + * ], + * "Id": 30, + * "Name": "Material" + * } + * ] + * ``` + */ +"POST /api/catalog_system/pvt/products/:productId/specification": { +body: GetorUpdateProductSpecification[] +} +/** + * Retrieves information of all specifications of a product by the product's ID. + * + * ### Response body example + * + * ```json + * [ + * { + * "Id": 227, + * "ProductId": 1, + * "FieldId": 33, + * "FieldValueId": 135, + * "Text": "ValueA" + * }, + * { + * "Id": 228, + * "ProductId": 1, + * "FieldId": 34, + * "FieldValueId": 1, + * "Text": "Giant" + * } + * ] + * ``` + */ +"GET /api/catalog/pvt/product/:productId/specification": { +response: { +/** + * ID of the association of the specification and the product. This ID is used to update or delete the specification. + */ +Id?: number +/** + * Product ID. + */ +ProductId?: number +/** + * Specification field ID. + */ +FieldId?: number +/** + * Current specification value ID. + */ +FieldValueId?: number +/** + * Current specification value text. + */ +Text?: string +}[] +} +/** + * Associates a previously defined Specification to a Product. + * + * ### Request body example + * + * ```json + * { + * "FieldId": 19, + * "FieldValueId": 1, + * "Text": "test" + * } + * ``` + * + * ### Response body example + * + * ```json + * { + * "Id": 41, + * "FieldId": 19, + * "FieldValueId": 1, + * "Text": "test" + * } + * ``` + */ +"POST /api/catalog/pvt/product/:productId/specification": { +body: { +/** + * Specification field ID. + */ +FieldId: number +/** + * Specification Value ID. Mandatory for `FieldTypeId` `5`, `6` and `7`. Must not be used for any other field types + */ +FieldValueId?: number +/** + * Value of specification. Only for `FieldTypeId` different from `5`, `6` and `7`. + */ +Text?: string +} +response: { +/** + * ID of the association of the specification and the product. This ID is used to update or delete the specification. + */ +Id?: number +/** + * Product ID. + */ +ProductId?: number +/** + * Specification field ID. + */ +FieldId?: number +/** + * Specification Value ID. Mandatory for `FieldTypeId` `5`, `6` and `7`. Must not be used for any other field types + */ +FieldValueId?: number +/** + * Value of specification. Only for `FieldTypeId` different from `5`, `6` and `7`. + */ +Text?: string +} +} +/** + * Deletes all Product Specifications given a specific Product ID. + */ +"DELETE /api/catalog/pvt/product/:productId/specification": { + +} +/** + * Deletes a specific Product Specification given a Product ID and a Specification ID. + */ +"DELETE /api/catalog/pvt/product/:productId/specification/:specificationId": { + +} +/** + * Associates a specification to a product using specification name and group name. Automatically creates the informed group, specification and values if they had not been created before. + * + * ## Request body example + * + * ```json + * { + * "FieldName": "Material", + * "GroupName": "Additional Information", + * "RootLevelSpecification": false, + * "FieldValues": [ + * "Cotton", + * "Polyester" + * ] + * } + * ``` + * + * + * ## Response body example + * + * ```json + * [ + * { + * "Id": 53, + * "ProductId": 3, + * "FieldId": 21, + * "FieldValueId": 60, + * "Text": "Cotton" + * }, + * { + * "Id": 54, + * "ProductId": 3, + * "FieldId": 21, + * "FieldValueId": 61, + * "Text": "Polyester" + * } + * ] + * ``` + * + */ +"PUT /api/catalog/pvt/product/:productId/specificationvalue": { +body: { +/** + * Specification name. Limited to 100 characters. + */ +FieldName: string +/** + * Group name. + */ +GroupName: string +/** + * Root level specification. + */ +RootLevelSpecification: boolean +/** + * Array of specification values. + */ +FieldValues: string[] +} +/** + * Array with information of all product specifications. + */ +response: { +/** + * ID of the association of the Product and the specification. + */ +Id?: number +/** + * Product ID. + */ +ProductId?: number +/** + * Specification field ID. + */ +FieldId?: number +/** + * Current specification value ID. + */ +FieldValueId?: number +/** + * Current specification value text. + */ +Text?: string +}[] +} +/** + * Retrieves the IDs of all SKUs in your store. Presents the results with page size and pagination. + * > 📘 Onboarding guide + * > + * > Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey. + * + * ### Response body example + * + * ```json + * [ + * 1, + * 2, + * 3, + * 4, + * 5, + * 6, + * 7, + * 8, + * 9, + * 10 + * ] + * ``` + */ +"GET /api/catalog_system/pvt/sku/stockkeepingunitids": { +searchParams: { +/** + * Number of the page from where you need to retrieve SKU IDs. + */ +page: number +/** + * Size of the page from where you need retrieve SKU IDs. The maximum value is `1000`. + */ +pagesize: number +} +/** + * Array composed by SKU IDs, in the search context. + */ +response: number[] +} +/** + * Retrieves context of an SKU. + * > 📘 Onboarding guide + * > + * > Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey. + * + * ## Response body example + * + * ```json + * { + * "Id": 2001773, + * "ProductId": 2001426, + * "NameComplete": "Tabela de Basquete", + * "ComplementName": "", + * "ProductName": "Tabela de Basquete", + * "ProductDescription": "Tabela de Basquete", + * "SkuName": "Tabela de Basquete", + * "ProductRefId": "0987", + * "TaxCode": "", + * "IsActive": true, + * "IsTransported": true, + * "IsInventoried": true, + * "IsGiftCardRecharge": false, + * "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168952-55-55/7508800GG.jpg", + * "DetailUrl": "/tabela-de-basquete/p", + * "CSCIdentification": null, + * "BrandId": "2000018", + * "BrandName": "MARCA ARGOLO TESTE", + * "IsBrandActive": true, + * "Dimension": { + * "cubicweight": 81.6833, + * "height": 65, + * "length": 58, + * "weight": 10000, + * "width": 130 + * }, + * "RealDimension": { + * "realCubicWeight": 274.1375, + * "realHeight": 241, + * "realLength": 65, + * "realWeight": 9800, + * "realWidth": 105 + * }, + * "ManufacturerCode": "", + * "IsKit": false, + * "KitItems": [], + * "Services": [], + * "Categories": [], + * "CategoriesFullPath": [ + * "/1/10/", + * "/1/", + * "/20/" + * ], + * "Attachments": [ + * { + * "Id": 3, + * "Name": "Mensagem", + * "Keys": [ + * "nome;20", + * "foto;40" + * ], + * "Fields": [ + * { + * "FieldName": "nome", + * "MaxCaracters": "20", + * "DomainValues": "Adalberto,Pedro,João" + * }, + * { + * "FieldName": "foto", + * "MaxCaracters": "40", + * "DomainValues": null + * } + * ], + * "IsActive": true, + * "IsRequired": false + * } + * ], + * "Collections": [], + * "SkuSellers": [ + * { + * "SellerId": "1", + * "StockKeepingUnitId": 2001773, + * "SellerStockKeepingUnitId": "2001773", + * "IsActive": true, + * "FreightCommissionPercentage": 0, + * "ProductCommissionPercentage": 0 + * } + * ], + * "SalesChannels": [ + * 1, + * 2, + * 3, + * 10 + * ], + * "Images": [ + * { + * "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168952/7508800GG.jpg", + * "ImageName": "", + * "FileId": 168952 + * }, + * { + * "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168953/7508800_1GG.jpg", + * "ImageName": "", + * "FileId": 168953 + * }, + * { + * "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168954/7508800_2GG.jpg", + * "ImageName": "", + * "FileId": 168954 + * } + * ], + * "Videos": [ + * "www.google.com" + * ], + * "SkuSpecifications": [ + * { + * "FieldId": 102, + * "FieldName": "Cor", + * "FieldValueIds": [ + * 266 + * ], + * "FieldValues": [ + * "Padrão" + * ], + * "IsFilter": false, + * "FieldGroupId": 11, + * "FieldGroupName": "Especificações" + * } + * ], + * "ProductSpecifications": [ + * { + * "FieldId": 7, + * "FieldName": "Faixa Etária", + * "FieldValueIds": [ + * 58, + * 56, + * 55, + * 52 + * ], + * "FieldValues": [ + * "5 a 6 anos", + * "7 a 8 anos", + * "9 a 10 anos", + * "Acima de 10 anos" + * ], + * "IsFilter": true, + * "FieldGroupId": 17, + * "FieldGroupName": "NewGroupName 2" + * }, + * { + * "FieldId": 23, + * "FieldName": "Fabricante", + * "FieldValueIds": [], + * "FieldValues": [ + * "Xalingo" + * ], + * "IsFilter": false, + * "FieldGroupId": 17, + * "FieldGroupName": "NewGroupName 2" + * } + * ], + * "ProductClustersIds": "176,187,192,194,211,217,235,242", + * "PositionsInClusters": { + * "151": 3, + * "152": 0, + * "158": 1 + * }, + * "ProductClusterNames": { + * "151": "asdfghj", + * "152": "George", + * "158": "Coleção halloween" + * }, + * "ProductClusterHighlights": { + * "151": "asdfghj", + * "152": "George" + * }, + * "ProductCategoryIds": "/59/", + * "IsDirectCategoryActive": false, + * "ProductGlobalCategoryId": null, + * "ProductCategories": { + * "59": "Brinquedos" + * }, + * "CommercialConditionId": 1, + * "RewardValue": 100.0, + * "AlternateIds": { + * "Ean": "8781", + * "RefId": "878181" + * }, + * "AlternateIdValues": [ + * "8781", + * "878181" + * ], + * "EstimatedDateArrival": "", + * "MeasurementUnit": "un", + * "UnitMultiplier": 2.0000, + * "InformationSource": "Indexer", + * "ModalType": "", + * "KeyWords": "basquete, tabela", + * "ReleaseDate": "2020-01-06T00:00:00", + * "ProductIsVisible": true, + * "ShowIfNotAvailable": true, + * "IsProductActive": true, + * "ProductFinalScore": 0 + * } + * ``` + */ +"GET /api/catalog_system/pvt/sku/stockkeepingunitbyid/:skuId": { +searchParams: { +/** + * Trade Policy's unique identifier number. + */ +sc?: number +} +response: GetSKUandContext +} +/** + * Retrieves information about a specific SKU by its `RefId`. + * + * ### Response body example + * + * ```json + * { + * "Id": 1, + * "ProductId": 1, + * "IsActive": true, + * "Name": "Royal Canin Feline Urinary 500g", + * "RefId": "0001", + * "PackagedHeight": 6.0000, + * "PackagedLength": 24.0000, + * "PackagedWidth": 14.0000, + * "PackagedWeightKg": 550.0000, + * "Height": null, + * "Length": null, + * "Width": null, + * "WeightKg": null, + * "CubicWeight": 1.0000, + * "IsKit": false, + * "CreationDate": "2020-03-12T15:42:00", + * "RewardValue": null, + * "EstimatedDateArrival": null, + * "ManufacturerCode": "", + * "CommercialConditionId": 1, + * "MeasurementUnit": "un", + * "UnitMultiplier": 1.0000, + * "ModalType": null, + * "KitItensSellApart": false, + * "Videos": null + * } + * ``` + */ +"GET /api/catalog/pvt/stockkeepingunit": { +searchParams: { +/** + * SKU Reference ID. + */ +refId: string +} +response: { +/** + * SKU ID. + */ +Id?: number +/** + * Product ID. + */ +ProductId?: number +/** + * Defines if the SKU is active (`true`) or not (`false`). + */ +IsActive?: boolean +/** + * When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component. + */ +ActivateIfPossible?: boolean +/** + * SKU Name. + */ +Name?: string +/** + * SKU RefId. + */ +RefId?: string +/** + * Packaged Height. + */ +PackagedHeight?: number +/** + * Packaged Length. + */ +PackagedLength?: number +/** + * Packaged Width. + */ +PackagedWidth?: number +/** + * Packaged Weight, in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. + */ +PackagedWeightKg?: number +/** + * SKU Height. + */ +Height?: number +/** + * SKU Length. + */ +Length?: number +/** + * SKU Width. + */ +Width?: number +/** + * Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. + */ +WeightKg?: number +/** + * [Cubic Weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128). + */ +CubicWeight?: number +/** + * Shows if the SKU is a Kit (`true`) or not (`false`). + */ +IsKit?: boolean +/** + * SKU Creation Date. + */ +CreationDate?: string +/** + * Defines the value of the reward for clients who purchase the SKU. + */ +RewardValue?: number +/** + * SKU estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format, when the product is on pre-sale. You must take into consideration both the launch date and the freight calculation for the arrival date. + */ +EstimatedDateArrival?: (null | string) +/** + * Manufacturer Code. + */ +ManufacturerCode?: string +/** + * Commercial Condition ID. + */ +CommercialConditionId?: number +/** + * Measurement Unit. + */ +MeasurementUnit?: string +/** + * This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward. + */ +UnitMultiplier?: number +/** + * Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. "Chemicals" or "Refrigerated products"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy). + */ +ModalType?: (null | string) +/** + * Defines if Kit components can be sold apart. + */ +KitItensSellApart?: boolean +/** + * Video URLs. + */ +Videos?: (null | string) +} +} +/** + * + * + * Creates a new SKU. + * + * If there is a need to create a new SKU with a specific custom ID, specify the `Id` (integer) in the request. Otherwise, VTEX will generate the ID automatically. + * + * ### Request body example (custom ID) + * + * ```json + * { + * "Id": 1, + * "ProductId": 310117069, + * "IsActive": false, + * "ActivateIfPossible": true, + * "Name": "sku test", + * "RefId": "125478", + * "Ean": "8949461894984", + * "PackagedHeight": 10, + * "PackagedLength": 10, + * "PackagedWidth": 10, + * "PackagedWeightKg": 10, + * "Height": null, + * "Length": null, + * "Width": null, + * "WeightKg": null, + * "CubicWeight": 0.1667, + * "IsKit": false, + * "CreationDate": null, + * "RewardValue": null, + * "EstimatedDateArrival": null, + * "ManufacturerCode": "123", + * "CommercialConditionId": 1, + * "MeasurementUnit": "un", + * "UnitMultiplier": 2.0000, + * "ModalType": null, + * "KitItensSellApart": false, + * "Videos": [ "https://www.youtube.com/" ] + * } + * ``` + * + * ### Request body example (automatically generated ID) + * + * ```json + * { + * "ProductId": 310117069, + * "IsActive": false, + * "ActivateIfPossible": true, + * "Name": "sku test", + * "RefId": "125478", + * "Ean": "8949461894984", + * "PackagedHeight": 10, + * "PackagedLength": 10, + * "PackagedWidth": 10, + * "PackagedWeightKg": 10, + * "Height": null, + * "Length": null, + * "Width": null, + * "WeightKg": null, + * "CubicWeight": 0.1667, + * "IsKit": false, + * "CreationDate": null, + * "RewardValue": null, + * "EstimatedDateArrival": null, + * "ManufacturerCode": "123", + * "CommercialConditionId": 1, + * "MeasurementUnit": "un", + * "UnitMultiplier": 2.0000, + * "ModalType": null, + * "KitItensSellApart": false, + * "Videos": [ "https://www.youtube.com/" ] + * } + * ``` + * + * ### Response body example + * + * ```json + * { + * "Id":1, + * "ProductId": 310117069, + * "IsActive": false, + * "ActivateIfPossible": true, + * "Name": "sku test", + * "RefId": "125478", + * "Ean": "8949461894984", + * "PackagedHeight": 10, + * "PackagedLength": 10, + * "PackagedWidth": 10, + * "PackagedWeightKg": 10, + * "Height": null, + * "Length": null, + * "Width": null, + * "WeightKg": null, + * "CubicWeight": 0.1667, + * "IsKit": false, + * "CreationDate": null, + * "RewardValue": null, + * "EstimatedDateArrival": null, + * "ManufacturerCode": "123", + * "CommercialConditionId": 1, + * "MeasurementUnit": "un", + * "UnitMultiplier": 2.0000, + * "ModalType": null, + * "KitItensSellApart": false, + * "Videos": [ "https://www.youtube.com/" ] + * } + * ``` + */ +"POST /api/catalog/pvt/stockkeepingunit": { +body: { +/** + * SKU unique identifier. If not informed, it will be automatically generated by VTEX. + */ +Id?: number +/** + * ID of the Product associated with this SKU. + */ +ProductId: number +/** + * Defines if the SKU is active (`true`) or not (`false`). During SKU creation, do not set this field as `true` or you will receive a `400 Bad Request` error. You should activate the SKU afterwards, as explained in [Activating an SKU](https://developers.vtex.com/docs/guides/skus#activating-an-sku). + */ +IsActive?: boolean +/** + * When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component. We recommend setting it to `true`, unless you plan to have an internal workflow to manually activate SKUs. + */ +ActivateIfPossible?: boolean +/** + * SKU name, meaning the variation of the previously added product. For example: **Product** - _Fridge_, **SKU** - _110V_. Limited to 200 characters. + */ +Name: string +/** + * Reference code used internally for organizational purposes. Must be unique. Required only if `Ean` is not informed, but can be used alongside `Ean` as well. + */ +RefId?: string +/** + * EAN code. Required only if `RefId` is not informed, but can be used alongside `RefId` as well. + */ +Ean?: string +/** + * Height used for shipping calculation. + */ +PackagedHeight: number +/** + * Length used for shipping calculation. + */ +PackagedLength: number +/** + * Width used for shipping calculation. + */ +PackagedWidth: number +/** + * Weight used for shipping calculation, in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. Do not fill in this field with `0` or `null`, because this might result in shipping issues. + */ +PackagedWeightKg: number +/** + * SKU real height. + */ +Height?: number +/** + * SKU real length. + */ +Length?: number +/** + * SKU real width. + */ +Width?: number +/** + * Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. + */ +WeightKg?: number +/** + * [Cubic weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128). + */ +CubicWeight?: number +/** + * Flag to set whether the product SKU is made up of one or more SKUs, thereby becoming a bundle. Must be enabled if you are adding a bundle. Once activated, the flag cannot be reverted. + */ +IsKit?: boolean +/** + * Date and time of the SKU's creation. + */ +CreationDate?: string +/** + * Credit that the customer receives when finalizing an order of one specific SKU unit. By filling this field out with `1`, the customer gets U$ 1 credit on the site. + */ +RewardValue?: number +/** + * To add the product as pre-sale, enter the product estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format. You must take into consideration both the launch date and the freight calculation for the arrival date. + */ +EstimatedDateArrival?: (null | string) +/** + * Provided by the manufacturers to identify their product. This field should be filled in if the product has a specific manufacturer’s code. + */ +ManufacturerCode?: string +/** + * Used to define SKU specific promotions or installment rules. In case of no specific condition, use `1` (default value). This field does not accept `0`. Find out more by reading [Registering a commercial condition](https://help.vtex.com/tutorial/registering-a-commercial-condition--tutorials_445). + */ +CommercialConditionId?: number +/** + * Used only in cases when you need to convert the unit of measure for sale. If a product is sold in boxes for example, but customers want to buy per square meter (m²). In common cases, use `'un'`. + */ +MeasurementUnit?: string +/** + * This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward. + */ +UnitMultiplier?: number +/** + * Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. "Chemicals" or "Refrigerated products"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy). + */ +ModalType?: (null | string) +/** + * Defines if Kit components can be sold apart. + */ +KitItensSellApart?: boolean +/** + * Videos URLs + */ +Videos?: string[] +} +response: { +/** + * SKU unique identifier. + */ +Id?: number +/** + * ID of the Product associated with this SKU. + */ +ProductId?: number +/** + * Defines if the SKU is active (`true`) or not (`false`). + */ +IsActive?: boolean +/** + * When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component. + */ +ActivateIfPossible?: boolean +/** + * SKU name, meaning the variation of the previously added product. For example: **Product** - _Fridge_, **SKU** - _110V_. + */ +Name?: string +/** + * Reference code used internally for organizational purposes. Must be unique. Required only if `Ean` is not informed, but can be used alongside `Ean` as well. + */ +RefId?: string +/** + * EAN code. Required only if `RefId` is not informed, but can be used alongside `RefId` as well. + */ +Ean?: string +/** + * Height used for shipping calculation. + */ +PackagedHeight?: number +/** + * Length used for shipping calculation. + */ +PackagedLength?: number +/** + * Width used for shipping calculation. + */ +PackagedWidth?: number +/** + * Weight used for shipping calculation, in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. + */ +PackagedWeightKg?: number +/** + * SKU real height. + */ +Height?: number +/** + * SKU real length. + */ +Length?: number +/** + * SKU real width. + */ +Width?: number +/** + * Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. + */ +WeightKg?: number +/** + * [Cubic weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128). + */ +CubicWeight?: number +/** + * Flag to set whether the product SKU is made up of one or more SKUs, thereby becoming a bundle. Must be enabled if you are adding a bundle. Once activated, the flag cannot be reverted. + */ +IsKit?: boolean +/** + * Date and time of the SKU's creation. + */ +CreationDate?: string +/** + * Credit that the customer receives when finalizing an order of one specific SKU unit. By filling this field out with `1`, the customer gets U$ 1 credit on the site. + */ +RewardValue?: number +/** + * SKU estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format, when the product is on pre-sale. You must take into consideration both the launch date and the freight calculation for the arrival date. + */ +EstimatedDateArrival?: (null | string) +/** + * Provided by the manufacturers to identify their product. This field should be filled in if the product has a specific manufacturer’s code. + */ +ManufacturerCode?: string +/** + * Used to define SKU specific promotions or installment rules. In case of no specific condition, use `1` (default value). This field does not accept `0`. Find out more by reading [Registering a commercial condition](https://help.vtex.com/tutorial/registering-a-commercial-condition--tutorials_445). + */ +CommercialConditionId?: number +/** + * Used only in cases when you need to convert the unit of measure for sale. If a product is sold in boxes for example, but customers want to buy per square meter (m²). In common cases, use `'un'`. + */ +MeasurementUnit?: string +/** + * This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward. + */ +UnitMultiplier?: number +/** + * Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. "Chemicals" or "Refrigerated products"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy). + */ +ModalType?: (null | string) +/** + * Defines if Kit components can be sold apart. + */ +KitItensSellApart?: boolean +/** + * Videos URLs. + */ +Videos?: string[] +} +} +/** + * Retrieves an SKU ID by the SKU's Reference ID. + * + * ### Response body example + * + * ```json + * "310118450" + * ``` + */ +"GET /api/catalog_system/pvt/sku/stockkeepingunitidbyrefid/:refId": { +/** + * SKU ID. + */ +response: string +} +/** + * Retrieves an SKU by its Alternate ID. + * + * ### Response body example + * + * ```json + * { + * "Id": 310118450, + * "ProductId": 2, + * "NameComplete": "Caixa de Areia Azul Petmate sku test", + * "ComplementName": "", + * "ProductName": "Caixa de Areia Azul Petmate", + * "ProductDescription": "", + * "ProductRefId": "", + * "TaxCode": "", + * "SkuName": "sku test", + * "IsActive": true, + * "IsTransported": true, + * "IsInventoried": true, + * "IsGiftCardRecharge": false, + * "ImageUrl": "https://lojadobreno.vteximg.com.br/arquivos/ids/155451-55-55/caixa-areia-azul-petmate.jpg?v=637139451191670000", + * "DetailUrl": "/caixa-de-areia-azul-petmate/p", + * "CSCIdentification": null, + * "BrandId": "2000005", + * "BrandName": "Petmate", + * "IsBrandActive": true, + * "Dimension": { + * "cubicweight": 0.2083, + * "height": 10.0000, + * "length": 10.0000, + * "weight": 10.0000, + * "width": 10.0000 + * }, + * "RealDimension": { + * "realCubicWeight": 0.000, + * "realHeight": 0.0, + * "realLength": 0.0, + * "realWeight": 0.0, + * "realWidth": 0.0 + * }, + * "ManufacturerCode": "123", + * "IsKit": false, + * "KitItems": [], + * "Services": [], + * "Categories": [], + * "CategoriesFullPath": [ + * "/3/15/", + * "/3/", + * "/1/" + * ], + * "Attachments": [], + * "Collections": [], + * "SkuSellers": [ + * { + * "SellerId": "1", + * "StockKeepingUnitId": 310118450, + * "SellerStockKeepingUnitId": "310118450", + * "IsActive": true, + * "FreightCommissionPercentage": 0.0, + * "ProductCommissionPercentage": 0.0 + * } + * ], + * "SalesChannels": [ + * 1, + * 3 + * ], + * "Images": [ + * { + * "ImageUrl": "https://lojadobreno.vteximg.com.br/arquivos/ids/155451/caixa-areia-azul-petmate.jpg?v=637139451191670000", + * "ImageName": null, + * "FileId": 155451 + * } + * ], + * "Videos": [], + * "SkuSpecifications": [], + * "ProductSpecifications": [], + * "ProductClustersIds": "151,158", + * "PositionsInClusters": { + * "151": 1, + * "158": 2 + * }, + * "ProductClusterNames": { + * "151": "asdfghj", + * "158": "Coleção halloween" + * }, + * "ProductClusterHighlights": { + * "151": "asdfghj" + * }, + * "ProductCategoryIds": "/3/15/", + * "IsDirectCategoryActive": true, + * "ProductGlobalCategoryId": 5000, + * "ProductCategories": { + * "15": "Caixa de Areia", + * "3": "Higiene", + * "1": "Alimentação" + * }, + * "CommercialConditionId": 1, + * "RewardValue": 0.0, + * "AlternateIds": { + * "RefId": "1" + * }, + * "AlternateIdValues": [ + * "1" + * ], + * "EstimatedDateArrival": null, + * "MeasurementUnit": "un", + * "UnitMultiplier": 1.0000, + * "InformationSource": null, + * "ModalType": null, + * "KeyWords": "", + * "ReleaseDate": "2020-01-06T00:00:00Z", + * "ProductIsVisible": true, + * "ShowIfNotAvailable": true, + * "IsProductActive": true, + * "ProductFinalScore": 0 + * } + * ``` + */ +"GET /api/catalog_system/pvt/sku/stockkeepingunitbyalternateId/:alternateId": { +response: GetSKUAltID +} +/** + * Retrieves a list with the SKUs related to a product by the product's ID. + * + * ### Response body example + * + * ```json + * [ + * { + * "IsPersisted": true, + * "IsRemoved": false, + * "Id": 2000035, + * "ProductId": 2000024, + * "IsActive": true, + * "Name": "33 - Preto", + * "Height": 8, + * "RealHeight": null, + * "Width": 15, + * "RealWidth": null, + * "Length": 8, + * "RealLength": null, + * "WeightKg": 340, + * "RealWeightKg": null, + * "ModalId": 1, + * "RefId": "", + * "CubicWeight": 0.2, + * "IsKit": false, + * "IsDynamicKit": null, + * "InternalNote": null, + * "DateUpdated": "2015-11-06T19:10:00", + * "RewardValue": 0.01, + * "CommercialConditionId": 1, + * "EstimatedDateArrival": "", + * "FlagKitItensSellApart": false, + * "ManufacturerCode": "", + * "ReferenceStockKeepingUnitId": null, + * "Position": 0, + * "EditionSkuId": null, + * "ApprovedAdminId": 123, + * "EditionAdminId": 123, + * "ActivateIfPossible": true, + * "SupplierCode": null, + * "MeasurementUnit": "un", + * "UnitMultiplier": 2.0000, + * "IsInventoried": null, + * "IsTransported": null, + * "IsGiftCardRecharge": null, + * "ModalType": "" + * } + * ] + * ``` + */ +"GET /api/catalog_system/pvt/sku/stockkeepingunitByProductId/:productId": { +response: SkulistbyProductId[] +} +/** + * Receives a list of Reference IDs and returns a list with the corresponding SKU IDs. + * + * >⚠️ The list of Reference IDs in the request body cannot have repeated Reference IDs, or the API will return an error 500. + * + * ## Request body example + * + * ```json + * [ + * "123", + * "D25133K-B2", + * "14-556", + * "DCF880L2-BR" + * ] + * ``` + * + * ### Response body example + * + * ```json + * { + * "123": "435", + * "D25133K-B2": "4351", + * "14-556": "3155", + * "DCF880L2-BR": "4500" + * } + * ``` + */ +"POST /api/catalog_system/pub/sku/stockkeepingunitidsbyrefids": { +/** + * Array with SKU reference IDs from which you need to retrieve the related SKU IDs. Don't repeat values in the array, or the API will return an error 500. + */ +body: string[] +/** + * Object composed by a list of SKU IDs related to each Reference ID list searched. Structure: "{RefId}": "{SkuId}". + */ +response: { +/** + * Reference ID. + */ +[k: string]: string +} +} +/** + * Retrieves a specific SKU by its ID. + * + * ### Response body example + * + * ```json + * { + * "Id": 1, + * "ProductId": 1, + * "IsActive": true, + * "ActivateIfPossible": true, + * "Name": "Ração Royal Canin Feline Urinary 500g", + * "RefId": "0001", + * "PackagedHeight": 6.5000, + * "PackagedLength": 24.0000, + * "PackagedWidth": 14.0000, + * "PackagedWeightKg": 550.0000, + * "Height": 2.2000, + * "Length": 4.4000, + * "Width": 3.3000, + * "WeightKg": 1.1000, + * "CubicWeight": 0.4550, + * "IsKit": false, + * "CreationDate": "2021-06-08T15:25:00", + * "RewardValue": null, + * "EstimatedDateArrival": null, + * "ManufacturerCode": "", + * "CommercialConditionId": 1, + * "MeasurementUnit": "un", + * "UnitMultiplier": 300.0000, + * "ModalType": null, + * "KitItensSellApart": false, + * "Videos": [ + * "www.google.com" + * ] + * } + * ``` + * > 📘 Onboarding guide + * > + * > Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey. + */ +"GET /api/catalog/pvt/stockkeepingunit/:skuId": { +response: { +/** + * SKU unique identifier. + */ +Id?: number +/** + * ID of the Product associated with this SKU. + */ +ProductId?: number +/** + * Shows if the SKU is active (`true`) or not (`false`). + */ +IsActive?: boolean +/** + * When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component. + */ +ActivateIfPossible?: boolean +/** + * SKU name, meaning the variation of the previously added product. For example: **Product** - _Fridge_, **SKU** - _110V_. + */ +Name?: string +/** + * Reference code used internally for organizational purposes. Must be unique. It is not required only if EAN code already exists. If not, this field must be provided. + */ +RefId?: string +/** + * Height used for shipping calculation. + */ +PackagedHeight?: number +/** + * Length used for shipping calculation. + */ +PackagedLength?: number +/** + * Width used for shipping calculation. + */ +PackagedWidth?: number +/** + * Weight used for shipping calculation. + */ +PackagedWeightKg?: number +/** + * SKU real height. + */ +Height?: number +/** + * SKU real length. + */ +Length?: number +/** + * SKU real width. + */ +Width?: number +/** + * Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. + */ +WeightKg?: number +/** + * [Cubic weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128). + */ +CubicWeight?: number +/** + * Flag to set whether the product SKU is made up of one or more SKUs, thereby becoming a bundle. Must be enabled if you are adding a bundle. Once activated, the flag cannot be reverted. + */ +IsKit?: boolean +/** + * Date and time of the SKU's creation. + */ +CreationDate?: string +/** + * Credit that the customer receives when finalizing an order of one specific SKU unit. By filling this field out with `1`, the customer gets U$ 1 credit on the site. + */ +RewardValue?: number +/** + * SKU estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format, when the product is on pre-sale. You must take into consideration both the launch date and the freight calculation for the arrival date. + */ +EstimatedDateArrival?: (null | string) +/** + * Provided by the manufacturers to identify their product. This field should be filled in if the product has a specific manufacturer’s code. + */ +ManufacturerCode?: string +/** + * Used to define SKU specific promotions or installment rules. In case of no specific condition, use `1` (default value). This field does not accept `0`. Find out more by reading [Registering a commercial condition](https://help.vtex.com/tutorial/registering-a-commercial-condition--tutorials_445). + */ +CommercialConditionId?: number +/** + * Used only in cases when you need to convert the unit of measure for sale. If a product is sold in boxes for example, but customers want to buy per square meter (m²). In common cases, use `'un'`. + */ +MeasurementUnit?: string +/** + * This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward. + */ +UnitMultiplier?: number +/** + * Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. "Chemicals" or "Refrigerated products"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy). + */ +ModalType?: (null | string) +/** + * Defines if Kit components can be sold apart. + */ +KitItensSellApart?: boolean +/** + * Videos URLs. + */ +Videos?: string[] +} +} +/** + * Updates an existing SKU. + * + * ### Request body example + * + * ```json + * { + * "Id": 310118448, + * "ProductId": 310117069, + * "IsActive": true, + * "ActivateIfPossible": true, + * "Name": "sku test", + * "RefId": "125478", + * "PackagedHeight": 10, + * "PackagedLength": 10, + * "PackagedWidth": 10, + * "PackagedWeightKg": 10, + * "Height": null, + * "Length": null, + * "Width": null, + * "WeightKg": null, + * "CubicWeight": 0.1667, + * "IsKit": false, + * "CreationDate": null, + * "RewardValue": null, + * "EstimatedDateArrival": null, + * "ManufacturerCode": "123", + * "CommercialConditionId": 1, + * "MeasurementUnit": "un", + * "UnitMultiplier": 2.0000, + * "ModalType": null, + * "KitItensSellApart": false, + * "Videos": [ "https://www.youtube.com/" ] + * } + * ``` + * + * ### Response body example + * + * ```json + * { + * "Id": 310118449, + * "ProductId": 1, + * "IsActive": true, + * "ActivateIfPossible": true, + * "Name": "sku test", + * "RefId": "1254789", + * "PackagedHeight": 10.0, + * "PackagedLength": 10.0, + * "PackagedWidth": 10.0, + * "PackagedWeightKg": 10.0, + * "Height": null, + * "Length": null, + * "Width": null, + * "WeightKg": null, + * "CubicWeight": 0.1667, + * "IsKit": false, + * "CreationDate": "2020-04-22T12:12:47.5219561", + * "RewardValue": null, + * "EstimatedDateArrival": null, + * "ManufacturerCode": "123", + * "CommercialConditionId": 1, + * "MeasurementUnit": "un", + * "UnitMultiplier": 2.0000, + * "ModalType": null, + * "KitItensSellApart": false, + * "Videos": [ "https://www.youtube.com/" ] + * } + * ``` + */ +"PUT /api/catalog/pvt/stockkeepingunit/:skuId": { +body: { +/** + * ID of the Product associated with this SKU. + */ +ProductId: number +/** + * Shows if the SKU is active (`true`) or not (`false`). + */ +IsActive?: boolean +/** + * When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component. + */ +ActivateIfPossible?: boolean +/** + * SKU name, meaning the variation of the previously added product. For example: **Product** - _Fridge_, **SKU** - _110V_. + */ +Name: string +/** + * Reference code used internally for organizational purposes. Must be unique. It is not required only if EAN code already exists. If not, this field must be provided. + */ +RefId?: string +/** + * Height used for shipping calculation. + */ +PackagedHeight: number +/** + * Length used for shipping calculation. + */ +PackagedLength: number +/** + * Width used for shipping calculation. + */ +PackagedWidth: number +/** + * Weight used for shipping calculation, in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. Do not fill in this field with `0` or `null`, because this might result in shipping issues. + */ +PackagedWeightKg: number +/** + * SKU real height. + */ +Height?: number +/** + * SKU real length. + */ +Length?: number +/** + * SKU real width. + */ +Width?: number +/** + * Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. + */ +WeightKg?: number +/** + * [Cubic weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128). + */ +CubicWeight?: number +/** + * Flag to set whether the product SKU is made up of one or more SKUs, thereby becoming a bundle. Must be enabled if you are adding a bundle. Once activated, the flag cannot be reverted. + */ +IsKit?: boolean +/** + * Date and time of the SKU's creation. + */ +CreationDate?: string +/** + * Credit that the customer receives when finalizing an order of one specific SKU unit. By filling this field out with `1`, the customer gets U$ 1 credit on the site. + */ +RewardValue?: number +/** + * To add the product as pre-sale, enter the product estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format. You must take into consideration both the launch date and the freight calculation for the arrival date. + */ +EstimatedDateArrival?: (null | string) +/** + * Provided by the manufacturers to identify their product. This field should be filled in if the product has a specific manufacturer’s code. + */ +ManufacturerCode?: string +/** + * Used to define SKU specific promotions or installment rules. In case of no specific condition, use `1` (default value). This field does not accept `0`. Find out more by reading [Registering a commercial condition](https://help.vtex.com/tutorial/registering-a-commercial-condition--tutorials_445). + */ +CommercialConditionId?: number +/** + * Used only in cases when you need to convert the unit of measure for sale. If a product is sold in boxes for example, but customers want to buy per square meter (m²). In common cases, use `'un'`. + */ +MeasurementUnit?: string +/** + * This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward. + */ +UnitMultiplier?: number +/** + * Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. "Chemicals" or "Refrigerated products"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy). + */ +ModalType?: (null | string) +/** + * Defines if Kit components can be sold apart. + */ +KitItensSellApart?: boolean +/** + * Videos URLs + */ +Videos?: string[] +} +response: { +/** + * SKU unique identifier. + */ +Id?: number +/** + * ID of the Product associated with this SKU. + */ +ProductId?: number +/** + * Shows if the SKU is active (`true`) or not (`false`). + */ +IsActive?: boolean +/** + * When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component. + */ +ActivateIfPossible?: boolean +/** + * SKU name, meaning the variation of the previously added product. For example: **Product** - _Fridge_, **SKU** - _110V_. + */ +Name?: string +/** + * Reference code used internally for organizational purposes. Must be unique. It is not required only if EAN code already exists. If not, this field must be provided. + */ +RefId?: string +/** + * Height used for shipping calculation. + */ +PackagedHeight?: number +/** + * Length used for shipping calculation. + */ +PackagedLength?: number +/** + * Width used for shipping calculation. + */ +PackagedWidth?: number +/** + * Weight used for shipping calculation, in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. + */ +PackagedWeightKg?: number +/** + * SKU real height. + */ +Height?: number +/** + * SKU real length. + */ +Length?: number +/** + * SKU real width. + */ +Width?: number +/** + * Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. + */ +WeightKg?: number +/** + * [Cubic weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128). + */ +CubicWeight?: number +/** + * Flag to set whether the product SKU is made up of one or more SKUs, thereby becoming a bundle. Must be enabled if you are adding a bundle. Once activated, the flag cannot be reverted. + */ +IsKit?: boolean +/** + * Date and time of the SKU's creation. + */ +CreationDate?: string +/** + * Credit that the customer receives when finalizing an order of one specific SKU unit. By filling this field out with `1`, the customer gets U$ 1 credit on the site. + */ +RewardValue?: number +/** + * SKU estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format, when the product is on pre-sale. You must take into consideration both the launch date and the freight calculation for the arrival date. + */ +EstimatedDateArrival?: (null | string) +/** + * Provided by the manufacturers to identify their product. This field should be filled in if the product has a specific manufacturer’s code. + */ +ManufacturerCode?: string +/** + * Used to define SKU specific promotions or installment rules. In case of no specific condition, use `1` (default value). This field does not accept `0`. Find out more by reading [Registering a commercial condition](https://help.vtex.com/tutorial/registering-a-commercial-condition--tutorials_445). + */ +CommercialConditionId?: number +/** + * Used only in cases when you need to convert the unit of measure for sale. If a product is sold in boxes for example, but customers want to buy per square meter (m²). In common cases, use `'un'`. + */ +MeasurementUnit?: string +/** + * This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward. + */ +UnitMultiplier?: number +/** + * Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. "Chemicals" or "Refrigerated products"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy). + */ +ModalType?: (null | string) +/** + * Defines if Kit components can be sold apart. + */ +KitItensSellApart?: boolean +/** + * Videos URLs. + */ +Videos?: string[] +} +} +/** + * Retrieves an existing SKU Complement by its SKU ID. + * + * ## Response body example + * + * ```json + * [ + * { + * "Id": 61, + * "SkuId": 7, + * "ParentSkuId": 1, + * "ComplementTypeId": 1 + * } + * ] + * ``` + */ +"GET /api/catalog/pvt/stockkeepingunit/:skuId/complement": { +response: SkuComplement +} +/** + * Retrieves all the existing SKU Complements with the same Complement Type ID of a specific SKU. + * + * ## Response body example + * + * ```json + * [ + * { + * "Id": 61, + * "SkuId": 7, + * "ParentSkuId": 1, + * "ComplementTypeId": 1 + * } + * ] + * ``` + */ +"GET /api/catalog/pvt/stockkeepingunit/:skuId/complement/:complementTypeId": { +response: SkuComplement +} +/** + * Retrieves all the existing SKU complements with the same complement type ID of a specific SKU. + * + * ## Response body example + * + * ```json + * { + * "ParentSkuId": 1, + * "ComplementSkuIds": [ + * 7 + * ], + * "Type": "1" + * } + * ``` + */ +"GET /api/catalog_system/pvt/sku/complements/:parentSkuId/:type": { +response: { +/** + * ID of the Parent SKU, where the Complement is inserted. + */ +ParentSkuId: number +/** + * Array with SKU complements IDs. + */ +ComplementSkuIds: number[] +/** + * Complement Type ID. This represents the type of the complement. The possible values are: `1` for Accessory; `2` for Suggestion; `3` for Similar Product; `5` for Show Together. + */ +Type: string +} +} +/** + * Creates a new SKU Complement on a Parent SKU. + * + * ## Request body example + * + * ```json + * { + * "SkuId": 2, + * "ParentSkuId": 1, + * "ComplementTypeId": 2 + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 62, + * "SkuId": 2, + * "ParentSkuId": 1, + * "ComplementTypeId": 2 + * } + * ``` + */ +"POST /api/catalog/pvt/skucomplement": { +body: { +/** + * ID of the Parent SKU, where the Complement is inserted. + */ +ParentSkuId: number +/** + * ID of the SKU which will be inserted as a Complement in the Parent SKU. + */ +SkuId: number +/** + * Complement Type ID. This represents the type of the complement. The possible values are: `1` for Accessory; `2` for Suggestion; `3` for Similar Product; `5` for Show Together. + */ +ComplementTypeId: number +} +response: SkuComplement +} +/** + * Retrieves an existing SKU Complement by its SKU Complement ID. + * + * ## Response body example + * + * ```json + * { + * "Id": 62, + * "SkuId": 2, + * "ParentSkuId": 1, + * "ComplementTypeId": 2 + * } + * ``` + */ +"GET /api/catalog/pvt/skucomplement/:skuComplementId": { +response: SkuComplement +} +/** + * Deletes a previously existing SKU Complement by SKU Complement ID. + */ +"DELETE /api/catalog/pvt/skucomplement/:skuComplementId": { + +} +/** + * Retrieves an SKU by its EAN ID. + * ## Response body example + * + * ```json + * { + * "Id": 2001773, + * "ProductId": 2001426, + * "NameComplete": "Tabela de Basquete", + * "ProductName": "Tabela de Basquete", + * "ProductDescription": "Tabela de Basquete", + * "SkuName": "Tabela de Basquete", + * "IsActive": true, + * "IsTransported": true, + * "IsInventoried": true, + * "IsGiftCardRecharge": false, + * "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168952-55-55/7508800GG.jpg", + * "DetailUrl": "/tabela-de-basquete/p", + * "CSCIdentification": null, + * "BrandId": "2000018", + * "BrandName": "MARCA ARGOLO TESTE", + * "Dimension": { + * "cubicweight": 81.6833, + * "height": 65, + * "length": 58, + * "weight": 10000, + * "width": 130 + * }, + * "RealDimension": { + * "realCubicWeight": 274.1375, + * "realHeight": 241, + * "realLength": 65, + * "realWeight": 9800, + * "realWidth": 105 + * }, + * "ManufacturerCode": "", + * "IsKit": false, + * "KitItems": [], + * "Services": [], + * "Categories": [], + * "Attachments": [ + * { + * "Id": 3, + * "Name": "Mensagem", + * "Keys": [ + * "nome;20", + * "foto;40" + * ], + * "Fields": [ + * { + * "FieldName": "nome", + * "MaxCaracters": "20", + * "DomainValues": "Adalberto,Pedro,João" + * }, + * { + * "FieldName": "foto", + * "MaxCaracters": "40", + * "DomainValues": null + * } + * ], + * "IsActive": true, + * "IsRequired": false + * } + * ], + * "Collections": [], + * "SkuSellers": [ + * { + * "SellerId": "1", + * "StockKeepingUnitId": 2001773, + * "SellerStockKeepingUnitId": "2001773", + * "IsActive": true, + * "FreightCommissionPercentage": 0, + * "ProductCommissionPercentage": 0 + * } + * ], + * "SalesChannels": [ + * 1, + * 2, + * 3, + * 10 + * ], + * "Images": [ + * { + * "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168952/7508800GG.jpg", + * "ImageName": "", + * "FileId": 168952 + * }, + * { + * "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168953/7508800_1GG.jpg", + * "ImageName": "", + * "FileId": 168953 + * }, + * { + * "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168954/7508800_2GG.jpg", + * "ImageName": "", + * "FileId": 168954 + * } + * ], + * "SkuSpecifications": [ + * { + * "FieldId": 102, + * "FieldName": "Cor", + * "FieldValueIds": [ + * 266 + * ], + * "FieldValues": [ + * "Padrão" + * ] + * } + * ], + * "ProductSpecifications": [ + * { + * "FieldId": 7, + * "FieldName": "Faixa Etária", + * "FieldValueIds": [ + * 58, + * 56, + * 55, + * 52 + * ], + * "FieldValues": [ + * "5 a 6 anos", + * "7 a 8 anos", + * "9 a 10 anos", + * "Acima de 10 anos" + * ] + * }, + * { + * "FieldId": 23, + * "FieldName": "Fabricante", + * "FieldValueIds": [], + * "FieldValues": [ + * "Xalingo" + * ] + * } + * ], + * "ProductClustersIds": "176,187,192,194,211,217,235,242", + * "ProductCategoryIds": "/59/", + * "ProductGlobalCategoryId": null, + * "ProductCategories": { + * "59": "Brinquedos" + * }, + * "CommercialConditionId": 1, + * "RewardValue": 100.0, + * "AlternateIds": { + * "Ean": "8781", + * "RefId": "878181" + * }, + * "AlternateIdValues": [ + * "8781", + * "878181" + * ], + * "EstimatedDateArrival": "", + * "MeasurementUnit": "un", + * "UnitMultiplier": 2.0000, + * "InformationSource": null, + * "ModalType": "" + * } + * ``` + */ +"GET /api/catalog_system/pvt/sku/stockkeepingunitbyean/:ean": { +response: GetSKUAltID +} +/** + * Retrieves the EAN of the SKU. + * ## Response body example + * + * ```json + * [ + * "1234567890123" + * ] + * ``` + */ +"GET /api/catalog/pvt/stockkeepingunit/:skuId/ean": { +/** + * Array with EANs associated with the SKU. + */ +response: string[] +} +/** + * Deletes all EAN values of an SKU. + */ +"DELETE /api/catalog/pvt/stockkeepingunit/:skuId/ean": { + +} +/** + * Creates or updates the EAN value of an SKU. + */ +"POST /api/catalog/pvt/stockkeepingunit/:skuId/ean/:ean": { + +} +/** + * Deletes the EAN value of an SKU. + */ +"DELETE /api/catalog/pvt/stockkeepingunit/:skuId/ean/:ean": { + +} +/** + * Associates an existing SKU to an existing Attachment. + * ## Request body example + * + * ```json + * { + * "AttachmentId": 1, + * "SkuId": 7 + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 31, + * "AttachmentId": 1, + * "SkuId": 7 + * } + * ``` + */ +"POST /api/catalog/pvt/skuattachment": { +body: { +/** + * Attachment ID. + */ +AttachmentId: number +/** + * Unique identifier of an SKU. + */ +SkuId: number +} +/** + * Object containing information about the association between the SKU and the attachment. + */ +response: { +/** + * Identifier of the SKU's association to the attachment. + */ +Id?: number +/** + * Attachment ID. + */ +AttachmentId?: number +/** + * Unique identifier of the SKU. + */ +SkuId?: number +} +} +/** + * Dissociates attachments and SKUs based on an SKU ID or an attachment ID. + */ +"DELETE /api/catalog/pvt/skuattachment": { +searchParams: { +/** + * SKU ID. By using this query param, you can dissociate all the attachments from an SKU based on its SKU ID. + */ +skuId?: number +/** + * Attachment ID. By using this query param, you can dissociate the given attachment from all previously associated SKUs. + */ +attachmentId?: number +} +} +/** + * Retrieves existing SKU Attachments by SKU ID. + * ## Response body example + * + * ```json + * [ + * { + * "Id": 97, + * "AttachmentId": 1, + * "SkuId": 1 + * } + * ] + * ``` + */ +"GET /api/catalog/pvt/stockkeepingunit/:skuId/attachment": { +/** + * Array of objects with information about the association between the attachments and the SKU. + */ +response: { +/** + * Identifier of the SKU's association to the attachment. + */ +Id?: number +/** + * Attachment ID. + */ +AttachmentId?: number +/** + * Unique identifier of the SKU. + */ +SkuId?: number +}[] +} +/** + * Deletes the association of an SKU to an Attachment. + */ +"DELETE /api/catalog/pvt/skuattachment/:skuAttachmentAssociationId": { + +} +/** + * Associates attachments to an SKU based on a given SKU ID and attachment names. + * This request removes existing SKU attachment associations and recreates the associations with the attachments being sent. + * ## Request body example + * + * ```json + * { + * "SkuId": 1, + * "AttachmentNames": [ + * "T-Shirt Customization" + * ] + * } + * ``` + */ +"POST /api/catalog_system/pvt/sku/associateattachments": { +body: { +/** + * Unique identifier of the SKU. + */ +SkuId: number +/** + * Array with all the names of the attachments that you need to associate to the SKU. + */ +AttachmentNames: string[] +} +} +/** + * Gets general information about all Files in the SKU. + * ## Response body example + * + * ```json + * [ + * { + * "Id": 549, + * "ArchiveId": 155485, + * "SkuId": 310118490, + * "Name": "chimera-cat-quimera-5", + * "IsMain": true, + * "Label": "miau" + * }, + * { + * "Id": 550, + * "ArchiveId": 155486, + * "SkuId": 310118490, + * "Name": "Gato-siames", + * "IsMain": false, + * "Label": "Gato siames" + * }, + * { + * "Id": 555, + * "ArchiveId": 155491, + * "SkuId": 310118490, + * "Name": "Cat-Sleeping-Pics", + * "IsMain": false, + * "Label": null + * } + * ] + * ``` + */ +"GET /api/catalog/pvt/stockkeepingunit/:skuId/file": { +/** + * Array with objects containing SKU Files information. + */ +response: { +/** + * Unique identifier of the association of the Image to the SKU. + */ +Id?: number +/** + * Unique identifier of the Image. + */ +ArchiveId?: number +/** + * Unique identifier of the SKU. + */ +SkuId?: number +/** + * Image name. + */ +Name?: string +/** + * Defines if the Image is the Main Image of the SKU. + */ +IsMain?: boolean +/** + * Image label. + */ +Label?: (null | string) +}[] +} +/** + * Creates a new Image for an SKU based on its URL or on a form-data request body. + * ## Request body example + * + * ```json + * { + * "IsMain": true, + * "Label": "", + * "Name": "Royal-Canin-Feline-Urinary-SO", + * "Text": null, + * "Url": "https://1.bp.blogspot.com/_SLQk9aAv9-o/S7NNbJPv7NI/AAAAAAAAAN8/V1LcO0ViDc4/s1600/waterbottle.jpg" + * + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 503, + * "ArchiveId": 155491, + * "SkuId": 1, + * "Name": "Royal-Canin-Feline-Urinary-SO", + * "IsMain": true, + * "Label": "" + * } + * ``` + */ +"POST /api/catalog/pvt/stockkeepingunit/:skuId/file": { +body: SKUFileURL +response: { +/** + * ID of the association of the SKU and the image (`SkuFileId`). This is the ID that is used to update or delete it. + */ +Id?: number +/** + * Unique identifier of the image file. + */ +ArchiveId?: number +/** + * SKU ID. + */ +SkuId?: number +/** + * Set the image as the main image for the product. + */ +IsMain?: boolean +/** + * Image label. + */ +Label?: string +} +} +/** + * Deletes all SKU Image Files. + */ +"DELETE /api/catalog/pvt/stockkeepingunit/:skuId/file": { + +} +/** + * Updates a new Image on an SKU based on its URL or on a form-data request body. + * ## Request body example + * + * ```json + * { + * "IsMain": true, + * "Label": null, + * "Name": "toilet-paper", + * "Text": null, + * "Url": "https://images-na.ssl-images-amazon.com/images/I/81DLLXaGI7L._SL1500_.jpg" + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 508, + * "ArchiveId": 155491, + * "SkuId": 7, + * "IsMain": true, + * "Label": null + * } + * ``` + */ +"PUT /api/catalog/pvt/stockkeepingunit/:skuId/file/:skuFileId": { +body: SKUFileURL +response: { +/** + * ID of the association of the SKU and the image (`SkuFileId`). This is the ID that is used to update or delete it. + */ +Id?: number +/** + * Unique identifier of the image file. + */ +ArchiveId?: number +/** + * SKU ID. + */ +SkuId?: number +/** + * Set the image as the main image for the product. + */ +IsMain?: boolean +/** + * Image label. + */ +Label?: string +} +} +/** + * Deletes a specific SKU Image File. + */ +"DELETE /api/catalog/pvt/stockkeepingunit/:skuId/file/:skuFileId": { + +} +/** + * Copy all existing files from an SKU to another SKU. + * ## Response body example + * + * ```json + * [ + * { + * "Id": 1964, + * "ArchiveId": 155404, + * "SkuId": 1, + * "IsMain": true, + * "Label": "" + * }, + * { + * "Id": 1965, + * "ArchiveId": 155429, + * "SkuId": 1, + * "IsMain": false, + * "Label": "" + * } + * ] + * ``` + */ +"PUT /api/catalog/pvt/stockkeepingunit/copy/:skuIdfrom/:skuIdto/file/": { +/** + * Array with objects containing information about each of the target SKU's Files. + */ +response: { +/** + * Unique identifier of the association of the Image to the SKU. + */ +Id?: number +/** + * Unique identifier of the image file. + */ +ArchiveId?: number +/** + * Unique identifier of the SKU. + */ +SkuId?: number +/** + * Defines if the Image is the Main Image of the SKU. + */ +IsMain?: boolean +/** + * Image label. + */ +Label?: (null | string) +}[] +} +/** + * Disassociates an SKU File from an SKU. + */ +"DELETE /api/catalog/pvt/stockkeepingunit/disassociate/:skuId/file/:skuFileId": { + +} +/** + * Retrieves general information about the components of an SKU Kit by SKU ID or Parent SKU ID. + * ## Response body example + * + * ```json + * { + * "Id": 7, + * "StockKeepingUnitParent": 7, + * "StockKeepingUnitId": 1, + * "Quantity": 1, + * "UnitPrice": 50.0000 + * } + * ``` + */ +"GET /api/catalog/pvt/stockkeepingunitkit": { +searchParams: { +/** + * SKU’s unique numerical identifier. + */ +skuId?: number +/** + * Parent SKU’s unique numerical identifier. + */ +parentSkuId?: number +} +response: SkuKit +} +/** + * Adds a component to a specific Kit. + * ## Request body example + * + * ```json + * { + * "StockKeepingUnitParent": 7, + * "StockKeepingUnitId": 1, + * "Quantity": 1, + * "UnitPrice": 50.0000 + * } + * ``` + * ## Response body example + * + * ```json + * { + * "Id": 7, + * "StockKeepingUnitParent": 7, + * "StockKeepingUnitId": 1, + * "Quantity": 1, + * "UnitPrice": 50.0000 + * } + * ``` + */ +"POST /api/catalog/pvt/stockkeepingunitkit": { +body: { +/** + * SKU ID of the SKU Kit. + */ +StockKeepingUnitParent: number +/** + * Component SKU ID. + */ +StockKeepingUnitId: number +/** + * Component quantity. + */ +Quantity: number +/** + * Component price per unit. + */ +UnitPrice: number +} +response: SkuKit +} +/** + * Deletes all Kit’s components based on the Parent SKU ID or deletes a specific Kit’s component based on the SKU ID. + */ +"DELETE /api/catalog/pvt/stockkeepingunitkit": { +searchParams: { +/** + * SKU’s unique numerical identifier. + */ +skuId?: number +/** + * Parent SKU’s unique numerical identifier. + */ +parentSkuId?: number +} +} +/** + * Retrieves general information about a component of a Kit. + */ +"GET /api/catalog/pvt/stockkeepingunitkit/:kitId": { +response: SkuKit +} +/** + * Deletes a specific Kit’s component based on its Kit ID. + */ +"DELETE /api/catalog/pvt/stockkeepingunitkit/:kitId": { + +} +/** + * > ⚠️ Check out the updated version of the SKU Seller endpoints in our [SKU Bindings API documentation](https://developers.vtex.com/vtex-rest-api/reference/getbyskuid). If you are doing this integration for the first time, we recommend that you follow the updated documentation. + * + * Retrieves the details of a seller's SKU given a seller ID and the SKU ID in the seller's store. + * ## Response body example + * + * ```json + * { + * "IsPersisted": true, + * "IsRemoved": false, + * "SkuSellerId": 799, + * "SellerId": "myseller", + * "StockKeepingUnitId": 50, + * "SellerStockKeepingUnitId": "502", + * "IsActive": true, + * "UpdateDate": "2018-10-11T04:52:42.1", + * "RequestedUpdateDate": null + * } + * ``` + */ +"GET /api/catalog_system/pvt/skuseller/:sellerId/:sellerSkuId": { +response: { +/** + * Defines if the seller is persisted. + */ +IsPersisted: boolean +/** + * Defines if the seller is removed. + */ +IsRemoved: boolean +/** + * SKU ID in the seller's store. + */ +SkuSellerId: number +/** + * ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID. + */ +SellerId: string +/** + * SKU ID in the VTEX marketplace. + */ +StockKeepingUnitId: number +/** + * SKU seller ID. + */ +SellerStockKeepingUnitId: string +/** + * Defines if the SKU binding is active. + */ +IsActive: boolean +/** + * Date when the SKU binding was updated for the last time, in UTC format. + */ +UpdateDate: string +/** + * Date when an SKU binding update was requested for the last time, in UTC format. + */ +RequestedUpdateDate: (null | string) +} +} +/** + * > ⚠️ Check out the updated version of the SKU Seller endpoints in our [SKU Bindings API documentation](https://developers.vtex.com/vtex-rest-api/reference/getbyskuid). If you are doing this integration for the first time, we recommend that you follow the updated documentation. + * + * Remove a seller's SKU binding, given the seller ID and the SKU ID in the seller's store. + */ +"POST /api/catalog_system/pvt/skuseller/remove/:sellerId/:sellerSkuId": { + +} +/** + * > ⚠️ Check out the updated version of the SKU Seller endpoints in our [SKU Bindings API documentation](https://developers.vtex.com/vtex-rest-api/reference/getbyskuid). If you are doing this integration for the first time, we recommend that you follow the updated documentation. + * + * The seller is responsible for suggesting new SKUs to be sold in the VTEX marketplace and also for informing the marketplace about changes in their SKUs that already exist in the marketplace. Both actions start with a catalog notification, which is made by this request. + * + * With this notification, the seller is telling the marketplace that something has changed about a specific SKU, like price or inventory, or that this is a new SKU that the seller would like to offer to the marketplace. + * + * There are two information expected by the marketplace in this request: the `sellerId`, which identifies the seller, and the `sellerSkuId`, which identifies the binding of the seller with the SKU. + * + * Both information are passed through the request URL. The body of the request should be empty. + */ +"POST /api/catalog_system/pvt/skuseller/changenotification/:sellerId/:sellerSkuId": { + +} +/** + * > ⚠️ Check out the updated version of the SKU Seller endpoints in our [SKU Bindings API documentation](https://developers.vtex.com/vtex-rest-api/reference/getbyskuid). If you are doing this integration for the first time, we recommend that you follow the updated documentation. + * + * The seller is responsible for suggesting new SKUs to be sold in the VTEX marketplace and also for informing the marketplace about changes in their SKUs that already exist in the marketplace. Both actions start with a catalog notification, which is made by this request. + * + * With this notification, the seller is telling the marketplace that something has changed about a specific SKU, like its name or description, or that this is a new SKU that the seller would like to offer to the marketplace. The body of the request should be empty. + * + * > ⚠️ Do not use this endpoint for price and inventory changes, because these types of updates should be notified using Marketplace API. For price changes, we recommend using the [Notify marketplace of price update](https://developers.vtex.com/docs/api-reference/marketplace-apis#post-/notificator/-sellerId-/changenotification/-skuId-/price) endpoint. For inventory changes, use [Notify marketplace of inventory update](https://developers.vtex.com/docs/api-reference/marketplace-apis#post-/notificator/-sellerId-/changenotification/-skuId-/inventory). + * + * ## Example + * + * Let's say your seller has the ID `123` in the marketplace and you want to inform the marketplace that has been a change in the SKU with ID `700`. + * + * In this case, you would have to replace the `sellerId` parameter with the value `123` and the `skuId` parameter with the value `700`. The URL of the request would be the following. + * + * ``` + * https://{{accountName}}.vtexcommercestable.com.br/api/catalog_system/pvt/skuseller/changenotification/123/700 + * ``` + * + * ## Response codes + * + * The following response codes are possible for this request. + * + * * **404:** the SKU was not found in the marketplace. The body of the response, in this case, should follow this format: "Seller StockKeepingUnit `{{skuId}}` not found for this seller id `{{sellerId}}`". This means that the seller can now proceed with sending an offer to the marketplace in order to suggest that this SKU is sold there. + * * **200:** the SKU whose ID was informed in the URL already exists in the marketplace and was found. The marketplace can now proceed with a fulfillment simulation in order to get updated information about this SKU's inventory and price. + * * **429:** Failure due to too many requests. + * * **403:** Failure in the authentication. + */ +"POST /api/catalog_system/pvt/skuseller/changenotification/:skuId": { + +} +/** + * Retrieves an SKU Service. + * ## Response body example + * + * ```json + * { + * "Id": 1, + * "SkuServiceTypeId": 1, + * "SkuServiceValueId": 1, + * "SkuId": 1, + * "Name": "name", + * "Text": "text", + * "IsActive": false + * } + * ``` + */ +"GET /api/catalog/pvt/skuservice/:skuServiceId": { +response: SKUService +} +/** + * Updates an SKU Service. + * ## Request body example + * + * ```json + * { + * "Name": "name", + * "Text": "text", + * "IsActive": false + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 1, + * "SkuServiceTypeId": 1, + * "SkuServiceValueId": 1, + * "SkuId": 1, + * "Name": "name", + * "Text": "text", + * "IsActive": false + * } + * ``` + */ +"PUT /api/catalog/pvt/skuservice/:skuServiceId": { +body: { +/** + * SKU Service Type ID. + */ +SkuServiceTypeId: number +/** + * SKU Service Value ID. + */ +SkuServiceValueId: number +/** + * SKU ID. + */ +SkuId: number +/** + * SKU Service Name. Maximum of 50 characters. + */ +Name: string +/** + * Internal description for the SKU Service. Maximum of 100 characters. + */ +Text: string +/** + * Defines if the SKU Service is active or not. + */ +IsActive: boolean +} +response: SKUService +} +/** + * Dissociates an SKU Service from an SKU. + */ +"DELETE /api/catalog/pvt/skuservice/:skuServiceId": { + +} +/** + * Associates an SKU Service to an SKU. + */ +"POST /api/catalog/pvt/skuservice": { +body: { +/** + * SKU Service Type ID. + */ +SkuServiceTypeId: number +/** + * SKU Service Value ID. + */ +SkuServiceValueId: number +/** + * SKU ID. + */ +SkuId: number +/** + * SKU Service Name. Maximum of 50 characters. + */ +Name: string +/** + * Internal description of the SKU Service. Maximum of 100 characters. + */ +Text: string +/** + * Defines if the SKU Service is active or not. + */ +IsActive: boolean +} +response: SKUService +} +/** + * Associates an Attachment for an existing SKU Service Type. + * ## Request body example + * + * ```json + * { + * "AttachmentId": 1, + * "SkuServiceTypeId": 1 + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 1, + * "AttachmentId": 1, + * "SkuServiceTypeId": 1 + * } + * ``` + */ +"POST /api/catalog/pvt/skuservicetypeattachment": { +body: { +/** + * Attachment ID. + */ +AttachmentId: number +/** + * An explanation about the purpose of this instance. + */ +SkuServiceTypeId: number +} +response: { +/** + * SKU Service Type Attachment association ID. + */ +Id?: number +/** + * Attachment ID. + */ +AttachmentId?: number +/** + * SKU Service Type ID. + */ +SkuServiceTypeId?: number +} +} +/** + * Dissociates an Attachment by its Attachment ID or SKU Service Type ID from an SKU Service Type. + */ +"DELETE /api/catalog/pvt/skuservicetypeattachment": { +searchParams: { +/** + * SKU Service Attachment unique identifier. + */ +attachmentId?: number +/** + * SKU Service Type unique identifier. + */ +skuServiceTypeId?: number +} +} +/** + * Dissociates an Attachment from an SKU Service Type + */ +"DELETE /api/catalog/pvt/skuservicetypeattachment/:skuServiceTypeAttachmentId": { + +} +/** + * Creates a new SKU Service Type. + * ## Request body example + * + * ```json + * { + * "Name": "Test API Sku Services", + * "IsActive": true, + * "ShowOnProductFront": true, + * "ShowOnCartFront": true, + * "ShowOnAttachmentFront": true, + * "ShowOnFileUpload": true, + * "IsGiftCard": true, + * "IsRequired": true + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 2, + * "Name": "Teste API Sku Services", + * "IsActive": true, + * "ShowOnProductFront": true, + * "ShowOnCartFront": true, + * "ShowOnAttachmentFront": true, + * "ShowOnFileUpload": true, + * "IsGiftCard": true, + * "IsRequired": true + * } + * ``` + */ +"POST /api/catalog/pvt/skuservicetype": { +body: SKUServiceTypeRequest +response: SKUServiceTypeResponse +} +/** + * Retrieves information about an existing SKU Service Type. + * ## Response body example: + * + * ```json + * { + * "Id": 2, + * "Name": "Test API SKU Services", + * "IsActive": true, + * "ShowOnProductFront": true, + * "ShowOnCartFront": true, + * "ShowOnAttachmentFront": true, + * "ShowOnFileUpload": true, + * "IsGiftCard": true, + * "IsRequired": true + * } + * ``` + */ +"GET /api/catalog/pvt/skuservicetype/:skuServiceTypeId": { +response: SKUServiceTypeResponse +} +/** + * Updates an existing SKU Service Type. + * ## Request body example + * + * ```json + * { + * "Name": "Test API Sku Services", + * "IsActive": true, + * "ShowOnProductFront": true, + * "ShowOnCartFront": true, + * "ShowOnAttachmentFront": true, + * "ShowOnFileUpload": true, + * "IsGiftCard": true, + * "IsRequired": true + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 2, + * "Name": "Teste API Sku Services", + * "IsActive": true, + * "ShowOnProductFront": true, + * "ShowOnCartFront": true, + * "ShowOnAttachmentFront": true, + * "ShowOnFileUpload": true, + * "IsGiftCard": true, + * "IsRequired": true + * } + * ``` + */ +"PUT /api/catalog/pvt/skuservicetype/:skuServiceTypeId": { +body: SKUServiceTypeRequest +response: SKUServiceTypeResponse +} +/** + * Deletes an existing SKU Service Type. + */ +"DELETE /api/catalog/pvt/skuservicetype/:skuServiceTypeId": { + +} +/** + * Creates an SKU Service Value for an existing SKU Service Type. + * ## Request body example + * + * ```json + * { + * "SkuServiceTypeId": 2, + * "Name": "Test ServiceValue API", + * "Value": 10.5, + * "Cost": 10.5 + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 2, + * "SkuServiceTypeId": 2, + * "Name": "Test ServiceValue API", + * "Value": 10.5, + * "Cost": 10.5 + * } + * ``` + */ +"POST /api/catalog/pvt/skuservicevalue": { +body: SKUServiceValueRequest +response: SKUServiceValueResponse +} +/** + * Retrieves an existing SKU Service Value. + * ## Response body example + * + * ```json + * { + * "Id": 2, + * "SkuServiceTypeId": 2, + * "Name": "Test ServiceValue API", + * "Value": 10.5, + * "Cost": 10.5 + * } + * ``` + */ +"GET /api/catalog/pvt/skuservicevalue/:skuServiceValueId": { +response: SKUServiceValueResponse +} +/** + * Updates an existing SKU Service Value. + * ## Request body example + * + * ```json + * { + * "SkuServiceTypeId": 2, + * "Name": "Test ServiceValue API", + * "Value": 10.5, + * "Cost": 10.5 + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 2, + * "SkuServiceTypeId": 2, + * "Name": "Test ServiceValue API", + * "Value": 10.5, + * "Cost": 10.5 + * } + * ``` + */ +"PUT /api/catalog/pvt/skuservicevalue/:skuServiceValueId": { +body: SKUServiceValueRequest +response: SKUServiceValueResponse +} +/** + * Deletes an existing SKU Service Value. + */ +"DELETE /api/catalog/pvt/skuservicevalue/:skuServiceValueId": { + +} +/** + * Retrieves information about an SKU's Specifications. + * ## Response body example + * + * ```json + * [ + * { + * "Id": 427, + * "SkuId": 7, + * "FieldId": 32, + * "FieldValueId": 131, + * "Text": "500g" + * }, + * { + * "Id": 428, + * "SkuId": 7, + * "FieldId": 40, + * "FieldValueId": 133, + * "Text": "A" + * } + * ] + * ``` + */ +"GET /api/catalog/pvt/stockkeepingunit/:skuId/specification": { +response: SKUSpecificationResponse[] +} +/** + * Associates a previously created Specification to an SKU. + * ## Request body example + * + * ```json + * { + * "FieldId": 65, + * "FieldValueId": 138 + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 730, + * "SkuId": 31, + * "FieldId": 65, + * "FieldValueId": 138, + * "Text": "Size" + * } + * ``` + */ +"POST /api/catalog/pvt/stockkeepingunit/:skuId/specification": { +body: { +/** + * Specification field ID. + */ +FieldId: number +/** + * Specification Value ID. Required only for `FieldTypeId` as `5`, `6` and `7`. + */ +FieldValueId?: number +} +response: SKUSpecificationResponse +} +/** + * Updates an existing Specification on an existing SKU. This endpoint only updates the `FieldValueId`. + * ## Request body example + * + * ```json + * { + * "Id": 65, + * "SkuId": 21, + * "FieldId": 32, + * "FieldValueId": 131, + * "Text": "Red" + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 65, + * "SkuId": 21, + * "FieldId": 32, + * "FieldValueId": 131, + * "Text": "Red" + * } + * ``` + */ +"PUT /api/catalog/pvt/stockkeepingunit/:skuId/specification": { +body: { +/** + * Specification and SKU association unique identifier. This field cannot be updated. + */ +Id: number +/** + * SKU unique identifier. This field cannot be updated. + */ +SkuId?: number +/** + * Specification field unique identifier. This field cannot be updated. + */ +FieldId: number +/** + * Specification value unique identifier. This field can only be updated with other values of the same `FieldId`. + */ +FieldValueId: number +/** + * Specification Value Name. This field is automatically updated if the `FieldValue` is updated. Otherwise, the value cannot be modified. + */ +Text?: string +} +response: SKUSpecificationResponse[] +} +/** + * Deletes all SKU Specifications. + */ +"DELETE /api/catalog/pvt/stockkeepingunit/:skuId/specification": { + +} +/** + * Deletes a specific SKU Specification. + */ +"DELETE /api/catalog/pvt/stockkeepingunit/:skuId/specification/:specificationId": { + +} +/** + * Associates a specification to an SKU using specification name and group name. Automatically creates the informed group, specification and values if they had not been created before. + * + * ## Request body example + * + * ```json + * { + * "FieldName": "Size", + * "GroupName": "Sizes", + * "RootLevelSpecification": false, + * "FieldValues": [ + * "M" + * ] + * } + * ``` + * + * + * ## Response body example + * + * ```json + * [ + * { + * "Id": 419, + * "SkuId": 5, + * "FieldId": 22, + * "FieldValueId": 62, + * "Text": "M" + * } + * ] + * ``` + * + */ +"PUT /api/catalog/pvt/stockkeepingunit/:skuId/specificationvalue": { +body: { +/** + * Specification name. Limited to 100 characters. + */ +FieldName: string +/** + * Group name. + */ +GroupName: string +/** + * Root level specification. + */ +RootLevelSpecification: boolean +/** + * Array of specification values. SKU Specifications must contain only one value. + */ +FieldValues: string[] +} +/** + * Array with information of all SKU specifications. + */ +response: { +/** + * ID of the association of the SKU and the specification. + */ +Id?: number +/** + * SKU ID. + */ +SkuId?: number +/** + * Specification field ID. + */ +FieldId?: number +/** + * Current specification value ID. + */ +FieldValueId?: number +/** + * Current specification value text. + */ +Text?: string +}[] +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Associates a single SKU to a Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection. + * ## Request body example + * + * ```json + * { + * "SkuId": 1 + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "SubCollectionId": 17, + * "SkuId": 1 + * } + * ``` + */ +"POST /api/catalog/pvt/subcollection/:subCollectionId/stockkeepingunit": { +body: { +/** + * Unique identifier of an SKU. + */ +SkuId: number +} +response: { +/** + * Subcollection’s unique numerical identifier. + */ +SubCollectionId?: number +/** + * Unique identifier of the SKU. + */ +SkuId?: number +} +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Deletes an SKU from a Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection. + */ +"DELETE /api/catalog/pvt/subcollection/:subCollectionId/stockkeepingunit/:skuId": { + +} +/** + * Retrieves the Category Tree of your store. Get all the category levels registered in the Catalog or define the level up to which you want to get. + * > 📘 Onboarding guide + * > + * > Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey. + * ## Response body example + * + * ```json + * [ + * { + * "id": 1, + * "name": "Alimentação", + * "hasChildren": true, + * "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao", + * "children": [ + * { + * "id": 6, + * "name": "Bebedouro", + * "hasChildren": false, + * "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/bebedouro", + * "children": [], + * "Title": "Bebedouro para Gatos", + * "MetaTagDescription": "" + * }, + * { + * "id": 7, + * "name": "Comedouro", + * "hasChildren": false, + * "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/comedouro", + * "children": [], + * "Title": "Comedouro para Gatos", + * "MetaTagDescription": "" + * }, + * { + * "id": 8, + * "name": "Biscoitos", + * "hasChildren": false, + * "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/biscoitos", + * "children": [], + * "Title": "Biscoitos para Gatos", + * "MetaTagDescription": "" + * }, + * { + * "id": 9, + * "name": "Petiscos", + * "hasChildren": false, + * "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/petiscos", + * "children": [], + * "Title": "Petiscos para Gatos", + * "MetaTagDescription": "" + * }, + * { + * "id": 10, + * "name": "Ração Seca", + * "hasChildren": false, + * "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/racao-seca", + * "children": [], + * "Title": "Ração Seca para Gatos", + * "MetaTagDescription": "" + * }, + * { + * "id": 11, + * "name": "Ração Úmida", + * "hasChildren": false, + * "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/racao-umida", + * "children": [], + * "Title": "Ração Úmida para Gatos", + * "MetaTagDescription": "" + * } + * ], + * "Title": "Alimentação para Gatos", + * "MetaTagDescription": "" + * }, + * { + * "id": 2, + * "name": "Brinquedos", + * "hasChildren": true, + * "url": "https://lojadobreno.vtexcommercestable.com.br/brinquedos", + * "children": [ + * { + * "id": 12, + * "name": "Bolinhas", + * "hasChildren": false, + * "url": "https://lojadobreno.vtexcommercestable.com.br/brinquedos/bolinhas", + * "children": [], + * "Title": "Bolinhas para Gatos", + * "MetaTagDescription": "" + * }, + * { + * "id": 13, + * "name": "Ratinhos", + * "hasChildren": false, + * "url": "https://lojadobreno.vtexcommercestable.com.br/brinquedos/ratinhos", + * "children": [], + * "Title": "Ratinhos", + * "MetaTagDescription": "" + * }, + * { + * "id": 19, + * "name": "Arranhador para gato", + * "hasChildren": false, + * "url": "https://lojadobreno.vtexcommercestable.com.br/brinquedos/arranhador-para-gato", + * "children": [], + * "Title": "Brinquedo Arranhador para gatos", + * "MetaTagDescription": "Arranhador gatos é indispensável no lar com felinos. Ideais para afiar as unhas e garantir a diversão" + * } + * ], + * "Title": "Brinquedos para Gatos", + * "MetaTagDescription": "" + * } + * ] + * ``` + */ +"GET /api/catalog_system/pub/category/tree/:categoryLevels": { +response: GetCategoryTree[] +} +/** + * Retrieves general information about a Category. + * ## Response body example + * + * ```json + * { + * "Id": 1, + * "Name": "Home Appliances", + * "FatherCategoryId": null, + * "Title": "Home Appliances", + * "Description": "Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.", + * "Keywords": "Kitchen, Laundry, Appliances", + * "IsActive": true, + * "LomadeeCampaignCode": "", + * "AdWordsRemarketingCode": "", + * "ShowInStoreFront": true, + * "ShowBrandFilter": true, + * "ActiveStoreFrontLink": true, + * "GlobalCategoryId": 3367, + * "StockKeepingUnitSelectionMode": "LIST", + * "Score": null, + * "LinkId": "Alimentacao", + * "HasChildren": true + * } + * ``` + */ +"GET /api/catalog/pvt/category/:categoryId": { +response: Category +} +/** + * Updates a previously existing Category. + * + * ## Request body example + * + * ```json + * { + * "Name": "Home Appliances", + * "FatherCategoryId": null, + * "Title": "Home Appliances", + * "Description": "Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.", + * "Keywords": "Kitchen, Laundry, Appliances", + * "IsActive": true, + * "LomadeeCampaignCode": null, + * "AdWordsRemarketingCode": null, + * "ShowInStoreFront": true, + * "ShowBrandFilter": true, + * "ActiveStoreFrontLink": true, + * "GlobalCategoryId": 604, + * "StockKeepingUnitSelectionMode": "SPECIFICATION", + * "Score": null + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 1, + * "Name": "Home Appliances", + * "FatherCategoryId": null, + * "Title": "Home Appliances", + * "Description": "Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.", + * "Keywords": "Kitchen, Laundry, Appliances", + * "IsActive": true, + * "LomadeeCampaignCode": "", + * "AdWordsRemarketingCode": "", + * "ShowInStoreFront": true, + * "ShowBrandFilter": true, + * "ActiveStoreFrontLink": true, + * "GlobalCategoryId": 604, + * "StockKeepingUnitSelectionMode": "LIST", + * "Score": null, + * "LinkId": "Alimentacao", + * "HasChildren": true + * } + * ``` + */ +"PUT /api/catalog/pvt/category/:categoryId": { +body: { +/** + * Category name. + */ +Name: string +/** + * Substitute words for the Category. + */ +Keywords: string +/** + * Text used in title tag for Category page. + */ +Title: string +/** + * Text used in meta description tag for Category page. + */ +Description: string +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +AdWordsRemarketingCode: string +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +LomadeeCampaignCode: string +/** + * ID of the parent category, apply in case of category and subcategory. + */ +FatherCategoryId: (null | number) +/** + * Google Global Category ID. + */ +GlobalCategoryId: number +/** + * If true, the Category is shown in the top and side menu. + */ +ShowInStoreFront: boolean +/** + * If true, the Category page becomes available in store. + */ +IsActive: boolean +/** + * If true, the Category link becomes active in store. + */ +ActiveStoreFrontLink: boolean +/** + * If true, the Category page displays a Brand filter. + */ +ShowBrandFilter: boolean +/** + * Score for search sorting order. + */ +Score: number +/** + * Defines how the SKU will be exhibited + */ +StockKeepingUnitSelectionMode: string +} +response: Category +} +/** + * Creates a new Category. + * + * If there is a need to create a new category with a specific custom ID, specify the `Id` (integer) in the request. Otherwise, VTEX will generate the ID automatically. + * + * ## Request body example (automatically generated ID) + * + * ```json + * { + * "Name": "Home Appliances", + * "FatherCategoryId": null, + * "Title": "Home Appliances", + * "Description": "Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.", + * "Keywords": "Kitchen, Laundry, Appliances", + * "IsActive": true, + * "LomadeeCampaignCode": null, + * "AdWordsRemarketingCode": null, + * "ShowInStoreFront": true, + * "ShowBrandFilter": true, + * "ActiveStoreFrontLink": true, + * "GlobalCategoryId": 604, + * "StockKeepingUnitSelectionMode": "SPECIFICATION", + * "Score": null + * } + * ``` + * + * ## Request body example (custom ID) + * + * ```json + * { + * "Id": 1, + * "Name": "Home Appliances", + * "FatherCategoryId": null, + * "Title": "Home Appliances", + * "Description": "Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.", + * "Keywords": "Kitchen, Laundry, Appliances", + * "IsActive": true, + * "LomadeeCampaignCode": null, + * "AdWordsRemarketingCode": null, + * "ShowInStoreFront": true, + * "ShowBrandFilter": true, + * "ActiveStoreFrontLink": true, + * "GlobalCategoryId": 604, + * "StockKeepingUnitSelectionMode": "SPECIFICATION", + * "Score": null + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 1, + * "Name": "Home Appliances", + * "FatherCategoryId": null, + * "Title": "Home Appliances", + * "Description": "Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.", + * "Keywords": "Kitchen, Laundry, Appliances", + * "IsActive": true, + * "LomadeeCampaignCode": "", + * "AdWordsRemarketingCode": "", + * "ShowInStoreFront": true, + * "ShowBrandFilter": true, + * "ActiveStoreFrontLink": true, + * "GlobalCategoryId": 604, + * "StockKeepingUnitSelectionMode": "LIST", + * "Score": null, + * "LinkId": "Alimentacao", + * "HasChildren": true + * } + * ``` + */ +"POST /api/catalog/pvt/category": { +body: CreateCategoryRequest +response: Category +} +/** + * Retrieves Similar Categories from a Product. + * + * ## Response body example + * + * ```json + * [ + * { + * "ProductId": 1, + * "CategoryId": 1 + * }, + * { + * "ProductId": 1, + * "CategoryId": 20 + * } + * ] + * ``` + */ +"GET /api/catalog/pvt/product/:productId/similarcategory/": { +/** + * Array of objects with similar category information. + */ +response: { +/** + * Product ID. + */ +ProductId?: number +/** + * Similar Category ID. + */ +CategoryId?: number +}[] +} +/** + * Adds a Similar Category to a Product. + * + * ## Response body example + * + * ```json + * { + * "ProductId": 1, + * "StoreId": 1 + * } + * ``` + */ +"POST /api/catalog/pvt/product/:productId/similarcategory/:categoryId": { +/** + * Object containing information related to the similar category. + */ +response: { +/** + * Product ID. + */ +ProductId?: number +/** + * Trade Policy ID. + */ +StoreId?: number +} +} +/** + * Deletes a Similar Category from a Product. + */ +"DELETE /api/catalog/pvt/product/:productId/similarcategory/:categoryId": { + +} +/** + * Retrieves all specifications from a category by its ID. + * + * ## Response body example + * + * ```json + * [ + * { + * "Name": "Specification A", + * "CategoryId": 1, + * "FieldId": 33, + * "IsActive": true, + * "IsStockKeepingUnit": false + * }, + * { + * "Name": "Specification B", + * "CategoryId": 1, + * "FieldId": 34, + * "IsActive": true, + * "IsStockKeepingUnit": false + * }, + * { + * "Name": "Specification C", + * "CategoryId": 1, + * "FieldId": 35, + * "IsActive": false, + * "IsStockKeepingUnit": false + * } + * ] + * ``` + */ +"GET /api/catalog_system/pub/specification/field/listByCategoryId/:categoryId": { +response: CategorySpecification +} +/** + * Lists all specifications including the current category and the level zero specifications from a category by its ID. + * + * ## Response body example + * + * ```json + * [ + * { + * "Name": "Specification A", + * "CategoryId": 1, + * "FieldId": 33, + * "IsActive": true, + * "IsStockKeepingUnit": false + * }, + * { + * "Name": "Specification B", + * "CategoryId": 1, + * "FieldId": 34, + * "IsActive": true, + * "IsStockKeepingUnit": false + * }, + * { + * "Name": "Specification C", + * "CategoryId": 1, + * "FieldId": 35, + * "IsActive": false, + * "IsStockKeepingUnit": false + * } + * ] + * ``` + */ +"GET /api/catalog_system/pub/specification/field/listTreeByCategoryId/:categoryId": { +response: CategorySpecification +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Associates a single Category to a Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection. + * ## Request body example + * + * ```json + * { + * "CategoryId": 1 + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "SubCollectionId": 17, + * "CategoryId": 1 + * } + * ``` + */ +"POST /api/catalog/pvt/subcollection/:subCollectionId/category": { +body: { +/** + * Unique identifier of a Category. + */ +CategoryId: number +} +response: { +/** + * Subcollection’s unique numerical identifier. + */ +SubCollectionId?: number +/** + * Unique identifier of the Category. + */ +CategoryId?: number +} +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Deletes a Category from a Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection. + */ +"DELETE /api/catalog/pvt/subcollection/:subCollectionId/brand/:categoryId": { + +} +/** + * Retrieves all Brands registered in the store's Catalog. + * >⚠️ This route's response is limited to 20k results. If you need to obtain more results, please use the [Get Brand List](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-brand-list) endpoint instead to get a paginated response. + * ## Response body example + * + * ```json + * [ + * { + * "id": 9280, + * "name": "Brand", + * "isActive": true, + * "title": "Brand", + * "metaTagDescription": "Brand", + * "imageUrl": null + * }, + * { + * "id": 2000000, + * "name": "Orma Carbon", + * "isActive": true, + * "title": "Orma Carbon", + * "metaTagDescription": "Orma Carbon", + * "imageUrl": null + * }, + * { + * "id": 2000001, + * "name": "Pedigree", + * "isActive": true, + * "title": "Pedigree", + * "metaTagDescription": "", + * "imageUrl": null + * } + * ] + * ``` + */ +"GET /api/catalog_system/pvt/brand/list": { +/** + * An array with all brands registered in the store. + */ +response: BrandGet[] +} +/** + * Retrieves all Brands registered in the store's Catalog by page number. + * ## Response body example + * + * ```json + * { + * "items": [ + * { + * "id": 2000000, + * "name": "Farm", + * "isActive": true, + * "title": "Farm", + * "metaTagDescription": "Farm", + * "imageUrl": null + * }, + * { + * "id": 2000001, + * "name": "Adidas", + * "isActive": true, + * "title": "", + * "metaTagDescription": "", + * "imageUrl": null + * }, + * { + * "id": 2000002, + * "name": "Brastemp", + * "isActive": true, + * "title": "Brastemp", + * "metaTagDescription": "Brastemp", + * "imageUrl": null + * } + * ], + * "paging": { + * "page": 1, + * "perPage": 3, + * "total": 6, + * "pages": 2 + * } + * } + * ``` + */ +"GET /api/catalog_system/pvt/brand/pagedlist": { +searchParams: { +/** + * Quantity of brands per page. + */ +pageSize: number +/** + * Page number of the brand list. + */ +page: number +} +response: { +/** + * Array of objects with information of the store's brands. + */ +items: BrandGet[] +/** + * Object with pagination information. + */ +paging: { +/** + * Page number of the brand list. + */ +page: number +/** + * Quantity of brands per page. + */ +perPage: number +/** + * Total of brands in the store. + */ +total: number +/** + * Total number of pages. + */ +pages: number +} +} +} +/** + * Retrieves a specific Brand by its ID. + * ## Response body example + * + * ```json + * { + * "id": 7000000, + * "name": "Pedigree", + * "isActive": true, + * "title": "Pedigree", + * "metaTagDescription": "Pedigree", + * "imageUrl": null + * } + * ``` + */ +"GET /api/catalog_system/pvt/brand/:brandId": { +response: BrandGet +} +/** + * Creates a new Brand. + * ## Request and response body example + * + * ```json + * { + * "Id": 2000013, + * "Name": "Orma Carbon", + * "Text": "Orma Carbon", + * "Keywords": "orma", + * "SiteTitle": "Orma Carbon", + * "Active": true, + * "MenuHome": true, + * "AdWordsRemarketingCode": "", + * "LomadeeCampaignCode": "", + * "Score": null, + * "LinkId": "orma-carbon" + * } + * ``` + */ +"POST /api/catalog/pvt/brand": { +body: BrandCreateUpdate +response: BrandCreateUpdate +} +/** + * Retrieves information about a specific Brand and its context. + * ## Response body example + * + * ```json + * { + * "Id": 2000013, + * "Name": "Orma Carbon", + * "Text": "Orma Carbon", + * "Keywords": "orma", + * "SiteTitle": "Orma Carbon", + * "Active": true, + * "MenuHome": true, + * "AdWordsRemarketingCode": "", + * "LomadeeCampaignCode": "", + * "Score": null, + * "LinkId": "orma-carbon" + * } + * ``` + */ +"GET /api/catalog/pvt/brand/:brandId": { +response: BrandCreateUpdate +} +/** + * Updates a previously existing Brand. + * ## Request and response body example + * + * ```json + * { + * "Id": 2000013, + * "Name": "Orma Carbon", + * "Text": "Orma Carbon", + * "Keywords": "orma", + * "SiteTitle": "Orma Carbon", + * "Active": true, + * "MenuHome": true, + * "AdWordsRemarketingCode": "", + * "LomadeeCampaignCode": "", + * "Score": null, + * "LinkId": "orma-carbon" + * } + * ``` + */ +"PUT /api/catalog/pvt/brand/:brandId": { +body: BrandCreateUpdate +response: BrandCreateUpdate +} +/** + * Deletes an existing Brand. + */ +"DELETE /api/catalog/pvt/brand/:brandId": { + +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Associates a single Brand to a Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection. + * ## Request body example + * + * ```json + * { + * "BrandId": 2000000 + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "SubCollectionId": 17, + * "BrandId": 2000000 + * } + * ``` + */ +"POST /api/catalog/pvt/subcollection/:subCollectionId/brand": { +body: { +/** + * Unique identifier of a Brand. + */ +BrandId: number +} +response: { +/** + * Subcollection’s unique numerical identifier. + */ +SubCollectionId?: number +/** + * Unique identifier of the Brand. + */ +BrandId?: number +} +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Deletes a Brand from a Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection. + */ +"DELETE /api/catalog/pvt/subcollection/:subCollectionId/brand/:brandId": { + +} +/** + * Gets information about a registered attachment. + * >⚠️ To understand the specific syntax for Assembly Options attachments, read the [Assembly Options](https://help.vtex.com/en/tutorial/assembly-options--5x5FhNr4f5RUGDEGWzV1nH#assembly-options-syntax) documentation. + * ## Response body example + * + * ```json + * { + * "Id": 8, + * "Name": "Test", + * "IsRequired": true, + * "IsActive": true, + * "Domains": [ + * { + * "FieldName": "Basic test", + * "MaxCaracters": "", + * "DomainValues": "[1-2]#9[1-1][1]basic;#11[0-1][1]basic" + * }, + * { + * "FieldName": "teste", + * "MaxCaracters": "", + * "DomainValues": "[0-10]#8[0-3][0]medium;#9[0-3][0]medium;#10[0-3][0]medium;#11[0-3][0]medium;#36[0-3][0]medium;#37[0-3][0]medium;#38[0-3][0]medium" + * } + * ] + * } + * ``` + */ +"GET /api/catalog/pvt/attachment/:attachmentid": { +response: AttachmentResponse +} +/** + * Updates a previously existing SKU attachment with new information. + * >⚠️ To understand the specific syntax for Assembly Options attachments, read the [Assembly Options](https://help.vtex.com/en/tutorial/assembly-options--5x5FhNr4f5RUGDEGWzV1nH#assembly-options-syntax) documentation. + * ## Request body example + * + * ```json + * { + * "Name": "Test", + * "IsRequired": true, + * "IsActive": true, + * "Domains": [ + * { + * "FieldName": "Basic test", + * "MaxCaracters": "", + * "DomainValues": "[1-2]#9[1-1][1]basic;#11[0-1][1]basic" + * }, + * { + * "FieldName": "teste", + * "MaxCaracters": "", + * "DomainValues": "[0-10]#8[0-3][0]medium;#9[0-3][0]medium;#10[0-3][0]medium;#11[0-3][0]medium;#36[0-3][0]medium;#37[0-3][0]medium;#38[0-3][0]medium" + * } + * ] + * } + * ``` + * ## Response body example + * + * ```json + * { + * "Id": 8, + * "Name": "Test", + * "IsRequired": true, + * "IsActive": true, + * "Domains": [ + * { + * "FieldName": "Basic test", + * "MaxCaracters": "", + * "DomainValues": "[1-2]#9[1-1][1]basic;#11[0-1][1]basic" + * }, + * { + * "FieldName": "teste", + * "MaxCaracters": "", + * "DomainValues": "[0-10]#8[0-3][0]medium;#9[0-3][0]medium;#10[0-3][0]medium;#11[0-3][0]medium;#36[0-3][0]medium;#37[0-3][0]medium;#38[0-3][0]medium" + * } + * ] + * } + * ``` + */ +"PUT /api/catalog/pvt/attachment/:attachmentid": { +body: AttachmentRequest +response: AttachmentResponse +} +/** + * Deletes a previously existing SKU attachment. + */ +"DELETE /api/catalog/pvt/attachment/:attachmentid": { + +} +/** + * Creates a new SKU attachment. + * >⚠️ To understand the specific syntax for Assembly Options attachments, read the [Assembly Options](https://help.vtex.com/en/tutorial/assembly-options--5x5FhNr4f5RUGDEGWzV1nH#assembly-options-syntax) documentation. + * ## Request body example + * + * ```json + * { + * "Name": "Test", + * "IsRequired": true, + * "IsActive": true, + * "Domains": [ + * { + * "FieldName": "Basic test", + * "MaxCaracters": "", + * "DomainValues": "[1-2]#9[1-1][1]basic;#11[0-1][1]basic" + * }, + * { + * "FieldName": "teste", + * "MaxCaracters": "", + * "DomainValues": "[0-10]#8[0-3][0]medium;#9[0-3][0]medium;#10[0-3][0]medium;#11[0-3][0]medium;#36[0-3][0]medium;#37[0-3][0]medium;#38[0-3][0]medium" + * } + * ] + * } + * ``` + * ## Response body example + * + * ```json + * { + * "Id": 8, + * "Name": "Test", + * "IsRequired": true, + * "IsActive": true, + * "Domains": [ + * { + * "FieldName": "Basic test", + * "MaxCaracters": "", + * "DomainValues": "[1-2]#9[1-1][1]basic;#11[0-1][1]basic" + * }, + * { + * "FieldName": "teste", + * "MaxCaracters": "", + * "DomainValues": "[0-10]#8[0-3][0]medium;#9[0-3][0]medium;#10[0-3][0]medium;#11[0-3][0]medium;#36[0-3][0]medium;#37[0-3][0]medium;#38[0-3][0]medium" + * } + * ] + * } + * ``` + */ +"POST /api/catalog/pvt/attachment": { +body: AttachmentRequest +response: AttachmentResponse +} +/** + * Retrieves information about all registered attachments. + * >⚠️ To understand the specific syntax for Assembly Options attachments, read the [Assembly Options](https://help.vtex.com/en/tutorial/assembly-options--5x5FhNr4f5RUGDEGWzV1nH#assembly-options-syntax) documentation. + * ## Response body example + * + * ```json + * { + * "Page": 1, + * "Size": 11, + * "TotalRows": 11, + * "TotalPage": 1, + * "Data": [ + * { + * "Id": 1, + * "Name": "Acessórios do bicho", + * "IsRequired": true, + * "IsActive": true, + * "Domains": [ + * { + * "FieldName": "extra", + * "MaxCaracters": "", + * "DomainValues": "[0-3]#1[1-2][1]pricetable1;#3[0-2][0]pricetable2;#5[0-2][0]pricetable3" + * } + * ] + * }, + * { + * "Id": 2, + * "Name": "Sobrenome", + * "IsRequired": false, + * "IsActive": true, + * "Domains": [] + * }, + * { + * "Id": 3, + * "Name": "Assinatura Teste", + * "IsRequired": false, + * "IsActive": true, + * "Domains": [ + * { + * "FieldName": " vtex.subscription.key.frequency", + * "MaxCaracters": "", + * "DomainValues": "1 day, 7 day, 1 month, 6 month" + * }, + * { + * "FieldName": "vtex.subscription.key.validity.begin", + * "MaxCaracters": "", + * "DomainValues": "1" + * }, + * { + * "FieldName": "vtex.subscription.key.validity.end", + * "MaxCaracters": "", + * "DomainValues": "31" + * }, + * { + * "FieldName": "vtex.subscription.key.purchaseday", + * "MaxCaracters": "", + * "DomainValues": "1, 2, 20, 31" + * } + * ] + * }, + * { + * "Id": 5, + * "Name": "teste", + * "IsRequired": false, + * "IsActive": true, + * "Domains": [] + * }, + * { + * "Id": 6, + * "Name": "teste2", + * "IsRequired": false, + * "IsActive": true, + * "Domains": [] + * }, + * { + * "Id": 7, + * "Name": "vtex.subscription.teste3", + * "IsRequired": false, + * "IsActive": true, + * "Domains": [] + * }, + * { + * "Id": 8, + * "Name": "teste api nova", + * "IsRequired": true, + * "IsActive": true, + * "Domains": [ + * { + * "FieldName": "Basic teste", + * "MaxCaracters": "", + * "DomainValues": "[1-2]#9[1-1][1]basic;#11[0-1][1]basic" + * }, + * { + * "FieldName": "teste", + * "MaxCaracters": "", + * "DomainValues": "[0-10]#8[0-3][0]medium;#9[0-3][0]medium;#10[0-3][0]medium;#11[0-3][0]medium;#36[0-3][0]medium;#37[0-3][0]medium;#38[0-3][0]medium" + * } + * ] + * }, + * { + * "Id": 9, + * "Name": "vtex.subscription.teste", + * "IsRequired": false, + * "IsActive": true, + * "Domains": [] + * }, + * { + * "Id": 10, + * "Name": "Montagens", + * "IsRequired": false, + * "IsActive": true, + * "Domains": [] + * }, + * { + * "Id": 11, + * "Name": "vtex.subscription.subscription", + * "IsRequired": false, + * "IsActive": true, + * "Domains": [ + * { + * "FieldName": "vtex.subscription.key.frequency", + * "MaxCaracters": "15", + * "DomainValues": "1 month" + * }, + * { + * "FieldName": "vtex.subscription.key.purchaseday", + * "MaxCaracters": "15", + * "DomainValues": "1,15,28" + * } + * ] + * }, + * { + * "Id": 12, + * "Name": "T-Shirt Customization", + * "IsRequired": false, + * "IsActive": true, + * "Domains": [ + * { + * "FieldName": "T-Shirt Name", + * "MaxCaracters": "15", + * "DomainValues": "[]" + * } + * ] + * } + * ] + * } + * ``` + */ +"GET /api/catalog/pvt/attachments": { +response: { +/** + * Current page of results. + */ +Page?: number +/** + * Total number of results in the current page. + */ +Size?: number +/** + * Total number of rows with results. + */ +TotalRows?: number +/** + * Total number of pages with results. + */ +TotalPage?: number +/** + * Array containing attachments data. + */ +Data?: AttachmentResponse[] +} +} +/** + * Retrieves a list of all collections matching a filter. + */ +"GET /api/catalog_system/pvt/collection/search": { +searchParams: { +/** + * Page number. + */ +page: number +/** + * Number of the items of the page. + */ +pageSize: number +/** + * Defines if the items of the page are in ascending order. + */ +orderByAsc: boolean +} +} +/** + * Retrieves a list of Collection IDs of the inactive Collections. + */ +"GET /api/catalog/pvt/collection/inactive": { + +} +/** + * Creates a new collection. + */ +"POST /api/catalog/pvt/collection/": { +body: { +/** + * Collection's Name. + */ +Name: string +/** + * Collection's description for internal use, with the collection's details. It will not be used for search engines. + */ +Description: string +/** + * Option making the collection searchable in the store. + */ +Searchable: boolean +/** + * Option if you want the collection to highlight specific products using a tag. + */ +Highlight: boolean +/** + * Collection start date and time. If a future date and time are set, the collection will have a scheduled status. + */ +DateFrom: string +/** + * Collection end date and time. + */ +DateTo: string +} +} +/** + * Retrieves a list of collections matching a filter. + */ +"GET /api/catalog_system/pvt/collection/search/:searchTerms": { +searchParams: { +/** + * Page number. + */ +page?: number +/** + * Number of the items of the page. + */ +pageSize?: number +/** + * Defines if the items of the page are in ascending order. + */ +orderByAsc?: boolean +} +} +/** + * Imports a sample of the imported XLS file. You need to save the response file to your device. + */ +"GET /api/catalog/pvt/collection/stockkeepingunit/importfileexample": { + +} +/** + * Adds products to a collection from the request body file. The file must be an imported template. + */ +"POST /api/catalog/pvt/collection/:collectionId/stockkeepingunit/importinsert": { + +} +/** + * Removes products from a collection from the request body file. The file must be an imported template. + */ +"POST /api/catalog/pvt/collection/:collectionId/stockkeepingunit/importexclude": { + +} +/** + * Retrieves information about the products from a collection. + */ +"GET /api/catalog/pvt/collection/:collectionId/products": { +searchParams: { +/** + * Page number. + */ +page?: number +/** + * Number of the items of the page. + */ +pageSize?: number +/** + * Filter used to refine the Collection's products. + */ +Filter?: string +/** + * Defines if the status of the product is active or not. + */ +Active?: boolean +/** + * Defines if the product is visible on the store or not. + */ +Visible?: boolean +/** + * Product's Category unique identifier. + */ +CategoryId?: number +/** + * Product's Brand unique identifier. + */ +BrandId?: number +/** + * Product's Supplier unique identifier. + */ +SupplierId?: number +/** + * Product's Trade Policy unique identifier. + */ +SalesChannelId?: number +/** + * Product past release date. + */ +ReleaseFrom?: string +/** + * Product future release date. + */ +ReleaseTo?: string +/** + * Product Specification Field Value. You must also fill in `SpecificationFieldId` to use this parameter. + */ +SpecificationProduct?: string +/** + * Product Specification Field unique identifier. + */ +SpecificationFieldId?: number +} +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Retrieves general information of a Collection. + * + * ## Response body example + * + * ```json + * { + * "Id": 159, + * "Name": "Winter", + * "Description": null, + * "Searchable": false, + * "Highlight": false, + * "DateFrom": "2021-09-27T10:47:00", + * "DateTo": "2027-09-27T10:47:00", + * "TotalProducts": 0, + * "Type": "Manual" + * } + * ``` + */ +"GET /api/catalog/pvt/collection/:collectionId": { +response: { +/** + * Collection ID. + */ +Id?: number +/** + * Collection Name. + */ +Name?: string +/** + * Collection description. + */ +Description?: (null | string) +/** + * Defines if the Collection is searchable or not. + */ +Searchable?: boolean +/** + * Defines if the Collection is highlighted or not. + */ +Highlight?: boolean +/** + * Initial value date for the Collection. + */ +DateFrom?: string +/** + * Final value date for the Collection. + */ +DateTo?: string +/** + * Total quantity of products in the collection. + */ +TotalProducts?: number +/** + * Type of collection. + */ +Type?: string +} +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Updates a previously created Collection. + * ## Request body example + * + * ```json + * { + * "Name": "Winter", + * "Searchable": false, + * "Highlight": false, + * "DateFrom": "2021-09-27T10:47:00", + * "DateTo": "2027-09-27T10:47:00" + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 159, + * "Name": "Winter", + * "Description": null, + * "Searchable": false, + * "Highlight": false, + * "DateFrom": "2021-09-27T10:47:00", + * "DateTo": "2027-09-27T10:47:00", + * "TotalProducts": 0, + * "Type": "Manual" + * } + * ``` + */ +"PUT /api/catalog/pvt/collection/:collectionId": { +body: { +/** + * Collection Name. + */ +Name: string +/** + * Defines if the Collection is searchable or not. + */ +Searchable: boolean +/** + * Defines if the Collection is highlighted or not + */ +Highlight: boolean +/** + * Initial value date for the Collection. + */ +DateFrom: string +/** + * Final value date for the Collection. + */ +DateTo: string +} +response: { +/** + * Collection ID. + */ +Id?: number +/** + * Collection Name. + */ +Name?: string +/** + * Collection description. + */ +Description?: (null | string) +/** + * Defines if the Collection is searchable or not. + */ +Searchable?: boolean +/** + * Defines if the Collection is highlighted or not. + */ +Highlight?: boolean +/** + * Initial value date for the Collection. + */ +DateFrom?: string +/** + * Final value date for the Collection. + */ +DateTo?: string +/** + * Total quantity of products in the collection. + */ +TotalProducts?: number +/** + * Type of collection. + */ +Type?: string +} +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Deletes a previously existing Collection. + */ +"DELETE /api/catalog/pvt/collection/:collectionId": { + +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Creates a new Collection. + * ## Request body example + * + * ```json + * { + * "Name": "Winter", + * "Searchable": false, + * "Highlight": false, + * "DateFrom": "2021-09-27T10:47:00", + * "DateTo": "2027-09-27T10:47:00" + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 159, + * "Name": "Winter", + * "Description": null, + * "Searchable": false, + * "Highlight": false, + * "DateFrom": "2021-09-27T10:47:00", + * "DateTo": "2027-09-27T10:47:00", + * "TotalProducts": 0, + * "Type": "Manual" + * } + * ``` + */ +"POST /api/catalog/pvt/collection": { +body: { +/** + * Collection Name. + */ +Name: string +/** + * Defines if the Collection is searchable or not. + */ +Searchable: boolean +/** + * Defines if the Collection is highlighted or not. + */ +Highlight: boolean +/** + * Initial value date for the Collection. + */ +DateFrom: string +/** + * Final value date for the Collection. + */ +DateTo: string +} +response: { +/** + * Collection ID. + */ +Id?: number +/** + * Collection Name. + */ +Name?: string +/** + * Collection description. + */ +Description?: (null | string) +/** + * Defines if the Collection is searchable or not. + */ +Searchable?: boolean +/** + * Defines if the Collection is highlighted or not. + */ +Highlight?: boolean +/** + * Initial value date for the Collection. + */ +DateFrom?: string +/** + * Final value date for the Collection. + */ +DateTo?: string +/** + * Total quantity of products in the collection. + */ +TotalProducts?: number +/** + * Type of collection. + */ +Type?: string +} +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Retrieves all Subcollections given a Collection ID. A Subcollection is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection. + * ## Response body example + * + * ```json + * [ + * { + * "Id": 12, + * "CollectionId": 149, + * "Name": "Subcollection", + * "Type": "Inclusive", + * "PreSale": false, + * "Release": true + * }, + * { + * "Id": 13, + * "CollectionId": 149, + * "Name": "Test", + * "Type": "Exclusive", + * "PreSale": true, + * "Release": false + * }, + * { + * "Id": 14, + * "CollectionId": 149, + * "Name": "asdfghj", + * "Type": "Inclusive", + * "PreSale": false, + * "Release": false + * } + * ] + * ``` + */ +"GET /api/catalog/pvt/collection/:collectionId/subcollection": { +response: { +/** + * Subcollection ID. + */ +Id?: number +/** + * Collection ID. + */ +CollectionId?: number +/** + * Subcollection Name. + */ +Name?: string +/** + * Either `“Exclusive”` (all the products contained in it will not be used) or `“Inclusive”` (all the products contained in it will be used). + */ +Type?: string +/** + * Defines if the collection is on PreSale. + */ +PreSale?: boolean +/** + * Defines if the collection is a new released one. + */ +Release?: boolean +}[] +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Retrieves information about a Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection. + * ## Response body example + * + * ```json + * { + * "Id": 13, + * "CollectionId": 149, + * "Name": "Test", + * "Type": "Exclusive", + * "PreSale": true, + * "Release": false + * } + * ``` + */ +"GET /api/catalog/pvt/subcollection/:subCollectionId": { +response: { +/** + * Subcollection ID. + */ +Id?: number +/** + * Collection ID. + */ +CollectionId?: number +/** + * Subcollection Name. + */ +Name?: string +/** + * Either `“Exclusive”` (all the products contained in it will not be used) or `“Inclusive”` (all the products contained in it will be used). + */ +Type?: string +/** + * Defines if the collection is on PreSale. + */ +PreSale?: boolean +/** + * Defines if the collection is a new released one. + */ +Release?: boolean +} +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Updates a previously created Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection. + * + * ## Request or response body example + * + * ```json + * { + * "CollectionId": 149, + * "Name": "Test", + * "Type": "Exclusive", + * "PreSale": true, + * "Release": false + * } + * ``` + */ +"PUT /api/catalog/pvt/subcollection/:subCollectionId": { +body: { +/** + * Collection ID. + */ +CollectionId: number +/** + * Subcollection Name. + */ +Name: string +/** + * Either `“Exclusive”` (all the products contained in it will not be used) or `“Inclusive”` (all the products contained in it will be used). + */ +Type: string +/** + * Defines PreSale date. + */ +PreSale: boolean +/** + * Defines Release date. + */ +Release: boolean +} +response: { +/** + * Subcollection ID. + */ +Id?: number +/** + * Collection ID. + */ +CollectionId?: number +/** + * Subcollection Name. + */ +Name?: string +/** + * Either `“Exclusive”` (all the products contained in it will not be used) or `“Inclusive”` (all the products contained in it will be used). + */ +Type?: string +/** + * Defines if the collection is on PreSale. + */ +PreSale?: boolean +/** + * Defines if the collection is a new released one. + */ +Release?: boolean +} +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Deletes a previously created Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection. + */ +"DELETE /api/catalog/pvt/subcollection/:subCollectionId": { + +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Creates a new Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection. A Subcollection can be either “Exclusive” (all the products contained in it will not be used) or “Inclusive” (all the products contained in it will be used). + * ## Request body example + * + * ```json + * { + * "CollectionId": 149, + * "Name": "Test", + * "Type": "Exclusive", + * "PreSale": true, + * "Release": false + * } + * ``` + * ## Response body example + * + * ```json + * { + * "Id": 13, + * "CollectionId": 149, + * "Name": "Test", + * "Type": "Exclusive", + * "PreSale": true, + * "Release": false + * } + * ``` + */ +"POST /api/catalog/pvt/subcollection": { +body: { +/** + * SubCollection ID. + */ +CollectionId: number +/** + * SubCollection Name. + */ +Name: string +/** + * Either `“Exclusive”` (all the products contained in it will not be used) or `“Inclusive”` (all the products contained in it will be used). + */ +Type: string +/** + * Defines PreSale date. + */ +PreSale: boolean +/** + * Defines Release date. + */ +Release: boolean +} +response: { +/** + * Subcollection ID. + */ +Id?: number +/** + * Collection ID. + */ +CollectionId?: number +/** + * Subcollection Name. + */ +Name?: string +/** + * Either `“Exclusive”` (all the products contained in it will not be used) or `“Inclusive”` (all the products contained in it will be used). + */ +Type?: string +/** + * Defines if the collection is on PreSale. + */ +PreSale?: boolean +/** + * Defines if the collection is a new released one. + */ +Release?: boolean +} +} +/** + * >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L). + * + * Edits the position of an SKU that already exists in the Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection. + * ## Request body example + * + * ```json + * { + * "skuId": 1, + * "position": 1, + * "subCollectionId": 17 + * } + * ``` + */ +"POST /api/catalog/pvt/collection/:collectionId/position": { +body: { +/** + * SKU ID. + */ +skuId: number +/** + * SKU position. + */ +position: number +/** + * Subcollection ID. + */ +subCollectionId: number +} +} +/** + * Retrieves information of a Product or SKU Specification. + * ## Response body example + * + * ```json + * { + * "Id": 88, + * "FieldTypeId": 1, + * "CategoryId": 4, + * "FieldGroupId": 20, + * "Name": "Material", + * "Description": "Composition of the product.", + * "Position": 1, + * "IsFilter": true, + * "IsRequired": true, + * "IsOnProductDetails": false, + * "IsStockKeepingUnit": false, + * "IsWizard": false, + * "IsActive": true, + * "IsTopMenuLinkActive": false, + * "IsSideMenuLinkActive": true, + * "DefaultValue": "Cotton" + * } + * ``` + * + */ +"GET /api/catalog/pvt/specification/:specificationId": { +response: { +/** + * Created Specification’s ID. + */ +Id: number +/** + * Field Type can be `1 - Text`, `2 - Multi-Line Text`, `4 - Number`, `5 - Combo`, `6 - Radio`, `7 - Checkbox`, `8 - Indexed Text`, `9 - Indexed Multi-Line Text`. + */ +FieldTypeId: number +/** + * Specification Category ID. + */ +CategoryId: number +/** + * Numerical ID of the Group of Specifications that contains the new Specification. + */ +FieldGroupId: number +/** + * Specification name. Limited to 100 characters. + */ +Name: string +/** + * Specification Description. + */ +Description: string +/** + * The current Specification's position in comparison to the other Specifications. + */ +Position: number +/** + * Defines if the Specification can be used as a Filter. + */ +IsFilter: boolean +/** + * Defines if the Specification is required or not. + */ +IsRequired: boolean +/** + * Defines if the Specification will be shown on the Product screen in the specification area. + */ +IsOnProductDetails: boolean +/** + * Defines if the Specification is applied to a specific SKU. + */ +IsStockKeepingUnit: boolean +/** + * @deprecated + * Deprecated + */ +IsWizard: boolean +/** + * Defines if the Specification is active or not. + */ +IsActive: boolean +/** + * Defines if the Specification is shown in the main menu of the site. + */ +IsTopMenuLinkActive: boolean +/** + * Defines if the Specification is shown in the side menu. + */ +IsSideMenuLinkActive: boolean +/** + * Specification Default Value. + */ +DefaultValue: (null | string) +} +} +/** + * Updates a Product Specification or SKU Specification. + * + * >⚠️ It is not possible to edit `FieldTypeId`, `CategoryId`, `FieldGroupId` or `IsStockKeepingUnit` in this API call. + * + * ## Request body example + * + * ```json + * { + * "FieldTypeId": 1, + * "CategoryId": 4, + * "FieldGroupId": 20, + * "Name": "Material", + * "Description": "Composition of the product.", + * "Position": 1, + * "IsFilter": true, + * "IsRequired": true, + * "IsOnProductDetails": false, + * "IsStockKeepingUnit": false, + * "IsActive": true, + * "IsTopMenuLinkActive": false, + * "IsSideMenuLinkActive": true, + * "DefaultValue": "Leather" + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 88, + * "FieldTypeId": 1, + * "CategoryId": 4, + * "FieldGroupId": 20, + * "Name": "Material", + * "Description": "Composition of the product.", + * "Position": 1, + * "IsFilter": true, + * "IsRequired": true, + * "IsOnProductDetails": false, + * "IsStockKeepingUnit": false, + * "IsWizard": false, + * "IsActive": true, + * "IsTopMenuLinkActive": false, + * "IsSideMenuLinkActive": true, + * "DefaultValue": "Leather" + * } + * ``` + * + */ +"PUT /api/catalog/pvt/specification/:specificationId": { +body: { +/** + * Field Type can be `1 - Text`, `2 - Multi-Line Text`, `4 - Number`, `5 - Combo`, `6 - Radio`, `7 - Checkbox`, `8 - Indexed Text`, `9 - Indexed Multi-Line Text`. This information is not editable. + */ +FieldTypeId: number +/** + * Specification Category ID. This information is not editable. + */ +CategoryId: number +/** + * Numerical ID of the Group of Specifications that contains the new Specification. This information is not editable. + */ +FieldGroupId: number +/** + * Specification name. Limited to 100 characters. + */ +Name: string +/** + * Specification Description. + */ +Description: string +/** + * The current Specification's position in comparison to the other Specifications. + */ +Position: number +/** + * Defines if the Specification can be used as a Filter. + */ +IsFilter: boolean +/** + * Defines if the Specification is required or not. + */ +IsRequired: boolean +/** + * Defines if the Specification will be shown on the Product screen in the specification area. + */ +IsOnProductDetails: boolean +/** + * Defines if the Specification is applied to a specific SKU. This information is not editable. + */ +IsStockKeepingUnit: boolean +/** + * @deprecated + * Deprecated + */ +IsWizard: boolean +/** + * Defines if the Specification is active or not. + */ +IsActive: boolean +/** + * Defines if the Specification is shown in the main menu of the site. + */ +IsTopMenuLinkActive: boolean +/** + * Defines if the Specification is shown in the side menu. + */ +IsSideMenuLinkActive: boolean +/** + * Specification Default Value. + */ +DefaultValue: string +} +response: { +/** + * Specification ID. + */ +Id?: number +/** + * Field Type ID can be `1 - Text`, `2 - Multi-Line Text`, `4 - Number`, `5 - Combo`, `6 - Radio`, `7 - Checkbox`, `8 - Indexed Text`, `9 - Indexed Multi-Line Text`. + */ +FieldTypeId?: number +/** + * Category ID associated with this specification. + */ +CategoryId?: number +/** + * ID of the group of specifications that contains the new specification. + */ +FieldGroupId?: number +/** + * Specification name. Limited to 100 characters. + */ +Name?: string +/** + * @deprecated + */ +Description?: (null | string) +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - This position number is used in ordering the specifications both in the navigation menu and in the specification listing on the product page. + * + */ +Position?: number +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar. + * + */ +IsFilter?: boolean +/** + * Makes the specification mandatory (`true`) or optional (`false`). + */ +IsRequired?: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal -If specification is visible on the product page. + * + */ +IsOnProductDetails?: boolean +/** + * If `true`, it will be added as a SKU specification. If `false`, it will be added as a product specification field. + */ +IsStockKeepingUnit?: boolean +/** + * @deprecated + */ +IsWizard?: (null | boolean) +/** + * Enable (`true`) or disable (`false`) specification. + */ +IsActive?: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To make the specification visible in the store's upper menu. + * + */ +IsTopMenuLinkActive?: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To make the specification field clickable in the search navigation bar. + * + */ +IsSideMenuLinkActive?: boolean +/** + * Specification default value. + */ +DefaultValue?: string +} +} +/** + * Creates a new Product or SKU Specification. + * ## Request body example + * + * ```json + * { + * "FieldTypeId": 1, + * "CategoryId": 4, + * "FieldGroupId": 20, + * "Name": "Material", + * "Description": "Composition of the product.", + * "Position": 1, + * "IsFilter": true, + * "IsRequired": true, + * "IsOnProductDetails": false, + * "IsStockKeepingUnit": false, + * "IsActive": true, + * "IsTopMenuLinkActive": false, + * "IsSideMenuLinkActive": true, + * "DefaultValue": "Cotton" + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 88, + * "FieldTypeId": 1, + * "CategoryId": 4, + * "FieldGroupId": 20, + * "Name": "Material", + * "Description": "Composition of the product.", + * "Position": 1, + * "IsFilter": true, + * "IsRequired": true, + * "IsOnProductDetails": false, + * "IsStockKeepingUnit": false, + * "IsWizard": false, + * "IsActive": true, + * "IsTopMenuLinkActive": false, + * "IsSideMenuLinkActive": true, + * "DefaultValue": "Cotton" + * } + * ``` + * + */ +"POST /api/catalog/pvt/specification": { +body: { +/** + * Field Type ID can be `1 - Text`, `2 - Multi-Line Text`, `4 - Number`, `5 - Combo`, `6 - Radio`, `7 - Checkbox`, `8 - Indexed Text`, `9 - Indexed Multi-Line Text`. + */ +FieldTypeId: number +/** + * Category ID associated with this specification. + */ +CategoryId?: number +/** + * ID of the group of specifications that contains the new specification. + */ +FieldGroupId: number +/** + * Specification name. Limited to 100 characters. + */ +Name: string +/** + * @deprecated + */ +Description?: (null | string) +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - This position number is used in ordering the specifications both in the navigation menu and in the specification listing on the product page. + * + */ +Position?: number +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar. + * + */ +IsFilter?: boolean +/** + * Makes the specification mandatory (`true`) or optional (`false`). + */ +IsRequired?: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal -If specification is visible on the product page. + * + */ +IsOnProductDetails?: boolean +/** + * If `true`, it will be added as a SKU specification. If `false`, it will be added as a product specification field. + */ +IsStockKeepingUnit?: boolean +/** + * @deprecated + */ +IsWizard?: (null | boolean) +/** + * Enable (`true`) or disable (`false`) specification. + */ +IsActive?: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To make the specification visible in the store's upper menu. + * + */ +IsTopMenuLinkActive?: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To make the specification field clickable in the search navigation bar. + * + */ +IsSideMenuLinkActive?: boolean +/** + * Specification default value. + */ +DefaultValue?: string +} +response: { +/** + * Specification ID. + */ +Id?: number +/** + * Field Type ID can be `1 - Text`, `2 - Multi-Line Text`, `4 - Number`, `5 - Combo`, `6 - Radio`, `7 - Checkbox`, `8 - Indexed Text`, `9 - Indexed Multi-Line Text`. + */ +FieldTypeId?: number +/** + * Category ID associated with this specification. + */ +CategoryId?: number +/** + * ID of the group of specifications that contains the new specification. + */ +FieldGroupId?: number +/** + * Specification name. Limited to 100 characters. + */ +Name?: string +/** + * @deprecated + */ +Description?: (null | string) +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - This position number is used in ordering the specifications both in the navigation menu and in the specification listing on the product page. + * + */ +Position?: number +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar. + * + */ +IsFilter?: boolean +/** + * Makes the specification mandatory (`true`) or optional (`false`). + */ +IsRequired?: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal -If specification is visible on the product page. + * + */ +IsOnProductDetails?: boolean +/** + * If `true`, it will be added as a SKU specification. If `false`, it will be added as a product specification field. + */ +IsStockKeepingUnit?: boolean +/** + * @deprecated + */ +IsWizard?: (null | boolean) +/** + * Enable (`true`) or disable (`false`) specification. + */ +IsActive?: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To make the specification visible in the store's upper menu. + * + */ +IsTopMenuLinkActive?: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To make the specification field clickable in the search navigation bar. + * + */ +IsSideMenuLinkActive?: boolean +/** + * Specification default value. + */ +DefaultValue?: string +} +} +/** + * Retrieves details from a specification field by this field's ID. + * >⚠️ This is a legacy endpoint. We recommend using [Get Specification](https://developers.vtex.com/vtex-rest-api/reference/get_api-catalog-pvt-specification-specificationid) instead. + * + * ## Response body example + * + * ```json + * { + * "Name": "Material", + * "CategoryId": 4, + * "FieldId": 88, + * "IsActive": true, + * "IsRequired": true, + * "FieldTypeId": 1, + * "FieldTypeName": "Texto", + * "FieldValueId": null, + * "Description": "Composition of the product.", + * "IsStockKeepingUnit": false, + * "IsFilter": true, + * "IsOnProductDetails": false, + * "Position": 1, + * "IsWizard": false, + * "IsTopMenuLinkActive": false, + * "IsSideMenuLinkActive": true, + * "DefaultValue": null, + * "FieldGroupId": 20, + * "FieldGroupName": "Clothes specifications" + * } + * ``` + * + * + */ +"GET /api/catalog_system/pub/specification/fieldGet/:fieldId": { +response: { +/** + * Specification field name. + */ +Name?: string +/** + * Specification field ID. + */ +FieldId?: number +/** + * Enable (`true`) or disable (`false`) specification. + */ +IsActive?: boolean +/** + * Makes the specification mandatory (`true`) or optional (`false`). + */ +IsRequired?: boolean +/** + * Field Type ID can be `1 - Text`, `2 - Multi-Line Text`, `4 - Number`, `5 - Combo`, `6 - Radio`, `7 - Checkbox`, `8 - Indexed Text`, `9 - Indexed Multi-Line Text`. + */ +FieldTypeId?: number +/** + * Field Type name, which can be `Text`, `Multi-Line Text`, `Number`, `Combo`, `Radio`, `Checkbox`, `Indexed Text` or `Indexed Multi-Line Text`. + */ +FieldTypeName?: string +/** + * Specification value ID. + */ +FieldValueId?: (null | number) +/** + * @deprecated + */ +Description?: (null | string) +/** + * If `true`, it will be added as a SKU specification. If `false`, it will be added as a product specification field. + */ +IsStockKeepingUnit?: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar. + * + */ +IsFilter?: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal -If specification is visible on the product page. + * + */ +IsOnProductDetails?: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - This position number is used in ordering the specifications both in the navigation menu and in the specification listing on the product page. + * + */ +Position?: number +/** + * @deprecated + */ +IsWizard?: (null | boolean) +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To make the specification visible in the store's upper menu. + * + */ +IsTopMenuLinkActive?: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To make the specification field clickable in the search navigation bar. + * + */ +IsSideMenuLinkActive?: boolean +/** + * Specification default value. + */ +DefaultValue?: (null | string) +/** + * ID of the group of specifications that contains the new specification. + */ +FieldGroupId?: number +/** + * Specification Field Group Name. + */ +FieldGroupName?: string +} +} +/** + * Creates a specification field in a category. + * >⚠️ This is a legacy endpoint. We recommend using [Create Specification](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-post-specification) instead. + * + * ## Request body example + * + * ```json + * { + * "Name": "Material", + * "CategoryId": 4, + * "FieldId": 88, + * "IsActive": true, + * "IsRequired": true, + * "FieldTypeId": 1, + * "FieldValueId": 1, + * "IsStockKeepingUnit": false, + * "Description": "Composition of the product.", + * "IsFilter": true, + * "IsOnProductDetails": false, + * "Position": 1, + * "IsWizard": false, + * "IsTopMenuLinkActive": true, + * "IsSideMenuLinkActive": true, + * "DefaultValue": null, + * "FieldGroupId": 20, + * "FieldGroupName": "Clothes specifications" + * } + * ``` + * + * ## Response body example + * + * ```json + * 89 + * ``` + */ +"POST /api/catalog_system/pvt/specification/field": { +body: SpecificationsInsertFieldRequest +/** + * Specification field ID. + */ +response: number +} +/** + * Updates a specification field in a category. + * >⚠️ This is a legacy endpoint. We recommend using [Update Specification](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-put-specification) instead. + * + * ## Request body example + * + * ```json + * { + * "FieldId": 89, + * "Name": "Material", + * "CategoryId": 4, + * "IsActive": true, + * "IsRequired": true, + * "FieldTypeId": 1, + * "Description": "Composition of the product.", + * "IsStockKeepingUnit": false, + * "IsFilter": true, + * "IsOnProductDetails": true, + * "Position": 1, + * "IsWizard": false, + * "IsTopMenuLinkActive": false, + * "IsSideMenuLinkActive": false, + * "DefaultValue": "Cotton", + * "FieldGroupId": 20, + * "FieldGroupName": "Clothes specifications" + * } + * ``` + * + * ## Response body example + * + * ```json + * 89 + * ``` + */ +"PUT /api/catalog_system/pvt/specification/field": { +body: SpecificationsInsertFieldUpdateRequest +/** + * Specification field ID. + */ +response: number +} +/** + * Retrieves details from a specification field's value by this value's ID. + * >⚠️ This is a legacy endpoint. We recommend using [Get Specification Value](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-specification-value-id) instead. + * + * ## Response body example + * + * ```json + * { + * "FieldValueId": 143, + * "FieldId": 34, + * "Name": "TesteInsert", + * "Text": "Value Description", + * "IsActive": true, + * "Position": 100 + * } + * ``` + */ +"GET /api/catalog_system/pvt/specification/fieldValue/:fieldValueId": { +response: { +/** + * Specification Field Value ID. + */ +FieldValueId?: number +/** + * Specification Field ID. + */ +FieldId?: number +/** + * Specification Field Value Name. + */ +Name?: string +/** + * Specification Field Value Description. + */ +Text?: string +/** + * Defines if the Specification Field Value is active (`true`) or inactive (`false`). + */ +IsActive?: boolean +/** + * Specification Field Value Position. + */ +Position?: number +} +} +/** + * Gets a list of all specification values from a Specification Field by this field's ID. + * + * ## Response body example + * + * ```json + * [ + * { + * "FieldValueId": 52, + * "Value": "0 a 6 meses", + * "IsActive": true, + * "Position": 1 + * }, + * { + * "FieldValueId": 53, + * "Value": "1 a 2 anos", + * "IsActive": true, + * "Position": 4 + * }, + * { + * "FieldValueId": 54, + * "Value": "3 a 4 anos", + * "IsActive": true, + * "Position": 3 + * }, + * { + * "FieldValueId": 55, + * "Value": "5 a 6 anos", + * "IsActive": true, + * "Position": 2 + * }, + * { + * "FieldValueId": 56, + * "Value": "7 a 8 anos", + * "IsActive": true, + * "Position": 5 + * }, + * { + * "FieldValueId": 57, + * "Value": "9 a 10 anos", + * "IsActive": true, + * "Position": 6 + * }, + * { + * "FieldValueId": 58, + * "Value": "Acima de 10 anos", + * "IsActive": true, + * "Position": 7 + * } + * ] + * ``` + */ +"GET /api/catalog_system/pub/specification/fieldvalue/:fieldId": { +response: GetSpecFieldValue[] +} +/** + * Creates a specification field value by the specification field's ID. + * >⚠️ This is a legacy endpoint. We recommend using [Create Specification Value](https://developers.vtex.com/docs/api-reference/catalog-api#post-/api/catalog/pvt/specificationvalue) instead. + * + * + * ## Request body example + * + * ```json + * { + * "FieldId": 34, + * "Name": "Cotton", + * "Text": "Cotton fibers", + * "IsActive": true, + * "Position": 100 + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "FieldValueId": 143, + * "FieldId": 34, + * "Name": "Cotton", + * "Text": "Cotton fibers", + * "IsActive": true, + * "Position": 100 + * } + * ``` + */ +"POST /api/catalog_system/pvt/specification/fieldValue": { +body: SpecificationsInsertFieldValueRequest +response: { +/** + * Specification Field Value ID. + */ +FieldValueId?: number +/** + * Specification Field ID. + */ +FieldId?: number +/** + * Specification Field Value Name. + */ +Name?: string +/** + * Specification Field Value Description. + */ +Text?: string +/** + * Defines if the Specification Field Value is active (`true`) or inactive (`false`). + */ +IsActive?: boolean +/** + * Specification Field Value Position. + */ +Position?: number +} +} +/** + * Updates a specification field value by the specification field's ID. + * >⚠️ This is a legacy endpoint. We recommend using [Update Specification Field Value](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-put-specification-value-id) instead. + * + * + * ## Request body example + * + * ```json + * { + * "FieldId": 1, + * "FieldValueId": 143, + * "Name": "Cotton", + * "Text": "Cotton fibers", + * "IsActive": true, + * "Position": 100 + * } + * ``` + * + * ## Response body example (200 OK) + * + * ```json + * "Field Value Updated" + * ``` + */ +"PUT /api/catalog_system/pvt/specification/fieldValue": { +body: SpecificationsUpdateFieldValueRequest +/** + * Status of the request. + */ +response: string +} +/** + * Retrieves general information about a Specification Value. + * ## Response body example + * + * ```json + * { + * "FieldValueId": 143, + * "FieldId": 34, + * "Name": "Cotton", + * "Text": "Cotton fibers", + * "IsActive": true, + * "Position": 100 + * } + * ``` + */ +"GET /api/catalog/pvt/specificationvalue/:specificationValueId": { +response: { +/** + * Specification Field Value ID. + */ +FieldValueId?: number +/** + * Specification Field ID. + */ +FieldId?: number +/** + * Specification Field Value Name. + */ +Name?: string +/** + * Specification Field Value Description. + */ +Text?: string +/** + * Defines if the Specification Field Value is active (`true`) or inactive (`false`). + */ +IsActive?: boolean +/** + * Specification Field Value Position. + */ +Position?: number +} +} +/** + * Updates a new Specification Value for a Category. + * ## Request body example + * + * ```json + * { + * "FieldId": 193, + * "Name": "Metal", + * "Text": null, + * "IsActive": true, + * "Position": 1 + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "FieldValueId": 360, + * "FieldId": 193, + * "Name": "Metal", + * "Text": null, + * "IsActive": true, + * "Position": 1 + * } + * ``` + */ +"PUT /api/catalog/pvt/specificationvalue/:specificationValueId": { +body: { +/** + * Specification ID associated with this specification value. + */ +FieldId: number +/** + * Specification Value name. + */ +Name: string +/** + * @deprecated + * Specification Value Text. + */ +Text?: (null | string) +/** + * Enable (`true`) or disable (`false`) specification value. + */ +IsActive?: boolean +/** + * The position of the value to be shown on product registration page (`/admin/Site/Produto.aspx`). + */ +Position?: number +} +response: { +/** + * Specification value ID. + */ +FieldValueId?: number +/** + * Specification field ID associated with this specification value. + */ +FieldId?: number +/** + * Specification Value name. + */ +Name?: string +/** + * @deprecated + * Specification Value Text. + */ +Text?: (null | string) +/** + * Enable (`true`) or disable (`false`) specification value. + */ +IsActive?: boolean +/** + * The position of the value to be shown on product registration page (`/admin/Site/Produto.aspx`). + */ +Position?: number +} +} +/** + * Creates a new Specification Value for a Category. + * ## Request body example + * + * ```json + * { + * "FieldId": 193, + * "Name": "Metal", + * "IsActive": true, + * "Position": 1 + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "FieldValueId": 360, + * "FieldId": 193, + * "Name": "Metal", + * "Text": null, + * "IsActive": true, + * "Position": 1 + * } + * ``` + */ +"POST /api/catalog/pvt/specificationvalue": { +body: { +/** + * Specification field ID associated with this specification value. + */ +FieldId: number +/** + * Specification Value name. + */ +Name: string +/** + * @deprecated + * Specification Value Text. + */ +Text?: (null | string) +/** + * Enable (`true`) or disable (`false`) specification value. + */ +IsActive?: boolean +/** + * The position of the value to be shown on product registration page (`/admin/Site/Produto.aspx`). + */ +Position?: number +} +response: { +/** + * Specification value ID. + */ +FieldValueId?: number +/** + * Specification field ID associated with this specification value. + */ +FieldId?: number +/** + * Specification Value name. + */ +Name?: string +/** + * @deprecated + * Specification Value Text. + */ +Text?: (null | string) +/** + * Enable (`true`) or disable (`false`) specification value. + */ +IsActive?: boolean +/** + * The position of the value to be shown on product registration page (`/admin/Site/Produto.aspx`). + */ +Position?: number +} +} +/** + * Retrieves a list of specification groups by the category ID. + * ## Response body example + * + * ```json + * [ + * { + * "CategoryId": 1, + * "Id": 5, + * "Name": "Materials", + * "Position": 2 + * }, + * { + * "CategoryId": 1, + * "Id": 6, + * "Name": "Sizes", + * "Position": 3 + * } + * ] + * ``` + */ +"GET /api/catalog_system/pvt/specification/groupbycategory/:categoryId": { +response: SpecificationsGroup[] +} +/** + * Retrieves details from a specification group by the ID of the group. + * ## Response body example + * + * ```json + * { + * "CategoryId": 1, + * "Id": 6, + * "Name": "Sizes", + * "Position": 3 + * } + * ``` + */ +"GET /api/catalog_system/pub/specification/groupGet/:groupId": { +response: SpecificationsGroup +} +/** + * Create a specification group. + * >⚠️ It is also possible to create a Specification Group by using an alternative legacy route: `/api/catalog_system/pvt/specification/group`. + * ## Request body example + * + * ```json + * { + * "CategoryId": 1, + * "Name": "Sizes" + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 6, + * "CategoryId": 1, + * "Name": "Sizes", + * "Position": 3 + * } + * ``` + */ +"POST /api/catalog/pvt/specificationgroup": { +body: SpecificationGroupInsertRequest +response: { +/** + * Specification Group ID. + */ +Id?: number +/** + * Category ID. + */ +CategoryId?: number +/** + * Specification Group Name. + */ +Name?: string +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - Specification Group Position. + */ +Position?: number +} +} +/** + * Update a specification group. + * >⚠️ It is also possible to update a Specification Group by using an alternative legacy route: `/api/catalog_system/pvt/specification/group`. + * + * ## Request and response body example + * + * ```json + * { + * "CategoryId": 1, + * "Id": 17, + * "Name": "NewGroupName", + * "Position": 1 + * } + * ``` + */ +"PUT /api/catalog/pvt/specificationgroup/:groupId": { +body: { +/** + * Category ID where the Specification Group is contained. + */ +CategoryId: number +/** + * Specification Group ID. + */ +Id: number +/** + * Specification Group Name. + */ +Name: string +/** + * Specification Group Position. + */ +Position: number +} +response: { +/** + * Category ID where the Specification Group is contained. + */ +CategoryId?: number +/** + * Specification Group ID. + */ +Id?: number +/** + * Specification Group Name. + */ +Name?: string +/** + * Specification Group Position. + */ +Position?: number +} +} +/** + * Retrieves general information about unmapped Specifications of a Seller's SKU in a Marketplace. + * ## Response body example + * + * ```json + * { + * "Id": 1010, + * "SkuId": 310119072, + * "SpecificationName": "size", + * "SpecificationValue": "Small" + * } + * ``` + */ +"GET /api/catalog/pvt/specification/nonstructured/:id": { +response: { +/** + * Non Structured Specification’s unique numerical identifier. + */ +Id?: number +/** + * SKU's unique numerical identifier. + */ +SkuId?: number +/** + * Name of the Non Structured Specification. + */ +SpecificationName?: string +/** + * Value of the Non Structured Specification. + */ +SpecificationValue?: string +}[] +} +/** + * Deletes unmapped Specifications of a Seller'S SKU in a Marketplace by its unique ID. + */ +"DELETE /api/catalog/pvt/specification/nonstructured/:id": { + +} +/** + * Gets general information about unmapped Specifications of a Seller's SKU in a Marketplace by SKU ID. + * ## Response body example + * + * ```json + * [ + * { + * "Id": 1010, + * "SkuId": 310119072, + * "SpecificationName": "size", + * "SpecificationValue": "Small" + * } + * ] + * ``` + */ +"GET /api/catalog/pvt/specification/nonstructured": { +searchParams: { +/** + * SKU’s unique numerical identifier. + */ +skuId: number +} +response: { +/** + * Non Structured Specification’s unique numerical identifier. + */ +Id?: number +/** + * SKU's unique numerical identifier. + */ +SkuId?: number +/** + * Name of the Non Structured Specification. + */ +SpecificationName?: string +/** + * Value of the Non Structured Specification. + */ +SpecificationValue?: string +}[] +} +/** + * Deletes unmapped Specifications of a Seller'S SKU in a Marketplace by SKU ID. + */ +"DELETE /api/catalog/pvt/specification/nonstructured": { +searchParams: { +/** + * SKU’s unique numerical identifier. + */ +skuId: number +} +} +/** + * Retrieves a list with details about the store's sales channels. + * ## Response body example + * + * ```json + * [ + * { + * "Id": 1, + * "Name": "Loja Principal", + * "IsActive": true, + * "ProductClusterId": null, + * "CountryCode": "BRA", + * "CultureInfo": "pt-BR", + * "TimeZone": "E. South America Standard Time", + * "CurrencyCode": "BRL", + * "CurrencySymbol": "R$", + * "CurrencyLocale": 1046, + * "CurrencyFormatInfo": { + * "CurrencyDecimalDigits": 1, + * "CurrencyDecimalSeparator": ",", + * "CurrencyGroupSeparator": ".", + * "CurrencyGroupSize": 3, + * "StartsWithCurrencySymbol": true + * }, + * "Origin": null, + * "Position": 2, + * "ConditionRule": null, + * "CurrencyDecimalDigits": 1 + * } + * ] + * ``` + */ +"GET /api/catalog_system/pvt/saleschannel/list": { +response: { +/** + * Sales Channel unique identifier. + */ +Id?: number +/** + * Sales Channel name. + */ +Name?: string +/** + * Defines if the Sales Channel is active (`true`) or not (`false`). + */ +IsActive?: boolean +/** + * Product Cluster ID, if the Sales Channel has releated Product Cluster. + */ +ProductClusterId?: (null | number) +/** + * Country Code in ISO 3166-1 alfa-3 Standard. + */ +CountryCode?: string +/** + * Language Country code in LCIDstring Standard. + */ +CultureInfo?: string +/** + * Name of Time Zone. + */ +TimeZone?: string +/** + * Currency Code in ISO 4217 standard. + */ +CurrencyCode?: string +/** + * Currency symbol. + */ +CurrencySymbol?: string +/** + * Currency Locale Code in LCID standard. + */ +CurrencyLocale?: number +/** + * Object with currency format. + */ +CurrencyFormatInfo?: { +/** + * Quantity of Currency Decimal Digits. + */ +CurrencyDecimalDigits?: number +/** + * Defines which Currency Decimal Separator will be applied. + */ +CurrencyDecimalSeparator?: string +/** + * Defines which Currency Group Separator will be applied. + */ +CurrencyGroupSeparator?: string +/** + * Define how many characters will be grouped. + */ +CurrencyGroupSize?: number +/** + * Defines if all prices will be initiated with Currency Symbol (`true`) or not (`false`). + */ +StartsWithCurrencySymbol?: boolean +} +/** + * Origin of products in the Sales Channel. + */ +Origin?: (null | string) +/** + * Defines the position on index. + */ +Position?: (null | number) +/** + * Defines what is the conditional rule to activate de Sales Channel. + */ +ConditionRule?: (null | string) +/** + * Quantity of Currency Decimal Digits. + */ +CurrencyDecimalDigits?: number +}[] +} +/** + * Retrieves a specific sales channel by its ID. + * + * ## Response body example + * + * ```json + * { + * "Id": 1, + * "Name": "Loja Principal", + * "IsActive": true, + * "ProductClusterId": null, + * "CountryCode": "BRA", + * "CultureInfo": "pt-BR", + * "TimeZone": "E. South America Standard Time", + * "CurrencyCode": "BRL", + * "CurrencySymbol": "R$", + * "CurrencyLocale": 1046, + * "CurrencyFormatInfo": { + * "CurrencyDecimalDigits": 1, + * "CurrencyDecimalSeparator": ",", + * "CurrencyGroupSeparator": ".", + * "CurrencyGroupSize": 3, + * "StartsWithCurrencySymbol": true + * }, + * "Origin": null, + * "Position": 2, + * "ConditionRule": null, + * "CurrencyDecimalDigits": 1 + * } + * ``` + */ +"GET /api/catalog_system/pub/saleschannel/:salesChannelId": { +response: { +/** + * Sales Channel unique identifier. + */ +Id?: number +/** + * Sales Channel name. + */ +Name?: string +/** + * Defines if the Sales Channel is active (`true`) or not (`false`). + */ +IsActive?: boolean +/** + * Product Cluster ID, if the Sales Channel has releated Product Cluster. + */ +ProductClusterId?: (null | number) +/** + * Country Code in ISO 3166-1 alfa-3 Standard. + */ +CountryCode?: string +/** + * Language Country code in LCIDstring Standard. + */ +CultureInfo?: string +/** + * Name of Time Zone. + */ +TimeZone?: string +/** + * Currency Code in ISO 4217 standard. + */ +CurrencyCode?: string +/** + * Currency symbol. + */ +CurrencySymbol?: string +/** + * Currency Locale Code in LCID standard. + */ +CurrencyLocale?: number +/** + * Object with currency format. + */ +CurrencyFormatInfo?: { +/** + * Quantity of Currency Decimal Digits. + */ +CurrencyDecimalDigits?: number +/** + * Defines which Currency Decimal Separator will be applied. + */ +CurrencyDecimalSeparator?: string +/** + * Defines which Currency Group Separator will be applied. + */ +CurrencyGroupSeparator?: string +/** + * Define how many characters will be grouped. + */ +CurrencyGroupSize?: number +/** + * Defines if all prices will be initiated with Currency Symbol (`true`) or not (`false`). + */ +StartsWithCurrencySymbol?: boolean +} +/** + * Origin of products in the Sales Channel. + */ +Origin?: (null | string) +/** + * Defines the position on index. + */ +Position?: (null | number) +/** + * Defines what is the conditional rule to activate de Sales Channel. + */ +ConditionRule?: (null | string) +/** + * Quantity of Currency Decimal Digits. + */ +CurrencyDecimalDigits?: number +} +} +/** + * Retrieves the seller's details by its ID. + */ +"GET /api/catalog_system/pvt/seller/list": { +searchParams: { +/** + * Trade policy ID. + */ +sc?: number +/** + * Seller type. + */ +sellerType?: number +/** + * If the seller is better scope. + */ +isBetterScope?: boolean +} +response: { +/** + * Code used to identify the seller. It is assigned by the marketplace. We recommend filling it in with the seller's account name. + */ +SellerId?: string +/** + * Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method. + */ +Name?: string +/** + * Email of the admin responsible for the seller. + */ +Email?: string +/** + * Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563). + */ +Description?: string +/** + * Text describing the exchange and return policy previously agreed between the marketplace and the seller. + */ +ExchangeReturnPolicy?: string +/** + * Text describing the delivery policy previously agreed between the marketplace and the seller. + */ +DeliveryPolicy?: string +/** + * Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller. + */ +UseHybridPaymentOptions?: boolean +/** + * Seller username. + */ +UserName?: (null | string) +/** + * Seller password. + */ +Password?: (null | string) +/** + * Text describing the security policy previously agreed between the marketplace and the seller. + */ +SecutityPrivacyPolicy?: string +/** + * Company registration number. + */ +CNPJ?: string +/** + * CSC identification. + */ +CSCIdentification?: string +/** + * Seller archive ID. + */ +ArchiveId?: (null | number) +/** + * Seller URL logo. + */ +UrlLogo?: (null | string) +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +ProductCommissionPercentage?: number +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +FreightCommissionPercentage?: number +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +CategoryCommissionPercentage?: string +/** + * URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don’t need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added. + */ +FulfillmentEndpoint?: (null | string) +/** + * URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`. + */ +CatalogSystemEndpoint?: string +/** + * If the selle is active (`true`) or not (`false`). + */ +IsActive?: boolean +/** + * Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-de-pagamento--6k5JidhYRUxileNolY2VLx) article to know more. + */ +MerchantName?: string +/** + * Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank. + */ +FulfillmentSellerId?: (null | number) +/** + * Seller type. + */ +SellerType?: number +/** + * Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI). + */ +IsBetterScope?: boolean +/** + * Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`. + */ +TrustPolicy?: string +} +} +/** + * Retrieves the seller's details by its ID. + */ +"GET /api/catalog_system/pvt/seller/:sellerId": { +/** + * Object with information of all sellers in the store. + */ +response: { +/** + * Code used to identify the seller. It is assigned by the marketplace. We recommend filling it in with the seller's account name. + */ +SellerId?: string +/** + * Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method. + */ +Name?: string +/** + * Email of the admin responsible for the seller. + */ +Email?: string +/** + * Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563). + */ +Description?: string +/** + * Text describing the exchange and return policy previously agreed between the marketplace and the seller. + */ +ExchangeReturnPolicy?: string +/** + * Text describing the delivery policy previously agreed between the marketplace and the seller. + */ +DeliveryPolicy?: string +/** + * Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller. + */ +UseHybridPaymentOptions?: boolean +/** + * Seller username. + */ +UserName?: (null | string) +/** + * Seller password. + */ +Password?: (null | string) +/** + * Text describing the security policy previously agreed between the marketplace and the seller. + */ +SecutityPrivacyPolicy?: string +/** + * Company registration number. + */ +CNPJ?: string +/** + * CSC identification. + */ +CSCIdentification?: string +/** + * Seller archive ID. + */ +ArchiveId?: (null | number) +/** + * Seller URL logo. + */ +UrlLogo?: string +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +ProductCommissionPercentage?: number +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +FreightCommissionPercentage?: number +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +CategoryCommissionPercentage?: string +/** + * URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don’t need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added. + */ +FulfillmentEndpoint?: (null | string) +/** + * URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`. + */ +CatalogSystemEndpoint?: string +/** + * If the selle is active (`true`) or not (`false`). + */ +IsActive?: boolean +/** + * Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-de-pagamento--6k5JidhYRUxileNolY2VLx) article to know more. + */ +MerchantName?: string +/** + * Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank. + */ +FulfillmentSellerId?: (null | number) +/** + * Seller type. + */ +SellerType?: number +/** + * Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI). + */ +IsBetterScope?: boolean +/** + * Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`. + */ +TrustPolicy?: string +} +} +/** + * Creates a new seller. + */ +"POST /api/catalog_system/pvt/seller": { +body: CreateSellerRequest +response: { +/** + * Code used to identify the seller. It is assigned by the marketplace. We recommend filling it in with the seller's account name. + */ +SellerId?: string +/** + * Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method. + */ +Name?: string +/** + * Email of the admin responsible for the seller. + */ +Email?: string +/** + * Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563). + */ +Description?: string +/** + * Text describing the exchange and return policy previously agreed between the marketplace and the seller. + */ +ExchangeReturnPolicy?: string +/** + * Text describing the delivery policy previously agreed between the marketplace and the seller. + */ +DeliveryPolicy?: string +/** + * Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller. + */ +UseHybridPaymentOptions?: boolean +/** + * Seller username. + */ +UserName?: (null | string) +/** + * Seller password. + */ +Password?: (null | string) +/** + * Text describing the security policy previously agreed between the marketplace and the seller. + */ +SecutityPrivacyPolicy?: string +/** + * Company registration number. + */ +CNPJ?: string +/** + * CSC identification. + */ +CSCIdentification?: string +/** + * Seller archive ID. + */ +ArchiveId?: (null | number) +/** + * Seller URL logo. + */ +UrlLogo?: (null | string) +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +ProductCommissionPercentage?: number +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +FreightCommissionPercentage?: number +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +CategoryCommissionPercentage?: string +/** + * URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don’t need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added. + */ +FulfillmentEndpoint?: (null | string) +/** + * URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`. + */ +CatalogSystemEndpoint?: string +/** + * If the selle is active (`true`) or not (`false`). + */ +IsActive?: boolean +/** + * Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-de-pagamento--6k5JidhYRUxileNolY2VLx) article to know more. + */ +MerchantName?: string +/** + * Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank. + */ +FulfillmentSellerId?: (null | number) +/** + * Seller type. + */ +SellerType?: number +/** + * Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI). + */ +IsBetterScope?: boolean +/** + * Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`. + */ +TrustPolicy?: string +} +} +/** + * Updates a seller. + */ +"PUT /api/catalog_system/pvt/seller": { +body: UpdateSellerRequest +response: { +/** + * Code used to identify the seller. It is assigned by the marketplace. We recommend filling it in with the seller's account name. + */ +SellerId?: string +/** + * Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method. + */ +Name?: string +/** + * Email of the admin responsible for the seller. + */ +Email?: string +/** + * Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563). + */ +Description?: string +/** + * Text describing the exchange and return policy previously agreed between the marketplace and the seller. + */ +ExchangeReturnPolicy?: string +/** + * Text describing the delivery policy previously agreed between the marketplace and the seller. + */ +DeliveryPolicy?: string +/** + * Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller. + */ +UseHybridPaymentOptions?: boolean +/** + * Seller username. + */ +UserName?: (null | string) +/** + * Seller password. + */ +Password?: (null | string) +/** + * Text describing the security policy previously agreed between the marketplace and the seller. + */ +SecutityPrivacyPolicy?: string +/** + * Company registration number. + */ +CNPJ?: string +/** + * CSC identification. + */ +CSCIdentification?: string +/** + * Seller archive ID. + */ +ArchiveId?: (null | number) +/** + * Seller URL logo. + */ +UrlLogo?: (null | string) +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +ProductCommissionPercentage?: number +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +FreightCommissionPercentage?: number +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +CategoryCommissionPercentage?: string +/** + * URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don’t need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added. + */ +FulfillmentEndpoint?: (null | string) +/** + * URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`. + */ +CatalogSystemEndpoint?: string +/** + * If the selle is active (`true`) or not (`false`). + */ +IsActive?: boolean +/** + * Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-de-pagamento--6k5JidhYRUxileNolY2VLx) article to know more. + */ +MerchantName?: string +/** + * Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank. + */ +FulfillmentSellerId?: (null | number) +/** + * Seller type. + */ +SellerType?: number +/** + * Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI). + */ +IsBetterScope?: boolean +/** + * Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`. + */ +TrustPolicy?: string +} +} +/** + * Retrieves the seller's details by its ID. + */ +"GET /api/catalog_system/pvt/sellers/:sellerId": { +/** + * Object with information of all sellers in the store. + */ +response: { +/** + * Code used to identify the seller. It is assigned by the marketplace. We recommend filling it in with the seller's account name. + */ +SellerId?: string +/** + * Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method. + */ +Name?: (null | string) +/** + * Email of the admin responsible for the seller. + */ +Email?: (null | string) +/** + * Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563). + */ +Description?: string +/** + * Text describing the exchange and return policy previously agreed between the marketplace and the seller. + */ +ExchangeReturnPolicy?: string +/** + * Text describing the delivery policy previously agreed between the marketplace and the seller. + */ +DeliveryPolicy?: string +/** + * Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller. + */ +UseHybridPaymentOptions?: boolean +/** + * Seller username. + */ +UserName?: (null | string) +/** + * Seller password. + */ +Password?: (null | string) +/** + * Text describing the security policy previously agreed between the marketplace and the seller. + */ +SecutityPrivacyPolicy?: string +/** + * Company registration number. + */ +CNPJ?: string +/** + * CSC identification. + */ +CSCIdentification?: string +/** + * Seller archive ID. + */ +ArchiveId?: (null | number) +/** + * Seller URL logo. + */ +UrlLogo?: string +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +ProductCommissionPercentage?: number +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +FreightCommissionPercentage?: number +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +CategoryCommissionPercentage?: string +/** + * URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don’t need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added. + */ +FulfillmentEndpoint?: (null | string) +/** + * URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`. + */ +CatalogSystemEndpoint?: string +/** + * If the selle is active (`true`) or not (`false`). + */ +IsActive?: boolean +/** + * Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-de-pagamento--6k5JidhYRUxileNolY2VLx) article to know more. + */ +MerchantName?: string +/** + * Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank. + */ +FulfillmentSellerId?: (null | number) +/** + * Seller type. + */ +SellerType?: number +/** + * Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI). + */ +IsBetterScope?: boolean +/** + * Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`. + */ +TrustPolicy?: string +} +} +/** + * Creates a new Supplier. + * ## Request body example + * + * ```json + * { + * "Name": "Supplier", + * "CorporateName": "TopStore", + * "StateInscription": "", + * "Cnpj": "33304981001272", + * "Phone": "3333333333", + * "CellPhone": "4444444444", + * "CorportePhone": "5555555555", + * "Email": "email@email.com", + * "IsActive": true + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 1, + * "Name": "Supplier", + * "CorporateName": "TopStore", + * "StateInscription": "", + * "Cnpj": "33304981001272", + * "Phone": "3333333333", + * "CellPhone": "4444444444", + * "CorportePhone": "5555555555", + * "Email": "email@email.com", + * "IsActive": true + * } + * ``` + */ +"POST /api/catalog/pvt/supplier": { +body: SupplierRequest +response: SupplierResponse +} +/** + * Updates general information of an existing Supplier. + * ## Request body example + * + * ```json + * { + * "Name": "Supplier", + * "CorporateName": "TopStore", + * "StateInscription": "", + * "Cnpj": "33304981001272", + * "Phone": "3333333333", + * "CellPhone": "4444444444", + * "CorportePhone": "5555555555", + * "Email": "email@email.com", + * "IsActive": true + * } + * ``` + * + * ## Response body example + * + * ```json + * { + * "Id": 1, + * "Name": "Supplier", + * "CorporateName": "TopStore", + * "StateInscription": "", + * "Cnpj": "33304981001272", + * "Phone": "3333333333", + * "CellPhone": "4444444444", + * "CorportePhone": "5555555555", + * "Email": "email@email.com", + * "IsActive": true + * } + * ``` + */ +"PUT /api/catalog/pvt/supplier/:supplierId": { +body: SupplierRequest +response: SupplierResponse +} +/** + * Deletes an existing Supplier. + */ +"DELETE /api/catalog/pvt/supplier/:supplierId": { + +} +/** + * Retrieves a list of Trade Policies associated to a Product based on the Product's ID. + * ## Response body example + * + * ```json + * [ + * { + * "ProductId": 1, + * "StoreId": 1 + * }, + * { + * "ProductId": 1, + * "StoreId": 2 + * }, + * { + * "ProductId": 1, + * "StoreId": 3 + * }, + * { + * "ProductId": 1, + * "StoreId": 4 + * } + * ] + * ``` + */ +"GET /api/catalog/pvt/product/:productId/salespolicy": { +response: { +/** + * Product’s unique numerical identifier. + */ +ProductId?: number +/** + * Trade policy's unique numerical identifier. + */ +StoreId?: number +}[] +} +/** + * Associates an existing Trade Policy with a Product. + */ +"POST /api/catalog/pvt/product/:productId/salespolicy/:tradepolicyId": { + +} +/** + * Disassociates a Trade Policy of a Product. + */ +"DELETE /api/catalog/pvt/product/:productId/salespolicy/:tradepolicyId": { + +} +/** + * Retrieves a list of SKU IDs of a Trade Policy. + * ## Response body example + * + * ```json + * [ + * 405380, + * 405381, + * 405382, + * 405383, + * 405384, + * 405385, + * 405386, + * 405387, + * 405388, + * 405389, + * 405390, + * 405391, + * 405392, + * 405393, + * 405394, + * 405395, + * 405396, + * 405397, + * 405398, + * 405399, + * 405400, + * 405556 + * ] + * ``` + */ +"GET /api/catalog_system/pvt/sku/stockkeepingunitidsbysaleschannel": { +searchParams: { +/** + * Trade Policy’s unique numerical identifier. + */ +sc: number +/** + * Page number. + */ +page?: number +/** + * Number of items in the page. + */ +pageSize?: number +/** + * If set as `false`, it allows the user to decide if the SKUs that are not assigned to a specific trade policy should be also returned. + */ +onlyAssigned?: boolean +} +/** + * List of SKU IDs of the Trade Policy. + */ +response: number[] +} +/** + * Retrieve details of a Product's Indexed Information in XML format. + * ## Response body example + * + * ```xml + * " + * \n + * \n + * + * true + * 0 + * 2 + * + * * + * + * instanceId:394dbdc8-b1f4-4dea-adfa-1ec104f3bfe1 + * productId:1 + * + * + * + * + * + * + * + * + * + * \n + * \n" + * ``` + */ +"GET /api/catalog_system/pvt/products/GetIndexedInfo/:productId": { + +} +/** + * Lists all commercial conditions on the store. + * ## Response body example + * + * ```json + * [ + * { + * "Id": 1, + * "Name": "Padrão", + * "IsDefault": true + * }, + * { + * "Id": 2, + * "Name": "Teste Fast", + * "IsDefault": false + * } + * ] + * ``` + */ +"GET /api/catalog_system/pvt/commercialcondition/list": { +response: { +/** + * Commercial condition ID. + */ +Id?: number +/** + * Commercial condition name. + */ +Name?: string +/** + * Defines if the commercial condition is default (`true`) or not (`false`). + */ +IsDefault?: boolean +}[] +} +/** + * Retrieves information of a commercial condition by its ID. + * ## Response body example + * + * ```json + * { + * "Id": 1, + * "Name": "Padrão", + * "IsDefault": true + * } + * ``` + */ +"GET /api/catalog_system/pvt/commercialcondition/:commercialConditionId": { +/** + * Object with information of the commercial condition. + */ +response: { +/** + * Commercial condition ID. + */ +Id?: number +/** + * Commercial condition name. + */ +Name?: string +/** + * If the commercial condition is default (`true`) or not (`false`). + */ +IsDefault?: boolean +} +} +/** + * Retrieves information about a Gift List by its ID. + */ +"GET /api/addon/pvt/giftlist/get/:listId": { +/** + * Object with information about the Gift List. + */ +response: { +/** + * Gift List ID. + */ +giftListId?: number +/** + * Gift List name. + */ +name?: string +/** + * User ID. + */ +userId?: string +/** + * File ID. + */ +fileId?: (null | number) +/** + * Gift List Type ID. + */ +giftListTypeId?: number +/** + * Gift List Type name. + */ +giftListTypeName?: string +/** + * Gift Card ID. + */ +giftCardId?: number +/** + * Gift List message. + */ +message?: string +/** + * Slug of the gift list that will be part of its URL. + */ +urlFolder?: string +/** + * Date when the gift list was created. + */ +dateCreated?: string +/** + * Name of the user's address. + */ +profileSystemUserAddressName?: string +/** + * User ID on Profile System. + */ +profileSystemUserId?: string +/** + * Date of the event associated with the Gift List. + */ +eventDate?: string +/** + * Location of the event associated with the Gift List. + */ +eventLocation?: string +/** + * City of the event associated with the Gift List. + */ +eventCity?: string +/** + * State of the event associated with the Gift List. + */ +eventState?: string +/** + * Telemarketing ID. + */ +telemarketingId?: (null | number) +/** + * Telemarketing observation. + */ +telemarketingObservation?: string +/** + * Defines if the gift list is public. + */ +IsPublic?: boolean +/** + * Defines if the gift list is active. + */ +isActive?: boolean +/** + * Defines if items purchased from the gift list will be shipped to the owner of the gift list. + */ +shipsToOwner?: boolean +/** + * Validates the address of the gift list. + */ +isAddressOk?: boolean +/** + * Version of the gift list. + */ +version?: number +/** + * ID of the SKU that recharges the gift card. + */ +giftCardRechargeSkuId?: (null | number) +/** + * Name of the members of the gift list. + */ +memberNames?: string +/** + * Array of members of the gift list. + */ +giftListMembers?: { +/** + * Gift List member ID. + */ +giftListMemberId?: number +/** + * Gift List ID. + */ +giftListId?: number +/** + * User ID. + */ +userId?: string +/** + * Client ID. + */ +clientId?: (null | string) +/** + * Title of the Gift List member. + */ +title?: (null | string) +/** + * Name of the Gift List member. + */ +name?: string +/** + * Surname of the Gift List member. + */ +surname?: string +/** + * Defines if the Gift List member is an administrator of the Gift List or not. + */ +isAdmin?: boolean +/** + * Defines if the Gift List user is active or not. + */ +isActive?: boolean +/** + * Complementary text. + */ +text1?: (null | string) +/** + * Complementary text. + */ +text2?: (null | string) +}[] +/** + * Array with the IDs of SKUs that are part of the gift list. + */ +giftListSkuIds?: string[] +/** + * Address of the gift list. + */ +address?: (null | string) +/** + * File URL. + */ +fileUrl?: (null | string) +} +} +/** + * This endpoint is used to simulate a cart in VTEX Checkout. + * + * It receives an **SKU ID**, the **quantity** of items in the cart and the ID of the **Seller**. + * + * It sends back all information about the cart, such as the selling price of each item, rates and benefits data, payment and logistics info. + * + * This is useful whenever you need to know the availability of fulfilling an order for a specific cart setting, since the API response will let you know the updated price, inventory and shipping data. + * + * **Important**: The fields (`sku id`, `quantity`, `seller`, `country`, `postalCode` and `geoCoordinates`) are just examples of content that you can simulate in your cart. You can add more fields to the request as per your need. Access the [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) guide to check the available fields. + */ +"POST /api/checkout/pub/orderForms/simulation": { +searchParams: { +/** + * This parameter defines which promotions apply to the simulation. Use `0` for simulations at cart stage, which means all promotions apply. In case of window simulation use `1`, which indicates promotions that apply nominal discounts over the total purchase value shouldn't be considered on the simulation. + * + * Note that if this not sent, the parameter is `1`. + */ +RnbBehavior?: number +/** + * Trade Policy (Sales Channel) identification. + */ +sc?: number +} +body: { +/** + * Array containing information about the SKUs inside the cart to be simulated. + */ +items?: { +/** + * The SKU ID. + */ +id?: string +/** + * The quantity of items of this specific SKU in the cart to be simulated. + */ +quantity?: number +/** + * The ID of the seller responsible for this SKU. This ID can be found in your VTEX Admin. + */ +seller?: string +}[] +marketingData?: { +[k: string]: any +} +priceTables?: string[] +/** + * Three letter ISO code of the country of the shipping address. This value must be sent along with the `postalCode` or `geoCoordinates` values. + */ +country?: string +/** + * Postal code. + */ +postalCode?: string +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +minItems?: 0 +} +response: { +/** + * Information on each item in the cart. + */ +items?: { +/** + * ID of the item. + */ +id?: string +/** + * Request index information. + */ +requestIndex?: number +/** + * The quantity of the item the cart. + */ +quantity?: number +/** + * The seller responsible for the SKU. + */ +seller?: string +/** + * Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order. + */ +sellerChain?: string[] +/** + * Tax value in cents. + */ +tax?: number +/** + * A unique identifier code assigned to a tax within the VTEX Admin. + */ +taxCode?: string +/** + * Price expiration date and time. + */ +priceValidUntil?: string +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Reward value in cents. + */ +rewardValue?: number +/** + * Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead. + */ +sellingPrice?: number +/** + * Array containing offering information. + */ +offerings?: any[] +/** + * Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order. + */ +priceTags?: { +/** + * Price tag name. + */ +name?: string +/** + * Price tag value. + */ +value?: number +/** + * Price tag raw value. + */ +rawValue?: number +/** + * Indicates whether price tag value is applied through a percentage. + */ +isPercentual?: boolean +/** + * Price tag identifier. + */ +identifier?: string +/** + * Identification of the responsible for the price tag. + */ +owner?: string +}[] +/** + * Measurement unit. + */ +measurementUnit?: string +/** + * Unit multiplier. + */ +unitMultiplier?: number +/** + * Parent item index. + */ +parentItemIndex?: (null | number) +/** + * Parent assembly binding. + */ +parentAssemblyBinding?: (null | string) +/** + * Availability. + */ +availability?: string +/** + * Price information for all units of a specific item. + */ +priceDefinition?: { +/** + * Item's calculated unitary selling price in cents. + */ +calculatedSellingPrice?: number +/** + * Total value for all units of the item in cents. + */ +total?: number +/** + * Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total. + */ +sellingPrices?: { +/** + * Value in cents for that specific rounding. + */ +value?: number +/** + * Rounding quantity, meaning how many items are rounded to this value. + */ +quantity?: number +}[] +} +}[] +/** + * Information on rates and benefits that apply to the order. + */ +ratesAndBenefitsData?: { +/** + * List with rates and benefits identifiers. + */ +rateAndBenefitsIdentifiers?: any[] +/** + * List with rates and benefits teasers. + */ +teaser?: any[] +} +/** + * Payment data information. + */ +paymentData?: { +/** + * Installment options information. + */ +installmentOptions?: any[] +/** + * Information on payment systems. + */ +paymentSystems?: { +/** + * Payment system ID. + */ +id?: number +/** + * Payment system name. + */ +name?: string +/** + * Payment group name. + */ +groupName?: string +/** + * Payment system validator. + */ +validator?: (null | { + +}) +/** + * String ID. + */ +stringId?: string +/** + * Template. + */ +template?: string +/** + * Indicates whether a document is required. + */ +requiresDocument?: boolean +/** + * Indicates whether a document is shown. + */ +displayDocument?: boolean +/** + * Indicates whether it is custom. + */ +isCustom?: boolean +/** + * Description. + */ +description?: string +/** + * Indicates whether a authentication is required. + */ +requiresAuthentication?: boolean +/** + * Payment due date. + */ +dueDate?: string +/** + * Availability of payment. + */ +availablePayments?: (null | string) +}[] +/** + * Information on each payment. + */ +payments?: any[] +/** + * Gift card information, if it applies to the order. + */ +giftCards?: any[] +/** + * Array of gift card messages. + */ +giftCardMessages?: any[] +/** + * Available accounts. + */ +availableAccounts?: any[] +/** + * Available tokens. + */ +availableTokens?: any[] +/** + * Available associations. + */ +availableAssociations?: { + +} +} +/** + * Array containing the data of the item selected as a gift. + */ +selectableGifts?: any[] +/** + * Object containing promotion data such as coupon tracking information and internal or external UTMs. + */ +marketingData?: (null | { + +}) +/** + * Postal Code. + */ +postalCode?: (null | string) +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Array with logistics information on each item of the `items` array in the `orderForm`. + */ +logisticsInfo?: { +/** + * Index of item in items array. + */ +itemIndex?: number +/** + * Address ID. + */ +addressId?: (null | string) +/** + * Selected SLA. For example, `"normal"` or `"express"`. + */ +selectedSla?: (null | string) +/** + * Delivery channel selected by the customer. For example, `"delivery"` or `"pickup-in-point"`. + */ +selectedDeliveryChannel?: (null | string) +/** + * Quantity. + */ +quantity?: number +/** + * List of countries that the item may be shipped to. + */ +shipsTo?: any[] +/** + * Information on available SLAs. + */ +slas?: { +/** + * SLA ID. + */ +id?: string +/** + * Delivery channel. + */ +deliveryChannel?: string +/** + * SLA name. + */ +name?: string +/** + * Information on each delivery ID. + */ +deliveryIds?: { +/** + * Courier ID. + */ +courierId?: string +/** + * Warehouse ID. + */ +warehouseId?: string +/** + * Warehouse ID. + */ +dockId?: string +/** + * Courier name. + */ +courierName?: string +/** + * Quantity. + */ +quantity?: number +}[] +/** + * Shipping estimate. For instance, "three business days" will be represented as `3bd`. + */ +shippingEstimate?: string +/** + * Shipping estimate date. + */ +shippingEstimateDate?: (null | string) +/** + * Estimate date of delivery. + */ +lockTTL?: string +/** + * This object contains information about the delivery window available to the shopper. + */ +availableDeliveryWindows?: { +/** + * Delivery window starting day and time in UTC. + */ +startDateUtc?: string +/** + * Delivery window ending day and time in UTC. + */ +endDateUtc?: string +/** + * Delivery window price. + */ +price?: number +/** + * Delivery window list price. + */ +lisPrice?: number +/** + * Delivery window tax. + */ +tax?: number +} +/** + * In case of scheduled delivery, this object will contain information on the delivery window selected by the shopper. + */ +deliveryWindow?: { +/** + * Delivery window starting day and time in UTC. + */ +startDateUtc?: string +/** + * Delivery window ending day and time in UTC. + */ +endDateUtc?: string +/** + * Delivery window price. + */ +price?: number +/** + * Delivery window list price. + */ +lisPrice?: number +/** + * Delivery window tax. + */ +tax?: number +} +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Tax in cents. + */ +tax?: number +/** + * Information on the pickup store. + */ +pickupStoreInfo?: { +/** + * Indicates whether it is the pickup store. + */ +isPickupStore?: boolean +/** + * Friendly name. + */ +friendlyName?: (null | string) +/** + * Address information. + */ +address?: (null | { + +}) +/** + * Additional information. + */ +additionalInfo?: (null | string) +/** + * Corresponding dock ID. + */ +dockId?: (null | string) +} +/** + * Pickup point ID. + */ +pickupPointId?: (null | string) +/** + * Pickup point distance. + */ +pickupDistance?: number +/** + * Polygon name. + */ +polygonName?: (null | string) +/** + * Transit time. For instance, "three business days" is represented as `3bd`. + */ +transitTime?: string +}[] +/** + * List of available delivery channels. + */ +deliveryChannels?: { +/** + * Delivery channel ID. + */ +id?: string +}[] +/** + * Array containing an object for each message generated by our servers while processing the request. + */ +messages?: any[] +/** + * Purchase conditions information. + */ +purchaseConditions?: { +/** + * List of objects containing purchase condition information on each item in the order. + */ +itemPurchaseConditions?: { +/** + * Item ID. + */ +id?: string +/** + * Seller. + */ +seller?: string +/** + * Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order. + */ +sellerChain?: any[] +/** + * Information on available SLAs. + */ +slas?: { +/** + * SLA ID. + */ +id?: string +/** + * Delivery channel. + */ +deliveryChannel?: string +/** + * SLA name. + */ +name?: string +/** + * Information on each delivery ID. + */ +deliveryIds?: { +/** + * Courier ID. + */ +courierId?: string +/** + * Warehouse ID. + */ +warehouseId?: string +/** + * Warehouse ID. + */ +dockId?: string +/** + * Courier name. + */ +courierName?: string +/** + * Quantity. + */ +quantity?: number +}[] +/** + * Shipping estimate. For instance, "three business days" will be represented as `3bd`. + */ +shippingEstimate?: string +/** + * Shipping estimate date. + */ +shippingEstimateDate?: (null | string) +/** + * Estimate date of delivery. + */ +lockTTL?: string +/** + * This object contains information about the delivery window available to the shopper. + */ +availableDeliveryWindows?: { +/** + * Delivery window starting day and time in UTC. + */ +startDateUtc?: string +/** + * Delivery window ending day and time in UTC. + */ +endDateUtc?: string +/** + * Delivery window price. + */ +price?: number +/** + * Delivery window list price. + */ +lisPrice?: number +/** + * Delivery window tax. + */ +tax?: number +} +/** + * In case of scheduled delivery, this object will contain information on the delivery window selected by the shopper. + */ +deliveryWindow?: { +/** + * Delivery window starting day and time in UTC. + */ +startDateUtc?: string +/** + * Delivery window ending day and time in UTC. + */ +endDateUtc?: string +/** + * Delivery window price. + */ +price?: number +/** + * Delivery window list price. + */ +lisPrice?: number +/** + * Delivery window tax. + */ +tax?: number +} +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Tax in cents. + */ +tax?: number +/** + * Information on the pickup store. + */ +pickupStoreInfo?: { +/** + * Indicates whether it is the pickup store. + */ +isPickupStore?: boolean +/** + * Friendly name. + */ +friendlyName?: (null | string) +/** + * Address information. + */ +address?: (null | { + +}) +/** + * Additional information. + */ +additionalInfo?: (null | string) +/** + * Corresponding dock ID. + */ +dockId?: (null | string) +} +/** + * Pickup point ID. + */ +pickupPointId?: (null | string) +/** + * Pickup point distance. + */ +pickupDistance?: number +/** + * Polygon name. + */ +polygonName?: (null | string) +/** + * Transit time. For instance, "three business days" is represented as `3bd`. + */ +transitTime?: string +}[] +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +}[] +} +/** + * Array containing pickup points information. + */ +pickupPoints?: any[] +/** + * Subscription information. + */ +subscriptionData?: (null | { + +}) +/** + * Information on order totals. + */ +totals?: { +/** + * Total ID. + */ +id?: string +/** + * Total name. + */ +name?: string +/** + * Total value. + */ +value?: number +}[] +/** + * Item metadata. + */ +itemMetadata?: { +/** + * List of objects containing metadata on each item in the order. + */ +items?: { +/** + * Item ID. + */ +id?: string +/** + * Seller. + */ +seller?: string +/** + * Assembly options information. + */ +assemblyOptions?: any[] +}[] +} +}[] +} +} +/** + * You can use this request to get your current shopping cart information (`orderFormId`) or to create a new cart. + * + * **Important**: To create a new empty shopping cart you need to send this request with the query param `forceNewCart=true`. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` obtained in response is the identification code of the newly created cart. + * + * > This request has a time out of 45 seconds. + */ +"GET /api/checkout/pub/orderForm": { +searchParams: { +/** + * Use this query parameter to create a new empty shopping cart. + */ +forceNewCart?: boolean +} +} +/** + * Use this request to get all information associated to a given shopping cart. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * > This request has a time out of 45 seconds. + */ +"GET /api/checkout/pub/orderForm/:orderFormId": { +searchParams: { +/** + * It is possible to use the [Update cart items request](https://developers.vtex.com/vtex-rest-api/reference/cart-update#itemsupdate) so as to allow outdated information in the `orderForm`, which may improve performance in some cases. To guarantee that all cart information is updated, send this request with this parameter as `true`. We recommend doing this in the final stages of the shopping experience, starting from the checkout page. + */ +refreshOutdatedData?: boolean +} +} +/** + * This request removes all items from a given cart, leaving it empty. + * + * You must send an empty JSON in the body of the request. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * **Important**: **Request Body** must always be sent with empty value "{ }" in this endpoint. + */ +"POST /api/checkout/pub/orderForm/:orderFormId/items/removeAll": { +/** + * This object must be empty. + */ +body: { + +} +response: { + +} +} +/** + * This call removes all user information, making a cart anonymous while leaving the items. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure that represents a shopping cart and contains all information about it. Hence, the `orderFormId` is the identification code of a given cart. + * + * This call works by creating a new orderForm, setting a new cookie, and returning a redirect 302 to the cart URL (`/checkout/#/orderform`). + */ +"GET /checkout/changeToAnonymousUser/:orderFormId": { + +} +/** + * You can use this request to: + * + * 1. Change the quantity of one or more items in a specific cart. + * 2. Remove an item from the cart (by sending the `quantity` value = `0` in the request body). + * + * **Important**: To remove all items from the cart at the same time, use the [Remove all items](https://developers.vtex.com/vtex-rest-api/reference/removeallitems) endpoint. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure that represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * > This request has a time out of 45 seconds. + */ +"POST /api/checkout/pub/orderForm/:orderFormId/items/update": { +searchParams: { +/** + * In order to optimize performance, this parameter allows some information to not be updated when there are changes in the minicart. For instance, if a shopper adds another unit of a given SKU to the cart, it may not be necessary to recalculate payment information, which could impact performance. + * + * This array accepts strings and currently the only possible value is `”paymentData”`. + */ +allowedOutdatedData?: any[] +} +body: { +/** + * Array containing the cart items. Each object inside this array corresponds to a different item. + */ +orderItems?: { +/** + * The quantity of the item in the cart. + */ +quantity: number +/** + * The position of the item in the array. + */ +index: number +}[] +} +response: { +/** + * ID of the orderForm corresponding to a specific cart. + */ +orderFormId?: string +/** + * Attribute created by the seller, in their VTEX store configuration. + */ +salesChannel?: string +/** + * Indicates whether the user is logged into the store. + */ +loggedIn?: boolean +/** + * Indicates whether order is checked in. + */ +isCheckedIn?: boolean +/** + * ID of the store. + */ +storeId?: (null | string) +/** + * Permission to modify item price manually. + */ +allowManualPrice?: boolean +/** + * Data can be edited. + */ +canEditData?: boolean +/** + * Unique ID associated with the customer profile. + */ +userProfileId?: string +/** + * Profile provider. + */ +profileProvider?: string +/** + * Available accounts. + */ +availableAccounts?: string[] +/** + * Information on each available address. + */ +availableAddresses?: { +/** + * Address type. + */ +addressType?: string +/** + * Name of the receiver. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * City of the address. + */ +city?: string +/** + * State of the address. + */ +state?: string +/** + * Country of the address. ISO three-letter code. + */ +country?: string +/** + * Street of the address. + */ +street?: string +/** + * Number of the address. + */ +number?: string +/** + * Neighborhood of the address. + */ +neighborhood?: string +/** + * Complement to the address. + */ +complement?: (null | string) +/** + * Reference that may help in the location of the address. + */ +reference?: (null | string) +/** + * List with the two geocoordinates. + */ +geoCoordinates?: string[] +}[] +/** + * User type. + */ +userType?: (null | string) +/** + * Ignore customer profile data. + */ +ignoreProfileData?: boolean +/** + * Total value of the order without separating cents. For example, $24.99 is represented as `2499`. + */ +value?: number +/** + * Array containing an object for each message generated by our servers while processing the request. + */ +messages?: any[] +/** + * Information on each item in the order. + */ +items?: { +/** + * Unique ID. + */ +uniqueId?: string +/** + * ID of the item. + */ +id?: string +/** + * Product ID. + */ +productId?: string +/** + * Product Ref ID. + */ +productRefId?: string +/** + * Ref ID. + */ +refId?: string +/** + * European Article Number. + */ +ean?: (null | string) +/** + * Product name. + */ +name?: string +/** + * SKU name. + */ +skuName?: string +/** + * Modal type. + */ +modalType?: (null | string) +/** + * Parent item index. + */ +parentItemIndex?: (null | number) +/** + * Parent assembly binding. + */ +parentAssemblyBinding?: (null | string) +/** + * Price expiration date and time. + */ +priceValidUntil?: string +/** + * Tax value in cents. + */ +tax?: number +/** + * A unique identifier code assigned to a tax within the VTEX Admin. + */ +taxCode?: string +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Manual price in cents. + */ +manualPrice?: (null | number) +/** + * User that applied the manual price, if that is the case. + */ +manualPriceAppliedBy?: (null | string) +/** + * Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead. + */ +sellingPrice?: number +/** + * Reward value in cents. + */ +rewardValue?: number +/** + * Indicates whether item is a gift. + */ +isGift?: boolean +/** + * Additional information. + */ +additionalInfo?: { +/** + * Dimension. + */ +dimension?: (null | string) +/** + * Brand name. + */ +brandName?: string +/** + * Brand ID. + */ +brandId?: string +/** + * Offering information. + */ +offeringInfo?: (null | string) +/** + * Offering type. + */ +offeringType?: (null | string) +/** + * Offering type ID. + */ +offeringTypeId?: (null | string) +} +/** + * Presale date. + */ +preSaleDate?: (null | string) +/** + * Product category IDs. + */ +productCategoryIds?: string +/** + * Object, where each field is an ID from `productCategoryIds`. + */ +productCategories?: { +/** + * Product category corresponding to the ID in the field key. + */ +"{ID}"?: string +} +/** + * Quantity. + */ +quantity?: number +/** + * Seller. + */ +seller?: string +/** + * Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order. + */ +sellerChain?: string[] +/** + * Image URL. + */ +imageUrl?: string +/** + * Detail URL. + */ +detailUrl?: string +/** + * Information on services sold along with the SKU. Example: a gift package. + */ +bundleItems?: { +/** + * Service type. + */ +type?: string +/** + * Service identifier. + */ +id?: number +/** + * Service name. + */ +name?: string +/** + * Service price in cents. + */ +price?: number +}[] +/** + * Array containing information on attachments. + */ +attachments?: string[] +/** + * Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order. + */ +priceTags?: { +/** + * Price tag identifier. + */ +identifier?: string +/** + * Indicates whether price tag value is applied through a percentage. + */ +isPercentual?: boolean +/** + * Price tag name. + */ +name?: string +/** + * Price tag raw value. + */ +rawValue?: number +/** + * Price tag value. + */ +value?: number +}[] +/** + * Availability. + */ +availability?: string +/** + * Measurement unit. + */ +measurementUnit?: string +/** + * Unit multiplier. + */ +unitMultiplier?: number +/** + * Manufacturer code. + */ +manufacturerCode?: (null | string) +/** + * Price information for all units of a specific item. + */ +priceDefinition?: { +/** + * Item's calculated unitary selling price in cents. + */ +calculatedSellingPrice?: number +/** + * Total value for all units of the item in cents. + */ +total?: number +/** + * Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total. + */ +sellingPrices?: { +/** + * Value in cents for that specific rounding. + */ +value?: number +/** + * Rounding quantity, meaning how many items are rounded to this value. + */ +quantity?: number +}[] +} +}[] +/** + * Array containing the data of the item selected as a gift. + */ +selectableGifts?: any[] +/** + * Array containing an object for each totalizer for the purchase. Totalizers contain the sum of values for a specific part of the order (e.g. Total item value, Total shipping value). + */ +totalizers?: any[] +/** + * Shipping information pertinent to the order. + */ +shippingData?: { +/** + * Address information. + */ +address?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array with two strings with geocoordinates, first latitude, then longitude. + */ +geoCoordinates?: string[] +} +/** + * Array with logistics information. Each object in this array corresponds to an object in the `items` array, based on the respective `itemIndex`. + */ +logisticsInfo?: { +/** + * Index corresponding to the position of the object in the `items` array. + */ +itemIndex?: number +/** + * SLA selected by the customer. + */ +selectedSla?: string +/** + * Delivery channel selected by the customer. + */ +selectedDeliveryChannel?: string +/** + * Address ID. + */ +addressId?: string +/** + * Information on available SLAs. + */ +slas?: { +/** + * SLA ID. + */ +id?: string +/** + * Delivery channel. + */ +deliveryChannel?: string +/** + * SLA name. + */ +name?: string +/** + * Information on each delivery ID. + */ +deliveryIds?: { +/** + * Courier ID. + */ +courierId?: string +/** + * Warehouse ID. + */ +warehouseId?: string +/** + * Warehouse ID. + */ +dockId?: string +/** + * Courier name. + */ +courierName?: string +/** + * Quantity. + */ +quantity?: number +}[] +/** + * Shipping estimate. For instance, "three business days" will be represented as `3bd`. + */ +shippingEstimate?: string +/** + * Shipping estimate date. + */ +shippingEstimateDate?: (null | string) +/** + * Estimate date of delivery. + */ +lockTTL?: string +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Tax in cents. + */ +tax?: number +/** + * Information on the pickup store. + */ +pickupStoreInfo?: { +/** + * Indicates whether it is the pickup store. + */ +isPickupStore?: boolean +/** + * Friendly name. + */ +friendlyName?: (null | string) +/** + * Address information. + */ +address?: (null | { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array with two strings with geocoordinates, first latitude, then longitude. + */ +geoCoordinates?: string[] +}) +/** + * Additional information. + */ +additionalInfo?: (null | string) +/** + * Corresponding dock ID. + */ +dockId?: (null | string) +} +/** + * Pickup point ID. + */ +pickupPointId?: (null | string) +/** + * Pickup point distance. + */ +pickupDistance?: number +/** + * Polygon name. + */ +polygonName?: (null | string) +/** + * Transit time. For instance, "three business days" is represented as `3bd`. + */ +transitTime?: string +}[] +/** + * List of countries that the item may be shipped to. + */ +shipsTo?: string[] +/** + * Item ID. + */ +itemId?: string +/** + * List of available delivery channels. + */ +deliveryChannels?: { +/** + * Delivery channel ID. + */ +id?: string +}[] +}[] +/** + * Array with information on the selected addresses for the order. + */ +selectedAddresses?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: string +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array with two strings with geocoordinates, first latitude, then longitude. + */ +geoCoordinates?: string[] +}[] +/** + * Array with information on the available addresses for the order. + */ +availableAddresses?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: string +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array with two strings with geocoordinates, first latitude, then longitude. + */ +geoCoordinates?: string[] +}[] +} +/** + * Customer's profile information. + */ +clientProfileData?: { +/** + * Email address. + */ +email?: string +/** + * First name. + */ +firstName?: string +/** + * Last name. + */ +lastName?: string +/** + * Type of the document informed by the customer. + */ +documentType?: string +/** + * Document informed by the customer. + */ +document?: string +/** + * Phone number. + */ +phone?: string +/** + * Company name, if the customer is a legal entity. + */ +corporateName?: (null | string) +/** + * Trade name, if the customer is a legal entity. + */ +tradeName?: (null | string) +/** + * Corporate document, if the customer is a legal entity. + */ +corporateDocument?: (null | string) +/** + * State inscription, if the customer is a legal entity. + */ +stateInscription?: (null | string) +/** + * Corporate phone number, if the customer is a legal entity. + */ +corporatePhone?: (null | string) +/** + * Indicates whether the customer is a legal entity. + */ +isCorporate?: boolean +/** + * Indicates whether profile is complete on loading. + */ +profileCompleteOnLoading?: boolean +/** + * Indicates whether profile presents error on loading. + */ +profileErrorOnLoading?: (null | boolean) +/** + * Customer class. + */ +customerClass?: (null | string) +} +/** + * Information on the order's payment. + */ +paymentData?: { +/** + * Gift card information, if it applies to the order. + */ +giftCards?: { +/** + * Gift card redemption code. + */ +redemptionCode?: string +/** + * Gift card value in cents. + */ +value?: number +/** + * Gift card balance in cents. + */ +balance?: number +/** + * Gift card name. + */ +name?: string +/** + * Gift card ID. + */ +id?: string +/** + * Indicates whether gift card is in use. + */ +inUse?: boolean +/** + * Indicates whether gift card is special. + */ +isSpecialCard?: boolean +}[] +/** + * Information on each transaction pertinent to the order. + */ +transactions?: { +/** + * Indicates whether transaction is active. + */ +isActive?: boolean +/** + * Transaction ID. + */ +transactionId?: string +/** + * Merchant name. + */ +merchantName?: string +/** + * Information on each payment. + */ +payments?: { +/** + * Account ID. + */ +accountId?: string +/** + * Bin. + */ +bin?: string +/** + * Number of installments. + */ +installments?: number +/** + * Payment system. + */ +paymentSystem?: string +/** + * Reference value for calculating interest rates, in case it applies. Displayed in cents. + */ +referenceValue?: number +/** + * Value including interest, in case it applies. Displayed in cents. + */ +value?: number +}[] +/** + * Indicates whather transaction is shared. + */ +sharedTransaction?: boolean +}[] +} +/** + * Object containing promotion data such as coupon tracking information and internal or external UTMs. + */ +marketingData?: { +/** + * Sending an existing coupon code in this field will return the corresponding discount in the purchase. Use the [cart simulation](https://developers.vtex.com/vtex-rest-api/reference/orderform#orderformsimulation) request to check which coupons might apply before placing the order. + */ +coupon?: string +/** + * UTM source. + */ +utmSource?: string +/** + * UTM medium. + */ +utmMedium?: string +/** + * UTM campaign + */ +utmCampaign?: string +/** + * utmi_page (internal utm). + */ +utmiPage?: (null | string) +/** + * utmi_part (internal utm). + */ +utmiPart?: (null | string) +/** + * utmi_campaign (internal utm). + */ +utmiCampaign?: (null | string) +} +/** + * Information on each seller. + */ +sellers?: { +/** + * Seller ID. + */ +id?: string +/** + * Seller name. + */ +name?: string +/** + * Seller logo. + */ +logo?: (null | string) +}[] +/** + * Object containing preferences from the client who placed the order. + */ +clientPreferencesData?: { +/** + * Client's locale. Examples: `pt-BR` and `en-US`. + */ +locale?: string +/** + * `true` if the client opted to receive newsletter from the store. + */ +optinNewsLetter?: boolean +} +/** + * Object containing commercial condition information. + */ +commercialConditionData?: (null | { + +}) +/** + * Object containing data from the store's configuration (stored in VTEX's License Manager). + */ +storePreferencesData?: { + +} +/** + * Gift registry list information. + */ +giftRegistryData?: (null | { + +}) +/** + * Optional field meant to hold additional information about the order. We recommend using this field for text, not data formats such as `JSON` even if escaped. For that purpose, see [Creating customizable fields](https://developers.vtex.com/vtex-rest-api/docs/creating-customizable-fields-in-the-cart-with-checkout-api-1). + */ +openTextField?: (null | string) +/** + * Object containing information pertinent to the order's invoice. + */ +invoiceData?: (null | { + +}) +/** + * Customer additional information. + */ +customData?: (null | { + +}) +/** + * Item metadata. + */ +itemMetadata?: { +/** + * List of objects containing metadata on each item in the order. + */ +items?: { +/** + * Item ID. + */ +id?: string +/** + * Seller. + */ +seller?: string +/** + * Product name. + */ +name?: string +/** + * SKU name. + */ +skuName?: string +/** + * Product ID. + */ +productId?: string +/** + * Ref ID. + */ +refId?: string +/** + * European Article Number. + */ +ean?: (null | string) +/** + * Image URL. + */ +imageUrl?: string +/** + * Detail URL. + */ +detailUrl?: string +}[] +} +/** + * Hooks information. + */ +hooksData?: (null | { + +}) +/** + * Information on rates and benefits that apply to the order. + */ +ratesAndBenefitsData?: { +/** + * List with rates and benefits identifiers. + */ +rateAndBenefitsIdentifiers?: string[] +/** + * List with rates and benefits teasers. + */ +teaser?: string[] +} +/** + * Subscription information. + */ +subscriptionData?: (null | { + +}) +/** + * Object containing information about the ordering of items within the `orderForm`. + */ +itemsOrdination?: { +/** + * Criteria adopted to order the items in the list. + */ +criteria?: string +/** + * Indicates whether the ordering is ascending. + */ +ascending?: boolean +} +} +} +/** + * Use this request to add a new item to the shopping cart. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * > This request has a time out of 45 seconds. + */ +"POST /api/checkout/pub/orderForm/:orderFormId/items": { +searchParams: { +/** + * In order to optimize performance, this parameter allows some information to not be updated when there are changes in the minicart. For instance, if a shopper adds another unit of a given SKU to the cart, it may not be necessary to recalculate payment information, which could impact performance. + * + * This array accepts strings and currently the only possible value is `”paymentData”`. + */ +allowedOutdatedData?: any[] +} +body: { +/** + * Array containing the cart items. Each object inside this array corresponds to a different item. + */ +orderItems?: { +/** + * The quantity of the item (SKU) in the cart. + */ +quantity: number +/** + * The seller responsible for the SKU. + */ +seller: string +/** + * The ID of the SKU in VTEX platform. + */ +id: string +/** + * The position of the item in the array. + */ +index: number +/** + * Price of the item in cents. Send this value in case you want to make a bulk price change. + */ +price?: number +}[] +} +response: { +/** + * ID of the orderForm corresponding to a specific cart. + */ +orderFormId?: string +/** + * Attribute created by the seller, in their VTEX store configuration. + */ +salesChannel?: string +/** + * Indicates whether the user is logged into the store. + */ +loggedIn?: boolean +/** + * Indicates whether order is checked in. + */ +isCheckedIn?: boolean +/** + * ID of the store. + */ +storeId?: (null | string) +/** + * Permission to modify item price manually. + */ +allowManualPrice?: boolean +/** + * Data can be edited. + */ +canEditData?: boolean +/** + * Unique ID associated with the customer profile. + */ +userProfileId?: string +/** + * Profile provider. + */ +profileProvider?: string +/** + * Available accounts. + */ +availableAccounts?: string[] +/** + * Information on each available address. + */ +availableAddresses?: { +/** + * Address type. + */ +addressType?: string +/** + * Name of the receiver. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * City of the address. + */ +city?: string +/** + * State of the address. + */ +state?: string +/** + * Country of the address. ISO three-letter code. + */ +country?: string +/** + * Street of the address. + */ +street?: string +/** + * Number of the address. + */ +number?: string +/** + * Neighborhood of the address. + */ +neighborhood?: string +/** + * Complement to the address. + */ +complement?: (null | string) +/** + * Reference that may help in the location of the address. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +/** + * User type. + */ +userType?: (null | string) +/** + * Ignore customer profile data. + */ +ignoreProfileData?: boolean +/** + * Total value of the order without separating cents. For example, $24.99 is represented `2499`. + */ +value?: number +/** + * Array containing an object for each message generated by our servers while processing the request. + */ +messages?: any[] +/** + * Information on each item in the order. + */ +items?: { +/** + * Unique ID. + */ +uniqueId?: string +/** + * ID of the item. + */ +id?: string +/** + * Product ID. + */ +productId?: string +/** + * Product Ref ID. + */ +productRefId?: string +/** + * Ref ID. + */ +refId?: string +/** + * European Article Number. + */ +ean?: (null | string) +/** + * Product name. + */ +name?: string +/** + * SKU name. + */ +skuName?: string +/** + * Modal type. + */ +modalType?: (null | string) +/** + * Parent item index. + */ +parentItemIndex?: (null | number) +/** + * Parent assembly binding. + */ +parentAssemblyBinding?: (null | string) +/** + * Price expiration date and time. + */ +priceValidUntil?: string +/** + * Tax value in cents. + */ +tax?: number +/** + * A unique identifier code assigned to a tax within the VTEX Admin. + */ +taxCode?: string +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Manual price in cents. + */ +manualPrice?: (null | number) +/** + * User that applied the manual price, if that is the case. + */ +manualPriceAppliedBy?: (null | string) +/** + * Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead. + */ +sellingPrice?: number +/** + * Reward value in cents. + */ +rewardValue?: number +/** + * Indicates whether item is a gift. + */ +isGift?: boolean +/** + * Additional information. + */ +additionalInfo?: { +/** + * Dimension. + */ +dimension?: (null | string) +/** + * Brand name. + */ +brandName?: string +/** + * Brand ID. + */ +brandId?: string +/** + * Offering information. + */ +offeringInfo?: (null | string) +/** + * Offering type. + */ +offeringType?: (null | string) +/** + * Offering type ID. + */ +offeringTypeId?: (null | string) +} +/** + * Presale date. + */ +preSaleDate?: (null | string) +/** + * Product category IDs. + */ +productCategoryIds?: string +/** + * Object, where each field is an ID from `productCategoryIds`. + */ +productCategories?: { +/** + * Product category corresponding to the ID in the field key. + */ +"{ID}"?: string +} +/** + * Quantity. + */ +quantity?: number +/** + * Seller. + */ +seller?: string +/** + * Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order. + */ +sellerChain?: string[] +/** + * Image URL. + */ +imageUrl?: string +/** + * Detail URL. + */ +detailUrl?: string +/** + * Information on services sold along with the SKU. Example: a gift package. + */ +bundleItems?: { +/** + * Service type. + */ +type?: string +/** + * Service identifier. + */ +id?: number +/** + * Service name. + */ +name?: string +/** + * Service price in cents. + */ +price?: number +}[] +/** + * Array containing information on attachments. + */ +attachments?: string[] +/** + * Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order. + */ +priceTags?: { +/** + * Price tag identifier. + */ +identifier?: string +/** + * Indicates whether price tag value is applied through a percentage. + */ +isPercentual?: boolean +/** + * Price tag name. + */ +name?: string +/** + * Price tag raw value. + */ +rawValue?: number +/** + * Price tag value. + */ +value?: number +}[] +/** + * Availability. + */ +availability?: string +/** + * Measurement unit. + */ +measurementUnit?: string +/** + * Unit multiplier. + */ +unitMultiplier?: number +/** + * Manufacturer code. + */ +manufacturerCode?: (null | string) +/** + * Price information for all units of a specific item. + */ +priceDefinition?: { +/** + * Item's calculated unitary selling price in cents. + */ +calculatedSellingPrice?: number +/** + * Total value for all units of the item in cents. + */ +total?: number +/** + * Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total. + */ +sellingPrices?: { +/** + * Value in cents for that specific rounding. + */ +value?: number +/** + * Rounding quantity, meaning how many items are rounded to this value. + */ +quantity?: number +}[] +} +}[] +/** + * Array containing the data of the item selected as a gift. + */ +selectableGifts?: any[] +/** + * Array containing an object for each totalizer for the purchase. Totalizers contain the sum of values for a specific part of the order (e.g. Total item value, Total shipping value). + */ +totalizers?: any[] +/** + * Shipping information pertinent to the order. + */ +shippingData?: { +/** + * Address information. + */ +address?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +} +/** + * Array with logistics information. Each object in this array corresponds to an object in the `items` array, based on the respective `itemIndex`. + */ +logisticsInfo?: { +/** + * Index corresponding to the position of the object in the `items` array. + */ +itemIndex?: number +/** + * SLA selected by the customer. + */ +selectedSla?: string +/** + * Delivery channel selected by the customer. + */ +selectedDeliveryChannel?: string +/** + * Address ID. + */ +addressId?: string +/** + * Information on available SLAs. + */ +slas?: { +/** + * SLA ID. + */ +id?: string +/** + * Delivery channel. + */ +deliveryChannel?: string +/** + * SLA name. + */ +name?: string +/** + * Information on each delivery ID. + */ +deliveryIds?: { +/** + * Courier ID. + */ +courierId?: string +/** + * Warehouse ID. + */ +warehouseId?: string +/** + * Warehouse ID. + */ +dockId?: string +/** + * Courier name. + */ +courierName?: string +/** + * Quantity. + */ +quantity?: number +}[] +/** + * Shipping estimate. For instance, Three business days will be represented `3bd`. + */ +shippingEstimate?: string +/** + * Shipping estimate date. + */ +shippingEstimateDate?: (null | string) +/** + * Estimate date of delivery. + */ +lockTTL?: string +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Tax in cents. + */ +tax?: number +/** + * Information on the pickup store. + */ +pickupStoreInfo?: { +/** + * Indicates whether it is the pickup store. + */ +isPickupStore?: boolean +/** + * Friendly name. + */ +friendlyName?: (null | string) +/** + * Address information. + */ +address?: (null | { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}) +/** + * Additional information. + */ +additionalInfo?: (null | string) +/** + * Corresponding dock ID. + */ +dockId?: (null | string) +} +/** + * Pickup point ID. + */ +pickupPointId?: (null | string) +/** + * Pickup point distance. + */ +pickupDistance?: number +/** + * Polygon name. + */ +polygonName?: (null | string) +/** + * Transit time. For instance, "three business days" is represented `3bd`. + */ +transitTime?: string +}[] +/** + * List of countries that the item may be shipped to. + */ +shipsTo?: string[] +/** + * Item ID. + */ +itemId?: string +/** + * List of available delivery channels. + */ +deliveryChannels?: { +/** + * Delivery channel ID. + */ +id?: string +}[] +}[] +/** + * Array with information on the selected addresses for the order. + */ +selectedAddresses?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: string +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +/** + * Array with information on the available addresses for the order. + */ +availableAddresses?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: string +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +} +/** + * Customer's profile information. + */ +clientProfileData?: { +/** + * Email address. + */ +email?: string +/** + * First name. + */ +firstName?: string +/** + * Last name. + */ +lastName?: string +/** + * Type of the document informed by the customer. + */ +documentType?: string +/** + * Document informed by the customer. + */ +document?: string +/** + * Phone number. + */ +phone?: string +/** + * Company name, if the customer is a legal entity. + */ +corporateName?: (null | string) +/** + * Trade name, if the customer is a legal entity. + */ +tradeName?: (null | string) +/** + * Corporate document, if the customer is a legal entity. + */ +corporateDocument?: (null | string) +/** + * State inscription, if the customer is a legal entity. + */ +stateInscription?: (null | string) +/** + * Corporate phone number, if the customer is a legal entity. + */ +corporatePhone?: (null | string) +/** + * Indicates whether the customer is a legal entity. + */ +isCorporate?: boolean +/** + * Indicates whether profile is complete on loading. + */ +profileCompleteOnLoading?: boolean +/** + * Indicates whether profile presents error on loading. + */ +profileErrorOnLoading?: (null | boolean) +/** + * Customer class. + */ +customerClass?: (null | string) +} +/** + * Information on the order's payment. + */ +paymentData?: { +/** + * Gift card information, if it applies to the order. + */ +giftCards?: { +/** + * Gift card redemption code. + */ +redemptionCode?: string +/** + * Gift card value in cents. + */ +value?: number +/** + * Gift card balance in cents. + */ +balance?: number +/** + * Gift card name. + */ +name?: string +/** + * Gift card ID. + */ +id?: string +/** + * Indicates whether gift card is in use. + */ +inUse?: boolean +/** + * Indicates whether gift card is special. + */ +isSpecialCard?: boolean +}[] +/** + * Information on each transaction pertinent to the order. + */ +transactions?: { +/** + * Indicates whether transaction is active. + */ +isActive?: boolean +/** + * Transaction ID. + */ +transactionId?: string +/** + * Merchant name. + */ +merchantName?: string +/** + * Information on each payment. + */ +payments?: { +/** + * Account ID. + */ +accountId?: string +/** + * Bin. + */ +bin?: string +/** + * Number of installments. + */ +installments?: number +/** + * Payment system. + */ +paymentSystem?: string +/** + * Reference value for calculating interest rates, in case it applies. Displayed in cents. + */ +referenceValue?: number +/** + * Value including interest, in case it applies. Displayed in cents. + */ +value?: number +}[] +/** + * Indicates whather transaction is shared. + */ +sharedTransaction?: boolean +}[] +} +/** + * Object containing promotion data such as coupon tracking information and internal or external UTMs. + */ +marketingData?: { +/** + * Sending an existing coupon code in this field will return the corresponding discount in the purchase. Use the [cart simulation](https://developers.vtex.com/vtex-rest-api/reference/orderform#orderformsimulation) request to check which coupons might apply before placing the order. + */ +coupon?: string +/** + * UTM source. + */ +utmSource?: string +/** + * UTM medium. + */ +utmMedium?: string +/** + * UTM campaign + */ +utmCampaign?: string +/** + * utmi_page (internal utm). + */ +utmiPage?: (null | string) +/** + * utmi_part (internal utm). + */ +utmiPart?: (null | string) +/** + * utmi_campaign (internal utm). + */ +utmiCampaign?: (null | string) +} +/** + * Information on each seller. + */ +sellers?: { +/** + * Seller ID. + */ +id?: string +/** + * Seller name. + */ +name?: string +/** + * Seller logo. + */ +logo?: (null | string) +}[] +/** + * Object containing preferences from the client who placed the order. + */ +clientPreferencesData?: { +/** + * Client's locale. Examples: `pt-BR` and `en-US`. + */ +locale?: string +/** + * `true` if the client opted to receive newsletter from the store. + */ +optinNewsLetter?: boolean +} +/** + * Object containing commercial condition information. + */ +commercialConditionData?: (null | { + +}) +/** + * Object containing data from the store's configuration (stored in VTEX's License Manager). + */ +storePreferencesData?: { + +} +/** + * Gift registry list information. + */ +giftRegistryData?: (null | { + +}) +/** + * Optional field meant to hold additional information about the order. We recommend using this field for text, not data formats such as `JSON` even if escaped. For that purpose, see [Creating customizable fields](https://developers.vtex.com/vtex-rest-api/docs/creating-customizable-fields-in-the-cart-with-checkout-api-1). + */ +openTextField?: (null | string) +/** + * Object containing information pertinent to the order's invoice. + */ +invoiceData?: (null | { + +}) +/** + * Customer additional information. + */ +customData?: (null | { + +}) +/** + * Item metadata. + */ +itemMetadata?: { +/** + * List of objects containing metadata on each item in the order. + */ +items?: { +/** + * Item ID. + */ +id?: string +/** + * Seller. + */ +seller?: string +/** + * Product name. + */ +name?: string +/** + * SKU name. + */ +skuName?: string +/** + * Product ID. + */ +productId?: string +/** + * Ref ID. + */ +refId?: string +/** + * European Article Number. + */ +ean?: (null | string) +/** + * Image URL. + */ +imageUrl?: string +/** + * Detail URL. + */ +detailUrl?: string +}[] +} +/** + * Hooks information. + */ +hooksData?: (null | { + +}) +/** + * Information on rates and benefits that apply to the order. + */ +ratesAndBenefitsData?: { +/** + * List with rates and benefits identifiers. + */ +rateAndBenefitsIdentifiers?: string[] +/** + * List with rates and benefits teasers. + */ +teaser?: string[] +} +/** + * Subscription information. + */ +subscriptionData?: (null | { + +}) +/** + * Object containing information about the ordering of items within the orderForm. + */ +itemsOrdination?: { +/** + * Criteria adopted to order the items in the list. + */ +criteria?: string +/** + * Indicates whether the ordering is ascending. + */ +ascending?: boolean +} +} +} +/** + * You can use this request to: + * + * 1. Change the quantity or price of one or more items to the shopping cart. + * 2. Add a new item to the shopping cart. + * + * **Important**: To add a new item to the shopping cart, do not send the string `index` in the request body. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure that represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * > This request has a time out of 45 seconds. + */ +"PATCH /api/checkout/pub/orderForm/:orderFormId/items": { +body: { +/** + * Array containing the cart items. Each object inside this array corresponds to a different item. + */ +orderItems?: { +/** + * The ID of the SKU in VTEX platform. + */ +id: string +/** + * The quantity of the item (SKU) in the cart. + */ +quantity: number +/** + * The seller responsible for the SKU. + */ +seller: string +/** + * The position of the item in the array. This string should be sent only to modify price or quantity of an item. NOTE: This string should not be sent when you are adding a new item to the cart. + */ +index?: number +/** + * Price of the item in cents. Send this value in case you want to make a bulk price change. + */ +price?: number +/** + * Array containing information on attachments. + */ +attachments?: { +/** + * Attachment identification. + */ +name?: string +/** + * Attachment content data. E.g. `"Do you want to receive packages?": "Yes"`. + */ +content?: (null | { + +}) +}[] +/** + * Indicates whether the item can be splitted. + */ +noSplitItem?: boolean +/** + * In order to optimize performance, this parameter allows some information to not be updated when there are changes in the minicart. For instance, if a shopper adds another unit of a given SKU to the cart, it may not be necessary to recalculate payment information, which could impact performance. This array accepts strings and currently the only possible value is `"paymentData"`. + */ +allowedOutdatedData?: string[] +}[] +} +response: { +/** + * ID of the orderForm corresponding to a specific cart. + */ +orderFormId?: string +/** + * Attribute created by the seller, in their VTEX store configuration. + */ +salesChannel?: string +/** + * Indicates whether the user is logged into the store. + */ +loggedIn?: boolean +/** + * Indicates whether order is checked in. + */ +isCheckedIn?: boolean +/** + * ID of the store. + */ +storeId?: (null | string) +/** + * Permission to modify item price manually. + */ +allowManualPrice?: boolean +/** + * Data can be edited. + */ +canEditData?: boolean +/** + * Unique ID associated with the customer profile. + */ +userProfileId?: string +/** + * Profile provider. + */ +profileProvider?: string +/** + * Available accounts. + */ +availableAccounts?: string[] +/** + * Information on each available address. + */ +availableAddresses?: { +/** + * Address type. + */ +addressType?: string +/** + * Name of the receiver. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * City of the address. + */ +city?: string +/** + * State of the address. + */ +state?: string +/** + * Country of the address. ISO three-letter code. + */ +country?: string +/** + * Street of the address. + */ +street?: string +/** + * Number of the address. + */ +number?: string +/** + * Neighborhood of the address. + */ +neighborhood?: string +/** + * Complement to the address. + */ +complement?: (null | string) +/** + * Reference that may help in the location of the address. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +/** + * User type. + */ +userType?: (null | string) +/** + * Ignore customer profile data. + */ +ignoreProfileData?: boolean +/** + * Total value of the order without separating cents. For example, $24.99 is represented `2499`. + */ +value?: number +/** + * Array containing an object for each message generated by our servers while processing the request. + */ +messages?: any[] +/** + * Information on each item in the order. + */ +items?: { +/** + * Unique ID. + */ +uniqueId?: string +/** + * ID of the item. + */ +id?: string +/** + * Product ID. + */ +productId?: string +/** + * Product Ref ID. + */ +productRefId?: string +/** + * Ref ID. + */ +refId?: string +/** + * European Article Number. + */ +ean?: (null | string) +/** + * Product name. + */ +name?: string +/** + * SKU name. + */ +skuName?: string +/** + * Modal type. + */ +modalType?: (null | string) +/** + * Parent item index. + */ +parentItemIndex?: (null | number) +/** + * Parent assembly binding. + */ +parentAssemblyBinding?: (null | string) +/** + * Price expiration date and time. + */ +priceValidUntil?: string +/** + * Tax value in cents. + */ +tax?: number +/** + * A unique identifier code assigned to a tax within the VTEX Admin. + */ +taxCode?: string +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Manual price in cents. + */ +manualPrice?: (null | number) +/** + * User that applied the manual price, if that is the case. + */ +manualPriceAppliedBy?: (null | string) +/** + * Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead. + */ +sellingPrice?: number +/** + * Reward value in cents. + */ +rewardValue?: number +/** + * Indicates whether item is a gift. + */ +isGift?: boolean +/** + * Additional information. + */ +additionalInfo?: { +/** + * Dimension. + */ +dimension?: (null | string) +/** + * Brand name. + */ +brandName?: string +/** + * Brand ID. + */ +brandId?: string +/** + * Offering information. + */ +offeringInfo?: (null | string) +/** + * Offering type. + */ +offeringType?: (null | string) +/** + * Offering type ID. + */ +offeringTypeId?: (null | string) +} +/** + * Presale date. + */ +preSaleDate?: (null | string) +/** + * Product category IDs. + */ +productCategoryIds?: string +/** + * Object, where each field is an ID from `productCategoryIds`. + */ +productCategories?: { +/** + * Product category corresponding to the ID in the field key. + */ +"{ID}"?: string +} +/** + * Quantity. + */ +quantity?: number +/** + * Seller. + */ +seller?: string +/** + * Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order. + */ +sellerChain?: string[] +/** + * Image URL. + */ +imageUrl?: string +/** + * Detail URL. + */ +detailUrl?: string +/** + * Information on services sold along with the SKU. Example: a gift package. + */ +bundleItems?: { +/** + * Service type. + */ +type?: string +/** + * Service identifier. + */ +id?: number +/** + * Service name. + */ +name?: string +/** + * Service price in cents. + */ +price?: number +}[] +/** + * Array containing information on attachments. + */ +attachments?: string[] +/** + * Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order. + */ +priceTags?: { +/** + * Price tag identifier. + */ +identifier?: string +/** + * Indicates whether price tag value is applied through a percentage. + */ +isPercentual?: boolean +/** + * Price tag name. + */ +name?: string +/** + * Price tag raw value. + */ +rawValue?: number +/** + * Price tag value. + */ +value?: number +}[] +/** + * Availability. + */ +availability?: string +/** + * Measurement unit. + */ +measurementUnit?: string +/** + * Unit multiplier. + */ +unitMultiplier?: number +/** + * Manufacturer code. + */ +manufacturerCode?: (null | string) +/** + * Price information for all units of a specific item. + */ +priceDefinition?: { +/** + * Item's calculated unitary selling price in cents. + */ +calculatedSellingPrice?: number +/** + * Total value for all units of the item in cents. + */ +total?: number +/** + * Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total. + */ +sellingPrices?: { +/** + * Value in cents for that specific rounding. + */ +value?: number +/** + * Rounding quantity, meaning how many items are rounded to this value. + */ +quantity?: number +}[] +} +}[] +/** + * Array containing the data of the item selected as a gift. + */ +selectableGifts?: any[] +/** + * Array containing an object for each totalizer for the purchase. Totalizers contain the sum of values for a specific part of the order (e.g. Total item value, Total shipping value). + */ +totalizers?: any[] +/** + * Shipping information pertinent to the order. + */ +shippingData?: { +/** + * Address information. + */ +address?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +} +/** + * Array with logistics information. Each object in this array corresponds to an object in the `items` array, based on the respective `itemIndex`. + */ +logisticsInfo?: { +/** + * Index corresponding to the position of the object in the `items` array. + */ +itemIndex?: number +/** + * SLA selected by the customer. + */ +selectedSla?: string +/** + * Delivery channel selected by the customer. + */ +selectedDeliveryChannel?: string +/** + * Address ID. + */ +addressId?: string +/** + * Information on available SLAs. + */ +slas?: { +/** + * SLA ID. + */ +id?: string +/** + * Delivery channel. + */ +deliveryChannel?: string +/** + * SLA name. + */ +name?: string +/** + * Information on each delivery ID. + */ +deliveryIds?: { +/** + * Courier ID. + */ +courierId?: string +/** + * Warehouse ID. + */ +warehouseId?: string +/** + * Warehouse ID. + */ +dockId?: string +/** + * Courier name. + */ +courierName?: string +/** + * Quantity. + */ +quantity?: number +}[] +/** + * Shipping estimate. For instance, Three business days will be represented `3bd`. + */ +shippingEstimate?: string +/** + * Shipping estimate date. + */ +shippingEstimateDate?: (null | string) +/** + * Estimate date of delivery. + */ +lockTTL?: string +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Tax in cents. + */ +tax?: number +/** + * Information on the pickup store. + */ +pickupStoreInfo?: { +/** + * Indicates whether it is the pickup store. + */ +isPickupStore?: boolean +/** + * Friendly name. + */ +friendlyName?: (null | string) +/** + * Address information. + */ +address?: (null | { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}) +/** + * Additional information. + */ +additionalInfo?: (null | string) +/** + * Corresponding dock ID. + */ +dockId?: (null | string) +} +/** + * Pickup point ID. + */ +pickupPointId?: (null | string) +/** + * Pickup point distance. + */ +pickupDistance?: number +/** + * Polygon name. + */ +polygonName?: (null | string) +/** + * Transit time. For instance, "three business days" is represented `3bd`. + */ +transitTime?: string +}[] +/** + * List of countries that the item may be shipped to. + */ +shipsTo?: string[] +/** + * Item ID. + */ +itemId?: string +/** + * List of available delivery channels. + */ +deliveryChannels?: { +/** + * Delivery channel ID. + */ +id?: string +}[] +}[] +/** + * Array with information on the selected addresses for the order. + */ +selectedAddresses?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: string +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +/** + * Array with information on the available addresses for the order. + */ +availableAddresses?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: string +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +} +/** + * Customer's profile information. + */ +clientProfileData?: { +/** + * Email address. + */ +email?: string +/** + * First name. + */ +firstName?: string +/** + * Last name. + */ +lastName?: string +/** + * Type of the document informed by the customer. + */ +documentType?: string +/** + * Document informed by the customer. + */ +document?: string +/** + * Phone number. + */ +phone?: string +/** + * Company name, if the customer is a legal entity. + */ +corporateName?: (null | string) +/** + * Trade name, if the customer is a legal entity. + */ +tradeName?: (null | string) +/** + * Corporate document, if the customer is a legal entity. + */ +corporateDocument?: (null | string) +/** + * State inscription, if the customer is a legal entity. + */ +stateInscription?: (null | string) +/** + * Corporate phone number, if the customer is a legal entity. + */ +corporatePhone?: (null | string) +/** + * Indicates whether the customer is a legal entity. + */ +isCorporate?: boolean +/** + * Indicates whether profile is complete on loading. + */ +profileCompleteOnLoading?: boolean +/** + * Indicates whether profile presents error on loading. + */ +profileErrorOnLoading?: (null | boolean) +/** + * Customer class. + */ +customerClass?: (null | string) +} +/** + * Information on the order's payment. + */ +paymentData?: { +/** + * Gift card information, if it applies to the order. + */ +giftCards?: { +/** + * Gift card redemption code. + */ +redemptionCode?: string +/** + * Gift card value in cents. + */ +value?: number +/** + * Gift card balance in cents. + */ +balance?: number +/** + * Gift card name. + */ +name?: string +/** + * Gift card ID. + */ +id?: string +/** + * Indicates whether gift card is in use. + */ +inUse?: boolean +/** + * Indicates whether gift card is special. + */ +isSpecialCard?: boolean +}[] +/** + * Information on each transaction pertinent to the order. + */ +transactions?: { +/** + * Indicates whether transaction is active. + */ +isActive?: boolean +/** + * Transaction ID. + */ +transactionId?: string +/** + * Merchant name. + */ +merchantName?: string +/** + * Information on each payment. + */ +payments?: { +/** + * Account ID. + */ +accountId?: string +/** + * Bin. + */ +bin?: string +/** + * Number of installments. + */ +installments?: number +/** + * Payment system. + */ +paymentSystem?: string +/** + * Reference value for calculating interest rates, in case it applies. Displayed in cents. + */ +referenceValue?: number +/** + * Value including interest, in case it applies. Displayed in cents. + */ +value?: number +}[] +/** + * Indicates whather transaction is shared. + */ +sharedTransaction?: boolean +}[] +} +/** + * Object containing promotion data such as coupon tracking information and internal or external UTMs. + */ +marketingData?: { +/** + * Sending an existing coupon code in this field will return the corresponding discount in the purchase. Use the [cart simulation](https://developers.vtex.com/docs/api-reference/checkout-api#post-/api/checkout/pub/orderForms/simulation) request to check which coupons might apply before placing the order. + */ +coupon?: string +/** + * UTM source. + */ +utmSource?: string +/** + * UTM medium. + */ +utmMedium?: string +/** + * UTM campaign + */ +utmCampaign?: string +/** + * utmi_page (internal utm). + */ +utmiPage?: (null | string) +/** + * utmi_part (internal utm). + */ +utmiPart?: (null | string) +/** + * utmi_campaign (internal utm). + */ +utmiCampaign?: (null | string) +} +/** + * Information on each seller. + */ +sellers?: { +/** + * Seller ID. + */ +id?: string +/** + * Seller name. + */ +name?: string +/** + * Seller logo. + */ +logo?: (null | string) +}[] +/** + * Object containing preferences from the client who placed the order. + */ +clientPreferencesData?: { +/** + * Client's locale. Examples: `pt-BR` and `en-US`. + */ +locale?: string +/** + * `true` if the client opted to receive newsletter from the store. + */ +optinNewsLetter?: boolean +} +/** + * Object containing commercial condition information. + */ +commercialConditionData?: (null | { + +}) +/** + * Object containing data from the store's configuration (stored in VTEX's License Manager). + */ +storePreferencesData?: { + +} +/** + * Gift registry list information. + */ +giftRegistryData?: (null | { + +}) +/** + * Optional field meant to hold additional information about the order. We recommend using this field for text, not data formats such as `JSON` even if escaped. For that purpose, see [Creating customizable fields](https://developers.vtex.com/docs/guides/customizable-fields-with-checkout-api). + */ +openTextField?: (null | string) +/** + * Object containing information pertinent to the order's invoice. + */ +invoiceData?: (null | { + +}) +/** + * Customer additional information. + */ +customData?: (null | { + +}) +/** + * Item metadata. + */ +itemMetadata?: { +/** + * List of objects containing metadata on each item in the order. + */ +items?: { +/** + * Item ID. + */ +id?: string +/** + * Seller. + */ +seller?: string +/** + * Product name. + */ +name?: string +/** + * SKU name. + */ +skuName?: string +/** + * Product ID. + */ +productId?: string +/** + * Ref ID. + */ +refId?: string +/** + * European Article Number. + */ +ean?: (null | string) +/** + * Image URL. + */ +imageUrl?: string +/** + * Detail URL. + */ +detailUrl?: string +}[] +} +/** + * Hooks information. + */ +hooksData?: (null | { + +}) +/** + * Information on rates and benefits that apply to the order. + */ +ratesAndBenefitsData?: { +/** + * List with rates and benefits identifiers. + */ +rateAndBenefitsIdentifiers?: string[] +/** + * List with rates and benefits teasers. + */ +teaser?: string[] +} +/** + * Subscription information. + */ +subscriptionData?: (null | { + +}) +/** + * Object containing information about the ordering of items within the orderForm. + */ +itemsOrdination?: { +/** + * Criteria adopted to order the items in the list. + */ +criteria?: string +/** + * Indicates whether the ordering is ascending. + */ +ascending?: boolean +} +} +} +/** + * This request changes the price of an SKU in a cart. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * You need to inform which cart you are referring to, by sending its `orderFormId` and what is the item whose price you want to change, by sending its `itemIndex`. + * + * You also need to pass the new price value in the body. + * + * Remember that, to use this endpoint, the feature of *manual price* must be active. To check if it's active, use the [Get orderForm configuration](https://developers.vtex.com/docs/api-reference/checkout-api#get-/api/checkout/pvt/configuration/orderForm) endpoint. To make it active, use the [Update orderForm configuration](https://developers.vtex.com/docs/api-reference/checkout-api#post-/api/checkout/pvt/configuration/orderForm) endpoint, making the `allowManualPrice` field `true`. + * + * > Whenever you use this request to change the price of an item, all items in that cart with the same SKU are affected by this change. This applies even to items that share the SKU but have been separated into different objects in the `items` array due to customizations or attachments, for example. + */ +"PUT /api/checkout/pub/orderForm/:orderFormId/items/:itemIndex/price": { +body: PriceChangeRequest +} +/** + * When a shopper provides an email address at Checkout, the platform tries to retrieve existing profile information for that email and add it to the shopping cart information. Use this request if you want to change this behavior for a given cart, meaning profile information will not be included in the order automattically. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * Note that this request will only work if you have not sent the `clientProfileData` to the cart yet. Sending it to a cart that already has a `clientProfileData` should return a status `403 Forbidden` error, with an `Access denied` message. + */ +"PATCH /api/checkout/pub/orderForm/:orderFormId/profile": { +body: { +/** + * Indicates whether profile data should be ignored. + */ +ignoreProfileData?: boolean +} +} +/** + * Retrieve a client's profile information by providing an email address. + * + * If the response body fields are empty, the following situations may have occurred: + * + * 1. There is no client registered with the email address provided in your store, or; + * 2. Client profile is invalid or incomplete. However, you can use the query parameter `ensureComplete=false` to get incomplete profiles. For more information, see [SmartCheckout - Customer information automatic fill-in](https://help.vtex.com/en/tutorial/smartcheckout-customer-information-automatic-fill-in--2Nuu3xAFzdhIzJIldAdtan). + * + * >⚠️ The authentication of this endpoint can change depending on the customer context. If you are consulting information from a customer with a complete profile on the store, the response will return the customer's data masked. You can only access the customer data with an authenticated request. + */ +"GET /api/checkout/pub/profiles": { +searchParams: { +/** + * Client's email address to be searched. + */ +email: string +/** + * Indicates whether the returned profiles must be complete or not. + */ +ensureComplete?: boolean +} +response: { +/** + * Unique ID associated with the customer profile. + */ +userProfileId?: string +/** + * Profile provider. + */ +profileProvider?: string +/** + * Available accounts. + */ +availableAccounts?: string[] +/** + * Information on each available address. + */ +availableAddresses?: { +/** + * Address type. + */ +addressType?: string +/** + * Name of the receiver. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * City of the address. + */ +city?: string +/** + * State of the address. + */ +state?: string +/** + * Country of the address. ISO three-letter code. + */ +country?: string +/** + * Street of the address. + */ +street?: string +/** + * Number of the address. + */ +number?: string +/** + * Neighborhood of the address. + */ +neighborhood?: string +/** + * Complement to the address. + */ +complement?: (null | string) +/** + * Reference that may help in the location of the address. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +/** + * Customer profile information. + */ +userProfile?: { +/** + * Email address. + */ +email?: string +/** + * First name. + */ +firstName?: string +/** + * Last name. + */ +lastName?: string +/** + * Document. + */ +document?: string +/** + * Document type. + */ +documentType?: string +/** + * Telephone number. + */ +phone?: string +/** + * Name of the company. Used for corporate clients. + */ +corporateName?: (null | string) +/** + * Trade name. Used for corporate clients. + */ +tradeName?: (null | string) +/** + * Document. Used for corporate clients. + */ +corporateDocument?: (null | string) +/** + * State inscription. Used for corporate clients. + */ +stateInscription?: (null | string) +/** + * Telephone number. Used for corporate clients. + */ +corporatePhone?: (null | string) +/** + * Indicates whether client is corporate. + */ +isCorporate?: boolean +/** + * Profile complete when loading. + */ +profileCompleteOnLoading?: (null | string) +/** + * Profile error when loading. + */ +profileErrorOnLoading?: (null | string) +/** + * Customer class. + */ +customerClass?: (null | string) +} +/** + * Indicates whether customer profile is complete. + */ +isComplete?: boolean +} +} +/** + * Use this request to include client profile information to a given shopping cart. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * > This request has a time out of 12 seconds. + * + * >⚠️ The authentication of this endpoint can change depending on the customer context. If you are modifying information from a customer with a complete profile on the store, the response will return the customer's data masked. You can only access the customer data with an authenticated request. + */ +"POST /api/checkout/pub/orderForm/:orderFormId/attachments/clientProfileData": { +/** + * Customer's profile information. + */ +body: { +/** + * Customer's email address. + */ +email: string +/** + * Customer's first name. + */ +firstName: string +/** + * Customer's last name. + */ +lastName: string +/** + * Type of the document informed by the customer. + */ +documentType: string +/** + * Document number informed by the customer. + */ +document: string +/** + * Customer's phone number. + */ +phone?: string +/** + * Company name, if the customer is a legal entity. + */ +corporateName?: string +/** + * Trade name, if the customer is a legal entity. + */ +tradeName?: string +/** + * Corporate document, if the customer is a legal entity. + */ +corporateDocument?: string +/** + * State inscription, if the customer is a legal entity. + */ +stateInscription?: string +/** + * Corporate phone number, if the customer is a legal entity. + */ +corporatePhone?: string +/** + * `true` if the customer is a legal entity. + */ +isCorporate?: boolean +} +} +/** + * Use this request to include shipping information and/or selected delivery option to a given shopping cart. + * + * To add shipping addresses send the `selectedAddresses` array. For delivery option use the `logisticsInfo` array. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * > This request has a time out of 12 seconds. + * + * >⚠️ The authentication of this endpoint can change depending on the customer context. If you are modifying information from a customer with a complete profile on the store, the response will return the customer's data masked. You can only access the customer data with an authenticated request. + */ +"POST /api/checkout/pub/orderForm/:orderFormId/attachments/shippingData": { +body: { +/** + * This field should be sent as `false` to prevent the address information from being filled in automatically based on the `postalCode` information. + */ +clearAddressIfPostalCodeNotFound?: boolean +/** + * List of objects with addresses information. + */ +selectedAddresses?: { +/** + * Type of address. For example, `Residential` or `Pickup`, among others. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Postal Code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address in case it applies. + */ +complement?: string +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: string +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +/** + * Array with logistics information on each item of the `items` array in the `orderForm`. + */ +logisticsInfo?: { +/** + * Index of item in items array + */ +itemIndex?: number +/** + * Delivery channel selected by the customer. For example, `"delivery"` or `"pickup-in-point"`. + */ +selectedDeliveryChannel?: string +/** + * Selected SLA. For example, `"normal"` or `"express"`. + */ +selectedSla?: string +}[] +} +response: { +/** + * ID of the `orderForm` corresponding to a specific cart. + */ +orderFormId?: string +/** + * Attribute created by the seller, in their VTEX store configuration. + */ +salesChannel?: string +/** + * Indicates whether the user is logged into the store. + */ +loggedIn?: boolean +/** + * Indicates whether order is checked in. + */ +isCheckedIn?: boolean +/** + * ID of the store. + */ +storeId?: (null | string) +/** + * Checked in pickuppoint identification. + */ +checkedInPickupPointId?: (null | string) +/** + * Permission to modify item price manually. + */ +allowManualPrice?: boolean +/** + * Data can be edited. + */ +canEditData?: boolean +/** + * Unique ID associated with the customer profile. + */ +userProfileId?: (null | string) +/** + * User type. + */ +userType?: (null | string) +/** + * Ignore customer profile data. + */ +ignoreProfileData?: boolean +/** + * Total value of the order without separating cents. For example, $24.99 is represented `2499`. + */ +value?: number +/** + * Array containing an object for each message generated by our servers while processing the request. + */ +messages?: any[] +/** + * Information on each item in the order. + */ +items?: { +/** + * Unique ID. + */ +uniqueId?: string +/** + * ID of the item. + */ +id?: string +/** + * Product ID. + */ +productId?: string +/** + * Product Ref ID. + */ +productRefId?: string +/** + * Ref ID. + */ +refId?: string +/** + * European Article Number. + */ +ean?: (null | string) +/** + * Product name. + */ +name?: string +/** + * SKU name. + */ +skuName?: string +/** + * Modal type. + */ +modalType?: (null | string) +/** + * Parent item index. + */ +parentItemIndex?: (null | number) +/** + * Parent assembly binding. + */ +parentAssemblyBinding?: (null | string) +/** + * Price expiration date and time. + */ +priceValidUntil?: string +/** + * Tax value in cents. + */ +tax?: number +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Manual price in cents. + */ +manualPrice?: (null | number) +/** + * User that applied the manual price, if that is the case. + */ +manualPriceAppliedBy?: (null | string) +/** + * Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead. + */ +sellingPrice?: number +/** + * Reward value in cents. + */ +rewardValue?: number +/** + * Indicates whether item is a gift. + */ +isGift?: boolean +/** + * Additional information. + */ +additionalInfo?: { +/** + * Dimension. + */ +dimension?: (null | string) +/** + * Brand name. + */ +brandName?: string +/** + * Brand ID. + */ +brandId?: string +/** + * Offering information. + */ +offeringInfo?: (null | string) +/** + * Offering type. + */ +offeringType?: (null | string) +/** + * Offering type ID. + */ +offeringTypeId?: (null | string) +} +/** + * Presale date. + */ +preSaleDate?: (null | string) +/** + * Product category IDs. + */ +productCategoryIds?: string +/** + * Object, where each field is an ID from `productCategoryIds`. + */ +productCategories?: { +/** + * Product category corresponding to the ID in the field key. + */ +"{ID}"?: string +} +/** + * Quantity. + */ +quantity?: number +/** + * Seller. + */ +seller?: string +/** + * Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order. + */ +sellerChain?: string[] +/** + * Image URL. + */ +imageUrl?: string +/** + * Detail URL. + */ +detailUrl?: string +/** + * Information on services sold along with the SKU. Example: a gift package. + */ +bundleItems?: { +/** + * Service type. + */ +type?: string +/** + * Service identifier. + */ +id?: number +/** + * Service name. + */ +name?: string +/** + * Service price in cents. + */ +price?: number +}[] +/** + * Array containing information on attachments. + */ +attachments?: string[] +/** + * Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order. + */ +priceTags?: { +/** + * Price tag identifier. + */ +identifier?: string +/** + * Indicates whether price tag value is applied through a percentage. + */ +isPercentual?: boolean +/** + * Price tag name. + */ +name?: string +/** + * Price tag raw value. + */ +rawValue?: number +/** + * Price tag value. + */ +value?: number +}[] +/** + * Availability. + */ +availability?: string +/** + * Measurement unit. + */ +measurementUnit?: string +/** + * Unit multiplier. + */ +unitMultiplier?: number +/** + * Manufacturer code. + */ +manufacturerCode?: (null | string) +/** + * Price information for all units of a specific item. + */ +priceDefinition?: { +/** + * Item's calculated unitary selling price in cents. + */ +calculatedSellingPrice?: number +/** + * Total value for all units of the item in cents. + */ +total?: number +/** + * Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total. + */ +sellingPrices?: { +/** + * Value in cents for that specific rounding. + */ +value?: number +/** + * Rounding quantity, meaning how many items are rounded to this value. + */ +quantity?: number +}[] +} +}[] +/** + * Array containing the data of the item selected as a gift. + */ +selectableGifts?: any[] +/** + * Array containing an object for each totalizer for the purchase. Totalizers contain the sum of values for a specific part of the order (e.g. Total item value, Total shipping value). + */ +totalizers?: any[] +/** + * Shipping information pertinent to the order. + */ +shippingData?: { +/** + * Address information. + */ +address?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +} +/** + * Array with logistics information. Each object in this array corresponds to an object in the `items` array, based on the respective `itemIndex`. + */ +logisticsInfo?: { +/** + * Index corresponding to the position of the object in the `items` array. + */ +itemIndex?: number +/** + * SLA selected by the customer. + */ +selectedSla?: (null | string) +/** + * Delivery channel selected by the customer. + */ +selectedDeliveryChannel?: (null | string) +/** + * Address ID. + */ +addressId?: string +/** + * Information on available SLAs. + */ +slas?: { +/** + * SLA ID. + */ +id?: string +/** + * Delivery channel. + */ +deliveryChannel?: string +/** + * SLA name. + */ +name?: string +/** + * Information on each delivery ID. + */ +deliveryIds?: { +/** + * Courier ID. + */ +courierId?: string +/** + * Warehouse ID. + */ +warehouseId?: string +/** + * Warehouse ID. + */ +dockId?: string +/** + * Courier name. + */ +courierName?: string +/** + * Quantity. + */ +quantity?: number +}[] +/** + * Shipping estimate. For instance, Three business days will be represented `3bd`. + */ +shippingEstimate?: string +/** + * Shipping estimate date. + */ +shippingEstimateDate?: (null | string) +/** + * Estimate date of delivery. + */ +lockTTL?: (null | string) +/** + * This object contains information about the delivery window available to the shopper. + */ +availableDeliveryWindows?: { +/** + * Delivery window starting day and time in UTC. + */ +startDateUtc?: string +/** + * Delivery window ending day and time in UTC. + */ +endDateUtc?: string +/** + * Delivery window price. + */ +price?: number +/** + * Delivery window list price. + */ +lisPrice?: number +/** + * Delivery window tax. + */ +tax?: number +} +/** + * In case of scheduled delivery, this object will contain information on the delivery window selected by the shopper. + */ +deliveryWindow?: { +/** + * Delivery window starting day and time in UTC. + */ +startDateUtc?: string +/** + * Delivery window ending day and time in UTC. + */ +endDateUtc?: string +/** + * Delivery window price. + */ +price?: number +/** + * Delivery window list price. + */ +lisPrice?: number +/** + * Delivery window tax. + */ +tax?: number +} +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Tax in cents. + */ +tax?: number +/** + * Information on the pickup store. + */ +pickupStoreInfo?: { +/** + * Indicates whether it is the pickup store. + */ +isPickupStore?: boolean +/** + * Friendly name. + */ +friendlyName?: (null | string) +/** + * Address information. + */ +address?: (null | { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}) +/** + * Additional information. + */ +additionalInfo?: (null | string) +/** + * Corresponding dock ID. + */ +dockId?: (null | string) +} +/** + * Pickup point ID. + */ +pickupPointId?: (null | string) +/** + * Pickup point distance. + */ +pickupDistance?: number +/** + * Polygon name. + */ +polygonName?: (null | string) +/** + * Transit time. For instance, "three business days" is represented `3bd`. + */ +transitTime?: string +}[] +/** + * List of countries that the item may be shipped to. + */ +shipsTo?: string[] +/** + * Item ID. + */ +itemId?: string +/** + * List of available delivery channels. + */ +deliveryChannels?: { +/** + * Delivery channel ID. + */ +id?: string +}[] +}[] +/** + * Array with information on the selected addresses for the order. + */ +selectedAddresses?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +/** + * Information on each available address. + */ +availableAddresses?: { +/** + * Address type. + */ +addressType?: string +/** + * Name of the receiver. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * City of the address. + */ +city?: string +/** + * State of the address. + */ +state?: string +/** + * Country of the address. ISO three-letter code. + */ +country?: string +/** + * Street of the address. + */ +street?: string +/** + * Number of the address. + */ +number?: string +/** + * Neighborhood of the address. + */ +neighborhood?: string +/** + * Complement to the address. + */ +complement?: (null | string) +/** + * Reference that may help in the location of the address. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +/** + * Array containing pickup points information. + */ +pickupPoints?: any[] +} +/** + * Customer's profile information. + */ +clientProfileData?: { +/** + * Email address. + */ +email?: string +/** + * First name. + */ +firstName?: string +/** + * Last name. + */ +lastName?: string +/** + * Type of the document informed by the customer. + */ +documentType?: string +/** + * Document informed by the customer. + */ +document?: string +/** + * Phone number. + */ +phone?: string +/** + * Company name, if the customer is a legal entity. + */ +corporateName?: (null | string) +/** + * Trade name, if the customer is a legal entity. + */ +tradeName?: (null | string) +/** + * Corporate document, if the customer is a legal entity. + */ +corporateDocument?: (null | string) +/** + * State inscription, if the customer is a legal entity. + */ +stateInscription?: (null | string) +/** + * Corporate phone number, if the customer is a legal entity. + */ +corporatePhone?: (null | string) +/** + * Indicates whether the customer is a legal entity. + */ +isCorporate?: boolean +/** + * Indicates whether profile is complete on loading. + */ +profileCompleteOnLoading?: boolean +/** + * Indicates whether profile presents error on loading. + */ +profileErrorOnLoading?: (null | boolean) +/** + * Customer class. + */ +customerClass?: (null | string) +} +/** + * Payment data information. + */ +paymentData?: { +/** + * Indicate whether this object's information is up to date according to the order's items. An order can not be placed if `"outdated"` + */ +updateStatus?: string +/** + * Installment options information. + */ +installmentOptions?: any[] +/** + * Information on payment systems. + */ +paymentSystems?: { +/** + * Payment system ID. + */ +id?: number +/** + * Payment system name. + */ +name?: string +/** + * Payment group name. + */ +groupName?: string +/** + * Payment system validator. + */ +validator?: (null | { + +}) +/** + * String ID. + */ +stringId?: string +/** + * Template. + */ +template?: string +/** + * Indicates whether a document is required. + */ +requiresDocument?: boolean +/** + * Indicates whether a document is shown. + */ +displayDocument?: boolean +/** + * Indicates whether it is custom. + */ +isCustom?: boolean +/** + * Description. + */ +description?: string +/** + * Indicates whether a authentication is required. + */ +requiresAuthentication?: boolean +/** + * Payment due date. + */ +dueDate?: string +/** + * Availability of payment. + */ +availablePayments?: (null | string) +}[] +/** + * Information on each payment. + */ +payments?: any[] +/** + * Gift card information, if it applies to the order. + */ +giftCards?: any[] +/** + * Array of gift card messages. + */ +giftCardMessages?: any[] +/** + * Available accounts. + */ +availableAccounts?: any[] +/** + * Available tokens. + */ +availableTokens?: any[] +/** + * Available associations. + */ +availableAssociations?: { + +} +} +/** + * Object containing promotion data such as coupon tracking information and internal or external UTMs. + */ +marketingData?: (null | { + +}) +/** + * Information on each seller. + */ +sellers?: { +/** + * Seller ID. + */ +id?: string +/** + * Seller name. + */ +name?: string +/** + * Seller logo. + */ +logo?: (null | string) +}[] +/** + * Object containing preferences from the client who placed the order. + */ +clientPreferencesData?: { +/** + * Client's locale. Examples: `pt-BR` and `en-US`. + */ +locale?: string +/** + * `true` if the client opted to receive newsletter from the store. + */ +optinNewsLetter?: boolean +} +/** + * Object containing commercial condition information. + */ +commercialConditionData?: (null | { + +}) +/** + * Object containing data from the store's configuration (stored in VTEX's License Manager). + */ +storePreferencesData?: { +/** + * Three letters ISO code of the country (ISO 3166 ALPHA-3). + */ +countryCode?: string +/** + * Defines whether the customer want the store to keep their personal and payment data saved. + */ +saveUserData?: boolean +/** + * Time zone from where the order was made. + */ +timeZone?: string +/** + * Currency code in ISO 4217. For example, `BRL`. + */ +currencyCode?: string +/** + * Currency Locale Code in LCID in decimal. + */ +currencyLocale?: number +/** + * Currency symbol. + */ +currencySymbol?: string +/** + * Object with currency format details. + */ +CurrencyFormatInfo?: { +/** + * Quantity of currency decimal digits. + */ +CurrencyDecimalDigits?: number +/** + * Defines what currency decimal separator will be applied. + */ +CurrencyDecimalSeparator?: string +/** + * Defines what currency group separator will be applied. + */ +CurrencyGroupSeparator?: string +/** + * Defines how many characters will be grouped. + */ +CurrencyGroupSize?: number +/** + * Defines if all prices will be initiated with the currency symbol (`true`) or not (`false`). + */ +StartsWithCurrencySymbol?: boolean +} +} +/** + * Gift registry list information. + */ +giftRegistryData?: (null | { + +}) +/** + * Optional field meant to hold additional information about the order. We recommend using this field for text, not data formats such as `JSON` even if escaped. For that purpose, see [Creating customizable fields](https://developers.vtex.com/vtex-rest-api/docs/creating-customizable-fields-in-the-cart-with-checkout-api-1). + */ +openTextField?: (null | string) +/** + * Object containing information pertinent to the order's invoice. + */ +invoiceData?: (null | { + +}) +/** + * Customer additional information. + */ +customData?: (null | { + +}) +/** + * Item metadata. + */ +itemMetadata?: (null | { + +}) +/** + * Hooks information. + */ +hooksData?: (null | { + +}) +/** + * Information on rates and benefits that apply to the order. + */ +ratesAndBenefitsData?: (null | { + +}) +/** + * Subscription information. + */ +subscriptionData?: (null | { + +}) +/** + * Object containing information about the ordering of items within the orderForm. + */ +itemsOrdination?: (null | { + +}) +} +} +/** + * Use this request to include client preferences information to a given shopping cart. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * > This request has a time out of 12 seconds. + */ +"POST /api/checkout/pub/orderForm/:orderFormId/attachments/clientPreferencesData": { +body: { +/** + * Locale chosen by the shopper. Determines website language. + */ +locale?: string +/** + * Indicates whether the shopper opted in to receive the store's news letter. + */ +optinNewsLetter?: boolean +} +response: any +} +/** + * Use this request to include marketing information to a given shopping cart. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * > This request has a time out of 12 seconds. + */ +"POST /api/checkout/pub/orderForm/:orderFormId/attachments/marketingData": { +body: { +/** + * Sending an existing coupon code in this field will return the corresponding discount in the purchase. Use the [cart simulation](https://developers.vtex.com/vtex-rest-api/reference/orderform#orderformsimulation) request to check which coupons might apply before placing the order. + * + * To send more than one coupon code to the same cart, use commas. E.g.`"sales25, blackfriday30"`. + */ +coupon?: string +/** + * Marketing tags. Limited to a maximum of 50 items. + */ +marketingTags?: string[] +/** + * UTM source. + */ +utmSource?: string +/** + * UTM medium. + */ +utmMedium?: string +/** + * UTM campaign + */ +utmCampaign?: string +/** + * utmi_page (internal utm) + */ +utmiPage?: string +/** + * utmi_part (internal utm) + */ +utmiPart?: string +/** + * utmi_campaign (internal utm) + */ +utmiCampaign?: string +} +} +/** + * Use this request to include payment information to a given shopping cart. The payment information attachment in the shopping cart does not determine the final order payment method in itself. However, it allows tha platform to update any relevant information that may be impacted by the payment method. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * > This request has a time out of 12 seconds. + */ +"POST /api/checkout/pub/orderForm/:orderFormId/attachments/paymentData": { +body: { +/** + * Array with information on each payment chosen by the shopper. + */ +payments?: { +/** + * Payment system ID. + */ +paymentSystem?: number +/** + * Payment system name. + */ +paymentSystemName?: string +/** + * Payment system group. + */ +group?: string +/** + * Selected number of installments. + */ +installments?: number +/** + * Installments' interest rate. + */ +installmentsInterestRate?: number +/** + * Value of the installments. + */ +installmentsValue?: number +/** + * Total value assigned to this payment. + */ +value?: number +/** + * Reference value used to calculate total order value with interest. + */ +referenceValue?: number +/** + * Indicates whether billing address for this payment is the default address. + */ +hasDefaultBillingAddress?: boolean +}[] +} +} +/** + * This endpoint is used for the merchant to add to the cart any relevant information that is related to the context of a specific order. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * > This request has a time out of 12 seconds. + */ +"POST /api/checkout/pub/orderForm/:orderFormId/attachments/merchantContextData": { +body: { +/** + * Sales Associate information. + */ +salesAssociateData: { +/** + * Sales Associate (Seller) identification code. All information should be registered by the merchant. Maximum of 100 characters. + */ +salesAssociateId?: string +} +} +response: { +/** + * Sales Associate (Seller) identification code. + */ +salesAssociateId?: string +} +} +/** + * Your account may create `apps`, which contain custom fields, through the [Update orderForm configuration](https://developers.vtex.com/docs/api-reference/checkout-api#post-/api/checkout/pvt/configuration/orderForm) request. The values of these custom fields can then be updated by this request. + * + * To do that, you need to inform the ID of the app you created with the configuration API (`appId`). + * + * In the body of the request, for each field created in this app (`appFieldName`) you will inform a value (`appFieldValue`). + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + */ +"PUT /api/checkout/pub/orderForm/:orderFormId/customData/:appId": { +/** + * Here you must add the pairs of Field Name and Field Value. + */ +body: { +[k: string]: any +} +response: any +} +/** + * Your account may create `apps`, which contain custom fields, through the [Update orderForm configuration](https://developers.vtex.com/docs/api-reference/checkout-api#post-/api/checkout/pvt/configuration/orderForm) request. The value of a specific custom field can then be updated by this request. + * + * To do that, you need to inform in the URL the ID of the app you created with the configuration API (`appId`). + * + * In the body of the request, you will inform the new value (`appFieldValue`, passed through the body) of the specific field created in this app (identified by the `appFieldName` parameter, passed through the URL). + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + */ +"PUT /api/checkout/pub/orderForm/:orderFormId/customData/:appId/:appFieldName": { +body: SetsinglecustomfieldvalueRequest +} +/** + * Your account may create `apps`, which contain custom fields, through the [Update orderForm configuration](https://developers.vtex.com/docs/api-reference/checkout-api#post-/api/checkout/pvt/configuration/orderForm) request. The value of a specific custom field can be removed by this request. + * + * To do that, you need to inform in the URL the ID of the app you created with the configuration API (`appId`). + * + * You also need to iform the specific field created in this app (identified by the `appFieldName` parameter, also passed through the URL) whose value you want to remove. + */ +"DELETE /api/checkout/pub/orderForm/:orderFormId/customData/:appId/:appFieldName": { + +} +/** + * Retrieves the settings that are currently applied to every orderForm in the account. + * + * These settings are defined by the request [Update orderForm configuration](https://developers.vtex.com/docs/api-reference/checkout-api#post-/api/checkout/pvt/configuration/orderForm). + * + * Always use this request to retrieve the current configuration before performing an update. By doing so you ensure that you are modifying only the properties you want. + */ +"GET /api/checkout/pvt/configuration/orderForm": { +response: { +/** + * Payment configuration information. + */ +paymentConfiguration?: { +/** + * Determines whether pre-authorized payments require authentication. + */ +requiresAuthenticationForPreAuthorizedPaymentOption?: boolean +/** + * By default (when `false`), on a multi-seller purchase is on the run, a simple intersection with installment options configured by every seller will be available. When indicated as `true`, this option allows a more complex but flexible installment option, since it considers max installments of every seller configuration, even if those do not match. Installment values may not be equal in this case. + */ +allowInstallmentsMerge?: boolean +} +/** + * External tax service configuration information. + */ +taxConfiguration?: (null | { +/** + * Endpoint URL. + */ +url?: (null | string) +/** + * Authorization header. + */ +authorizationHeader?: (null | string) +/** + * Custom data ID sent to the tax system. + */ +appId?: string +}) +/** + * Minimum SKU quantity by cart. + */ +minimumQuantityAccumulatedForItems?: number +/** + * Number of price digits. + */ +decimalDigitsPrecision?: number +/** + * Minimum cart value. + */ +minimumValueAccumulated?: (null | number) +/** + * Array of objects containing Apps configuration information. + */ +apps?: (null | { +/** + * App ID. + */ +id?: string +/** + * Array of fields available to the app. + */ +fields?: string[] +/** + * App major version. + */ +major?: number +}[]) +/** + * On the same purchase, allows the selection of items from multiple delivery channels. + */ +allowMultipleDeliveries?: (null | boolean) +/** + * Allows the editing of SKU prices right in the cart. + */ +allowManualPrice?: (null | boolean) +/** + * Allows users to select whether they want the store to keep their personal and payment data saved. + */ +savePersonalDataAsOptIn?: (null | boolean) +/** + * Allows the input of a limit of white label sellers involved on the cart. + */ +maxNumberOfWhiteLabelSellers?: (null | number) +/** + * Allows, on a first purchase, masking client's data. It could be useful when a shared cart is used and the client does not want to share its data. + */ +maskFirstPurchaseData?: (null | boolean) +/** + * Configures reCAPTCHA validation for the account, defining in which situations the shopper will be prompted to validate a purchase with reCAPTCHA. Learn more about [reCAPTCHA validation for VTEX stores](https://help.vtex.com/en/tutorial/using-recaptcha-at-checkout--18Te3oDd7f4qcjKu9jhNzP) + * + * Possible values are: + * - `"never"`: no purchases are validated with reCAPTCHA. + * - `"always"`: every purchase is validated with reCAPTCHA. + * - `"vtexCriteria"`: only some purchases are validated with reCAPTCHA in order to minimize friction and improve shopping experience. VTEX's algorithm determines which sessions are trustworthy and which should be validated with reCAPTCHA. This is the recommended option. + */ +recaptchaValidation?: string +/** + * Indicates whether authentication is required for completing purchases. + */ +requiresLoginToPlaceOrder?: boolean +/** + * Minimum interval (in seconds) between successive purchases. + */ +minimumPurchaseDowntimeSeconds?: number +/** + * Minimum cart existence period (in seconds) before allowing the use of a new credit card. + */ +cartAgeToUseNewCardSeconds?: number +} +} +/** + * Determines settings that will apply to every orderForm in the account. + * + * For example, if you create an app using this request, every orderForm of this account will have the custom fields created though it. + * + * >ℹ️ Always retrieve the current configuration before performing an update to ensure that you are modifying only the properties you want. Otherwise, old values can be overwritten. To retrieve the current configuration, use the request [Get orderForm configuration](https://developers.vtex.com/docs/api-reference/checkout-api#get-/api/checkout/pvt/configuration/orderForm). + */ +"POST /api/checkout/pvt/configuration/orderForm": { +body: UpdateorderFormconfigurationRequest +} +/** + * Retrieves a marketplace’s window to change seller, that is, the period when it is possible to choose another seller to fulfill a given order after the original seller has canceled it. + * + * The default period for this window is of 2 days, but it can be configured by the request Update window to change seller. + */ +"GET /api/checkout/pvt/configuration/window-to-change-seller": { + +} +/** + * Updates a marketplace’s window to change seller, that is, the period when it is possible to choose another seller to fulfill a given order after the original seller has canceled it. + * + * It is possible to check the current window using the request Get window to change seller. + */ +"POST /api/checkout/pvt/configuration/window-to-change-seller": { +body: WaitingTime +} +/** + * This request removes all messages from the `messages` field of the orderForm , leaving it empty. + * + * You must send an empty JSON in the body of the request. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * **Important**: **Request Body** must always be sent with empty value "{ }" in this endpoint. + */ +"POST /api/checkout/pub/orderForm/:orderFormId/messages/clear": { +/** + * This object must be empty. + */ +body: { + +} +response: { +/** + * ID of the orderForm corresponding to a specific cart. + */ +orderFormId?: string +/** + * Attribute created by the seller, in their VTEX store configuration. + */ +salesChannel?: string +/** + * Indicates whether the user is logged into the store. + */ +loggedIn?: boolean +/** + * Indicates whether order is checked in. + */ +isCheckedIn?: boolean +/** + * ID of the store. + */ +storeId?: (null | string) +/** + * Permission to modify item price manually. + */ +allowManualPrice?: boolean +/** + * Data can be edited. + */ +canEditData?: boolean +/** + * Unique ID associated with the customer profile. + */ +userProfileId?: string +/** + * Profile provider. + */ +profileProvider?: string +/** + * Available accounts. + */ +availableAccounts?: string[] +/** + * Information on each available address. + */ +availableAddresses?: { +/** + * Address type. + */ +addressType?: string +/** + * Name of the receiver. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * City of the address. + */ +city?: string +/** + * State of the address. + */ +state?: string +/** + * Country of the address. ISO three-letter code. + */ +country?: string +/** + * Street of the address. + */ +street?: string +/** + * Number of the address. + */ +number?: string +/** + * Neighborhood of the address. + */ +neighborhood?: string +/** + * Complement to the address. + */ +complement?: (null | string) +/** + * Reference that may help in the location of the address. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +/** + * User type. + */ +userType?: (null | string) +/** + * Ignore customer profile data. + */ +ignoreProfileData?: boolean +/** + * Total value of the order without separating cents. For example, $24.99 is represented `2499`. + */ +value?: number +/** + * Array containing an object for each message generated by our servers while processing the request. + */ +messages?: any[] +/** + * Information on each item in the order. + */ +items?: { +/** + * Unique ID. + */ +uniqueId?: string +/** + * ID of the item. + */ +id?: string +/** + * Product ID. + */ +productId?: string +/** + * Product Ref ID. + */ +productRefId?: string +/** + * Ref ID. + */ +refId?: string +/** + * European Article Number. + */ +ean?: (null | string) +/** + * Product name. + */ +name?: string +/** + * SKU name. + */ +skuName?: string +/** + * Modal type. + */ +modalType?: (null | string) +/** + * Parent item index. + */ +parentItemIndex?: (null | number) +/** + * Parent assembly binding. + */ +parentAssemblyBinding?: (null | string) +/** + * Price expiration date and time. + */ +priceValidUntil?: string +/** + * Tax value in cents. + */ +tax?: number +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Manual price in cents. + */ +manualPrice?: (null | number) +/** + * User that applied the manual price, if that is the case. + */ +manualPriceAppliedBy?: (null | string) +/** + * Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead. + */ +sellingPrice?: number +/** + * Reward value in cents. + */ +rewardValue?: number +/** + * Indicates whether item is a gift. + */ +isGift?: boolean +/** + * Additional information. + */ +additionalInfo?: { +/** + * Dimension. + */ +dimension?: (null | string) +/** + * Brand name. + */ +brandName?: string +/** + * Brand ID. + */ +brandId?: string +/** + * Offering information. + */ +offeringInfo?: (null | string) +/** + * Offering type. + */ +offeringType?: (null | string) +/** + * Offering type ID. + */ +offeringTypeId?: (null | string) +} +/** + * Presale date. + */ +preSaleDate?: (null | string) +/** + * Product category IDs. + */ +productCategoryIds?: string +/** + * Object, where each field is an ID from `productCategoryIds`. + */ +productCategories?: { +/** + * Product category corresponding to the ID in the field key. + */ +"{ID}"?: string +} +/** + * Quantity. + */ +quantity?: number +/** + * Seller. + */ +seller?: string +/** + * Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order. + */ +sellerChain?: string[] +/** + * Image URL. + */ +imageUrl?: string +/** + * Detail URL. + */ +detailUrl?: string +/** + * Information on services sold along with the SKU. Example: a gift package. + */ +bundleItems?: { +/** + * Service type. + */ +type?: string +/** + * Service identifier. + */ +id?: number +/** + * Service name. + */ +name?: string +/** + * Service price in cents. + */ +price?: number +}[] +/** + * Array containing information on attachments. + */ +attachments?: string[] +/** + * Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order. + */ +priceTags?: { +/** + * Price tag identifier. + */ +identifier?: string +/** + * Indicates whether price tag value is applied through a percentage. + */ +isPercentual?: boolean +/** + * Price tag name. + */ +name?: string +/** + * Price tag raw value. + */ +rawValue?: number +/** + * Price tag value. + */ +value?: number +}[] +/** + * Availability. + */ +availability?: string +/** + * Measurement unit. + */ +measurementUnit?: string +/** + * Unit multiplier. + */ +unitMultiplier?: number +/** + * Manufacturer code. + */ +manufacturerCode?: (null | string) +/** + * Price information for all units of a specific item. + */ +priceDefinition?: { +/** + * Item's calculated unitary selling price in cents. + */ +calculatedSellingPrice?: number +/** + * Total value for all units of the item in cents. + */ +total?: number +/** + * Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total. + */ +sellingPrices?: { +/** + * Value in cents for that specific rounding. + */ +value?: number +/** + * Rounding quantity, meaning how many items are rounded to this value. + */ +quantity?: number +}[] +} +}[] +/** + * Array containing the data of the item selected as a gift. + */ +selectableGifts?: any[] +/** + * Array containing an object for each totalizer for the purchase. Totalizers contain the sum of values for a specific part of the order (e.g. Total item value, Total shipping value). + */ +totalizers?: any[] +/** + * Shipping information pertinent to the order. + */ +shippingData?: { +/** + * Address information. + */ +address?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +} +/** + * Array with logistics information. Each object in this array corresponds to an object in the `items` array, based on the respective `itemIndex`. + */ +logisticsInfo?: { +/** + * Index corresponding to the position of the object in the `items` array. + */ +itemIndex?: number +/** + * SLA selected by the customer. + */ +selectedSla?: string +/** + * Delivery channel selected by the customer. + */ +selectedDeliveryChannel?: string +/** + * Address ID. + */ +addressId?: string +/** + * Information on available SLAs. + */ +slas?: { +/** + * SLA ID. + */ +id?: string +/** + * Delivery channel. + */ +deliveryChannel?: string +/** + * SLA name. + */ +name?: string +/** + * Information on each delivery ID. + */ +deliveryIds?: { +/** + * Courier ID. + */ +courierId?: string +/** + * Warehouse ID. + */ +warehouseId?: string +/** + * Warehouse ID. + */ +dockId?: string +/** + * Courier name. + */ +courierName?: string +/** + * Quantity. + */ +quantity?: number +}[] +/** + * Shipping estimate. For instance, Three business days will be represented `3bd`. + */ +shippingEstimate?: string +/** + * Shipping estimate date. + */ +shippingEstimateDate?: (null | string) +/** + * Estimate date of delivery. + */ +lockTTL?: string +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Tax in cents. + */ +tax?: number +/** + * Information on the pickup store. + */ +pickupStoreInfo?: { +/** + * Indicates whether it is the pickup store. + */ +isPickupStore?: boolean +/** + * Friendly name. + */ +friendlyName?: (null | string) +/** + * Address information. + */ +address?: (null | { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}) +/** + * Additional information. + */ +additionalInfo?: (null | string) +/** + * Corresponding dock ID. + */ +dockId?: (null | string) +} +/** + * Pickup point ID. + */ +pickupPointId?: (null | string) +/** + * Pickup point distance. + */ +pickupDistance?: number +/** + * Polygon name. + */ +polygonName?: (null | string) +/** + * Transit time. For instance, "three business days" is represented `3bd`. + */ +transitTime?: string +}[] +/** + * List of countries that the item may be shipped to. + */ +shipsTo?: string[] +/** + * Item ID. + */ +itemId?: string +/** + * List of available delivery channels. + */ +deliveryChannels?: { +/** + * Delivery channel ID. + */ +id?: string +}[] +}[] +/** + * Array with information on the selected addresses for the order. + */ +selectedAddresses?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: string +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +/** + * Array with information on the available addresses for the order. + */ +availableAddresses?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: string +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +} +/** + * Customer's profile information. + */ +clientProfileData?: { +/** + * Email address. + */ +email?: string +/** + * First name. + */ +firstName?: string +/** + * Last name. + */ +lastName?: string +/** + * Type of the document informed by the customer. + */ +documentType?: string +/** + * Document informed by the customer. + */ +document?: string +/** + * Phone number. + */ +phone?: string +/** + * Company name, if the customer is a legal entity. + */ +corporateName?: (null | string) +/** + * Trade name, if the customer is a legal entity. + */ +tradeName?: (null | string) +/** + * Corporate document, if the customer is a legal entity. + */ +corporateDocument?: (null | string) +/** + * State inscription, if the customer is a legal entity. + */ +stateInscription?: (null | string) +/** + * Corporate phone number, if the customer is a legal entity. + */ +corporatePhone?: (null | string) +/** + * Indicates whether the customer is a legal entity. + */ +isCorporate?: boolean +/** + * Indicates whether profile is complete on loading. + */ +profileCompleteOnLoading?: boolean +/** + * Indicates whether profile presents error on loading. + */ +profileErrorOnLoading?: (null | boolean) +/** + * Customer class. + */ +customerClass?: (null | string) +} +/** + * Information on the order's payment. + */ +paymentData?: { +/** + * Gift card information, if it applies to the order. + */ +giftCards?: { +/** + * Gift card redemption code. + */ +redemptionCode?: string +/** + * Gift card value in cents. + */ +value?: number +/** + * Gift card balance in cents. + */ +balance?: number +/** + * Gift card name. + */ +name?: string +/** + * Gift card ID. + */ +id?: string +/** + * Indicates whether gift card is in use. + */ +inUse?: boolean +/** + * Indicates whether gift card is special. + */ +isSpecialCard?: boolean +}[] +/** + * Information on each transaction pertinent to the order. + */ +transactions?: { +/** + * Indicates whether transaction is active. + */ +isActive?: boolean +/** + * Transaction ID. + */ +transactionId?: string +/** + * Merchant name. + */ +merchantName?: string +/** + * Information on each payment. + */ +payments?: { +/** + * Account ID. + */ +accountId?: string +/** + * Bin. + */ +bin?: string +/** + * Number of installments. + */ +installments?: number +/** + * Payment system. + */ +paymentSystem?: string +/** + * Reference value for calculating interest rates, in case it applies. Displayed in cents. + */ +referenceValue?: number +/** + * Value including interest, in case it applies. Displayed in cents. + */ +value?: number +}[] +/** + * Indicates whather transaction is shared. + */ +sharedTransaction?: boolean +}[] +} +/** + * Object containing promotion data such as coupon tracking information and internal or external UTMs. + */ +marketingData?: { +/** + * Sending an existing coupon code in this field will return the corresponding discount in the purchase. Use the [cart simulation](https://developers.vtex.com/vtex-rest-api/reference/orderform#orderformsimulation) request to check which coupons might apply before placing the order. + */ +coupon?: string +/** + * UTM source. + */ +utmSource?: string +/** + * UTM medium. + */ +utmMedium?: string +/** + * UTM campaign + */ +utmCampaign?: string +/** + * utmi_page (internal utm) + */ +utmiPage?: (null | string) +/** + * utmi_part (internal utm). + */ +utmiPart?: (null | string) +/** + * utmi_campaign (internal utm). + */ +utmiCampaign?: (null | string) +} +/** + * Information on each seller. + */ +sellers?: { +/** + * Seller ID. + */ +id?: string +/** + * Seller name. + */ +name?: string +/** + * Seller logo. + */ +logo?: (null | string) +}[] +/** + * Object containing preferences from the client who placed the order. + */ +clientPreferencesData?: { +/** + * Client's locale. Examples: `pt-BR` and `en-US`. + */ +locale?: string +/** + * `true` if the client opted to receive newsletter from the store. + */ +optinNewsLetter?: boolean +} +/** + * Object containing commercial condition information. + */ +commercialConditionData?: (null | { + +}) +/** + * Object containing data from the store's configuration (stored in VTEX's License Manager). + */ +storePreferencesData?: { + +} +/** + * Gift registry list information. + */ +giftRegistryData?: (null | { + +}) +/** + * Optional field meant to hold additional information about the order. We recommend using this field for text, not data formats such as `JSON` even if escaped. For that purpose, see [Creating customizable fields](https://developers.vtex.com/vtex-rest-api/docs/creating-customizable-fields-in-the-cart-with-checkout-api-1). + */ +openTextField?: (null | string) +/** + * Object containing information pertinent to the order's invoice. + */ +invoiceData?: (null | { + +}) +/** + * Customer additional information. + */ +customData?: (null | { + +}) +/** + * Item metadata. + */ +itemMetadata?: { +/** + * List of objects containing metadata on each item in the order. + */ +items?: { +/** + * Item ID. + */ +id?: string +/** + * Seller. + */ +seller?: string +/** + * Product name. + */ +name?: string +/** + * SKU name. + */ +skuName?: string +/** + * Product ID. + */ +productId?: string +/** + * Ref ID. + */ +refId?: string +/** + * European Article Number. + */ +ean?: (null | string) +/** + * Image URL. + */ +imageUrl?: string +/** + * Detail URL. + */ +detailUrl?: string +}[] +} +/** + * Hooks information. + */ +hooksData?: (null | { + +}) +/** + * Information on rates and benefits that apply to the order. + */ +ratesAndBenefitsData?: { +/** + * List with rates and benefits identifiers. + */ +rateAndBenefitsIdentifiers?: string[] +/** + * List with rates and benefits teasers. + */ +teaser?: string[] +} +/** + * Subscription information. + */ +subscriptionData?: (null | { + +}) +/** + * Object containing information about the ordering of items within the orderForm. + */ +itemsOrdination?: { +/** + * Criteria adopted to order the items in the list. + */ +criteria?: string +/** + * Indicates whether the ordering is ascending. + */ +ascending?: boolean +} +} +} +/** + * Retrieves possible amount of installments and respective values for a given cart with a given payment method. + * + * The [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart. + * + * This endpoint can be used to get the installment options for only one payment method at a time. + * + * This endpoint should be called only after the selected `orderForm` already has a `paymentData`. + */ +"GET /api/checkout/pub/orderForm/:orderFormId/installments": { +searchParams: { +/** + * ID of the payment method to be consulted for installments. + */ +paymentSystem: number +} +} +/** + * Use this request to add coupons to a given shopping cart. + * + * To add multiple coupons to the same cart, you need to: + * + * 1. Request the activation of this feature through the [Support VTEX](https://help.vtex.com/support) if this is the first time you perform this action on your store. + * 2. Submit all coupon codes in the same requisition separated by commas. E.g.: {"text": "freeshipping, discount10, holiday30"}. + * + * For more information on multiple coupons, access the [coupons tutorial](https://help.vtex.com/en/tutorial/creating-a-coupon-beta--7lMk3MmhNp2IEccyGApxU). + */ +"POST /api/checkout/pub/orderForm/:orderFormId/coupons": { +body: { +/** + * Sending an existing coupon code in this field will return the corresponding discount in the purchase. + */ +text?: string +} +response: { +/** + * ID of the orderForm corresponding to a specific cart. + */ +orderFormId?: string +/** + * Attribute created by the seller, in their VTEX store configuration. + */ +salesChannel?: string +/** + * Indicates whether the user is logged into the store. + */ +loggedIn?: boolean +/** + * Indicates whether order is checked in. + */ +isCheckedIn?: boolean +/** + * ID of the store. + */ +storeId?: (null | string) +/** + * Permission to modify item price manually. + */ +allowManualPrice?: boolean +/** + * Data can be edited. + */ +canEditData?: boolean +/** + * Unique ID associated with the customer profile. + */ +userProfileId?: string +/** + * Profile provider. + */ +profileProvider?: string +/** + * Available accounts. + */ +availableAccounts?: string[] +/** + * Information on each available address. + */ +availableAddresses?: { +/** + * Address type. + */ +addressType?: string +/** + * Name of the receiver. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * City of the address. + */ +city?: string +/** + * State of the address. + */ +state?: string +/** + * Country of the address. ISO three-letter code. + */ +country?: string +/** + * Street of the address. + */ +street?: string +/** + * Number of the address. + */ +number?: string +/** + * Neighborhood of the address. + */ +neighborhood?: string +/** + * Complement to the address. + */ +complement?: (null | string) +/** + * Reference that may help in the location of the address. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +/** + * User type. + */ +userType?: (null | string) +/** + * Ignore customer profile data. + */ +ignoreProfileData?: boolean +/** + * Total value of the order without separating cents. For example, $24.99 is represented `2499`. + */ +value?: number +/** + * Array containing an object for each message generated by our servers while processing the request. + */ +messages?: any[] +/** + * Information on each item in the order. + */ +items?: { +/** + * Unique ID. + */ +uniqueId?: string +/** + * ID of the item. + */ +id?: string +/** + * Product ID. + */ +productId?: string +/** + * Product Ref ID. + */ +productRefId?: string +/** + * Ref ID. + */ +refId?: string +/** + * European Article Number. + */ +ean?: (null | string) +/** + * Product name. + */ +name?: string +/** + * SKU name. + */ +skuName?: string +/** + * Modal type. + */ +modalType?: (null | string) +/** + * Parent item index. + */ +parentItemIndex?: (null | number) +/** + * Parent assembly binding. + */ +parentAssemblyBinding?: (null | string) +/** + * Price expiration date and time. + */ +priceValidUntil?: string +/** + * Tax value in cents. + */ +tax?: number +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Manual price in cents. + */ +manualPrice?: (null | number) +/** + * User that applied the manual price, if that is the case. + */ +manualPriceAppliedBy?: (null | string) +/** + * Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead. + */ +sellingPrice?: number +/** + * Reward value in cents. + */ +rewardValue?: number +/** + * Indicates whether item is a gift. + */ +isGift?: boolean +/** + * Additional information. + */ +additionalInfo?: { +/** + * Dimension. + */ +dimension?: (null | string) +/** + * Brand name. + */ +brandName?: string +/** + * Brand ID. + */ +brandId?: string +/** + * Offering information. + */ +offeringInfo?: (null | string) +/** + * Offering type. + */ +offeringType?: (null | string) +/** + * Offering type ID. + */ +offeringTypeId?: (null | string) +} +/** + * Presale date. + */ +preSaleDate?: (null | string) +/** + * Product category IDs. + */ +productCategoryIds?: string +/** + * Object, where each field is an ID from `productCategoryIds`. + */ +productCategories?: { +/** + * Product category corresponding to the ID in the field key. + */ +"{ID}"?: string +} +/** + * Quantity. + */ +quantity?: number +/** + * Seller. + */ +seller?: string +/** + * Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order. + */ +sellerChain?: string[] +/** + * Image URL. + */ +imageUrl?: string +/** + * Detail URL. + */ +detailUrl?: string +/** + * Information on services sold along with the SKU. Example: a gift package. + */ +bundleItems?: { +/** + * Service type. + */ +type?: string +/** + * Service identifier. + */ +id?: number +/** + * Service name. + */ +name?: string +/** + * Service price in cents. + */ +price?: number +}[] +/** + * Array containing information on attachments. + */ +attachments?: string[] +/** + * Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order. + */ +priceTags?: { +/** + * Price tag identifier. + */ +identifier?: string +/** + * Indicates whether price tag value is applied through a percentage. + */ +isPercentual?: boolean +/** + * Price tag name. + */ +name?: string +/** + * Price tag raw value. + */ +rawValue?: number +/** + * Price tag value. + */ +value?: number +}[] +/** + * Availability + */ +availability?: string +/** + * Measurement unit + */ +measurementUnit?: string +/** + * Unit multiplier + */ +unitMultiplier?: number +/** + * Manufacturer code. + */ +manufacturerCode?: (null | string) +/** + * Price information for all units of a specific item. + */ +priceDefinition?: { +/** + * Item's calculated unitary selling price in cents. + */ +calculatedSellingPrice?: number +/** + * Total value for all units of the item in cents. + */ +total?: number +/** + * Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total. + */ +sellingPrices?: { +/** + * Value in cents for that specific rounding. + */ +value?: number +/** + * Rounding quantity, meaning how many items are rounded to this value. + */ +quantity?: number +}[] +} +}[] +/** + * Array containing the data of the item selected as a gift. + */ +selectableGifts?: any[] +/** + * Array containing an object for each totalizer for the purchase. Totalizers contain the sum of values for a specific part of the order (e.g. Total item value, Total shipping value). + */ +totalizers?: any[] +/** + * Shipping information pertinent to the order. + */ +shippingData?: { +/** + * Address information. + */ +address?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +} +/** + * Array with logistics information. Each object in this array corresponds to an object in the `items` array, based on the respective `itemIndex`. + */ +logisticsInfo?: { +/** + * Index corresponding to the position of the object in the `items` array. + */ +itemIndex?: number +/** + * SLA selected by the customer. + */ +selectedSla?: string +/** + * Delivery channel selected by the customer. + */ +selectedDeliveryChannel?: string +/** + * Address ID. + */ +addressId?: string +/** + * Information on available SLAs. + */ +slas?: { +/** + * SLA ID. + */ +id?: string +/** + * Delivery channel. + */ +deliveryChannel?: string +/** + * SLA name. + */ +name?: string +/** + * Information on each delivery ID. + */ +deliveryIds?: { +/** + * Courier ID. + */ +courierId?: string +/** + * Warehouse ID. + */ +warehouseId?: string +/** + * Warehouse ID. + */ +dockId?: string +/** + * Courier name. + */ +courierName?: string +/** + * Quantity. + */ +quantity?: number +}[] +/** + * Shipping estimate. For instance, Three business days will be represented `3bd`. + */ +shippingEstimate?: string +/** + * Shipping estimate date. + */ +shippingEstimateDate?: (null | string) +/** + * Estimate date of delivery. + */ +lockTTL?: string +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Tax in cents. + */ +tax?: number +/** + * Information on the pickup store. + */ +pickupStoreInfo?: { +/** + * Indicates whether it is the pickup store. + */ +isPickupStore?: boolean +/** + * Friendly name. + */ +friendlyName?: (null | string) +/** + * Address information. + */ +address?: (null | { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}) +/** + * Additional information. + */ +additionalInfo?: (null | string) +/** + * Corresponding dock ID. + */ +dockId?: (null | string) +} +/** + * Pickup point ID. + */ +pickupPointId?: (null | string) +/** + * Pickup point distance. + */ +pickupDistance?: number +/** + * Polygon name. + */ +polygonName?: (null | string) +/** + * Transit time. For instance, "three business days" is represented `3bd`. + */ +transitTime?: string +}[] +/** + * List of countries that the item may be shipped to. + */ +shipsTo?: string[] +/** + * Item ID. + */ +itemId?: string +/** + * List of available delivery channels. + */ +deliveryChannels?: { +/** + * Delivery channel ID. + */ +id?: string +}[] +}[] +/** + * Array with information on the selected addresses for the order. + */ +selectedAddresses?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: string +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +/** + * Array with information on the available addresses for the order. + */ +availableAddresses?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: string +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +} +/** + * Customer's profile information. + */ +clientProfileData?: { +/** + * Email address. + */ +email?: string +/** + * First name. + */ +firstName?: string +/** + * Last name. + */ +lastName?: string +/** + * Type of the document informed by the customer. + */ +documentType?: string +/** + * Document informed by the customer. + */ +document?: string +/** + * Phone number. + */ +phone?: string +/** + * Company name, if the customer is a legal entity. + */ +corporateName?: (null | string) +/** + * Trade name, if the customer is a legal entity. + */ +tradeName?: (null | string) +/** + * Corporate document, if the customer is a legal entity. + */ +corporateDocument?: (null | string) +/** + * State inscription, if the customer is a legal entity. + */ +stateInscription?: (null | string) +/** + * Corporate phone number, if the customer is a legal entity. + */ +corporatePhone?: (null | string) +/** + * Indicates whether the customer is a legal entity. + */ +isCorporate?: boolean +/** + * Indicates whether profile is complete on loading. + */ +profileCompleteOnLoading?: boolean +/** + * Indicates whether profile presents error on loading. + */ +profileErrorOnLoading?: (null | boolean) +/** + * Customer class. + */ +customerClass?: (null | string) +} +/** + * Information on the order's payment. + */ +paymentData?: { +/** + * Gift card information, if it applies to the order. + */ +giftCards?: { +/** + * Gift card redemption code. + */ +redemptionCode?: string +/** + * Gift card value in cents. + */ +value?: number +/** + * Gift card balance in cents. + */ +balance?: number +/** + * Gift card name. + */ +name?: string +/** + * Gift card ID. + */ +id?: string +/** + * Indicates whether gift card is in use. + */ +inUse?: boolean +/** + * Indicates whether gift card is special. + */ +isSpecialCard?: boolean +}[] +/** + * Information on each transaction pertinent to the order. + */ +transactions?: { +/** + * Indicates whether transaction is active. + */ +isActive?: boolean +/** + * Transaction ID. + */ +transactionId?: string +/** + * Merchant name. + */ +merchantName?: string +/** + * Information on each payment. + */ +payments?: { +/** + * Account ID. + */ +accountId?: string +/** + * Bin. + */ +bin?: string +/** + * Number of installments. + */ +installments?: number +/** + * Payment system. + */ +paymentSystem?: string +/** + * Reference value for calculating interest rates, in case it applies. Displayed in cents. + */ +referenceValue?: number +/** + * Value including interest, in case it applies. Displayed in cents. + */ +value?: number +}[] +/** + * Indicates whather transaction is shared. + */ +sharedTransaction?: boolean +}[] +} +/** + * Object containIng promotion data such as coupon tracking information and internal or external UTMs. + */ +marketingData?: { +/** + * Sending an existing coupon code in this field will return the corresponding discount in the purchase. Use the [cart simulation](https://developers.vtex.com/vtex-rest-api/reference/orderform#orderformsimulation) request to check which coupons might apply before placing the order. + */ +coupon?: string +/** + * UTM source. + */ +utmSource?: (null | string) +/** + * UTM medium. + */ +utmMedium?: (null | string) +/** + * UTM campaign. + */ +utmCampaign?: (null | string) +/** + * utmi_page (internal utm). + */ +utmiPage?: (null | string) +/** + * utmi_part (internal utm). + */ +utmiPart?: (null | string) +/** + * utmi_campaign (internal utm). + */ +utmiCampaign?: (null | string) +} +/** + * Information on each seller. + */ +sellers?: { +/** + * Seller ID. + */ +id?: string +/** + * Seller name. + */ +name?: string +/** + * Seller logo. + */ +logo?: (null | string) +}[] +/** + * Object containing preferences from the client who placed the order. + */ +clientPreferencesData?: { +/** + * Client's locale. Examples: `pt-BR` and `en-US`. + */ +locale?: string +/** + * `true` if the client opted to receive newsletter from the store. + */ +optinNewsLetter?: boolean +} +/** + * Object containing commercial condition information. + */ +commercialConditionData?: (null | { + +}) +/** + * Object containing data from the store's configuration (stored in VTEX's License Manager). + */ +storePreferencesData?: { + +} +/** + * Gift registry list information. + */ +giftRegistryData?: (null | { + +}) +/** + * Optional field meant to hold additional information about the order. We recommend using this field for text, not data formats such as `JSON` even if escaped. For that purpose, see [Creating customizable fields](https://developers.vtex.com/vtex-rest-api/docs/creating-customizable-fields-in-the-cart-with-checkout-api-1) + */ +openTextField?: (null | string) +/** + * Object containing information pertinent to the order's invoice. + */ +invoiceData?: (null | { + +}) +/** + * Customer additional information. + */ +customData?: (null | { + +}) +/** + * Item metadata. + */ +itemMetadata?: { +/** + * List of objects containing metadata on each item in the order. + */ +items?: { +/** + * Item ID. + */ +id?: string +/** + * Seller. + */ +seller?: string +/** + * Product name. + */ +name?: string +/** + * SKU name. + */ +skuName?: string +/** + * Product ID. + */ +productId?: string +/** + * Ref ID. + */ +refId?: string +/** + * European Article Number. + */ +ean?: (null | string) +/** + * Image URL. + */ +imageUrl?: string +/** + * Detail URL. + */ +detailUrl?: string +}[] +} +/** + * Hooks information. + */ +hooksData?: (null | { + +}) +/** + * Information on rates and benefits that apply to the order. + */ +ratesAndBenefitsData?: { +/** + * List with rates and benefits identifiers. + */ +rateAndBenefitsIdentifiers?: string[] +/** + * List with rates and benefits teasers. + */ +teaser?: string[] +} +/** + * Subscription information. + */ +subscriptionData?: (null | { + +}) +/** + * Object containing information about the ordering of items within the orderForm. + */ +itemsOrdination?: { +/** + * Criteria adopted to order the items in the list. + */ +criteria?: string +/** + * Indicates whether the ordering is ascending. + */ +ascending?: boolean +} +} +} +/** + * Retrieves information on pickup points close to a given location determined by geocoordinates or postal code. + * + * The pickup points returned are not necessarily all active ones. Make sure to validate the information consumed by integrations. + */ +"GET /api/checkout/pub/pickup-points": { +searchParams: { +/** + * Geocoordinates (first longitude, then latitude) around which to search for pickup points. If you use this type of search, do not pass postal and country codes. + */ +geoCoordinates?: number[] +/** + * Postal code around which to search for pickup points. If you use this type of search, make sure to pass a `countryCode` and do not pass `geoCoordinates`. + */ +postalCode?: string +/** + * Three letter country code refering to the `postalCode` field. Pass the country code only if you are searching pickup points by postal code. + */ +countryCode?: string +} +response: { +/** + * Paging. + */ +paging?: { +/** + * Page number. + */ +page?: number +/** + * Page size. + */ +pageSize?: number +/** + * Total pages. + */ +total?: number +/** + * Pages. + */ +pages?: number +} +/** + * Items. + */ +items?: { +/** + * Distance. + */ +distance?: number +/** + * Pickup point. + */ +pickupPoint?: { +/** + * Friendly name. + */ +friendlyName?: string +/** + * Address. + */ +address?: { +/** + * Address type. + */ +addressType?: string +/** + * Receiver name. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: (null | string) +/** + * Is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City. + */ +city?: string +/** + * State. + */ +state?: string +/** + * Country. + */ +country?: string +/** + * Street. + */ +street?: string +/** + * Number. + */ +number?: string +/** + * Neighborhood. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Racao. + */ +reference?: string +/** + * Geo coordinates. + */ +geoCoordinates?: number[] +} +/** + * Additional info. + */ +additionalInfo?: string +/** + * ID. + */ +id?: string +/** + * Array with business hours. + */ +businessHours?: { +/** + * Day of week. + */ +DayOfWeek?: number +/** + * Opening time. + */ +OpeningTime?: string +/** + * Closing time. + */ +ClosingTime?: string +}[] +} +}[] +} +} +/** + * Retrieves address information for a given postal code and country. + * + * This request can be used to implement auto complete functionality when a customer needs to fill in an address. + */ +"GET /api/checkout/pub/postal-code/:countryCode/:postalCode": { + +} +/** + * This endpoint places an order from an existing `orderForm` object, meaning an existing cart. + * + * After the creation of an order with this request, you have five minutes to send payment information and then request payment processing. + */ +"POST /api/checkout/pub/orderForm/:orderFormId/transaction": { +body: { +referenceId: ReferenceId +savePersonalData?: SavePersonalData +optinNewsLetter?: OptinNewsLetter +/** + * Total value of the order without separating cents. For example, $24.99 is represented `2499`. + */ +value: number +/** + * Reference value of the order for calculating interest if that is the case. Can be equal to the total value and does not separate cents. For example, $24.99 is represented `2499`. + */ +referenceValue: number +/** + * Interest rate to be used in case it applies. + */ +interestValue: number +} +response: { + +} +} +/** + * Places order without having any prior cart information. This means all information on items, client, payment and shipping must be sent in the body. + * + * >⚠️ The authentication of this endpoint is required if you are creating an order with an item that has an attachment that creates a Subscription. For more information, access [Subscriptions API](https://developers.vtex.com/docs/api-reference/subscriptions-api-v3). + */ +"PUT /api/checkout/pub/orders": { +searchParams: { +/** + * Trade Policy (Sales Channel) identification. This query can be used to create an order for a specific sales channel. + */ +sc?: number +} +body: { +/** + * Array of objects containing information on each of the order's items. + */ +items: { +/** + * The SKU ID. + */ +id: string +/** + * The quantity of items of this specific SKU in the cart to be simulated. + */ +quantity: number +/** + * The ID of the seller responsible for this SKU. This ID can be found in your VTEX Admin. + */ +seller: string +/** + * Comission. + */ +commission?: number +/** + * Freight comission + */ +freightCommission?: number +/** + * Item price within the context of the order without separating cents. For example, $24.99 is represented `2499`. + */ +price?: number +/** + * Information on services sold along with the SKU. Example: a gift package. + */ +bundleItems?: { +/** + * Service type. + */ +type?: string +/** + * Service identifier. + */ +id?: string +/** + * Service name. + */ +name?: string +/** + * Service price. The last two digits are the cents. + */ +price?: number +}[] +/** + * Item attachment. + */ +itemAttachment?: { +/** + * Attachment name. + */ +name?: string +/** + * Content referring to the customization requested by the customer. + */ +content?: string +} +/** + * Array containing information on attachments. + */ +attachments?: string[] +/** + * Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order. + */ +priceTags?: { +/** + * Price tag identifier. + */ +identifier?: string +/** + * `true` if price tag value is applied through a percentage. + */ +isPercentual?: boolean +/** + * Price tag name. + */ +name?: string +/** + * Price tag raw value. + */ +rawValue?: number +/** + * Price tag value. + */ +value?: number +}[] +/** + * SKU measurement unit. + */ +measurementUnit?: string +/** + * SKU unit multiplier. + */ +unitMultiplier?: number +/** + * Indicates whether the order is a gift. + */ +isGift?: boolean +}[] +/** + * Customer's profile information. The `email` functions as a customer's ID. + * + * For customers already in your database, sending only the email address is enough to register the order to the shopper’s existing account. + * + * > If the shopper exists in you database but is not logged in, sending other profile information along with the email will cause the platform to fail placing the order. This happens because this action is interpreted as an attempt to edit profile data, which is not possible unless the customer is logged in to the store. + */ +clientProfileData: { +/** + * Customer's email address. + */ +email: string +/** + * Customer's first name. + */ +firstName?: string +/** + * Customer's last name. + */ +lastName?: string +/** + * Type of the document informed by the customer. + */ +documentType?: string +/** + * Document number informed by the customer. + */ +document?: string +/** + * Customer's phone number. + */ +phone?: string +/** + * Company name, if the customer is a legal entity. + */ +corporateName?: string +/** + * Trade name, if the customer is a legal entity. + */ +tradeName?: string +/** + * Corporate document, if the customer is a legal entity. + */ +corporateDocument?: string +/** + * State inscription, if the customer is a legal entity. + */ +stateInscription?: string +/** + * Corporate phone number, if the customer is a legal entity. + */ +corporatePhone?: string +/** + * `true` if the customer is a legal entity. + */ +isCorporate?: boolean +} +/** + * Shipping information. + */ +shippingData: { +/** + * Shipping address. + * + * For customers already in your data base, it is enough to send this object only with an `addressId`, which you may obtain from a [Cart simulation request](https://developers.vtex.com/vtex-rest-api/reference/shopping-cart#cartsimulation), for example. + */ +address?: { +/** + * Type of address. For example, `Residential` or `Pickup`, among others. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Postal Code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address in case it applies. + */ +complement?: string +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: string +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +} +/** + * Array of objects containing logistics information of each item. + */ +logisticsInfo?: { +/** + * Index of the item in the `items` array, starting from 0. + */ +itemIndex: number +/** + * Selected shipping option + */ +selectedSla: string +/** + * String with the selected delivery channel. This field supports the following values: + * + * - `delivery`, + * + * - `pickup-in-point`. + */ +selectedDeliveryChannel?: string +/** + * Logistics reservation waiting time. + */ +lockTTL?: string +/** + * Estimated time until delivery for the item. + */ +shippingEstimate?: string +/** + * Shipping price for the item. Does not account for the whole order's shipping price. + */ +price: number +/** + * In case of scheduled delivery, this object will contain information on the delivery window selected by the shopper. + */ +deliveryWindow?: { +/** + * Delivery window starting day and time in UTC. + */ +startDateUtc?: string +/** + * Delivery window ending day and time in UTC. + */ +endDateUtc?: string +/** + * Delivery window price. + */ +price?: number +/** + * Delivery window list price. + */ +lisPrice?: number +/** + * Delivery window tax. + */ +tax?: number +} +}[] +/** + * Indicate whether this object's information is up to date according to the order's items. An order can not be placed if `"outdated"` + */ +updateStatus?: string +} +/** + * Payment infomation. + */ +paymentData: { +/** + * Gift card information, if it applies to the order. + */ +giftCards?: { +/** + * Gift card redemption code. + */ +redemptionCode: string +/** + * Gift card value. + */ +value: number +/** + * Gift card balance. + */ +balance?: number +/** + * Gift card name. + */ +name?: string +/** + * Gift card ID. + */ +id?: string +/** + * Indicates whether gift card is in use. + */ +inUse?: boolean +/** + * Indicates whether gift card is special. + */ +isSpecialCard?: boolean +}[] +/** + * Array of gift card messages. + */ +giftCardMessages?: string[] +/** + * Information on payment systems. + */ +paymentSystems?: { +/** + * Payment system ID. + */ +id?: number +/** + * Payment system name. + */ +name?: string +/** + * Payment group name. + */ +groupName?: string +/** + * Payment system validator. + */ +validator?: { +regex?: string +/** + * Validator mask. + */ +mask?: string +/** + * Card code regular expression. + */ +cardCodeRegex?: string +/** + * Card code mask. + */ +cardCodeMask?: string +/** + * Weights. + */ +weights?: number[] +} +/** + * String ID. + */ +stringId?: string +/** + * Template. + */ +template?: string +/** + * Indicates whether a document is required. + */ +requiresDocument?: boolean +/** + * Indicates whether this payment system has been selected. + */ +selected?: boolean +/** + * Indicates whether it is custom. + */ +isCustom?: boolean +/** + * Description. + */ +description?: string +}[] +/** + * Payment information. + */ +payments: { +/** + * Account ID. + */ +accountId?: string +/** + * Payment bin. + */ +bin?: string +/** + * Number of installments. + */ +installments: number +/** + * Payment system. + */ +paymentSystem: string +/** + * Reference value for calculating interest rates, in case it applies. + */ +referenceValue: number +/** + * Value including interest, in case it applies. + */ +value: number +}[] +/** + * Indicates whether this object's information is up to date according to the order's items. An order can not be placed if `"outdated"` + */ +updateStatus?: string +} +marketingData?: { +/** + * Sending an existing coupon code in this field will return the corresponding discount in the purchase. Use the [cart simulation](https://developers.vtex.com/vtex-rest-api/reference/orderform#orderformsimulation) request to check which coupons might apply before placing the order. + */ +coupon?: string +/** + * UTM source. + */ +utmSource?: string +/** + * UTM medium. + */ +utmMedium?: string +/** + * UTM campaign + */ +utmCampaign?: string +/** + * utmi_page (internal utm) + */ +utmiPage?: string +/** + * utmi_part (internal utm) + */ +utmiPart?: string +/** + * utmi_campaign (internal utm) + */ +utmiCampaign?: string +} +/** + * Optional field meant to hold additional information about the order. We recommend using this field for text, not data formats such as `JSON` even if escaped. For that purpose, see [Creating customizable fields](https://developers.vtex.com/vtex-rest-api/docs/creating-customizable-fields-in-the-cart-with-checkout-api-1) + */ +openTextField?: string +/** + * Sales Associate information. + */ +salesAssociateData?: { +/** + * Sales Associate (Seller) identification code. All information should be registered by the merchant. Maximum of 100 characters. + */ +salesAssociateId?: string +} +minItems?: 0 +} +response: { +/** + * This is `null` since this request does not depend on any previously existing orderForm information in the platform. + */ +orderForm?: (null | string) +/** + * Information on each transaction pertinent to the order placed. + */ +transactionData?: { +/** + * Information on each merchant transaction. + */ +merchantTransactions?: { +/** + * ID of the seller. + */ +id?: string +/** + * ID of the transaction in the platform. + */ +transactionId?: string +/** + * Name of the merchant responsible for the sale. + */ +merchantName?: string +/** + * Information on each payment pertinent to the transaction. + */ +payments?: { +/** + * Payment system. + */ +paymentSystem?: string +/** + * Payment bin. + */ +bin?: (null | string) +/** + * Account ID. + */ +accountId?: (null | string) +/** + * Token ID. + */ +tokenId?: (null | string) +/** + * Total value to be paid in this payment. + */ +value?: number +/** + * Reference value over which interests may be applied. + */ +referenceValue?: number +/** + * Gift card redemption code. + */ +giftCardRedemptionCode?: (null | string) +/** + * Gift card provider. + */ +giftCardProvider?: (null | string) +/** + * Gift card ID. + */ +giftCardId?: (null | string) +}[] +}[] +/** + * Receiver URI. + */ +receiverUri?: string +/** + * Template of the gateway callback path, which may later be used to send information about the transaction. + */ +gatewayCallbackTemplatePath?: string +} +/** + * Information on each of the orders created. + */ +orders?: { +/** + * ID of the order in the Order Management System (OMS). + */ +orderId?: string +/** + * Order group. Orders that involve different sellers are split into different orders of a same order group. + */ +orderGroup?: string +/** + * State. + */ +state?: (null | string) +/** + * Indicates whether order is checked in. + */ +isCheckedIn?: boolean +/** + * ID of the order in the seller. + */ +sellerOrderId?: (null | string) +/** + * Store ID. + */ +storeId?: (null | string) +/** + * Checked in pickuppoint. + */ +checkedInPickupPointId?: (null | string) +/** + * Value of the order. + */ +value?: number +/** + * Information on each item in the order. + */ +items?: { +/** + * Unique ID. + */ +uniqueId?: string +/** + * ID of the item. + */ +id?: string +/** + * Product ID. + */ +productId?: string +/** + * Product Ref ID. + */ +productRefId?: string +/** + * Ref ID. + */ +refId?: string +/** + * European Article Number. + */ +ean?: (null | string) +/** + * Product name. + */ +name?: string +/** + * SKU name. + */ +skuName?: string +/** + * Modal type. + */ +modalType?: (null | string) +/** + * Parent item index. + */ +parentItemIndex?: (null | number) +/** + * Parent assembly binding. + */ +parentAssemblyBinding?: (null | string) +/** + * Price expiration date and time. + */ +priceValidUntil?: string +/** + * Tax value in cents. + */ +tax?: number +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Manual price in cents. + */ +manualPrice?: (null | number) +/** + * User that applied the manual price, if that is the case. + */ +manualPriceAppliedBy?: (null | string) +/** + * Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead. + */ +sellingPrice?: number +/** + * Reward value in cents. + */ +rewardValue?: number +/** + * Indicates whether item is a gift. + */ +isGift?: boolean +/** + * Additional information. + */ +additionalInfo?: { +/** + * Dimension. + */ +dimension?: (null | string) +/** + * Brand name. + */ +brandName?: string +/** + * Brand ID. + */ +brandId?: string +/** + * Offering information. + */ +offeringInfo?: (null | string) +/** + * Offering type. + */ +offeringType?: (null | string) +/** + * Offering type ID. + */ +offeringTypeId?: (null | string) +} +/** + * Presale date. + */ +preSaleDate?: (null | string) +/** + * Product category IDs. + */ +productCategoryIds?: string +/** + * Object, where each field is an ID from `productCategoryIds`. + */ +productCategories?: { +/** + * Product category corresponding to the ID in the field key. + */ +"{ID}"?: string +} +/** + * Quantity. + */ +quantity?: number +/** + * Seller. + */ +seller?: string +/** + * Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/pt/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order. + */ +sellerChain?: string[] +/** + * Image URL. + */ +imageUrl?: string +/** + * Detail URL. + */ +detailUrl?: string +/** + * Information on services sold along with the SKU. Example: a gift package. + */ +bundleItems?: { +/** + * Service type. + */ +type?: string +/** + * Service identifier. + */ +id?: number +/** + * Service name. + */ +name?: string +/** + * Service price in cents. + */ +price?: number +}[] +/** + * Array containing information on attachments. + */ +attachments?: string[] +/** + * Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order. + */ +priceTags?: { +/** + * Price tag identifier. + */ +identifier?: string +/** + * Indicates whether price tag value is applied through a percentage. + */ +isPercentual?: boolean +/** + * Price tag name. + */ +name?: string +/** + * Price tag raw value. + */ +rawValue?: number +/** + * Price tag value. + */ +value?: number +}[] +/** + * Availability + */ +availability?: string +/** + * Measurement unit + */ +measurementUnit?: string +/** + * Unit multiplier + */ +unitMultiplier?: number +/** + * Manufacturer code. + */ +manufacturerCode?: (null | string) +/** + * Price information for all units of a specific item. + */ +priceDefinition?: { +/** + * Item's calculated unitary selling price in cents. + */ +calculatedSellingPrice?: number +/** + * Total value for all units of the item in cents. + */ +total?: number +/** + * Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total. + */ +sellingPrices?: { +/** + * Value in cents for that specific rounding. + */ +value?: number +/** + * Rounding quantity, meaning how many items are rounded to this value. + */ +quantity?: number +}[] +} +}[] +/** + * Information on each seller. + */ +sellers?: { +/** + * Seller ID. + */ +id?: string +/** + * Seller name. + */ +name?: string +/** + * Seller logo. + */ +logo?: (null | string) +}[] +/** + * Information on order totals. + */ +totals?: { +/** + * Total ID. + */ +id?: string +/** + * Total name. + */ +name?: string +/** + * Total value. + */ +value?: number +}[] +/** + * Customer's profile information. + */ +clientProfileData?: { +/** + * Email address. + */ +email?: string +/** + * First name. + */ +firstName?: string +/** + * Last name. + */ +lastName?: string +/** + * Type of the document informed by the customer. + */ +documentType?: string +/** + * Document informed by the customer. + */ +document?: string +/** + * Phone number. + */ +phone?: string +/** + * Company name, if the customer is a legal entity. + */ +corporateName?: (null | string) +/** + * Trade name, if the customer is a legal entity. + */ +tradeName?: (null | string) +/** + * Corporate document, if the customer is a legal entity. + */ +corporateDocument?: (null | string) +/** + * State inscription, if the customer is a legal entity. + */ +stateInscription?: (null | string) +/** + * Corporate phone number, if the customer is a legal entity. + */ +corporatePhone?: (null | string) +/** + * Indicates whether the customer is a legal entity. + */ +isCorporate?: boolean +/** + * Indicates whether profile is complete on loading. + */ +profileCompleteOnLoading?: boolean +/** + * Indicates whether profile presents error on loading. + */ +profileErrorOnLoading?: (null | boolean) +/** + * Customer class. + */ +customerClass?: (null | string) +} +/** + * Information on rates and benefits that apply to the order. + */ +ratesAndBenefitsData?: { +/** + * List with rates and benefits identifiers. + */ +rateAndBenefitsIdentifiers?: string[] +/** + * List with rates and benefits teasers. + */ +teaser?: string[] +} +/** + * Shipping information pertinent to the order. + */ +shippingData?: { +/** + * Address information. + */ +address?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +} +/** + * Array with logistics information. Each object in this array corresponds to an object in the `items` array, based on the respective `itemIndex`. + */ +logisticsInfo?: { +/** + * Index corresponding to the position of the object in the `items` array. + */ +itemIndex?: number +/** + * SLA selected by the customer. + */ +selectedSla?: string +/** + * Delivery channel selected by the customer. For example, `"delivery"` or `"pickup-in-point"`. + */ +selectedDeliveryChannel?: string +/** + * Address ID. + */ +addressId?: string +/** + * Information on available SLAs. + */ +slas?: { +/** + * SLA ID. + */ +id?: string +/** + * Delivery channel. + */ +deliveryChannel?: string +/** + * SLA name. + */ +name?: string +/** + * Information on each delivery ID. + */ +deliveryIds?: { +/** + * Courier ID. + */ +courierId?: string +/** + * Warehouse ID. + */ +warehouseId?: string +/** + * Warehouse ID. + */ +dockId?: string +/** + * Courier name. + */ +courierName?: string +/** + * Quantity. + */ +quantity?: number +}[] +/** + * Shipping estimate. For instance, Three business days will be represented `3bd`. + */ +shippingEstimate?: string +/** + * Shipping estimate date. + */ +shippingEstimateDate?: (null | string) +/** + * Estimate date of delivery. + */ +lockTTL?: string +/** + * Price in cents. + */ +price?: number +/** + * List price in cents. + */ +listPrice?: number +/** + * Tax in cents. + */ +tax?: number +/** + * Information on the pickup store. + */ +pickupStoreInfo?: { +/** + * Indicates whether it is the pickup store. + */ +isPickupStore?: boolean +/** + * Friendly name. + */ +friendlyName?: (null | string) +/** + * Address information. + */ +address?: (null | { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: (null | string) +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}) +/** + * Additional information. + */ +additionalInfo?: (null | string) +/** + * Corresponding dock ID. + */ +dockId?: (null | string) +} +/** + * Pickup point ID. + */ +pickupPointId?: (null | string) +/** + * Pickup point distance. + */ +pickupDistance?: number +/** + * Polygon name. + */ +polygonName?: (null | string) +/** + * Transit time. For instance, "three business days" is represented `3bd`. + */ +transitTime?: string +}[] +/** + * List of countries that the item may be shipped to. + */ +shipsTo?: string[] +/** + * Item ID. + */ +itemId?: string +/** + * List of available delivery channels. + */ +deliveryChannels?: { +/** + * Delivery channel ID. + */ +id?: string +}[] +}[] +/** + * Array with information on the selected addresses for the order. + */ +selectedAddresses?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: string +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +/** + * Array with information on the available addresses for the order. + */ +availableAddresses?: { +/** + * Type of address. For example, `Residential` or `Pickup`. + */ +addressType?: string +/** + * Name of the person who is going to receive the order. + */ +receiverName?: string +/** + * Address ID. + */ +addressId?: string +/** + * Indicates whether address is disposable. + */ +isDisposable?: boolean +/** + * Postal code. + */ +postalCode?: string +/** + * City of the shipping address. + */ +city?: string +/** + * State of the shipping address. + */ +state?: string +/** + * Three letter ISO code of the country of the shipping address. + */ +country?: string +/** + * Street of the shipping address. + */ +street?: string +/** + * Number of the building, house or apartment in the shipping address. + */ +number?: string +/** + * Neighborhood of the shipping address. + */ +neighborhood?: string +/** + * Complement to the shipping address, in case it applies. + */ +complement?: string +/** + * Complement that might help locate the shipping address more precisely in case of delivery. + */ +reference?: (null | string) +/** + * Array containing two floats with geocoordinates, first longitude, then latitude. + */ +geoCoordinates?: number[] +}[] +} +/** + * Information on the order's payment. + */ +paymentData?: { +/** + * Gift card information, if it applies to the order. + */ +giftCards?: { +/** + * Gift card redemption code. + */ +redemptionCode?: string +/** + * Gift card value in cents. + */ +value?: number +/** + * Gift card balance in cents. + */ +balance?: number +/** + * Gift card name. + */ +name?: string +/** + * Gift card ID. + */ +id?: string +/** + * Indicates whether gift card is in use. + */ +inUse?: boolean +/** + * Indicates whether gift card is special. + */ +isSpecialCard?: boolean +}[] +/** + * Information on each transaction pertinent to the order. + */ +transactions?: { +/** + * Indicates whether transaction is active. + */ +isActive?: boolean +/** + * Transaction ID. + */ +transactionId?: string +/** + * Merchant name. + */ +merchantName?: string +/** + * Information on each payment. + */ +payments?: { +/** + * Account ID. + */ +accountId?: string +/** + * Bin. + */ +bin?: string +/** + * Number of installments. + */ +installments?: number +/** + * Payment system. + */ +paymentSystem?: string +/** + * Reference value for calculating interest rates, in case it applies. Displayed in cents. + */ +referenceValue?: number +/** + * Value including interest, in case it applies. Displayed in cents. + */ +value?: number +}[] +/** + * Indicates whather transaction is shared. + */ +sharedTransaction?: boolean +}[] +} +/** + * Item metadata. + */ +itemMetadata?: { +/** + * List of objects containing metadata on each item in the order. + */ +items?: { +/** + * Item ID. + */ +id?: string +/** + * Seller. + */ +seller?: string +/** + * Product name. + */ +name?: string +/** + * SKU name. + */ +skuName?: string +/** + * Product ID. + */ +productId?: string +/** + * Ref ID. + */ +refId?: string +/** + * European Article Number. + */ +ean?: (null | string) +/** + * Image URL. + */ +imageUrl?: string +/** + * Detail URL. + */ +detailUrl?: string +}[] +} +/** + * Sales channel. + */ +salesChannel?: string +/** + * Follow up email address. + */ +followUpEmail?: string +/** + * Creation date. + */ +creationDate?: string +/** + * Last change. + */ +lastChange?: string +/** + * Time zone creation date. + */ +timeZoneCreationDate?: string +/** + * Time zone last change. + */ +timeZoneLastChange?: string +/** + * Indicates whether order is completed. + */ +isCompleted?: boolean +/** + * Host name. + */ +hostName?: string +/** + * Merchant name. + */ +merchantName?: (null | string) +/** + * User type. + */ +userType?: string +/** + * Rounding error. + */ +roundingError?: number +/** + * Indicates whether edition is allowed. + */ +allowEdition?: boolean +/** + * Indicates whether cancelation is allowed. + */ +allowCancelation?: boolean +/** + * Indicates whether seller changing is allowed. + */ +allowChangeSeller?: boolean +/** + * Indicates whether user data is visible. + */ +isUserDataVisible?: boolean +/** + * `orderForm` creation date. + */ +orderFormCreationDate?: string +/** + * Sales Associate (Seller) identification code. + */ +salesAssociateId?: string +}[] +} +} +/** + * Order processing callback request, which is made after an order's payment is approved. + * + * > This request has to be made within five minutes after the [Place order](https://developers.vtex.com/docs/api-reference/checkout-api#put-/api/checkout/pub/orders) or [Place order from existing cart](https://developers.vtex.com/docs/api-reference/checkout-api#post-/api/checkout/pub/orderForm/-orderFormId-/transaction) request has been made, or else, the order will not be processed. + */ +"POST /api/checkout/pub/gatewayCallback/:orderGroup": { + +} +/** + * Retrieves a list of sellers that cater to a specific region or address, according to your setup of our [regionalization feature](https://help.vtex.com/en/tutorial/setting-up-price-and-availability-of-skus-by-region--12ne58BmvYsYuGsimmugoc#). Learn more about [Region v2](https://developers.vtex.com/docs/guides/region-v2-release). + * + * To access the list of sellers, you must choose one of the following methods: + * + * 1. Send the identification of the list of sellers (`regionId`) as a path parameter through the URL. Or; + * 2. Send the `country` (3-digit ISO code) and at least one of the two values (`postal Code` or `geo Coordinates`) as query parameters through the URL. For this method, it is also allowed to send both values (`postalCode` or `geoCoordinates`) in the same request. + * + * > The `regionId` and `country` parameters are indicated as required in this documentation. However, only one of them should be sent in the request according to one of the methods mentioned above. + */ +"GET /api/checkout/pub/regions/:regionId": { +searchParams: { +/** + * Three letter country code refering to the `postalCode` field. + */ +country: string +/** + * Postal code corresponding to the shopper's location. + */ +postalCode?: string +/** + * Geocoordinates (first longitude, semicolon, then latitude) corresponding to the shopper's location. + */ +geoCoordinates?: number[] +} +response: { +/** + * Region ID. + */ +id?: string +/** + * Array with information on each seller retrieved for the given region. + */ +sellers?: { +/** + * Seller ID. + */ +id?: string +/** + * Seller name. + */ +name?: string +/** + * Seller logo. + */ +logo?: (null | string) +}[] +} +} +/** + * Lists all orders from a given customer, filtering by their email. + * + * > You can only access information from orders created in the last two years, and that same period is valid for customers through [My Account](https://help.vtex.com/en/tutorial/how-my-account-works--2BQ3GiqhqGJTXsWVuio3Xh). + * + * > Note that this request should be made by an [user](https://developers.vtex.com/docs/guides/user-authentication-and-login) or [an appKey / appToken pair](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys) that is associated with the [Call center operator](https://help.vtex.com/en/tutorial/predefined-roles--jGDurZKJHvHJS13LnO7Dy#call-center-operator) role. Otherwise, it will return only orders from the same email informed in the `clientEmail` query parameter. + * + * ## Permissions + * + * Any user or [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys) must have at least one of the appropriate [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3) to be able to successfully run this request. Otherwise they will receive a status code `403` error. These are the applicable resources for this endpoint: + * + * | **Product** | **Category** | **Resource** | + * | --------------- | ----------------- | ----------------- | + * | OMS | OMS access | **View order** | + * + * You can [create a custom role](https://help.vtex.com/en/tutorial/roles--7HKK5Uau2H6wxE1rH5oRbc#creating-a-role) with that resource or use one of the following [predefined roles](https://help.vtex.com/en/tutorial/predefined-roles--jGDurZKJHvHJS13LnO7Dy): + * + * | **Role** | **Resource** | + * | --------------- | ----------------- | + * | Call center operator | View order | + * | OMS - Read only | View order | + * + * >❗ Assigning a [predefined role](https://help.vtex.com/en/tutorial/predefined-roles--jGDurZKJHvHJS13LnO7Dy) to users or application keys usually grants permission to multiple [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3). If some of these permissions are not necessary, consider creating a custom role instead. For more information regarding security, see [Best practices for using application keys](https://help.vtex.com/en/tutorial/best-practices-application-keys--7b6nD1VMHa49aI5brlOvJm). + * + * To learn more about machine authentication at VTEX, see [Authentication overview](https://developers.vtex.com/docs/guides/authentication). + */ +"GET /api/oms/user/orders": { +searchParams: { +/** + * Customer email. + */ +clientEmail: string +/** + * Page number for result pagination. + */ +page: string +/** + * Page quantity for result pagination. + */ +per_page: string +} +response: Userorderslist +} +} +/** + * Pickup point information. + */ +export interface PickupPoint { +/** + * [Pickup point](https://help.vtex.com/en/tutorial/pickup-points--2fljn6wLjn8M4lJHA6HP3R) ID. + */ +id?: string +/** + * Pickup point name displayed to customers at checkout. + */ +name?: string +/** + * Pickup point description displayed to customers at checkout. + */ +description?: string +/** + * Instructions for customers when collecting their package. + */ +instructions?: string +/** + * Formatted address. + */ +formatted_address?: string +/** + * Pickup point address information. + */ +address?: { +/** + * Pickup point address postal code. + */ +postalCode?: string +/** + * Information about the pickup point address country. + */ +country?: { +/** + * Three-digit country code of the pickup point address, in [ISO 3166 ALPHA-3](https://www.iban.com/country-codes) format. + */ +acronym?: string +/** + * Country name of the pickup point address. + */ +name?: string +} +/** + * Pickup point address city. + */ +city?: string +/** + * Pickup point address state. + */ +state?: string +/** + * Pickup point address neighborhood. + */ +neighborhood?: string +/** + * Pickup point address street. + */ +street?: string +/** + * Pickup point address number. + */ +number?: string +/** + * Pickup point address complement. + */ +complement?: string +/** + * Reference point to help the customer find the pickup point. + */ +reference?: string +/** + * Pickup point address geolocation coordinates. + */ +location?: { +/** + * Latitude coordinate. + */ +latitude?: number +/** + * Longitude coordinate. + */ +longitude?: number +} +} +/** + * Defines if the pickup point is active (`true`) or inactive (`false`). + */ +isActive?: boolean +/** + * Pickup point configured distance. + */ +distance?: number +/** + * Seller that corresponds to the pickup point. + */ +seller?: string +/** + * Sort array. + */ +_sort?: number[] +/** + * Pickup point business hours configurations. + */ +businessHours?: { +/** + * Day of the week identification, as in `1` = Monday, `2` = Tuesday, `3` = Wednesday, `4` = Thursday, and `5` = Friday. + */ +dayOfWeek?: number +/** + * Opening time in `HH:MM:SS` format. + */ +openingTime?: string +/** + * Closing time in `HH:MM:SS` format. + */ +closingTime?: string +}[] +/** + * Tags that identify a group of pickup points. + */ +tagsLabel?: string[] +/** + * [Holidays](https://help.vtex.com/en/tutorial/registering-holidays--2ItOthSEAoyAmcwsuiO6Yk) configured for the pickup point. + */ +pickupHolidays?: { +/** + * Holiday date and time, in [ISO 8601 time zone offset format](https://learn.microsoft.com/en-us/rest/api/storageservices/formatting-datetime-values), as in `YYYY-MM-DDThh:mm:ss.ssZ`. + */ +date?: string +/** + * Holiday beginning time in `HH:MM` format. + */ +hourBegin?: string +/** + * Holiday ending time in `HH:MM` format. + */ +hourEnd?: string +}[] +/** + * Defines if the pickup point is third-party (`true`) or not (`false`). + */ +isThirdPartyPickup?: boolean +/** + * Account owner name. + */ +accountOwnerName?: string +/** + * Account owner ID. + */ +accountOwnerId?: string +/** + * Parent account name. + */ +parentAccountName?: string +/** + * Original ID. + */ +originalId?: string +} +export interface GetorUpdateProductSpecification { +/** + * Array with Specification values. + */ +Value: string[] +/** + * Specification field ID, which is the same as `FieldId` in other specification endpoints. + */ +Id?: number +/** + * Name of the Specification. + */ +Name?: string +} +export interface GetSKUandContext { +/** + * SKU ID. + */ +Id: number +/** + * ID of the related Product. + */ +ProductId: number +/** + * Product Name and SKU Name concatenated. + */ +NameComplete: string +/** + * Product Complement Name. + */ +ComplementName?: string +/** + * Product Name. + */ +ProductName: string +/** + * Product Description. HTML is allowed. + */ +ProductDescription: string +/** + * Reference ID of the related Product. + */ +ProductRefId?: string +/** + * SKU Tax Code. + */ +TaxCode?: string +/** + * SKU Name. + */ +SkuName: string +/** + * Defines if the SKU is active or not. + */ +IsActive: boolean +/** + * @deprecated + */ +IsTransported: boolean +/** + * @deprecated + */ +IsInventoried: boolean +/** + * Defines if the purchase will generate a reward. + */ +IsGiftCardRecharge: boolean +/** + * SKU image URL. + */ +ImageUrl: string +/** + * Product URL. + */ +DetailUrl: string +/** + * SKU Seller identification. + */ +CSCIdentification: string +/** + * Product Brand ID. + */ +BrandId: string +/** + * Product Brand Name. + */ +BrandName: string +Dimension: Dimension +RealDimension: RealDimension +/** + * Product Supplier ID. + */ +ManufacturerCode: string +/** + * Defines if the SKU is part of a bundle. + */ +IsKit: boolean +/** + * Array with SKU IDs of bundle components. + */ +KitItems: string[] +/** + * Array with Service IDs that are related to the SKU. + */ +Services: string[] +/** + * Array with Categories from the related Product. + */ +Categories: string[] +/** + * Array with Attachments ID that are related to the SKU. + */ +Attachments: Attachment[] +/** + * Array with Collections ID that are related to the Product. + */ +Collections: string[] +/** + * Array with SKU Sellers data. + */ +SkuSellers: SkuSeller[] +/** + * Array with the ID of all the Sales Channels that are related to the product. + */ +SalesChannels: number[] +/** + * Array with SKU images. + */ +Images: Image[] +/** + * Array with related SKU Specifications. + */ +SkuSpecifications: SkuSpecification[] +/** + * Array with related Product Specifications. + */ +ProductSpecifications: ProductSpecification[] +ProductClusterNames?: { +/** + * Collection ID + */ +[k: string]: string +} +/** + * Product Clusters IDs. + */ +ProductClustersIds: string +/** + * Category Hierarchy with Category IDs. + */ +ProductCategoryIds: string +/** + * Global Category ID. + */ +ProductGlobalCategoryId: number +/** + * Object containing product categories. Structure: "{CategoryID}": "{CategoryName}". + */ +ProductCategories: { +/** + * Category ID. + */ +[k: string]: string +} +/** + * SKU Commercial Condition ID. + */ +CommercialConditionId: number +/** + * Reward value related to the SKU. + */ +RewardValue: number +AlternateIds: AlternateIds +/** + * Array with values of alternative SKU IDs. + */ +AlternateIdValues: string[] +/** + * To add the product as pre-sale, enter the product estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format. You must take into consideration both the launch date and the freight calculation for the arrival date. + */ +EstimatedDateArrival: string +/** + * SKU Measurement Unit. + */ +MeasurementUnit: string +/** + * This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward. + */ +UnitMultiplier: number +/** + * Information Source. + */ +InformationSource: string +/** + * Modal Type. + */ +ModalType: string +/** + * Keywords related to the product. + */ +KeyWords?: string +/** + * Release date of the product. + */ +ReleaseDate?: string +/** + * Defines if the product is visible or not. + */ +ProductIsVisible?: boolean +/** + * Defines if the product will be shown if it is not available. + */ +ShowIfNotAvailable?: boolean +/** + * Defines if the product is active or not. + */ +IsProductActive?: boolean +/** + * Product Final Score. + */ +ProductFinalScore?: number +} +/** + * Object containing the SKU dimensions to be used on the shipping calculation. + */ +export interface Dimension { +/** + * SKU Cubic Weight. + */ +cubicweight: number +/** + * SKU Height. + */ +height: number +/** + * SKU Length. + */ +length: number +/** + * SKU Weight. + */ +weight: number +/** + * SKU Width. + */ +width: number +} +/** + * Object containing the real SKU dimensions, which appear in the product page. + */ +export interface RealDimension { +/** + * Real SKU Cubic Weight. + */ +realCubicWeight: number +/** + * Real SKU Height. + */ +realHeight: number +/** + * Real SKU Length. + */ +realLength: number +/** + * Real SKU Weight. + */ +realWeight: number +/** + * Real SKU Width. + */ +realWidth: number +} +/** + * Object containing information about SKU attachments. + */ +export interface Attachment { +/** + * Attachment ID. + */ +Id: number +/** + * Attachment Name. + */ +Name: string +/** + * Attachment Keys. + */ +Keys: string[] +/** + * Array containing Attachment fields. + */ +Fields: Field[] +/** + * Defines if the Attachment is active or not. + */ +IsActive: boolean +/** + * Defines if the Attachment is required or not. + */ +IsRequired: boolean +} +export interface Field { +/** + * Attachment field name. + */ +FieldName: string +/** + * Maximum number of characters accepted in the attachment field. + */ +MaxCaracters: string +/** + * Allowed key values. + */ +DomainValues: string +} +/** + * Object containing related SKU Sellers data. + */ +export interface SkuSeller { +/** + * SKU Seller ID. This is the ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID. + */ +SellerId: string +/** + * SKU ID. + */ +StockKeepingUnitId: number +/** + * SKU ID for the SKU Seller. + */ +SellerStockKeepingUnitId: string +/** + * Defines if the SKU is active. + */ +IsActive: boolean +/** + * Registered value for Seller Freight Commission. + */ +FreightCommissionPercentage: number +/** + * Registered value for Seller Product Commission. + */ +ProductCommissionPercentage: number +} +/** + * Object containing SKU images details. + */ +export interface Image { +/** + * Image URL. + */ +ImageUrl: string +/** + * Image label. + */ +ImageName: string +/** + * SKU image ID. + */ +FileId: number +} +/** + * Object containing related SKU Specifications. + */ +export interface SkuSpecification { +/** + * Specification field ID. + */ +FieldId: number +/** + * Specification field Name. + */ +FieldName: string +/** + * Array with related Specification Values IDs. + */ +FieldValueIds: number[] +/** + * Array with related Specification Values. + */ +FieldValues: string[] +} +export interface ProductSpecification { +/** + * Specification field ID. + */ +FieldId: number +/** + * Specification name. Limited to 100 characters. + */ +FieldName: string +/** + * Array with related Specification Values IDs. + */ +FieldValueIds: number[] +/** + * Array with related Specification Values. + */ +FieldValues: string[] +} +/** + * Array with alternate SKU IDs, such as EAN and RefId. + */ +export interface AlternateIds { +/** + * SKU EAN. + */ +Ean?: string +/** + * SKU Reference ID. + */ +RefId?: string +} +export interface GetSKUAltID { +/** + * SKU ID. + */ +Id: number +/** + * Product ID. + */ +ProductId: number +/** + * Product Name and SKU Name combined. + */ +NameComplete: string +/** + * Product Complement Name. + */ +ComplementName?: string +/** + * Product Name. + */ +ProductName: string +/** + * Product Description. HTML is allowed. + */ +ProductDescription: string +/** + * Product Reference ID. + */ +ProductRefId?: string +/** + * SKU Tax Code. + */ +TaxCode?: string +/** + * SKU Name. + */ +SkuName: string +/** + * Defines if the SKU is active or not. + */ +IsActive: boolean +/** + * @deprecated + */ +IsTransported: boolean +/** + * @deprecated + */ +IsInventoried: boolean +/** + * Defines if the purchase of the SKU will generate reward value for the customer. + */ +IsGiftCardRecharge: boolean +/** + * SKU image URL. + */ +ImageUrl: string +/** + * Product slug. + */ +DetailUrl: string +/** + * SKU Seller Identification. + */ +CSCIdentification: string +/** + * Brand ID. + */ +BrandId: string +/** + * Brand Name. + */ +BrandName: string +Dimension: Dimension +RealDimension: RealDimension +/** + * Product Supplier ID. + */ +ManufacturerCode: string +/** + * Defines if the SKU is part of a bundle. + */ +IsKit: boolean +/** + * Array with SKU IDs of bundle components. + */ +KitItems: string[] +/** + * Array with Service IDs that are related to the SKU. + */ +Services: string[] +/** + * Categories of the related product. + */ +Categories: string[] +/** + * Path of Categories of the related product. + */ +CategoriesFullPath?: string[] +/** + * Array with Attachments ID that are related to the SKU. + */ +Attachments: Attachment[] +/** + * Array with Collections IDs that are related to the Product. + */ +Collections: string[] +/** + * Array with related Sellers data. + */ +SkuSellers: SkuSeller[] +/** + * Array of trade policy IDs. + */ +SalesChannels: number[] +/** + * Array of objects with SKU image details. + */ +Images: Image[] +/** + * Array with related SKU Specifications. + */ +SkuSpecifications: SkuSpecification[] +/** + * Array with related Product Specifications. + */ +ProductSpecifications: ProductSpecification[] +/** + * Product Cluster IDs separated by comma (`,`). + */ +ProductClustersIds: string +/** + * Product Clusters position in each Cluster. Structure: "{Product Cluster ID}": {Position}. + * + * `{Product Cluster ID}` is a string, while `{Position}` is an integer. + */ +PositionsInClusters?: { +/** + * Product Cluster ID. + */ +[k: string]: number +} +/** + * Product Clusters Names. Structure: "{Product Cluster ID}": "{Product Cluster Name}". Both the key and the value are strings. + */ +ProductClusterNames?: { +/** + * Product Cluster ID. + */ +[k: string]: string +} +/** + * Product Clusters Highlights. Structure: "{Product Cluster ID}": "{Product Cluster Name}". Both the key and the value are strings. + */ +ProductClusterHighlights?: { +/** + * Product Cluster ID. + */ +[k: string]: string +} +/** + * Category path composed by category IDs separated by `/`. + */ +ProductCategoryIds: string +/** + * Indicates if the direct Product Category is active or not. + */ +IsDirectCategoryActive?: boolean +/** + * Product Global Category ID. + */ +ProductGlobalCategoryId: number +/** + * Object containing product categories. Structure: "{CategoryID}": "{CategoryName}". Both the key and the value are strings. + */ +ProductCategories: { +/** + * Category ID. + */ +[k: string]: string +} +/** + * SKU Commercial Condition ID. + */ +CommercialConditionId: number +/** + * Reward value related to the SKU. + */ +RewardValue: number +AlternateIds: AlternateIds +/** + * Array with values of alternative SKU IDs. + */ +AlternateIdValues: string[] +/** + * SKU estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format, when the product is on pre-sale. You must take into consideration both the launch date and the freight calculation for the arrival date. + */ +EstimatedDateArrival: string +/** + * Measurement unit. + */ +MeasurementUnit: string +/** + * This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward. + */ +UnitMultiplier: number +/** + * Information Source. + */ +InformationSource: string +/** + * Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. "Chemicals" or "Refrigerated products"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy). + */ +ModalType: string +/** + * Keywords related to the product. + */ +KeyWords?: string +/** + * Release date of the product. + */ +ReleaseDate?: string +/** + * Defines if the product is visible or not. + */ +ProductIsVisible?: boolean +/** + * Defines if the product will be shown if it is not available. + */ +ShowIfNotAvailable?: boolean +/** + * Defines if the product is active or not. + */ +IsProductActive?: boolean +/** + * Product Final Score. + */ +ProductFinalScore?: number +} +export interface SkulistbyProductId { +/** + * Defines if the SKU is persisted. + */ +IsPersisted?: boolean +/** + * @deprecated + * Defines if the SKU is removed. + */ +IsRemoved?: boolean +/** + * SKU ID. + */ +Id?: number +/** + * Product ID. + */ +ProductId?: number +/** + * Defines if the SKU is active or not. + */ +IsActive?: boolean +/** + * SKU Name. + */ +Name?: string +/** + * SKU Height. + */ +Height?: number +/** + * Real SKU Height. + */ +RealHeight?: number +/** + * SKU Width. + */ +Width?: number +/** + * Real SKU Width. + */ +RealWidth?: number +/** + * SKU Length. + */ +Length?: number +/** + * Real SKU Length. + */ +RealLength?: number +/** + * Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. + */ +WeightKg?: number +/** + * Real Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. + */ +RealWeightKg?: number +/** + * Delivery Method (Modal Type) ID. + */ +ModalId?: number +/** + * Product Reference ID. + */ +RefId?: string +/** + * [Cubic weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128). + */ +CubicWeight?: number +/** + * Flag to set whether the product SKU is made up of one or more SKUs, thereby becoming a bundle. Must be enabled if you are adding a bundle. Once activated, the flag cannot be reverted. + */ +IsKit?: boolean +/** + * @deprecated + */ +IsDynamicKit?: string +/** + * Internal note. + */ +InternalNote?: string +/** + * Date when the product was updated for the most recent time. + */ +DateUpdated?: string +/** + * Reward value related to the SKU. + */ +RewardValue?: number +/** + * SKU Commercial Condition ID. + */ +CommercialConditionId?: number +/** + * SKU estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format, when the product is on pre-sale. You must take into consideration both the launch date and the freight calculation for the arrival date. + */ +EstimatedDateArrival?: string +/** + * Defines if the SKU bundle items can be sold separately. + */ +FlagKitItensSellApart?: boolean +/** + * Product Supplier ID. + */ +ManufacturerCode?: string +/** + * SKU Reference ID. + */ +ReferenceStockKeepingUnitId?: string +/** + * SKU Position. + */ +Position?: number +/** + * When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component. + */ +ActivateIfPossible?: boolean +/** + * Measurement unit. + */ +MeasurementUnit?: string +/** + * This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward. + */ +UnitMultiplier?: number +/** + * @deprecated + */ +IsInventoried?: boolean +/** + * @deprecated + */ +IsTransported?: boolean +/** + * Defines if the purchase of the SKU will generate reward value for the customer. + */ +IsGiftCardRecharge?: boolean +/** + * Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. "Chemicals" or "Refrigerated products"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy). + */ +ModalType?: string +/** + * Defines if the SKU is a Optimized bundle. + */ +isKitOptimized?: boolean +} +export interface SKUFileURL { +/** + * Defines if the Image is the main image of the SKU. + */ +IsMain?: boolean +/** + * SKU image label. + */ +Label?: string +/** + * SKU image name. + */ +Name: string +/** + * General text of the image. + */ +Text?: string +/** + * External Image's URL. The URL must start with the protocol identifier (`http://` or `https://`) and end with the file extension (`.jpg`, `.png` or `.gif`). + */ +Url: string +} +export interface SkuKit { +/** + * SKU Kit ID, same as `StockKeepingUnitParent`. + */ +Id?: number +/** + * Parent SKU ID. + */ +StockKeepingUnitParent?: number +/** + * SKU ID of the kit component. + */ +StockKeepingUnitId?: number +/** + * Component quantity. + */ +Quantity?: number +/** + * Component price per unit. + */ +UnitPrice?: number +} +export interface SKUService { +/** + * SKU Service ID. + */ +Id?: number +/** + * SKU Service Type ID. + */ +SkuServiceTypeId?: number +/** + * SKU Service Value ID. + */ +SkuServiceValueId?: number +/** + * SKU ID. + */ +SkuId?: number +/** + * SKU Service Name. Maximum of 50 characters. + */ +Name?: string +/** + * Internal description of the SKU Service. Maximum of 100 characters. + */ +Text?: string +/** + * Defines if the SKU Service is active or not. + */ +IsActive?: boolean +} +export interface SKUServiceTypeRequest { +/** + * SKU Service Type Name. Maximum of 100 characters. + */ +Name: string +/** + * Defines if the SKU Service Type is active or not. + */ +IsActive: boolean +/** + * @deprecated + * Deprecated + */ +ShowOnProductFront: boolean +/** + * Defines if the SKU Service Type is displayed on the cart screen. + */ +ShowOnCartFront: boolean +/** + * Defines if the SKU Service Type has an attachment. + */ +ShowOnAttachmentFront: boolean +/** + * Defines if the SKU Service Type can be associated with an attachment or not. + */ +ShowOnFileUpload: boolean +/** + * Defines if the SKU Service Type is displayed as a Gift Card. + */ +IsGiftCard: boolean +/** + * Defines if the SKU Service type is mandatory. + */ +IsRequired: boolean +} +export interface SKUServiceTypeResponse { +/** + * SKU Service Type ID. + */ +Id?: number +/** + * SKU Service Type Name. Maximum of 100 characters. + */ +Name?: string +/** + * Defines if the SKU Service Type is active or not. + */ +IsActive?: boolean +/** + * @deprecated + * Deprecated. + */ +ShowOnProductFront?: boolean +/** + * Defines if the SKU Service Type is displayed on the cart screen. + */ +ShowOnCartFront?: boolean +/** + * Defines if the SKU Service Type has an attachment. + */ +ShowOnAttachmentFront?: boolean +/** + * Defines if the SKU Service Type can be associated with an attachment or not. + */ +ShowOnFileUpload?: boolean +/** + * Defines if the SKU Service Type is displayed as a Gift Card. + */ +IsGiftCard?: boolean +/** + * Defines if the SKU Service type is mandatory. + */ +IsRequired?: boolean +} +export interface SKUServiceValueRequest { +/** + * SKU Service Type ID. + */ +SkuServiceTypeId: number +/** + * SKU Service Value name. Maximum of 100 characters. + */ +Name: string +/** + * SKU Service Value value. + */ +Value: number +/** + * SKU Service Value cost. + */ +Cost: number +} +export interface SKUServiceValueResponse { +/** + * SKU Service Value ID. + */ +Id?: number +/** + * SKU Service Type ID. + */ +SkuServiceTypeId: number +/** + * SKU Service Value name. Maximum of 100 characters. + */ +Name: string +/** + * SKU Service Value value. + */ +Value: number +/** + * SKU Service Value cost. + */ +Cost: number +} +export interface SKUSpecificationResponse { +/** + * ID of the association of the specification and the SKU. This ID is used to update or delete the specification. + */ +Id?: number +/** + * SKU ID. + */ +SkuId?: number +/** + * Specification field ID. + */ +FieldId?: number +/** + * Specification Value ID. Required only for `FieldTypeId` as `5`, `6` and `7`. + */ +FieldValueId?: number +/** + * Value of specification. Only for `FieldTypeId` different from `5`, `6` and `7`. + */ +Text?: string +} +export interface GetCategoryTree { +/** + * Category ID. + */ +id: number +/** + * Category name. + */ +name: string +/** + * If the category has a category child (`true`) or not (`false`). + */ +hasChildren: boolean +/** + * Category URL. + */ +url: string +/** + * Array with information about the category's children. + */ +children: GetCategoryTreeChild[] +/** + * Category page title. + */ +Title: string +/** + * Category page Meta tag description. + */ +MetaTagDescription: string +} +export interface GetCategoryTreeChild { +/** + * Category ID. + */ +id: number +/** + * Category name. + */ +name: string +/** + * If the category has a category child (`true`) or not (`false`). + */ +hasChildren: boolean +/** + * Category URL. + */ +url: string +/** + * Array with information about the category's children. + */ +children: any[] +/** + * Category page title. + */ +Title: string +/** + * Category page Meta tag description. + */ +MetaTagDescription: string +} +export interface Category { +/** + * Category ID. + */ +Id: number +/** + * Category name. + */ +Name: string +/** + * ID of the father category, apply in case of category and subcategory. + */ +FatherCategoryId: number +/** + * Category page title. + */ +Title: string +/** + * Describes details about the category. + */ +Description: string +/** + * Substitutes words for the category. + */ +Keywords: string +/** + * Shows if the category is active (`true`) or not (`false`). + */ +IsActive: boolean +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +LomadeeCampaignCode: string +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +AdWordsRemarketingCode: string +/** + * Defines if the category is shown on side and upper menu (`true`) or not (`false`). + */ +ShowInStoreFront: boolean +/** + * Defines if the category has brand filter (`true`) or not (`false`). + */ +ShowBrandFilter: boolean +/** + * Defines if the Category has an active link on the website (`true`) or not (`false`). + */ +ActiveStoreFrontLink: boolean +/** + * Google Global Category ID. + */ +GlobalCategoryId: number +/** + * Defines how the SKU will be exhibited. + */ +StockKeepingUnitSelectionMode: string +/** + * Score for search ordination. + */ +Score: number +/** + * Text Link. + */ +LinkId: string +/** + * Defines if the category has child categories (`true`) or not (`false`). + */ +HasChildren: boolean +} +export interface CreateCategoryRequest { +/** + * Category unique identifier. If not informed, it will be automatically generated by VTEX. + */ +Id?: number +/** + * Category name. + */ +Name: string +/** + * Substitute words for the Category. + */ +Keywords: string +/** + * Text used in title tag for Category page. + */ +Title: string +/** + * Text used in meta description tag for Category page. + */ +Description: string +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +AdWordsRemarketingCode: string +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +LomadeeCampaignCode: string +/** + * ID of the parent category, apply in case of category and subcategory. + */ +FatherCategoryId: number +/** + * Google Global Category ID. + */ +GlobalCategoryId: number +/** + * If true, the Category is shown in the top and side menu. + */ +ShowInStoreFront: boolean +/** + * If true, the Category page becomes available in store. + */ +IsActive: boolean +/** + * If true, the Category link becomes active in store. + */ +ActiveStoreFrontLink: boolean +/** + * If true, the Category page displays a Brand filter. + */ +ShowBrandFilter: boolean +/** + * Score for search sorting order. + */ +Score: number +/** + * Defines how the SKU will be exhibited + */ +StockKeepingUnitSelectionMode: string +} +/** + * Object containing Brand information. + */ +export interface BrandGet { +/** + * Brand's unique numerical identifier. + */ +id: number +/** + * Brand name. + */ +name: string +/** + * Defines if the brand is active (`true`) or not (`false`). + */ +isActive: boolean +/** + * Meta Title for the Brand page. + */ +title: string +/** + * Meta Description for the Brand page. A brief description of the brand, displayed by search engines. Since search engines can only display less than 150 characters, we recommend not exceeding this character limit when creating the description. + */ +metaTagDescription: string +/** + * URL of the brand's image. + */ +imageUrl: string +} +/** + * Object containing Brand information. + */ +export interface BrandCreateUpdate { +/** + * Brand's unique numerical identifier. + */ +Id: number +/** + * Brand name. + */ +Name: string +/** + * Meta Description for the Brand page. A brief description of the brand, displayed by search engines. Since search engines can only display less than 150 characters, we recommend not exceeding this character limit when creating the description. + */ +Text?: string +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - Alternative search terms that will lead to the specific brand. The user can find the desired brand even when misspelling it. Used especially when words are of foreign origin and have a distinct spelling that is transcribed into a generic one, or when small spelling mistakes occur. + * + */ +Keywords?: string +/** + * Meta Title for the Brand page. + */ +SiteTitle?: string +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +AdWordsRemarketingCode?: string +/** + * @deprecated + * This is a legacy field. Do not take this information into consideration. + */ +LomadeeCampaignCode?: string +/** + * Store Framework - Deprecated + * Legacy CMS Portal - Value used to set the priority on the search result page. + * + */ +Score?: number +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - Defines if the Brand appears in the Department Menu control (``). + * + */ +MenuHome?: boolean +/** + * Defines if the brand is active (`true`) or not (`false`). + */ +Active?: boolean +/** + * Brand page slug. Only lowercase letters and hyphens (`-`) are allowed. + */ +LinkId?: string +} +export interface AttachmentResponse { +/** + * Attachment ID. + */ +Id: number +/** + * Attachment Name. + */ +Name: string +/** + * Defines if the attachment is required or not. + */ +IsRequired: boolean +/** + * Defines if the attachment is active or not. + */ +IsActive: boolean +/** + * List of characteristics related to the attachment. + */ +Domains: { +/** + * Attachment key name. + */ +FieldName?: string +/** + * Maximum number of characters in the attachment key. + */ +MaxCaracters?: string +/** + * Allowed key values. + */ +DomainValues?: string +}[] +} +export interface AttachmentRequest { +/** + * Attachment Name. + */ +Name: string +/** + * Defines if the attachment is required or not. + */ +IsRequired: boolean +/** + * Defines if the attachment is active or not. + */ +IsActive: boolean +/** + * List of characteristics related to the attachment. + */ +Domains: { +/** + * Attachment key name. + */ +FieldName?: string +/** + * Maximum number of characters in the attachment key. + */ +MaxCaracters?: string +/** + * Allowed key values. + */ +DomainValues?: string +}[] +} +export interface SpecificationsInsertFieldRequest { +/** + * Specification Field name. Limited to 100 characters. + */ +Name: string +/** + * Category ID. + */ +CategoryId: number +/** + * Specification Field ID. + */ +FieldId: number +/** + * Defines if the Specification Field is active. The default value is `true`. + */ +IsActive: boolean +/** + * Makes the Specification Field mandatory (`true`) or optional (`false`). + */ +IsRequired: boolean +/** + * Specification Field Type ID. + */ +FieldTypeId: number +/** + * Specification Field Value ID. + */ +FieldValueId: number +/** + * Specification Field Description. + */ +Description: string +/** + * If `true`, it will be added as a SKU specification. If `false`, it will be added as a product specification field. + */ +IsStockKeepingUnit: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar. + * + */ +IsFilter: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal -If specification is visible on the product page. + * + */ +IsOnProductDetails: boolean +/** + * Specification Field Position. + */ +Position: number +/** + * @deprecated + * Deprecated field. + */ +IsWizard: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To make the specification visible in the store's upper menu. + * + */ +IsTopMenuLinkActive: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To make the specification field clickable in the search navigation bar. + * + */ +IsSideMenuLinkActive: boolean +/** + * Specification Field default Value. + */ +DefaultValue: string +/** + * Specification Field Group ID. + */ +FieldGroupId: number +/** + * Specification Field Group Name. + */ +FieldGroupName: string +} +export interface SpecificationsInsertFieldUpdateRequest { +/** + * Specification Field ID. + */ +Name: string +/** + * Category ID. + */ +CategoryId: number +/** + * Specification Field ID. + */ +FieldId: number +/** + * Enables(`true`) or disables (`false`) the Specification Field. + */ +IsActive: boolean +/** + * Makes the Specification Field mandatory (`true`) or optional (`false`). + */ +IsRequired: boolean +/** + * Specification Field Type ID. + */ +FieldTypeId: number +/** + * Specification Field Value ID. + */ +FieldValueId?: number +/** + * Specification Field Description. + */ +Description: string +/** + * If `true`, it will be added as a SKU specification field. If `false`, it will be added as a product specification field. + */ +IsStockKeepingUnit: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar. + * + */ +IsFilter: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal -If specification is visible on the product page. + * + */ +IsOnProductDetails: boolean +/** + * Specification Field Position. + */ +Position: number +/** + * @deprecated + * Deprecated field. + */ +IsWizard: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To make the specification visible in the store's upper menu. + * + */ +IsTopMenuLinkActive: boolean +/** + * Store Framework - Deprecated. + * Legacy CMS Portal - To make the specification field clickable in the search navigation bar. + * + */ +IsSideMenuLinkActive: boolean +/** + * Specification Field default Value. + */ +DefaultValue: string +/** + * Specification Field Group ID. + */ +FieldGroupId: number +/** + * Specification Field Group Name. + */ +FieldGroupName: string +} +export interface GetSpecFieldValue { +/** + * Specification Field Value ID. + */ +FieldValueId: number +/** + * Specification Field Value. + */ +Value: string +/** + * Defines if the Specification Field is active (`true`) or inactive (`false`). + */ +IsActive: boolean +/** + * Specification Field Value Position. + */ +Position: number +} +export interface SpecificationsInsertFieldValueRequest { +/** + * Specification Field ID. + */ +FieldId: number +/** + * Specification Field Value Name. + */ +Name: string +/** + * Specification Field Value Description. + */ +Text: string +/** + * Defines if the Specification Field Value is active (`true`) or inactive (`false`). + */ +IsActive: boolean +/** + * Specification Field Value Position. + */ +Position: number +} +export interface SpecificationsUpdateFieldValueRequest { +/** + * Specification Field ID. + */ +FieldId: number +/** + * Specification Field Value Name. + */ +Name: string +/** + * Specification Field Value Description. + */ +Text: string +/** + * Defines if the Specification Field Value is active (`true`) or inactive (`false`). + */ +IsActive: boolean +/** + * Specification Field Position. + */ +Position: number +} +export interface SpecificationsGroup { +/** + * Category ID. + */ +CategoryId: number +/** + * Specification Group ID. + */ +Id: number +/** + * Specification Group Name. + */ +Name: string +/** + * Specification Group Position. + */ +Position: number +} +export interface SpecificationGroupInsertRequest { +/** + * Category ID. + */ +CategoryId: number +/** + * Specification Group Name. + */ +Name: string +} +export interface CreateSellerRequest { +/** + * Code used to identify the seller. It is assigned by the marketplace. We recommend filling it in with the seller's account name. + */ +SellerId: string +/** + * Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method. + */ +Name: string +/** + * Email of the admin responsible for the seller. + */ +Email: string +/** + * Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563). + */ +Description: string +/** + * Text describing the exchange and return policy previously agreed between the marketplace and the seller. + */ +ExchangeReturnPolicy: string +/** + * Text describing the delivery policy previously agreed between the marketplace and the seller. + */ +DeliveryPolicy: string +/** + * Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller. + */ +UseHybridPaymentOptions: boolean +/** + * Seller username. + */ +UserName: string +/** + * Seller password. + */ +Password: string +/** + * Text describing the security policy previously agreed between the marketplace and the seller. + */ +SecutityPrivacyPolicy: string +/** + * Company registration number. + */ +CNPJ: string +/** + * CSC identification. + */ +CSCIdentification: string +/** + * Seller archive ID. + */ +ArchiveId: number +/** + * Seller URL logo. + */ +UrlLogo: string +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +ProductCommissionPercentage: number +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +FreightCommissionPercentage: number +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +CategoryCommissionPercentage?: string +/** + * URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don’t need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added. + */ +FulfillmentEndpoint: string +/** + * URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`. + */ +CatalogSystemEndpoint: string +/** + * If the selle is active (`true`) or not (`false`). + */ +IsActive: boolean +/** + * Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-payment--6k5JidhYRUxileNolY2VLx) article to know more. + */ +MerchantName?: string +/** + * Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank. + */ +FulfillmentSellerId: number +/** + * Seller type. + */ +SellerType: number +/** + * Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI). + */ +IsBetterScope: boolean +/** + * Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`. + */ +TrustPolicy?: string +} +export interface UpdateSellerRequest { +/** + * ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID. + */ +SellerId: string +/** + * Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method. + */ +Name: string +/** + * Email of the admin responsible for the seller. + */ +Email: string +/** + * Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563). + */ +Description: string +/** + * Text describing the exchange and return policy previously agreed between the marketplace and the seller. + */ +ExchangeReturnPolicy: string +/** + * Text describing the delivery policy previously agreed between the marketplace and the seller. + */ +DeliveryPolicy: string +/** + * Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller. + */ +UseHybridPaymentOptions: boolean +/** + * Seller username. + */ +UserName: string +/** + * Seller password. + */ +Password: string +/** + * Text describing the security policy previously agreed between the marketplace and the seller. + */ +SecutityPrivacyPolicy: string +/** + * Company registration number. + */ +CNPJ: string +/** + * CSC identification. + */ +CSCIdentification: string +/** + * Seller archive ID. + */ +ArchiveId: number +/** + * Seller URL logo. + */ +UrlLogo: string +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +ProductCommissionPercentage: number +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +FreightCommissionPercentage: number +/** + * The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`. + */ +CategoryCommissionPercentage?: string +/** + * URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don’t need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added. + */ +FulfillmentEndpoint: string +/** + * URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`. + */ +CatalogSystemEndpoint: string +/** + * If the selle is active (`true`) or not (`false`). + */ +IsActive: boolean +/** + * Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-payment--6k5JidhYRUxileNolY2VLx) article to know more. + */ +MerchantName?: string +/** + * Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank. + */ +FulfillmentSellerId: number +/** + * Seller type. + */ +SellerType: number +/** + * Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI). + */ +IsBetterScope: boolean +/** + * Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`. + */ +TrustPolicy?: string +} +export interface SupplierRequest { +/** + * Supplier Name. + */ +Name: string +/** + * Supplier Corporate Name. + */ +CorporateName: string +/** + * State Inscription. + */ +StateInscription: string +/** + * Corporate legal ID. + */ +Cnpj: string +/** + * Supplier Phone. + */ +Phone: string +/** + * Supplier Cellphone. + */ +CellPhone: string +/** + * Supplier Corporate Phone. + */ +CorportePhone: string +/** + * Supplier email. + */ +Email: string +/** + * Defines if the Supplier is active (`true`) or not (`false`). + */ +IsActive: boolean +} +export interface SupplierResponse { +/** + * Supplier unique identifier code. + */ +Id?: number +/** + * Supplier Name. + */ +Name?: string +/** + * Supplier Corporate Name. + */ +CorporateName?: string +/** + * State Inscription. + */ +StateInscription?: string +/** + * Corporate legal ID. + */ +Cnpj?: string +/** + * Supplier Phone. + */ +Phone?: string +/** + * Supplier Cellphone. + */ +CellPhone?: string +/** + * Supplier Corporate Phone. + */ +CorportePhone?: string +/** + * Supplier email. + */ +Email?: string +/** + * Defines if the Supplier is active (`true`) or not (`false`). + */ +IsActive?: boolean +} +export interface PriceChangeRequest { +/** + * The new price of the item. + */ +price: number +} +export interface SetsinglecustomfieldvalueRequest { +/** + * The value you want to set to the specified field. + */ +value: string +} +export interface UpdateorderFormconfigurationRequest { +paymentConfiguration: PaymentConfiguration +/** + * External tax service configuration. + */ +taxConfiguration: { +/** + * Endpoint URL. + */ +url?: string +/** + * Authorization header. + */ +authorizationHeader?: string +/** + * Custom data ID sent to the tax system. + */ +appId?: string +} +/** + * Minimum SKU quantity by cart. + */ +minimumQuantityAccumulatedForItems: number +/** + * Number of price digits. + */ +decimalDigitsPrecision: number +/** + * Minimum cart value. + */ +minimumValueAccumulated: number +/** + * Array of objects containing Apps configuration information. + */ +apps: { +/** + * App ID. + */ +id?: string +/** + * Array of fields available to the app. + */ +fields?: string[] +/** + * App major version. + */ +major?: number +}[] +/** + * On the same purchase, allows the selection of items from multiple delivery channels. + */ +allowMultipleDeliveries: boolean +/** + * Allows the editing of SKU prices right in the cart. + */ +allowManualPrice: boolean +/** + * Allows the input of a limit of white label sellers involved on the cart. + */ +maxNumberOfWhiteLabelSellers?: number +/** + * Allows, on a first purchase, masking client's data. It could be useful when a shared cart is used and the client doesn't want to share its data. + */ +maskFirstPurchaseData?: boolean +/** + * Configures reCAPTCHA validation for the account, defining in which situations the shopper will be prompted to validate a purchase with reCAPTCHA. Learn more about [reCAPTCHA validation for VTEX stores](https://help.vtex.com/tutorial/recaptcha-no-checkout--18Te3oDd7f4qcjKu9jhNzP) + * + * Possible values are: + * - `"never"`: no purchases are validated with reCAPTCHA. + * - `"always"`: every purchase is validated with reCAPTCHA. + * - `"vtexCriteria"`: only some purchases are validated with reCAPTCHA in order to minimize friction and improve shopping experience. VTEX’s algorithm determines which sessions are trustworthy and which should be validated with reCAPTCHA. This is the recommended option. + */ +recaptchaValidation?: string +/** + * Indicates whether authentication is required for completing purchases. + */ +requiresLoginToPlaceOrder?: boolean +/** + * Minimum interval (in seconds) between successive purchases. + */ +minimumPurchaseDowntimeSeconds?: number +/** + * Minimum cart existence period (in seconds) before allowing the use of a new credit card. + */ +cartAgeToUseNewCardSeconds?: number +/** + * If you want to apply a first installment discount to a particular payment system, set this field to that payment system's ID. Learn more: [Configuring a discount for orders prepaid in full](https://help.vtex.com/en/tutorial/configurar-desconto-de-preco-a-vista--7Lfcj9Wb5dpYfA2gKkACIt). + */ +paymentSystemToCheckFirstInstallment?: string +} +/** + * Payment Configuration object + */ +export interface PaymentConfiguration { +/** + * Determines whether pre-authorized payments require authentication + */ +requiresAuthenticationForPreAuthorizedPaymentOption: boolean +/** + * By default (when `false`), on a multi-seller purchase is on the run, a simple intersection with installments options configured by every seller will be available. When `true`, this option allows a more complex but flexible installment option, since it considers max installments of every seller configuration, even if those don't match. Installment values may not be equal in this case. + */ +allowInstallmentsMerge?: boolean +} +export interface WaitingTime { +/** + * Number of days after order cancelation by a seller, during which another seller may be assigned to fulfill the order. + */ +waitingTime: number +} +/** + * Order list object. + */ +export interface Userorderslist { +/** + * List with user's orders details. + */ +list: List1[] +/** + * Array containing facets information. + */ +facets: string[] +paging: Paging +stats: Stats2 +} +export interface List1 { +/** + * Order ID is a unique code that identifies an order. + */ +orderId: string +/** + * Order's creation date. + */ +creationDate: string +/** + * Order's customer name. + */ +clientName: string +/** + * @deprecated + * Information about order's items. + */ +items: Item2[] +/** + * Total value amount. + */ +totalValue: number +/** + * Payment system name. + */ +paymentNames: string +/** + * Order [status](https://help.vtex.com/en/tutorial/order-flow-and-status--tutorials_196). + */ +status: string +/** + * @deprecated + * Status description which is displayed on the Admin panel. This field is deprecated and may not return any value. + */ +statusDescription: string +/** + * Marketplace order ID. + */ +marketPlaceOrderId: string +/** + * Six-digit string that follows the order ID. For example, in order `1268540501456-01 (501456)`, the sequence is `501456`. + */ +sequence: string +/** + * Sales channel (or [trade policy](https://help.vtex.com/tutorial/how-trade-policies-work--6Xef8PZiFm40kg2STrMkMV)) ID related to the order. + */ +salesChannel: string +/** + * Corresponds to the three-digits [affiliate](https://help.vtex.com/en/tutorial/configuring-affiliates--tutorials_187) identification code of the seller responsible for the order. + */ +affiliateId: string +/** + * Order's [origin in the order flow](https://developers.vtex.com/docs/guides/orders-overview#understanding-order-flow-types), which can be `Marketplace`, `Fulfillment` or `Chain`. + */ +origin: string +/** + * If there is a work flow error (`true`) or not (`false`). + */ +workflowInErrorState: boolean +/** + * If the order is in a work flow retry (`true`) or not (`false`). + */ +workflowInRetry: boolean +/** + * Last sent transactional message. + */ +lastMessageUnread: string +/** + * Estimate shipping date. + */ +ShippingEstimatedDate: string +/** + * The most extended shipping estimation possible. + */ +ShippingEstimatedDateMax: string +/** + * The least extended shipping estimation possible. + */ +ShippingEstimatedDateMin: string +/** + * If it is a completed order (`true`) or not (`false`). For more information, see [Order flow and status](https://help.vtex.com/en/tutorial/order-flow-and-status--tutorials_196). + */ +orderIsComplete: boolean +/** + * Related Gift List ID. + */ +listId: string +/** + * Related Gift list type. + */ +listType: string +/** + * Authorized order date. + */ +authorizedDate: string +/** + * Call center operator responsible for the order. + */ +callCenterOperatorName: string +/** + * Order's total amount of items. + */ +totalItems: number +/** + * Currency code in ISO 4217. For example, `BRL`. + */ +currencyCode: string +minItems?: 0 +} +export interface Item2 { +/** + * Seller related to the order. + */ +seller: string +/** + * Quantity of SKUs. + */ +quantity: number +/** + * Description of items. + */ +description: string +/** + * EAN of the SKU. + */ +ean: string +/** + * Item's reference ID. + */ +refId: string +/** + * Item's SKU ID, which is a unique numerical identifier. + */ +id: string +/** + * ID of the Product associated with the item. + */ +productId: string +/** + * Details on item's selling price. + */ +sellingPrice: number +/** + * Item's price. + */ +price: number +} +/** + * Pagination information. + */ +export interface Paging { +/** + * Total number of orders. + */ +total: number +/** + * Total number of pages. + */ +pages: number +/** + * Number of the current page. + */ +currentPage: number +/** + * Number of orders per page. + */ +perPage: number +} +export interface Stats2 { +stats: Stats3 +} +export interface Stats3 { +totalValue: TotalValue1 +totalItems: TotalItems1 +} +export interface TotalValue1 { +Count: number +Max: number +Mean: number +Min: number +Missing: number +StdDev: number +Sum: number +SumOfSquares: number +Facets: { + +} +} +export interface TotalItems1 { +Count: number +Max: number +Mean: number +Min: number +Missing: number +StdDev: number +Sum: number +SumOfSquares: number +Facets: { + +} +} diff --git a/app-tags/utils/openapi/vcs.openapi.json b/app-tags/utils/openapi/vcs.openapi.json new file mode 100644 index 0000000..e25ba83 --- /dev/null +++ b/app-tags/utils/openapi/vcs.openapi.json @@ -0,0 +1,42331 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "VTEX API", + "description": "created from https://github.com/vtex/openapi-schemas/tree/master", + "contact": {}, + "version": "1.0" + }, + "paths": { + "/api/dataentities/{acronym}/search": { + "get": { + "tags": [ + "Search" + ], + "summary": "Search documents", + "description": "Searches Master Data v1 documents with highly customizable filters.\r\n\r\n> Learn more about [Master Data v1 search queries](https://developers.vtex.com/vtex-rest-api/docs/how-the-queries-in-master-data-v1-work).\r\n\r\n## Query Examples\r\n\r\n\r\n### Simple filter\r\n\r\n```\r\n/dataentities/CL/search?email=my@email.com\r\n```\r\n\r\n### Complex filter\r\n\r\n```\r\n/dataentities/CL/search?_where=(firstName=Jon OR lastName=Smith) OR (createdIn between 2001-01-01 AND 2016-01-01)\r\n```\r\n\r\n### Filter by range\r\n\r\n#### Date Range\r\n\r\n```\r\n/dataentities/CL/search?_where=createdIn between 2001-01-01 AND 2016-01-01\r\n```\r\n\r\n#### Range numeric fields\r\n\r\n```\r\n/dataentities/CL/search?_where=age between 18 AND 25\r\n```\r\n\r\n### Partial filter\r\n\r\n```\r\n/dataentities/CL/search?firstName=*Maria*\r\n```\r\n\r\n### Filter for null values\r\n\r\n```\r\n/dataentities/CL/search?_where=firstName is null\r\n```\r\n\r\n### Filter for non-null values\r\n\r\n```\r\n/dataentities/CL/search?_where=firstName is not null\r\n```\r\n\r\n### Filter for difference\r\n```\r\n/dataentities/CL/search?_where=firstName<>maria\r\n```\r\n\r\n### Filter greater than or less than\r\n```\r\n/dataentities/CL/search?_where=number>5\r\n/dataentities/CL/search?_where=date<2001-01-01\r\n```\n\r\n\r> Avoid sending too many requests with wildcards (`*`) in the search parameters or that use the `keyword` parameter. This may lead to this endpoint being temporarily blocked for your account. If this happens you will receive an error with status code `503`. \r\n\r\n## Permissions\r\n\r\nAny user or [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys) must have at least one of the appropriate [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3) to be able to successfully run this request. Otherwise they will receive a status code `403` error. These are the applicable resources for this endpoint:\r\n\r\n| **Product** | **Category** | **Resource** |\r\n| --------------- | ----------------- | ----------------- |\r\n| Dynamic Storage | Dynamic storage generic resources | **Read only documents** |\r\n| Dynamic Storage | Dynamic storage generic resources | **Insert or update document (not remove)** |\r\n| Dynamic Storage | Dynamic storage generic resources | **Full access to all documents** |\r\n| Dynamic Storage | Dynamic storage generic resources | **Master Data administrator** |\r\n\r\nThere are no applicable [predefined roles](https://help.vtex.com/en/tutorial/predefined-roles--jGDurZKJHvHJS13LnO7Dy) for this resource list. You must [create a custom role](https://help.vtex.com/en/tutorial/roles--7HKK5Uau2H6wxE1rH5oRbc#creating-a-role) and add at least one of the resources above in order to use this endpoint.To learn more about machine authentication at VTEX, see [Authentication overview](https://developers.vtex.com/docs/guides/authentication).\r\n\r\n>\u2757 To prevent integrations from having excessive permissions, consider the [best practices for managing app keys](https://help.vtex.com/en/tutorial/best-practices-application-keys--7b6nD1VMHa49aI5brlOvJm) when assigning License Manager roles to integrations.", + "operationId": "Searchdocuments", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "REST-Range", + "in": "header", + "description": "Defines the collection of documents to be returned. A range within the collection limited by 100 documents per query.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "resources=0-10" + } + }, + { + "name": "acronym", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "_fields", + "in": "query", + "description": "Names of the fields that will be returned per document, separated by a comma `,`. It is possible to fetch all fields using `_all` as the value of this query parameter. However, in order to avoid permission errors, we strongly recommend informing only the names of the exact fields that will be used.", + "required": false, + "style": "form", + "schema": { + "type": "string", + "example": "email,firstName,document" + } + }, + { + "name": "_where", + "in": "query", + "description": "Specification of filters.", + "required": false, + "style": "form", + "schema": { + "type": "string", + "example": "firstName is not null" + } + }, + { + "name": "_sort", + "in": "query", + "description": "Inform a field name plus `ASC` to sort results by this field value in ascending order or `DESC` to sort by descending order.", + "required": false, + "style": "form", + "schema": { + "type": "string", + "example": "firstName ASC" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "List of documents.", + "items": { + "type": "object", + "description": "Object representing each document.", + "properties": { + "additionalProperties": { + "type": "string", + "description": "Custom properties." + }, + "id": { + "type": "string", + "description": "Unique identifier of the document." + }, + "accountId": { + "type": "string", + "description": "Unique identifier of the account." + }, + "accountName": { + "type": "string", + "description": "Account name." + }, + "dataEntityId": { + "type": "string", + "description": "Two-letter string that identifies the data entity." + } + } + } + }, + "example": [ + { + "id": "2f5dde81-1613-11ea-82ee-12f868feb457", + "accountId": "a8b27fb4-6516-4cc0-82b6-a5f2b011e6e2", + "accountName": "apiexamples", + "dataEntityId": "AS" + }, + { + "id": "3b3a3fc9-164b-11ea-82ee-121449f60ecb", + "accountId": "a8b27fb4-6516-4cc0-82b6-a5f2b011e6e2", + "accountName": "apiexamples", + "dataEntityId": "AS" + } + ] + } + } + }, + "503": { + "description": "Service Unavailable. Wildcard queries temporarily blocked due to excessive usage. Consider adjusting your code to remove them or reduce the rate of search requests with wildcards (*). This temporary block may also be due to excessive use of requests with the parameter `keyword`." + } + } + } + }, + "/api/logistics/pvt/inventory/skus/{skuId}": { + "get": { + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "skuId": { + "type": "string", + "description": "Unique identifier of the SKU." + }, + "balance": { + "type": "array", + "description": "List of warehouses.", + "items": { + "type": "object", + "description": "Object representing each document.", + "properties": { + "hasUnlimitedQuantity": { + "type": "boolean" + }, + "leadTime": { + "type": "string" + }, + "reservedQuantity": { + "type": "integer" + }, + "totalQuantity": { + "type": "integer" + }, + "warehouseId": { + "type": "string", + "description": "Warehouse ID." + }, + "warehouseName": { + "type": "string", + "description": "Warehouse name." + } + } + } + } + } + }, + "example": { + "skuId": "44", + "balance": [ + { + "warehouseId": "1_1", + "warehouseName": "Inventário principal", + "totalQuantity": 1000000, + "reservedQuantity": 0, + "hasUnlimitedQuantity": true, + "timeToRefill": null, + "dateOfSupplyUtc": null, + "leadTime": "00:00:00" + }, + { + "warehouseId": "11c479c", + "warehouseName": "Estoque Virtual 11 dias uteis", + "totalQuantity": 0, + "reservedQuantity": 0, + "hasUnlimitedQuantity": false, + "timeToRefill": null, + "dateOfSupplyUtc": null, + "leadTime": "00:00:00" + } + ] + } + } + } + }, + "503": { + "description": "Service Unavailable. Wildcard queries temporarily blocked due to excessive usage. Consider adjusting your code to remove them or reduce the rate of search requests with wildcards (*). This temporary block may also be due to excessive use of requests with the parameter `keyword`." + } + } + } + }, + "/api/logistics/pvt/configuration/pickuppoints": { + "get": { + "tags": [ + "Pickup points" + ], + "summary": "List pickup points", + "description": "Retrieves information about [pickup points](https://help.vtex.com/en/tutorial/pickup-points--2fljn6wLjn8M4lJHA6HP3R) of your store.\r\n\r\n>⚠️ The response is limited to 1.000 pickup points. If you need more than 1000 results, you can use the [List paged pickup points](https://developers.vtex.com/docs/api-reference/logistics-api#get-/api/logistics/pvt/configuration/pickuppoints/_search) endpoint.", + "operationId": "ListAllPickupPpoints", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "List of pickup points, limited to 1.000 pickup points. If you need more than 1000 results, you can use the [List paged pickup points](https://developers.vtex.com/docs/api-reference/logistics-api#get-/api/logistics/pvt/configuration/pickuppoints/_search) endpoint.", + "items": { + "$ref": "#/components/schemas/PickupPoint" + } + }, + "example": [ + { + "id": "b8e7ca56", + "name": "Pickup Shopping Center", + "description": "Shopping Center from Barra", + "instructions": "You have to present a document to collect your package", + "formatted_address": "undefined", + "address": { + "postalCode": "22250040", + "country": { + "acronym": "BRA", + "name": "Brazil" + }, + "city": "Rio de Janeiro", + "state": "RJ", + "neighborhood": "Botafogo", + "street": "Botafogo beach", + "number": "300", + "complement": "Shopping Center", + "reference": "Third floor", + "location": { + "latitude": -22.906847, + "longitude": -43.172897 + } + }, + "isActive": true, + "distance": 0, + "seller": "Fashion Skirts", + "_sort": [ + 1574240390000 + ], + "businessHours": [ + { + "dayOfWeek": 1, + "openingTime": "09:00:00", + "closingTime": "18:00:00" + }, + { + "dayOfWeek": 2, + "openingTime": "09:00:00", + "closingTime": "18:00:00" + }, + { + "dayOfWeek": 3, + "openingTime": "09:00:00", + "closingTime": "18:00:00" + }, + { + "dayOfWeek": 4, + "openingTime": "09:00:00", + "closingTime": "18:00:00" + }, + { + "dayOfWeek": 5, + "openingTime": "09:00:00", + "closingTime": "18:00:00" + } + ], + "tagsLabel": [ + "w67", + "p34" + ], + "pickupHolidays": [ + { + "date": "2024-12-28T03:00:00Z", + "hourBegin": "09:00", + "hourEnd": "13:00" + }, + { + "date": "2024-11-17T03:00:00Z", + "hourBegin": "00:00", + "hourEnd": "00:00" + } + ], + "isThirdPartyPickup": false, + "accountOwnerName": "Fashion Store", + "accountOwnerId": "1b4018ec-48bf-4a59-9eae-547403e11afc", + "parentAccountName": "Fashion Store", + "originalId": null + }, + { + "id": "792893547449051", + "name": "Bleu PUP", + "description": "Bleu Store", + "instructions": "You must present a document to collect your order", + "formatted_address": "undefined", + "address": { + "postalCode": "18550-000", + "country": { + "acronym": "BRA", + "name": "Brasil" + }, + "city": "Boituva", + "state": "SP", + "neighborhood": "Tancredo Neves", + "street": "BTV-250", + "number": "01", + "complement": "Second floor", + "reference": "Next to the city hall", + "location": { + "latitude": -23.2863329, + "longitude": -47.6783742 + } + }, + "isActive": true, + "distance": 1574240387072, + "seller": "Recurrency", + "_sort": [ + 1574240390000 + ], + "businessHours": [ + { + "dayOfWeek": 1, + "openingTime": "09:00:00", + "closingTime": "18:00:00" + }, + { + "dayOfWeek": 2, + "openingTime": "09:00:00", + "closingTime": "18:00:00" + }, + { + "dayOfWeek": 3, + "openingTime": "09:00:00", + "closingTime": "18:00:00" + }, + { + "dayOfWeek": 4, + "openingTime": "09:00:00", + "closingTime": "18:00:00" + }, + { + "dayOfWeek": 5, + "openingTime": "09:00:00", + "closingTime": "18:00:00" + } + ], + "tagsLabel": [ + "kr47", + "yk15" + ], + "pickupHolidays": [ + { + "date": "2024-12-28T03:00:00Z", + "hourBegin": "09:00", + "hourEnd": "13:00" + } + ], + "isThirdPartyPickup": false, + "accountOwnerName": "sportsstore", + "accountOwnerId": "9ddcfba5-3855-49ec-b61e-b2847b9314cc", + "parentAccountName": "sportsstore", + "originalId": "b8e7ca56" + } + ] + } + } + } + } + } + }, + "/api/catalog_system/pvt/products/GetProductAndSkuIds": { + "get": { + "tags": [ + "Product" + ], + "summary": "Get Product and SKU IDs", + "description": "Retrieves the IDs of products and SKUs. \r\n> 📘 Onboarding guide \r\n>\r\n> Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey.", + "operationId": "ProductAndSkuIds", + "parameters": [ + { + "name": "categoryId", + "in": "query", + "description": "ID of the category from which you need to retrieve Products and SKUs.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int32", + "example": 1 + } + }, + { + "name": "_from", + "in": "query", + "description": "Insert the ID that will start the request result.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int32", + "example": 1 + } + }, + { + "name": "_to", + "in": "query", + "description": "Insert the ID that will end the request result.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int32", + "example": 10 + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "data": { + "3": [ + 5 + ], + "8": [ + 310118453, + 310118459, + 310118463 + ], + "2": [ + 3, + 310118450, + 310118451, + 4, + 8 + ], + "9": [ + 310118454, + 310118455, + 310118456, + 310118457, + 310118458, + 310118460, + 310118461, + 310118462, + 310118464 + ], + "12": [ + 310118490 + ], + "6": [], + "7": [ + 310118452 + ], + "1": [ + 1, + 123456, + 310118449, + 310118489, + 7, + 2 + ], + "5": [ + 310118465 + ], + "4": [ + 310118448 + ], + "10": [], + "11": [] + }, + "range": { + "total": 12, + "from": 1, + "to": 20 + } + }, + "schema": { + "type": "object", + "properties": { + "data": { + "type": "object", + "description": "Object composed by Product IDs and SKU IDs, where the parent ID is from Products and the SKU IDs are the Child IDs.", + "properties": { + "Product ID": { + "type": "array", + "description": "Array with SKU IDs of a certain product.", + "items": { + "type": "integer", + "description": "Product SKU ID." + } + } + } + }, + "range": { + "type": "object", + "description": "Object with information about the product and SKUs list.", + "properties": { + "total": { + "type": "integer", + "description": "Total quantity of SKUs." + }, + "from": { + "type": "integer", + "description": "Initial product ID." + }, + "to": { + "type": "integer", + "description": "Final product ID." + } + } + } + } + } + } + } + } + } + } + }, + "/api/dataentities/{acronym}/documents": { + "post": { + "summary": "Create a new document", + "parameters": [ + { + "in": "path", + "name": "acronym", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "anyProperty": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Document created successfully", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "string" + }, + "Href": { + "type": "string" + }, + "DocumentId": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/product/{productId}": { + "get": { + "tags": [ + "Product" + ], + "summary": "Get Product by ID", + "description": "Retrieves a specific Product by its ID. This information is exactly what is needed to create a new Product. \r\n> 📘 Onboarding guide \r\n>\r\n> Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey.", + "operationId": "GetProductbyid", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "description": "Product’s unique numerical identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "example": { + "Id": 42, + "Name": "Zoom Stefan Janoski Canvas RM SB Varsity Red", + "DepartmentId": 2000089, + "CategoryId": 2000090, + "BrandId": 12121219, + "LinkId": "stefan-janoski-canvas-varsity-red", + "RefId": "sr_1_90", + "IsVisible": true, + "Description": "The Nike Zoom Stefan Janoski Men's Shoe is made with a premium leather upper for superior durability and a flexible midsole for all-day comfort. A tacky gum rubber outsole delivers outstanding traction.", + "DescriptionShort": "The Nike Zoom Stefan Janoski is made with a premium leather.", + "ReleaseDate": "2020-01-01T00:00:00", + "KeyWords": "Zoom,Stefan,Janoski", + "Title": "Zoom Stefan Janoski Canvas RM SB Varsity Re", + "IsActive": true, + "TaxCode": "", + "MetaTagDescription": "The Nike Zoom Stefan Janoski Men's Shoe is made with a premium leather upper for superior durability and a flexible midsole for all-day comfort. A tacky gum rubber outsole delivers outstanding traction.", + "SupplierId": 1, + "ShowWithoutStock": true, + "AdWordsRemarketingCode": "", + "LomadeeCampaignCode": "", + "Score": 1 + }, + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Product’s unique numerical identifier." + }, + "Name": { + "type": "string", + "description": "Product's name. Limited to 150 characters." + }, + "DepartmentId": { + "type": "integer", + "description": "Department ID according to the product's category." + }, + "CategoryId": { + "type": "integer", + "description": "Category ID associated with this product." + }, + "BrandId": { + "type": "integer", + "description": "Brand ID associated with this product." + }, + "LinkId": { + "type": "string", + "description": "Slug that will be used to build the product page URL. If it not informed, it will be generated according to the product's name replacing spaces and special characters by hyphens (`-`)." + }, + "RefId": { + "type": "string", + "description": "Product Reference Code." + }, + "IsVisible": { + "type": "boolean", + "description": "Shows (`true`) or hides (`false`) the product in search result and product pages, but the product can still be added to the shopping cart. Usually applicable for gifts." + }, + "Description": { + "type": "string", + "description": "Product description." + }, + "DescriptionShort": { + "type": "string", + "description": "Short product description. This information can be displayed on both the product page and the shelf, using the following controls:\r\n Store Framework: `$product.DescriptionShort`.\r\n Legacy CMS Portal: ``.\r\n" + }, + "ReleaseDate": { + "type": "string", + "description": "Used to assist in the ordering of the search result of the site. Using the `O=OrderByReleaseDateDESC` query string, you can pull this value and show the display order by release date. This attribute is also used as a condition for dynamic collections." + }, + "KeyWords": { + "type": "string", + "description": "Store Framework: Deprecated. \r\nLegacy CMS Portal: Keywords or synonyms related to the product, separated by comma (`,`). \"Television\", for example, can have a substitute word like \"TV\". This field is important to make your searches more comprehensive.\r\n" + }, + "Title": { + "type": "string", + "description": "Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO." + }, + "IsActive": { + "type": "boolean", + "description": "Activate (`true`) or inactivate (`false`) product." + }, + "TaxCode": { + "type": "string", + "description": "Product tax code, used for tax calculation." + }, + "MetaTagDescription": { + "type": "string", + "description": "Brief description of the product for SEO. It is recommended not to exceed 150 characters." + }, + "SupplierId": { + "type": "integer", + "deprecated": true, + "nullable": true + }, + "ShowWithoutStock": { + "type": "boolean", + "description": "If `true`, activates the [Notify Me](https://help.vtex.com/en/tutorial/setting-up-the-notify-me-option--2VqVifQuf6Co2KG048Yu6e) option when the product is out of stock." + }, + "AdWordsRemarketingCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "LomadeeCampaignCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "Score": { + "type": "integer", + "description": "Value used to set the priority on the search result page.", + "example": 1 + } + } + } + } + } + } + }, + "deprecated": false + }, + "put": { + "tags": [ + "Product" + ], + "summary": "Update Product", + "description": "Updates an existing Product.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "required": true, + "description": "Product’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "example": { + "Id": 42, + "Name": "Zoom Stefan Janoski Canvas RM SB Varsity Red", + "DepartmentId": 2000089, + "CategoryId": 2000090, + "BrandId": 12121219, + "LinkId": "stefan-janoski-canvas-varsity-red", + "RefId": "sr_1_90", + "IsVisible": true, + "Description": "The Nike Zoom Stefan Janoski Men's Shoe is made with a premium leather upper for superior durability and a flexible midsole for all-day comfort. A tacky gum rubber outsole delivers outstanding traction.", + "DescriptionShort": "The Nike Zoom Stefan Janoski is made with a premium leather.", + "ReleaseDate": "2020-01-01T00:00:00", + "KeyWords": "Zoom,Stefan,Janoski", + "Title": "Zoom Stefan Janoski Canvas RM SB Varsity Re", + "IsActive": true, + "TaxCode": "", + "MetaTagDescription": "The Nike Zoom Stefan Janoski Men's Shoe is made with a premium leather upper for superior durability and a flexible midsole for all-day comfort. A tacky gum rubber outsole delivers outstanding traction.", + "SupplierId": 1, + "ShowWithoutStock": true, + "AdWordsRemarketingCode": "", + "LomadeeCampaignCode": "", + "Score": 1 + }, + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Product’s unique numerical identifier." + }, + "Name": { + "type": "string", + "description": "Product's name. Limited to 150 characters." + }, + "DepartmentId": { + "type": "integer", + "description": "Department ID according to the product's category." + }, + "CategoryId": { + "type": "integer", + "description": "Category ID associated with this product." + }, + "BrandId": { + "type": "integer", + "description": "Brand ID associated with this product." + }, + "LinkId": { + "type": "string", + "description": "Slug that will be used to build the product page URL. If it not informed, it will be generated according to the product's name replacing spaces and special characters by hyphens (`-`)." + }, + "RefId": { + "type": "string", + "description": "Product Reference Code." + }, + "IsVisible": { + "type": "boolean", + "description": "Shows (`true`) or hides (`false`) the product in search result and product pages, but the product can still be added to the shopping cart. Usually applicable for gifts." + }, + "Description": { + "type": "string", + "description": "Product description." + }, + "DescriptionShort": { + "type": "string", + "description": "Short product description. This information can be displayed on both the product page and the shelf, using the following controls:\r\n Store Framework: `$product.DescriptionShort`.\r\n Legacy CMS Portal: ``.\r\n" + }, + "ReleaseDate": { + "type": "string", + "description": "Used to assist in the ordering of the search result of the site. Using the `O=OrderByReleaseDateDESC` query string, you can pull this value and show the display order by release date. This attribute is also used as a condition for dynamic collections." + }, + "KeyWords": { + "type": "string", + "description": "Store Framework: Deprecated. \r\nLegacy CMS Portal: Keywords or synonyms related to the product, separated by comma (`,`). \"Television\", for example, can have a substitute word like \"TV\". This field is important to make your searches more comprehensive.\r\n" + }, + "Title": { + "type": "string", + "description": "Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO." + }, + "IsActive": { + "type": "boolean", + "description": "Activate (`true`) or inactivate (`false`) product." + }, + "TaxCode": { + "type": "string", + "description": "Product tax code, used for tax calculation." + }, + "MetaTagDescription": { + "type": "string", + "description": "Brief description of the product for SEO. It's recommended that you don't exceed 150 characters." + }, + "SupplierId": { + "type": "integer", + "deprecated": true, + "nullable": true + }, + "ShowWithoutStock": { + "type": "boolean", + "description": "If `true`, activates the [Notify Me](https://help.vtex.com/en/tutorial/setting-up-the-notify-me-option--2VqVifQuf6Co2KG048Yu6e) option when the product is out of stock." + }, + "AdWordsRemarketingCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "LomadeeCampaignCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "Score": { + "type": "integer", + "description": "Value used to set the priority on the search result page." + } + } + } + } + } + } + }, + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "Name", + "CategoryId", + "BrandId" + ], + "properties": { + "Name": { + "type": "string", + "description": "Product's name. Limited to 150 characters.", + "example": "Zoom Stefan Janoski Canvas RM SB Varsity Red" + }, + "DepartmentId": { + "type": "integer", + "description": "Department ID according to the product's category.", + "example": 2000089 + }, + "CategoryId": { + "type": "integer", + "description": "Category ID associated with this product.", + "example": 2000090 + }, + "BrandId": { + "type": "integer", + "description": "Brand ID associated with this product.", + "example": 12121219 + }, + "LinkId": { + "type": "string", + "description": "Slug that will be used to build the product page URL. If it not informed, it will be generated according to the product's name replacing spaces and special characters by hyphens (`-`).", + "example": "stefan-janoski-canvas-varsity-red" + }, + "RefId": { + "type": "string", + "description": "Product Reference Code.", + "example": "sr_1_90" + }, + "IsVisible": { + "type": "boolean", + "description": "Shows (`true`) or hides (`false`) the product in search result and product pages, but the product can still be added to the shopping cart. Usually applicable for gifts.", + "example": true + }, + "Description": { + "type": "string", + "description": "Product description.", + "example": "The Nike Zoom Stefan Janoski Men's Shoe is made with a premium leather upper for superior durability and a flexible midsole for all-day comfort. A tacky gum rubber outsole delivers outstanding traction." + }, + "DescriptionShort": { + "type": "string", + "description": "Short product description. This information can be displayed on both the product page and the shelf, using the following controls:\r\n Store Framework: `$product.DescriptionShort`.\r\n Legacy CMS Portal: ``.\r\n", + "example": "The Nike Zoom Stefan Janoski is made with a premium leather." + }, + "ReleaseDate": { + "type": "string", + "description": "Used to assist in the ordering of the search result of the site. Using the `O=OrderByReleaseDateDESC` query string, you can pull this value and show the display order by release date. This attribute is also used as a condition for dynamic collections.", + "example": "2019-01-01T00:00:00" + }, + "KeyWords": { + "type": "string", + "description": "Store Framework: Deprecated. \r\nLegacy CMS Portal: Keywords or synonyms related to the product, separated by comma (`,`). \"Television\", for example, can have a substitute word like \"TV\". This field is important to make your searches more comprehensive.\r\n", + "example": "Zoom,Stefan,Janoski" + }, + "Title": { + "type": "string", + "description": "Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO.", + "example": "Zoom Stefan Janoski Canvas RM SB Varsity Red" + }, + "IsActive": { + "type": "boolean", + "description": "Activate (`true`) or inactivate (`false`) product.", + "example": true + }, + "TaxCode": { + "type": "string", + "description": "Product tax code, used for tax calculation.", + "example": "12345" + }, + "MetaTagDescription": { + "type": "string", + "description": "Brief description of the product for SEO. It is recommended not to exceed 150 characters.", + "example": "The Nike Zoom Stefan Janoski Men's Shoe is made with a premium leather upper for superior durability and a flexible midsole for all-day comfort. A tacky gum rubber outsole delivers outstanding traction." + }, + "SupplierId": { + "type": "integer", + "deprecated": true, + "nullable": true + }, + "ShowWithoutStock": { + "type": "boolean", + "description": "If `true`, activates the [Notify Me](https://help.vtex.com/en/tutorial/setting-up-the-notify-me-option--2VqVifQuf6Co2KG048Yu6e) option when the product is out of stock.", + "example": true + }, + "AdWordsRemarketingCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "LomadeeCampaignCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "Score": { + "type": "integer", + "description": "Value used to set the priority on the search result page.", + "example": 1 + } + } + } + } + } + } + } + }, + "/api/catalog_system/pvt/products/productget/{productId}": { + "get": { + "tags": [ + "Product" + ], + "summary": "Get Product and its general context", + "description": "Retrieves a specific product's general information as name, description and the trade policies that it is included.", + "operationId": "ProductandTradePolicy", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "description": "Product’s unique numerical identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 1, + "Name": "Ração Royal Canin Feline Urinary", + "DepartmentId": 1, + "CategoryId": 10, + "BrandId": 2000000, + "LinkId": "racao-royal-canin-feline-urinary", + "RefId": "", + "IsVisible": true, + "Description": "Descrição.", + "DescriptionShort": "", + "ReleaseDate": "2020-01-06T00:00:00", + "KeyWords": "bbbbbbbbbbbb*, a@", + "Title": "Ração Royal Canin Feline Urinary", + "IsActive": true, + "TaxCode": "", + "MetaTagDescription": "Descrição.", + "SupplierId": 1, + "ShowWithoutStock": true, + "ListStoreId": [ + 1, + 2, + 3 + ], + "AdWordsRemarketingCode": "", + "LomadeeCampaignCode": "" + }, + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Product ID.", + "example": 1 + }, + "Name": { + "type": "string", + "description": "Product's name. Limited to 150 characters.", + "example": "Ração Royal Canin Feline Urinary" + }, + "DepartmentId": { + "type": "integer", + "description": "Product department ID.", + "example": 1 + }, + "CategoryId": { + "type": "integer", + "description": "Product category ID.", + "example": 10 + }, + "BrandId": { + "type": "integer", + "description": "Product brand ID.", + "example": 2000000 + }, + "LinkId": { + "type": "string", + "description": "Product text link.", + "example": "racao-royal-canin-feline-urinary" + }, + "RefId": { + "type": "string", + "description": "Product referecial code.", + "example": "" + }, + "IsVisible": { + "type": "boolean", + "description": "If the Product is visible on the store.", + "example": true + }, + "Description": { + "type": "string", + "description": "Product description.", + "example": "Description" + }, + "DescriptionShort": { + "type": "string", + "description": "Product complement name.", + "example": "" + }, + "ReleaseDate": { + "type": "string", + "description": "Product release date.", + "example": "2020-01-06T00:00:00" + }, + "KeyWords": { + "type": "string", + "description": "Substitutes words for the product.", + "example": "ração, racao, animal" + }, + "Title": { + "type": "string", + "description": "Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO.", + "example": "Ração Royal Canin Feline Urinary" + }, + "IsActive": { + "type": "boolean", + "description": "If the product is active (`true`) or not (`false`) at the store.", + "example": true + }, + "TaxCode": { + "type": "string", + "description": "Product fiscal code.", + "example": "" + }, + "MetaTagDescription": { + "type": "string", + "description": "Product meta tag description.", + "example": "Description" + }, + "SupplierId": { + "type": "integer", + "description": "Product supplier ID.", + "example": 1 + }, + "ShowWithoutStock": { + "type": "boolean", + "description": "Defines if the Product will remain being shown in the store even if it’s out of stock.", + "example": true + }, + "ListStoreId": { + "type": "array", + "description": "List with the Trade Policies IDs that the product is included.", + "items": { + "type": "integer", + "description": "Trade Policy ID." + }, + "example": [ + 1, + 2 + ] + }, + "AdWordsRemarketingCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "LomadeeCampaignCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + } + } + } + } + } + } + } + } + }, + "/api/catalog_system/pvt/products/productgetbyrefid/{refId}": { + "get": { + "tags": [ + "Product" + ], + "summary": "Get Product by RefId", + "description": "Retrieves a specific product by its Reference ID.", + "operationId": "ProductbyRefId", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "refId", + "in": "path", + "description": "Product Referecial Code", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 17, + "Name": "BLACK+DECKER 20V MAX Cordless Drill / Driver with 30-Piece Accessories (LD120VA)", + "DepartmentId": 9287, + "CategoryId": 9287, + "BrandId": 9280, + "LinkId": "black-decker-20v-max-cordless-drill-driver-with-30-piece-acessories-ld120va", + "RefId": "880010", + "IsVisible": true, + "Description": "The Black and Decker LD120-VoltA 20-Volt Max Lithium Drill/Driver with 30 Accessories come with the Black and Decker 20-volt max Lithium Ion Battery. These batteries are always ready, holding a charge up to 18 months. This drill provides an extra level of control with a 24 position clutch that helps to prevent stripping and overdriving screws. It has a soft grip handle that provides added comfort during use and a light weight to prevent user fatigue. This drill is ideal for drilling and screwdriving through wood, metal, and plastic. The LD120-VoltA set includes: LD120 20-Volt MAX Lithium Drill/Driver, (1) LB20 20-Volt MAX Lithium Ion Battery, (1) LCS20 Charger, (6) Brad Point Drill Bits, (10) 1-Inch Screwdriving Bits, (9) 2-Inch Screwdriving Bits, (4) Nut Drivers, (1) Magnetic Bit Tip Holder and is backed by Black and Decker's 2 year limited warranty.", + "DescriptionShort": "The Black and Decker LD120-VoltA 20-Volt Max Lithium Drill/Driver with 30 Accessories come with the Black and Decker 20-volt max Lithium Ion Battery. These batteries are always ready, holding a charge up to 18 months. This drill provides an extra level of control with a 24 position clutch that helps to prevent stripping and overdriving screws. It has a soft grip handle that provides added comfort during use and a light weight to prevent user fatigue. This drill is ideal for drilling and screwdriving through wood, metal, and plastic. The LD120-VoltA set includes: LD120 20-Volt MAX Lithium Drill/Driver, (1) LB20 20-Volt MAX Lithium Ion Battery, (1) LCS20 Charger, (6) Brad Point Drill Bits, (10) 1-Inch Screwdriving Bits, (9) 2-Inch Screwdriving Bits, (4) Nut Drivers, (1) Magnetic Bit Tip Holder and is backed by Black and Decker's 2 year limited warranty.", + "ReleaseDate": "2020-01-01T00:00:00", + "KeyWords": "product,sample", + "Title": "BLACK+DECKER 20V MAX Cordless Drill / Driver with 30-Piece Accessories (LD120VA)", + "IsActive": true, + "TaxCode": "", + "MetaTagDescription": "The Black and Decker LD120-VoltA 20-Volt Max Lithium Drill/Driver with 30 Accessories come with the Black and Decker 20-volt max Lithium Ion Battery. These batteries are always ready, holding a charge up to 18 months. This drill provides an extra level of control with a 24 position clutch that helps to prevent stripping and overdriving screws. It has a soft grip handle that provides added comfort during use and a light weight to prevent user fatigue. This drill is ideal for drilling and screwdriving through wood, metal, and plastic. The LD120-VoltA set includes: LD120 20-Volt MAX Lithium Drill/Driver, (1) LB20 20-Volt MAX Lithium Ion Battery, (1) LCS20 Charger, (6) Brad Point Drill Bits, (10) 1-Inch Screwdriving Bits, (9) 2-Inch Screwdriving Bits, (4) Nut Drivers, (1) Magnetic Bit Tip Holder and is backed by Black and Decker's 2 year limited warranty.", + "SupplierId": 1, + "ShowWithoutStock": true, + "ListStoreId": [ + 1 + ], + "AdWordsRemarketingCode": "", + "LomadeeCampaignCode": "" + }, + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "ID of the Product." + }, + "Name": { + "type": "string", + "description": "Name of the Product." + }, + "DepartmentId": { + "type": "integer", + "description": "ID of product department." + }, + "CategoryId": { + "type": "integer", + "description": "ID of product Category." + }, + "BrandId": { + "type": "integer", + "description": "ID of the product Brand." + }, + "LinkId": { + "type": "string", + "description": "Category URL." + }, + "RefId": { + "type": "string", + "description": "Product Reference ID." + }, + "IsVisible": { + "type": "boolean", + "description": "If the product are visible in search and list pages." + }, + "Description": { + "type": "string", + "description": "Product Description, HTML is allowed." + }, + "DescriptionShort": { + "type": "string", + "description": "Product Short Description." + }, + "ReleaseDate": { + "type": "string", + "description": "Product Release Date, for list ordering and product cluster highlight." + }, + "KeyWords": { + "type": "string", + "description": "Alternatives Keywords to improve the product findability." + }, + "Title": { + "type": "string", + "description": "Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO." + }, + "IsActive": { + "type": "boolean", + "description": "If the product is Active." + }, + "TaxCode": { + "type": "string", + "description": "SKU Tax Code." + }, + "MetaTagDescription": { + "type": "string", + "description": "Meta Description for the Product page." + }, + "SupplierId": { + "type": "integer", + "description": "Product Supplier ID." + }, + "ShowWithoutStock": { + "type": "boolean", + "description": "If the product can be visible without stock." + }, + "ListStoreId": { + "type": "array", + "description": "Array with the ID of all the trade policies that are related to the product.", + "items": { + "type": "integer", + "description": "Trade policy ID." + } + }, + "AdWordsRemarketingCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "LomadeeCampaignCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + } + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pub/products/variations/{productId}": { + "get": { + "tags": [ + "Product" + ], + "summary": "Get Product's SKUs by Product ID", + "description": "Retrieves data about the product and all SKUs related to it by the product's ID.\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"productId\": 9,\r\n \"name\": \"Camisa Masculina\",\r\n \"salesChannel\": \"2\",\r\n \"available\": true,\r\n \"displayMode\": \"lista\",\r\n \"dimensions\": [\r\n \"Cores\",\r\n \"Tamanho\",\r\n \"Pa\u00EDs de origem\",\r\n \"G\u00EAnero\"\r\n ],\r\n \"dimensionsInputType\": {\r\n \"Cores\": \"Combo\",\r\n \"Tamanho\": \"Combo\",\r\n \"Pa\u00EDs de origem\": \"Combo\",\r\n \"G\u00EAnero\": \"Combo\"\r\n },\r\n \"dimensionsMap\": {\r\n \"Cores\": [\r\n \"Amarelo\",\r\n \"Azul\",\r\n \"Vermelho\"\r\n ],\r\n \"Tamanho\": [\r\n \"P\",\r\n \"M\",\r\n \"G\"\r\n ],\r\n \"Pa\u00EDs de origem\": [\r\n \"Brasil\"\r\n ],\r\n \"G\u00EAnero\": [\r\n \"Masculino\"\r\n ]\r\n },\r\n \"skus\": [\r\n {\r\n \"sku\": 310118454,\r\n \"skuname\": \"Amarela - G\",\r\n \"dimensions\": {\r\n \"Cores\": \"Amarelo\",\r\n \"Tamanho\": \"G\",\r\n \"Pa\u00EDs de origem\": \"Brasil\",\r\n \"G\u00EAnero\": \"Masculino\"\r\n },\r\n \"available\": false,\r\n \"availablequantity\": 0,\r\n \"cacheVersionUsedToCallCheckout\": null,\r\n \"listPriceFormated\": \"R$ 0,00\",\r\n \"listPrice\": 0,\r\n \"taxFormated\": \"R$ 0,00\",\r\n \"taxAsInt\": 0,\r\n \"bestPriceFormated\": \"R$ 9.999.876,00\",\r\n \"bestPrice\": 999987600,\r\n \"spotPrice\": 999987600,\r\n \"installments\": 0,\r\n \"installmentsValue\": 0,\r\n \"installmentsInsterestRate\": null,\r\n \"image\": \"https:\/\/lojadobreno.vteximg.com.br\/arquivos\/ids\/155467-292-292\/image-5d7ad76ad1954c53adecab4138319034.jpg?v=637321899584500000\",\r\n \"sellerId\": \"1\",\r\n \"seller\": \"lojadobreno\",\r\n \"measures\": {\r\n \"cubicweight\": 1.0000,\r\n \"height\": 5.0000,\r\n \"length\": 20.0000,\r\n \"weight\": 200.0000,\r\n \"width\": 20.0000\r\n },\r\n \"unitMultiplier\": 1.0000,\r\n \"rewardValue\": 0\r\n },\r\n {\r\n \"sku\": 310118455,\r\n \"skuname\": \"Vermelha - M\",\r\n \"dimensions\": {\r\n \"Cores\": \"Vermelho\",\r\n \"Tamanho\": \"M\",\r\n \"Pa\u00EDs de origem\": \"Brasil\",\r\n \"G\u00EAnero\": \"Masculino\"\r\n },\r\n \"available\": true,\r\n \"availablequantity\": 99999,\r\n \"cacheVersionUsedToCallCheckout\": \"38395F1AEF59DF5CEAEDE472328145CD_\",\r\n \"listPriceFormated\": \"R$ 0,00\",\r\n \"listPrice\": 0,\r\n \"taxFormated\": \"R$ 0,00\",\r\n \"taxAsInt\": 0,\r\n \"bestPriceFormated\": \"R$ 20,00\",\r\n \"bestPrice\": 2000,\r\n \"spotPrice\": 2000,\r\n \"installments\": 1,\r\n \"installmentsValue\": 2000,\r\n \"installmentsInsterestRate\": 0,\r\n \"image\": \"https:\/\/lojadobreno.vteximg.com.br\/arquivos\/ids\/155468-292-292\/image-601a6099aace48b89d26fc9f22e8e611.jpg?v=637321906602470000\",\r\n \"sellerId\": \"pedrostore\",\r\n \"seller\": \"pedrostore\",\r\n \"measures\": {\r\n \"cubicweight\": 0.4167,\r\n \"height\": 5.0000,\r\n \"length\": 20.0000,\r\n \"weight\": 200.0000,\r\n \"width\": 20.0000\r\n },\r\n \"unitMultiplier\": 1.0000,\r\n \"rewardValue\": 0\r\n }\r\n ]\r\n}\r\n```", + "operationId": "ProductVariations", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "description": "Product’s unique numerical identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "example": { + "productId": 9, + "name": "Camisa Masculina", + "salesChannel": "2", + "available": true, + "displayMode": "lista", + "dimensions": [ + "Cores", + "Tamanho", + "País de origem", + "Gênero" + ], + "dimensionsInputType": { + "Cores": "Combo", + "Tamanho": "Combo", + "País de origem": "Combo", + "Gênero": "Combo" + }, + "dimensionsMap": { + "Cores": [ + "Amarelo", + "Azul", + "Vermelho" + ], + "Tamanho": [ + "P", + "M", + "G" + ], + "País de origem": [ + "Brasil" + ], + "Gênero": [ + "Masculino" + ] + }, + "skus": [ + { + "sku": 310118454, + "skuname": "Amarela - G", + "dimensions": { + "Cores": "Amarelo", + "Tamanho": "G", + "País de origem": "Brasil", + "Gênero": "Masculino" + }, + "available": false, + "availablequantity": 0, + "cacheVersionUsedToCallCheckout": null, + "listPriceFormated": "R$ 0,00", + "listPrice": 0, + "taxFormated": "R$ 0,00", + "taxAsInt": 0, + "bestPriceFormated": "R$ 9.999.876,00", + "bestPrice": 999987600, + "spotPrice": 999987600, + "installments": 0, + "installmentsValue": 0, + "installmentsInsterestRate": null, + "image": "https://lojadobreno.vteximg.com.br/arquivos/ids/155467-292-292/image-5d7ad76ad1954c53adecab4138319034.jpg?v=637321899584500000", + "sellerId": "1", + "seller": "lojadobreno", + "measures": { + "cubicweight": 1.0000, + "height": 5.0000, + "length": 20.0000, + "weight": 200.0000, + "width": 20.0000 + }, + "unitMultiplier": 1.0000, + "rewardValue": 0 + }, + { + "sku": 310118455, + "skuname": "Vermelha - M", + "dimensions": { + "Cores": "Vermelho", + "Tamanho": "M", + "País de origem": "Brasil", + "Gênero": "Masculino" + }, + "available": true, + "availablequantity": 99999, + "cacheVersionUsedToCallCheckout": "38395F1AEF59DF5CEAEDE472328145CD_", + "listPriceFormated": "R$ 0,00", + "listPrice": 0, + "taxFormated": "R$ 0,00", + "taxAsInt": 0, + "bestPriceFormated": "R$ 20,00", + "bestPrice": 2000, + "spotPrice": 2000, + "installments": 1, + "installmentsValue": 2000, + "installmentsInsterestRate": 0, + "image": "https://lojadobreno.vteximg.com.br/arquivos/ids/155468-292-292/image-601a6099aace48b89d26fc9f22e8e611.jpg?v=637321906602470000", + "sellerId": "pedrostore", + "seller": "pedrostore", + "measures": { + "cubicweight": 0.4167, + "height": 5.0000, + "length": 20.0000, + "weight": 200.0000, + "width": 20.0000 + }, + "unitMultiplier": 1.0000, + "rewardValue": 0 + } + ] + }, + "type": "object", + "description": "Response body.", + "properties": { + "productId": { + "type": "integer", + "description": "Product’s unique numerical identifier." + }, + "name": { + "type": "string", + "description": "Product name." + }, + "salesChannel": { + "type": "string", + "description": "Trade policy ID." + }, + "available": { + "type": "boolean", + "description": "Defines if the product is available (`true`) or not (`false`)." + }, + "displayMode": { + "type": "string", + "description": "Defines the mannner SKUs are displayed." + }, + "dimensions": { + "type": "array", + "description": "Lists SKU specifications.", + "items": { + "type": "string", + "description": "Name of the SKU specification." + } + }, + "dimensionsInputType": { + "type": "object", + "description": "Lists SKU specifications and their field type, in the following format: `\"{specificationName}\":\"{fieldType}\"`.", + "additionalProperties": { + "type": "string" + } + }, + "dimensionsMap": { + "type": "object", + "description": "Lists SKU specifications and their possible values inside arrays.", + "additionalProperties": { + "type": "array", + "items": {} + } + }, + "skus": { + "type": "array", + "description": "Array containing information about the product's SKUs.", + "items": { + "type": "object", + "description": "Object containing information about a specific SKU.", + "properties": { + "sku": { + "type": "integer", + "description": "SKU ID." + }, + "skuname": { + "type": "string", + "description": "SKU Name." + }, + "dimensions": { + "type": "object", + "description": "Lists SKU specifications and their respective values.", + "additionalProperties": { + "type": "string" + } + }, + "available": { + "type": "boolean", + "description": "Defines if the SKU is available (`true`) or not (`false`)." + }, + "availablequantity": { + "type": "integer", + "description": "Available quantity of the SKU in stock." + }, + "cacheVersionUsedToCallCheckout": { + "type": "string", + "description": "Cache version used to call Checkout.", + "nullable": true + }, + "listPriceFormated": { + "type": "string", + "description": "List price formatted according to the valid currency." + }, + "listPrice": { + "type": "integer", + "description": "List price." + }, + "taxFormated": { + "type": "string", + "description": "Tax value formatted according to the valid currency." + }, + "taxAsInt": { + "type": "integer", + "description": "Tax value." + }, + "bestPriceFormated": { + "type": "string", + "description": "Best price formatted according to the valid currency." + }, + "bestPrice": { + "type": "integer", + "description": "Best price." + }, + "spotPrice": { + "type": "integer", + "description": "Spot price." + }, + "installments": { + "type": "integer", + "description": "Number of installments." + }, + "installmentsValue": { + "type": "integer", + "description": "Value of installments." + }, + "installmentsInsterestRate": { + "type": "integer", + "description": "Interest rate of installments.", + "nullable": true + }, + "image": { + "type": "string", + "description": "SKU image URL." + }, + "sellerId": { + "type": "string", + "description": "Seller ID." + }, + "measures": { + "type": "object", + "description": "SKU measures.", + "properties": { + "cubicweight": { + "type": "number", + "description": "Cubic weight." + }, + "height": { + "type": "number", + "description": "Height." + }, + "length": { + "type": "number", + "description": "Length." + }, + "weight": { + "type": "number", + "description": "Weight." + }, + "width": { + "type": "number", + "description": "Width." + } + } + }, + "unitMultiplier": { + "type": "number", + "description": "SKU Unit Multiplier." + }, + "rewardValue": { + "type": "integer", + "description": "SKU reward value for rewards program." + } + } + } + } + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/addon/pvt/review/GetProductRate/{productId}": { + "get": { + "tags": [ + "Product" + ], + "summary": "Get Product Review Rate by Product ID", + "description": "Retrieves the review rate of a product by this product's ID.", + "operationId": "ReviewRateProduct", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "description": "Product’s unique numerical identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "example": 3.0, + "type": "number", + "description": "Review rate numeber." + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog/pvt/product": { + "post": { + "tags": [ + "Product" + ], + "summary": "Create Product with Category and Brand", + "description": "This endpoint allows two types of request:\r\n\r\n**Type 1:** Creating a new Product as well as a new Category path (including subcategories) and a new Brand by using `CategoryPath` and `BrandName` parameters.\r\n\r\n**Type 2:** Creating a new Product given an existing `BrandId` and an existing `CategoryId`.\r\n\r\nWhen creating a product, regardless of the type of request, if there is a need to create a new product with a specific custom product ID, specify the `Id` (integer) in the request body. Otherwise, VTEX will generate the ID automatically.\r\n\r\n ## Request body examples\r\n\r\n ### Type 1\r\n\r\n Request to create a product, associating it to a new Category and a new Brand by using `CategoryPath` and `BrandName`:\r\n\r\n```json\r\n{\r\n \"Name\": \"Black T-Shirt\",\r\n \"CategoryPath\": \"Mens/Clothing/T-Shirts\",\r\n \"BrandName\": \"Nike\",\r\n \"RefId\": \"31011706925\",\r\n \"Title\": \"Black T-Shirt\",\r\n \"LinkId\": \"tshirt-black\",\r\n \"Description\": \"This is a cool Tshirt\",\r\n \"ReleaseDate\": \"2022-01-01T00:00:00\",\r\n \"IsVisible\": true,\r\n \"IsActive\": true,\r\n \"TaxCode\": \"\",\r\n \"MetaTagDescription\": \"tshirt black\",\r\n \"ShowWithoutStock\": true,\r\n \"Score\": 1\r\n}\r\n```\r\n\r\n ### Type 2\r\n\r\nRequest to create a product, associating it to an existing `CategoryId` and `BrandId`:\r\n\r\n```json\r\n{\r\n \"Name\": \"insert product test\",\r\n \"DepartmentId\": 1,\r\n \"CategoryId\": 2,\r\n \"BrandId\": 2000000,\r\n \"LinkId\": \"insert-product-test\",\r\n \"RefId\": \"310117869\",\r\n \"IsVisible\": true,\r\n \"Description\": \"texto de descrição\",\r\n \"DescriptionShort\": \"Utilize o CEP 04548-005 para frete grátis\",\r\n \"ReleaseDate\": \"2019-01-01T00:00:00\",\r\n \"KeyWords\": \"teste,teste2\",\r\n \"Title\": \"product de teste\",\r\n \"IsActive\": true,\r\n \"TaxCode\": \"\",\r\n \"MetaTagDescription\": \"tag test\",\r\n \"SupplierId\": 1,\r\n \"ShowWithoutStock\": true,\r\n \"AdWordsRemarketingCode\": null,\r\n \"LomadeeCampaignCode\": null,\r\n \"Score\": 1\r\n}\r\n```\r\n\r\n ## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 52,\r\n \"Name\": \"insert product test\",\r\n \"DepartmentId\": 1,\r\n \"CategoryId\": 2,\r\n \"BrandId\": 2000000,\r\n \"LinkId\": \"insert-product-test\",\r\n \"RefId\": \"310117869\",\r\n \"IsVisible\": true,\r\n \"Description\": \"texto de descrição\",\r\n \"DescriptionShort\": \"Utilize o CEP 04548-005 para frete grátis\",\r\n \"ReleaseDate\": \"2019-01-01T00:00:00\",\r\n \"KeyWords\": \"teste,teste2\",\r\n \"Title\": \"product de teste\",\r\n \"IsActive\": true,\r\n \"TaxCode\": \"\",\r\n \"MetaTagDescription\": \"tag test\",\r\n \"SupplierId\": 1,\r\n \"ShowWithoutStock\": true,\r\n \"AdWordsRemarketingCode\": null,\r\n \"LomadeeCampaignCode\": null,\r\n \"Score\": 1\r\n}\r\n```\r\n \r\n> 📘 Onboarding guide \r\n>\r\n> Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "example": { + "Id": 42, + "Name": "Zoom Stefan Janoski Canvas RM SB Varsity Red", + "DepartmentId": 2000089, + "CategoryId": 2000090, + "BrandId": 12121219, + "LinkId": "stefan-janoski-canvas-varsity-red", + "RefId": "sr_1_90", + "IsVisible": true, + "Description": "The Nike Zoom Stefan Janoski Men's Shoe is made with a premium leather upper for superior durability and a flexible midsole for all-day comfort. A tacky gum rubber outsole delivers outstanding traction.", + "DescriptionShort": "The Nike Zoom Stefan Janoski is made with a premium leather.", + "ReleaseDate": "2020-01-01T00:00:00", + "KeyWords": "Zoom,Stefan,Janoski", + "Title": "Zoom Stefan Janoski Canvas RM SB Varsity Re", + "IsActive": true, + "TaxCode": "", + "MetaTagDescription": "The Nike Zoom Stefan Janoski Men's Shoe is made with a premium leather upper for superior durability and a flexible midsole for all-day comfort. A tacky gum rubber outsole delivers outstanding traction.", + "SupplierId": 1, + "ShowWithoutStock": true, + "AdWordsRemarketingCode": "", + "LomadeeCampaignCode": "", + "Score": 1 + }, + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Product’s unique numerical identifier." + }, + "Name": { + "type": "string", + "description": "Product's name. Limited to 150 characters." + }, + "DepartmentId": { + "type": "integer", + "description": "Department ID according to the product's category." + }, + "CategoryId": { + "type": "integer", + "description": "Category ID associated with this product." + }, + "BrandId": { + "type": "integer", + "description": "Brand ID associated with this product." + }, + "LinkId": { + "type": "string", + "description": "Slug that will be used to build the product page URL. If it not informed, it will be generated according to the product's name replacing spaces and special characters by hyphens (`-`)." + }, + "RefId": { + "type": "string", + "description": "Product Reference Code." + }, + "IsVisible": { + "type": "boolean", + "description": "Shows (`true`) or hides (`false`) the product in search result and product pages, but the product can still be added to the shopping cart. Usually applicable for gifts." + }, + "Description": { + "type": "string", + "description": "Product description." + }, + "DescriptionShort": { + "type": "string", + "description": "Short product description. This information can be displayed on both the product page and the shelf, using the following controls:\r\n Store Framework: `$product.DescriptionShort`.\r\n Legacy CMS Portal: ``.\r\n" + }, + "ReleaseDate": { + "type": "string", + "description": "Used to assist in the ordering of the search result of the site. Using the `O=OrderByReleaseDateDESC` query string, you can pull this value and show the display order by release date. This attribute is also used as a condition for dynamic collections." + }, + "KeyWords": { + "type": "string", + "description": "Store Framework: Deprecated. \r\nLegacy CMS Portal: Keywords or synonyms related to the product, separated by comma (`,`). \"Television\", for example, can have a substitute word like \"TV\". This field is important to make your searches more comprehensive.\r\n" + }, + "Title": { + "type": "string", + "description": "Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO." + }, + "IsActive": { + "type": "boolean", + "description": "Activate (`true`) or inactivate (`false`) product." + }, + "TaxCode": { + "type": "string", + "description": "Product tax code, used for tax calculation." + }, + "MetaTagDescription": { + "type": "string", + "description": "Brief description of the product for SEO. It's recommended that you don't exceed 150 characters." + }, + "SupplierId": { + "type": "integer", + "deprecated": true, + "nullable": true + }, + "ShowWithoutStock": { + "type": "boolean", + "description": "If `true`, activates the [Notify Me](https://help.vtex.com/en/tutorial/setting-up-the-notify-me-option--2VqVifQuf6Co2KG048Yu6e) option when the product is out of stock." + }, + "AdWordsRemarketingCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "LomadeeCampaignCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "Score": { + "type": "integer", + "description": "Value used to set the priority on the search result page." + } + } + } + } + } + } + }, + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "Name" + ], + "properties": { + "Id": { + "type": "integer", + "description": "Product’s unique numerical identifier. If not informed, it will be automatically generated by VTEX.", + "example": 42 + }, + "Name": { + "type": "string", + "description": "Product's name. Limited to 150 characters.", + "example": "Zoom Stefan Janoski Canvas RM SB Varsity Red" + }, + "CategoryPath": { + "type": "string", + "description": "Path of categories associated with this product, from the highest level of category to the lowest level, separated by `/`. It is mandatory to use either this field or the `CategoryId` field.", + "example": "Mens/Clothing/T-Shirts" + }, + "CategoryId": { + "type": "integer", + "description": "ID of an existing Category that will be associated with this product. It is mandatory to use either this field or the `CategoryPath` field.", + "example": 2000090 + }, + "BrandName": { + "type": "string", + "description": "Name of the brand that will be associated with this product. It is mandatory to use either this field or the `BrandId` field. If you wish to create a new brand, that is, in case the brand does not exist yet, use this field instead of `BrandId`.", + "example": "Sample Brand" + }, + "BrandId": { + "type": "integer", + "description": "ID of an existing Brand that will be associated with this product. It is mandatory to use either this field or the `BrandName` field.", + "example": 12121219 + }, + "LinkId": { + "type": "string", + "description": "Slug that will be used to build the product page URL. If it not informed, it will be generated according to the product's name replacing spaces and special characters by hyphens (`-`).", + "example": "stefan-janoski-canvas-varsity-red" + }, + "RefId": { + "type": "string", + "description": "Product Reference Code.", + "example": "sr_1_90" + }, + "IsVisible": { + "type": "boolean", + "description": "Shows (`true`) or hides (`false`) the product in search result and product pages, but the product can still be added to the shopping cart. Usually applicable for gifts.", + "example": true + }, + "Description": { + "type": "string", + "description": "Product description.", + "example": "The Nike Zoom Stefan Janoski Men's Shoe is made with a premium leather upper for superior durability and a flexible midsole for all-day comfort. A tacky gum rubber outsole delivers outstanding traction." + }, + "DescriptionShort": { + "type": "string", + "description": "Short product description. This information can be displayed on both the product page and the shelf, using the following controls:\r\n Store Framework: `$product.DescriptionShort`.\r\n Legacy CMS Portal: ``.\r\n", + "example": "The Nike Zoom Stefan Janoski is made with a premium leather." + }, + "ReleaseDate": { + "type": "string", + "description": "Used to assist in the ordering of the search result of the site. Using the `O=OrderByReleaseDateDESC` query string, you can pull this value and show the display order by release date. This attribute is also used as a condition for dynamic collections.", + "example": "2019-01-01T00:00:00" + }, + "KeyWords": { + "type": "string", + "description": "Store Framework: Deprecated. \r\nLegacy CMS Portal: Keywords or synonyms related to the product, separated by comma (`,`). \"Television\", for example, can have a substitute word like \"TV\". This field is important to make your searches more comprehensive.\r\n", + "example": "Zoom,Stefan,Janoski" + }, + "Title": { + "type": "string", + "description": "Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO.", + "example": "Zoom Stefan Janoski Canvas RM SB Varsity Red" + }, + "IsActive": { + "type": "boolean", + "description": "Activate (`true`) or inactivate (`false`) product.", + "example": true + }, + "TaxCode": { + "type": "string", + "description": "Product tax code, used for tax calculation.", + "example": "12345" + }, + "MetaTagDescription": { + "type": "string", + "description": "Brief description of the product for SEO. It is recommended not to exceed 150 characters.", + "example": "The Nike Zoom Stefan Janoski Men's Shoe is made with a premium leather upper for superior durability and a flexible midsole for all-day comfort. A tacky gum rubber outsole delivers outstanding traction." + }, + "SupplierId": { + "type": "integer", + "deprecated": true, + "nullable": true + }, + "ShowWithoutStock": { + "type": "boolean", + "description": "If `true`, activates the [Notify Me](https://help.vtex.com/en/tutorial/setting-up-the-notify-me-option--2VqVifQuf6Co2KG048Yu6e) option when the product is out of stock.", + "example": true + }, + "AdWordsRemarketingCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "LomadeeCampaignCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "Score": { + "type": "integer", + "description": "Value used to set the priority on the search result page.", + "example": 1 + } + } + } + } + } + } + } + }, + "/api/catalog_system/pvt/products/{productId}/specification": { + "get": { + "tags": [ + "Product Specification" + ], + "summary": "Get Product Specification by Product ID", + "description": "Retrieves all specifications of a product by the product's ID.\r\n> 📘 Onboarding guide \r\n>\r\n> Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey.\r\n\r\n### Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Value\": [\r\n \"Iron\",\r\n \"Plastic\"\r\n ],\r\n \"Id\": 30,\r\n \"Name\": \"Material\"\r\n }\r\n]\r\n```", + "operationId": "GetProductSpecification", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "description": "Product’s unique numerical identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Cache-Control": { + "content": { + "text/plain": { + "schema": { + "type": "string", + "example": "no-cache" + } + } + } + }, + "Content-Length": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "102" + } + } + }, + "Date": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Mon, 22 Jan 2018 23:18:18 GMT" + } + } + }, + "Expires": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "-1" + } + } + }, + "Pragma": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "no-cache" + } + } + }, + "Server": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Microsoft-IIS/10.0" + } + } + }, + "X-AspNet-Version": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "4.0.30319" + } + } + }, + "X-Powered-By": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "ASP.NET" + } + } + }, + "no": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "CELOCOUTO" + } + } + }, + "p3p": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "policyref=\"/w3c/p3p.xml\",CP=\"ADMa OUR NOR CNT NID DSP NOI COR\"" + } + } + }, + "powered": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "vtex" + } + } + }, + "x-vtex-operation-id": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "7ec24c86-1dc8-4ec7-a4b7-79b06b53a742" + } + } + } + }, + "content": { + "application/json": { + "schema": { + "example": [ + { + "Value": [ + "Iron", + "Plastic" + ], + "Id": 30, + "Name": "Material" + } + ], + "type": "array", + "items": { + "$ref": "#/components/schemas/GetorUpdateProductSpecification" + } + } + } + } + } + }, + "deprecated": false + }, + "post": { + "tags": [ + "Product Specification" + ], + "summary": "Update Product Specification by Product ID", + "description": "Updates the value of a product specification by the product's ID. The ID or name can be used to identify what product specification will be updated. Specification fields must be previously created in your Catalog.\r\n\r\n### Request body example\r\n\r\n```json\r\n[\r\n {\r\n \"Value\": [\r\n \"Iron\",\r\n \"Plastic\"\r\n ],\r\n \"Id\": 30,\r\n \"Name\": \"Material\"\r\n }\r\n]\r\n```", + "operationId": "UpdateProductSpecification", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "description": "Product’s unique identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GetorUpdateProductSpecification" + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + } + }, + "deprecated": false + } + }, + "/api/catalog/pvt/product/{productId}/specification": { + "get": { + "tags": [ + "Product Specification" + ], + "summary": "Get Product Specification and its information by Product ID", + "description": "Retrieves information of all specifications of a product by the product's ID.\r\n\r\n ### Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Id\": 227,\r\n \"ProductId\": 1,\r\n \"FieldId\": 33,\r\n \"FieldValueId\": 135,\r\n \"Text\": \"ValueA\"\r\n },\r\n {\r\n \"Id\": 228,\r\n \"ProductId\": 1,\r\n \"FieldId\": 34,\r\n \"FieldValueId\": 1,\r\n \"Text\": \"Giant\"\r\n }\r\n]\r\n```", + "operationId": "GetProductSpecificationbyProductID", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "description": "Product’s unique numerical identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "example": [ + { + "Id": 227, + "ProductId": 1, + "FieldId": 33, + "FieldValueId": 135, + "Text": "ValueA" + }, + { + "Id": 228, + "ProductId": 1, + "FieldId": 34, + "FieldValueId": 1, + "Text": "Giant" + } + ], + "items": { + "type": "object", + "description": "Object with the product specification information.", + "properties": { + "Id": { + "type": "integer", + "description": "ID of the association of the specification and the product. This ID is used to update or delete the specification." + }, + "ProductId": { + "type": "integer", + "description": "Product ID." + }, + "FieldId": { + "type": "integer", + "description": "Specification field ID." + }, + "FieldValueId": { + "type": "integer", + "description": "Current specification value ID." + }, + "Text": { + "type": "string", + "description": "Current specification value text." + } + } + } + } + } + } + } + }, + "deprecated": false + }, + "post": { + "tags": [ + "Product Specification" + ], + "summary": "Associate Product Specification", + "description": "Associates a previously defined Specification to a Product.\r\n\r\n### Request body example\r\n\r\n```json\r\n{\r\n \"FieldId\": 19,\r\n \"FieldValueId\": 1,\r\n \"Text\": \"test\"\r\n}\r\n```\r\n\r\n### Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 41,\r\n \"FieldId\": 19,\r\n \"FieldValueId\": 1,\r\n \"Text\": \"test\"\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "required": true, + "description": "Product’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "example": { + "Id": 41, + "FieldId": 19, + "FieldValueId": 1, + "Text": "test" + }, + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "ID of the association of the specification and the product. This ID is used to update or delete the specification." + }, + "ProductId": { + "type": "integer", + "description": "Product ID." + }, + "FieldId": { + "type": "integer", + "description": "Specification field ID." + }, + "FieldValueId": { + "type": "integer", + "description": "Specification Value ID. Mandatory for `FieldTypeId` `5`, `6` and `7`. Must not be used for any other field types" + }, + "Text": { + "type": "string", + "description": "Value of specification. Only for `FieldTypeId` different from `5`, `6` and `7`." + } + } + } + } + } + } + }, + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "FieldId" + ], + "properties": { + "FieldId": { + "type": "integer", + "description": "Specification field ID.", + "example": 19 + }, + "FieldValueId": { + "type": "integer", + "description": "Specification Value ID. Mandatory for `FieldTypeId` `5`, `6` and `7`. Must not be used for any other field types", + "example": 12 + }, + "Text": { + "type": "string", + "description": "Value of specification. Only for `FieldTypeId` different from `5`, `6` and `7`.", + "example": "Metal" + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "Product Specification" + ], + "summary": "Delete all Product Specifications by Product ID", + "description": "Deletes all Product Specifications given a specific Product ID.", + "operationId": "DeleteAllProductSpecifications", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "description": "Product’s unique numerical identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/product/{productId}/specification/{specificationId}": { + "delete": { + "tags": [ + "Product Specification" + ], + "summary": "Delete a specific Product Specification", + "description": "Deletes a specific Product Specification given a Product ID and a Specification ID.", + "operationId": "DeleteaProductSpecification", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "description": "Product’s unique numerical identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "specificationId", + "in": "path", + "description": "Product Specification’s unique numerical identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 7 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/product/{productId}/specificationvalue": { + "put": { + "tags": [ + "Product Specification" + ], + "summary": "Associate product specification using specification name and group name", + "description": "Associates a specification to a product using specification name and group name. Automatically creates the informed group, specification and values if they had not been created before.\r\n\r\n ## Request body example\r\n\r\n```json\r\n{\r\n \"FieldName\": \"Material\",\r\n \"GroupName\": \"Additional Information\",\r\n \"RootLevelSpecification\": false,\r\n \"FieldValues\": [\r\n \"Cotton\",\r\n \"Polyester\"\r\n ]\r\n}\r\n```\r\n \r\n \r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Id\": 53,\r\n \"ProductId\": 3,\r\n \"FieldId\": 21,\r\n \"FieldValueId\": 60,\r\n \"Text\": \"Cotton\"\r\n },\r\n {\r\n \"Id\": 54,\r\n \"ProductId\": 3,\r\n \"FieldId\": 21,\r\n \"FieldValueId\": 61,\r\n \"Text\": \"Polyester\"\r\n }\r\n]\r\n```\r\n", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "required": true, + "description": "Product’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "example": [ + { + "Id": 239, + "ProductId": 1, + "FieldId": 85, + "FieldValueId": 193, + "Text": "Value123" + } + ], + "type": "array", + "description": "Array with information of all product specifications.", + "items": { + "type": "object", + "description": "Object with information of the specification.", + "properties": { + "Id": { + "type": "integer", + "description": "ID of the association of the Product and the specification." + }, + "ProductId": { + "type": "integer", + "description": "Product ID." + }, + "FieldId": { + "type": "integer", + "description": "Specification field ID." + }, + "FieldValueId": { + "type": "integer", + "description": "Current specification value ID." + }, + "Text": { + "type": "string", + "description": "Current specification value text." + } + } + } + } + } + } + } + }, + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "", + "example": { + "FieldName": "Material", + "GroupName": "Composition", + "RootLevelSpecification": true, + "FieldValues": [ + "Cotton", + "Polyester" + ] + }, + "required": [ + "FieldName", + "GroupName", + "RootLevelSpecification", + "FieldValues" + ], + "properties": { + "FieldName": { + "type": "string", + "description": "Specification name. Limited to 100 characters.", + "example": "Material" + }, + "GroupName": { + "type": "string", + "description": "Group name.", + "example": "Composition" + }, + "RootLevelSpecification": { + "type": "boolean", + "description": "Root level specification.", + "example": true + }, + "FieldValues": { + "type": "array", + "description": "Array of specification values.", + "example": [ + "Cotton", + "Polyester" + ], + "items": { + "type": "string", + "description": "Specification value.", + "example": "Cotton" + } + } + } + } + } + } + } + } + }, + "/api/catalog_system/pvt/sku/stockkeepingunitids": { + "get": { + "tags": [ + "SKU" + ], + "summary": "List all SKU IDs", + "description": "Retrieves the IDs of all SKUs in your store. Presents the results with page size and pagination.\r\n> 📘 Onboarding guide \r\n>\r\n> Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey.\r\n\r\n### Response body example\r\n\r\n```json\r\n[\r\n 1,\r\n 2,\r\n 3,\r\n 4,\r\n 5,\r\n 6,\r\n 7,\r\n 8,\r\n 9,\r\n 10\r\n]\r\n```", + "operationId": "ListallSKUIDs", + "parameters": [ + { + "name": "page", + "in": "query", + "description": "Number of the page from where you need to retrieve SKU IDs.", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "pagesize", + "in": "query", + "description": "Size of the page from where you need retrieve SKU IDs. The maximum value is `1000`.", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "example": 25 + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "Array composed by SKU IDs, in the search context.", + "items": { + "type": "integer", + "format": "int32", + "description": "SKU ID.", + "example": 1 + }, + "example": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ] + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/sku/stockkeepingunitbyid/{skuId}": { + "get": { + "tags": [ + "SKU" + ], + "summary": "Get SKU and context", + "description": "Retrieves context of an SKU.\r\n> 📘 Onboarding guide \r\n>\r\n> Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey.\r\n\r\n ## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 2001773,\r\n \"ProductId\": 2001426,\r\n \"NameComplete\": \"Tabela de Basquete\",\r\n \"ComplementName\": \"\",\r\n \"ProductName\": \"Tabela de Basquete\",\r\n \"ProductDescription\": \"Tabela de Basquete\",\r\n \"SkuName\": \"Tabela de Basquete\",\r\n \"ProductRefId\": \"0987\",\r\n \"TaxCode\": \"\",\r\n \"IsActive\": true,\r\n \"IsTransported\": true,\r\n \"IsInventoried\": true,\r\n \"IsGiftCardRecharge\": false,\r\n \"ImageUrl\": \"http:\/\/ambienteqa.vteximg.com.br\/arquivos\/ids\/168952-55-55\/7508800GG.jpg\",\r\n \"DetailUrl\": \"\/tabela-de-basquete\/p\",\r\n \"CSCIdentification\": null,\r\n \"BrandId\": \"2000018\",\r\n \"BrandName\": \"MARCA ARGOLO TESTE\",\r\n \"IsBrandActive\": true,\r\n \"Dimension\": {\r\n \"cubicweight\": 81.6833,\r\n \"height\": 65,\r\n \"length\": 58,\r\n \"weight\": 10000,\r\n \"width\": 130\r\n },\r\n \"RealDimension\": {\r\n \"realCubicWeight\": 274.1375,\r\n \"realHeight\": 241,\r\n \"realLength\": 65,\r\n \"realWeight\": 9800,\r\n \"realWidth\": 105\r\n },\r\n \"ManufacturerCode\": \"\",\r\n \"IsKit\": false,\r\n \"KitItems\": [],\r\n \"Services\": [],\r\n \"Categories\": [],\r\n \"CategoriesFullPath\": [\r\n \"\/1\/10\/\",\r\n \"\/1\/\",\r\n \"\/20\/\"\r\n ],\r\n \"Attachments\": [\r\n {\r\n \"Id\": 3,\r\n \"Name\": \"Mensagem\",\r\n \"Keys\": [\r\n \"nome;20\",\r\n \"foto;40\"\r\n ],\r\n \"Fields\": [\r\n {\r\n \"FieldName\": \"nome\",\r\n \"MaxCaracters\": \"20\",\r\n \"DomainValues\": \"Adalberto,Pedro,Jo\u00E3o\"\r\n },\r\n {\r\n \"FieldName\": \"foto\",\r\n \"MaxCaracters\": \"40\",\r\n \"DomainValues\": null\r\n }\r\n ],\r\n \"IsActive\": true,\r\n \"IsRequired\": false\r\n }\r\n ],\r\n \"Collections\": [],\r\n \"SkuSellers\": [\r\n {\r\n \"SellerId\": \"1\",\r\n \"StockKeepingUnitId\": 2001773,\r\n \"SellerStockKeepingUnitId\": \"2001773\",\r\n \"IsActive\": true,\r\n \"FreightCommissionPercentage\": 0,\r\n \"ProductCommissionPercentage\": 0\r\n }\r\n ],\r\n \"SalesChannels\": [\r\n 1,\r\n 2,\r\n 3,\r\n 10\r\n ],\r\n \"Images\": [\r\n {\r\n \"ImageUrl\": \"http:\/\/ambienteqa.vteximg.com.br\/arquivos\/ids\/168952\/7508800GG.jpg\",\r\n \"ImageName\": \"\",\r\n \"FileId\": 168952\r\n },\r\n {\r\n \"ImageUrl\": \"http:\/\/ambienteqa.vteximg.com.br\/arquivos\/ids\/168953\/7508800_1GG.jpg\",\r\n \"ImageName\": \"\",\r\n \"FileId\": 168953\r\n },\r\n {\r\n \"ImageUrl\": \"http:\/\/ambienteqa.vteximg.com.br\/arquivos\/ids\/168954\/7508800_2GG.jpg\",\r\n \"ImageName\": \"\",\r\n \"FileId\": 168954\r\n }\r\n ],\r\n \"Videos\": [\r\n \"www.google.com\"\r\n ],\r\n \"SkuSpecifications\": [\r\n {\r\n \"FieldId\": 102,\r\n \"FieldName\": \"Cor\",\r\n \"FieldValueIds\": [\r\n 266\r\n ],\r\n \"FieldValues\": [\r\n \"Padr\u00E3o\"\r\n ],\r\n \"IsFilter\": false,\r\n \"FieldGroupId\": 11,\r\n \"FieldGroupName\": \"Especifica\u00E7\u00F5es\"\r\n }\r\n ],\r\n \"ProductSpecifications\": [\r\n {\r\n \"FieldId\": 7,\r\n \"FieldName\": \"Faixa Et\u00E1ria\",\r\n \"FieldValueIds\": [\r\n 58,\r\n 56,\r\n 55,\r\n 52\r\n ],\r\n \"FieldValues\": [\r\n \"5 a 6 anos\",\r\n \"7 a 8 anos\",\r\n \"9 a 10 anos\",\r\n \"Acima de 10 anos\"\r\n ],\r\n \"IsFilter\": true,\r\n \"FieldGroupId\": 17,\r\n \"FieldGroupName\": \"NewGroupName 2\"\r\n },\r\n {\r\n \"FieldId\": 23,\r\n \"FieldName\": \"Fabricante\",\r\n \"FieldValueIds\": [],\r\n \"FieldValues\": [\r\n \"Xalingo\"\r\n ],\r\n \"IsFilter\": false,\r\n \"FieldGroupId\": 17,\r\n \"FieldGroupName\": \"NewGroupName 2\"\r\n }\r\n ],\r\n \"ProductClustersIds\": \"176,187,192,194,211,217,235,242\",\r\n \"PositionsInClusters\": {\r\n \"151\": 3,\r\n \"152\": 0,\r\n \"158\": 1\r\n },\r\n \"ProductClusterNames\": {\r\n \"151\": \"asdfghj\",\r\n \"152\": \"George\",\r\n \"158\": \"Cole\u00E7\u00E3o halloween\"\r\n },\r\n \"ProductClusterHighlights\": {\r\n \"151\": \"asdfghj\",\r\n \"152\": \"George\"\r\n },\r\n \"ProductCategoryIds\": \"\/59\/\",\r\n \"IsDirectCategoryActive\": false,\r\n \"ProductGlobalCategoryId\": null,\r\n \"ProductCategories\": {\r\n \"59\": \"Brinquedos\"\r\n },\r\n \"CommercialConditionId\": 1,\r\n \"RewardValue\": 100.0,\r\n \"AlternateIds\": {\r\n \"Ean\": \"8781\",\r\n \"RefId\": \"878181\"\r\n },\r\n \"AlternateIdValues\": [\r\n \"8781\",\r\n \"878181\"\r\n ],\r\n \"EstimatedDateArrival\": \"\",\r\n \"MeasurementUnit\": \"un\",\r\n \"UnitMultiplier\": 2.0000,\r\n \"InformationSource\": \"Indexer\",\r\n \"ModalType\": \"\",\r\n \"KeyWords\": \"basquete, tabela\",\r\n \"ReleaseDate\": \"2020-01-06T00:00:00\",\r\n \"ProductIsVisible\": true,\r\n \"ShowIfNotAvailable\": true,\r\n \"IsProductActive\": true,\r\n \"ProductFinalScore\": 0\r\n}\r\n```", + "operationId": "SkuContext", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "description": "SKU's unique identifier number.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 2001773 + } + }, + { + "name": "sc", + "in": "query", + "description": "Trade Policy's unique identifier number.", + "required": false, + "style": "form", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Cache-Control": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "no-cache" + } + } + }, + "Content-Encoding": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "gzip" + } + } + }, + "Content-Type": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "application/json; charset=utf-8" + } + } + }, + "Date": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Mon, 13 Feb 2017 15:15:02 GMT" + } + } + }, + "Last-Modified": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Mon, 06 Feb 2017 14:32:02 GMT" + } + } + }, + "Vary": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Accept-Encoding" + } + } + }, + "X-Powered-By-VTEX-Cache": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "2.3.0" + } + } + }, + "X-VTEX-Cache-Backend-Connect-Time": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "0.004" + } + } + }, + "X-VTEX-Cache-Backend-Header-Time": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "0.416" + } + } + }, + "X-VTEX-Cache-Server": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "apicache12" + } + } + }, + "X-VTEX-Cache-Status-Janus-ApiCache": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "MISS" + } + } + }, + "X-VTEX-Cache-Time": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "0.415" + } + } + }, + "X-VTEX-Janus-Router-Backend-App": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "catalogapi-v3.0.45.54" + } + } + }, + "Content-Length": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "1044" + } + } + }, + "Connection": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "keep-alive" + } + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetSKUandContext" + }, + "example": { + "Id": 2001773, + "ProductId": 2001426, + "NameComplete": "Tabela de Basquete", + "ComplementName": "", + "ProductName": "Tabela de Basquete", + "ProductDescription": "Tabela de Basquete", + "SkuName": "Tabela de Basquete", + "ProductRefId": "0987", + "TaxCode": "", + "IsActive": true, + "IsTransported": true, + "IsInventoried": true, + "IsGiftCardRecharge": false, + "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168952-55-55/7508800GG.jpg", + "DetailUrl": "/tabela-de-basquete/p", + "CSCIdentification": null, + "BrandId": "2000018", + "BrandName": "MARCA ARGOLO TESTE", + "IsBrandActive": true, + "Dimension": { + "cubicweight": 81.6833, + "height": 65, + "length": 58, + "weight": 10000, + "width": 130 + }, + "RealDimension": { + "realCubicWeight": 274.1375, + "realHeight": 241, + "realLength": 65, + "realWeight": 9800, + "realWidth": 105 + }, + "ManufacturerCode": "", + "IsKit": false, + "KitItems": [], + "Services": [], + "Categories": [], + "CategoriesFullPath": [ + "/1/10/", + "/1/", + "/20/" + ], + "Attachments": [ + { + "Id": 3, + "Name": "Mensagem", + "Keys": [ + "nome;20", + "foto;40" + ], + "Fields": [ + { + "FieldName": "nome", + "MaxCaracters": "20", + "DomainValues": "Adalberto,Pedro,João" + }, + { + "FieldName": "foto", + "MaxCaracters": "40", + "DomainValues": null + } + ], + "IsActive": true, + "IsRequired": false + } + ], + "Collections": [], + "SkuSellers": [ + { + "SellerId": "1", + "StockKeepingUnitId": 2001773, + "SellerStockKeepingUnitId": "2001773", + "IsActive": true, + "FreightCommissionPercentage": 0, + "ProductCommissionPercentage": 0 + } + ], + "SalesChannels": [ + 1, + 2, + 3, + 10 + ], + "Images": [ + { + "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168952/7508800GG.jpg", + "ImageName": "", + "FileId": 168952 + }, + { + "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168953/7508800_1GG.jpg", + "ImageName": "", + "FileId": 168953 + }, + { + "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168954/7508800_2GG.jpg", + "ImageName": "", + "FileId": 168954 + } + ], + "Videos": [ + "www.google.com" + ], + "SkuSpecifications": [ + { + "FieldId": 102, + "FieldName": "Cor", + "FieldValueIds": [ + 266 + ], + "FieldValues": [ + "Padrão" + ], + "IsFilter": false, + "FieldGroupId": 11, + "FieldGroupName": "Especificações" + } + ], + "ProductSpecifications": [ + { + "FieldId": 7, + "FieldName": "Faixa Etária", + "FieldValueIds": [ + 58, + 56, + 55, + 52 + ], + "FieldValues": [ + "5 a 6 anos", + "7 a 8 anos", + "9 a 10 anos", + "Acima de 10 anos" + ], + "IsFilter": true, + "FieldGroupId": 17, + "FieldGroupName": "NewGroupName 2" + }, + { + "FieldId": 23, + "FieldName": "Fabricante", + "FieldValueIds": [], + "FieldValues": [ + "Xalingo" + ], + "IsFilter": false, + "FieldGroupId": 17, + "FieldGroupName": "NewGroupName 2" + } + ], + "ProductClustersIds": "176,187,192,194,211,217,235,242", + "PositionsInClusters": { + "151": 3, + "152": 0, + "158": 1 + }, + "ProductClusterNames": { + "151": "asdfghj", + "152": "George", + "158": "Coleção halloween" + }, + "ProductClusterHighlights": { + "151": "asdfghj", + "152": "George" + }, + "ProductCategoryIds": "/59/", + "IsDirectCategoryActive": false, + "ProductGlobalCategoryId": null, + "ProductCategories": { + "59": "Brinquedos" + }, + "CommercialConditionId": 1, + "RewardValue": 100.0, + "AlternateIds": { + "Ean": "8781", + "RefId": "878181" + }, + "AlternateIdValues": [ + "8781", + "878181" + ], + "EstimatedDateArrival": null, + "MeasurementUnit": "un", + "UnitMultiplier": 2.0000, + "InformationSource": "Indexer", + "ModalType": null, + "KeyWords": "basquete, tabela", + "ReleaseDate": "2020-01-06T00:00:00", + "ProductIsVisible": true, + "ShowIfNotAvailable": true, + "IsProductActive": true, + "ProductFinalScore": 0 + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog/pvt/stockkeepingunit": { + "get": { + "tags": [ + "SKU" + ], + "summary": "Get SKU by RefId", + "description": "Retrieves information about a specific SKU by its `RefId`. \r\n\r\n### Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 1,\r\n \"ProductId\": 1,\r\n \"IsActive\": true,\r\n \"Name\": \"Royal Canin Feline Urinary 500g\",\r\n \"RefId\": \"0001\",\r\n \"PackagedHeight\": 6.0000,\r\n \"PackagedLength\": 24.0000,\r\n \"PackagedWidth\": 14.0000,\r\n \"PackagedWeightKg\": 550.0000,\r\n \"Height\": null,\r\n \"Length\": null,\r\n \"Width\": null,\r\n \"WeightKg\": null,\r\n \"CubicWeight\": 1.0000,\r\n \"IsKit\": false,\r\n \"CreationDate\": \"2020-03-12T15:42:00\",\r\n \"RewardValue\": null,\r\n \"EstimatedDateArrival\": null,\r\n \"ManufacturerCode\": \"\",\r\n \"CommercialConditionId\": 1,\r\n \"MeasurementUnit\": \"un\",\r\n \"UnitMultiplier\": 1.0000,\r\n \"ModalType\": null,\r\n \"KitItensSellApart\": false,\r\n \"Videos\": null\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "refId", + "in": "query", + "required": true, + "description": "SKU Reference ID.", + "schema": { + "type": "string", + "example": "1" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 1, + "ProductId": 1, + "IsActive": true, + "Name": "Royal Canin Feline Urinary 500g", + "RefId": "0001", + "PackagedHeight": 6.0, + "PackagedLength": 24.0, + "PackagedWidth": 14.0, + "PackagedWeightKg": 550.0, + "Height": 0.0, + "Length": 0.0, + "Width": 0.0, + "WeightKg": 0.0, + "CubicWeight": 1.0, + "IsKit": false, + "CreationDate": "2020-03-12T15:42:00", + "RewardValue": 0.0, + "EstimatedDateArrival": null, + "ManufacturerCode": "", + "CommercialConditionId": 1, + "MeasurementUnit": "un", + "UnitMultiplier": 1.0, + "ModalType": null, + "KitItensSellApart": false, + "Videos": null + }, + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "SKU ID." + }, + "ProductId": { + "type": "integer", + "description": "Product ID." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the SKU is active (`true`) or not (`false`)." + }, + "ActivateIfPossible": { + "type": "boolean", + "description": "When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component." + }, + "Name": { + "type": "string", + "description": "SKU Name." + }, + "RefId": { + "type": "string", + "description": "SKU RefId." + }, + "PackagedHeight": { + "type": "number", + "description": "Packaged Height." + }, + "PackagedLength": { + "type": "number", + "description": "Packaged Length." + }, + "PackagedWidth": { + "type": "number", + "description": "Packaged Width." + }, + "PackagedWeightKg": { + "type": "number", + "description": "Packaged Weight, in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams." + }, + "Height": { + "type": "number", + "description": "SKU Height." + }, + "Length": { + "type": "number", + "description": "SKU Length." + }, + "Width": { + "type": "number", + "description": "SKU Width." + }, + "WeightKg": { + "type": "number", + "description": "Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams." + }, + "CubicWeight": { + "type": "number", + "description": "[Cubic Weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128)." + }, + "IsKit": { + "type": "boolean", + "description": "Shows if the SKU is a Kit (`true`) or not (`false`)." + }, + "CreationDate": { + "type": "string", + "description": "SKU Creation Date." + }, + "RewardValue": { + "type": "number", + "description": "Defines the value of the reward for clients who purchase the SKU." + }, + "EstimatedDateArrival": { + "type": "string", + "description": "SKU estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format, when the product is on pre-sale. You must take into consideration both the launch date and the freight calculation for the arrival date.", + "nullable": true + }, + "ManufacturerCode": { + "type": "string", + "description": "Manufacturer Code." + }, + "CommercialConditionId": { + "type": "integer", + "description": "Commercial Condition ID." + }, + "MeasurementUnit": { + "type": "string", + "description": "Measurement Unit." + }, + "UnitMultiplier": { + "type": "number", + "description": "This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward." + }, + "ModalType": { + "type": "string", + "description": "Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. \"Chemicals\" or \"Refrigerated products\"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy).", + "nullable": true + }, + "KitItensSellApart": { + "type": "boolean", + "description": "Defines if Kit components can be sold apart." + }, + "Videos": { + "type": "string", + "description": "Video URLs.", + "nullable": true + } + } + } + } + } + } + } + }, + "post": { + "tags": [ + "SKU" + ], + "summary": "Create SKU", + "description": "\r\n\r\nCreates a new SKU.\r\n\r\nIf there is a need to create a new SKU with a specific custom ID, specify the `Id` (integer) in the request. Otherwise, VTEX will generate the ID automatically.\r\n\r\n### Request body example (custom ID)\r\n\r\n```json\r\n{\r\n \"Id\": 1, \r\n \"ProductId\": 310117069,\r\n \"IsActive\": false,\r\n \"ActivateIfPossible\": true,\r\n \"Name\": \"sku test\",\r\n \"RefId\": \"125478\",\r\n \"Ean\": \"8949461894984\",\r\n \"PackagedHeight\": 10,\r\n \"PackagedLength\": 10,\r\n \"PackagedWidth\": 10,\r\n \"PackagedWeightKg\": 10,\r\n \"Height\": null,\r\n \"Length\": null,\r\n \"Width\": null,\r\n \"WeightKg\": null,\r\n \"CubicWeight\": 0.1667,\r\n \"IsKit\": false,\r\n \"CreationDate\": null,\r\n \"RewardValue\": null,\r\n \"EstimatedDateArrival\": null,\r\n \"ManufacturerCode\": \"123\",\r\n \"CommercialConditionId\": 1,\r\n \"MeasurementUnit\": \"un\",\r\n \"UnitMultiplier\": 2.0000,\r\n \"ModalType\": null,\r\n \"KitItensSellApart\": false,\r\n \"Videos\": [ \"https://www.youtube.com/\" ]\r\n}\r\n``` \r\n\r\n### Request body example (automatically generated ID)\r\n\r\n```json\r\n{\r\n \"ProductId\": 310117069,\r\n \"IsActive\": false,\r\n \"ActivateIfPossible\": true,\r\n \"Name\": \"sku test\",\r\n \"RefId\": \"125478\",\r\n \"Ean\": \"8949461894984\",\r\n \"PackagedHeight\": 10,\r\n \"PackagedLength\": 10,\r\n \"PackagedWidth\": 10,\r\n \"PackagedWeightKg\": 10,\r\n \"Height\": null,\r\n \"Length\": null,\r\n \"Width\": null,\r\n \"WeightKg\": null,\r\n \"CubicWeight\": 0.1667,\r\n \"IsKit\": false,\r\n \"CreationDate\": null,\r\n \"RewardValue\": null,\r\n \"EstimatedDateArrival\": null,\r\n \"ManufacturerCode\": \"123\",\r\n \"CommercialConditionId\": 1,\r\n \"MeasurementUnit\": \"un\",\r\n \"UnitMultiplier\": 2.0000,\r\n \"ModalType\": null,\r\n \"KitItensSellApart\": false,\r\n \"Videos\": [ \"https://www.youtube.com/\" ]\r\n}\r\n``` \r\n\r\n### Response body example\r\n\r\n```json\r\n{\r\n \"Id\":1,\r\n \"ProductId\": 310117069,\r\n \"IsActive\": false,\r\n \"ActivateIfPossible\": true,\r\n \"Name\": \"sku test\",\r\n \"RefId\": \"125478\",\r\n \"Ean\": \"8949461894984\",\r\n \"PackagedHeight\": 10,\r\n \"PackagedLength\": 10,\r\n \"PackagedWidth\": 10,\r\n \"PackagedWeightKg\": 10,\r\n \"Height\": null,\r\n \"Length\": null,\r\n \"Width\": null,\r\n \"WeightKg\": null,\r\n \"CubicWeight\": 0.1667,\r\n \"IsKit\": false,\r\n \"CreationDate\": null,\r\n \"RewardValue\": null,\r\n \"EstimatedDateArrival\": null,\r\n \"ManufacturerCode\": \"123\",\r\n \"CommercialConditionId\": 1,\r\n \"MeasurementUnit\": \"un\",\r\n \"UnitMultiplier\": 2.0000,\r\n \"ModalType\": null,\r\n \"KitItensSellApart\": false,\r\n \"Videos\": [ \"https://www.youtube.com/\" ]\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 70, + "ProductId": 42, + "IsActive": false, + "ActivateIfPossible": false, + "Name": "Size 10", + "RefId": "B096QW8Y8Z", + "Ean": "8949461894984", + "PackagedHeight": 10.0, + "PackagedLength": 10.0, + "PackagedWidth": 10.0, + "PackagedWeightKg": 10.0, + "Height": 1.0, + "Length": 1.0, + "Width": 1.0, + "WeightKg": 1.0, + "CubicWeight": 0.1667, + "IsKit": false, + "CreationDate": "2020-01-25T15:51:29.2614605", + "RewardValue": 0.0, + "EstimatedDateArrival": null, + "ManufacturerCode": "", + "CommercialConditionId": 1, + "MeasurementUnit": "un", + "UnitMultiplier": 2.0000, + "ModalType": null, + "KitItensSellApart": false, + "Videos": [ + "https://www.youtube.com/" + ] + }, + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "SKU unique identifier." + }, + "ProductId": { + "type": "integer", + "description": "ID of the Product associated with this SKU." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the SKU is active (`true`) or not (`false`)." + }, + "ActivateIfPossible": { + "type": "boolean", + "description": "When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component." + }, + "Name": { + "type": "string", + "description": "SKU name, meaning the variation of the previously added product. For example: **Product** - _Fridge_, **SKU** - _110V_." + }, + "RefId": { + "type": "string", + "description": "Reference code used internally for organizational purposes. Must be unique. Required only if `Ean` is not informed, but can be used alongside `Ean` as well." + }, + "Ean": { + "type": "string", + "description": "EAN code. Required only if `RefId` is not informed, but can be used alongside `RefId` as well." + }, + "PackagedHeight": { + "type": "number", + "description": "Height used for shipping calculation." + }, + "PackagedLength": { + "type": "number", + "description": "Length used for shipping calculation." + }, + "PackagedWidth": { + "type": "number", + "description": "Width used for shipping calculation." + }, + "PackagedWeightKg": { + "type": "integer", + "description": "Weight used for shipping calculation, in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams." + }, + "Height": { + "type": "number", + "description": "SKU real height." + }, + "Length": { + "type": "number", + "description": "SKU real length." + }, + "Width": { + "type": "number", + "description": "SKU real width." + }, + "WeightKg": { + "type": "number", + "description": "Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams." + }, + "CubicWeight": { + "type": "number", + "description": "[Cubic weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128)." + }, + "IsKit": { + "type": "boolean", + "description": "Flag to set whether the product SKU is made up of one or more SKUs, thereby becoming a bundle. Must be enabled if you are adding a bundle. Once activated, the flag cannot be reverted." + }, + "CreationDate": { + "type": "string", + "description": "Date and time of the SKU's creation." + }, + "RewardValue": { + "type": "number", + "description": "Credit that the customer receives when finalizing an order of one specific SKU unit. By filling this field out with `1`, the customer gets U$ 1 credit on the site." + }, + "EstimatedDateArrival": { + "type": "string", + "description": "SKU estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format, when the product is on pre-sale. You must take into consideration both the launch date and the freight calculation for the arrival date.", + "nullable": true + }, + "ManufacturerCode": { + "type": "string", + "description": "Provided by the manufacturers to identify their product. This field should be filled in if the product has a specific manufacturer’s code." + }, + "CommercialConditionId": { + "type": "integer", + "description": "Used to define SKU specific promotions or installment rules. In case of no specific condition, use `1` (default value). This field does not accept `0`. Find out more by reading [Registering a commercial condition](https://help.vtex.com/tutorial/registering-a-commercial-condition--tutorials_445)." + }, + "MeasurementUnit": { + "type": "string", + "description": "Used only in cases when you need to convert the unit of measure for sale. If a product is sold in boxes for example, but customers want to buy per square meter (m²). In common cases, use `'un'`.", + "example": "un" + }, + "UnitMultiplier": { + "type": "number", + "description": "This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward." + }, + "ModalType": { + "type": "string", + "nullable": true, + "description": "Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. \"Chemicals\" or \"Refrigerated products\"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy)." + }, + "KitItensSellApart": { + "type": "boolean", + "description": "Defines if Kit components can be sold apart." + }, + "Videos": { + "type": "array", + "description": "Videos URLs.", + "items": { + "type": "string", + "description": "Video URL." + } + } + } + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ProductId", + "Name", + "PackagedHeight", + "PackagedLength", + "PackagedWidth", + "PackagedWeightKg" + ], + "properties": { + "Id": { + "type": "integer", + "description": "SKU unique identifier. If not informed, it will be automatically generated by VTEX.", + "example": 1 + }, + "ProductId": { + "type": "integer", + "description": "ID of the Product associated with this SKU.", + "example": 42 + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the SKU is active (`true`) or not (`false`). During SKU creation, do not set this field as `true` or you will receive a `400 Bad Request` error. You should activate the SKU afterwards, as explained in [Activating an SKU](https://developers.vtex.com/docs/guides/skus#activating-an-sku).", + "example": false + }, + "ActivateIfPossible": { + "type": "boolean", + "description": "When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component. We recommend setting it to `true`, unless you plan to have an internal workflow to manually activate SKUs.", + "example": true + }, + "Name": { + "type": "string", + "description": "SKU name, meaning the variation of the previously added product. For example: **Product** - _Fridge_, **SKU** - _110V_. Limited to 200 characters.", + "example": "Size 10" + }, + "RefId": { + "type": "string", + "description": "Reference code used internally for organizational purposes. Must be unique. Required only if `Ean` is not informed, but can be used alongside `Ean` as well.", + "example": "B096QW8Y8Z" + }, + "Ean": { + "type": "string", + "description": "EAN code. Required only if `RefId` is not informed, but can be used alongside `RefId` as well.", + "example": "8949461894984" + }, + "PackagedHeight": { + "type": "number", + "description": "Height used for shipping calculation.", + "example": 10 + }, + "PackagedLength": { + "type": "number", + "description": "Length used for shipping calculation.", + "example": 10 + }, + "PackagedWidth": { + "type": "number", + "description": "Width used for shipping calculation.", + "example": 10 + }, + "PackagedWeightKg": { + "type": "integer", + "description": "Weight used for shipping calculation, in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. Do not fill in this field with `0` or `null`, because this might result in shipping issues.", + "example": 10 + }, + "Height": { + "type": "number", + "description": "SKU real height.", + "example": 1.0 + }, + "Length": { + "type": "number", + "description": "SKU real length.", + "example": 1.0 + }, + "Width": { + "type": "number", + "description": "SKU real width.", + "example": 1.0 + }, + "WeightKg": { + "type": "number", + "description": "Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams.", + "example": 1.0 + }, + "CubicWeight": { + "type": "number", + "description": "[Cubic weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128).", + "example": 0.1667 + }, + "IsKit": { + "type": "boolean", + "description": "Flag to set whether the product SKU is made up of one or more SKUs, thereby becoming a bundle. Must be enabled if you are adding a bundle. Once activated, the flag cannot be reverted.", + "example": false + }, + "CreationDate": { + "type": "string", + "description": "Date and time of the SKU's creation.", + "example": "2020-01-25T15:51:29.2614605" + }, + "RewardValue": { + "type": "number", + "description": "Credit that the customer receives when finalizing an order of one specific SKU unit. By filling this field out with `1`, the customer gets U$ 1 credit on the site.", + "example": 1.0 + }, + "EstimatedDateArrival": { + "type": "string", + "nullable": true, + "description": "To add the product as pre-sale, enter the product estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format. You must take into consideration both the launch date and the freight calculation for the arrival date.", + "example": null + }, + "ManufacturerCode": { + "type": "string", + "description": "Provided by the manufacturers to identify their product. This field should be filled in if the product has a specific manufacturer’s code.", + "example": "123" + }, + "CommercialConditionId": { + "type": "integer", + "description": "Used to define SKU specific promotions or installment rules. In case of no specific condition, use `1` (default value). This field does not accept `0`. Find out more by reading [Registering a commercial condition](https://help.vtex.com/tutorial/registering-a-commercial-condition--tutorials_445).", + "example": 1 + }, + "MeasurementUnit": { + "type": "string", + "description": "Used only in cases when you need to convert the unit of measure for sale. If a product is sold in boxes for example, but customers want to buy per square meter (m²). In common cases, use `'un'`.", + "example": "un" + }, + "UnitMultiplier": { + "type": "number", + "description": "This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward.", + "example": 2.0000 + }, + "ModalType": { + "type": "string", + "nullable": true, + "description": "Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. \"Chemicals\" or \"Refrigerated products\"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy).", + "example": null + }, + "KitItensSellApart": { + "type": "boolean", + "description": "Defines if Kit components can be sold apart.", + "example": false + }, + "Videos": { + "type": "array", + "description": "Videos URLs", + "items": { + "type": "string", + "description": "URL", + "example": "https://www.youtube.com/" + }, + "example": [ + "https://www.youtube.com/" + ] + } + } + } + } + } + } + } + }, + "/api/catalog_system/pvt/sku/stockkeepingunitidbyrefid/{refId}": { + "get": { + "tags": [ + "SKU" + ], + "summary": "Get SKU ID by Reference ID", + "description": "Retrieves an SKU ID by the SKU's Reference ID. \r\n\r\n### Response body example\r\n\r\n```json\r\n\"310118450\"\r\n```", + "operationId": "SkuIdbyRefId", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "refId", + "in": "path", + "description": "SKU Reference ID.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "0001" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string", + "description": "SKU ID.", + "example": "1" + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/sku/stockkeepingunitbyalternateId/{alternateId}": { + "get": { + "tags": [ + "SKU" + ], + "summary": "Get SKU by Alternate ID", + "description": "Retrieves an SKU by its Alternate ID.\r\n\r\n### Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 310118450,\r\n \"ProductId\": 2,\r\n \"NameComplete\": \"Caixa de Areia Azul Petmate sku test\",\r\n \"ComplementName\": \"\",\r\n \"ProductName\": \"Caixa de Areia Azul Petmate\",\r\n \"ProductDescription\": \"\",\r\n \"ProductRefId\": \"\",\r\n \"TaxCode\": \"\",\r\n \"SkuName\": \"sku test\",\r\n \"IsActive\": true,\r\n \"IsTransported\": true,\r\n \"IsInventoried\": true,\r\n \"IsGiftCardRecharge\": false,\r\n \"ImageUrl\": \"https://lojadobreno.vteximg.com.br/arquivos/ids/155451-55-55/caixa-areia-azul-petmate.jpg?v=637139451191670000\",\r\n \"DetailUrl\": \"/caixa-de-areia-azul-petmate/p\",\r\n \"CSCIdentification\": null,\r\n \"BrandId\": \"2000005\",\r\n \"BrandName\": \"Petmate\",\r\n \"IsBrandActive\": true,\r\n \"Dimension\": {\r\n \"cubicweight\": 0.2083,\r\n \"height\": 10.0000,\r\n \"length\": 10.0000,\r\n \"weight\": 10.0000,\r\n \"width\": 10.0000\r\n },\r\n \"RealDimension\": {\r\n \"realCubicWeight\": 0.000,\r\n \"realHeight\": 0.0,\r\n \"realLength\": 0.0,\r\n \"realWeight\": 0.0,\r\n \"realWidth\": 0.0\r\n },\r\n \"ManufacturerCode\": \"123\",\r\n \"IsKit\": false,\r\n \"KitItems\": [],\r\n \"Services\": [],\r\n \"Categories\": [],\r\n \"CategoriesFullPath\": [\r\n \"/3/15/\",\r\n \"/3/\",\r\n \"/1/\"\r\n ],\r\n \"Attachments\": [],\r\n \"Collections\": [],\r\n \"SkuSellers\": [\r\n {\r\n \"SellerId\": \"1\",\r\n \"StockKeepingUnitId\": 310118450,\r\n \"SellerStockKeepingUnitId\": \"310118450\",\r\n \"IsActive\": true,\r\n \"FreightCommissionPercentage\": 0.0,\r\n \"ProductCommissionPercentage\": 0.0\r\n }\r\n ],\r\n \"SalesChannels\": [\r\n 1,\r\n 3\r\n ],\r\n \"Images\": [\r\n {\r\n \"ImageUrl\": \"https://lojadobreno.vteximg.com.br/arquivos/ids/155451/caixa-areia-azul-petmate.jpg?v=637139451191670000\",\r\n \"ImageName\": null,\r\n \"FileId\": 155451\r\n }\r\n ],\r\n \"Videos\": [],\r\n \"SkuSpecifications\": [],\r\n \"ProductSpecifications\": [],\r\n \"ProductClustersIds\": \"151,158\",\r\n \"PositionsInClusters\": {\r\n \"151\": 1,\r\n \"158\": 2\r\n },\r\n \"ProductClusterNames\": {\r\n \"151\": \"asdfghj\",\r\n \"158\": \"Coleção halloween\"\r\n },\r\n \"ProductClusterHighlights\": {\r\n \"151\": \"asdfghj\"\r\n },\r\n \"ProductCategoryIds\": \"/3/15/\",\r\n \"IsDirectCategoryActive\": true,\r\n \"ProductGlobalCategoryId\": 5000,\r\n \"ProductCategories\": {\r\n \"15\": \"Caixa de Areia\",\r\n \"3\": \"Higiene\",\r\n \"1\": \"Alimentação\"\r\n },\r\n \"CommercialConditionId\": 1,\r\n \"RewardValue\": 0.0,\r\n \"AlternateIds\": {\r\n \"RefId\": \"1\"\r\n },\r\n \"AlternateIdValues\": [\r\n \"1\"\r\n ],\r\n \"EstimatedDateArrival\": null,\r\n \"MeasurementUnit\": \"un\",\r\n \"UnitMultiplier\": 1.0000,\r\n \"InformationSource\": null,\r\n \"ModalType\": null,\r\n \"KeyWords\": \"\",\r\n \"ReleaseDate\": \"2020-01-06T00:00:00Z\",\r\n \"ProductIsVisible\": true,\r\n \"ShowIfNotAvailable\": true,\r\n \"IsProductActive\": true,\r\n \"ProductFinalScore\": 0\r\n}\r\n```", + "operationId": "SkubyAlternateId", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "alternateId", + "in": "path", + "description": "Product EAN or RefId.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 10 + } + } + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Cache-Control": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "no-cache" + } + } + }, + "Connection": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "keep-alive" + } + } + }, + "Content-Encoding": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "gzip" + } + } + }, + "Date": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Thu, 16 Feb 2017 15:21:38 GMT" + } + } + }, + "Expires": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "-1" + } + } + }, + "Pragma": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "no-cache" + } + } + }, + "Server": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "nginx" + } + } + }, + "Transfer-Encoding": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "chunked" + } + } + }, + "Vary": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Accept-Encoding, Accept-Encoding" + } + } + }, + "X-CacheServer": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "janus-apicache-nginx14" + } + } + }, + "X-Powered-by-VTEX-Janus-ApiCache": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "v1.3.9" + } + } + }, + "X-Powered-by-VTEX-Janus-Edge": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "v1.36.0-beta" + } + } + }, + "X-Track": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "beta" + } + } + }, + "X-Translate": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "1" + } + } + }, + "X-Translate-BackEnd": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "http%3A%2F%2Fbeta.janus-router-v2.vtexinternal.com.br%2Fapi%2Fcatalog_system%2Fpvt%2Fsku%2FstockkeepingunitbyalternateId%2F8781" + } + } + }, + "X-VTEX-Cache-Status-Janus-ApiCache": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "MISS" + } + } + }, + "X-VTEX-Cache-Status-Janus-Edge": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "MISS" + } + } + }, + "X-VTEX-Janus-Router-Backend-App": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "prtapi-v1.4.691-beta.1+530" + } + } + }, + "no": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "-8NLU58HJKL2" + } + } + }, + "p3p": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "policyref=\"/w3c/p3p.xml\",CP=\"ADMa OUR NOR CNT NID DSP NOI COR\"" + } + } + }, + "powered": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "vtex" + } + } + }, + "x-vtex-operation-id": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "3afef265-3349-4726-842c-638308243e05" + } + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetSKUAltID" + }, + "example": { + "Id": 310118450, + "ProductId": 2, + "NameComplete": "Caixa de Areia Azul Petmate sku test", + "ComplementName": "", + "ProductName": "Caixa de Areia Azul Petmate", + "ProductDescription": "", + "ProductRefId": "", + "TaxCode": "", + "SkuName": "sku test", + "IsActive": true, + "IsTransported": true, + "IsInventoried": true, + "IsGiftCardRecharge": false, + "ImageUrl": "https://lojadobreno.vteximg.com.br/arquivos/ids/155451-55-55/caixa-areia-azul-petmate.jpg?v=637139451191670000", + "DetailUrl": "/caixa-de-areia-azul-petmate/p", + "CSCIdentification": null, + "BrandId": "2000005", + "BrandName": "Petmate", + "IsBrandActive": true, + "Dimension": { + "cubicweight": 0.2083, + "height": 10.0000, + "length": 10.0000, + "weight": 10.0000, + "width": 10.0000 + }, + "RealDimension": { + "realCubicWeight": 0.000, + "realHeight": 0.0, + "realLength": 0.0, + "realWeight": 0.0, + "realWidth": 0.0 + }, + "ManufacturerCode": "123", + "IsKit": false, + "KitItems": [], + "Services": [], + "Categories": [], + "CategoriesFullPath": [ + "/3/15/", + "/3/", + "/1/" + ], + "Attachments": [], + "Collections": [], + "SkuSellers": [ + { + "SellerId": "1", + "StockKeepingUnitId": 310118450, + "SellerStockKeepingUnitId": "310118450", + "IsActive": true, + "FreightCommissionPercentage": 0.0, + "ProductCommissionPercentage": 0.0 + } + ], + "SalesChannels": [ + 1, + 3 + ], + "Images": [ + { + "ImageUrl": "https://lojadobreno.vteximg.com.br/arquivos/ids/155451/caixa-areia-azul-petmate.jpg?v=637139451191670000", + "ImageName": null, + "FileId": 155451 + } + ], + "Videos": [], + "SkuSpecifications": [], + "ProductSpecifications": [], + "ProductClustersIds": "151,158", + "PositionsInClusters": { + "151": 1, + "158": 2 + }, + "ProductClusterNames": { + "151": "asdfghj", + "158": "Coleção halloween" + }, + "ProductClusterHighlights": { + "151": "asdfghj" + }, + "ProductCategoryIds": "/3/15/", + "IsDirectCategoryActive": true, + "ProductGlobalCategoryId": 5000, + "ProductCategories": { + "15": "Caixa de Areia", + "3": "Higiene", + "1": "Alimentação" + }, + "CommercialConditionId": 1, + "RewardValue": 0.0, + "AlternateIds": { + "RefId": "1" + }, + "AlternateIdValues": [ + "1" + ], + "EstimatedDateArrival": null, + "MeasurementUnit": "un", + "UnitMultiplier": 1.0000, + "InformationSource": null, + "ModalType": null, + "KeyWords": "", + "ReleaseDate": "2020-01-06T00:00:00Z", + "ProductIsVisible": true, + "ShowIfNotAvailable": true, + "IsProductActive": true, + "ProductFinalScore": 0 + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/sku/stockkeepingunitByProductId/{productId}": { + "get": { + "tags": [ + "SKU" + ], + "summary": "Get SKU list by Product ID", + "description": "Retrieves a list with the SKUs related to a product by the product's ID.\r\n\r\n### Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"IsPersisted\": true,\r\n \"IsRemoved\": false,\r\n \"Id\": 2000035,\r\n \"ProductId\": 2000024,\r\n \"IsActive\": true,\r\n \"Name\": \"33 - Preto\",\r\n \"Height\": 8,\r\n \"RealHeight\": null,\r\n \"Width\": 15,\r\n \"RealWidth\": null,\r\n \"Length\": 8,\r\n \"RealLength\": null,\r\n \"WeightKg\": 340,\r\n \"RealWeightKg\": null,\r\n \"ModalId\": 1,\r\n \"RefId\": \"\",\r\n \"CubicWeight\": 0.2,\r\n \"IsKit\": false,\r\n \"IsDynamicKit\": null,\r\n \"InternalNote\": null,\r\n \"DateUpdated\": \"2015-11-06T19:10:00\",\r\n \"RewardValue\": 0.01,\r\n \"CommercialConditionId\": 1,\r\n \"EstimatedDateArrival\": \"\",\r\n \"FlagKitItensSellApart\": false,\r\n \"ManufacturerCode\": \"\",\r\n \"ReferenceStockKeepingUnitId\": null,\r\n \"Position\": 0,\r\n \"EditionSkuId\": null,\r\n \"ApprovedAdminId\": 123,\r\n \"EditionAdminId\": 123,\r\n \"ActivateIfPossible\": true,\r\n \"SupplierCode\": null,\r\n \"MeasurementUnit\": \"un\",\r\n \"UnitMultiplier\": 2.0000,\r\n \"IsInventoried\": null,\r\n \"IsTransported\": null,\r\n \"IsGiftCardRecharge\": null,\r\n \"ModalType\": \"\"\r\n }\r\n]\r\n```", + "operationId": "SkulistbyProductId", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "description": "Product’s unique numerical identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Cache-Control": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "no-cache" + } + } + }, + "Connection": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "keep-alive" + } + } + }, + "Content-Encoding": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "gzip" + } + } + }, + "Content-Length": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "535" + } + } + }, + "Date": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Mon, 07 Aug 2017 22:10:41 GMT" + } + } + }, + "Expires": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "-1" + } + } + }, + "Pragma": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "no-cache" + } + } + }, + "Server": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "nginx" + } + } + }, + "Vary": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Accept-Encoding" + } + } + }, + "X-CacheServer": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "janus-apicache-nginx15" + } + } + }, + "X-Powered-by-VTEX-Janus-ApiCache": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "v1.3.9" + } + } + }, + "X-Powered-by-VTEX-Janus-Edge": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "v1.38.0" + } + } + }, + "X-Track": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "stable" + } + } + }, + "X-VTEX-Cache-Status-Janus-ApiCache": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "MISS" + } + } + }, + "X-VTEX-Cache-Status-Janus-Edge": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "MISS" + } + } + }, + "X-VTEX-Janus-Router-Backend-App": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "prtapi-v1.4.779-stable+579" + } + } + }, + "no": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "-LKUTNPH8G7F" + } + } + }, + "p3p": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "policyref=\"/w3c/p3p.xml\",CP=\"ADMa OUR NOR CNT NID DSP NOI COR\"" + } + } + }, + "powered": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "vtex" + } + } + }, + "x-vtex-operation-id": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "316e0c8f-7aa1-41dc-859e-47ba1fcb4b0f" + } + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SkulistbyProductId" + }, + "example": [ + { + "IsPersisted": true, + "IsRemoved": false, + "Id": 2000035, + "ProductId": 2000024, + "IsActive": true, + "Name": "33 - Preto", + "Height": 8, + "RealHeight": null, + "Width": 15, + "RealWidth": null, + "Length": 8, + "RealLength": null, + "WeightKg": 340, + "RealWeightKg": null, + "ModalId": 1, + "RefId": "", + "CubicWeight": 0.2, + "IsKit": false, + "IsDynamicKit": null, + "InternalNote": null, + "DateUpdated": "2015-11-06T19:10:00", + "RewardValue": 0.01, + "CommercialConditionId": 1, + "EstimatedDateArrival": null, + "FlagKitItensSellApart": false, + "ManufacturerCode": "", + "ReferenceStockKeepingUnitId": null, + "Position": 0, + "EditionSkuId": null, + "ApprovedAdminId": 123, + "EditionAdminId": 123, + "ActivateIfPossible": true, + "SupplierCode": null, + "MeasurementUnit": "un", + "UnitMultiplier": 2.0000, + "IsInventoried": null, + "IsTransported": null, + "IsGiftCardRecharge": null, + "ModalType": null + } + ] + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pub/sku/stockkeepingunitidsbyrefids": { + "post": { + "tags": [ + "SKU" + ], + "summary": "Retrieve SKU ID list by Reference ID list", + "description": "Receives a list of Reference IDs and returns a list with the corresponding SKU IDs.\r\n\r\n>⚠️ The list of Reference IDs in the request body cannot have repeated Reference IDs, or the API will return an error 500. \r\n\r\n## Request body example\r\n\r\n```json\r\n[\r\n \"123\",\r\n \"D25133K-B2\",\r\n \"14-556\",\r\n \"DCF880L2-BR\"\r\n]\r\n```\r\n\r\n### Response body example\r\n\r\n```json\r\n{\r\n \"123\": \"435\",\r\n \"D25133K-B2\": \"4351\",\r\n \"14-556\": \"3155\",\r\n \"DCF880L2-BR\": \"4500\"\r\n}\r\n```", + "operationId": "SkuIdlistbyRefIdlist", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "Array with SKU reference IDs from which you need to retrieve the related SKU IDs. Don't repeat values in the array, or the API will return an error 500.", + "required": [ + "RefId" + ], + "items": { + "type": "string", + "description": "SKU Reference ID.", + "example": "799" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "headers": { + "Cache-Control": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "no-cache" + } + } + }, + "Connection": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "keep-alive" + } + } + }, + "Content-Encoding": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "gzip" + } + } + }, + "Content-Length": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "189" + } + } + }, + "Date": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Thu, 31 May 2018 14:45:26 GMT" + } + } + }, + "Expires": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "-1" + } + } + }, + "Pragma": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "no-cache" + } + } + }, + "Server": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Microsoft-IIS/8.5" + } + } + }, + "Vary": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Accept-Encoding" + } + } + }, + "X-AspNet-Version": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "4.0.30319" + } + } + }, + "X-Powered-By": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "ASP.NET" + } + } + }, + "X-VTEX-Janus-Router-Backend-App": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "prtapi-v1.4.974-stable+738" + } + } + }, + "no": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "-86FN1DUJ89D" + } + } + }, + "p3p": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "policyref=\"/w3c/p3p.xml\",CP=\"ADMa OUR NOR CNT NID DSP NOI COR\"" + } + } + }, + "powered": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "vtex" + } + } + }, + "x-vtex-operation-id": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "0e0702f1-95e7-4e2b-97cf-0a370aa78abb" + } + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Object composed by a list of SKU IDs related to each Reference ID list searched. Structure: \"{RefId}\": \"{SkuId}\".", + "additionalProperties": { + "type": "string", + "description": "Reference ID." + } + }, + "example": { + "123": "435", + "D25133K-B2": "4351", + "14-556": "3155", + "DCF880L2-BR": "4500" + } + } + } + }, + "500": { + "description": "Internal Server Error" + } + }, + "deprecated": false + } + }, + "/api/catalog/pvt/stockkeepingunit/{skuId}": { + "get": { + "tags": [ + "SKU" + ], + "summary": "Get SKU", + "description": "Retrieves a specific SKU by its ID.\r\n\r\n### Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 1,\r\n \"ProductId\": 1,\r\n \"IsActive\": true,\r\n \"ActivateIfPossible\": true,\r\n \"Name\": \"Ração Royal Canin Feline Urinary 500g\",\r\n \"RefId\": \"0001\",\r\n \"PackagedHeight\": 6.5000,\r\n \"PackagedLength\": 24.0000,\r\n \"PackagedWidth\": 14.0000,\r\n \"PackagedWeightKg\": 550.0000,\r\n \"Height\": 2.2000,\r\n \"Length\": 4.4000,\r\n \"Width\": 3.3000,\r\n \"WeightKg\": 1.1000,\r\n \"CubicWeight\": 0.4550,\r\n \"IsKit\": false,\r\n \"CreationDate\": \"2021-06-08T15:25:00\",\r\n \"RewardValue\": null,\r\n \"EstimatedDateArrival\": null,\r\n \"ManufacturerCode\": \"\",\r\n \"CommercialConditionId\": 1,\r\n \"MeasurementUnit\": \"un\",\r\n \"UnitMultiplier\": 300.0000,\r\n \"ModalType\": null,\r\n \"KitItensSellApart\": false,\r\n \"Videos\": [\r\n \"www.google.com\"\r\n ]\r\n}\r\n``` \r\n> 📘 Onboarding guide \r\n>\r\n> Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey.", + "operationId": "Sku", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "description": "SKU unique identifier number.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 70, + "ProductId": 42, + "IsActive": false, + "ActivateIfPossible": false, + "Name": "Size 10", + "RefId": "B096QW8Y8Z", + "PackagedHeight": 10.0, + "PackagedLength": 10.0, + "PackagedWidth": 10.0, + "PackagedWeightKg": 10.0, + "Height": 1.0, + "Length": 1.0, + "Width": 1.0, + "WeightKg": 1.0, + "CubicWeight": 0.1667, + "IsKit": false, + "CreationDate": "2020-01-25T15:51:29.2614605", + "RewardValue": 0.0, + "EstimatedDateArrival": null, + "ManufacturerCode": "", + "CommercialConditionId": 1, + "MeasurementUnit": "un", + "UnitMultiplier": 2.0000, + "ModalType": null, + "KitItensSellApart": false, + "Videos": [ + "https://www.youtube.com/" + ] + }, + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "SKU unique identifier." + }, + "ProductId": { + "type": "integer", + "description": "ID of the Product associated with this SKU." + }, + "IsActive": { + "type": "boolean", + "description": "Shows if the SKU is active (`true`) or not (`false`)." + }, + "ActivateIfPossible": { + "type": "boolean", + "description": "When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component." + }, + "Name": { + "type": "string", + "description": "SKU name, meaning the variation of the previously added product. For example: **Product** - _Fridge_, **SKU** - _110V_." + }, + "RefId": { + "type": "string", + "description": "Reference code used internally for organizational purposes. Must be unique. It is not required only if EAN code already exists. If not, this field must be provided." + }, + "PackagedHeight": { + "type": "number", + "description": "Height used for shipping calculation." + }, + "PackagedLength": { + "type": "number", + "description": "Length used for shipping calculation." + }, + "PackagedWidth": { + "type": "number", + "description": "Width used for shipping calculation." + }, + "PackagedWeightKg": { + "type": "integer", + "description": "Weight used for shipping calculation." + }, + "Height": { + "type": "number", + "description": "SKU real height." + }, + "Length": { + "type": "number", + "description": "SKU real length." + }, + "Width": { + "type": "number", + "description": "SKU real width." + }, + "WeightKg": { + "type": "number", + "description": "Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams." + }, + "CubicWeight": { + "type": "number", + "description": "[Cubic weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128)." + }, + "IsKit": { + "type": "boolean", + "description": "Flag to set whether the product SKU is made up of one or more SKUs, thereby becoming a bundle. Must be enabled if you are adding a bundle. Once activated, the flag cannot be reverted." + }, + "CreationDate": { + "type": "string", + "description": "Date and time of the SKU's creation." + }, + "RewardValue": { + "type": "number", + "description": "Credit that the customer receives when finalizing an order of one specific SKU unit. By filling this field out with `1`, the customer gets U$ 1 credit on the site." + }, + "EstimatedDateArrival": { + "type": "string", + "nullable": true, + "description": "SKU estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format, when the product is on pre-sale. You must take into consideration both the launch date and the freight calculation for the arrival date." + }, + "ManufacturerCode": { + "type": "string", + "description": "Provided by the manufacturers to identify their product. This field should be filled in if the product has a specific manufacturer’s code." + }, + "CommercialConditionId": { + "type": "integer", + "description": "Used to define SKU specific promotions or installment rules. In case of no specific condition, use `1` (default value). This field does not accept `0`. Find out more by reading [Registering a commercial condition](https://help.vtex.com/tutorial/registering-a-commercial-condition--tutorials_445)." + }, + "MeasurementUnit": { + "type": "string", + "description": "Used only in cases when you need to convert the unit of measure for sale. If a product is sold in boxes for example, but customers want to buy per square meter (m²). In common cases, use `'un'`.", + "example": "un" + }, + "UnitMultiplier": { + "type": "number", + "description": "This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward." + }, + "ModalType": { + "type": "string", + "nullable": true, + "description": "Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. \"Chemicals\" or \"Refrigerated products\"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy)." + }, + "KitItensSellApart": { + "type": "boolean", + "description": "Defines if Kit components can be sold apart." + }, + "Videos": { + "type": "array", + "description": "Videos URLs.", + "items": { + "type": "string", + "description": "Video URL." + } + } + } + } + } + } + } + }, + "deprecated": false + }, + "put": { + "tags": [ + "SKU" + ], + "summary": "Update SKU", + "description": "Updates an existing SKU. \r\n\r\n### Request body example\r\n\r\n```json\r\n{\r\n \"Id\": 310118448,\r\n \"ProductId\": 310117069,\r\n \"IsActive\": true,\r\n \"ActivateIfPossible\": true,\r\n \"Name\": \"sku test\",\r\n \"RefId\": \"125478\",\r\n \"PackagedHeight\": 10,\r\n \"PackagedLength\": 10,\r\n \"PackagedWidth\": 10,\r\n \"PackagedWeightKg\": 10,\r\n \"Height\": null,\r\n \"Length\": null,\r\n \"Width\": null,\r\n \"WeightKg\": null,\r\n \"CubicWeight\": 0.1667,\r\n \"IsKit\": false,\r\n \"CreationDate\": null,\r\n \"RewardValue\": null,\r\n \"EstimatedDateArrival\": null,\r\n \"ManufacturerCode\": \"123\",\r\n \"CommercialConditionId\": 1,\r\n \"MeasurementUnit\": \"un\",\r\n \"UnitMultiplier\": 2.0000,\r\n \"ModalType\": null,\r\n \"KitItensSellApart\": false,\r\n \"Videos\": [ \"https://www.youtube.com/\" ]\r\n}\r\n```\r\n\r\n### Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 310118449,\r\n \"ProductId\": 1,\r\n \"IsActive\": true,\r\n \"ActivateIfPossible\": true,\r\n \"Name\": \"sku test\",\r\n \"RefId\": \"1254789\",\r\n \"PackagedHeight\": 10.0,\r\n \"PackagedLength\": 10.0,\r\n \"PackagedWidth\": 10.0,\r\n \"PackagedWeightKg\": 10.0,\r\n \"Height\": null,\r\n \"Length\": null,\r\n \"Width\": null,\r\n \"WeightKg\": null,\r\n \"CubicWeight\": 0.1667,\r\n \"IsKit\": false,\r\n \"CreationDate\": \"2020-04-22T12:12:47.5219561\",\r\n \"RewardValue\": null,\r\n \"EstimatedDateArrival\": null,\r\n \"ManufacturerCode\": \"123\",\r\n \"CommercialConditionId\": 1,\r\n \"MeasurementUnit\": \"un\",\r\n \"UnitMultiplier\": 2.0000,\r\n \"ModalType\": null,\r\n \"KitItensSellApart\": false,\r\n \"Videos\": [ \"https://www.youtube.com/\" ]\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 70, + "ProductId": 42, + "IsActive": false, + "ActivateIfPossible": false, + "Name": "Size 10", + "RefId": "B096QW8Y8Z", + "PackagedHeight": 10.0, + "PackagedLength": 10.0, + "PackagedWidth": 10.0, + "PackagedWeightKg": 10.0, + "Height": 1.0, + "Length": 1.0, + "Width": 1.0, + "WeightKg": 1.0, + "CubicWeight": 0.1667, + "IsKit": false, + "CreationDate": "2020-01-25T15:51:29.2614605", + "RewardValue": 0.0, + "EstimatedDateArrival": null, + "ManufacturerCode": "", + "CommercialConditionId": 1, + "MeasurementUnit": "un", + "UnitMultiplier": 2.0000, + "ModalType": null, + "KitItensSellApart": false, + "Videos": [ + "https://www.youtube.com/" + ] + }, + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "SKU unique identifier." + }, + "ProductId": { + "type": "integer", + "description": "ID of the Product associated with this SKU." + }, + "IsActive": { + "type": "boolean", + "description": "Shows if the SKU is active (`true`) or not (`false`)." + }, + "ActivateIfPossible": { + "type": "boolean", + "description": "When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component." + }, + "Name": { + "type": "string", + "description": "SKU name, meaning the variation of the previously added product. For example: **Product** - _Fridge_, **SKU** - _110V_." + }, + "RefId": { + "type": "string", + "description": "Reference code used internally for organizational purposes. Must be unique. It is not required only if EAN code already exists. If not, this field must be provided." + }, + "PackagedHeight": { + "type": "number", + "description": "Height used for shipping calculation." + }, + "PackagedLength": { + "type": "number", + "description": "Length used for shipping calculation." + }, + "PackagedWidth": { + "type": "number", + "description": "Width used for shipping calculation." + }, + "PackagedWeightKg": { + "type": "integer", + "description": "Weight used for shipping calculation, in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams." + }, + "Height": { + "type": "number", + "description": "SKU real height." + }, + "Length": { + "type": "number", + "description": "SKU real length." + }, + "Width": { + "type": "number", + "description": "SKU real width." + }, + "WeightKg": { + "type": "number", + "description": "Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams." + }, + "CubicWeight": { + "type": "number", + "description": "[Cubic weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128)." + }, + "IsKit": { + "type": "boolean", + "description": "Flag to set whether the product SKU is made up of one or more SKUs, thereby becoming a bundle. Must be enabled if you are adding a bundle. Once activated, the flag cannot be reverted." + }, + "CreationDate": { + "type": "string", + "description": "Date and time of the SKU's creation." + }, + "RewardValue": { + "type": "number", + "description": "Credit that the customer receives when finalizing an order of one specific SKU unit. By filling this field out with `1`, the customer gets U$ 1 credit on the site." + }, + "EstimatedDateArrival": { + "type": "string", + "description": "SKU estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format, when the product is on pre-sale. You must take into consideration both the launch date and the freight calculation for the arrival date.", + "nullable": true + }, + "ManufacturerCode": { + "type": "string", + "description": "Provided by the manufacturers to identify their product. This field should be filled in if the product has a specific manufacturer’s code." + }, + "CommercialConditionId": { + "type": "integer", + "description": "Used to define SKU specific promotions or installment rules. In case of no specific condition, use `1` (default value). This field does not accept `0`. Find out more by reading [Registering a commercial condition](https://help.vtex.com/tutorial/registering-a-commercial-condition--tutorials_445)." + }, + "MeasurementUnit": { + "type": "string", + "description": "Used only in cases when you need to convert the unit of measure for sale. If a product is sold in boxes for example, but customers want to buy per square meter (m²). In common cases, use `'un'`.", + "example": "un" + }, + "UnitMultiplier": { + "type": "number", + "description": "This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward." + }, + "ModalType": { + "type": "string", + "nullable": true, + "description": "Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. \"Chemicals\" or \"Refrigerated products\"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy)." + }, + "KitItensSellApart": { + "type": "boolean", + "description": "Defines if Kit components can be sold apart." + }, + "Videos": { + "type": "array", + "description": "Videos URLs.", + "items": { + "type": "string", + "description": "Video URL." + } + } + } + } + } + } + } + }, + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ProductId", + "Name", + "PackagedHeight", + "PackagedLength", + "PackagedWidth", + "PackagedWeightKg" + ], + "properties": { + "ProductId": { + "type": "integer", + "description": "ID of the Product associated with this SKU.", + "example": 42 + }, + "IsActive": { + "type": "boolean", + "description": "Shows if the SKU is active (`true`) or not (`false`).", + "example": false + }, + "ActivateIfPossible": { + "type": "boolean", + "description": "When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component.", + "example": false + }, + "Name": { + "type": "string", + "description": "SKU name, meaning the variation of the previously added product. For example: **Product** - _Fridge_, **SKU** - _110V_.", + "example": "Size 10" + }, + "RefId": { + "type": "string", + "description": "Reference code used internally for organizational purposes. Must be unique. It is not required only if EAN code already exists. If not, this field must be provided.", + "example": "B096QW8Y8Z" + }, + "PackagedHeight": { + "type": "number", + "description": "Height used for shipping calculation.", + "example": 10 + }, + "PackagedLength": { + "type": "number", + "description": "Length used for shipping calculation.", + "example": 10 + }, + "PackagedWidth": { + "type": "number", + "description": "Width used for shipping calculation.", + "example": 10 + }, + "PackagedWeightKg": { + "type": "integer", + "description": "Weight used for shipping calculation, in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. Do not fill in this field with `0` or `null`, because this might result in shipping issues.", + "example": 10 + }, + "Height": { + "type": "number", + "description": "SKU real height.", + "example": 1.0 + }, + "Length": { + "type": "number", + "description": "SKU real length.", + "example": 1.0 + }, + "Width": { + "type": "number", + "description": "SKU real width.", + "example": 1.0 + }, + "WeightKg": { + "type": "number", + "description": "Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams.", + "example": 1.0 + }, + "CubicWeight": { + "type": "number", + "description": "[Cubic weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128).", + "example": 0.1667 + }, + "IsKit": { + "type": "boolean", + "description": "Flag to set whether the product SKU is made up of one or more SKUs, thereby becoming a bundle. Must be enabled if you are adding a bundle. Once activated, the flag cannot be reverted.", + "example": false + }, + "CreationDate": { + "type": "string", + "description": "Date and time of the SKU's creation.", + "example": "2020-01-25T15:51:00" + }, + "RewardValue": { + "type": "number", + "description": "Credit that the customer receives when finalizing an order of one specific SKU unit. By filling this field out with `1`, the customer gets U$ 1 credit on the site.", + "example": 1.0 + }, + "EstimatedDateArrival": { + "type": "string", + "nullable": true, + "description": "To add the product as pre-sale, enter the product estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format. You must take into consideration both the launch date and the freight calculation for the arrival date.", + "example": null + }, + "ManufacturerCode": { + "type": "string", + "description": "Provided by the manufacturers to identify their product. This field should be filled in if the product has a specific manufacturer’s code.", + "example": "123" + }, + "CommercialConditionId": { + "type": "integer", + "description": "Used to define SKU specific promotions or installment rules. In case of no specific condition, use `1` (default value). This field does not accept `0`. Find out more by reading [Registering a commercial condition](https://help.vtex.com/tutorial/registering-a-commercial-condition--tutorials_445).", + "example": 1 + }, + "MeasurementUnit": { + "type": "string", + "description": "Used only in cases when you need to convert the unit of measure for sale. If a product is sold in boxes for example, but customers want to buy per square meter (m²). In common cases, use `'un'`.", + "example": "un" + }, + "UnitMultiplier": { + "type": "number", + "description": "This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward.", + "example": 2.0000 + }, + "ModalType": { + "type": "string", + "nullable": true, + "description": "Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. \"Chemicals\" or \"Refrigerated products\"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy).", + "example": null + }, + "KitItensSellApart": { + "type": "boolean", + "description": "Defines if Kit components can be sold apart.", + "example": false + }, + "Videos": { + "type": "array", + "description": "Videos URLs", + "items": { + "type": "string", + "description": "URL", + "example": "https://www.youtube.com/" + }, + "example": [ + "https://www.youtube.com/" + ] + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/stockkeepingunit/{skuId}/complement": { + "get": { + "tags": [ + "SKU Complement" + ], + "summary": "Get SKU Complement by SKU ID", + "description": "Retrieves an existing SKU Complement by its SKU ID. \r\n\r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Id\": 61,\r\n \"SkuId\": 7,\r\n \"ParentSkuId\": 1,\r\n \"ComplementTypeId\": 1\r\n }\r\n]\r\n```", + "operationId": "GetSKUComplementbySKUID", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkuComplement" + }, + "example": [ + { + "Id": 61, + "SkuId": 7, + "ParentSkuId": 1, + "ComplementTypeId": 1 + } + ] + } + } + } + } + } + }, + "/api/catalog/pvt/stockkeepingunit/{skuId}/complement/{complementTypeId}": { + "get": { + "tags": [ + "SKU Complement" + ], + "summary": "Get SKU Complements by Complement Type ID", + "description": "Retrieves all the existing SKU Complements with the same Complement Type ID of a specific SKU. \r\n\r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Id\": 61,\r\n \"SkuId\": 7,\r\n \"ParentSkuId\": 1,\r\n \"ComplementTypeId\": 1\r\n }\r\n]\r\n```", + "operationId": "GetSKUComplementsbyComplementTypeID", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "ID of the SKU which will be inserted as a Complement in the Parent SKU.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "complementTypeId", + "in": "path", + "required": true, + "description": "Complement Type ID. This represents the type of the complement. The possible values are: `1` for Accessory; `2` for Suggestion; `3` for Similar Product; `5` for Show Together.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkuComplement" + }, + "example": [ + { + "Id": 61, + "SkuId": 7, + "ParentSkuId": 1, + "ComplementTypeId": 1 + } + ] + } + } + } + } + } + }, + "/api/catalog_system/pvt/sku/complements/{parentSkuId}/{type}": { + "get": { + "tags": [ + "SKU Complement" + ], + "summary": "Get SKU complements by type", + "description": "Retrieves all the existing SKU complements with the same complement type ID of a specific SKU. \r\n \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"ParentSkuId\": 1,\r\n \"ComplementSkuIds\": [\r\n 7\r\n ],\r\n \"Type\": \"1\"\r\n}\r\n```", + "operationId": "GetSKUcomplementsbytype", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "parentSkuId", + "in": "path", + "required": true, + "description": "ID of the Parent SKU, where the Complement is inserted.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "type", + "in": "path", + "required": true, + "description": "Complement Type ID. This represents the type of the complement. The possible values are: `1` for Accessory; `2` for Suggestion; `3` for Similar Product; `5` for Show Together.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "example": { + "ParentSkuId": 1, + "ComplementSkuIds": [ + 7 + ], + "Type": "1" + }, + "type": "object", + "required": [ + "ParentSkuId", + "ComplementSkuIds", + "Type" + ], + "properties": { + "ParentSkuId": { + "type": "integer", + "description": "ID of the Parent SKU, where the Complement is inserted.", + "example": 1 + }, + "ComplementSkuIds": { + "type": "array", + "description": "Array with SKU complements IDs.", + "example": [ + 7 + ], + "items": { + "type": "integer", + "description": "SKU Complement ID.", + "example": 7 + } + }, + "Type": { + "type": "string", + "description": "Complement Type ID. This represents the type of the complement. The possible values are: `1` for Accessory; `2` for Suggestion; `3` for Similar Product; `5` for Show Together.", + "example": "1" + } + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/skucomplement": { + "post": { + "tags": [ + "SKU Complement" + ], + "summary": "Create SKU Complement", + "description": "Creates a new SKU Complement on a Parent SKU. \r\n\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"SkuId\": 2,\r\n \"ParentSkuId\": 1,\r\n \"ComplementTypeId\": 2\r\n}\r\n```\r\n \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 62,\r\n \"SkuId\": 2,\r\n \"ParentSkuId\": 1,\r\n \"ComplementTypeId\": 2\r\n}\r\n```", + "operationId": "CreateSKUComplement", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "example": { + "ParentSkuId": 1, + "SkuId": 2, + "ComplementTypeId": 2 + }, + "type": "object", + "required": [ + "ParentSkuId", + "SkuId", + "ComplementTypeId" + ], + "properties": { + "ParentSkuId": { + "type": "integer", + "description": "ID of the Parent SKU, where the Complement is inserted.", + "example": 1 + }, + "SkuId": { + "type": "integer", + "description": "ID of the SKU which will be inserted as a Complement in the Parent SKU.", + "example": 1 + }, + "ComplementTypeId": { + "type": "integer", + "description": "Complement Type ID. This represents the type of the complement. The possible values are: `1` for Accessory; `2` for Suggestion; `3` for Similar Product; `5` for Show Together.", + "example": 1 + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkuComplement" + }, + "example": [ + { + "Id": 61, + "SkuId": 7, + "ParentSkuId": 1, + "ComplementTypeId": 1 + } + ] + } + } + } + } + } + }, + "/api/catalog/pvt/skucomplement/{skuComplementId}": { + "get": { + "tags": [ + "SKU Complement" + ], + "summary": "Get SKU Complement by SKU Complement ID", + "description": "Retrieves an existing SKU Complement by its SKU Complement ID. \r\n \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 62,\r\n \"SkuId\": 2,\r\n \"ParentSkuId\": 1,\r\n \"ComplementTypeId\": 2\r\n}\r\n```", + "operationId": "GetSKUComplementbySKUComplementID", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuComplementId", + "in": "path", + "required": true, + "description": "SKU Complement’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkuComplement" + }, + "example": [ + { + "Id": 61, + "SkuId": 7, + "ParentSkuId": 1, + "ComplementTypeId": 1 + } + ] + } + } + } + } + }, + "delete": { + "tags": [ + "SKU Complement" + ], + "summary": "Delete SKU Complement by SKU Complement ID", + "description": "Deletes a previously existing SKU Complement by SKU Complement ID.", + "operationId": "DeleteSKUComplementbySKUComplementID", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuComplementId", + "in": "path", + "required": true, + "description": "SKU Complement’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog_system/pvt/sku/stockkeepingunitbyean/{ean}": { + "get": { + "tags": [ + "SKU EAN" + ], + "summary": "Get SKU by EAN", + "description": "Retrieves an SKU by its EAN ID. \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 2001773,\r\n \"ProductId\": 2001426,\r\n \"NameComplete\": \"Tabela de Basquete\",\r\n \"ProductName\": \"Tabela de Basquete\",\r\n \"ProductDescription\": \"Tabela de Basquete\",\r\n \"SkuName\": \"Tabela de Basquete\",\r\n \"IsActive\": true,\r\n \"IsTransported\": true,\r\n \"IsInventoried\": true,\r\n \"IsGiftCardRecharge\": false,\r\n \"ImageUrl\": \"http:\/\/ambienteqa.vteximg.com.br\/arquivos\/ids\/168952-55-55\/7508800GG.jpg\",\r\n \"DetailUrl\": \"\/tabela-de-basquete\/p\",\r\n \"CSCIdentification\": null,\r\n \"BrandId\": \"2000018\",\r\n \"BrandName\": \"MARCA ARGOLO TESTE\",\r\n \"Dimension\": {\r\n \"cubicweight\": 81.6833,\r\n \"height\": 65,\r\n \"length\": 58,\r\n \"weight\": 10000,\r\n \"width\": 130\r\n },\r\n \"RealDimension\": {\r\n \"realCubicWeight\": 274.1375,\r\n \"realHeight\": 241,\r\n \"realLength\": 65,\r\n \"realWeight\": 9800,\r\n \"realWidth\": 105\r\n },\r\n \"ManufacturerCode\": \"\",\r\n \"IsKit\": false,\r\n \"KitItems\": [],\r\n \"Services\": [],\r\n \"Categories\": [],\r\n \"Attachments\": [\r\n {\r\n \"Id\": 3,\r\n \"Name\": \"Mensagem\",\r\n \"Keys\": [\r\n \"nome;20\",\r\n \"foto;40\"\r\n ],\r\n \"Fields\": [\r\n {\r\n \"FieldName\": \"nome\",\r\n \"MaxCaracters\": \"20\",\r\n \"DomainValues\": \"Adalberto,Pedro,Jo\u00E3o\"\r\n },\r\n {\r\n \"FieldName\": \"foto\",\r\n \"MaxCaracters\": \"40\",\r\n \"DomainValues\": null\r\n }\r\n ],\r\n \"IsActive\": true,\r\n \"IsRequired\": false\r\n }\r\n ],\r\n \"Collections\": [],\r\n \"SkuSellers\": [\r\n {\r\n \"SellerId\": \"1\",\r\n \"StockKeepingUnitId\": 2001773,\r\n \"SellerStockKeepingUnitId\": \"2001773\",\r\n \"IsActive\": true,\r\n \"FreightCommissionPercentage\": 0,\r\n \"ProductCommissionPercentage\": 0\r\n }\r\n ],\r\n \"SalesChannels\": [\r\n 1,\r\n 2,\r\n 3,\r\n 10\r\n ],\r\n \"Images\": [\r\n {\r\n \"ImageUrl\": \"http:\/\/ambienteqa.vteximg.com.br\/arquivos\/ids\/168952\/7508800GG.jpg\",\r\n \"ImageName\": \"\",\r\n \"FileId\": 168952\r\n },\r\n {\r\n \"ImageUrl\": \"http:\/\/ambienteqa.vteximg.com.br\/arquivos\/ids\/168953\/7508800_1GG.jpg\",\r\n \"ImageName\": \"\",\r\n \"FileId\": 168953\r\n },\r\n {\r\n \"ImageUrl\": \"http:\/\/ambienteqa.vteximg.com.br\/arquivos\/ids\/168954\/7508800_2GG.jpg\",\r\n \"ImageName\": \"\",\r\n \"FileId\": 168954\r\n }\r\n ],\r\n \"SkuSpecifications\": [\r\n {\r\n \"FieldId\": 102,\r\n \"FieldName\": \"Cor\",\r\n \"FieldValueIds\": [\r\n 266\r\n ],\r\n \"FieldValues\": [\r\n \"Padr\u00E3o\"\r\n ]\r\n }\r\n ],\r\n \"ProductSpecifications\": [\r\n {\r\n \"FieldId\": 7,\r\n \"FieldName\": \"Faixa Et\u00E1ria\",\r\n \"FieldValueIds\": [\r\n 58,\r\n 56,\r\n 55,\r\n 52\r\n ],\r\n \"FieldValues\": [\r\n \"5 a 6 anos\",\r\n \"7 a 8 anos\",\r\n \"9 a 10 anos\",\r\n \"Acima de 10 anos\"\r\n ]\r\n },\r\n {\r\n \"FieldId\": 23,\r\n \"FieldName\": \"Fabricante\",\r\n \"FieldValueIds\": [],\r\n \"FieldValues\": [\r\n \"Xalingo\"\r\n ]\r\n }\r\n ],\r\n \"ProductClustersIds\": \"176,187,192,194,211,217,235,242\",\r\n \"ProductCategoryIds\": \"\/59\/\",\r\n \"ProductGlobalCategoryId\": null,\r\n \"ProductCategories\": {\r\n \"59\": \"Brinquedos\"\r\n },\r\n \"CommercialConditionId\": 1,\r\n \"RewardValue\": 100.0,\r\n \"AlternateIds\": {\r\n \"Ean\": \"8781\",\r\n \"RefId\": \"878181\"\r\n },\r\n \"AlternateIdValues\": [\r\n \"8781\",\r\n \"878181\"\r\n ],\r\n \"EstimatedDateArrival\": \"\",\r\n \"MeasurementUnit\": \"un\",\r\n \"UnitMultiplier\": 2.0000,\r\n \"InformationSource\": null,\r\n \"ModalType\": \"\"\r\n}\r\n```", + "operationId": "SkubyEAN", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "ean", + "in": "path", + "description": "EAN of the SKU which you need to retrieve details from.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + }, + "example": "1234567890123" + } + ], + "responses": { + "200": { + "description": "OK", + "headers": { + "Cache-Control": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "no-cache" + } + } + }, + "Connection": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "keep-alive" + } + } + }, + "Content-Encoding": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "gzip" + } + } + }, + "Content-Length": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "1035" + } + } + }, + "Date": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Thu, 16 Feb 2017 15:19:46 GMT" + } + } + }, + "Expires": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "-1" + } + } + }, + "Pragma": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "no-cache" + } + } + }, + "Server": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "nginx" + } + } + }, + "Vary": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Accept-Encoding" + } + } + }, + "X-CacheServer": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "janus-apicache-nginx10" + } + } + }, + "X-Powered-by-VTEX-Janus-ApiCache": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "v1.3.9" + } + } + }, + "X-Powered-by-VTEX-Janus-Edge": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "v1.35.3" + } + } + }, + "X-Track": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "stable" + } + } + }, + "X-VTEX-Cache-Status-Janus-ApiCache": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "MISS" + } + } + }, + "X-VTEX-Cache-Status-Janus-Edge": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "MISS" + } + } + }, + "X-VTEX-Janus-Router-Backend-App": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "prtapi-v1.4.683-stable+527" + } + } + }, + "no": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "-QTBJG9KGSVN" + } + } + }, + "p3p": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "policyref=\"/w3c/p3p.xml\",CP=\"ADMa OUR NOR CNT NID DSP NOI COR\"" + } + } + }, + "powered": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "vtex" + } + } + }, + "x-vtex-operation-id": { + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "4d81466f-3a82-4fd0-93f7-d11f64545365" + } + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetSKUAltID" + }, + "example": { + "Id": 2001773, + "ProductId": 2001426, + "NameComplete": "Tabela de Basquete", + "ProductName": "Tabela de Basquete", + "ProductDescription": "Tabela de Basquete", + "SkuName": "Tabela de Basquete", + "IsActive": true, + "IsTransported": true, + "IsInventoried": true, + "IsGiftCardRecharge": false, + "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168952-55-55/7508800GG.jpg", + "DetailUrl": "/tabela-de-basquete/p", + "CSCIdentification": null, + "BrandId": "2000018", + "BrandName": "MARCA ARGOLO TESTE", + "Dimension": { + "cubicweight": 81.6833, + "height": 65, + "length": 58, + "weight": 10000, + "width": 130 + }, + "RealDimension": { + "realCubicWeight": 274.1375, + "realHeight": 241, + "realLength": 65, + "realWeight": 9800, + "realWidth": 105 + }, + "ManufacturerCode": "", + "IsKit": false, + "KitItems": [], + "Services": [], + "Categories": [], + "Attachments": [ + { + "Id": 3, + "Name": "Mensagem", + "Keys": [ + "nome;20", + "foto;40" + ], + "Fields": [ + { + "FieldName": "nome", + "MaxCaracters": "20", + "DomainValues": "Adalberto,Pedro,João" + }, + { + "FieldName": "foto", + "MaxCaracters": "40", + "DomainValues": null + } + ], + "IsActive": true, + "IsRequired": false + } + ], + "Collections": [], + "SkuSellers": [ + { + "SellerId": "1", + "StockKeepingUnitId": 2001773, + "SellerStockKeepingUnitId": "2001773", + "IsActive": true, + "FreightCommissionPercentage": 0, + "ProductCommissionPercentage": 0 + } + ], + "SalesChannels": [ + 1, + 2, + 3, + 10 + ], + "Images": [ + { + "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168952/7508800GG.jpg", + "ImageName": "", + "FileId": 168952 + }, + { + "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168953/7508800_1GG.jpg", + "ImageName": "", + "FileId": 168953 + }, + { + "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168954/7508800_2GG.jpg", + "ImageName": "", + "FileId": 168954 + } + ], + "SkuSpecifications": [ + { + "FieldId": 102, + "FieldName": "Cor", + "FieldValueIds": [ + 266 + ], + "FieldValues": [ + "Padrão" + ] + } + ], + "ProductSpecifications": [ + { + "FieldId": 7, + "FieldName": "Faixa Etária", + "FieldValueIds": [ + 58, + 56, + 55, + 52 + ], + "FieldValues": [ + "5 a 6 anos", + "7 a 8 anos", + "9 a 10 anos", + "Acima de 10 anos" + ] + }, + { + "FieldId": 23, + "FieldName": "Fabricante", + "FieldValueIds": [], + "FieldValues": [ + "Xalingo" + ] + } + ], + "ProductClustersIds": "176,187,192,194,211,217,235,242", + "ProductCategoryIds": "/59/", + "ProductGlobalCategoryId": null, + "ProductCategories": { + "59": "Brinquedos" + }, + "CommercialConditionId": 1, + "RewardValue": 100.0, + "AlternateIds": { + "Ean": "8781", + "RefId": "878181" + }, + "AlternateIdValues": [ + "8781", + "878181" + ], + "EstimatedDateArrival": null, + "MeasurementUnit": "un", + "UnitMultiplier": 2.0000, + "InformationSource": null, + "ModalType": "" + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog/pvt/stockkeepingunit/{skuId}/ean": { + "get": { + "tags": [ + "SKU EAN" + ], + "summary": "Get EAN by SKU ID", + "description": "Retrieves the EAN of the SKU. \r\n## Response body example\r\n\r\n```json\r\n[\r\n \"1234567890123\"\r\n]\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "Array with EANs associated with the SKU.", + "items": { + "type": "string", + "description": "EAN.", + "example": "1234567890123" + } + }, + "example": [ + "1234567890123" + ] + } + } + } + } + }, + "delete": { + "tags": [ + "SKU EAN" + ], + "summary": "Delete all SKU EAN values", + "description": "Deletes all EAN values of an SKU.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/stockkeepingunit/{skuId}/ean/{ean}": { + "post": { + "tags": [ + "SKU EAN" + ], + "summary": "Create SKU EAN", + "description": "Creates or updates the EAN value of an SKU.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "ean", + "in": "path", + "required": true, + "description": "EAN.", + "schema": { + "type": "string", + "example": "1234567" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "delete": { + "tags": [ + "SKU EAN" + ], + "summary": "Delete SKU EAN", + "description": "Deletes the EAN value of an SKU.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "ean", + "in": "path", + "required": true, + "description": "EAN number.", + "schema": { + "type": "string", + "example": "ABC123" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/skuattachment": { + "post": { + "tags": [ + "SKU Attachment" + ], + "summary": "Associate SKU Attachment", + "description": "Associates an existing SKU to an existing Attachment. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"AttachmentId\": 1,\r\n \"SkuId\": 7\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 31,\r\n \"AttachmentId\": 1,\r\n \"SkuId\": 7\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "AttachmentId", + "SkuId" + ], + "properties": { + "AttachmentId": { + "type": "integer", + "description": "Attachment ID.", + "example": 1 + }, + "SkuId": { + "type": "integer", + "description": "Unique identifier of an SKU.", + "example": 1 + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Object containing information about the association between the SKU and the attachment.", + "properties": { + "Id": { + "type": "integer", + "description": "Identifier of the SKU's association to the attachment.", + "example": 31 + }, + "AttachmentId": { + "type": "integer", + "description": "Attachment ID.", + "example": 1 + }, + "SkuId": { + "type": "integer", + "description": "Unique identifier of the SKU.", + "example": 7 + } + } + }, + "example": { + "Id": 31, + "AttachmentId": 1, + "SkuId": 7 + } + } + } + } + } + }, + "delete": { + "tags": [ + "SKU Attachment" + ], + "summary": "Dissociate attachments and SKUs", + "description": "Dissociates attachments and SKUs based on an SKU ID or an attachment ID.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "query", + "description": "SKU ID. By using this query param, you can dissociate all the attachments from an SKU based on its SKU ID.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int32", + "example": 1 + } + }, + { + "name": "attachmentId", + "in": "query", + "description": "Attachment ID. By using this query param, you can dissociate the given attachment from all previously associated SKUs.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int32", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/stockkeepingunit/{skuId}/attachment": { + "get": { + "tags": [ + "SKU Attachment" + ], + "summary": "Get SKU Attachments by SKU ID", + "description": "Retrieves existing SKU Attachments by SKU ID. \r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Id\": 97,\r\n \"AttachmentId\": 1,\r\n \"SkuId\": 1\r\n }\r\n]\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU unique identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "Array of objects with information about the association between the attachments and the SKU.", + "items": { + "type": "object", + "description": "Object containing information about the association between the SKU and the attachment.", + "properties": { + "Id": { + "type": "integer", + "description": "Identifier of the SKU's association to the attachment.", + "example": 31 + }, + "AttachmentId": { + "type": "integer", + "description": "Attachment ID.", + "example": 1 + }, + "SkuId": { + "type": "integer", + "description": "Unique identifier of the SKU.", + "example": 7 + } + } + } + }, + "example": [ + { + "Id": 97, + "AttachmentId": 1, + "SkuId": 1 + } + ] + } + } + } + } + } + }, + "/api/catalog/pvt/skuattachment/{skuAttachmentAssociationId}": { + "delete": { + "tags": [ + "SKU Attachment" + ], + "summary": "Delete SKU Attachment by Attachment Association ID", + "description": "Deletes the association of an SKU to an Attachment.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuAttachmentAssociationId", + "in": "path", + "required": true, + "description": "ID of the association between the attachment and the SKU, which corresponds to the `Id` in the response body of the [Associate SKU Attachment](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-post-sku-attachment) and the [Get SKU Attachment by SKU ID](https://developers.vtex.com/vtex-rest-api/reference/get_api-catalog-pvt-stockkeepingunit-skuid-attachment) endpoints.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog_system/pvt/sku/associateattachments": { + "post": { + "tags": [ + "SKU Attachment" + ], + "summary": "Associate attachments to an SKU", + "description": "Associates attachments to an SKU based on a given SKU ID and attachment names.\n\rThis request removes existing SKU attachment associations and recreates the associations with the attachments being sent. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"SkuId\": 1,\r\n \"AttachmentNames\": [\r\n \"T-Shirt Customization\"\r\n ]\r\n}\r\n```", + "operationId": "AssociateattachmentstoSKU", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "required": [ + "SkuId", + "AttachmentNames" + ], + "type": "object", + "properties": { + "SkuId": { + "type": "integer", + "description": "Unique identifier of the SKU.", + "example": 1 + }, + "AttachmentNames": { + "type": "array", + "description": "Array with all the names of the attachments that you need to associate to the SKU.", + "items": { + "type": "string", + "description": "Attachment Name.", + "example": "T-Shirt Customization" + } + } + } + }, + "example": { + "SkuId": 1, + "AttachmentNames": [ + "T-Shirt Customization" + ] + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + } + }, + "deprecated": false + } + }, + "/api/catalog/pvt/stockkeepingunit/{skuId}/file": { + "get": { + "tags": [ + "SKU File" + ], + "summary": "Get SKU Files", + "description": "Gets general information about all Files in the SKU. \r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Id\": 549,\r\n \"ArchiveId\": 155485,\r\n \"SkuId\": 310118490,\r\n \"Name\": \"chimera-cat-quimera-5\",\r\n \"IsMain\": true,\r\n \"Label\": \"miau\"\r\n },\r\n {\r\n \"Id\": 550,\r\n \"ArchiveId\": 155486,\r\n \"SkuId\": 310118490,\r\n \"Name\": \"Gato-siames\",\r\n \"IsMain\": false,\r\n \"Label\": \"Gato siames\"\r\n },\r\n {\r\n \"Id\": 555,\r\n \"ArchiveId\": 155491,\r\n \"SkuId\": 310118490,\r\n \"Name\": \"Cat-Sleeping-Pics\",\r\n \"IsMain\": false,\r\n \"Label\": null\r\n }\r\n]\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "Array with objects containing SKU Files information.", + "items": { + "type": "object", + "description": "Object containing each SKU File's information.", + "properties": { + "Id": { + "type": "integer", + "description": "Unique identifier of the association of the Image to the SKU.", + "example": 1 + }, + "ArchiveId": { + "type": "integer", + "description": "Unique identifier of the Image.", + "example": 1 + }, + "SkuId": { + "type": "integer", + "description": "Unique identifier of the SKU.", + "example": 1 + }, + "Name": { + "type": "string", + "description": "Image name.", + "example": "cat-picture" + }, + "IsMain": { + "type": "boolean", + "description": "Defines if the Image is the Main Image of the SKU.", + "example": true + }, + "Label": { + "type": "string", + "description": "Image label.", + "example": "cat", + "nullable": true + } + } + }, + "example": [ + { + "Id": 549, + "ArchiveId": 155485, + "SkuId": 310118490, + "Name": "chimera-cat-quimera-5", + "IsMain": true, + "Label": "miau" + }, + { + "Id": 550, + "ArchiveId": 155486, + "SkuId": 310118490, + "Name": "Gato-siames", + "IsMain": false, + "Label": "Gato siames" + }, + { + "Id": 555, + "ArchiveId": 155491, + "SkuId": 310118490, + "Name": "Cat-Sleeping-Pics", + "IsMain": false, + "Label": null + } + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "SKU File" + ], + "summary": "Create SKU File", + "description": "Creates a new Image for an SKU based on its URL or on a form-data request body. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"IsMain\": true,\r\n \"Label\": \"\",\r\n \"Name\": \"Royal-Canin-Feline-Urinary-SO\",\r\n \"Text\": null,\r\n \"Url\": \"https:\/\/1.bp.blogspot.com\/_SLQk9aAv9-o\/S7NNbJPv7NI\/AAAAAAAAAN8\/V1LcO0ViDc4\/s1600\/waterbottle.jpg\"\r\n \r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 503,\r\n \"ArchiveId\": 155491,\r\n \"SkuId\": 1,\r\n \"Name\": \"Royal-Canin-Feline-Urinary-SO\",\r\n \"IsMain\": true,\r\n \"Label\": \"\"\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 123456 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUFileURL" + } + }, + "form-data": { + "schema": { + "$ref": "#/components/schemas/SKUFile" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 625, + "ArchiveId": 155569, + "SkuId": 123456, + "IsMain": true, + "Label": "Main" + }, + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "ID of the association of the SKU and the image (`SkuFileId`). This is the ID that is used to update or delete it." + }, + "ArchiveId": { + "type": "integer", + "description": "Unique identifier of the image file." + }, + "SkuId": { + "type": "integer", + "description": "SKU ID." + }, + "IsMain": { + "type": "boolean", + "description": "Set the image as the main image for the product." + }, + "Label": { + "type": "string", + "description": "Image label." + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "SKU File" + ], + "summary": "Delete All SKU Files", + "description": "Deletes all SKU Image Files.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/stockkeepingunit/{skuId}/file/{skuFileId}": { + "put": { + "tags": [ + "SKU File" + ], + "summary": "Update SKU File", + "description": "Updates a new Image on an SKU based on its URL or on a form-data request body. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"IsMain\": true,\r\n \"Label\": null,\r\n \"Name\": \"toilet-paper\",\r\n \"Text\": null,\r\n \"Url\": \"https:\/\/images-na.ssl-images-amazon.com\/images\/I\/81DLLXaGI7L._SL1500_.jpg\"\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 508,\r\n \"ArchiveId\": 155491,\r\n \"SkuId\": 7,\r\n \"IsMain\": true,\r\n \"Label\": null\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 123456 + } + }, + { + "name": "skuFileId", + "in": "path", + "required": true, + "description": "ID of the association of the SKU and the image, which can be obtained by placing a request to the [Get SKU File](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-sku-file) endpoint and copying the `Id` field.", + "schema": { + "type": "integer", + "example": 517 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUFileURL" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 625, + "ArchiveId": 155569, + "SkuId": 123456, + "IsMain": true, + "Label": "Main" + }, + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "ID of the association of the SKU and the image (`SkuFileId`). This is the ID that is used to update or delete it." + }, + "ArchiveId": { + "type": "integer", + "description": "Unique identifier of the image file." + }, + "SkuId": { + "type": "integer", + "description": "SKU ID." + }, + "IsMain": { + "type": "boolean", + "description": "Set the image as the main image for the product." + }, + "Label": { + "type": "string", + "description": "Image label." + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "SKU File" + ], + "summary": "Delete SKU Image File", + "description": "Deletes a specific SKU Image File.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "skuFileId", + "in": "path", + "required": true, + "description": "ID of the association of the SKU and the image, which can be obtained by placing a request to the [Get SKU File](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-sku-file) endpoint and copying the `Id` field.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/stockkeepingunit/copy/{skuIdfrom}/{skuIdto}/file/": { + "put": { + "tags": [ + "SKU File" + ], + "summary": "Copy Files from an SKU to another SKU", + "description": "Copy all existing files from an SKU to another SKU. \r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Id\": 1964,\r\n \"ArchiveId\": 155404,\r\n \"SkuId\": 1,\r\n \"IsMain\": true,\r\n \"Label\": \"\"\r\n },\r\n {\r\n \"Id\": 1965,\r\n \"ArchiveId\": 155429,\r\n \"SkuId\": 1,\r\n \"IsMain\": false,\r\n \"Label\": \"\"\r\n }\r\n]\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuIdfrom", + "in": "path", + "required": true, + "description": "__Origin__ SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "skuIdto", + "in": "path", + "required": true, + "description": "__Target__ SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 2 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "Array with objects containing information about each of the target SKU's Files.", + "items": { + "type": "object", + "description": "Object containing each SKU File's information.", + "properties": { + "Id": { + "type": "integer", + "description": "Unique identifier of the association of the Image to the SKU.", + "example": 1 + }, + "ArchiveId": { + "type": "integer", + "description": "Unique identifier of the image file.", + "example": 155404 + }, + "SkuId": { + "type": "integer", + "description": "Unique identifier of the SKU.", + "example": 1 + }, + "IsMain": { + "type": "boolean", + "description": "Defines if the Image is the Main Image of the SKU.", + "example": true + }, + "Label": { + "type": "string", + "description": "Image label.", + "example": "cat", + "nullable": true + } + } + }, + "example": [ + { + "Id": 1964, + "ArchiveId": 155404, + "SkuId": 1, + "IsMain": true, + "Label": "" + }, + { + "Id": 1965, + "ArchiveId": 155429, + "SkuId": 1, + "IsMain": false, + "Label": "" + } + ] + } + } + } + } + } + } + }, + "/api/catalog/pvt/stockkeepingunit/disassociate/{skuId}/file/{skuFileId}": { + "delete": { + "tags": [ + "SKU File" + ], + "summary": "Disassociate SKU File", + "description": "Disassociates an SKU File from an SKU.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "skuFileId", + "in": "path", + "required": true, + "description": "ID of the association of the SKU and the image, which can be obtained by placing a request to the [Get SKU File](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-sku-file) endpoint and copying the `Id` field.", + "schema": { + "type": "integer", + "example": 32 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/stockkeepingunitkit": { + "get": { + "tags": [ + "SKU Kit" + ], + "summary": "Get SKU Kit by SKU ID or Parent SKU ID", + "description": "Retrieves general information about the components of an SKU Kit by SKU ID or Parent SKU ID. \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 7,\r\n \"StockKeepingUnitParent\": 7,\r\n \"StockKeepingUnitId\": 1,\r\n \"Quantity\": 1,\r\n \"UnitPrice\": 50.0000\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "query", + "description": "SKU’s unique numerical identifier.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int32", + "example": 1 + } + }, + { + "name": "parentSkuId", + "in": "query", + "description": "Parent SKU’s unique numerical identifier.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int32", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkuKit" + }, + "example": { + "Id": 7, + "StockKeepingUnitParent": 7, + "StockKeepingUnitId": 1, + "Quantity": 1, + "UnitPrice": 50.0000 + } + } + } + } + } + }, + "post": { + "tags": [ + "SKU Kit" + ], + "summary": "Create SKU Kit", + "description": "Adds a component to a specific Kit. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"StockKeepingUnitParent\": 7,\r\n \"StockKeepingUnitId\": 1,\r\n \"Quantity\": 1,\r\n \"UnitPrice\": 50.0000\r\n}\r\n``` \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 7,\r\n \"StockKeepingUnitParent\": 7,\r\n \"StockKeepingUnitId\": 1,\r\n \"Quantity\": 1,\r\n \"UnitPrice\": 50.0000\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "StockKeepingUnitParent", + "StockKeepingUnitId", + "Quantity", + "UnitPrice" + ], + "properties": { + "StockKeepingUnitParent": { + "type": "integer", + "description": "SKU ID of the SKU Kit.", + "example": 31018373 + }, + "StockKeepingUnitId": { + "type": "integer", + "description": "Component SKU ID.", + "example": 31018374 + }, + "Quantity": { + "type": "integer", + "description": "Component quantity.", + "example": 3 + }, + "UnitPrice": { + "type": "number", + "description": "Component price per unit.", + "example": 15.5 + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkuKit" + }, + "example": { + "Id": 7, + "StockKeepingUnitParent": 7, + "StockKeepingUnitId": 1, + "Quantity": 1, + "UnitPrice": 50.0000 + } + } + } + } + } + }, + "delete": { + "tags": [ + "SKU Kit" + ], + "summary": "Delete SKU Kit by SKU ID or Parent SKU ID", + "description": "Deletes all Kit’s components based on the Parent SKU ID or deletes a specific Kit’s component based on the SKU ID.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "query", + "description": "SKU’s unique numerical identifier.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int32", + "example": 1 + } + }, + { + "name": "parentSkuId", + "in": "query", + "description": "Parent SKU’s unique numerical identifier.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int32", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/stockkeepingunitkit/{kitId}": { + "get": { + "tags": [ + "SKU Kit" + ], + "summary": "Get SKU Kit", + "description": "Retrieves general information about a component of a Kit.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "kitId", + "in": "path", + "required": true, + "description": "Kit’s unique numerical identifier", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SkuKit" + }, + "example": { + "Id": 7, + "StockKeepingUnitParent": 7, + "StockKeepingUnitId": 1, + "Quantity": 1, + "UnitPrice": 50.0000 + } + } + } + } + } + }, + "delete": { + "tags": [ + "SKU Kit" + ], + "summary": "Delete SKU Kit by KitId", + "description": "Deletes a specific Kit’s component based on its Kit ID.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "kitId", + "in": "path", + "required": true, + "description": "Kit’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog_system/pvt/skuseller/{sellerId}/{sellerSkuId}": { + "get": { + "tags": [ + "SKU Seller" + ], + "summary": "Get details of a seller's SKU", + "description": " > ⚠️ Check out the updated version of the SKU Seller endpoints in our [SKU Bindings API documentation](https://developers.vtex.com/vtex-rest-api/reference/getbyskuid). If you are doing this integration for the first time, we recommend that you follow the updated documentation.\n\nRetrieves the details of a seller's SKU given a seller ID and the SKU ID in the seller's store. \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"IsPersisted\": true,\r\n \"IsRemoved\": false,\r\n \"SkuSellerId\": 799,\r\n \"SellerId\": \"myseller\",\r\n \"StockKeepingUnitId\": 50,\r\n \"SellerStockKeepingUnitId\": \"502\",\r\n \"IsActive\": true,\r\n \"UpdateDate\": \"2018-10-11T04:52:42.1\",\r\n \"RequestedUpdateDate\": null\r\n}\r\n```", + "operationId": "GetSKUseller", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "sellerId", + "in": "path", + "description": "ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "101" + } + }, + { + "name": "sellerSkuId", + "in": "path", + "description": "SKU ID in the seller's store.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "1" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "IsPersisted", + "IsRemoved", + "SkuSellerId", + "SellerId", + "StockKeepingUnitId", + "SellerStockKeepingUnitId", + "IsActive", + "UpdateDate", + "RequestedUpdateDate" + ], + "properties": { + "IsPersisted": { + "type": "boolean", + "description": "Defines if the seller is persisted." + }, + "IsRemoved": { + "type": "boolean", + "description": "Defines if the seller is removed." + }, + "SkuSellerId": { + "type": "integer", + "format": "int32", + "description": "SKU ID in the seller's store." + }, + "SellerId": { + "type": "string", + "description": "ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID." + }, + "StockKeepingUnitId": { + "type": "integer", + "format": "int32", + "description": "SKU ID in the VTEX marketplace." + }, + "SellerStockKeepingUnitId": { + "type": "string", + "description": "SKU seller ID." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the SKU binding is active." + }, + "UpdateDate": { + "type": "string", + "description": "Date when the SKU binding was updated for the last time, in UTC format." + }, + "RequestedUpdateDate": { + "type": "string", + "description": "Date when an SKU binding update was requested for the last time, in UTC format.", + "nullable": true + } + }, + "example": { + "IsPersisted": true, + "IsRemoved": false, + "SkuSellerId": 799, + "SellerId": "myseller", + "StockKeepingUnitId": 50, + "SellerStockKeepingUnitId": "502", + "IsActive": true, + "UpdateDate": "2018-10-11T04:52:42.1", + "RequestedUpdateDate": null + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/skuseller/remove/{sellerId}/{sellerSkuId}": { + "post": { + "tags": [ + "SKU Seller" + ], + "summary": "Remove a seller's SKU binding", + "description": " > ⚠️ Check out the updated version of the SKU Seller endpoints in our [SKU Bindings API documentation](https://developers.vtex.com/vtex-rest-api/reference/getbyskuid). If you are doing this integration for the first time, we recommend that you follow the updated documentation.\n\nRemove a seller's SKU binding, given the seller ID and the SKU ID in the seller's store.", + "operationId": "DeleteSKUsellerassociation", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "sellerId", + "in": "path", + "description": "ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "101" + } + }, + { + "name": "sellerSkuId", + "in": "path", + "description": "SKU ID in the seller's store.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "1" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/skuseller/changenotification/{sellerId}/{sellerSkuId}": { + "post": { + "tags": [ + "SKU Seller" + ], + "summary": "Change Notification with Seller ID and Seller SKU ID", + "description": " > ⚠️ Check out the updated version of the SKU Seller endpoints in our [SKU Bindings API documentation](https://developers.vtex.com/vtex-rest-api/reference/getbyskuid). If you are doing this integration for the first time, we recommend that you follow the updated documentation.\n\nThe seller is responsible for suggesting new SKUs to be sold in the VTEX marketplace and also for informing the marketplace about changes in their SKUs that already exist in the marketplace. Both actions start with a catalog notification, which is made by this request.\n\nWith this notification, the seller is telling the marketplace that something has changed about a specific SKU, like price or inventory, or that this is a new SKU that the seller would like to offer to the marketplace.\n\nThere are two information expected by the marketplace in this request: the `sellerId`, which identifies the seller, and the `sellerSkuId`, which identifies the binding of the seller with the SKU.\n\nBoth information are passed through the request URL. The body of the request should be empty.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "sellerId", + "in": "path", + "description": "ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "101" + } + }, + { + "name": "sellerSkuId", + "in": "path", + "description": "ID of the binding of the seller with the SKU.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "1" + } + } + ], + "responses": { + "204": { + "description": "No Content" + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/skuseller/changenotification/{skuId}": { + "post": { + "tags": [ + "SKU Seller" + ], + "summary": "Change Notification with SKU ID", + "description": " > ⚠️ Check out the updated version of the SKU Seller endpoints in our [SKU Bindings API documentation](https://developers.vtex.com/vtex-rest-api/reference/getbyskuid). If you are doing this integration for the first time, we recommend that you follow the updated documentation.\r\n\r\nThe seller is responsible for suggesting new SKUs to be sold in the VTEX marketplace and also for informing the marketplace about changes in their SKUs that already exist in the marketplace. Both actions start with a catalog notification, which is made by this request.\r\n\r\nWith this notification, the seller is telling the marketplace that something has changed about a specific SKU, like its name or description, or that this is a new SKU that the seller would like to offer to the marketplace. The body of the request should be empty.\r\n\r\n > ⚠️ Do not use this endpoint for price and inventory changes, because these types of updates should be notified using Marketplace API. For price changes, we recommend using the [Notify marketplace of price update](https://developers.vtex.com/docs/api-reference/marketplace-apis#post-/notificator/-sellerId-/changenotification/-skuId-/price) endpoint. For inventory changes, use [Notify marketplace of inventory update](https://developers.vtex.com/docs/api-reference/marketplace-apis#post-/notificator/-sellerId-/changenotification/-skuId-/inventory).\r\n\r\n## Example\r\n\r\nLet's say your seller has the ID `123` in the marketplace and you want to inform the marketplace that has been a change in the SKU with ID `700`.\r\n\r\nIn this case, you would have to replace the `sellerId` parameter with the value `123` and the `skuId` parameter with the value `700`. The URL of the request would be the following.\r\n\r\n```\r\nhttps://{{accountName}}.vtexcommercestable.com.br/api/catalog_system/pvt/skuseller/changenotification/123/700\r\n```\r\n\r\n## Response codes\r\n\r\nThe following response codes are possible for this request.\r\n\r\n* **404:** the SKU was not found in the marketplace. The body of the response, in this case, should follow this format: \"Seller StockKeepingUnit `{{skuId}}` not found for this seller id `{{sellerId}}`\". This means that the seller can now proceed with sending an offer to the marketplace in order to suggest that this SKU is sold there.\r\n* **200:** the SKU whose ID was informed in the URL already exists in the marketplace and was found. The marketplace can now proceed with a fulfillment simulation in order to get updated information about this SKU's inventory and price.\r\n* **429:** Failure due to too many requests.\r\n* **403:** Failure in the authentication.", + "operationId": "ChangeNotification", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "description": "A string that identifies the SKU in the marketplace. This is the ID that the marketplace will use to look for the SKU whose change the seller wants to inform. If the marketplace finds this ID, it responds with status code 200. Otherwise, it responds with status code 404.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "10" + } + } + ], + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not found", + "content": { + "text/plain": { + "schema": { + "type": "string" + }, + "example": "Seller StockKeepingUnit `{{skuId}}` not found for this seller id `{{sellerId}}`" + } + } + }, + "429": { + "description": "Too many requests" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false + } + }, + "/api/catalog/pvt/skuservice/{skuServiceId}": { + "get": { + "tags": [ + "SKU Service" + ], + "summary": "Get SKU Service", + "description": "Retrieves an SKU Service. \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 1,\r\n \"SkuServiceTypeId\": 1,\r\n \"SkuServiceValueId\": 1,\r\n \"SkuId\": 1,\r\n \"Name\": \"name\",\r\n \"Text\": \"text\",\r\n \"IsActive\": false\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuServiceId", + "in": "path", + "required": true, + "description": "SKU Service unique identifier.", + "schema": { + "type": "integer", + "example": 5 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUService" + } + } + } + } + } + }, + "put": { + "tags": [ + "SKU Service" + ], + "summary": "Update SKU Service", + "description": "Updates an SKU Service. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"Name\": \"name\",\r\n \"Text\": \"text\",\r\n \"IsActive\": false\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 1,\r\n \"SkuServiceTypeId\": 1,\r\n \"SkuServiceValueId\": 1,\r\n \"SkuId\": 1,\r\n \"Name\": \"name\",\r\n \"Text\": \"text\",\r\n \"IsActive\": false\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuServiceId", + "in": "path", + "required": true, + "description": "SKU Service unique identifier.", + "schema": { + "type": "integer", + "example": 5 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "SkuServiceTypeId", + "SkuServiceValueId", + "SkuId", + "Name", + "Text", + "IsActive" + ], + "properties": { + "SkuServiceTypeId": { + "type": "integer", + "description": "SKU Service Type ID.", + "example": 2 + }, + "SkuServiceValueId": { + "type": "integer", + "description": "SKU Service Value ID.", + "example": 1 + }, + "SkuId": { + "type": "integer", + "description": "SKU ID.", + "example": 1 + }, + "Name": { + "type": "string", + "description": "SKU Service Name. Maximum of 50 characters.", + "example": "Test name" + }, + "Text": { + "type": "string", + "description": "Internal description for the SKU Service. Maximum of 100 characters.", + "example": "Text" + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the SKU Service is active or not.", + "example": true + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUService" + } + } + } + } + } + }, + "delete": { + "tags": [ + "SKU Service" + ], + "summary": "Dissociate SKU Service", + "description": "Dissociates an SKU Service from an SKU.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuServiceId", + "in": "path", + "required": true, + "description": "SKU Service unique identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/skuservice": { + "post": { + "tags": [ + "SKU Service" + ], + "summary": "Associate SKU Service", + "description": "Associates an SKU Service to an SKU.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "SkuServiceTypeId", + "SkuServiceValueId", + "SkuId", + "Name", + "Text", + "IsActive" + ], + "properties": { + "SkuServiceTypeId": { + "type": "integer", + "description": "SKU Service Type ID.", + "example": 1 + }, + "SkuServiceValueId": { + "type": "integer", + "description": "SKU Service Value ID.", + "example": 1 + }, + "SkuId": { + "type": "integer", + "description": "SKU ID.", + "example": 1 + }, + "Name": { + "type": "string", + "description": "SKU Service Name. Maximum of 50 characters.", + "example": "Engraving" + }, + "Text": { + "type": "string", + "description": "Internal description of the SKU Service. Maximum of 100 characters.", + "example": "Name engraving additional service." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the SKU Service is active or not.", + "example": true + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUService" + } + } + } + } + } + } + }, + "/api/catalog/pvt/skuservicetypeattachment": { + "post": { + "tags": [ + "SKU Service Attachment" + ], + "summary": "Associate SKU Service Attachment", + "description": "Associates an Attachment for an existing SKU Service Type. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"AttachmentId\": 1,\r\n \"SkuServiceTypeId\": 1\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 1,\r\n \"AttachmentId\": 1,\r\n \"SkuServiceTypeId\": 1\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "AttachmentId", + "SkuServiceTypeId" + ], + "properties": { + "AttachmentId": { + "type": "integer", + "description": "Attachment ID.", + "example": 1 + }, + "SkuServiceTypeId": { + "type": "integer", + "description": "An explanation about the purpose of this instance.", + "example": 1 + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "SKU Service Type Attachment association ID.", + "example": 1 + }, + "AttachmentId": { + "type": "integer", + "description": "Attachment ID.", + "example": 1 + }, + "SkuServiceTypeId": { + "type": "integer", + "description": "SKU Service Type ID.", + "example": 1 + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "SKU Service Attachment" + ], + "summary": "Dissociate Attachment by Attachment ID or SKU Service Type ID", + "description": "Dissociates an Attachment by its Attachment ID or SKU Service Type ID from an SKU Service Type.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "attachmentId", + "in": "query", + "required": false, + "description": "SKU Service Attachment unique identifier.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "skuServiceTypeId", + "in": "query", + "required": false, + "description": "SKU Service Type unique identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/skuservicetypeattachment/{skuServiceTypeAttachmentId}": { + "delete": { + "tags": [ + "SKU Service Attachment" + ], + "summary": "Dissociate Attachment from SKU Service Type", + "description": "Dissociates an Attachment from an SKU Service Type", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuServiceTypeAttachmentId", + "in": "path", + "required": true, + "description": "SKU Service Attachment unique identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/skuservicetype": { + "post": { + "tags": [ + "SKU Service Type" + ], + "summary": "Create SKU Service Type", + "description": "Creates a new SKU Service Type. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"Name\": \"Test API Sku Services\",\r\n \"IsActive\": true,\r\n \"ShowOnProductFront\": true,\r\n \"ShowOnCartFront\": true,\r\n \"ShowOnAttachmentFront\": true,\r\n \"ShowOnFileUpload\": true,\r\n \"IsGiftCard\": true,\r\n \"IsRequired\": true\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 2,\r\n \"Name\": \"Teste API Sku Services\",\r\n \"IsActive\": true,\r\n \"ShowOnProductFront\": true,\r\n \"ShowOnCartFront\": true,\r\n \"ShowOnAttachmentFront\": true,\r\n \"ShowOnFileUpload\": true,\r\n \"IsGiftCard\": true,\r\n \"IsRequired\": true\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUServiceTypeRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUServiceTypeResponse" + } + } + } + } + } + } + }, + "/api/catalog/pvt/skuservicetype/{skuServiceTypeId}": { + "get": { + "tags": [ + "SKU Service Type" + ], + "summary": "Get SKU Service Type", + "description": "Retrieves information about an existing SKU Service Type. \r\n## Response body example:\r\n\r\n```json\r\n{\r\n \"Id\": 2,\r\n \"Name\": \"Test API SKU Services\",\r\n \"IsActive\": true,\r\n \"ShowOnProductFront\": true,\r\n \"ShowOnCartFront\": true,\r\n \"ShowOnAttachmentFront\": true,\r\n \"ShowOnFileUpload\": true,\r\n \"IsGiftCard\": true,\r\n \"IsRequired\": true\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuServiceTypeId", + "in": "path", + "required": true, + "description": "SKU Service Type unique identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUServiceTypeResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "SKU Service Type" + ], + "summary": "Update SKU Service Type", + "description": "Updates an existing SKU Service Type. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"Name\": \"Test API Sku Services\",\r\n \"IsActive\": true,\r\n \"ShowOnProductFront\": true,\r\n \"ShowOnCartFront\": true,\r\n \"ShowOnAttachmentFront\": true,\r\n \"ShowOnFileUpload\": true,\r\n \"IsGiftCard\": true,\r\n \"IsRequired\": true\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 2,\r\n \"Name\": \"Teste API Sku Services\",\r\n \"IsActive\": true,\r\n \"ShowOnProductFront\": true,\r\n \"ShowOnCartFront\": true,\r\n \"ShowOnAttachmentFront\": true,\r\n \"ShowOnFileUpload\": true,\r\n \"IsGiftCard\": true,\r\n \"IsRequired\": true\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuServiceTypeId", + "in": "path", + "required": true, + "description": "SKU Service Type unique identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUServiceTypeRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUServiceTypeResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "SKU Service Type" + ], + "summary": "Delete SKU Service Type", + "description": "Deletes an existing SKU Service Type.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuServiceTypeId", + "in": "path", + "required": true, + "description": "SKU Service Type unique identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/skuservicevalue": { + "post": { + "tags": [ + "SKU Service Value" + ], + "summary": "Create SKU Service Value", + "description": "Creates an SKU Service Value for an existing SKU Service Type. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"SkuServiceTypeId\": 2,\r\n \"Name\": \"Test ServiceValue API\",\r\n \"Value\": 10.5,\r\n \"Cost\": 10.5\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 2,\r\n \"SkuServiceTypeId\": 2,\r\n \"Name\": \"Test ServiceValue API\",\r\n \"Value\": 10.5,\r\n \"Cost\": 10.5\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUServiceValueRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUServiceValueResponse" + } + } + } + } + } + } + }, + "/api/catalog/pvt/skuservicevalue/{skuServiceValueId}": { + "get": { + "tags": [ + "SKU Service Value" + ], + "summary": "Get SKU Service Value", + "description": "Retrieves an existing SKU Service Value. \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 2,\r\n \"SkuServiceTypeId\": 2,\r\n \"Name\": \"Test ServiceValue API\",\r\n \"Value\": 10.5,\r\n \"Cost\": 10.5\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuServiceValueId", + "in": "path", + "required": true, + "description": "SKU Service Value unique identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUServiceValueResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "SKU Service Value" + ], + "summary": "Update SKU Service Value", + "description": "Updates an existing SKU Service Value. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"SkuServiceTypeId\": 2,\r\n \"Name\": \"Test ServiceValue API\",\r\n \"Value\": 10.5,\r\n \"Cost\": 10.5\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 2,\r\n \"SkuServiceTypeId\": 2,\r\n \"Name\": \"Test ServiceValue API\",\r\n \"Value\": 10.5,\r\n \"Cost\": 10.5\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuServiceValueId", + "in": "path", + "required": true, + "description": "SKU Service Value unique identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUServiceValueRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUServiceValueResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "SKU Service Value" + ], + "summary": "Delete SKU Service Value", + "description": "Deletes an existing SKU Service Value.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuServiceValueId", + "in": "path", + "required": true, + "description": "SKU Service Value unique identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/stockkeepingunit/{skuId}/specification": { + "get": { + "tags": [ + "SKU Specification" + ], + "summary": "Get SKU Specifications", + "description": "Retrieves information about an SKU's Specifications. \r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Id\": 427,\r\n \"SkuId\": 7,\r\n \"FieldId\": 32,\r\n \"FieldValueId\": 131,\r\n \"Text\": \"500g\"\r\n },\r\n {\r\n \"Id\": 428,\r\n \"SkuId\": 7,\r\n \"FieldId\": 40,\r\n \"FieldValueId\": 133,\r\n \"Text\": \"A\"\r\n }\r\n]\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SKUSpecificationResponse" + } + } + } + } + } + } + }, + "post": { + "tags": [ + "SKU Specification" + ], + "summary": "Associate SKU Specification", + "description": "Associates a previously created Specification to an SKU. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"FieldId\": 65,\r\n \"FieldValueId\": 138\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 730,\r\n \"SkuId\": 31,\r\n \"FieldId\": 65,\r\n \"FieldValueId\": 138,\r\n \"Text\": \"Size\"\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1234568387 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "FieldId" + ], + "properties": { + "FieldId": { + "type": "integer", + "description": "Specification field ID.", + "example": 13 + }, + "FieldValueId": { + "type": "integer", + "description": "Specification Value ID. Required only for `FieldTypeId` as `5`, `6` and `7`.", + "example": 101 + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SKUSpecificationResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "SKU Specification" + ], + "summary": "Update SKU Specification", + "description": "Updates an existing Specification on an existing SKU. This endpoint only updates the `FieldValueId`. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"Id\": 65,\r\n \"SkuId\": 21,\r\n \"FieldId\": 32,\r\n \"FieldValueId\": 131,\r\n \"Text\": \"Red\"\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 65,\r\n \"SkuId\": 21,\r\n \"FieldId\": 32,\r\n \"FieldValueId\": 131,\r\n \"Text\": \"Red\"\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 21 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "Id", + "FieldId", + "FieldValueId" + ], + "properties": { + "Id": { + "type": "integer", + "description": "Specification and SKU association unique identifier. This field cannot be updated.", + "example": 65 + }, + "SkuId": { + "type": "integer", + "description": "SKU unique identifier. This field cannot be updated.", + "example": 21 + }, + "FieldId": { + "type": "integer", + "description": "Specification field unique identifier. This field cannot be updated.", + "example": 32 + }, + "FieldValueId": { + "type": "integer", + "description": "Specification value unique identifier. This field can only be updated with other values of the same `FieldId`.", + "example": 131 + }, + "Text": { + "type": "string", + "description": "Specification Value Name. This field is automatically updated if the `FieldValue` is updated. Otherwise, the value cannot be modified.", + "example": "Red" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SKUSpecificationResponse" + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "SKU Specification" + ], + "summary": "Delete all SKU Specifications", + "description": "Deletes all SKU Specifications.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/stockkeepingunit/{skuId}/specification/{specificationId}": { + "delete": { + "tags": [ + "SKU Specification" + ], + "summary": "Delete SKU Specification", + "description": "Deletes a specific SKU Specification.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "specificationId", + "in": "path", + "required": true, + "description": "Specification’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/stockkeepingunit/{skuId}/specificationvalue": { + "put": { + "tags": [ + "SKU Specification" + ], + "summary": "Associate SKU specification using specification name and group name", + "description": "Associates a specification to an SKU using specification name and group name. Automatically creates the informed group, specification and values if they had not been created before.\r\n\r\n ## Request body example\r\n\r\n```json\r\n{\r\n \"FieldName\": \"Size\",\r\n \"GroupName\": \"Sizes\",\r\n \"RootLevelSpecification\": false,\r\n \"FieldValues\": [\r\n \"M\"\r\n ]\r\n}\r\n```\r\n \r\n \r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Id\": 419,\r\n \"SkuId\": 5,\r\n \"FieldId\": 22,\r\n \"FieldValueId\": 62,\r\n \"Text\": \"M\"\r\n }\r\n]\r\n```\r\n", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "example": [ + { + "Id": 418, + "SkuId": 5, + "FieldId": 29, + "FieldValueId": 76, + "Text": "M" + } + ], + "type": "array", + "description": "Array with information of all SKU specifications.", + "items": { + "type": "object", + "description": "Object with information of the specification.", + "properties": { + "Id": { + "type": "integer", + "description": "ID of the association of the SKU and the specification." + }, + "SkuId": { + "type": "integer", + "description": "SKU ID." + }, + "FieldId": { + "type": "integer", + "description": "Specification field ID." + }, + "FieldValueId": { + "type": "integer", + "description": "Current specification value ID." + }, + "Text": { + "type": "string", + "description": "Current specification value text." + } + } + } + } + } + } + } + }, + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "", + "example": { + "FieldName": "Size", + "GroupName": "Sizes", + "RootLevelSpecification": true, + "FieldValues": [ + "M" + ] + }, + "required": [ + "FieldName", + "GroupName", + "RootLevelSpecification", + "FieldValues" + ], + "properties": { + "FieldName": { + "type": "string", + "description": "Specification name. Limited to 100 characters.", + "example": "Material" + }, + "GroupName": { + "type": "string", + "description": "Group name.", + "example": "Composition" + }, + "RootLevelSpecification": { + "type": "boolean", + "description": "Root level specification.", + "example": true + }, + "FieldValues": { + "type": "array", + "description": "Array of specification values. SKU Specifications must contain only one value.", + "example": [ + "M" + ], + "items": { + "type": "string", + "description": "Specification value.", + "example": "M" + } + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/subcollection/{subCollectionId}/stockkeepingunit": { + "post": { + "tags": [ + "Legacy Subcollection" + ], + "summary": "Add SKU to Subcollection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nAssociates a single SKU to a Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection.\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"SkuId\": 1\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"SubCollectionId\": 17,\r\n \"SkuId\": 1\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "subCollectionId", + "in": "path", + "required": true, + "description": "Subcollection’s unique numerical identifier, which can be obtained by placing a request to [Get Subcollection by Collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid).", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "SkuId" + ], + "properties": { + "SkuId": { + "type": "integer", + "description": "Unique identifier of an SKU.", + "example": 1 + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "SubCollectionId": { + "type": "integer", + "description": "Subcollection’s unique numerical identifier.", + "example": 17 + }, + "SkuId": { + "type": "integer", + "description": "Unique identifier of the SKU.", + "example": 1 + } + }, + "example": { + "SubCollectionId": 17, + "SkuId": 1 + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/subcollection/{subCollectionId}/stockkeepingunit/{skuId}": { + "delete": { + "tags": [ + "Legacy Subcollection" + ], + "summary": "Delete SKU from Subcollection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nDeletes an SKU from a Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "subCollectionId", + "in": "path", + "required": true, + "description": "Subcollection’s unique numerical identifier, which can be obtained by placing a request to [Get Subcollection by Collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid).", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "skuId", + "in": "path", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog_system/pub/category/tree/{categoryLevels}": { + "get": { + "tags": [ + "Category" + ], + "summary": "Get Category Tree", + "description": "Retrieves the Category Tree of your store. Get all the category levels registered in the Catalog or define the level up to which you want to get. \r\n> 📘 Onboarding guide \r\n>\r\n> Check the new [Catalog onboarding guide](https://developers.vtex.com/vtex-rest-api/docs/catalog-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Catalog and is organized by focusing on the developer's journey. \r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"id\": 1,\r\n \"name\": \"Alimentação\",\r\n \"hasChildren\": true,\r\n \"url\": \"https://lojadobreno.vtexcommercestable.com.br/alimentacao\",\r\n \"children\": [\r\n {\r\n \"id\": 6,\r\n \"name\": \"Bebedouro\",\r\n \"hasChildren\": false,\r\n \"url\": \"https://lojadobreno.vtexcommercestable.com.br/alimentacao/bebedouro\",\r\n \"children\": [],\r\n \"Title\": \"Bebedouro para Gatos\",\r\n \"MetaTagDescription\": \"\"\r\n },\r\n {\r\n \"id\": 7,\r\n \"name\": \"Comedouro\",\r\n \"hasChildren\": false,\r\n \"url\": \"https://lojadobreno.vtexcommercestable.com.br/alimentacao/comedouro\",\r\n \"children\": [],\r\n \"Title\": \"Comedouro para Gatos\",\r\n \"MetaTagDescription\": \"\"\r\n },\r\n {\r\n \"id\": 8,\r\n \"name\": \"Biscoitos\",\r\n \"hasChildren\": false,\r\n \"url\": \"https://lojadobreno.vtexcommercestable.com.br/alimentacao/biscoitos\",\r\n \"children\": [],\r\n \"Title\": \"Biscoitos para Gatos\",\r\n \"MetaTagDescription\": \"\"\r\n },\r\n {\r\n \"id\": 9,\r\n \"name\": \"Petiscos\",\r\n \"hasChildren\": false,\r\n \"url\": \"https://lojadobreno.vtexcommercestable.com.br/alimentacao/petiscos\",\r\n \"children\": [],\r\n \"Title\": \"Petiscos para Gatos\",\r\n \"MetaTagDescription\": \"\"\r\n },\r\n {\r\n \"id\": 10,\r\n \"name\": \"Ração Seca\",\r\n \"hasChildren\": false,\r\n \"url\": \"https://lojadobreno.vtexcommercestable.com.br/alimentacao/racao-seca\",\r\n \"children\": [],\r\n \"Title\": \"Ração Seca para Gatos\",\r\n \"MetaTagDescription\": \"\"\r\n },\r\n {\r\n \"id\": 11,\r\n \"name\": \"Ração Úmida\",\r\n \"hasChildren\": false,\r\n \"url\": \"https://lojadobreno.vtexcommercestable.com.br/alimentacao/racao-umida\",\r\n \"children\": [],\r\n \"Title\": \"Ração Úmida para Gatos\",\r\n \"MetaTagDescription\": \"\"\r\n }\r\n ],\r\n \"Title\": \"Alimentação para Gatos\",\r\n \"MetaTagDescription\": \"\"\r\n },\r\n {\r\n \"id\": 2,\r\n \"name\": \"Brinquedos\",\r\n \"hasChildren\": true,\r\n \"url\": \"https://lojadobreno.vtexcommercestable.com.br/brinquedos\",\r\n \"children\": [\r\n {\r\n \"id\": 12,\r\n \"name\": \"Bolinhas\",\r\n \"hasChildren\": false,\r\n \"url\": \"https://lojadobreno.vtexcommercestable.com.br/brinquedos/bolinhas\",\r\n \"children\": [],\r\n \"Title\": \"Bolinhas para Gatos\",\r\n \"MetaTagDescription\": \"\"\r\n },\r\n {\r\n \"id\": 13,\r\n \"name\": \"Ratinhos\",\r\n \"hasChildren\": false,\r\n \"url\": \"https://lojadobreno.vtexcommercestable.com.br/brinquedos/ratinhos\",\r\n \"children\": [],\r\n \"Title\": \"Ratinhos\",\r\n \"MetaTagDescription\": \"\"\r\n },\r\n {\r\n \"id\": 19,\r\n \"name\": \"Arranhador para gato\",\r\n \"hasChildren\": false,\r\n \"url\": \"https://lojadobreno.vtexcommercestable.com.br/brinquedos/arranhador-para-gato\",\r\n \"children\": [],\r\n \"Title\": \"Brinquedo Arranhador para gatos\",\r\n \"MetaTagDescription\": \"Arranhador gatos é indispensável no lar com felinos. Ideais para afiar as unhas e garantir a diversão\"\r\n }\r\n ],\r\n \"Title\": \"Brinquedos para Gatos\",\r\n \"MetaTagDescription\": \"\"\r\n }\r\n]\r\n```", + "operationId": "CategoryTree", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "categoryLevels", + "in": "path", + "required": true, + "description": "Value of the category level you need to retrieve.", + "schema": { + "type": "string", + "example": "1" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GetCategoryTree" + } + }, + "example": [ + { + "id": 1, + "name": "Alimentação", + "hasChildren": true, + "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao", + "children": [ + { + "id": 6, + "name": "Bebedouro", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/bebedouro", + "children": [], + "Title": "Bebedouro para Gatos", + "MetaTagDescription": "" + }, + { + "id": 7, + "name": "Comedouro", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/comedouro", + "children": [], + "Title": "Comedouro para Gatos", + "MetaTagDescription": "" + }, + { + "id": 8, + "name": "Biscoitos", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/biscoitos", + "children": [], + "Title": "Biscoitos para Gatos", + "MetaTagDescription": "" + }, + { + "id": 9, + "name": "Petiscos", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/petiscos", + "children": [], + "Title": "Petiscos para Gatos", + "MetaTagDescription": "" + }, + { + "id": 10, + "name": "Ração Seca", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/racao-seca", + "children": [], + "Title": "Ração Seca para Gatos", + "MetaTagDescription": "" + }, + { + "id": 11, + "name": "Ração Úmida", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/racao-umida", + "children": [], + "Title": "Ração Úmida para Gatos", + "MetaTagDescription": "" + } + ], + "Title": "Alimentação para Gatos", + "MetaTagDescription": "" + }, + { + "id": 2, + "name": "Brinquedos", + "hasChildren": true, + "url": "https://lojadobreno.vtexcommercestable.com.br/brinquedos", + "children": [ + { + "id": 12, + "name": "Bolinhas", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/brinquedos/bolinhas", + "children": [], + "Title": "Bolinhas para Gatos", + "MetaTagDescription": "" + }, + { + "id": 13, + "name": "Ratinhos", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/brinquedos/ratinhos", + "children": [], + "Title": "Ratinhos", + "MetaTagDescription": "" + }, + { + "id": 19, + "name": "Arranhador para gato", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/brinquedos/arranhador-para-gato", + "children": [], + "Title": "Brinquedo Arranhador para gatos", + "MetaTagDescription": "Arranhador gatos é indispensável no lar com felinos. Ideais para afiar as unhas e garantir a diversão" + } + ], + "Title": "Brinquedos para Gatos", + "MetaTagDescription": "" + } + ] + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog/pvt/category/{categoryId}": { + "get": { + "tags": [ + "Category" + ], + "summary": "Get Category by ID", + "description": "Retrieves general information about a Category. \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 1,\r\n \"Name\": \"Home Appliances\",\r\n \"FatherCategoryId\": null,\r\n \"Title\": \"Home Appliances\",\r\n \"Description\": \"Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.\",\r\n \"Keywords\": \"Kitchen, Laundry, Appliances\",\r\n \"IsActive\": true,\r\n \"LomadeeCampaignCode\": \"\",\r\n \"AdWordsRemarketingCode\": \"\",\r\n \"ShowInStoreFront\": true,\r\n \"ShowBrandFilter\": true,\r\n \"ActiveStoreFrontLink\": true,\r\n \"GlobalCategoryId\": 3367,\r\n \"StockKeepingUnitSelectionMode\": \"LIST\",\r\n \"Score\": null,\r\n \"LinkId\": \"Alimentacao\",\r\n \"HasChildren\": true\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "categoryId", + "in": "path", + "required": true, + "description": "Category’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 9289 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 1, + "Name": "Home Appliances", + "FatherCategoryId": null, + "Title": "Home Appliances", + "Description": "Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.", + "Keywords": "Kitchen, Laundry, Appliances", + "IsActive": true, + "LomadeeCampaignCode": "", + "AdWordsRemarketingCode": "", + "ShowInStoreFront": true, + "ShowBrandFilter": true, + "ActiveStoreFrontLink": true, + "GlobalCategoryId": 3367, + "StockKeepingUnitSelectionMode": "LIST", + "Score": null, + "LinkId": "Alimentacao", + "HasChildren": true + }, + "schema": { + "$ref": "#/components/schemas/Category" + } + } + } + } + } + }, + "put": { + "tags": [ + "Category" + ], + "summary": "Update Category", + "description": "Updates a previously existing Category.\r\n\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"Name\": \"Home Appliances\",\r\n \"FatherCategoryId\": null,\r\n \"Title\": \"Home Appliances\",\r\n \"Description\": \"Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.\",\r\n \"Keywords\": \"Kitchen, Laundry, Appliances\",\r\n \"IsActive\": true,\r\n \"LomadeeCampaignCode\": null,\r\n \"AdWordsRemarketingCode\": null,\r\n \"ShowInStoreFront\": true,\r\n \"ShowBrandFilter\": true,\r\n \"ActiveStoreFrontLink\": true,\r\n \"GlobalCategoryId\": 604,\r\n \"StockKeepingUnitSelectionMode\": \"SPECIFICATION\",\r\n \"Score\": null\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 1,\r\n \"Name\": \"Home Appliances\",\r\n \"FatherCategoryId\": null,\r\n \"Title\": \"Home Appliances\",\r\n \"Description\": \"Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.\",\r\n \"Keywords\": \"Kitchen, Laundry, Appliances\",\r\n \"IsActive\": true,\r\n \"LomadeeCampaignCode\": \"\",\r\n \"AdWordsRemarketingCode\": \"\",\r\n \"ShowInStoreFront\": true,\r\n \"ShowBrandFilter\": true,\r\n \"ActiveStoreFrontLink\": true,\r\n \"GlobalCategoryId\": 604,\r\n \"StockKeepingUnitSelectionMode\": \"LIST\",\r\n \"Score\": null,\r\n \"LinkId\": \"Alimentacao\",\r\n \"HasChildren\": true\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "categoryId", + "in": "path", + "required": true, + "description": "Category’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 9289 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "Name", + "Keywords", + "Title", + "Description", + "AdWordsRemarketingCode", + "LomadeeCampaignCode", + "FatherCategoryId", + "GlobalCategoryId", + "ShowInStoreFront", + "IsActive", + "ActiveStoreFrontLink", + "ShowBrandFilter", + "Score", + "StockKeepingUnitSelectionMode" + ], + "properties": { + "Name": { + "type": "string", + "description": "Category name.", + "example": "Home Appliances" + }, + "Keywords": { + "type": "string", + "description": "Substitute words for the Category.", + "example": "Kitchen, Laundry, Appliances" + }, + "Title": { + "type": "string", + "description": "Text used in title tag for Category page.", + "example": "Home Appliances" + }, + "Description": { + "type": "string", + "description": "Text used in meta description tag for Category page.", + "example": "Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now." + }, + "AdWordsRemarketingCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "example": "Sale", + "deprecated": true + }, + "LomadeeCampaignCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "example": "Sale", + "deprecated": true + }, + "FatherCategoryId": { + "type": "integer", + "description": "ID of the parent category, apply in case of category and subcategory.", + "example": 2, + "nullable": true + }, + "GlobalCategoryId": { + "type": "integer", + "description": "Google Global Category ID.", + "example": 222 + }, + "ShowInStoreFront": { + "type": "boolean", + "description": "If true, the Category is shown in the top and side menu.", + "example": true + }, + "IsActive": { + "type": "boolean", + "description": "If true, the Category page becomes available in store.", + "example": true + }, + "ActiveStoreFrontLink": { + "type": "boolean", + "description": "If true, the Category link becomes active in store.", + "example": true + }, + "ShowBrandFilter": { + "type": "boolean", + "description": "If true, the Category page displays a Brand filter.", + "example": true + }, + "Score": { + "type": "integer", + "description": "Score for search sorting order.", + "example": 3 + }, + "StockKeepingUnitSelectionMode": { + "type": "string", + "description": "Defines how the SKU will be exhibited", + "example": "SPECIFICATION" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 1, + "Name": "Home Appliances", + "FatherCategoryId": null, + "Title": "Home Appliances", + "Description": "Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.", + "Keywords": "Kitchen, Laundry, Appliances", + "IsActive": true, + "LomadeeCampaignCode": "", + "AdWordsRemarketingCode": "", + "ShowInStoreFront": true, + "ShowBrandFilter": true, + "ActiveStoreFrontLink": true, + "GlobalCategoryId": 3367, + "StockKeepingUnitSelectionMode": "LIST", + "Score": null, + "LinkId": "Alimentacao", + "HasChildren": true + }, + "schema": { + "$ref": "#/components/schemas/Category" + } + } + } + } + } + } + }, + "/api/catalog/pvt/category": { + "post": { + "tags": [ + "Category" + ], + "summary": "Create Category", + "description": "Creates a new Category.\r\n\r\nIf there is a need to create a new category with a specific custom ID, specify the `Id` (integer) in the request. Otherwise, VTEX will generate the ID automatically.\r\n\r\n## Request body example (automatically generated ID)\r\n\r\n```json\r\n{\r\n \"Name\": \"Home Appliances\",\r\n \"FatherCategoryId\": null,\r\n \"Title\": \"Home Appliances\",\r\n \"Description\": \"Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.\",\r\n \"Keywords\": \"Kitchen, Laundry, Appliances\",\r\n \"IsActive\": true,\r\n \"LomadeeCampaignCode\": null,\r\n \"AdWordsRemarketingCode\": null,\r\n \"ShowInStoreFront\": true,\r\n \"ShowBrandFilter\": true,\r\n \"ActiveStoreFrontLink\": true,\r\n \"GlobalCategoryId\": 604,\r\n \"StockKeepingUnitSelectionMode\": \"SPECIFICATION\",\r\n \"Score\": null\r\n}\r\n```\r\n\r\n## Request body example (custom ID)\r\n\r\n```json\r\n{\r\n \"Id\": 1,\r\n \"Name\": \"Home Appliances\",\r\n \"FatherCategoryId\": null,\r\n \"Title\": \"Home Appliances\",\r\n \"Description\": \"Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.\",\r\n \"Keywords\": \"Kitchen, Laundry, Appliances\",\r\n \"IsActive\": true,\r\n \"LomadeeCampaignCode\": null,\r\n \"AdWordsRemarketingCode\": null,\r\n \"ShowInStoreFront\": true,\r\n \"ShowBrandFilter\": true,\r\n \"ActiveStoreFrontLink\": true,\r\n \"GlobalCategoryId\": 604,\r\n \"StockKeepingUnitSelectionMode\": \"SPECIFICATION\",\r\n \"Score\": null\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 1,\r\n \"Name\": \"Home Appliances\",\r\n \"FatherCategoryId\": null,\r\n \"Title\": \"Home Appliances\",\r\n \"Description\": \"Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.\",\r\n \"Keywords\": \"Kitchen, Laundry, Appliances\",\r\n \"IsActive\": true,\r\n \"LomadeeCampaignCode\": \"\",\r\n \"AdWordsRemarketingCode\": \"\",\r\n \"ShowInStoreFront\": true,\r\n \"ShowBrandFilter\": true,\r\n \"ActiveStoreFrontLink\": true,\r\n \"GlobalCategoryId\": 604,\r\n \"StockKeepingUnitSelectionMode\": \"LIST\",\r\n \"Score\": null,\r\n \"LinkId\": \"Alimentacao\",\r\n \"HasChildren\": true\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateCategoryRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 1, + "Name": "Home Appliances", + "FatherCategoryId": null, + "Title": "Home Appliances", + "Description": "Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.", + "Keywords": "Kitchen, Laundry, Appliances", + "IsActive": true, + "LomadeeCampaignCode": "", + "AdWordsRemarketingCode": "", + "ShowInStoreFront": true, + "ShowBrandFilter": true, + "ActiveStoreFrontLink": true, + "GlobalCategoryId": 3367, + "StockKeepingUnitSelectionMode": "LIST", + "Score": null, + "LinkId": "Alimentacao", + "HasChildren": true + }, + "schema": { + "$ref": "#/components/schemas/Category" + } + } + } + } + } + } + }, + "/api/catalog/pvt/product/{productId}/similarcategory/": { + "get": { + "tags": [ + "Similar Category" + ], + "summary": "Get Similar Categories", + "description": "Retrieves Similar Categories from a Product.\r\n\r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"ProductId\": 1,\r\n \"CategoryId\": 1\r\n },\r\n {\r\n \"ProductId\": 1,\r\n \"CategoryId\": 20\r\n }\r\n]\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "required": true, + "description": "Product’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": [ + { + "ProductId": 1, + "CategoryId": 1 + }, + { + "ProductId": 1, + "CategoryId": 20 + } + ], + "schema": { + "type": "array", + "description": "Array of objects with similar category information.", + "items": { + "type": "object", + "description": "Object containing Product ID and Similar Category ID.", + "properties": { + "ProductId": { + "type": "integer", + "description": "Product ID.", + "example": 1 + }, + "CategoryId": { + "type": "integer", + "description": "Similar Category ID.", + "example": 20 + } + } + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/product/{productId}/similarcategory/{categoryId}": { + "post": { + "tags": [ + "Similar Category" + ], + "summary": "Add Similar Category", + "description": "Adds a Similar Category to a Product.\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"ProductId\": 1,\r\n \"StoreId\": 1\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "required": true, + "description": "Product’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "categoryId", + "in": "path", + "required": true, + "description": "Similar Category’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "ProductId": 1, + "StoreId": 1 + }, + "schema": { + "type": "object", + "description": "Object containing information related to the similar category.", + "properties": { + "ProductId": { + "type": "integer", + "description": "Product ID.", + "example": 1 + }, + "StoreId": { + "type": "integer", + "description": "Trade Policy ID.", + "example": 1 + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "Similar Category" + ], + "summary": "Delete Similar Category", + "description": "Deletes a Similar Category from a Product.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "required": true, + "description": "Product’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "categoryId", + "in": "path", + "required": true, + "description": "Similar Category’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog_system/pub/specification/field/listByCategoryId/{categoryId}": { + "get": { + "tags": [ + "Category Specification" + ], + "summary": "Get Specifications By Category ID", + "description": "Retrieves all specifications from a category by its ID.\r\n\r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Name\": \"Specification A\",\r\n \"CategoryId\": 1,\r\n \"FieldId\": 33,\r\n \"IsActive\": true,\r\n \"IsStockKeepingUnit\": false\r\n },\r\n {\r\n \"Name\": \"Specification B\",\r\n \"CategoryId\": 1,\r\n \"FieldId\": 34,\r\n \"IsActive\": true,\r\n \"IsStockKeepingUnit\": false\r\n },\r\n {\r\n \"Name\": \"Specification C\",\r\n \"CategoryId\": 1,\r\n \"FieldId\": 35,\r\n \"IsActive\": false,\r\n \"IsStockKeepingUnit\": false\r\n }\r\n]\r\n```", + "operationId": "SpecificationsByCategoryId", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "categoryId", + "in": "path", + "description": "Category ID.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CategorySpecification" + }, + "example": [ + { + "Name": "Specification A", + "CategoryId": 1, + "FieldId": 33, + "IsActive": true, + "IsStockKeepingUnit": false + }, + { + "Name": "Specification B", + "CategoryId": 1, + "FieldId": 34, + "IsActive": true, + "IsStockKeepingUnit": false + }, + { + "Name": "Specification C", + "CategoryId": 1, + "FieldId": 35, + "IsActive": false, + "IsStockKeepingUnit": false + } + ] + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pub/specification/field/listTreeByCategoryId/{categoryId}": { + "get": { + "tags": [ + "Category Specification" + ], + "summary": "Get Specifications Tree By Category ID", + "description": "Lists all specifications including the current category and the level zero specifications from a category by its ID. \r\n\r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Name\": \"Specification A\",\r\n \"CategoryId\": 1,\r\n \"FieldId\": 33,\r\n \"IsActive\": true,\r\n \"IsStockKeepingUnit\": false\r\n },\r\n {\r\n \"Name\": \"Specification B\",\r\n \"CategoryId\": 1,\r\n \"FieldId\": 34,\r\n \"IsActive\": true,\r\n \"IsStockKeepingUnit\": false\r\n },\r\n {\r\n \"Name\": \"Specification C\",\r\n \"CategoryId\": 1,\r\n \"FieldId\": 35,\r\n \"IsActive\": false,\r\n \"IsStockKeepingUnit\": false\r\n }\r\n]\r\n```", + "operationId": "SpecificationsTreeByCategoryId", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "categoryId", + "in": "path", + "description": "Category ID.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CategorySpecification" + }, + "example": [ + { + "Name": "Specification A", + "CategoryId": 1, + "FieldId": 33, + "IsActive": true, + "IsStockKeepingUnit": false + }, + { + "Name": "Specification B", + "CategoryId": 1, + "FieldId": 34, + "IsActive": true, + "IsStockKeepingUnit": false + }, + { + "Name": "Specification C", + "CategoryId": 1, + "FieldId": 35, + "IsActive": false, + "IsStockKeepingUnit": false + } + ] + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog/pvt/subcollection/{subCollectionId}/category": { + "post": { + "tags": [ + "Legacy Subcollection" + ], + "summary": "Associate Category to Subcollection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nAssociates a single Category to a Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection.\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"CategoryId\": 1\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"SubCollectionId\": 17,\r\n \"CategoryId\": 1\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "subCollectionId", + "in": "path", + "required": true, + "description": "Subcollection’s unique numerical identifier, which can be obtained by placing a request to [Get Subcollection by Collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid).", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "CategoryId" + ], + "properties": { + "CategoryId": { + "type": "integer", + "description": "Unique identifier of a Category.", + "example": 0 + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "SubCollectionId": { + "type": "integer", + "description": "Subcollection’s unique numerical identifier.", + "example": 17 + }, + "CategoryId": { + "type": "integer", + "description": "Unique identifier of the Category.", + "example": 1 + } + }, + "example": { + "SubCollectionId": 17, + "CategoryId": 1 + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/subcollection/{subCollectionId}/brand/{categoryId}": { + "delete": { + "tags": [ + "Legacy Subcollection" + ], + "summary": "Delete Category from Subcollection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nDeletes a Category from a Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "subCollectionId", + "in": "path", + "required": true, + "description": "Subcollection’s unique numerical identifier, which can be obtained by placing a request to [Get Subcollection by Collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid).", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "categoryId", + "in": "path", + "required": true, + "description": "Category’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog_system/pvt/brand/list": { + "get": { + "tags": [ + "Brand" + ], + "summary": "Get Brand List", + "description": "Retrieves all Brands registered in the store's Catalog. \r\n>⚠️ This route's response is limited to 20k results. If you need to obtain more results, please use the [Get Brand List](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-brand-list) endpoint instead to get a paginated response. \r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"id\": 9280,\r\n \"name\": \"Brand\",\r\n \"isActive\": true,\r\n \"title\": \"Brand\",\r\n \"metaTagDescription\": \"Brand\",\r\n \"imageUrl\": null\r\n },\r\n {\r\n \"id\": 2000000,\r\n \"name\": \"Orma Carbon\",\r\n \"isActive\": true,\r\n \"title\": \"Orma Carbon\",\r\n \"metaTagDescription\": \"Orma Carbon\",\r\n \"imageUrl\": null\r\n },\r\n {\r\n \"id\": 2000001,\r\n \"name\": \"Pedigree\",\r\n \"isActive\": true,\r\n \"title\": \"Pedigree\",\r\n \"metaTagDescription\": \"\",\r\n \"imageUrl\": null\r\n }\r\n]\r\n```", + "operationId": "BrandList", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": [ + { + "id": 9280, + "name": "Brand", + "isActive": true, + "metaTagDescription": "Brand", + "imageUrl": null + }, + { + "id": 2000000, + "name": "Orma Carbon", + "isActive": true, + "metaTagDescription": "Orma Carbon", + "imageUrl": null + }, + { + "id": 2000001, + "name": "Pedigree", + "isActive": true, + "metaTagDescription": "", + "imageUrl": null + } + ], + "schema": { + "type": "array", + "description": "An array with all brands registered in the store.", + "items": { + "$ref": "#/components/schemas/BrandGet" + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/brand/pagedlist": { + "get": { + "tags": [ + "Brand" + ], + "summary": "Get Brand List Per Page", + "description": "Retrieves all Brands registered in the store's Catalog by page number.\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"items\": [\r\n {\r\n \"id\": 2000000,\r\n \"name\": \"Farm\",\r\n \"isActive\": true,\r\n \"title\": \"Farm\",\r\n \"metaTagDescription\": \"Farm\",\r\n \"imageUrl\": null\r\n },\r\n {\r\n \"id\": 2000001,\r\n \"name\": \"Adidas\",\r\n \"isActive\": true,\r\n \"title\": \"\",\r\n \"metaTagDescription\": \"\",\r\n \"imageUrl\": null\r\n },\r\n {\r\n \"id\": 2000002,\r\n \"name\": \"Brastemp\",\r\n \"isActive\": true,\r\n \"title\": \"Brastemp\",\r\n \"metaTagDescription\": \"Brastemp\",\r\n \"imageUrl\": null\r\n }\r\n ],\r\n \"paging\": {\r\n \"page\": 1,\r\n \"perPage\": 3,\r\n \"total\": 6,\r\n \"pages\": 2\r\n }\r\n}\r\n```", + "operationId": "BrandListPerPage", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "pageSize", + "in": "query", + "required": true, + "description": "Quantity of brands per page.", + "schema": { + "type": "integer", + "example": 5 + } + }, + { + "name": "page", + "in": "query", + "required": true, + "description": "Page number of the brand list.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "items": [ + { + "id": 2000000, + "name": "Farm", + "isActive": true, + "metaTagDescription": "Farm", + "imageUrl": null + }, + { + "id": 2000001, + "name": "Adidas", + "isActive": true, + "metaTagDescription": "", + "imageUrl": null + }, + { + "id": 2000002, + "name": "Brastemp", + "isActive": true, + "metaTagDescription": "Brastemp", + "imageUrl": null + } + ], + "paging": { + "page": 1, + "perPage": 3, + "total": 6, + "pages": 2 + } + }, + "schema": { + "type": "object", + "required": [ + "items", + "paging" + ], + "properties": { + "items": { + "type": "array", + "description": "Array of objects with information of the store's brands.", + "items": { + "$ref": "#/components/schemas/BrandGet" + } + }, + "paging": { + "type": "object", + "description": "Object with pagination information.", + "example": { + "page": 1, + "perPage": 3, + "total": 6, + "pages": 2 + }, + "required": [ + "page", + "perPage", + "total", + "pages" + ], + "properties": { + "page": { + "type": "integer", + "description": "Page number of the brand list.", + "example": 1 + }, + "perPage": { + "type": "integer", + "description": "Quantity of brands per page.", + "example": 3 + }, + "total": { + "type": "integer", + "description": "Total of brands in the store.", + "example": 6 + }, + "pages": { + "type": "integer", + "description": "Total number of pages.", + "example": 2 + } + } + } + } + } + } + } + } + } + } + }, + "/api/catalog_system/pvt/brand/{brandId}": { + "get": { + "tags": [ + "Brand" + ], + "summary": "Get Brand", + "description": "Retrieves a specific Brand by its ID.\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"id\": 7000000,\r\n \"name\": \"Pedigree\",\r\n \"isActive\": true,\r\n \"title\": \"Pedigree\",\r\n \"metaTagDescription\": \"Pedigree\",\r\n \"imageUrl\": null\r\n}\r\n```", + "operationId": "Brand", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "brandId", + "in": "path", + "description": "Brand ID.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "123" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BrandGet" + }, + "example": { + "id": 7000000, + "name": "Pedigree", + "isActive": true, + "metaTagDescription": "Pedigree", + "imageUrl": null + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog/pvt/brand": { + "post": { + "tags": [ + "Brand" + ], + "summary": "Create Brand", + "description": "Creates a new Brand.\r\n## Request and response body example\r\n\r\n```json\r\n{\r\n \"Id\": 2000013,\r\n \"Name\": \"Orma Carbon\",\r\n \"Text\": \"Orma Carbon\",\r\n \"Keywords\": \"orma\",\r\n \"SiteTitle\": \"Orma Carbon\",\r\n \"Active\": true,\r\n \"MenuHome\": true,\r\n \"AdWordsRemarketingCode\": \"\",\r\n \"LomadeeCampaignCode\": \"\",\r\n \"Score\": null,\r\n \"LinkId\": \"orma-carbon\"\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "Request body.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BrandCreateUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 2000013, + "Name": "Orma Carbon", + "Text": "Orma Carbon", + "Keywords": "orma", + "SiteTitle": "Orma Carbon", + "Active": true, + "MenuHome": true, + "AdWordsRemarketingCode": "", + "LomadeeCampaignCode": "", + "Score": null, + "LinkId": "orma-carbon" + }, + "schema": { + "$ref": "#/components/schemas/BrandCreateUpdate" + } + } + } + } + } + } + }, + "/api/catalog/pvt/brand/{brandId}": { + "get": { + "tags": [ + "Brand" + ], + "summary": "Get Brand and context", + "description": "Retrieves information about a specific Brand and its context.\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 2000013,\r\n \"Name\": \"Orma Carbon\",\r\n \"Text\": \"Orma Carbon\",\r\n \"Keywords\": \"orma\",\r\n \"SiteTitle\": \"Orma Carbon\",\r\n \"Active\": true,\r\n \"MenuHome\": true,\r\n \"AdWordsRemarketingCode\": \"\",\r\n \"LomadeeCampaignCode\": \"\",\r\n \"Score\": null,\r\n \"LinkId\": \"orma-carbon\"\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "brandId", + "in": "path", + "description": "Brand ID.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "123" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 2000013, + "Name": "Orma Carbon", + "Text": "Orma Carbon", + "Keywords": "orma", + "SiteTitle": "Orma Carbon", + "Active": true, + "MenuHome": true, + "AdWordsRemarketingCode": "", + "LomadeeCampaignCode": "", + "Score": null, + "LinkId": "orma-carbon" + }, + "schema": { + "$ref": "#/components/schemas/BrandCreateUpdate" + } + } + } + } + } + }, + "put": { + "tags": [ + "Brand" + ], + "summary": "Update Brand", + "description": "Updates a previously existing Brand.\r\n## Request and response body example\r\n\r\n```json\r\n{\r\n \"Id\": 2000013,\r\n \"Name\": \"Orma Carbon\",\r\n \"Text\": \"Orma Carbon\",\r\n \"Keywords\": \"orma\",\r\n \"SiteTitle\": \"Orma Carbon\",\r\n \"Active\": true,\r\n \"MenuHome\": true,\r\n \"AdWordsRemarketingCode\": \"\",\r\n \"LomadeeCampaignCode\": \"\",\r\n \"Score\": null,\r\n \"LinkId\": \"orma-carbon\"\r\n}\r\n```", + "parameters": [ + { + "name": "brandId", + "in": "path", + "required": true, + "description": "Brand’s unique numerical identifier.", + "schema": { + "type": "string", + "example": "123" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BrandCreateUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 2000013, + "Name": "Orma Carbon", + "Text": "Orma Carbon", + "Keywords": "orma", + "SiteTitle": "Orma Carbon", + "Active": true, + "MenuHome": true, + "AdWordsRemarketingCode": "", + "LomadeeCampaignCode": "", + "Score": null, + "LinkId": "orma-carbon" + }, + "schema": { + "$ref": "#/components/schemas/BrandCreateUpdate" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Brand" + ], + "summary": "Delete Brand", + "description": "Deletes an existing Brand.", + "parameters": [ + { + "name": "brandId", + "in": "path", + "required": true, + "description": "Brand’s unique numerical identifier.", + "schema": { + "type": "string", + "example": "123" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/subcollection/{subCollectionId}/brand": { + "post": { + "tags": [ + "Legacy Subcollection" + ], + "summary": "Associate Brand to Subcollection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nAssociates a single Brand to a Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection.\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"BrandId\": 2000000\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"SubCollectionId\": 17,\r\n \"BrandId\": 2000000\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "subCollectionId", + "in": "path", + "required": true, + "description": "Subcollection’s unique numerical identifier, which can be obtained by placing a request to [Get Subcollection by Collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid).", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "BrandId" + ], + "properties": { + "BrandId": { + "type": "integer", + "description": "Unique identifier of a Brand.", + "example": 2000000 + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "SubCollectionId": { + "type": "integer", + "description": "Subcollection’s unique numerical identifier.", + "example": 17 + }, + "BrandId": { + "type": "integer", + "description": "Unique identifier of the Brand.", + "example": 2000000 + } + }, + "example": { + "SubCollectionId": 17, + "BrandId": 2000000 + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/subcollection/{subCollectionId}/brand/{brandId}": { + "delete": { + "tags": [ + "Legacy Subcollection" + ], + "summary": "Delete Brand from Subcollection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nDeletes a Brand from a Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "subCollectionId", + "in": "path", + "required": true, + "description": "Subcollection’s unique numerical identifier, which can be obtained by placing a request to [Get Subcollection by Collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid).", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "brandId", + "in": "path", + "required": true, + "description": "Brand’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/attachment/{attachmentid}": { + "get": { + "tags": [ + "Attachment" + ], + "description": "Gets information about a registered attachment. \r\n >⚠️ To understand the specific syntax for Assembly Options attachments, read the [Assembly Options](https://help.vtex.com/en/tutorial/assembly-options--5x5FhNr4f5RUGDEGWzV1nH#assembly-options-syntax) documentation.\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 8,\r\n \"Name\": \"Test\",\r\n \"IsRequired\": true,\r\n \"IsActive\": true,\r\n \"Domains\": [\r\n {\r\n \"FieldName\": \"Basic test\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"[1-2]#9[1-1][1]basic;#11[0-1][1]basic\"\r\n },\r\n {\r\n \"FieldName\": \"teste\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"[0-10]#8[0-3][0]medium;#9[0-3][0]medium;#10[0-3][0]medium;#11[0-3][0]medium;#36[0-3][0]medium;#37[0-3][0]medium;#38[0-3][0]medium\"\r\n }\r\n ]\r\n}\r\n```", + "summary": "Get attachment", + "parameters": [ + { + "name": "attachmentid", + "in": "path", + "required": true, + "description": "Attachment ID.", + "schema": { + "type": "string", + "example": "8" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AttachmentResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "Attachment" + ], + "description": "Updates a previously existing SKU attachment with new information. \r\n >⚠️ To understand the specific syntax for Assembly Options attachments, read the [Assembly Options](https://help.vtex.com/en/tutorial/assembly-options--5x5FhNr4f5RUGDEGWzV1nH#assembly-options-syntax) documentation. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"Name\": \"Test\",\r\n \"IsRequired\": true,\r\n \"IsActive\": true,\r\n \"Domains\": [\r\n {\r\n \"FieldName\": \"Basic test\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"[1-2]#9[1-1][1]basic;#11[0-1][1]basic\"\r\n },\r\n {\r\n \"FieldName\": \"teste\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"[0-10]#8[0-3][0]medium;#9[0-3][0]medium;#10[0-3][0]medium;#11[0-3][0]medium;#36[0-3][0]medium;#37[0-3][0]medium;#38[0-3][0]medium\"\r\n }\r\n ]\r\n}\r\n```\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 8,\r\n \"Name\": \"Test\",\r\n \"IsRequired\": true,\r\n \"IsActive\": true,\r\n \"Domains\": [\r\n {\r\n \"FieldName\": \"Basic test\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"[1-2]#9[1-1][1]basic;#11[0-1][1]basic\"\r\n },\r\n {\r\n \"FieldName\": \"teste\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"[0-10]#8[0-3][0]medium;#9[0-3][0]medium;#10[0-3][0]medium;#11[0-3][0]medium;#36[0-3][0]medium;#37[0-3][0]medium;#38[0-3][0]medium\"\r\n }\r\n ]\r\n}\r\n```", + "summary": "Update attachment", + "parameters": [ + { + "name": "attachmentid", + "in": "path", + "required": true, + "description": "Attachment ID.", + "schema": { + "type": "string", + "example": "vtexcommercestable" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AttachmentRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AttachmentResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Attachment" + ], + "description": "Deletes a previously existing SKU attachment.", + "summary": "Delete attachment", + "parameters": [ + { + "name": "attachmentid", + "in": "path", + "required": true, + "description": "Attachment ID.", + "schema": { + "type": "string", + "example": "vtexcommercestable" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/attachment": { + "post": { + "tags": [ + "Attachment" + ], + "description": "Creates a new SKU attachment.\r\n >⚠️ To understand the specific syntax for Assembly Options attachments, read the [Assembly Options](https://help.vtex.com/en/tutorial/assembly-options--5x5FhNr4f5RUGDEGWzV1nH#assembly-options-syntax) documentation. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"Name\": \"Test\",\r\n \"IsRequired\": true,\r\n \"IsActive\": true,\r\n \"Domains\": [\r\n {\r\n \"FieldName\": \"Basic test\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"[1-2]#9[1-1][1]basic;#11[0-1][1]basic\"\r\n },\r\n {\r\n \"FieldName\": \"teste\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"[0-10]#8[0-3][0]medium;#9[0-3][0]medium;#10[0-3][0]medium;#11[0-3][0]medium;#36[0-3][0]medium;#37[0-3][0]medium;#38[0-3][0]medium\"\r\n }\r\n ]\r\n}\r\n```\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 8,\r\n \"Name\": \"Test\",\r\n \"IsRequired\": true,\r\n \"IsActive\": true,\r\n \"Domains\": [\r\n {\r\n \"FieldName\": \"Basic test\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"[1-2]#9[1-1][1]basic;#11[0-1][1]basic\"\r\n },\r\n {\r\n \"FieldName\": \"teste\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"[0-10]#8[0-3][0]medium;#9[0-3][0]medium;#10[0-3][0]medium;#11[0-3][0]medium;#36[0-3][0]medium;#37[0-3][0]medium;#38[0-3][0]medium\"\r\n }\r\n ]\r\n}\r\n```", + "summary": "Create attachment", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AttachmentRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AttachmentResponse" + } + } + } + } + } + } + }, + "/api/catalog/pvt/attachments": { + "get": { + "tags": [ + "Attachment" + ], + "description": "Retrieves information about all registered attachments. \r\n >⚠️ To understand the specific syntax for Assembly Options attachments, read the [Assembly Options](https://help.vtex.com/en/tutorial/assembly-options--5x5FhNr4f5RUGDEGWzV1nH#assembly-options-syntax) documentation. \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Page\": 1,\r\n \"Size\": 11,\r\n \"TotalRows\": 11,\r\n \"TotalPage\": 1,\r\n \"Data\": [\r\n {\r\n \"Id\": 1,\r\n \"Name\": \"Acess\u00F3rios do bicho\",\r\n \"IsRequired\": true,\r\n \"IsActive\": true,\r\n \"Domains\": [\r\n {\r\n \"FieldName\": \"extra\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"[0-3]#1[1-2][1]pricetable1;#3[0-2][0]pricetable2;#5[0-2][0]pricetable3\"\r\n }\r\n ]\r\n },\r\n {\r\n \"Id\": 2,\r\n \"Name\": \"Sobrenome\",\r\n \"IsRequired\": false,\r\n \"IsActive\": true,\r\n \"Domains\": []\r\n },\r\n {\r\n \"Id\": 3,\r\n \"Name\": \"Assinatura Teste\",\r\n \"IsRequired\": false,\r\n \"IsActive\": true,\r\n \"Domains\": [\r\n {\r\n \"FieldName\": \" vtex.subscription.key.frequency\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"1 day, 7 day, 1 month, 6 month\"\r\n },\r\n {\r\n \"FieldName\": \"vtex.subscription.key.validity.begin\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"1\"\r\n },\r\n {\r\n \"FieldName\": \"vtex.subscription.key.validity.end\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"31\"\r\n },\r\n {\r\n \"FieldName\": \"vtex.subscription.key.purchaseday\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"1, 2, 20, 31\"\r\n }\r\n ]\r\n },\r\n {\r\n \"Id\": 5,\r\n \"Name\": \"teste\",\r\n \"IsRequired\": false,\r\n \"IsActive\": true,\r\n \"Domains\": []\r\n },\r\n {\r\n \"Id\": 6,\r\n \"Name\": \"teste2\",\r\n \"IsRequired\": false,\r\n \"IsActive\": true,\r\n \"Domains\": []\r\n },\r\n {\r\n \"Id\": 7,\r\n \"Name\": \"vtex.subscription.teste3\",\r\n \"IsRequired\": false,\r\n \"IsActive\": true,\r\n \"Domains\": []\r\n },\r\n {\r\n \"Id\": 8,\r\n \"Name\": \"teste api nova\",\r\n \"IsRequired\": true,\r\n \"IsActive\": true,\r\n \"Domains\": [\r\n {\r\n \"FieldName\": \"Basic teste\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"[1-2]#9[1-1][1]basic;#11[0-1][1]basic\"\r\n },\r\n {\r\n \"FieldName\": \"teste\",\r\n \"MaxCaracters\": \"\",\r\n \"DomainValues\": \"[0-10]#8[0-3][0]medium;#9[0-3][0]medium;#10[0-3][0]medium;#11[0-3][0]medium;#36[0-3][0]medium;#37[0-3][0]medium;#38[0-3][0]medium\"\r\n }\r\n ]\r\n },\r\n {\r\n \"Id\": 9,\r\n \"Name\": \"vtex.subscription.teste\",\r\n \"IsRequired\": false,\r\n \"IsActive\": true,\r\n \"Domains\": []\r\n },\r\n {\r\n \"Id\": 10,\r\n \"Name\": \"Montagens\",\r\n \"IsRequired\": false,\r\n \"IsActive\": true,\r\n \"Domains\": []\r\n },\r\n {\r\n \"Id\": 11,\r\n \"Name\": \"vtex.subscription.subscription\",\r\n \"IsRequired\": false,\r\n \"IsActive\": true,\r\n \"Domains\": [\r\n {\r\n \"FieldName\": \"vtex.subscription.key.frequency\",\r\n \"MaxCaracters\": \"15\",\r\n \"DomainValues\": \"1 month\"\r\n },\r\n {\r\n \"FieldName\": \"vtex.subscription.key.purchaseday\",\r\n \"MaxCaracters\": \"15\",\r\n \"DomainValues\": \"1,15,28\"\r\n }\r\n ]\r\n },\r\n {\r\n \"Id\": 12,\r\n \"Name\": \"T-Shirt Customization\",\r\n \"IsRequired\": false,\r\n \"IsActive\": true,\r\n \"Domains\": [\r\n {\r\n \"FieldName\": \"T-Shirt Name\",\r\n \"MaxCaracters\": \"15\",\r\n \"DomainValues\": \"[]\"\r\n }\r\n ]\r\n }\r\n ]\r\n}\r\n```", + "summary": "Get all attachments", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "Page": { + "type": "integer", + "description": "Current page of results.", + "example": 1 + }, + "Size": { + "type": "integer", + "description": "Total number of results in the current page.", + "example": 11 + }, + "TotalRows": { + "type": "integer", + "description": "Total number of rows with results.", + "example": 11 + }, + "TotalPage": { + "type": "integer", + "description": "Total number of pages with results.", + "example": 1 + }, + "Data": { + "type": "array", + "description": "Array containing attachments data.", + "items": { + "$ref": "#/components/schemas/AttachmentResponse" + } + } + } + } + } + } + } + } + } + }, + "/api/catalog_system/pvt/collection/search": { + "get": { + "tags": [ + "Collection Beta" + ], + "summary": "Get All Collections", + "description": "Retrieves a list of all collections matching a filter.", + "operationId": "GET-AllCollections", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "page", + "in": "query", + "description": "Page number.", + "required": true, + "style": "form", + "schema": { + "type": "integer", + "example": 2 + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Number of the items of the page.", + "required": true, + "style": "form", + "schema": { + "type": "integer", + "example": 15 + } + }, + { + "name": "orderByAsc", + "in": "query", + "description": "Defines if the items of the page are in ascending order.", + "required": true, + "style": "form", + "schema": { + "type": "boolean", + "example": true + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/collection/inactive": { + "get": { + "tags": [ + "Collection Beta" + ], + "summary": "Get All Inactive Collections", + "description": "Retrieves a list of Collection IDs of the inactive Collections.", + "operationId": "GET-AllInactiveCollections", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/collection/": { + "post": { + "tags": [ + "Collection Beta" + ], + "summary": "Create Collection", + "description": "Creates a new collection.", + "operationId": "POST-CreateCollection", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "", + "required": [ + "Name", + "Description", + "Searchable", + "Highlight", + "DateFrom", + "DateTo", + "TotalProducts", + "Type" + ], + "properties": { + "Name": { + "type": "string", + "description": "Collection's Name.", + "example": "Halloween costumes" + }, + "Description": { + "type": "string", + "description": "Collection's description for internal use, with the collection's details. It will not be used for search engines.", + "example": "HomeHalloween" + }, + "Searchable": { + "type": "boolean", + "description": "Option making the collection searchable in the store.", + "example": false + }, + "Highlight": { + "type": "boolean", + "description": "Option if you want the collection to highlight specific products using a tag.", + "example": false + }, + "DateFrom": { + "type": "string", + "description": "Collection start date and time. If a future date and time are set, the collection will have a scheduled status.", + "example": "2020-11-26T15:23:00" + }, + "DateTo": { + "type": "string", + "description": "Collection end date and time.", + "example": "2069-11-26T15:23:00" + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/collection/search/{searchTerms}": { + "get": { + "tags": [ + "Collection Beta" + ], + "summary": "Get Collections by search terms", + "description": "Retrieves a list of collections matching a filter.", + "operationId": "GET-Collectionsbyseachterms", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "searchTerms", + "in": "path", + "description": "String that will search for a collection related to it.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "costume" + } + }, + { + "name": "page", + "in": "query", + "description": "Page number.", + "required": false, + "style": "form", + "schema": { + "type": "integer", + "example": 2 + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Number of the items of the page.", + "required": false, + "style": "form", + "schema": { + "type": "integer", + "example": 15 + } + }, + { + "name": "orderByAsc", + "in": "query", + "description": "Defines if the items of the page are in ascending order.", + "required": false, + "style": "form", + "schema": { + "type": "boolean", + "example": true + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/collection/stockkeepingunit/importfileexample": { + "get": { + "tags": [ + "Collection Beta" + ], + "summary": "Import Collection file example", + "description": "Imports a sample of the imported XLS file. You need to save the response file to your device.", + "operationId": "GET-Importfileexample", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/collection/{collectionId}/stockkeepingunit/importinsert": { + "post": { + "tags": [ + "Collection Beta" + ], + "summary": "Add products to Collection by imported file", + "description": "Adds products to a collection from the request body file. The file must be an imported template.", + "operationId": "POST-Addproductsbyimportfile", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "multipart/form-data" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "collectionId", + "in": "path", + "description": "Collection's unique identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "format": "binary", + "description": "XLS file with information about products to be added to a Collection. The file must be an imported template from [Import Collection file example](https://developers.vtex.com/vtex-developer-docs/reference/get-importfileexample) endpoint." + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/collection/{collectionId}/stockkeepingunit/importexclude": { + "post": { + "tags": [ + "Collection Beta" + ], + "summary": "Remove products from Collection by imported file", + "description": "Removes products from a collection from the request body file. The file must be an imported template.", + "operationId": "POST-Removeproductsbyimportfile", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "multipart/form-data" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "collectionId", + "in": "path", + "description": "Collection's unique identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "format": "binary", + "description": "XLS file with information about products to be added to a Collection. The file must be an imported template from [Import Collection file example](https://developers.vtex.com/vtex-developer-docs/reference/get-importfileexample) endpoint." + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/collection/{collectionId}/products": { + "get": { + "tags": [ + "Collection Beta" + ], + "summary": "Get products from a collection", + "description": "Retrieves information about the products from a collection.", + "operationId": "GET-Productsfromacollection", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "collectionId", + "in": "path", + "description": "Collection's unique identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "page", + "in": "query", + "description": "Page number.", + "required": false, + "style": "form", + "schema": { + "type": "integer", + "example": 2 + } + }, + { + "name": "pageSize", + "in": "query", + "description": "Number of the items of the page.", + "required": false, + "style": "form", + "schema": { + "type": "integer", + "example": 15 + } + }, + { + "name": "Filter", + "in": "query", + "description": "Filter used to refine the Collection's products.", + "required": false, + "style": "form", + "schema": { + "type": "string", + "example": "Pre launch" + } + }, + { + "name": "Active", + "in": "query", + "description": "Defines if the status of the product is active or not.", + "required": false, + "style": "form", + "schema": { + "type": "boolean", + "example": true + } + }, + { + "name": "Visible", + "in": "query", + "description": "Defines if the product is visible on the store or not.", + "required": false, + "style": "form", + "schema": { + "type": "boolean", + "example": true + } + }, + { + "name": "CategoryId", + "in": "query", + "description": "Product's Category unique identifier.", + "required": false, + "style": "form", + "schema": { + "type": "integer", + "example": 12 + } + }, + { + "name": "BrandId", + "in": "query", + "description": "Product's Brand unique identifier.", + "required": false, + "style": "form", + "schema": { + "type": "integer", + "example": 3 + } + }, + { + "name": "SupplierId", + "in": "query", + "description": "Product's Supplier unique identifier.", + "required": false, + "style": "form", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "SalesChannelId", + "in": "query", + "description": "Product's Trade Policy unique identifier.", + "required": false, + "style": "form", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "ReleaseFrom", + "in": "query", + "description": "Product past release date.", + "required": false, + "style": "form", + "schema": { + "type": "string", + "example": "2069-11-26T15:23:00" + } + }, + { + "name": "ReleaseTo", + "in": "query", + "description": "Product future release date.", + "required": false, + "style": "form", + "schema": { + "type": "string", + "example": "2069-11-26T15:23:00" + } + }, + { + "name": "SpecificationProduct", + "in": "query", + "description": "Product Specification Field Value. You must also fill in `SpecificationFieldId` to use this parameter.", + "required": false, + "style": "form", + "schema": { + "type": "string", + "example": "M" + } + }, + { + "name": "SpecificationFieldId", + "in": "query", + "description": "Product Specification Field unique identifier.", + "required": false, + "style": "form", + "schema": { + "type": "integer", + "example": 40 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/collection/{collectionId}": { + "get": { + "tags": [ + "Legacy Collection" + ], + "summary": "Get Collection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nRetrieves general information of a Collection.\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 159,\r\n \"Name\": \"Winter\",\r\n \"Description\": null,\r\n \"Searchable\": false,\r\n \"Highlight\": false,\r\n \"DateFrom\": \"2021-09-27T10:47:00\",\r\n \"DateTo\": \"2027-09-27T10:47:00\",\r\n \"TotalProducts\": 0,\r\n \"Type\": \"Manual\"\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "collectionId", + "in": "path", + "required": true, + "description": "Collection’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 151 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Collection ID.", + "example": 150 + }, + "Name": { + "type": "string", + "description": "Collection Name.", + "example": "Test" + }, + "Description": { + "type": "string", + "description": "Collection description.", + "example": "Winter outfits.", + "nullable": true + }, + "Searchable": { + "type": "boolean", + "description": "Defines if the Collection is searchable or not.", + "example": true + }, + "Highlight": { + "type": "boolean", + "description": "Defines if the Collection is highlighted or not.", + "example": false + }, + "DateFrom": { + "type": "string", + "description": "Initial value date for the Collection.", + "example": "2017-09-27T10:47:00" + }, + "DateTo": { + "type": "string", + "description": "Final value date for the Collection.", + "example": "2017-09-27T10:47:00" + }, + "TotalProducts": { + "type": "integer", + "description": "Total quantity of products in the collection.", + "example": 150 + }, + "Type": { + "type": "string", + "description": "Type of collection.", + "example": "Manual" + } + } + } + } + } + } + } + }, + "put": { + "tags": [ + "Legacy Collection" + ], + "summary": "Update Collection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nUpdates a previously created Collection.\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"Name\": \"Winter\",\r\n \"Searchable\": false,\r\n \"Highlight\": false,\r\n \"DateFrom\": \"2021-09-27T10:47:00\",\r\n \"DateTo\": \"2027-09-27T10:47:00\"\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 159,\r\n \"Name\": \"Winter\",\r\n \"Description\": null,\r\n \"Searchable\": false,\r\n \"Highlight\": false,\r\n \"DateFrom\": \"2021-09-27T10:47:00\",\r\n \"DateTo\": \"2027-09-27T10:47:00\",\r\n \"TotalProducts\": 0,\r\n \"Type\": \"Manual\"\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "collectionId", + "in": "path", + "required": true, + "description": "Collection’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 151 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "Name", + "Searchable", + "Highlight", + "DateFrom", + "DateTo" + ], + "properties": { + "Name": { + "type": "string", + "description": "Collection Name.", + "example": "Test" + }, + "Searchable": { + "type": "boolean", + "description": "Defines if the Collection is searchable or not.", + "example": true + }, + "Highlight": { + "type": "boolean", + "description": "Defines if the Collection is highlighted or not", + "example": false + }, + "DateFrom": { + "type": "string", + "description": "Initial value date for the Collection.", + "example": "2017-09-27T10:47:00" + }, + "DateTo": { + "type": "string", + "description": "Final value date for the Collection.", + "example": "2017-09-27T10:47:00" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Collection ID.", + "example": 150 + }, + "Name": { + "type": "string", + "description": "Collection Name.", + "example": "Test" + }, + "Description": { + "type": "string", + "description": "Collection description.", + "example": "Winter outfits.", + "nullable": true + }, + "Searchable": { + "type": "boolean", + "description": "Defines if the Collection is searchable or not.", + "example": true + }, + "Highlight": { + "type": "boolean", + "description": "Defines if the Collection is highlighted or not.", + "example": false + }, + "DateFrom": { + "type": "string", + "description": "Initial value date for the Collection.", + "example": "2017-09-27T10:47:00" + }, + "DateTo": { + "type": "string", + "description": "Final value date for the Collection.", + "example": "2017-09-27T10:47:00" + }, + "TotalProducts": { + "type": "integer", + "description": "Total quantity of products in the collection.", + "example": 150 + }, + "Type": { + "type": "string", + "description": "Type of collection.", + "example": "Manual" + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "Legacy Collection" + ], + "summary": "Delete Collection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nDeletes a previously existing Collection.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "collectionId", + "in": "path", + "required": true, + "description": "Collection’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 151 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/collection": { + "post": { + "tags": [ + "Legacy Collection" + ], + "summary": "Create Collection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nCreates a new Collection.\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"Name\": \"Winter\",\r\n \"Searchable\": false,\r\n \"Highlight\": false,\r\n \"DateFrom\": \"2021-09-27T10:47:00\",\r\n \"DateTo\": \"2027-09-27T10:47:00\"\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 159,\r\n \"Name\": \"Winter\",\r\n \"Description\": null,\r\n \"Searchable\": false,\r\n \"Highlight\": false,\r\n \"DateFrom\": \"2021-09-27T10:47:00\",\r\n \"DateTo\": \"2027-09-27T10:47:00\",\r\n \"TotalProducts\": 0,\r\n \"Type\": \"Manual\"\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "Name", + "Searchable", + "Highlight", + "DateFrom", + "DateTo" + ], + "properties": { + "Name": { + "type": "string", + "description": "Collection Name.", + "example": "Test" + }, + "Searchable": { + "type": "boolean", + "description": "Defines if the Collection is searchable or not.", + "example": true + }, + "Highlight": { + "type": "boolean", + "description": "Defines if the Collection is highlighted or not.", + "example": false + }, + "DateFrom": { + "type": "string", + "description": "Initial value date for the Collection.", + "example": "2017-09-27T10:47:00" + }, + "DateTo": { + "type": "string", + "description": "Final value date for the Collection.", + "example": "2017-09-27T10:47:00" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Collection ID.", + "example": 150 + }, + "Name": { + "type": "string", + "description": "Collection Name.", + "example": "Test" + }, + "Description": { + "type": "string", + "description": "Collection description.", + "example": "Winter outfits.", + "nullable": true + }, + "Searchable": { + "type": "boolean", + "description": "Defines if the Collection is searchable or not.", + "example": true + }, + "Highlight": { + "type": "boolean", + "description": "Defines if the Collection is highlighted or not.", + "example": false + }, + "DateFrom": { + "type": "string", + "description": "Initial value date for the Collection.", + "example": "2017-09-27T10:47:00" + }, + "DateTo": { + "type": "string", + "description": "Final value date for the Collection.", + "example": "2017-09-27T10:47:00" + }, + "TotalProducts": { + "type": "integer", + "description": "Total quantity of products in the collection.", + "example": 150 + }, + "Type": { + "type": "string", + "description": "Type of collection.", + "example": "Manual" + } + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/collection/{collectionId}/subcollection": { + "get": { + "tags": [ + "Legacy Subcollection" + ], + "summary": "Get Subcollection by Collection ID", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nRetrieves all Subcollections given a Collection ID. A Subcollection is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection.\r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Id\": 12,\r\n \"CollectionId\": 149,\r\n \"Name\": \"Subcollection\",\r\n \"Type\": \"Inclusive\",\r\n \"PreSale\": false,\r\n \"Release\": true\r\n },\r\n {\r\n \"Id\": 13,\r\n \"CollectionId\": 149,\r\n \"Name\": \"Test\",\r\n \"Type\": \"Exclusive\",\r\n \"PreSale\": true,\r\n \"Release\": false\r\n },\r\n {\r\n \"Id\": 14,\r\n \"CollectionId\": 149,\r\n \"Name\": \"asdfghj\",\r\n \"Type\": \"Inclusive\",\r\n \"PreSale\": false,\r\n \"Release\": false\r\n }\r\n]\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "collectionId", + "in": "path", + "required": true, + "description": "Collection’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 151 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": [ + { + "Id": 17, + "CollectionId": 151, + "Name": "group 1", + "Type": "Inclusive", + "PreSale": false, + "Release": false + }, + { + "Id": 18, + "CollectionId": 151, + "Name": "group 2", + "Type": "Inclusive", + "PreSale": false, + "Release": false + } + ], + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Subcollection ID." + }, + "CollectionId": { + "type": "integer", + "description": "Collection ID." + }, + "Name": { + "type": "string", + "description": "Subcollection Name." + }, + "Type": { + "type": "string", + "description": "Either `“Exclusive”` (all the products contained in it will not be used) or `“Inclusive”` (all the products contained in it will be used)." + }, + "PreSale": { + "type": "boolean", + "description": "Defines if the collection is on PreSale." + }, + "Release": { + "type": "boolean", + "description": "Defines if the collection is a new released one." + } + } + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/subcollection/{subCollectionId}": { + "get": { + "tags": [ + "Legacy Subcollection" + ], + "summary": "Get Subcollection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nRetrieves information about a Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection.\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 13,\r\n \"CollectionId\": 149,\r\n \"Name\": \"Test\",\r\n \"Type\": \"Exclusive\",\r\n \"PreSale\": true,\r\n \"Release\": false\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "subCollectionId", + "in": "path", + "required": true, + "description": "Subcollection’s unique numerical identifier, which can be obtained by placing a request to [Get Subcollection by Collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid).", + "schema": { + "type": "integer", + "example": 17 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 17, + "CollectionId": 151, + "Name": "group 1", + "Type": "Inclusive", + "PreSale": false, + "Release": false + }, + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Subcollection ID." + }, + "CollectionId": { + "type": "integer", + "description": "Collection ID." + }, + "Name": { + "type": "string", + "description": "Subcollection Name." + }, + "Type": { + "type": "string", + "description": "Either `“Exclusive”` (all the products contained in it will not be used) or `“Inclusive”` (all the products contained in it will be used)." + }, + "PreSale": { + "type": "boolean", + "description": "Defines if the collection is on PreSale." + }, + "Release": { + "type": "boolean", + "description": "Defines if the collection is a new released one." + } + } + } + } + } + } + } + }, + "put": { + "tags": [ + "Legacy Subcollection" + ], + "summary": "Update Subcollection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nUpdates a previously created Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection.\r\n\r\n## Request or response body example\r\n\r\n```json\r\n{\r\n \"CollectionId\": 149,\r\n \"Name\": \"Test\",\r\n \"Type\": \"Exclusive\",\r\n \"PreSale\": true,\r\n \"Release\": false\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "subCollectionId", + "in": "path", + "required": true, + "description": "Subcollection’s unique numerical identifier, which can be obtained by placing a request to [Get Subcollection by Collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid).", + "schema": { + "type": "integer", + "example": 17 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "CollectionId", + "Name", + "Type", + "PreSale", + "Release" + ], + "properties": { + "CollectionId": { + "type": "integer", + "description": "Collection ID.", + "example": 17 + }, + "Name": { + "type": "string", + "description": "Subcollection Name.", + "example": "group 1" + }, + "Type": { + "type": "string", + "description": "Either `“Exclusive”` (all the products contained in it will not be used) or `“Inclusive”` (all the products contained in it will be used).", + "example": "Inclusive" + }, + "PreSale": { + "type": "boolean", + "description": "Defines PreSale date.", + "example": false + }, + "Release": { + "type": "boolean", + "description": "Defines Release date.", + "example": false + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 17, + "CollectionId": 151, + "Name": "group 1", + "Type": "Inclusive", + "PreSale": false, + "Release": false + }, + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Subcollection ID." + }, + "CollectionId": { + "type": "integer", + "description": "Collection ID." + }, + "Name": { + "type": "string", + "description": "Subcollection Name." + }, + "Type": { + "type": "string", + "description": "Either `“Exclusive”` (all the products contained in it will not be used) or `“Inclusive”` (all the products contained in it will be used)." + }, + "PreSale": { + "type": "boolean", + "description": "Defines if the collection is on PreSale." + }, + "Release": { + "type": "boolean", + "description": "Defines if the collection is a new released one." + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "Legacy Subcollection" + ], + "summary": "Delete Subcollection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nDeletes a previously created Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "subCollectionId", + "in": "path", + "required": true, + "description": "Subcollection’s unique numerical identifier, which can be obtained by placing a request to [Get Subcollection by Collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid).", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/subcollection": { + "post": { + "tags": [ + "Legacy Subcollection" + ], + "summary": "Create Subcollection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nCreates a new Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection. A Subcollection can be either “Exclusive” (all the products contained in it will not be used) or “Inclusive” (all the products contained in it will be used).\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"CollectionId\": 149,\r\n \"Name\": \"Test\",\r\n \"Type\": \"Exclusive\",\r\n \"PreSale\": true,\r\n \"Release\": false\r\n}\r\n```\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 13,\r\n \"CollectionId\": 149,\r\n \"Name\": \"Test\",\r\n \"Type\": \"Exclusive\",\r\n \"PreSale\": true,\r\n \"Release\": false\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "CollectionId", + "Name", + "Type", + "PreSale", + "Release" + ], + "properties": { + "CollectionId": { + "type": "integer", + "description": "SubCollection ID.", + "example": 17 + }, + "Name": { + "type": "string", + "description": "SubCollection Name.", + "example": "group 1" + }, + "Type": { + "type": "string", + "description": "Either `“Exclusive”` (all the products contained in it will not be used) or `“Inclusive”` (all the products contained in it will be used).", + "example": "Inclusive" + }, + "PreSale": { + "type": "boolean", + "description": "Defines PreSale date.", + "example": false + }, + "Release": { + "type": "boolean", + "description": "Defines Release date.", + "example": false + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 17, + "CollectionId": 151, + "Name": "group 1", + "Type": "Inclusive", + "PreSale": false, + "Release": false + }, + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Subcollection ID." + }, + "CollectionId": { + "type": "integer", + "description": "Collection ID." + }, + "Name": { + "type": "string", + "description": "Subcollection Name." + }, + "Type": { + "type": "string", + "description": "Either `“Exclusive”` (all the products contained in it will not be used) or `“Inclusive”` (all the products contained in it will be used)." + }, + "PreSale": { + "type": "boolean", + "description": "Defines if the collection is on PreSale." + }, + "Release": { + "type": "boolean", + "description": "Defines if the collection is a new released one." + } + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/collection/{collectionId}/position": { + "post": { + "tags": [ + "Legacy Subcollection" + ], + "summary": "Reposition SKU on the Subcollection", + "description": " >⚠️ There are two ways to configure collections, through Legacy CMS Portal or using the Beta Collection module. This endpoint is compatible with [collections configured through the Legacy CMS Portal](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L).\n\nEdits the position of an SKU that already exists in the Subcollection, which is a [Group](https://help.vtex.com/en/tutorial/adding-collections-cms--2YBy6P6X0NFRpkD2ZBxF6L#group-types) within a Collection.\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"skuId\": 1,\r\n \"position\": 1,\r\n \"subCollectionId\": 17\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "collectionId", + "in": "path", + "required": true, + "description": "Collection’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 151 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "skuId", + "position", + "subCollectionId" + ], + "properties": { + "skuId": { + "type": "integer", + "description": "SKU ID.", + "example": 1 + }, + "position": { + "type": "integer", + "description": "SKU position.", + "example": 1 + }, + "subCollectionId": { + "type": "integer", + "description": "Subcollection ID.", + "example": 17 + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/specification/{specificationId}": { + "get": { + "tags": [ + "Specification" + ], + "summary": "Get Specification", + "description": "Retrieves information of a Product or SKU Specification. \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 88,\r\n \"FieldTypeId\": 1,\r\n \"CategoryId\": 4,\r\n \"FieldGroupId\": 20,\r\n \"Name\": \"Material\",\r\n \"Description\": \"Composition of the product.\",\r\n \"Position\": 1,\r\n \"IsFilter\": true,\r\n \"IsRequired\": true,\r\n \"IsOnProductDetails\": false,\r\n \"IsStockKeepingUnit\": false,\r\n \"IsWizard\": false,\r\n \"IsActive\": true,\r\n \"IsTopMenuLinkActive\": false,\r\n \"IsSideMenuLinkActive\": true,\r\n \"DefaultValue\": \"Cotton\"\r\n}\r\n```\r\n", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "specificationId", + "in": "path", + "required": true, + "description": "Specification’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 32, + "FieldTypeId": 6, + "CategoryId": 10, + "FieldGroupId": 11, + "Name": "Peso", + "Description": "Peso", + "Position": 1, + "IsFilter": false, + "IsRequired": true, + "IsOnProductDetails": false, + "IsStockKeepingUnit": true, + "IsWizard": false, + "IsActive": true, + "IsTopMenuLinkActive": false, + "IsSideMenuLinkActive": false, + "DefaultValue": null + }, + "schema": { + "type": "object", + "required": [ + "Id", + "FieldTypeId", + "CategoryId", + "FieldGroupId", + "Name", + "Description", + "Position", + "IsFilter", + "IsRequired", + "IsOnProductDetails", + "IsStockKeepingUnit", + "IsWizard", + "IsActive", + "IsTopMenuLinkActive", + "IsSideMenuLinkActive", + "DefaultValue" + ], + "properties": { + "Id": { + "type": "integer", + "description": "Created Specification’s ID.", + "example": 32 + }, + "FieldTypeId": { + "type": "integer", + "description": "Field Type can be `1 - Text`, `2 - Multi-Line Text`, `4 - Number`, `5 - Combo`, `6 - Radio`, `7 - Checkbox`, `8 - Indexed Text`, `9 - Indexed Multi-Line Text`.", + "example": 1 + }, + "CategoryId": { + "type": "integer", + "description": "Specification Category ID.", + "example": 0 + }, + "FieldGroupId": { + "type": "integer", + "description": "Numerical ID of the Group of Specifications that contains the new Specification.", + "example": 0 + }, + "Name": { + "type": "string", + "description": "Specification name. Limited to 100 characters.", + "example": "" + }, + "Description": { + "type": "string", + "description": "Specification Description.", + "example": "" + }, + "Position": { + "type": "integer", + "description": "The current Specification's position in comparison to the other Specifications.", + "example": 0 + }, + "IsFilter": { + "type": "boolean", + "description": "Defines if the Specification can be used as a Filter.", + "example": false + }, + "IsRequired": { + "type": "boolean", + "description": "Defines if the Specification is required or not.", + "example": false + }, + "IsOnProductDetails": { + "type": "boolean", + "description": "Defines if the Specification will be shown on the Product screen in the specification area.", + "example": false + }, + "IsStockKeepingUnit": { + "type": "boolean", + "description": "Defines if the Specification is applied to a specific SKU.", + "example": false + }, + "IsWizard": { + "type": "boolean", + "description": "Deprecated", + "example": false, + "deprecated": true + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the Specification is active or not.", + "example": false + }, + "IsTopMenuLinkActive": { + "type": "boolean", + "description": "Defines if the Specification is shown in the main menu of the site.", + "example": false + }, + "IsSideMenuLinkActive": { + "type": "boolean", + "description": "Defines if the Specification is shown in the side menu.", + "example": false + }, + "DefaultValue": { + "type": "string", + "description": "Specification Default Value.", + "example": "", + "nullable": true + } + } + } + } + } + } + } + }, + "put": { + "tags": [ + "Specification" + ], + "summary": "Update Specification", + "description": "Updates a Product Specification or SKU Specification.\r\n\r\n>⚠️ It is not possible to edit `FieldTypeId`, `CategoryId`, `FieldGroupId` or `IsStockKeepingUnit` in this API call.\r\n\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"FieldTypeId\": 1,\r\n \"CategoryId\": 4,\r\n \"FieldGroupId\": 20,\r\n \"Name\": \"Material\",\r\n \"Description\": \"Composition of the product.\",\r\n \"Position\": 1,\r\n \"IsFilter\": true,\r\n \"IsRequired\": true,\r\n \"IsOnProductDetails\": false,\r\n \"IsStockKeepingUnit\": false,\r\n \"IsActive\": true,\r\n \"IsTopMenuLinkActive\": false,\r\n \"IsSideMenuLinkActive\": true,\r\n \"DefaultValue\": \"Leather\"\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 88,\r\n \"FieldTypeId\": 1,\r\n \"CategoryId\": 4,\r\n \"FieldGroupId\": 20,\r\n \"Name\": \"Material\",\r\n \"Description\": \"Composition of the product.\",\r\n \"Position\": 1,\r\n \"IsFilter\": true,\r\n \"IsRequired\": true,\r\n \"IsOnProductDetails\": false,\r\n \"IsStockKeepingUnit\": false,\r\n \"IsWizard\": false,\r\n \"IsActive\": true,\r\n \"IsTopMenuLinkActive\": false,\r\n \"IsSideMenuLinkActive\": true,\r\n \"DefaultValue\": \"Leather\"\r\n}\r\n```\r\n", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "specificationId", + "in": "path", + "required": true, + "description": "Specification’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 88 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "FieldTypeId", + "CategoryId", + "FieldGroupId", + "Name", + "Description", + "Position", + "IsFilter", + "IsRequired", + "IsOnProductDetails", + "IsStockKeepingUnit", + "IsWizard", + "IsActive", + "IsTopMenuLinkActive", + "IsSideMenuLinkActive", + "DefaultValue" + ], + "properties": { + "FieldTypeId": { + "type": "integer", + "description": "Field Type can be `1 - Text`, `2 - Multi-Line Text`, `4 - Number`, `5 - Combo`, `6 - Radio`, `7 - Checkbox`, `8 - Indexed Text`, `9 - Indexed Multi-Line Text`. This information is not editable.", + "example": 1 + }, + "CategoryId": { + "type": "integer", + "description": "Specification Category ID. This information is not editable.", + "example": 0 + }, + "FieldGroupId": { + "type": "integer", + "description": "Numerical ID of the Group of Specifications that contains the new Specification. This information is not editable.", + "example": 0 + }, + "Name": { + "type": "string", + "description": "Specification name. Limited to 100 characters.", + "example": "Material" + }, + "Description": { + "type": "string", + "description": "Specification Description.", + "example": "Composition of the product." + }, + "Position": { + "type": "integer", + "description": "The current Specification's position in comparison to the other Specifications.", + "example": 1 + }, + "IsFilter": { + "type": "boolean", + "description": "Defines if the Specification can be used as a Filter.", + "example": false + }, + "IsRequired": { + "type": "boolean", + "description": "Defines if the Specification is required or not.", + "example": false + }, + "IsOnProductDetails": { + "type": "boolean", + "description": "Defines if the Specification will be shown on the Product screen in the specification area.", + "example": false + }, + "IsStockKeepingUnit": { + "type": "boolean", + "description": "Defines if the Specification is applied to a specific SKU. This information is not editable.", + "example": false + }, + "IsWizard": { + "type": "boolean", + "description": "Deprecated", + "example": false, + "deprecated": true + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the Specification is active or not.", + "example": false + }, + "IsTopMenuLinkActive": { + "type": "boolean", + "description": "Defines if the Specification is shown in the main menu of the site.", + "example": false + }, + "IsSideMenuLinkActive": { + "type": "boolean", + "description": "Defines if the Specification is shown in the side menu.", + "example": false + }, + "DefaultValue": { + "type": "string", + "description": "Specification Default Value.", + "example": "Leather" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 88, + "FieldTypeId": 1, + "CategoryId": 4, + "FieldGroupId": 20, + "Name": "Material", + "Description": "Composition of the product.", + "Position": 1, + "IsFilter": true, + "IsRequired": true, + "IsOnProductDetails": false, + "IsStockKeepingUnit": false, + "IsWizard": false, + "IsActive": true, + "IsTopMenuLinkActive": false, + "IsSideMenuLinkActive": true, + "DefaultValue": "Leather" + }, + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Specification ID." + }, + "FieldTypeId": { + "type": "integer", + "description": "Field Type ID can be `1 - Text`, `2 - Multi-Line Text`, `4 - Number`, `5 - Combo`, `6 - Radio`, `7 - Checkbox`, `8 - Indexed Text`, `9 - Indexed Multi-Line Text`." + }, + "CategoryId": { + "type": "integer", + "description": "Category ID associated with this specification." + }, + "FieldGroupId": { + "type": "integer", + "description": "ID of the group of specifications that contains the new specification." + }, + "Name": { + "type": "string", + "description": "Specification name. Limited to 100 characters." + }, + "Description": { + "type": "string", + "deprecated": true, + "nullable": true + }, + "Position": { + "type": "integer", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - This position number is used in ordering the specifications both in the navigation menu and in the specification listing on the product page.\r\n" + }, + "IsFilter": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar.\r\n" + }, + "IsRequired": { + "type": "boolean", + "description": "Makes the specification mandatory (`true`) or optional (`false`)." + }, + "IsOnProductDetails": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal -If specification is visible on the product page.\r\n" + }, + "IsStockKeepingUnit": { + "type": "boolean", + "description": "If `true`, it will be added as a SKU specification. If `false`, it will be added as a product specification field." + }, + "IsWizard": { + "type": "boolean", + "deprecated": true, + "nullable": true + }, + "IsActive": { + "type": "boolean", + "description": "Enable (`true`) or disable (`false`) specification." + }, + "IsTopMenuLinkActive": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To make the specification visible in the store's upper menu.\r\n" + }, + "IsSideMenuLinkActive": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To make the specification field clickable in the search navigation bar.\r\n" + }, + "DefaultValue": { + "type": "string", + "description": "Specification default value." + } + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/specification": { + "post": { + "tags": [ + "Specification" + ], + "summary": "Create Specification", + "description": "Creates a new Product or SKU Specification. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"FieldTypeId\": 1,\r\n \"CategoryId\": 4,\r\n \"FieldGroupId\": 20,\r\n \"Name\": \"Material\",\r\n \"Description\": \"Composition of the product.\",\r\n \"Position\": 1,\r\n \"IsFilter\": true,\r\n \"IsRequired\": true,\r\n \"IsOnProductDetails\": false,\r\n \"IsStockKeepingUnit\": false,\r\n \"IsActive\": true,\r\n \"IsTopMenuLinkActive\": false,\r\n \"IsSideMenuLinkActive\": true,\r\n \"DefaultValue\": \"Cotton\"\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 88,\r\n \"FieldTypeId\": 1,\r\n \"CategoryId\": 4,\r\n \"FieldGroupId\": 20,\r\n \"Name\": \"Material\",\r\n \"Description\": \"Composition of the product.\",\r\n \"Position\": 1,\r\n \"IsFilter\": true,\r\n \"IsRequired\": true,\r\n \"IsOnProductDetails\": false,\r\n \"IsStockKeepingUnit\": false,\r\n \"IsWizard\": false,\r\n \"IsActive\": true,\r\n \"IsTopMenuLinkActive\": false,\r\n \"IsSideMenuLinkActive\": true,\r\n \"DefaultValue\": \"Cotton\"\r\n}\r\n```\r\n", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "FieldTypeId", + "FieldGroupId", + "Name" + ], + "properties": { + "FieldTypeId": { + "type": "integer", + "description": "Field Type ID can be `1 - Text`, `2 - Multi-Line Text`, `4 - Number`, `5 - Combo`, `6 - Radio`, `7 - Checkbox`, `8 - Indexed Text`, `9 - Indexed Multi-Line Text`.", + "example": 1 + }, + "CategoryId": { + "type": "integer", + "description": "Category ID associated with this specification.", + "example": 1 + }, + "FieldGroupId": { + "type": "integer", + "description": "ID of the group of specifications that contains the new specification.", + "example": 22 + }, + "Name": { + "type": "string", + "description": "Specification name. Limited to 100 characters.", + "example": "Material" + }, + "Description": { + "type": "string", + "deprecated": true, + "nullable": true, + "example": "Composition of the product." + }, + "Position": { + "type": "integer", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - This position number is used in ordering the specifications both in the navigation menu and in the specification listing on the product page.\r\n", + "example": 1 + }, + "IsFilter": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar.\r\n", + "example": false + }, + "IsRequired": { + "type": "boolean", + "description": "Makes the specification mandatory (`true`) or optional (`false`).", + "example": false + }, + "IsOnProductDetails": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal -If specification is visible on the product page.\r\n", + "example": true + }, + "IsStockKeepingUnit": { + "type": "boolean", + "description": "If `true`, it will be added as a SKU specification. If `false`, it will be added as a product specification field.", + "example": false + }, + "IsWizard": { + "type": "boolean", + "deprecated": true, + "nullable": true + }, + "IsActive": { + "type": "boolean", + "description": "Enable (`true`) or disable (`false`) specification.", + "example": true + }, + "IsTopMenuLinkActive": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To make the specification visible in the store's upper menu.\r\n", + "example": false + }, + "IsSideMenuLinkActive": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To make the specification field clickable in the search navigation bar.\r\n", + "example": false + }, + "DefaultValue": { + "type": "string", + "description": "Specification default value.", + "example": "Cotton" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Id": 88, + "FieldTypeId": 1, + "CategoryId": 4, + "FieldGroupId": 20, + "Name": "Material", + "Description": "Composition of the product.", + "Position": 1, + "IsFilter": true, + "IsRequired": true, + "IsOnProductDetails": false, + "IsStockKeepingUnit": false, + "IsWizard": false, + "IsActive": true, + "IsTopMenuLinkActive": false, + "IsSideMenuLinkActive": true, + "DefaultValue": "Cotton" + }, + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Specification ID." + }, + "FieldTypeId": { + "type": "integer", + "description": "Field Type ID can be `1 - Text`, `2 - Multi-Line Text`, `4 - Number`, `5 - Combo`, `6 - Radio`, `7 - Checkbox`, `8 - Indexed Text`, `9 - Indexed Multi-Line Text`." + }, + "CategoryId": { + "type": "integer", + "description": "Category ID associated with this specification." + }, + "FieldGroupId": { + "type": "integer", + "description": "ID of the group of specifications that contains the new specification." + }, + "Name": { + "type": "string", + "description": "Specification name. Limited to 100 characters." + }, + "Description": { + "type": "string", + "deprecated": true, + "nullable": true + }, + "Position": { + "type": "integer", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - This position number is used in ordering the specifications both in the navigation menu and in the specification listing on the product page.\r\n" + }, + "IsFilter": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar.\r\n" + }, + "IsRequired": { + "type": "boolean", + "description": "Makes the specification mandatory (`true`) or optional (`false`)." + }, + "IsOnProductDetails": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal -If specification is visible on the product page.\r\n" + }, + "IsStockKeepingUnit": { + "type": "boolean", + "description": "If `true`, it will be added as a SKU specification. If `false`, it will be added as a product specification field." + }, + "IsWizard": { + "type": "boolean", + "deprecated": true, + "nullable": true + }, + "IsActive": { + "type": "boolean", + "description": "Enable (`true`) or disable (`false`) specification." + }, + "IsTopMenuLinkActive": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To make the specification visible in the store's upper menu.\r\n" + }, + "IsSideMenuLinkActive": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To make the specification field clickable in the search navigation bar.\r\n" + }, + "DefaultValue": { + "type": "string", + "description": "Specification default value." + } + } + } + } + } + } + } + } + }, + "/api/catalog_system/pub/specification/fieldGet/{fieldId}": { + "get": { + "tags": [ + "Specification Field" + ], + "summary": "Get Specification Field", + "description": "Retrieves details from a specification field by this field's ID. \r\n>⚠️ This is a legacy endpoint. We recommend using [Get Specification](https://developers.vtex.com/vtex-rest-api/reference/get_api-catalog-pvt-specification-specificationid) instead.\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Name\": \"Material\",\r\n \"CategoryId\": 4,\r\n \"FieldId\": 88,\r\n \"IsActive\": true,\r\n \"IsRequired\": true,\r\n \"FieldTypeId\": 1,\r\n \"FieldTypeName\": \"Texto\",\r\n \"FieldValueId\": null,\r\n \"Description\": \"Composition of the product.\",\r\n \"IsStockKeepingUnit\": false,\r\n \"IsFilter\": true,\r\n \"IsOnProductDetails\": false,\r\n \"Position\": 1,\r\n \"IsWizard\": false,\r\n \"IsTopMenuLinkActive\": false,\r\n \"IsSideMenuLinkActive\": true,\r\n \"DefaultValue\": null,\r\n \"FieldGroupId\": 20,\r\n \"FieldGroupName\": \"Clothes specifications\"\r\n}\r\n```\r\n\r\n", + "operationId": "SpecificationsField", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "fieldId", + "in": "path", + "description": "Specification Field ID.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 88 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "Name": "Material", + "CategoryId": 4, + "FieldId": 88, + "IsActive": true, + "IsRequired": true, + "FieldTypeId": 1, + "FieldTypeName": "Texto", + "FieldValueId": null, + "Description": "Composition of the product.", + "IsStockKeepingUnit": false, + "IsFilter": true, + "IsOnProductDetails": false, + "Position": 1, + "IsWizard": false, + "IsTopMenuLinkActive": false, + "IsSideMenuLinkActive": true, + "DefaultValue": null, + "FieldGroupId": 20, + "FieldGroupName": "Clothes specifications" + }, + "schema": { + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Specification field name." + }, + "FieldId": { + "type": "integer", + "description": "Specification field ID." + }, + "IsActive": { + "type": "boolean", + "description": "Enable (`true`) or disable (`false`) specification." + }, + "IsRequired": { + "type": "boolean", + "description": "Makes the specification mandatory (`true`) or optional (`false`)." + }, + "FieldTypeId": { + "type": "integer", + "description": "Field Type ID can be `1 - Text`, `2 - Multi-Line Text`, `4 - Number`, `5 - Combo`, `6 - Radio`, `7 - Checkbox`, `8 - Indexed Text`, `9 - Indexed Multi-Line Text`." + }, + "FieldTypeName": { + "type": "string", + "description": "Field Type name, which can be `Text`, `Multi-Line Text`, `Number`, `Combo`, `Radio`, `Checkbox`, `Indexed Text` or `Indexed Multi-Line Text`." + }, + "FieldValueId": { + "type": "integer", + "description": "Specification value ID.", + "nullable": true + }, + "Description": { + "type": "string", + "deprecated": true, + "nullable": true + }, + "IsStockKeepingUnit": { + "type": "boolean", + "description": "If `true`, it will be added as a SKU specification. If `false`, it will be added as a product specification field." + }, + "IsFilter": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar.\r\n" + }, + "IsOnProductDetails": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal -If specification is visible on the product page.\r\n" + }, + "Position": { + "type": "integer", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - This position number is used in ordering the specifications both in the navigation menu and in the specification listing on the product page.\r\n" + }, + "IsWizard": { + "type": "boolean", + "deprecated": true, + "nullable": true + }, + "IsTopMenuLinkActive": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To make the specification visible in the store's upper menu.\r\n" + }, + "IsSideMenuLinkActive": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To make the specification field clickable in the search navigation bar.\r\n" + }, + "DefaultValue": { + "type": "string", + "description": "Specification default value.", + "nullable": true + }, + "FieldGroupId": { + "type": "integer", + "description": "ID of the group of specifications that contains the new specification." + }, + "FieldGroupName": { + "type": "string", + "description": "Specification Field Group Name." + } + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/specification/field": { + "post": { + "tags": [ + "Specification Field" + ], + "summary": "Create Specification Field", + "description": "Creates a specification field in a category. \r\n>⚠️ This is a legacy endpoint. We recommend using [Create Specification](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-post-specification) instead.\r\n\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"Name\": \"Material\",\r\n \"CategoryId\": 4,\r\n \"FieldId\": 88,\r\n \"IsActive\": true,\r\n \"IsRequired\": true,\r\n \"FieldTypeId\": 1,\r\n \"FieldValueId\": 1,\r\n \"IsStockKeepingUnit\": false,\r\n \"Description\": \"Composition of the product.\",\r\n \"IsFilter\": true,\r\n \"IsOnProductDetails\": false,\r\n \"Position\": 1,\r\n \"IsWizard\": false,\r\n \"IsTopMenuLinkActive\": true,\r\n \"IsSideMenuLinkActive\": true,\r\n \"DefaultValue\": null,\r\n \"FieldGroupId\": 20,\r\n \"FieldGroupName\": \"Clothes specifications\"\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n89\r\n```", + "operationId": "SpecificationsInsertField", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SpecificationsInsertFieldRequest" + }, + "example": { + "Name": "Material", + "CategoryId": 4, + "FieldId": 88, + "IsActive": true, + "IsRequired": true, + "FieldTypeId": 1, + "FieldValueId": 1, + "IsStockKeepingUnit": false, + "Description": "Composition of the product.", + "IsFilter": true, + "IsOnProductDetails": false, + "Position": 1, + "IsWizard": false, + "IsTopMenuLinkActive": true, + "IsSideMenuLinkActive": true, + "DefaultValue": null, + "FieldGroupId": 20, + "FieldGroupName": "Clothes specifications" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": 89, + "schema": { + "type": "integer", + "description": "Specification field ID." + } + } + } + } + }, + "deprecated": false + }, + "put": { + "tags": [ + "Specification Field" + ], + "summary": "Update Specification Field", + "description": "Updates a specification field in a category. \r\n>⚠️ This is a legacy endpoint. We recommend using [Update Specification](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-put-specification) instead.\r\n\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"FieldId\": 89,\r\n \"Name\": \"Material\",\r\n \"CategoryId\": 4,\r\n \"IsActive\": true,\r\n \"IsRequired\": true,\r\n \"FieldTypeId\": 1,\r\n \"Description\": \"Composition of the product.\",\r\n \"IsStockKeepingUnit\": false,\r\n \"IsFilter\": true,\r\n \"IsOnProductDetails\": true,\r\n \"Position\": 1,\r\n \"IsWizard\": false,\r\n \"IsTopMenuLinkActive\": false,\r\n \"IsSideMenuLinkActive\": false,\r\n \"DefaultValue\": \"Cotton\",\r\n \"FieldGroupId\": 20,\r\n \"FieldGroupName\": \"Clothes specifications\"\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n89\r\n```", + "operationId": "SpecificationsInsertFieldUpdate", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SpecificationsInsertFieldUpdateRequest" + }, + "example": { + "FieldId": 89, + "Name": "Material", + "CategoryId": 4, + "IsActive": true, + "IsRequired": true, + "FieldTypeId": 1, + "Description": "Composition of the product.", + "IsStockKeepingUnit": false, + "IsFilter": true, + "IsOnProductDetails": true, + "Position": 1, + "IsWizard": false, + "IsTopMenuLinkActive": false, + "IsSideMenuLinkActive": false, + "DefaultValue": "Cotton", + "FieldGroupId": 20, + "FieldGroupName": "Clothes specifications" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": 89, + "schema": { + "type": "integer", + "description": "Specification field ID." + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/specification/fieldValue/{fieldValueId}": { + "get": { + "tags": [ + "Specification Field Value" + ], + "summary": "Get Specification Field Value", + "description": "Retrieves details from a specification field's value by this value's ID. \r\n>⚠️ This is a legacy endpoint. We recommend using [Get Specification Value](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-specification-value-id) instead.\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"FieldValueId\": 143,\r\n \"FieldId\": 34,\r\n \"Name\": \"TesteInsert\",\r\n \"Text\": \"Value Description\",\r\n \"IsActive\": true,\r\n \"Position\": 100\r\n}\r\n```", + "operationId": "SpecificationsGetFieldValue", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "fieldValueId", + "in": "path", + "description": "", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "143" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "FieldValueId": 143, + "FieldId": 34, + "Name": "Cotton", + "Text": "Cotton fibers", + "IsActive": true, + "Position": 100 + }, + "schema": { + "type": "object", + "properties": { + "FieldValueId": { + "type": "integer", + "format": "int32", + "description": "Specification Field Value ID." + }, + "FieldId": { + "type": "integer", + "description": "Specification Field ID." + }, + "Name": { + "type": "string", + "description": "Specification Field Value Name." + }, + "Text": { + "type": "string", + "description": "Specification Field Value Description." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the Specification Field Value is active (`true`) or inactive (`false`)." + }, + "Position": { + "type": "integer", + "format": "int32", + "description": "Specification Field Value Position." + } + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pub/specification/fieldvalue/{fieldId}": { + "get": { + "tags": [ + "Specification Field Value" + ], + "summary": "Get Specification Values By Field ID", + "description": "Gets a list of all specification values from a Specification Field by this field's ID. \r\n\r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"FieldValueId\": 52,\r\n \"Value\": \"0 a 6 meses\",\r\n \"IsActive\": true,\r\n \"Position\": 1\r\n },\r\n {\r\n \"FieldValueId\": 53,\r\n \"Value\": \"1 a 2 anos\",\r\n \"IsActive\": true,\r\n \"Position\": 4\r\n },\r\n {\r\n \"FieldValueId\": 54,\r\n \"Value\": \"3 a 4 anos\",\r\n \"IsActive\": true,\r\n \"Position\": 3\r\n },\r\n {\r\n \"FieldValueId\": 55,\r\n \"Value\": \"5 a 6 anos\",\r\n \"IsActive\": true,\r\n \"Position\": 2\r\n },\r\n {\r\n \"FieldValueId\": 56,\r\n \"Value\": \"7 a 8 anos\",\r\n \"IsActive\": true,\r\n \"Position\": 5\r\n },\r\n {\r\n \"FieldValueId\": 57,\r\n \"Value\": \"9 a 10 anos\",\r\n \"IsActive\": true,\r\n \"Position\": 6\r\n },\r\n {\r\n \"FieldValueId\": 58,\r\n \"Value\": \"Acima de 10 anos\",\r\n \"IsActive\": true,\r\n \"Position\": 7\r\n }\r\n]\r\n```", + "operationId": "SpecificationsValuesByFieldId", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "fieldId", + "in": "path", + "description": "Specification Field ID.", + "required": true, + "style": "simple", + "schema": { + "type": "integer", + "example": 34 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GetSpecFieldValue" + } + }, + "example": [ + { + "FieldValueId": 52, + "Value": "0 a 6 meses", + "IsActive": true, + "Position": 1 + }, + { + "FieldValueId": 53, + "Value": "1 a 2 anos", + "IsActive": true, + "Position": 4 + }, + { + "FieldValueId": 54, + "Value": "3 a 4 anos", + "IsActive": true, + "Position": 3 + }, + { + "FieldValueId": 55, + "Value": "5 a 6 anos", + "IsActive": true, + "Position": 2 + }, + { + "FieldValueId": 56, + "Value": "7 a 8 anos", + "IsActive": true, + "Position": 5 + }, + { + "FieldValueId": 57, + "Value": "9 a 10 anos", + "IsActive": true, + "Position": 6 + }, + { + "FieldValueId": 58, + "Value": "Acima de 10 anos", + "IsActive": true, + "Position": 7 + } + ] + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/specification/fieldValue": { + "post": { + "tags": [ + "Specification Field Value" + ], + "summary": "Create Specification Field Value", + "description": "Creates a specification field value by the specification field's ID. \r\n>⚠️ This is a legacy endpoint. We recommend using [Create Specification Value](https://developers.vtex.com/docs/api-reference/catalog-api#post-/api/catalog/pvt/specificationvalue) instead.\r\n\r\n\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"FieldId\": 34,\r\n \"Name\": \"Cotton\",\r\n \"Text\": \"Cotton fibers\",\r\n \"IsActive\": true,\r\n \"Position\": 100\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"FieldValueId\": 143,\r\n \"FieldId\": 34,\r\n \"Name\": \"Cotton\",\r\n \"Text\": \"Cotton fibers\",\r\n \"IsActive\": true,\r\n \"Position\": 100\r\n}\r\n```", + "operationId": "SpecificationsInsertFieldValue", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SpecificationsInsertFieldValueRequest" + }, + "example": { + "FieldId": 34, + "Name": "Cotton", + "Text": "Cotton fibers", + "IsActive": true, + "Position": 100 + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "FieldValueId": 143, + "FieldId": 34, + "Name": "Cotton", + "Text": "Cotton fibers", + "IsActive": true, + "Position": 100 + }, + "schema": { + "type": "object", + "properties": { + "FieldValueId": { + "type": "integer", + "format": "int32", + "description": "Specification Field Value ID." + }, + "FieldId": { + "type": "integer", + "description": "Specification Field ID." + }, + "Name": { + "type": "string", + "description": "Specification Field Value Name." + }, + "Text": { + "type": "string", + "description": "Specification Field Value Description." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the Specification Field Value is active (`true`) or inactive (`false`)." + }, + "Position": { + "type": "integer", + "format": "int32", + "description": "Specification Field Value Position." + } + } + } + } + } + } + }, + "deprecated": false + }, + "put": { + "tags": [ + "Specification Field Value" + ], + "summary": "Update Specification Field Value", + "description": "Updates a specification field value by the specification field's ID. \r\n>⚠️ This is a legacy endpoint. We recommend using [Update Specification Field Value](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-put-specification-value-id) instead.\r\n\r\n\r\n## Request body example\r\n\r\n```json\r\n{\r\n \"FieldId\": 1,\r\n \"FieldValueId\": 143,\r\n \"Name\": \"Cotton\",\r\n \"Text\": \"Cotton fibers\",\r\n \"IsActive\": true,\r\n \"Position\": 100\r\n}\r\n```\r\n\r\n## Response body example (200 OK)\r\n\r\n```json\r\n\"Field Value Updated\"\r\n```", + "operationId": "SpecificationsUpdateFieldValue", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SpecificationsUpdateFieldValueRequest" + }, + "example": { + "FieldId": 1, + "FieldValueId": 143, + "Name": "Cotton", + "Text": "Cotton fibers", + "IsActive": true, + "Position": 100 + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": "Field Value Updated", + "schema": { + "type": "string", + "description": "Status of the request." + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog/pvt/specificationvalue/{specificationValueId}": { + "get": { + "tags": [ + "Specification Value" + ], + "summary": "Get Specification Value", + "description": "Retrieves general information about a Specification Value. \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"FieldValueId\": 143,\r\n \"FieldId\": 34,\r\n \"Name\": \"Cotton\",\r\n \"Text\": \"Cotton fibers\",\r\n \"IsActive\": true,\r\n \"Position\": 100\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "specificationValueId", + "in": "path", + "required": true, + "description": "Specification Value’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 143 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "FieldValueId": 143, + "FieldId": 34, + "Name": "Cotton", + "Text": "Cotton fibers", + "IsActive": true, + "Position": 100 + }, + "schema": { + "type": "object", + "properties": { + "FieldValueId": { + "type": "integer", + "format": "int32", + "description": "Specification Field Value ID." + }, + "FieldId": { + "type": "integer", + "description": "Specification Field ID." + }, + "Name": { + "type": "string", + "description": "Specification Field Value Name." + }, + "Text": { + "type": "string", + "description": "Specification Field Value Description." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the Specification Field Value is active (`true`) or inactive (`false`)." + }, + "Position": { + "type": "integer", + "format": "int32", + "description": "Specification Field Value Position." + } + } + } + } + } + } + } + }, + "put": { + "tags": [ + "Specification Value" + ], + "summary": "Update Specification Value", + "description": "Updates a new Specification Value for a Category. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"FieldId\": 193,\r\n \"Name\": \"Metal\",\r\n \"Text\": null,\r\n \"IsActive\": true,\r\n \"Position\": 1\r\n }\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"FieldValueId\": 360,\r\n \"FieldId\": 193,\r\n \"Name\": \"Metal\",\r\n \"Text\": null,\r\n \"IsActive\": true,\r\n \"Position\": 1\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "specificationValueId", + "in": "path", + "required": true, + "description": " Specification Value’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "FieldId", + "Name" + ], + "properties": { + "FieldId": { + "type": "integer", + "description": "Specification ID associated with this specification value.", + "example": 193 + }, + "Name": { + "type": "string", + "description": "Specification Value name.", + "example": "Metal" + }, + "Text": { + "type": "string", + "deprecated": true, + "nullable": true, + "description": "Specification Value Text." + }, + "IsActive": { + "type": "boolean", + "description": "Enable (`true`) or disable (`false`) specification value.", + "example": true + }, + "Position": { + "type": "integer", + "description": "The position of the value to be shown on product registration page (`/admin/Site/Produto.aspx`).", + "example": 1 + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "FieldValueId": 360, + "FieldId": 193, + "Name": "Metal", + "Text": null, + "IsActive": true, + "Position": 1 + }, + "schema": { + "type": "object", + "properties": { + "FieldValueId": { + "type": "integer", + "description": "Specification value ID." + }, + "FieldId": { + "type": "integer", + "description": "Specification field ID associated with this specification value." + }, + "Name": { + "type": "string", + "description": "Specification Value name." + }, + "Text": { + "type": "string", + "deprecated": true, + "nullable": true, + "description": "Specification Value Text." + }, + "IsActive": { + "type": "boolean", + "description": "Enable (`true`) or disable (`false`) specification value." + }, + "Position": { + "type": "integer", + "description": "The position of the value to be shown on product registration page (`/admin/Site/Produto.aspx`)." + } + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/specificationvalue": { + "post": { + "tags": [ + "Specification Value" + ], + "summary": "Create Specification Value", + "description": "Creates a new Specification Value for a Category. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"FieldId\": 193,\r\n \"Name\": \"Metal\",\r\n \"IsActive\": true,\r\n \"Position\": 1\r\n }\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"FieldValueId\": 360,\r\n \"FieldId\": 193,\r\n \"Name\": \"Metal\",\r\n \"Text\": null,\r\n \"IsActive\": true,\r\n \"Position\": 1\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "FieldId", + "Name" + ], + "properties": { + "FieldId": { + "type": "integer", + "description": "Specification field ID associated with this specification value.", + "example": 193 + }, + "Name": { + "type": "string", + "description": "Specification Value name.", + "example": "Metal" + }, + "Text": { + "type": "string", + "deprecated": true, + "nullable": true, + "description": "Specification Value Text." + }, + "IsActive": { + "type": "boolean", + "description": "Enable (`true`) or disable (`false`) specification value.", + "example": true + }, + "Position": { + "type": "integer", + "description": "The position of the value to be shown on product registration page (`/admin/Site/Produto.aspx`).", + "example": 1 + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "FieldValueId": 360, + "FieldId": 193, + "Name": "Metal", + "Text": null, + "IsActive": true, + "Position": 1 + }, + "schema": { + "type": "object", + "properties": { + "FieldValueId": { + "type": "integer", + "description": "Specification value ID." + }, + "FieldId": { + "type": "integer", + "description": "Specification field ID associated with this specification value." + }, + "Name": { + "type": "string", + "description": "Specification Value name." + }, + "Text": { + "type": "string", + "deprecated": true, + "nullable": true, + "description": "Specification Value Text." + }, + "IsActive": { + "type": "boolean", + "description": "Enable (`true`) or disable (`false`) specification value." + }, + "Position": { + "type": "integer", + "description": "The position of the value to be shown on product registration page (`/admin/Site/Produto.aspx`)." + } + } + } + } + } + } + } + } + }, + "/api/catalog_system/pvt/specification/groupbycategory/{categoryId}": { + "get": { + "tags": [ + "Specification Group" + ], + "summary": "List Specification Group by Category", + "description": "Retrieves a list of specification groups by the category ID. \r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"CategoryId\": 1,\r\n \"Id\": 5,\r\n \"Name\": \"Materials\",\r\n \"Position\": 2\r\n },\r\n {\r\n \"CategoryId\": 1,\r\n \"Id\": 6,\r\n \"Name\": \"Sizes\",\r\n \"Position\": 3\r\n }\r\n ]\r\n```", + "operationId": "SpecificationsGroupListbyCategory", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "categoryId", + "in": "path", + "description": "", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "1" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SpecificationsGroup" + } + }, + "example": [ + { + "CategoryId": 1, + "Id": 5, + "Name": "Materials", + "Position": 2 + }, + { + "CategoryId": 1, + "Id": 6, + "Name": "Sizes", + "Position": 3 + } + ] + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pub/specification/groupGet/{groupId}": { + "get": { + "tags": [ + "Specification Group" + ], + "summary": "Get Specification Group", + "description": "Retrieves details from a specification group by the ID of the group. \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"CategoryId\": 1,\r\n \"Id\": 6,\r\n \"Name\": \"Sizes\",\r\n \"Position\": 3\r\n}\r\n```", + "operationId": "SpecificationsGroupGet", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "groupId", + "in": "path", + "description": "Specification Group ID.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "6" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SpecificationsGroup" + }, + "example": { + "CategoryId": 1, + "Id": 6, + "Name": "Sizes", + "Position": 3 + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog/pvt/specificationgroup": { + "post": { + "tags": [ + "Specification Group" + ], + "summary": "Create Specification Group", + "description": "Create a specification group. \r\n>⚠️ It is also possible to create a Specification Group by using an alternative legacy route: `/api/catalog_system/pvt/specification/group`. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"CategoryId\": 1,\r\n \"Name\": \"Sizes\"\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 6,\r\n \"CategoryId\": 1,\r\n \"Name\": \"Sizes\",\r\n \"Position\": 3\r\n}\r\n```", + "operationId": "SpecificationGroupInsert2", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SpecificationGroupInsertRequest" + }, + "example": { + "CategoryId": 1, + "Name": "Sizes" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "format": "int32", + "description": "Specification Group ID." + }, + "CategoryId": { + "type": "integer", + "format": "int32", + "description": "Category ID." + }, + "Name": { + "type": "string", + "description": "Specification Group Name." + }, + "Position": { + "type": "integer", + "format": "int32", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - Specification Group Position." + } + } + }, + "example": { + "Id": 10, + "CategoryId": 1, + "Name": "Sizes", + "Position": 3 + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog/pvt/specificationgroup/{groupId}": { + "put": { + "tags": [ + "Specification Group" + ], + "summary": "Update Specification Group", + "description": "Update a specification group. \r\n>⚠️ It is also possible to update a Specification Group by using an alternative legacy route: `/api/catalog_system/pvt/specification/group`.\r\n\r\n## Request and response body example\r\n\r\n```json\r\n{\r\n \"CategoryId\": 1,\r\n \"Id\": 17,\r\n \"Name\": \"NewGroupName\",\r\n \"Position\": 1\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "groupId", + "in": "path", + "required": true, + "description": "Group’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "CategoryId", + "Name", + "Id", + "Position" + ], + "properties": { + "CategoryId": { + "type": "integer", + "description": "Category ID where the Specification Group is contained.", + "example": 1 + }, + "Id": { + "type": "integer", + "format": "int32", + "description": "Specification Group ID.", + "example": 24 + }, + "Name": { + "type": "string", + "description": "Specification Group Name.", + "example": "Sizes" + }, + "Position": { + "type": "integer", + "description": "Specification Group Position.", + "example": 1 + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "CategoryId": { + "type": "integer", + "description": "Category ID where the Specification Group is contained.", + "example": 1 + }, + "Id": { + "type": "integer", + "format": "int32", + "description": "Specification Group ID.", + "example": 24 + }, + "Name": { + "type": "string", + "description": "Specification Group Name.", + "example": "Sizes" + }, + "Position": { + "type": "integer", + "description": "Specification Group Position.", + "example": 1 + } + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/specification/nonstructured/{Id}": { + "get": { + "tags": [ + "Non Structured Specification" + ], + "summary": "Get Non Structured Specification by ID", + "description": "Retrieves general information about unmapped Specifications of a Seller's SKU in a Marketplace. \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 1010,\r\n \"SkuId\": 310119072,\r\n \"SpecificationName\": \"size\",\r\n \"SpecificationValue\": \"Small\"\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Id", + "in": "path", + "required": true, + "description": "Non Structured Specification’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1010 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Non Structured Specification’s unique numerical identifier.", + "example": 1010 + }, + "SkuId": { + "type": "integer", + "description": "SKU's unique numerical identifier.", + "example": 310119072 + }, + "SpecificationName": { + "type": "string", + "description": "Name of the Non Structured Specification.", + "example": "size" + }, + "SpecificationValue": { + "type": "string", + "description": "Value of the Non Structured Specification.", + "example": "Small" + } + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "Non Structured Specification" + ], + "summary": "Delete Non Structured Specification", + "description": "Deletes unmapped Specifications of a Seller'S SKU in a Marketplace by its unique ID.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Id", + "in": "path", + "required": true, + "description": "Non Structured Specification’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/specification/nonstructured": { + "get": { + "tags": [ + "Non Structured Specification" + ], + "summary": "Get Non Structured Specification by SKU ID", + "description": "Gets general information about unmapped Specifications of a Seller's SKU in a Marketplace by SKU ID. \r\n## Response body example\r\n\r\n```json\r\n[\r\n{\r\n \"Id\": 1010,\r\n \"SkuId\": 310119072,\r\n \"SpecificationName\": \"size\",\r\n \"SpecificationValue\": \"Small\"\r\n}\r\n]\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "query", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Non Structured Specification’s unique numerical identifier.", + "example": 1010 + }, + "SkuId": { + "type": "integer", + "description": "SKU's unique numerical identifier.", + "example": 310119072 + }, + "SpecificationName": { + "type": "string", + "description": "Name of the Non Structured Specification.", + "example": "size" + }, + "SpecificationValue": { + "type": "string", + "description": "Value of the Non Structured Specification.", + "example": "Small" + } + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "Non Structured Specification" + ], + "summary": "Delete Non Structured Specification by SKU ID", + "description": "Deletes unmapped Specifications of a Seller'S SKU in a Marketplace by SKU ID.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "skuId", + "in": "query", + "required": true, + "description": "SKU’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog_system/pvt/saleschannel/list": { + "get": { + "tags": [ + "Sales Channel" + ], + "summary": "Get Sales Channel List", + "description": "Retrieves a list with details about the store's sales channels. \r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Id\": 1,\r\n \"Name\": \"Loja Principal\",\r\n \"IsActive\": true,\r\n \"ProductClusterId\": null,\r\n \"CountryCode\": \"BRA\",\r\n \"CultureInfo\": \"pt-BR\",\r\n \"TimeZone\": \"E. South America Standard Time\",\r\n \"CurrencyCode\": \"BRL\",\r\n \"CurrencySymbol\": \"R$\",\r\n \"CurrencyLocale\": 1046,\r\n \"CurrencyFormatInfo\": {\r\n \"CurrencyDecimalDigits\": 1,\r\n \"CurrencyDecimalSeparator\": \",\",\r\n \"CurrencyGroupSeparator\": \".\",\r\n \"CurrencyGroupSize\": 3,\r\n \"StartsWithCurrencySymbol\": true\r\n },\r\n \"Origin\": null,\r\n \"Position\": 2,\r\n \"ConditionRule\": null,\r\n \"CurrencyDecimalDigits\": 1\r\n }\r\n]\r\n```", + "operationId": "SalesChannelList", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Sales Channel unique identifier.", + "example": 1 + }, + "Name": { + "type": "string", + "description": "Sales Channel name.", + "example": "Loja Principal" + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the Sales Channel is active (`true`) or not (`false`)." + }, + "ProductClusterId": { + "type": "integer", + "description": "Product Cluster ID, if the Sales Channel has releated Product Cluster.", + "nullable": true, + "example": null + }, + "CountryCode": { + "type": "string", + "description": "Country Code in ISO 3166-1 alfa-3 Standard.", + "example": "BRA" + }, + "CultureInfo": { + "type": "string", + "description": "Language Country code in LCIDstring Standard.", + "example": "pt-BR" + }, + "TimeZone": { + "type": "string", + "description": "Name of Time Zone.", + "example": "E. South America Standard Time" + }, + "CurrencyCode": { + "type": "string", + "description": "Currency Code in ISO 4217 standard.", + "example": "BRL" + }, + "CurrencySymbol": { + "type": "string", + "description": "Currency symbol.", + "example": "R$" + }, + "CurrencyLocale": { + "type": "integer", + "description": "Currency Locale Code in LCID standard.", + "example": 1046 + }, + "CurrencyFormatInfo": { + "type": "object", + "description": "Object with currency format.", + "properties": { + "CurrencyDecimalDigits": { + "type": "integer", + "description": "Quantity of Currency Decimal Digits.", + "example": 1 + }, + "CurrencyDecimalSeparator": { + "type": "string", + "description": "Defines which Currency Decimal Separator will be applied.", + "example": "," + }, + "CurrencyGroupSeparator": { + "type": "string", + "description": "Defines which Currency Group Separator will be applied.", + "example": "." + }, + "CurrencyGroupSize": { + "type": "integer", + "description": "Define how many characters will be grouped.", + "example": 3 + }, + "StartsWithCurrencySymbol": { + "type": "boolean", + "description": "Defines if all prices will be initiated with Currency Symbol (`true`) or not (`false`).", + "example": true + } + } + }, + "Origin": { + "type": "string", + "description": "Origin of products in the Sales Channel.", + "nullable": true, + "example": null + }, + "Position": { + "type": "integer", + "description": "Defines the position on index.", + "nullable": true, + "example": 1 + }, + "ConditionRule": { + "type": "string", + "description": "Defines what is the conditional rule to activate de Sales Channel.", + "nullable": true, + "example": "approved=true" + }, + "CurrencyDecimalDigits": { + "type": "integer", + "description": "Quantity of Currency Decimal Digits.", + "example": 1 + } + } + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pub/saleschannel/{salesChannelId}": { + "get": { + "tags": [ + "Sales Channel" + ], + "summary": "Get Sales Channel by ID", + "description": "Retrieves a specific sales channel by its ID. \r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 1,\r\n \"Name\": \"Loja Principal\",\r\n \"IsActive\": true,\r\n \"ProductClusterId\": null,\r\n \"CountryCode\": \"BRA\",\r\n \"CultureInfo\": \"pt-BR\",\r\n \"TimeZone\": \"E. South America Standard Time\",\r\n \"CurrencyCode\": \"BRL\",\r\n \"CurrencySymbol\": \"R$\",\r\n \"CurrencyLocale\": 1046,\r\n \"CurrencyFormatInfo\": {\r\n \"CurrencyDecimalDigits\": 1,\r\n \"CurrencyDecimalSeparator\": \",\",\r\n \"CurrencyGroupSeparator\": \".\",\r\n \"CurrencyGroupSize\": 3,\r\n \"StartsWithCurrencySymbol\": true\r\n },\r\n \"Origin\": null,\r\n \"Position\": 2,\r\n \"ConditionRule\": null,\r\n \"CurrencyDecimalDigits\": 1\r\n}\r\n```", + "operationId": "SalesChannelbyId", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "salesChannelId", + "in": "path", + "description": "", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "1" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Sales Channel unique identifier.", + "example": 1 + }, + "Name": { + "type": "string", + "description": "Sales Channel name.", + "example": "Loja Principal" + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the Sales Channel is active (`true`) or not (`false`)." + }, + "ProductClusterId": { + "type": "integer", + "description": "Product Cluster ID, if the Sales Channel has releated Product Cluster.", + "nullable": true, + "example": null + }, + "CountryCode": { + "type": "string", + "description": "Country Code in ISO 3166-1 alfa-3 Standard.", + "example": "BRA" + }, + "CultureInfo": { + "type": "string", + "description": "Language Country code in LCIDstring Standard.", + "example": "pt-BR" + }, + "TimeZone": { + "type": "string", + "description": "Name of Time Zone.", + "example": "E. South America Standard Time" + }, + "CurrencyCode": { + "type": "string", + "description": "Currency Code in ISO 4217 standard.", + "example": "BRL" + }, + "CurrencySymbol": { + "type": "string", + "description": "Currency symbol.", + "example": "R$" + }, + "CurrencyLocale": { + "type": "integer", + "description": "Currency Locale Code in LCID standard.", + "example": 1046 + }, + "CurrencyFormatInfo": { + "type": "object", + "description": "Object with currency format.", + "properties": { + "CurrencyDecimalDigits": { + "type": "integer", + "description": "Quantity of Currency Decimal Digits.", + "example": 1 + }, + "CurrencyDecimalSeparator": { + "type": "string", + "description": "Defines which Currency Decimal Separator will be applied.", + "example": "," + }, + "CurrencyGroupSeparator": { + "type": "string", + "description": "Defines which Currency Group Separator will be applied.", + "example": "." + }, + "CurrencyGroupSize": { + "type": "integer", + "description": "Define how many characters will be grouped.", + "example": 3 + }, + "StartsWithCurrencySymbol": { + "type": "boolean", + "description": "Defines if all prices will be initiated with Currency Symbol (`true`) or not (`false`).", + "example": true + } + } + }, + "Origin": { + "type": "string", + "description": "Origin of products in the Sales Channel.", + "nullable": true, + "example": null + }, + "Position": { + "type": "integer", + "description": "Defines the position on index.", + "nullable": true, + "example": 1 + }, + "ConditionRule": { + "type": "string", + "description": "Defines what is the conditional rule to activate de Sales Channel.", + "nullable": true, + "example": "approved=true" + }, + "CurrencyDecimalDigits": { + "type": "integer", + "description": "Quantity of Currency Decimal Digits.", + "example": 1 + } + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/seller/list": { + "get": { + "tags": [ + "Seller" + ], + "summary": "Get Seller List", + "description": "Retrieves the seller's details by its ID.", + "operationId": "SellerList", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "sc", + "in": "query", + "description": "Trade policy ID.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int32", + "example": 1 + } + }, + { + "name": "sellerType", + "in": "query", + "description": "Seller type.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "integer", + "format": "int32", + "example": 1 + } + }, + { + "name": "isBetterScope", + "in": "query", + "description": "If the seller is better scope.", + "required": false, + "style": "form", + "explode": true, + "schema": { + "type": "boolean", + "example": false + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "example": { + "SellerId": "pedrostore", + "Name": "pedrostore", + "Email": "breno@breno.com", + "Description": "", + "ExchangeReturnPolicy": "", + "DeliveryPolicy": "", + "UseHybridPaymentOptions": false, + "UserName": null, + "Password": null, + "SecutityPrivacyPolicy": "", + "CNPJ": "12035072751", + "CSCIdentification": "pedrostore", + "ArchiveId": null, + "UrlLogo": null, + "ProductCommissionPercentage": 0.0, + "FreightCommissionPercentage": 0.0, + "CategoryCommissionPercentage": "[{\"CategoryId\":14,\"ProductCommission\":15.0,\"FreightCommission\":0.0}]", + "FulfillmentEndpoint": "http://pedrostore.vtexcommercestable.com.br/api/fulfillment?affiliateid=LDB&sc=1", + "CatalogSystemEndpoint": "http://pedrostore.vtexcommercestable.com.br/api/catalog_system/", + "IsActive": true, + "MerchantName": "", + "FulfillmentSellerId": null, + "SellerType": 1, + "IsBetterScope": false, + "TrustPolicy": "Default" + }, + "type": "object", + "properties": { + "SellerId": { + "type": "string", + "description": "Code used to identify the seller. It is assigned by the marketplace. We recommend filling it in with the seller's account name." + }, + "Name": { + "type": "string", + "description": "Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method." + }, + "Email": { + "type": "string", + "description": "Email of the admin responsible for the seller." + }, + "Description": { + "type": "string", + "description": "Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563)." + }, + "ExchangeReturnPolicy": { + "type": "string", + "description": "Text describing the exchange and return policy previously agreed between the marketplace and the seller." + }, + "DeliveryPolicy": { + "type": "string", + "description": "Text describing the delivery policy previously agreed between the marketplace and the seller." + }, + "UseHybridPaymentOptions": { + "type": "boolean", + "description": "Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller." + }, + "UserName": { + "type": "string", + "description": "Seller username.", + "nullable": true + }, + "Password": { + "type": "string", + "description": "Seller password.", + "nullable": true + }, + "SecutityPrivacyPolicy": { + "type": "string", + "description": "Text describing the security policy previously agreed between the marketplace and the seller." + }, + "CNPJ": { + "type": "string", + "description": "Company registration number." + }, + "CSCIdentification": { + "type": "string", + "description": "CSC identification." + }, + "ArchiveId": { + "type": "integer", + "description": "Seller archive ID.", + "nullable": true + }, + "UrlLogo": { + "type": "string", + "description": "Seller URL logo.", + "nullable": true + }, + "ProductCommissionPercentage": { + "type": "number", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "FreightCommissionPercentage": { + "type": "number", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "CategoryCommissionPercentage": { + "type": "string", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "FulfillmentEndpoint": { + "type": "string", + "description": "URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don’t need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added.", + "nullable": true + }, + "CatalogSystemEndpoint": { + "type": "string", + "description": "URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`." + }, + "IsActive": { + "type": "boolean", + "description": "If the selle is active (`true`) or not (`false`)." + }, + "MerchantName": { + "type": "string", + "description": "Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-de-pagamento--6k5JidhYRUxileNolY2VLx) article to know more." + }, + "FulfillmentSellerId": { + "type": "integer", + "description": "Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank.", + "nullable": true + }, + "SellerType": { + "type": "integer", + "description": "Seller type." + }, + "IsBetterScope": { + "type": "boolean", + "description": "Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI)." + }, + "TrustPolicy": { + "type": "string", + "description": "Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`." + } + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/seller/{sellerId}": { + "get": { + "tags": [ + "Seller" + ], + "summary": "Get Seller by ID", + "description": "Retrieves the seller's details by its ID.", + "operationId": "GetSellerbyId", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "sellerId", + "in": "path", + "description": "ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "pedrostore" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "example": { + "SellerId": "pedrostore", + "Name": "pedrostore", + "Email": "breno@breno.com", + "Description": "", + "ExchangeReturnPolicy": "", + "DeliveryPolicy": "", + "UseHybridPaymentOptions": false, + "UserName": null, + "Password": null, + "SecutityPrivacyPolicy": "", + "CNPJ": "12035072751", + "CSCIdentification": "pedrostore", + "ArchiveId": null, + "UrlLogo": "", + "ProductCommissionPercentage": 0.0, + "FreightCommissionPercentage": 0.0, + "CategoryCommissionPercentage": "[{\"CategoryId\":14,\"ProductCommission\":15.0,\"FreightCommission\":0.0}]", + "FulfillmentEndpoint": "http://pedrostore.vtexcommercestable.com.br/api/fulfillment?affiliateid=LDB&sc=1", + "CatalogSystemEndpoint": "http://pedrostore.vtexcommercestable.com.br/api/catalog_system/", + "IsActive": true, + "MerchantName": "", + "FulfillmentSellerId": null, + "SellerType": 1, + "IsBetterScope": false, + "TrustPolicy": "Default" + }, + "type": "object", + "description": "Object with information of all sellers in the store.", + "properties": { + "SellerId": { + "type": "string", + "description": "Code used to identify the seller. It is assigned by the marketplace. We recommend filling it in with the seller's account name." + }, + "Name": { + "type": "string", + "description": "Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method." + }, + "Email": { + "type": "string", + "description": "Email of the admin responsible for the seller." + }, + "Description": { + "type": "string", + "description": "Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563)." + }, + "ExchangeReturnPolicy": { + "type": "string", + "description": "Text describing the exchange and return policy previously agreed between the marketplace and the seller." + }, + "DeliveryPolicy": { + "type": "string", + "description": "Text describing the delivery policy previously agreed between the marketplace and the seller." + }, + "UseHybridPaymentOptions": { + "type": "boolean", + "description": "Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller. " + }, + "UserName": { + "type": "string", + "description": "Seller username.", + "nullable": true + }, + "Password": { + "type": "string", + "description": "Seller password.", + "nullable": true + }, + "SecutityPrivacyPolicy": { + "type": "string", + "description": "Text describing the security policy previously agreed between the marketplace and the seller." + }, + "CNPJ": { + "type": "string", + "description": "Company registration number." + }, + "CSCIdentification": { + "type": "string", + "description": "CSC identification." + }, + "ArchiveId": { + "type": "integer", + "description": "Seller archive ID.", + "nullable": true + }, + "UrlLogo": { + "type": "string", + "description": "Seller URL logo." + }, + "ProductCommissionPercentage": { + "type": "number", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "FreightCommissionPercentage": { + "type": "number", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "CategoryCommissionPercentage": { + "type": "string", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "FulfillmentEndpoint": { + "type": "string", + "description": "URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don’t need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added.", + "nullable": true + }, + "CatalogSystemEndpoint": { + "type": "string", + "description": "URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`." + }, + "IsActive": { + "type": "boolean", + "description": "If the selle is active (`true`) or not (`false`)." + }, + "MerchantName": { + "type": "string", + "description": "Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-de-pagamento--6k5JidhYRUxileNolY2VLx) article to know more." + }, + "FulfillmentSellerId": { + "type": "integer", + "description": "Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank.", + "nullable": true + }, + "SellerType": { + "type": "integer", + "description": "Seller type." + }, + "IsBetterScope": { + "type": "boolean", + "description": "Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI)." + }, + "TrustPolicy": { + "type": "string", + "description": "Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`." + } + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/seller": { + "put": { + "tags": [ + "Seller" + ], + "summary": "Update Seller", + "description": "Updates a seller.", + "operationId": "UpdateSeller", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSellerRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "example": { + "SellerId": "pedrostore", + "Name": "pedrostore", + "Email": "breno@breno.com", + "Description": "", + "ExchangeReturnPolicy": "", + "DeliveryPolicy": "", + "UseHybridPaymentOptions": false, + "UserName": null, + "Password": null, + "SecutityPrivacyPolicy": "", + "CNPJ": "12035072751", + "CSCIdentification": "pedrostore", + "ArchiveId": null, + "UrlLogo": null, + "ProductCommissionPercentage": 0.0, + "FreightCommissionPercentage": 0.0, + "CategoryCommissionPercentage": "[{\"CategoryId\":14,\"ProductCommission\":15.0,\"FreightCommission\":0.0}]", + "FulfillmentEndpoint": "http://pedrostore.vtexcommercestable.com.br/api/fulfillment?affiliateid=LDB&sc=1", + "CatalogSystemEndpoint": "http://pedrostore.vtexcommercestable.com.br/api/catalog_system/", + "IsActive": true, + "MerchantName": "", + "FulfillmentSellerId": null, + "SellerType": 1, + "IsBetterScope": false, + "TrustPolicy": "Default" + }, + "type": "object", + "properties": { + "SellerId": { + "type": "string", + "description": "Code used to identify the seller. It is assigned by the marketplace. We recommend filling it in with the seller's account name." + }, + "Name": { + "type": "string", + "description": "Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method." + }, + "Email": { + "type": "string", + "description": "Email of the admin responsible for the seller." + }, + "Description": { + "type": "string", + "description": "Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563)." + }, + "ExchangeReturnPolicy": { + "type": "string", + "description": "Text describing the exchange and return policy previously agreed between the marketplace and the seller." + }, + "DeliveryPolicy": { + "type": "string", + "description": "Text describing the delivery policy previously agreed between the marketplace and the seller." + }, + "UseHybridPaymentOptions": { + "type": "boolean", + "description": "Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller." + }, + "UserName": { + "type": "string", + "description": "Seller username.", + "nullable": true + }, + "Password": { + "type": "string", + "description": "Seller password.", + "nullable": true + }, + "SecutityPrivacyPolicy": { + "type": "string", + "description": "Text describing the security policy previously agreed between the marketplace and the seller." + }, + "CNPJ": { + "type": "string", + "description": "Company registration number." + }, + "CSCIdentification": { + "type": "string", + "description": "CSC identification." + }, + "ArchiveId": { + "type": "integer", + "description": "Seller archive ID.", + "nullable": true + }, + "UrlLogo": { + "type": "string", + "description": "Seller URL logo.", + "nullable": true + }, + "ProductCommissionPercentage": { + "type": "number", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "FreightCommissionPercentage": { + "type": "number", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "CategoryCommissionPercentage": { + "type": "string", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "FulfillmentEndpoint": { + "type": "string", + "description": "URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don’t need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added.", + "nullable": true + }, + "CatalogSystemEndpoint": { + "type": "string", + "description": "URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`." + }, + "IsActive": { + "type": "boolean", + "description": "If the selle is active (`true`) or not (`false`)." + }, + "MerchantName": { + "type": "string", + "description": "Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-de-pagamento--6k5JidhYRUxileNolY2VLx) article to know more." + }, + "FulfillmentSellerId": { + "type": "integer", + "description": "Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank.", + "nullable": true + }, + "SellerType": { + "type": "integer", + "description": "Seller type." + }, + "IsBetterScope": { + "type": "boolean", + "description": "Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI)." + }, + "TrustPolicy": { + "type": "string", + "description": "Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`." + } + } + } + } + } + } + }, + "deprecated": false + }, + "post": { + "tags": [ + "Seller" + ], + "summary": "Create Seller", + "description": "Creates a new seller.", + "operationId": "CreateSeller", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSellerRequest" + }, + "example": { + "SellerId": "myseller", + "Name": "My Seller", + "Email": "myseller@vtex.com", + "Description": "", + "ExchangeReturnPolicy": "", + "DeliveryPolicy": "", + "UseHybridPaymentOptions": false, + "UserName": "", + "Password": "", + "SecutityPrivacyPolicy": "", + "CNPJ": "12345678912345", + "CSCIdentification": "myseller", + "ArchiveId": 1, + "UrlLogo": "", + "ProductCommissionPercentage": 1.5, + "FreightCommissionPercentage": 0, + "FulfillmentEndpoint": "http://fulfillment.vtexcommerce.com.br/api/fulfillment?affiliateid=VTX&sc=1&an=myseller", + "CatalogSystemEndpoint": "http://myseller.vtexcommercestable.com.br/api/catalog_system/", + "IsActive": true, + "FulfillmentSellerId": 2, + "SellerType": 1, + "IsBetterScope": false + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "example": { + "SellerId": "pedrostore", + "Name": "pedrostore", + "Email": "breno@breno.com", + "Description": "", + "ExchangeReturnPolicy": "", + "DeliveryPolicy": "", + "UseHybridPaymentOptions": false, + "UserName": null, + "Password": null, + "SecutityPrivacyPolicy": "", + "CNPJ": "12035072751", + "CSCIdentification": "pedrostore", + "ArchiveId": null, + "UrlLogo": null, + "ProductCommissionPercentage": 0.0, + "FreightCommissionPercentage": 0.0, + "CategoryCommissionPercentage": "[{\"CategoryId\":14,\"ProductCommission\":15.0,\"FreightCommission\":0.0}]", + "FulfillmentEndpoint": "http://pedrostore.vtexcommercestable.com.br/api/fulfillment?affiliateid=LDB&sc=1", + "CatalogSystemEndpoint": "http://pedrostore.vtexcommercestable.com.br/api/catalog_system/", + "IsActive": true, + "MerchantName": "", + "FulfillmentSellerId": null, + "SellerType": 1, + "IsBetterScope": false, + "TrustPolicy": "Default" + }, + "type": "object", + "properties": { + "SellerId": { + "type": "string", + "description": "Code used to identify the seller. It is assigned by the marketplace. We recommend filling it in with the seller's account name." + }, + "Name": { + "type": "string", + "description": "Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method." + }, + "Email": { + "type": "string", + "description": "Email of the admin responsible for the seller. " + }, + "Description": { + "type": "string", + "description": "Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563)." + }, + "ExchangeReturnPolicy": { + "type": "string", + "description": "Text describing the exchange and return policy previously agreed between the marketplace and the seller." + }, + "DeliveryPolicy": { + "type": "string", + "description": "Text describing the delivery policy previously agreed between the marketplace and the seller." + }, + "UseHybridPaymentOptions": { + "type": "boolean", + "description": "Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller. " + }, + "UserName": { + "type": "string", + "description": "Seller username.", + "nullable": true + }, + "Password": { + "type": "string", + "description": "Seller password.", + "nullable": true + }, + "SecutityPrivacyPolicy": { + "type": "string", + "description": "Text describing the security policy previously agreed between the marketplace and the seller." + }, + "CNPJ": { + "type": "string", + "description": "Company registration number." + }, + "CSCIdentification": { + "type": "string", + "description": "CSC identification." + }, + "ArchiveId": { + "type": "integer", + "description": "Seller archive ID.", + "nullable": true + }, + "UrlLogo": { + "type": "string", + "description": "Seller URL logo.", + "nullable": true + }, + "ProductCommissionPercentage": { + "type": "number", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "FreightCommissionPercentage": { + "type": "number", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "CategoryCommissionPercentage": { + "type": "string", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "FulfillmentEndpoint": { + "type": "string", + "description": "URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don’t need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added.", + "nullable": true + }, + "CatalogSystemEndpoint": { + "type": "string", + "description": "URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`." + }, + "IsActive": { + "type": "boolean", + "description": "If the selle is active (`true`) or not (`false`)." + }, + "MerchantName": { + "type": "string", + "description": "Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-de-pagamento--6k5JidhYRUxileNolY2VLx) article to know more." + }, + "FulfillmentSellerId": { + "type": "integer", + "description": "Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank.", + "nullable": true + }, + "SellerType": { + "type": "integer", + "description": "Seller type." + }, + "IsBetterScope": { + "type": "boolean", + "description": "Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI)." + }, + "TrustPolicy": { + "type": "string", + "description": "Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`." + } + } + } + } + } + } + } + } + }, + "/api/catalog_system/pvt/sellers/{sellerId}": { + "get": { + "tags": [ + "Seller" + ], + "summary": "Get Seller by ID", + "description": "Retrieves the seller's details by its ID.", + "operationId": "GetSellersbyId", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "sellerId", + "in": "path", + "description": "ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "pedrostore" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "example": { + "SellerId": "pedrostore", + "Name": "pedrostore", + "Email": "breno@breno.com", + "Description": "", + "ExchangeReturnPolicy": "", + "DeliveryPolicy": "", + "UseHybridPaymentOptions": false, + "UserName": null, + "Password": null, + "SecutityPrivacyPolicy": "", + "CNPJ": "12035072751", + "CSCIdentification": "pedrostore", + "ArchiveId": null, + "UrlLogo": "", + "ProductCommissionPercentage": 0.0, + "FreightCommissionPercentage": 0.0, + "CategoryCommissionPercentage": "[{\"CategoryId\":14,\"ProductCommission\":15.0,\"FreightCommission\":0.0}]", + "FulfillmentEndpoint": "http://pedrostore.vtexcommercestable.com.br/api/fulfillment?affiliateid=LDB&sc=1", + "CatalogSystemEndpoint": "http://pedrostore.vtexcommercestable.com.br/api/catalog_system/", + "IsActive": true, + "MerchantName": "", + "FulfillmentSellerId": null, + "SellerType": 1, + "IsBetterScope": false, + "TrustPolicy": "Default" + }, + "type": "object", + "description": "Object with information of all sellers in the store.", + "properties": { + "SellerId": { + "type": "string", + "description": "Code used to identify the seller. It is assigned by the marketplace. We recommend filling it in with the seller's account name." + }, + "Name": { + "type": "string", + "description": "Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method.", + "nullable": true + }, + "Email": { + "type": "string", + "description": "Email of the admin responsible for the seller. ", + "nullable": true + }, + "Description": { + "type": "string", + "description": "Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563)." + }, + "ExchangeReturnPolicy": { + "type": "string", + "description": "Text describing the exchange and return policy previously agreed between the marketplace and the seller." + }, + "DeliveryPolicy": { + "type": "string", + "description": "Text describing the delivery policy previously agreed between the marketplace and the seller." + }, + "UseHybridPaymentOptions": { + "type": "boolean", + "description": "Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller. " + }, + "UserName": { + "type": "string", + "description": "Seller username.", + "nullable": true + }, + "Password": { + "type": "string", + "description": "Seller password.", + "nullable": true + }, + "SecutityPrivacyPolicy": { + "type": "string", + "description": "Text describing the security policy previously agreed between the marketplace and the seller." + }, + "CNPJ": { + "type": "string", + "description": "Company registration number." + }, + "CSCIdentification": { + "type": "string", + "description": "CSC identification." + }, + "ArchiveId": { + "type": "integer", + "description": "Seller archive ID.", + "nullable": true + }, + "UrlLogo": { + "type": "string", + "description": "Seller URL logo." + }, + "ProductCommissionPercentage": { + "type": "number", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "FreightCommissionPercentage": { + "type": "number", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "CategoryCommissionPercentage": { + "type": "string", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`." + }, + "FulfillmentEndpoint": { + "type": "string", + "description": "URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don’t need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added.", + "nullable": true + }, + "CatalogSystemEndpoint": { + "type": "string", + "description": "URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`." + }, + "IsActive": { + "type": "boolean", + "description": "If the selle is active (`true`) or not (`false`)." + }, + "MerchantName": { + "type": "string", + "description": "Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-de-pagamento--6k5JidhYRUxileNolY2VLx) article to know more." + }, + "FulfillmentSellerId": { + "type": "integer", + "description": "Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank.", + "nullable": true + }, + "SellerType": { + "type": "integer", + "description": "Seller type." + }, + "IsBetterScope": { + "type": "boolean", + "description": "Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI)." + }, + "TrustPolicy": { + "type": "string", + "description": "Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`." + } + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/catalog/pvt/supplier": { + "post": { + "tags": [ + "Supplier" + ], + "summary": "Create Supplier", + "description": "Creates a new Supplier. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"Name\": \"Supplier\",\r\n \"CorporateName\": \"TopStore\",\r\n \"StateInscription\": \"\",\r\n \"Cnpj\": \"33304981001272\",\r\n \"Phone\": \"3333333333\",\r\n \"CellPhone\": \"4444444444\",\r\n \"CorportePhone\": \"5555555555\",\r\n \"Email\": \"email@email.com\",\r\n \"IsActive\": true\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 1,\r\n \"Name\": \"Supplier\",\r\n \"CorporateName\": \"TopStore\",\r\n \"StateInscription\": \"\",\r\n \"Cnpj\": \"33304981001272\",\r\n \"Phone\": \"3333333333\",\r\n \"CellPhone\": \"4444444444\",\r\n \"CorportePhone\": \"5555555555\",\r\n \"Email\": \"email@email.com\",\r\n \"IsActive\": true\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SupplierRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SupplierResponse" + } + } + } + } + } + } + }, + "/api/catalog/pvt/supplier/{supplierId}": { + "put": { + "tags": [ + "Supplier" + ], + "summary": "Update Supplier", + "description": "Updates general information of an existing Supplier. \r\n## Request body example\r\n\r\n```json\r\n{\r\n \"Name\": \"Supplier\",\r\n \"CorporateName\": \"TopStore\",\r\n \"StateInscription\": \"\",\r\n \"Cnpj\": \"33304981001272\",\r\n \"Phone\": \"3333333333\",\r\n \"CellPhone\": \"4444444444\",\r\n \"CorportePhone\": \"5555555555\",\r\n \"Email\": \"email@email.com\",\r\n \"IsActive\": true\r\n}\r\n```\r\n\r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 1,\r\n \"Name\": \"Supplier\",\r\n \"CorporateName\": \"TopStore\",\r\n \"StateInscription\": \"\",\r\n \"Cnpj\": \"33304981001272\",\r\n \"Phone\": \"3333333333\",\r\n \"CellPhone\": \"4444444444\",\r\n \"CorportePhone\": \"5555555555\",\r\n \"Email\": \"email@email.com\",\r\n \"IsActive\": true\r\n}\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "supplierId", + "in": "path", + "required": true, + "description": "Supplier's unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SupplierRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SupplierResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Supplier" + ], + "summary": "Delete Supplier", + "description": "Deletes an existing Supplier.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "supplierId", + "in": "path", + "required": true, + "description": "Supplier's unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog/pvt/product/{productId}/salespolicy": { + "get": { + "tags": [ + "Trade Policy" + ], + "summary": "Get Trade Policies by Product ID", + "description": "Retrieves a list of Trade Policies associated to a Product based on the Product's ID. \r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"ProductId\": 1,\r\n \"StoreId\": 1\r\n },\r\n {\r\n \"ProductId\": 1,\r\n \"StoreId\": 2\r\n },\r\n {\r\n \"ProductId\": 1,\r\n \"StoreId\": 3\r\n },\r\n {\r\n \"ProductId\": 1,\r\n \"StoreId\": 4\r\n }\r\n]\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "required": true, + "description": "Product’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "description": "Object containing the Product ID and the Trade Policy ID.", + "properties": { + "ProductId": { + "type": "integer", + "description": "Product’s unique numerical identifier.", + "example": 1 + }, + "StoreId": { + "type": "integer", + "description": "Trade policy's unique numerical identifier.", + "example": 1 + } + } + } + } + } + } + } + } + } + }, + "/api/catalog/pvt/product/{productId}/salespolicy/{tradepolicyId}": { + "post": { + "tags": [ + "Trade Policy" + ], + "summary": "Associate Product with Trade Policy", + "description": "Associates an existing Trade Policy with a Product.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "required": true, + "description": "Product’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "tradepolicyId", + "in": "path", + "required": true, + "description": "Trade Policy’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + }, + "delete": { + "tags": [ + "Trade Policy" + ], + "summary": "Remove Product from Trade Policy", + "description": "Disassociates a Trade Policy of a Product.", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "required": true, + "description": "Product’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "tradepolicyId", + "in": "path", + "required": true, + "description": "Trade Policy’s unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK" + } + } + } + }, + "/api/catalog_system/pvt/sku/stockkeepingunitidsbysaleschannel": { + "get": { + "tags": [ + "Trade Policy" + ], + "summary": "List all SKUs of a Trade Policy", + "description": "Retrieves a list of SKU IDs of a Trade Policy. \r\n## Response body example\r\n\r\n```json\r\n[\r\n 405380,\r\n 405381,\r\n 405382,\r\n 405383,\r\n 405384,\r\n 405385,\r\n 405386,\r\n 405387,\r\n 405388,\r\n 405389,\r\n 405390,\r\n 405391,\r\n 405392,\r\n 405393,\r\n 405394,\r\n 405395,\r\n 405396,\r\n 405397,\r\n 405398,\r\n 405399,\r\n 405400,\r\n 405556\r\n]\r\n```", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "sc", + "in": "query", + "required": true, + "description": "Trade Policy’s unique numerical identifier.", + "style": "form", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "page", + "in": "query", + "required": false, + "description": "Page number.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "required": false, + "description": "Number of items in the page.", + "schema": { + "type": "integer", + "example": 1 + } + }, + { + "name": "onlyAssigned", + "in": "query", + "required": false, + "description": "If set as `false`, it allows the user to decide if the SKUs that are not assigned to a specific trade policy should be also returned.", + "schema": { + "type": "boolean", + "example": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": [ + 405380, + 405381, + 405382, + 405383, + 405384, + 405385, + 405386, + 405387, + 405388, + 405389, + 405390, + 405391, + 405392, + 405393, + 405394, + 405395, + 405396, + 405397, + 405398, + 405399, + 405400, + 405556 + ], + "schema": { + "type": "array", + "description": "List of SKU IDs of the Trade Policy.", + "items": { + "type": "integer", + "example": 1 + } + } + } + } + } + } + } + }, + "/api/catalog_system/pvt/products/GetIndexedInfo/{productId}": { + "get": { + "tags": [ + "Product Indexing" + ], + "summary": "Get Product Indexed Information", + "description": "Retrieve details of a Product's Indexed Information in XML format. \r\n## Response body example\r\n\r\n```xml\r\n\"\r\n\\n\r\n\\n\r\n \r\n true\r\n 0\r\n 2\r\n \r\n *\r\n \r\n instanceId:394dbdc8-b1f4-4dea-adfa-1ec104f3bfe1\r\n productId:1\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \\n\r\n\\n\"\r\n```", + "operationId": "IndexedInfo", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "productId", + "in": "path", + "description": "Product’s unique numerical identifier.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "1" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "xml": {} + } + } + }, + "deprecated": false + } + }, + "/api/catalog_system/pvt/commercialcondition/list": { + "get": { + "tags": [ + "Commercial Conditions" + ], + "summary": "Get all commercial conditions", + "description": "Lists all commercial conditions on the store. \r\n## Response body example\r\n\r\n```json\r\n[\r\n {\r\n \"Id\": 1,\r\n \"Name\": \"Padrão\",\r\n \"IsDefault\": true\r\n },\r\n {\r\n \"Id\": 2,\r\n \"Name\": \"Teste Fast\",\r\n \"IsDefault\": false\r\n }\r\n]\r\n```", + "operationId": "GetAllCommercialConditions", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "example": [ + { + "Id": 1, + "Name": "Padrão", + "IsDefault": true + }, + { + "Id": 2, + "Name": "Secundária", + "IsDefault": false + }, + { + "Id": 3, + "Name": "Parcelamento 18x", + "IsDefault": false + } + ], + "items": { + "type": "object", + "description": "Object with information of the commercial condition.", + "example": { + "Id": 1, + "Name": "Padrão", + "IsDefault": true + }, + "properties": { + "Id": { + "type": "integer", + "description": "Commercial condition ID.", + "example": 1 + }, + "Name": { + "type": "string", + "description": "Commercial condition name.", + "example": "Padrão" + }, + "IsDefault": { + "type": "boolean", + "description": "Defines if the commercial condition is default (`true`) or not (`false`).", + "example": true + } + } + } + } + } + } + } + } + } + }, + "/api/catalog_system/pvt/commercialcondition/{commercialConditionId}": { + "get": { + "tags": [ + "Commercial Conditions" + ], + "summary": "Get commercial condition", + "description": "Retrieves information of a commercial condition by its ID. \r\n## Response body example\r\n\r\n```json\r\n{\r\n \"Id\": 1,\r\n \"Name\": \"Padrão\",\r\n \"IsDefault\": true\r\n}\r\n```", + "operationId": "GetCommercialConditions", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "commercialConditionId", + "in": "path", + "required": true, + "description": "Commercial condition unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Object with information of the commercial condition.", + "example": { + "Id": 1, + "Name": "Padrão", + "IsDefault": true + }, + "properties": { + "Id": { + "type": "integer", + "description": "Commercial condition ID.", + "example": 1 + }, + "Name": { + "type": "string", + "description": "Commercial condition name.", + "example": "Padrão" + }, + "IsDefault": { + "type": "boolean", + "description": "If the commercial condition is default (`true`) or not (`false`).", + "example": true + } + } + } + } + } + } + } + } + }, + "/api/addon/pvt/giftlist/get/{listId}": { + "get": { + "tags": [ + "Gift List" + ], + "summary": "Get Gift List", + "description": "Retrieves information about a Gift List by its ID.", + "operationId": "GetGiftList", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Describes the type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "listId", + "in": "path", + "required": true, + "description": "Gift List unique numerical identifier.", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Object with information about the Gift List.", + "example": { + "giftListId": 1, + "name": "My list", + "userId": "010956A4-A74A-4375-8B7B-3B3B7B89B483", + "clientId": 3, + "fileId": null, + "giftListTypeId": 1, + "giftListTypeName": "Lista de Casamento", + "giftCardId": 2, + "message": "mensageeeem", + "urlFolder": "lili", + "dateCreated": "2011-05-04T13:23:00", + "profileSystemUserAddressName": "CASA", + "profileSystemUserId": "010956A4-A74A-4375-8B7B-3B3B7B89B483", + "eventDate": "2012-12-21T00:00:00", + "eventLocation": "", + "eventCity": "", + "eventState": "", + "telemarketingId": null, + "telemarketingObservation": "", + "IsPublic": false, + "isActive": false, + "shipsToOwner": false, + "isAddressOk": true, + "version": 1, + "giftCardRechargeSkuId": null, + "memberNames": "sei lá", + "giftListMembers": [], + "giftListSkuIds": [], + "address": null, + "fileUrl": null + }, + "properties": { + "giftListId": { + "type": "integer", + "description": "Gift List ID.", + "example": 1 + }, + "name": { + "type": "string", + "description": "Gift List name.", + "example": "My list" + }, + "userId": { + "type": "string", + "description": "User ID.", + "example": "a6e7d995-e884-409d-911f-36b25c40169a" + }, + "fileId": { + "type": "integer", + "description": "File ID.", + "example": 155233, + "nullable": true + }, + "giftListTypeId": { + "type": "integer", + "description": "Gift List Type ID.", + "example": 1 + }, + "giftListTypeName": { + "type": "string", + "description": "Gift List Type name.", + "example": "Wedding list" + }, + "giftCardId": { + "type": "integer", + "description": "Gift Card ID.", + "example": 2 + }, + "message": { + "type": "string", + "description": "Gift List message.", + "example": "This is a gift list for my wedding." + }, + "urlFolder": { + "type": "string", + "description": "Slug of the gift list that will be part of its URL.", + "example": "myweddinglist" + }, + "dateCreated": { + "type": "string", + "description": "Date when the gift list was created.", + "example": "2013-10-31T19:03:00" + }, + "profileSystemUserAddressName": { + "type": "string", + "description": "Name of the user's address.", + "example": "CASA" + }, + "profileSystemUserId": { + "type": "string", + "description": "User ID on Profile System.", + "example": "a6e7d995-e884-409d-911f-36b25c40169a" + }, + "eventDate": { + "type": "string", + "description": "Date of the event associated with the Gift List.", + "example": "2014-07-20T00:00:00" + }, + "eventLocation": { + "type": "string", + "description": "Location of the event associated with the Gift List.", + "example": "Botafogo" + }, + "eventCity": { + "type": "string", + "description": "City of the event associated with the Gift List.", + "example": "Rio de Janeiro" + }, + "eventState": { + "type": "string", + "description": "State of the event associated with the Gift List.", + "example": "RJ" + }, + "telemarketingId": { + "type": "integer", + "description": "Telemarketing ID.", + "example": 1, + "nullable": true + }, + "telemarketingObservation": { + "type": "string", + "description": "Telemarketing observation.", + "example": "" + }, + "IsPublic": { + "type": "boolean", + "description": "Defines if the gift list is public.", + "example": true + }, + "isActive": { + "type": "boolean", + "description": "Defines if the gift list is active.", + "example": true + }, + "shipsToOwner": { + "type": "boolean", + "description": "Defines if items purchased from the gift list will be shipped to the owner of the gift list.", + "example": false + }, + "isAddressOk": { + "type": "boolean", + "description": "Validates the address of the gift list.", + "example": false + }, + "version": { + "type": "integer", + "description": "Version of the gift list.", + "example": 1 + }, + "giftCardRechargeSkuId": { + "type": "integer", + "description": "ID of the SKU that recharges the gift card.", + "example": 1, + "nullable": true + }, + "memberNames": { + "type": "string", + "description": "Name of the members of the gift list.", + "example": "Rafael Villa-Verde" + }, + "giftListMembers": { + "type": "array", + "description": "Array of members of the gift list.", + "items": { + "type": "object", + "description": "Object with information about each gift list member.", + "properties": { + "giftListMemberId": { + "type": "integer", + "description": "Gift List member ID." + }, + "giftListId": { + "type": "integer", + "description": "Gift List ID." + }, + "userId": { + "type": "string", + "description": "User ID." + }, + "clientId": { + "type": "string", + "description": "Client ID.", + "nullable": true + }, + "title": { + "type": "string", + "description": "Title of the Gift List member.", + "nullable": true + }, + "name": { + "type": "string", + "description": "Name of the Gift List member." + }, + "surname": { + "type": "string", + "description": "Surname of the Gift List member." + }, + "isAdmin": { + "type": "boolean", + "description": "Defines if the Gift List member is an administrator of the Gift List or not." + }, + "isActive": { + "type": "boolean", + "description": "Defines if the Gift List user is active or not." + }, + "text1": { + "type": "string", + "description": "Complementary text.", + "nullable": true + }, + "text2": { + "type": "string", + "description": "Complementary text.", + "nullable": true + } + }, + "example": { + "giftListMemberId": 1, + "giftListId": 2, + "userId": "010956A4-A74A-4375-8B7B-3B3B7B89B483", + "clientId": null, + "title": null, + "name": "Rafael", + "surname": "Villa-Verde", + "isAdmin": true, + "isActive": true, + "text1": null, + "text2": null + } + } + }, + "giftListSkuIds": { + "type": "array", + "description": "Array with the IDs of SKUs that are part of the gift list.", + "items": { + "type": "string", + "description": "SKU ID." + } + }, + "address": { + "type": "string", + "description": "Address of the gift list.", + "example": "Botafogo", + "nullable": true + }, + "fileUrl": { + "type": "string", + "description": "File URL.", + "example": "/arquivos/ids/155233-800-800/gl-0_635266293044683588.jpg", + "nullable": true + } + } + } + } + } + } + } + } + }, + "/api/checkout/pub/orderForms/simulation": { + "post": { + "tags": [ + "Shopping cart" + ], + "summary": "Cart simulation", + "description": "This endpoint is used to simulate a cart in VTEX Checkout.\r\n\r\nIt receives an **SKU ID**, the **quantity** of items in the cart and the ID of the **Seller**.\r\n\r\nIt sends back all information about the cart, such as the selling price of each item, rates and benefits data, payment and logistics info.\r\n\r\nThis is useful whenever you need to know the availability of fulfilling an order for a specific cart setting, since the API response will let you know the updated price, inventory and shipping data.\r\n\r\n**Important**: The fields (`sku id`, `quantity`, `seller`, `country`, `postalCode` and `geoCoordinates`) are just examples of content that you can simulate in your cart. You can add more fields to the request as per your need. Access the [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) guide to check the available fields.", + "operationId": "CartSimulation", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "RnbBehavior", + "in": "query", + "description": "This parameter defines which promotions apply to the simulation. Use `0` for simulations at cart stage, which means all promotions apply. In case of window simulation use `1`, which indicates promotions that apply nominal discounts over the total purchase value shouldn't be considered on the simulation.\n\r\n\rNote that if this not sent, the parameter is `1`.", + "required": false, + "style": "form", + "schema": { + "type": "integer", + "default": 0 + } + }, + { + "name": "sc", + "in": "query", + "description": "Trade Policy (Sales Channel) identification.", + "required": false, + "style": "form", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "id", + "quantity", + "seller" + ], + "properties": { + "items": { + "type": "array", + "description": "Array containing information about the SKUs inside the cart to be simulated.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The SKU ID.", + "example": "1" + }, + "quantity": { + "type": "integer", + "format": "int32", + "description": "The quantity of items of this specific SKU in the cart to be simulated.", + "example": 1 + }, + "seller": { + "type": "string", + "description": "The ID of the seller responsible for this SKU. This ID can be found in your VTEX Admin.", + "example": "1" + } + } + } + }, + "marketingData": { + "utmCampaign": { + "type": "string" + }, + "utmSource": { + "type": "string" + }, + "utmiCampaign": { + "type": "string" + }, + "campaigns": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + } + } + }, + "priceTables": { + "type": "array", + "items": { + "type": "string" + } + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address. This value must be sent along with the `postalCode` or `geoCoordinates` values.", + "example": "BRA" + }, + "postalCode": { + "type": "string", + "description": "Postal code.", + "example": "12345-000" + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "default": [ + -47.924747467041016, + -15.832582473754883 + ], + "items": { + "type": "number", + "example": -47.924747467041016 + } + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "headers": {}, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "items": { + "type": "array", + "description": "Information on each item in the cart.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the item." + }, + "requestIndex": { + "type": "integer", + "description": "Request index information." + }, + "quantity": { + "type": "integer", + "description": "The quantity of the item the cart." + }, + "seller": { + "type": "string", + "description": "The seller responsible for the SKU." + }, + "sellerChain": { + "type": "array", + "description": "Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order.", + "items": { + "type": "string", + "description": "Seller." + } + }, + "tax": { + "type": "integer", + "description": "Tax value in cents." + }, + "taxCode": { + "type": "string", + "description": "A unique identifier code assigned to a tax within the VTEX Admin." + }, + "priceValidUntil": { + "type": "string", + "description": "Price expiration date and time." + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "rewardValue": { + "type": "integer", + "description": "Reward value in cents." + }, + "sellingPrice": { + "type": "integer", + "description": "Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead." + }, + "offerings": { + "type": "array", + "description": "Array containing offering information." + }, + "priceTags": { + "type": "array", + "description": "Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Price tag name." + }, + "value": { + "type": "integer", + "description": "Price tag value." + }, + "rawValue": { + "type": "integer", + "description": "Price tag raw value." + }, + "isPercentual": { + "type": "boolean", + "description": "Indicates whether price tag value is applied through a percentage." + }, + "identifier": { + "type": "string", + "description": "Price tag identifier." + }, + "owner": { + "type": "string", + "description": "Identification of the responsible for the price tag." + } + } + } + }, + "measurementUnit": { + "type": "string", + "description": "Measurement unit." + }, + "unitMultiplier": { + "type": "integer", + "description": "Unit multiplier." + }, + "parentItemIndex": { + "type": "integer", + "description": "Parent item index.", + "nullable": true + }, + "parentAssemblyBinding": { + "type": "string", + "description": "Parent assembly binding.", + "nullable": true + }, + "availability": { + "type": "string", + "description": "Availability." + }, + "priceDefinition": { + "type": "object", + "description": "Price information for all units of a specific item.", + "properties": { + "calculatedSellingPrice": { + "type": "integer", + "description": "Item's calculated unitary selling price in cents." + }, + "total": { + "type": "integer", + "description": "Total value for all units of the item in cents." + }, + "sellingPrices": { + "type": "array", + "description": "Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total.", + "items": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "description": "Value in cents for that specific rounding." + }, + "quantity": { + "type": "integer", + "description": "Rounding quantity, meaning how many items are rounded to this value." + } + } + } + } + } + } + } + } + }, + "ratesAndBenefitsData": { + "type": "object", + "description": "Information on rates and benefits that apply to the order.", + "properties": { + "rateAndBenefitsIdentifiers": { + "type": "array", + "description": "List with rates and benefits identifiers." + }, + "teaser": { + "type": "array", + "description": "List with rates and benefits teasers." + } + } + }, + "paymentData": { + "type": "object", + "description": "Payment data information.", + "properties": { + "installmentOptions": { + "type": "array", + "description": "Installment options information.", + "properties": { + "paymentSystem": { + "type": "integer", + "description": "Payment system identification." + }, + "bin": { + "type": "string", + "description": "Bin.", + "nullable": true + }, + "paymentName": { + "type": "string", + "description": "Payment name." + }, + "paymentGroupName": { + "type": "string", + "description": "Payment group name." + }, + "value": { + "type": "integer", + "description": "Total value assigned to this payment." + }, + "installments": { + "type": "array", + "description": "Installments information.", + "properties": { + "count": { + "type": "integer", + "description": "Count information." + }, + "hasInterestRate": { + "type": "boolean", + "description": "Indicates whether the payment has interest." + }, + "interestRate": { + "type": "integer", + "description": "Interest rate value." + }, + "value": { + "type": "integer", + "description": "Value of the order without the interest rate. The value is shown without separating cents." + }, + "total": { + "type": "integer", + "description": "Total value of the order without separating cents. For example, $24.99 is represented `2499`." + }, + "sellerMerchantInstallments": { + "type": "array", + "description": "Seller merchant installments information." + } + } + } + } + }, + "paymentSystems": { + "type": "array", + "description": "Information on payment systems.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "Payment system ID." + }, + "name": { + "type": "string", + "description": "Payment system name." + }, + "groupName": { + "type": "string", + "description": "Payment group name." + }, + "validator": { + "type": "object", + "description": "Payment system validator.", + "nullable": true + }, + "stringId": { + "type": "string", + "description": "String ID." + }, + "template": { + "type": "string", + "description": "Template." + }, + "requiresDocument": { + "type": "boolean", + "description": "Indicates whether a document is required." + }, + "displayDocument": { + "type": "boolean", + "description": "Indicates whether a document is shown." + }, + "isCustom": { + "type": "boolean", + "description": "Indicates whether it is custom." + }, + "description": { + "type": "string", + "description": "Description." + }, + "requiresAuthentication": { + "type": "boolean", + "description": "Indicates whether a authentication is required." + }, + "dueDate": { + "type": "string", + "description": "Payment due date." + }, + "availablePayments": { + "type": "string", + "description": "Availability of payment.", + "nullable": true + } + } + } + }, + "payments": { + "type": "array", + "description": "Information on each payment." + }, + "giftCards": { + "type": "array", + "description": "Gift card information, if it applies to the order." + }, + "giftCardMessages": { + "type": "array", + "description": "Array of gift card messages." + }, + "availableAccounts": { + "type": "array", + "description": "Available accounts." + }, + "availableTokens": { + "type": "array", + "description": "Available tokens." + }, + "availableAssociations": { + "type": "object", + "description": "Available associations." + } + } + }, + "selectableGifts": { + "type": "array", + "description": "Array containing the data of the item selected as a gift." + }, + "marketingData": { + "type": "object", + "description": "Object containing promotion data such as coupon tracking information and internal or external UTMs.", + "nullable": true + }, + "postalCode": { + "type": "string", + "description": "Postal Code.", + "nullable": true + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "logisticsInfo": { + "type": "array", + "description": "Array with logistics information on each item of the `items` array in the `orderForm`.", + "items": { + "type": "object", + "properties": { + "itemIndex": { + "type": "integer", + "description": "Index of item in items array." + }, + "addressId": { + "type": "string", + "description": "Address ID.", + "nullable": true + }, + "selectedSla": { + "type": "string", + "description": "Selected SLA. For example, `\"normal\"` or `\"express\"`.", + "nullable": true + }, + "selectedDeliveryChannel": { + "type": "string", + "description": "Delivery channel selected by the customer. For example, `\"delivery\"` or `\"pickup-in-point\"`.", + "nullable": true + }, + "quantity": { + "type": "integer", + "description": "Quantity." + }, + "shipsTo": { + "type": "array", + "description": "List of countries that the item may be shipped to." + }, + "slas": { + "type": "array", + "description": "Information on available SLAs.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "SLA ID." + }, + "deliveryChannel": { + "type": "string", + "description": "Delivery channel." + }, + "name": { + "type": "string", + "description": "SLA name." + }, + "deliveryIds": { + "type": "array", + "description": "Information on each delivery ID.", + "items": { + "type": "object", + "properties": { + "courierId": { + "type": "string", + "description": "Courier ID." + }, + "warehouseId": { + "type": "string", + "description": "Warehouse ID." + }, + "dockId": { + "type": "string", + "description": "Warehouse ID." + }, + "courierName": { + "type": "string", + "description": "Courier name." + }, + "quantity": { + "type": "integer", + "description": "Quantity." + } + } + } + }, + "shippingEstimate": { + "type": "string", + "description": "Shipping estimate. For instance, \"three business days\" will be represented as `3bd`." + }, + "shippingEstimateDate": { + "type": "string", + "description": "Shipping estimate date.", + "nullable": true + }, + "lockTTL": { + "type": "string", + "description": "Estimate date of delivery." + }, + "availableDeliveryWindows": { + "type": "object", + "description": "This object contains information about the delivery window available to the shopper.", + "properties": { + "startDateUtc": { + "type": "string", + "description": "Delivery window starting day and time in UTC." + }, + "endDateUtc": { + "type": "string", + "description": "Delivery window ending day and time in UTC." + }, + "price": { + "type": "integer", + "description": "Delivery window price." + }, + "lisPrice": { + "type": "integer", + "description": "Delivery window list price." + }, + "tax": { + "type": "integer", + "description": "Delivery window tax." + } + } + }, + "deliveryWindow": { + "type": "object", + "description": "In case of scheduled delivery, this object will contain information on the delivery window selected by the shopper.", + "properties": { + "startDateUtc": { + "type": "string", + "description": "Delivery window starting day and time in UTC." + }, + "endDateUtc": { + "type": "string", + "description": "Delivery window ending day and time in UTC." + }, + "price": { + "type": "integer", + "description": "Delivery window price." + }, + "lisPrice": { + "type": "integer", + "description": "Delivery window list price." + }, + "tax": { + "type": "integer", + "description": "Delivery window tax." + } + } + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "tax": { + "type": "integer", + "description": "Tax in cents." + }, + "pickupStoreInfo": { + "type": "object", + "description": "Information on the pickup store.", + "properties": { + "isPickupStore": { + "type": "boolean", + "description": "Indicates whether it is the pickup store." + }, + "friendlyName": { + "type": "string", + "description": "Friendly name.", + "nullable": true + }, + "address": { + "type": "object", + "description": "Address information.", + "nullable": true + }, + "additionalInfo": { + "type": "string", + "description": "Additional information.", + "nullable": true + }, + "dockId": { + "type": "string", + "description": "Corresponding dock ID.", + "nullable": true + } + } + }, + "pickupPointId": { + "type": "string", + "description": "Pickup point ID.", + "nullable": true + }, + "pickupDistance": { + "type": "integer", + "description": "Pickup point distance." + }, + "polygonName": { + "type": "string", + "description": "Polygon name.", + "nullable": true + }, + "transitTime": { + "type": "string", + "description": "Transit time. For instance, \"three business days\" is represented as `3bd`." + } + } + } + }, + "deliveryChannels": { + "type": "array", + "description": "List of available delivery channels.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Delivery channel ID." + } + } + } + }, + "messages": { + "type": "array", + "description": "Array containing an object for each message generated by our servers while processing the request." + }, + "purchaseConditions": { + "type": "object", + "description": "Purchase conditions information.", + "properties": { + "itemPurchaseConditions": { + "type": "array", + "description": "List of objects containing purchase condition information on each item in the order.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Item ID." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "sellerChain": { + "type": "array", + "description": "Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order." + }, + "slas": { + "type": "array", + "description": "Information on available SLAs.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "SLA ID." + }, + "deliveryChannel": { + "type": "string", + "description": "Delivery channel." + }, + "name": { + "type": "string", + "description": "SLA name." + }, + "deliveryIds": { + "type": "array", + "description": "Information on each delivery ID.", + "items": { + "type": "object", + "properties": { + "courierId": { + "type": "string", + "description": "Courier ID." + }, + "warehouseId": { + "type": "string", + "description": "Warehouse ID." + }, + "dockId": { + "type": "string", + "description": "Warehouse ID." + }, + "courierName": { + "type": "string", + "description": "Courier name." + }, + "quantity": { + "type": "integer", + "description": "Quantity." + } + } + } + }, + "shippingEstimate": { + "type": "string", + "description": "Shipping estimate. For instance, \"three business days\" will be represented as `3bd`." + }, + "shippingEstimateDate": { + "type": "string", + "description": "Shipping estimate date.", + "nullable": true + }, + "lockTTL": { + "type": "string", + "description": "Estimate date of delivery." + }, + "availableDeliveryWindows": { + "type": "object", + "description": "This object contains information about the delivery window available to the shopper.", + "properties": { + "startDateUtc": { + "type": "string", + "description": "Delivery window starting day and time in UTC." + }, + "endDateUtc": { + "type": "string", + "description": "Delivery window ending day and time in UTC." + }, + "price": { + "type": "integer", + "description": "Delivery window price." + }, + "lisPrice": { + "type": "integer", + "description": "Delivery window list price." + }, + "tax": { + "type": "integer", + "description": "Delivery window tax." + } + } + }, + "deliveryWindow": { + "type": "object", + "description": "In case of scheduled delivery, this object will contain information on the delivery window selected by the shopper.", + "properties": { + "startDateUtc": { + "type": "string", + "description": "Delivery window starting day and time in UTC." + }, + "endDateUtc": { + "type": "string", + "description": "Delivery window ending day and time in UTC." + }, + "price": { + "type": "integer", + "description": "Delivery window price." + }, + "lisPrice": { + "type": "integer", + "description": "Delivery window list price." + }, + "tax": { + "type": "integer", + "description": "Delivery window tax." + } + } + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "tax": { + "type": "integer", + "description": "Tax in cents." + }, + "pickupStoreInfo": { + "type": "object", + "description": "Information on the pickup store.", + "properties": { + "isPickupStore": { + "type": "boolean", + "description": "Indicates whether it is the pickup store." + }, + "friendlyName": { + "type": "string", + "description": "Friendly name.", + "nullable": true + }, + "address": { + "type": "object", + "description": "Address information.", + "nullable": true + }, + "additionalInfo": { + "type": "string", + "description": "Additional information.", + "nullable": true + }, + "dockId": { + "type": "string", + "description": "Corresponding dock ID.", + "nullable": true + } + } + }, + "pickupPointId": { + "type": "string", + "description": "Pickup point ID.", + "nullable": true + }, + "pickupDistance": { + "type": "integer", + "description": "Pickup point distance." + }, + "polygonName": { + "type": "string", + "description": "Polygon name.", + "nullable": true + }, + "transitTime": { + "type": "string", + "description": "Transit time. For instance, \"three business days\" is represented as `3bd`." + } + } + } + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + } + } + } + } + } + }, + "pickupPoints": { + "type": "array", + "description": "Array containing pickup points information." + }, + "subscriptionData": { + "type": "object", + "description": "Subscription information.", + "nullable": true + }, + "totals": { + "type": "array", + "description": "Information on order totals.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Total ID." + }, + "name": { + "type": "string", + "description": "Total name." + }, + "value": { + "type": "integer", + "description": "Total value." + } + } + } + }, + "itemMetadata": { + "type": "object", + "description": "Item metadata.", + "properties": { + "items": { + "type": "array", + "description": "List of objects containing metadata on each item in the order.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Item ID." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "assemblyOptions": { + "type": "array", + "description": "Assembly options information.", + "properties": { + "id": { + "type": "string", + "description": "Item ID." + }, + "name": { + "type": "string", + "description": "Item name." + }, + "required": { + "type": "boolean", + "description": "Indicates whether the item is required." + }, + "inputValues": { + "type": "object", + "description": "Input values information." + }, + "composition": { + "type": "string", + "description": "Composition information.", + "nullable": true + } + } + } + } + } + } + } + } + } + } + } + } + }, + "example": { + "items": [ + { + "id": "1", + "requestIndex": 0, + "quantity": 1, + "seller": "1", + "sellerChain": [ + "1" + ], + "tax": 0, + "taxCode": "54WC8ZN6K8", + "priceValidUntil": "2023-07-12T11:49:01Z", + "price": 9999, + "listPrice": 9999, + "rewardValue": 0, + "sellingPrice": 2999700, + "offerings": [], + "priceTags": [ + { + "name": "DISCOUNT@MANUALPRICE", + "value": -5000, + "rawValue": -50.0, + "isPercentual": false, + "identifier": "1234abc-5678b-1234c" + } + ], + "measurementUnit": "un", + "unitMultiplier": 300.0000, + "parentItemIndex": null, + "parentAssemblyBinding": null, + "availability": "available", + "priceDefinition": { + "calculatedSellingPrice": 2999700, + "total": 2999700, + "sellingPrices": [ + { + "value": 2999700, + "quantity": 1 + } + ] + } + } + ], + "ratesAndBenefitsData": { + "rateAndBenefitsIdentifiers": [], + "teaser": [] + }, + "paymentData": { + "installmentOptions": [ + { + "paymentSystem": "2", + "bin": null, + "paymentName": "Visa", + "paymentGroupName": "creditCardPaymentGroup", + "value": 2999700, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 2999700, + "total": 2999700, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 2999700, + "total": 2999700 + } + ] + } + ] + }, + { + "paymentSystem": "6", + "bin": null, + "paymentName": "Boleto Bancário", + "paymentGroupName": "bankInvoicePaymentGroup", + "value": 2999700, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 2999700, + "total": 2999700, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 2999700, + "total": 2999700 + } + ] + } + ] + }, + { + "paymentSystem": "127", + "bin": null, + "paymentName": "MercadoPagoPro", + "paymentGroupName": "MercadoPagoProPaymentGroup", + "value": 2999700, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 2999700, + "total": 2999700, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 2999700, + "total": 2999700 + } + ] + } + ] + }, + { + "paymentSystem": "202", + "bin": null, + "paymentName": "Dinheiro", + "paymentGroupName": "custom202PaymentGroupPaymentGroup", + "value": 2999700, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 2999700, + "total": 2999700, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 2999700, + "total": 2999700 + } + ] + } + ] + } + ], + "paymentSystems": [ + { + "id": 202, + "name": "Dinheiro", + "groupName": "custom202PaymentGroupPaymentGroup", + "validator": null, + "stringId": "202", + "template": "custom202PaymentGroupPaymentGroup-template", + "requiresDocument": false, + "displayDocument": false, + "isCustom": true, + "description": "", + "requiresAuthentication": false, + "dueDate": "2022-07-22T11:39:36.37197Z", + "availablePayments": null + }, + { + "id": 6, + "name": "Boleto Bancário", + "groupName": "bankInvoicePaymentGroup", + "validator": null, + "stringId": "6", + "template": "bankInvoicePaymentGroup-template", + "requiresDocument": false, + "displayDocument": false, + "isCustom": false, + "description": "", + "requiresAuthentication": false, + "dueDate": "2022-07-19T11:39:36.37197Z", + "availablePayments": null + }, + { + "id": 2, + "name": "Visa", + "groupName": "creditCardPaymentGroup", + "validator": null, + "stringId": "2", + "template": "creditCardPaymentGroup-template", + "requiresDocument": false, + "displayDocument": false, + "isCustom": false, + "description": "", + "requiresAuthentication": false, + "dueDate": "2022-07-19T11:39:36.37197Z", + "availablePayments": null + }, + { + "id": 127, + "name": "MercadoPagoPro", + "groupName": "MercadoPagoProPaymentGroup", + "validator": null, + "stringId": "127", + "template": "MercadoPagoProPaymentGroup-template", + "requiresDocument": false, + "displayDocument": false, + "isCustom": false, + "description": "", + "requiresAuthentication": false, + "dueDate": "2022-07-19T11:39:36.37197Z", + "availablePayments": null + } + ], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [], + "availableAssociations": {} + }, + "selectableGifts": [], + "marketingData": { + "utmSource": "app", + "utmMedium": "CPC", + "utmCampaign": "Black friday", + "utmipage": "true", + "utmiPart": "true", + "utmiCampaign": "true", + "coupon": null, + "marketingTags": [ + "tag1", + "tag2" + ] + }, + "country": "BRA", + "postalCode": "12345-000", + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ], + "logisticsInfo": [ + { + "itemIndex": 0, + "addressId": null, + "selectedSla": null, + "selectedDeliveryChannel": null, + "quantity": 1, + "shipsTo": [ + "BRA" + ], + "slas": [ + { + "id": "Normal", + "deliveryChannel": "delivery", + "name": "Normal", + "deliveryIds": [ + { + "courierId": "1", + "warehouseId": "1_1", + "dockId": "1", + "courierName": "Transportadora", + "quantity": 1, + "kitItemDetails": [] + } + ], + "shippingEstimate": "3bd", + "shippingEstimateDate": null, + "lockTTL": "10d", + "availableDeliveryWindows": { + "startDateUtc": "2017-03-27T00:00:00+00:00", + "endDateUtc": "2017-03-27T00:00:00+00:00", + "price": 0, + "lisPrice": 0, + "tax": 0 + }, + "deliveryWindow": { + "startDateUtc": "2014-04-21T09:00:00+00:00", + "endDateUtc": "2014-04-21T12:00:00+00:00", + "price": 0, + "listprice": 1000, + "tax": 0 + }, + "price": 1500, + "listPrice": 1500, + "tax": 0, + "pickupStoreInfo": { + "isPickupStore": false, + "friendlyName": null, + "address": null, + "additionalInfo": null, + "dockId": null + }, + "pickupPointId": null, + "pickupDistance": 0, + "polygonName": null, + "transitTime": "3bd" + } + ], + "deliveryChannels": [ + { + "id": "pickup-in-point" + }, + { + "id": "delivery" + } + ] + } + ], + "messages": [], + "purchaseConditions": { + "itemPurchaseConditions": [ + { + "id": "1", + "seller": "1", + "sellerChain": [ + "1" + ], + "slas": [ + { + "id": "Normal", + "deliveryChannel": "delivery", + "name": "Normal", + "deliveryIds": [ + { + "courierId": "1", + "warehouseId": "1_1", + "dockId": "1", + "courierName": "Transportadora", + "quantity": 1, + "kitItemDetails": [] + } + ], + "shippingEstimate": "3bd", + "shippingEstimateDate": null, + "lockTTL": "10d", + "availableDeliveryWindows": { + "startDateUtc": "2017-03-27T00:00:00+00:00", + "endDateUtc": "2017-03-27T00:00:00+00:00", + "price": 0, + "lisPrice": 0, + "tax": 0 + }, + "deliveryWindow": { + "startDateUtc": "2014-04-21T09:00:00+00:00", + "endDateUtc": "2014-04-21T12:00:00+00:00", + "price": 0, + "listprice": 1000, + "tax": 0 + }, + "price": 1500, + "listPrice": 1500, + "tax": 0, + "pickupStoreInfo": { + "isPickupStore": false, + "friendlyName": null, + "address": null, + "additionalInfo": null, + "dockId": null + }, + "pickupPointId": null, + "pickupDistance": 0, + "polygonName": null, + "transitTime": "3bd" + } + ], + "price": 9999, + "listPrice": 9999 + } + ] + }, + "pickupPoints": [], + "subscriptionData": null, + "totals": [ + { + "id": "Items", + "name": "Total dos Itens", + "value": 2999700 + } + ], + "itemMetadata": { + "items": [ + { + "id": "1", + "seller": "1", + "assemblyOptions": [ + { + "id": "T-Shirt Customization", + "name": "T-Shirt Customization", + "required": false, + "inputValues": { + "T-Shirt Name": { + "maximumNumberOfCharacters": 2, + "domain": [ + "[]" + ] + } + }, + "composition": null + } + ] + } + ] + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm": { + "get": { + "tags": [ + "Shopping cart" + ], + "summary": "Get current or create a new cart", + "description": "You can use this request to get your current shopping cart information (`orderFormId`) or to create a new cart.\r\n\r\n**Important**: To create a new empty shopping cart you need to send this request with the query param `forceNewCart=true`.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` obtained in response is the identification code of the newly created cart.\n\r\n\r> This request has a time out of 45 seconds.", + "operationId": "CreateANewCart", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "forceNewCart", + "in": "query", + "description": "Use this query parameter to create a new empty shopping cart.", + "required": false, + "style": "form", + "schema": { + "type": "boolean", + "example": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "orderFormId": "9ceee0fde6db489fbc682a0e2ab13a86", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "checkedInPickupPointId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": null, + "userType": null, + "ignoreProfileData": false, + "value": 0, + "messages": [], + "items": [], + "selectableGifts": [], + "totalizers": [], + "shippingData": null, + "clientProfileData": { + "email": null, + "firstName": null, + "lastName": null, + "document": null, + "documentType": null, + "phone": null, + "corporateName": null, + "tradeName": null, + "corporateDocument": null, + "stateInscription": null, + "corporatePhone": null, + "isCorporate": false, + "profileCompleteOnLoading": null, + "profileErrorOnLoading": null, + "customerClass": null + }, + "paymentData": { + "installmentOptions": [], + "paymentSystems": [], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": null, + "sellers": [], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": null + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": null, + "hooksData": null, + "ratesAndBenefitsData": null, + "subscriptionData": null, + "itemsOrdination": null + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}": { + "get": { + "tags": [ + "Shopping cart" + ], + "summary": "Get cart information by ID", + "description": "Use this request to get all information associated to a given shopping cart.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\n\r\n\r> This request has a time out of 45 seconds.", + "operationId": "GetCartInformationById", + "security": [], + "parameters": [ + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm corresponding to the cart whose information you want to retrieve.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "ede846222cd44046ba6c638442c3505a" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "refreshOutdatedData", + "in": "query", + "description": "It is possible to use the [Update cart items request](https://developers.vtex.com/vtex-rest-api/reference/cart-update#itemsupdate) so as to allow outdated information in the `orderForm`, which may improve performance in some cases. To guarantee that all cart information is updated, send this request with this parameter as `true`. We recommend doing this in the final stages of the shopping experience, starting from the checkout page.", + "required": false, + "style": "form", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "", + "headers": {}, + "content": { + "application/json": { + "example": { + "orderFormId": "ede846222cd44046ba6c638442c3505a", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "checkedInPickupPointId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": null, + "userType": null, + "ignoreProfileData": false, + "value": 15000, + "messages": [], + "items": [ + { + "uniqueId": "E0F2B7AF5CD74D668F1E27537206912C", + "id": "1", + "productId": "1", + "productRefId": "", + "refId": "0001", + "ean": "123456789", + "name": "Ração Royal Canin Feline Urinary 500g", + "skuName": "Ração Royal Canin Feline Urinary 500g", + "modalType": null, + "parentItemIndex": null, + "parentAssemblyBinding": null, + "assemblies": [], + "priceValidUntil": "2021-02-27T14:59:00.8288784Z", + "tax": 0, + "taxCode": "54WC8ZN6K8", + "price": 15000, + "listPrice": 30000, + "manualPrice": null, + "sellingPrice": 15000, + "rewardValue": 0, + "isGift": false, + "additionalInfo": { + "brandName": "Royal Canin", + "brandId": "2000000", + "offeringInfo": null, + "offeringType": null, + "offeringTypeId": null + }, + "preSaleDate": null, + "productCategoryIds": "/1/10/", + "productCategories": { + "10": "Ração Seca", + "1": "Alimentação" + }, + "quantity": 1, + "seller": "1", + "sellerChain": [ + "1" + ], + "imageUrl": "http://lojadobreno.vteximg.com.br/arquivos/ids/155450-55-55/Racao-Royal-Canin-Feline-Urinary-SO.jpg?v=637139444438700000", + "detailUrl": "/racao-royal-canin-feline-urinary/p", + "components": [], + "bundleItems": [], + "attachments": [], + "attachmentOfferings": [], + "offerings": [], + "priceTags": [], + "availability": "available", + "measurementUnit": "un", + "unitMultiplier": 1.0, + "manufacturerCode": null + } + ], + "selectableGifts": [], + "totalizers": [ + { + "id": "Items", + "name": "Total dos Itens", + "value": 15000 + } + ], + "shippingData": { + "address": null, + "logisticsInfo": [ + { + "itemIndex": 0, + "selectedSla": null, + "selectedDeliveryChannel": null, + "addressId": null, + "slas": [], + "shipsTo": [ + "BRA" + ], + "itemId": "1", + "deliveryChannels": [ + { + "id": "pickup-in-point" + }, + { + "id": "delivery" + } + ] + } + ], + "selectedAddresses": [], + "availableAddresses": [], + "pickupPoints": [] + }, + "clientProfileData": { + "email": "clark.kent@examplemail.com", + "firstName": "Clark", + "lastName": "Kent", + "document": "12345678900", + "documentType": "cpf", + "phone": "+5500123456789", + "corporateName": null, + "tradeName": null, + "corporateDocument": null, + "stateInscription": null, + "corporatePhone": null, + "isCorporate": false, + "profileCompleteOnLoading": false, + "profileErrorOnLoading": false, + "customerClass": null + }, + "paymentData": { + "installmentOptions": [ + { + "paymentSystem": "2", + "bin": null, + "paymentName": null, + "paymentGroupName": null, + "value": 15000, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 15000, + "total": 15000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 15000, + "total": 15000 + } + ] + }, + { + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 7500, + "total": 15000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 7500, + "total": 15000 + } + ] + } + ] + } + ], + "paymentSystems": [ + { + "id": 2, + "name": "Visa", + "groupName": "creditCardPaymentGroup", + "validator": { + "regex": "^2[1-8]{17}$", + "mask": "9999 9999 9999 9999", + "cardCodeRegex": "^[0-3]{8}$", + "cardCodeMask": "999", + "weights": [ + 2, + 1, + 2, + 1, + 2, + 1 + ], + "useCvv": true, + "useExpirationDate": true, + "useCardHolderName": true, + "useBillingAddress": true + }, + "stringId": "2", + "template": "creditCardPaymentGroup-template", + "requiresDocument": false, + "isCustom": false, + "description": null, + "requiresAuthentication": false, + "dueDate": "2020-03-05T14:59:00.7879306Z", + "availablePayments": null + } + ], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": null, + "sellers": [ + { + "id": "1", + "name": "lojadobreno", + "logo": "" + } + ], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": null + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": { + "items": [ + { + "id": "1", + "seller": "1", + "name": "Ração Royal Canin Feline Urinary 500g", + "skuName": "Ração Royal Canin Feline Urinary 500g", + "productId": "1", + "refId": "0001", + "ean": "123456789", + "imageUrl": "http://lojadobreno.vteximg.com.br/arquivos/ids/155450-55-55/Racao-Royal-Canin-Feline-Urinary-SO.jpg?v=637139444438700000", + "detailUrl": "/racao-royal-canin-feline-urinary/p", + "assemblyOptions": [] + } + ] + }, + "hooksData": null, + "ratesAndBenefitsData": { + "rateAndBenefitsIdentifiers": [], + "teaser": [] + }, + "subscriptionData": null, + "itemsOrdination": null + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/items/removeAll": { + "post": { + "tags": [ + "Shopping cart" + ], + "summary": "Remove all items", + "description": "This request removes all items from a given cart, leaving it empty.\r\n\r\nYou must send an empty JSON in the body of the request.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\r\n\r\n**Important**: **Request Body** must always be sent with empty value \"{ }\" in this endpoint.", + "operationId": "RemoveAllItems", + "security": [], + "parameters": [ + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm corresponding to the cart whose items you want to remove.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "ede846222cd44046ba6c638442c3505a" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "This object must be empty.", + "title": "", + "properties": {}, + "default": {} + } + } + } + }, + "responses": { + "200": { + "description": "", + "headers": {}, + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "examples": { + "response": { + "value": { + "orderFormId": "ede846222cd44046ba6c638442c3505a", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "checkedInPickupPointId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": null, + "userType": null, + "ignoreProfileData": false, + "value": 0, + "messages": [], + "items": [], + "selectableGifts": [], + "totalizers": [], + "shippingData": { + "address": null, + "logisticsInfo": [], + "selectedAddresses": [], + "availableAddresses": [], + "pickupPoints": [] + }, + "clientProfileData": { + "email": "john.doe@google.com", + "firstName": "John", + "lastName": "Doe", + "document": "769387308", + "documentType": "dni", + "phone": "+5491111223344", + "corporateName": null, + "tradeName": null, + "corporateDocument": null, + "stateInscription": null, + "corporatePhone": null, + "isCorporate": false, + "profileCompleteOnLoading": false, + "profileErrorOnLoading": false, + "customerClass": null + }, + "paymentData": { + "installmentOptions": [ + { + "paymentSystem": "2", + "bin": null, + "paymentName": null, + "paymentGroupName": null, + "value": 15000, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 15000, + "total": 15000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 15000, + "total": 15000 + } + ] + } + ] + } + ], + "paymentSystems": [ + { + "id": 4, + "name": "Mastercard", + "groupName": "creditCardPaymentGroup", + "validator": { + "regex": "^((5(([1-2]|[5-5])[0-3]{8}|0((2|9)([0-2]{5}))|1(0(5((0|[4-8])[1-7]{6})|([2-3]|[1-9])[0-9]{6})|[1-9][0-9]{7})))|((508116)\\d{4,10})|((502121)\\d{4,10})|((589916)\\d{4,10})|(2[0-9]{15})|(67[0-9]{14})|(506387)\\d{4,10})", + "mask": "9999 9999 9999 9999", + "cardCodeRegex": "^[1-3]{9}$", + "cardCodeMask": "999", + "weights": [ + 2, + 1, + 2, + 1, + 2 + ], + "useCvv": true, + "useExpirationDate": true, + "useCardHolderName": true, + "useBillingAddress": true + }, + "stringId": "4", + "template": "creditCardPaymentGroup-template", + "requiresDocument": false, + "isCustom": false, + "description": null, + "requiresAuthentication": false, + "dueDate": "2020-03-05T14:23:23.8196668Z", + "availablePayments": null + } + ], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": null, + "sellers": [], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": null + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": { + "items": [] + }, + "hooksData": null, + "ratesAndBenefitsData": null, + "subscriptionData": null, + "itemsOrdination": null + } + } + } + } + } + } + }, + "deprecated": false + } + }, + "/checkout/changeToAnonymousUser/{orderFormId}": { + "get": { + "tags": [ + "Shopping cart" + ], + "summary": "Remove all personal data", + "description": "This call removes all user information, making a cart anonymous while leaving the items.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure that represents a shopping cart and contains all information about it. Hence, the `orderFormId` is the identification code of a given cart.\r\n\r\nThis call works by creating a new orderForm, setting a new cookie, and returning a redirect 302 to the cart URL (`/checkout/#/orderform`).", + "operationId": "Removeallpersonaldata", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm corresponding to the cart whose user's personal data you want to remove.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "ede846222cd44046ba6c638442c3505a" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "object" + }, + "example": {} + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/items/update": { + "post": { + "tags": [ + "Shopping cart" + ], + "summary": "Update cart items", + "description": "You can use this request to:\n\r\n\r1. Change the quantity of one or more items in a specific cart.\n\r2. Remove an item from the cart (by sending the `quantity` value = `0` in the request body).\r\n\r\n**Important**: To remove all items from the cart at the same time, use the [Remove all items](https://developers.vtex.com/vtex-rest-api/reference/removeallitems) endpoint.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure that represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\n\r\n\r> This request has a time out of 45 seconds.", + "operationId": "ItemsUpdate", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "orderFormId", + "in": "path", + "description": "ID of the `orderForm` corresponding to the cart whose items you want to update.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "ede846222cd44046ba6c638442c3505a" + } + }, + { + "name": "allowedOutdatedData", + "in": "query", + "description": "In order to optimize performance, this parameter allows some information to not be updated when there are changes in the minicart. For instance, if a shopper adds another unit of a given SKU to the cart, it may not be necessary to recalculate payment information, which could impact performance.\n\r\n\rThis array accepts strings and currently the only possible value is `”paymentData”`.", + "required": false, + "style": "form", + "schema": { + "type": "array", + "default": [ + "paymentData" + ], + "items": {} + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "orderItems": { + "type": "array", + "description": "Array containing the cart items. Each object inside this array corresponds to a different item.", + "items": { + "required": [ + "quantity", + "index" + ], + "type": "object", + "properties": { + "quantity": { + "type": "integer", + "format": "int32", + "description": "The quantity of the item in the cart.", + "example": 3 + }, + "index": { + "type": "integer", + "description": "The position of the item in the array.", + "example": 0 + } + } + } + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "orderFormId": { + "type": "string", + "description": "ID of the orderForm corresponding to a specific cart." + }, + "salesChannel": { + "type": "string", + "description": "Attribute created by the seller, in their VTEX store configuration." + }, + "loggedIn": { + "type": "boolean", + "description": "Indicates whether the user is logged into the store." + }, + "isCheckedIn": { + "type": "boolean", + "description": "Indicates whether order is checked in." + }, + "storeId": { + "type": "string", + "description": "ID of the store.", + "nullable": true + }, + "allowManualPrice": { + "type": "boolean", + "description": "Permission to modify item price manually." + }, + "canEditData": { + "type": "boolean", + "description": "Data can be edited." + }, + "userProfileId": { + "type": "string", + "description": "Unique ID associated with the customer profile." + }, + "profileProvider": { + "type": "string", + "description": "Profile provider." + }, + "availableAccounts": { + "type": "array", + "description": "Available accounts.", + "items": { + "type": "string" + } + }, + "availableAddresses": { + "type": "array", + "description": "Information on each available address.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Address type." + }, + "receiverName": { + "type": "string", + "description": "Name of the receiver." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "city": { + "type": "string", + "description": "City of the address." + }, + "state": { + "type": "string", + "description": "State of the address." + }, + "country": { + "type": "string", + "description": "Country of the address. ISO three-letter code." + }, + "street": { + "type": "string", + "description": "Street of the address." + }, + "number": { + "type": "string", + "description": "Number of the address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the address." + }, + "complement": { + "type": "string", + "description": "Complement to the address.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Reference that may help in the location of the address.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "List with the two geocoordinates.", + "items": { + "type": "string" + } + } + } + } + }, + "userType": { + "type": "string", + "description": "User type.", + "nullable": true + }, + "ignoreProfileData": { + "type": "boolean", + "description": "Ignore customer profile data." + }, + "value": { + "type": "integer", + "description": "Total value of the order without separating cents. For example, $24.99 is represented as `2499`." + }, + "messages": { + "type": "array", + "description": "Array containing an object for each message generated by our servers while processing the request." + }, + "items": { + "type": "array", + "description": "Information on each item in the order.", + "items": { + "type": "object", + "properties": { + "uniqueId": { + "type": "string", + "description": "Unique ID." + }, + "id": { + "type": "string", + "description": "ID of the item." + }, + "productId": { + "type": "string", + "description": "Product ID." + }, + "productRefId": { + "type": "string", + "description": "Product Ref ID." + }, + "refId": { + "type": "string", + "description": "Ref ID." + }, + "ean": { + "type": "string", + "description": "European Article Number.", + "nullable": true + }, + "name": { + "type": "string", + "description": "Product name." + }, + "skuName": { + "type": "string", + "description": "SKU name." + }, + "modalType": { + "type": "string", + "description": "Modal type.", + "nullable": true + }, + "parentItemIndex": { + "type": "integer", + "description": "Parent item index.", + "nullable": true + }, + "parentAssemblyBinding": { + "type": "string", + "description": "Parent assembly binding.", + "nullable": true + }, + "priceValidUntil": { + "type": "string", + "description": "Price expiration date and time." + }, + "tax": { + "type": "integer", + "description": "Tax value in cents." + }, + "taxCode": { + "type": "string", + "description": "A unique identifier code assigned to a tax within the VTEX Admin." + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "manualPrice": { + "type": "integer", + "description": "Manual price in cents.", + "nullable": true + }, + "manualPriceAppliedBy": { + "type": "string", + "description": "User that applied the manual price, if that is the case.", + "nullable": true + }, + "sellingPrice": { + "type": "integer", + "description": "Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead." + }, + "rewardValue": { + "type": "integer", + "description": "Reward value in cents." + }, + "isGift": { + "type": "boolean", + "description": "Indicates whether item is a gift." + }, + "additionalInfo": { + "type": "object", + "description": "Additional information.", + "properties": { + "dimension": { + "type": "string", + "description": "Dimension.", + "nullable": true + }, + "brandName": { + "type": "string", + "description": "Brand name." + }, + "brandId": { + "type": "string", + "description": "Brand ID." + }, + "offeringInfo": { + "type": "string", + "description": "Offering information.", + "nullable": true + }, + "offeringType": { + "type": "string", + "description": "Offering type.", + "nullable": true + }, + "offeringTypeId": { + "type": "string", + "description": "Offering type ID.", + "nullable": true + } + } + }, + "preSaleDate": { + "type": "string", + "description": "Presale date.", + "nullable": true + }, + "productCategoryIds": { + "type": "string", + "description": "Product category IDs." + }, + "productCategories": { + "type": "object", + "description": "Object, where each field is an ID from `productCategoryIds`.", + "properties": { + "{ID}": { + "type": "string", + "description": "Product category corresponding to the ID in the field key." + } + } + }, + "quantity": { + "type": "integer", + "description": "Quantity." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "sellerChain": { + "type": "array", + "description": "Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order.", + "items": { + "type": "string", + "description": "Seller." + } + }, + "imageUrl": { + "type": "string", + "description": "Image URL." + }, + "detailUrl": { + "type": "string", + "description": "Detail URL." + }, + "bundleItems": { + "type": "array", + "description": "Information on services sold along with the SKU. Example: a gift package.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Service type." + }, + "id": { + "type": "integer", + "description": "Service identifier." + }, + "name": { + "type": "string", + "description": "Service name." + }, + "price": { + "type": "integer", + "description": "Service price in cents." + } + } + } + }, + "attachments": { + "type": "array", + "description": "Array containing information on attachments.", + "items": { + "type": "string" + } + }, + "priceTags": { + "type": "array", + "description": "Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order.", + "items": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "Price tag identifier." + }, + "isPercentual": { + "type": "boolean", + "description": "Indicates whether price tag value is applied through a percentage." + }, + "name": { + "type": "string", + "description": "Price tag name." + }, + "rawValue": { + "type": "integer", + "description": "Price tag raw value." + }, + "value": { + "type": "integer", + "description": "Price tag value." + } + } + } + }, + "availability": { + "type": "string", + "description": "Availability." + }, + "measurementUnit": { + "type": "string", + "description": "Measurement unit." + }, + "unitMultiplier": { + "type": "integer", + "description": "Unit multiplier." + }, + "manufacturerCode": { + "type": "string", + "description": "Manufacturer code.", + "nullable": true + }, + "priceDefinition": { + "type": "object", + "description": "Price information for all units of a specific item.", + "properties": { + "calculatedSellingPrice": { + "type": "integer", + "description": "Item's calculated unitary selling price in cents." + }, + "total": { + "type": "integer", + "description": "Total value for all units of the item in cents." + }, + "sellingPrices": { + "type": "array", + "description": "Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total.", + "items": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "description": "Value in cents for that specific rounding." + }, + "quantity": { + "type": "integer", + "description": "Rounding quantity, meaning how many items are rounded to this value." + } + } + } + } + } + } + } + } + }, + "selectableGifts": { + "type": "array", + "description": "Array containing the data of the item selected as a gift." + }, + "totalizers": { + "type": "array", + "description": "Array containing an object for each totalizer for the purchase. Totalizers contain the sum of values for a specific part of the order (e.g. Total item value, Total shipping value)." + }, + "shippingData": { + "type": "object", + "description": "Shipping information pertinent to the order.", + "properties": { + "address": { + "type": "object", + "description": "Address information.", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array with two strings with geocoordinates, first latitude, then longitude.", + "items": { + "type": "string" + } + } + } + }, + "logisticsInfo": { + "type": "array", + "description": "Array with logistics information. Each object in this array corresponds to an object in the `items` array, based on the respective `itemIndex`.", + "items": { + "type": "object", + "properties": { + "itemIndex": { + "type": "integer", + "description": "Index corresponding to the position of the object in the `items` array." + }, + "selectedSla": { + "type": "string", + "description": "SLA selected by the customer." + }, + "selectedDeliveryChannel": { + "type": "string", + "description": "Delivery channel selected by the customer." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "slas": { + "type": "array", + "description": "Information on available SLAs.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "SLA ID." + }, + "deliveryChannel": { + "type": "string", + "description": "Delivery channel." + }, + "name": { + "type": "string", + "description": "SLA name." + }, + "deliveryIds": { + "type": "array", + "description": "Information on each delivery ID.", + "items": { + "type": "object", + "properties": { + "courierId": { + "type": "string", + "description": "Courier ID." + }, + "warehouseId": { + "type": "string", + "description": "Warehouse ID." + }, + "dockId": { + "type": "string", + "description": "Warehouse ID." + }, + "courierName": { + "type": "string", + "description": "Courier name." + }, + "quantity": { + "type": "integer", + "description": "Quantity." + } + } + } + }, + "shippingEstimate": { + "type": "string", + "description": "Shipping estimate. For instance, \"three business days\" will be represented as `3bd`." + }, + "shippingEstimateDate": { + "type": "string", + "description": "Shipping estimate date.", + "nullable": true + }, + "lockTTL": { + "type": "string", + "description": "Estimate date of delivery." + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "tax": { + "type": "integer", + "description": "Tax in cents." + }, + "pickupStoreInfo": { + "type": "object", + "description": "Information on the pickup store.", + "properties": { + "isPickupStore": { + "type": "boolean", + "description": "Indicates whether it is the pickup store." + }, + "friendlyName": { + "type": "string", + "description": "Friendly name.", + "nullable": true + }, + "address": { + "type": "object", + "description": "Address information.", + "nullable": true, + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array with two strings with geocoordinates, first latitude, then longitude.", + "items": { + "type": "string" + } + } + } + }, + "additionalInfo": { + "type": "string", + "description": "Additional information.", + "nullable": true + }, + "dockId": { + "type": "string", + "description": "Corresponding dock ID.", + "nullable": true + } + } + }, + "pickupPointId": { + "type": "string", + "description": "Pickup point ID.", + "nullable": true + }, + "pickupDistance": { + "type": "integer", + "description": "Pickup point distance." + }, + "polygonName": { + "type": "string", + "description": "Polygon name.", + "nullable": true + }, + "transitTime": { + "type": "string", + "description": "Transit time. For instance, \"three business days\" is represented as `3bd`." + } + } + } + }, + "shipsTo": { + "type": "array", + "description": "List of countries that the item may be shipped to.", + "items": { + "type": "string", + "description": "Three letter country code." + } + }, + "itemId": { + "type": "string", + "description": "Item ID." + }, + "deliveryChannels": { + "type": "array", + "description": "List of available delivery channels.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Delivery channel ID." + } + } + } + } + } + } + }, + "selectedAddresses": { + "type": "array", + "description": "Array with information on the selected addresses for the order.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies." + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array with two strings with geocoordinates, first latitude, then longitude.", + "items": { + "type": "string" + } + } + } + } + }, + "availableAddresses": { + "type": "array", + "description": "Array with information on the available addresses for the order.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies." + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array with two strings with geocoordinates, first latitude, then longitude.", + "items": { + "type": "string" + } + } + } + } + } + } + }, + "clientProfileData": { + "type": "object", + "description": "Customer's profile information.", + "properties": { + "email": { + "type": "string", + "description": "Email address." + }, + "firstName": { + "type": "string", + "description": "First name." + }, + "lastName": { + "type": "string", + "description": "Last name." + }, + "documentType": { + "type": "string", + "description": "Type of the document informed by the customer." + }, + "document": { + "type": "string", + "description": "Document informed by the customer." + }, + "phone": { + "type": "string", + "description": "Phone number." + }, + "corporateName": { + "type": "string", + "description": "Company name, if the customer is a legal entity.", + "nullable": true + }, + "tradeName": { + "type": "string", + "description": "Trade name, if the customer is a legal entity.", + "nullable": true + }, + "corporateDocument": { + "type": "string", + "description": "Corporate document, if the customer is a legal entity.", + "nullable": true + }, + "stateInscription": { + "type": "string", + "description": "State inscription, if the customer is a legal entity.", + "nullable": true + }, + "corporatePhone": { + "type": "string", + "description": "Corporate phone number, if the customer is a legal entity.", + "nullable": true + }, + "isCorporate": { + "type": "boolean", + "description": "Indicates whether the customer is a legal entity." + }, + "profileCompleteOnLoading": { + "type": "boolean", + "description": "Indicates whether profile is complete on loading." + }, + "profileErrorOnLoading": { + "type": "boolean", + "description": "Indicates whether profile presents error on loading.", + "nullable": true + }, + "customerClass": { + "type": "string", + "description": "Customer class.", + "nullable": true + } + } + }, + "paymentData": { + "type": "object", + "description": "Information on the order's payment.", + "properties": { + "giftCards": { + "type": "array", + "description": "Gift card information, if it applies to the order.", + "items": { + "type": "object", + "properties": { + "redemptionCode": { + "type": "string", + "description": "Gift card redemption code." + }, + "value": { + "type": "integer", + "description": "Gift card value in cents." + }, + "balance": { + "type": "integer", + "description": "Gift card balance in cents." + }, + "name": { + "type": "string", + "description": "Gift card name." + }, + "id": { + "type": "string", + "description": "Gift card ID." + }, + "inUse": { + "type": "boolean", + "description": "Indicates whether gift card is in use." + }, + "isSpecialCard": { + "type": "boolean", + "description": "Indicates whether gift card is special." + } + } + } + }, + "transactions": { + "type": "array", + "description": "Information on each transaction pertinent to the order.", + "items": { + "type": "object", + "properties": { + "isActive": { + "type": "boolean", + "description": "Indicates whether transaction is active." + }, + "transactionId": { + "type": "string", + "description": "Transaction ID." + }, + "merchantName": { + "type": "string", + "description": "Merchant name." + }, + "payments": { + "type": "array", + "description": "Information on each payment.", + "items": { + "type": "object", + "properties": { + "accountId": { + "type": "string", + "description": "Account ID." + }, + "bin": { + "type": "string", + "description": "Bin." + }, + "installments": { + "type": "integer", + "description": "Number of installments." + }, + "paymentSystem": { + "type": "string", + "description": "Payment system." + }, + "referenceValue": { + "type": "integer", + "description": "Reference value for calculating interest rates, in case it applies. Displayed in cents." + }, + "value": { + "type": "integer", + "description": "Value including interest, in case it applies. Displayed in cents." + } + } + } + }, + "sharedTransaction": { + "type": "boolean", + "description": "Indicates whather transaction is shared." + } + } + } + } + } + }, + "marketingData": { + "type": "object", + "description": "Object containing promotion data such as coupon tracking information and internal or external UTMs.", + "properties": { + "coupon": { + "type": "string", + "description": "Sending an existing coupon code in this field will return the corresponding discount in the purchase. Use the [cart simulation](https://developers.vtex.com/vtex-rest-api/reference/orderform#orderformsimulation) request to check which coupons might apply before placing the order.", + "default": "free-shipping" + }, + "utmSource": { + "type": "string", + "description": "UTM source.", + "default": "Facebook" + }, + "utmMedium": { + "type": "string", + "description": "UTM medium.", + "default": "CPC" + }, + "utmCampaign": { + "type": "string", + "description": "UTM campaign", + "default": "Black friday" + }, + "utmiPage": { + "type": "string", + "description": "utmi_page (internal utm).", + "default": "utmi_page-example", + "nullable": true + }, + "utmiPart": { + "type": "string", + "description": "utmi_part (internal utm).", + "default": "utmi_part-example", + "nullable": true + }, + "utmiCampaign": { + "type": "string", + "description": "utmi_campaign (internal utm).", + "default": "utmi_campaign-example", + "nullable": true + } + } + }, + "sellers": { + "type": "array", + "description": "Information on each seller.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Seller ID." + }, + "name": { + "type": "string", + "description": "Seller name." + }, + "logo": { + "type": "string", + "description": "Seller logo.", + "nullable": true + } + } + } + }, + "clientPreferencesData": { + "type": "object", + "description": "Object containing preferences from the client who placed the order.", + "properties": { + "locale": { + "type": "string", + "description": "Client's locale. Examples: `pt-BR` and `en-US`." + }, + "optinNewsLetter": { + "type": "boolean", + "description": "`true` if the client opted to receive newsletter from the store.", + "default": false + } + } + }, + "commercialConditionData": { + "type": "object", + "description": "Object containing commercial condition information.", + "nullable": true + }, + "storePreferencesData": { + "type": "object", + "description": "Object containing data from the store's configuration (stored in VTEX's License Manager)." + }, + "giftRegistryData": { + "type": "object", + "description": "Gift registry list information.", + "nullable": true + }, + "openTextField": { + "type": "string", + "description": "Optional field meant to hold additional information about the order. We recommend using this field for text, not data formats such as `JSON` even if escaped. For that purpose, see [Creating customizable fields](https://developers.vtex.com/vtex-rest-api/docs/creating-customizable-fields-in-the-cart-with-checkout-api-1).", + "default": "open-text-example", + "nullable": true + }, + "invoiceData": { + "type": "object", + "description": "Object containing information pertinent to the order's invoice.", + "nullable": true + }, + "customData": { + "type": "object", + "description": "Customer additional information.", + "nullable": true + }, + "itemMetadata": { + "type": "object", + "description": "Item metadata.", + "properties": { + "items": { + "type": "array", + "description": "List of objects containing metadata on each item in the order.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Item ID." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "name": { + "type": "string", + "description": "Product name." + }, + "skuName": { + "type": "string", + "description": "SKU name." + }, + "productId": { + "type": "string", + "description": "Product ID." + }, + "refId": { + "type": "string", + "description": "Ref ID." + }, + "ean": { + "type": "string", + "description": "European Article Number.", + "nullable": true + }, + "imageUrl": { + "type": "string", + "description": "Image URL." + }, + "detailUrl": { + "type": "string", + "description": "Detail URL." + } + } + } + } + } + }, + "hooksData": { + "type": "object", + "description": "Hooks information.", + "nullable": true + }, + "ratesAndBenefitsData": { + "type": "object", + "description": "Information on rates and benefits that apply to the order.", + "properties": { + "rateAndBenefitsIdentifiers": { + "type": "array", + "description": "List with rates and benefits identifiers.", + "items": { + "type": "string" + } + }, + "teaser": { + "type": "array", + "description": "List with rates and benefits teasers.", + "items": { + "type": "string" + } + } + } + }, + "subscriptionData": { + "type": "object", + "description": "Subscription information.", + "nullable": true + }, + "itemsOrdination": { + "type": "object", + "description": "Object containing information about the ordering of items within the `orderForm`.", + "properties": { + "criteria": { + "type": "string", + "description": "Criteria adopted to order the items in the list." + }, + "ascending": { + "type": "boolean", + "description": "Indicates whether the ordering is ascending." + } + } + } + } + }, + "example": { + "orderFormId": "ede846222cd44046ba6c638442c3505a", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": "fb542e51-5488-4c34-8d17-ed8fcf597a94", + "profileProvider": "VTEX", + "availableAccounts": [], + "availableAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "666c2e830bd9474ab6f6cc53fb6dd2d2", + "isDisposable": true, + "postalCode": "70386000", + "city": "Brasília", + "state": "DF", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + "-47.924747467041016", + "-15.832582473754883" + ] + } + ], + "userType": null, + "ignoreProfileData": false, + "value": 34390, + "messages": [], + "items": [ + { + "uniqueId": "9D6E447B3FF64CEDA33B17C01379C119", + "id": "2", + "productId": "2", + "productRefId": "", + "refId": "CBC30L", + "ean": null, + "name": "Chopp Brahma Claro 30L", + "skuName": "Chopp Brahma Claro 30L", + "modalType": null, + "parentItemIndex": null, + "parentAssemblyBinding": null, + "assemblies": [], + "priceValidUntil": "2022-07-13T18:30:46Z", + "tax": 0, + "taxCode": "54WC8ZN6K8", + "price": 32890, + "listPrice": 49900, + "manualPrice": null, + "manualPriceAppliedBy": null, + "sellingPrice": 32890, + "rewardValue": 0, + "isGift": false, + "additionalInfo": { + "dimension": null, + "brandName": "Brahma", + "brandId": "2000000", + "offeringInfo": null, + "offeringType": null, + "offeringTypeId": null + }, + "preSaleDate": null, + "productCategoryIds": "/1/", + "productCategories": { + "1": "Bebidas" + }, + "quantity": 1, + "seller": "1", + "sellerChain": [ + "1" + ], + "imageUrl": "http://mystore.vteximg.com.br/arquivos/ids/155400-55-55/30l_v2.png?v=637303412106100000", + "detailUrl": "/chopp-brahma-claro-30l/p", + "components": [], + "bundleItems": [], + "attachments": [], + "attachmentOfferings": [], + "offerings": [], + "priceTags": [], + "availability": "available", + "measurementUnit": "un", + "unitMultiplier": 1, + "manufacturerCode": null, + "priceDefinition": { + "calculatedSellingPrice": 32890, + "total": 32890, + "sellingPrices": [ + { + "value": 32890, + "quantity": 1 + } + ] + } + } + ], + "selectableGifts": [], + "totalizers": [ + { + "id": "Items", + "name": "Total dos Itens", + "value": 15000 + } + ], + "shippingData": { + "address": { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "70386000", + "city": "Brasília", + "state": "DF", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + "-47.924747467041016", + "-15.832582473754883" + ] + }, + "logisticsInfo": [ + { + "itemIndex": 0, + "selectedSla": "Normal", + "selectedDeliveryChannel": "delivery", + "addressId": "teste", + "slas": [ + { + "id": "Normal", + "deliveryChannel": "delivery", + "name": "Normal", + "deliveryIds": [ + { + "courierId": "1", + "warehouseId": "1_1", + "dockId": "1", + "courierName": "Transportadora", + "quantity": 1, + "kitItemDetails": [] + } + ], + "shippingEstimate": "3bd", + "shippingEstimateDate": null, + "lockTTL": "10d", + "availableDeliveryWindows": [], + "deliveryWindow": null, + "price": 1500, + "listPrice": 1500, + "tax": 0, + "pickupStoreInfo": { + "isPickupStore": false, + "friendlyName": null, + "address": null, + "additionalInfo": null, + "dockId": null + }, + "pickupPointId": null, + "pickupDistance": 0, + "polygonName": null, + "transitTime": "3bd" + } + ], + "shipsTo": [ + "BRA", + "COL", + "USA" + ], + "itemId": "2", + "deliveryChannels": [ + { + "id": "delivery" + }, + { + "id": "pickup-in-point" + } + ] + } + ], + "selectedAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + "-47.924747467041016", + "-15.832582473754883" + ] + } + ], + "availableAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + "-47.924747467041016", + "-15.832582473754883" + ] + } + ], + "pickupPoints": [] + }, + "clientProfileData": { + "email": "clark.kent@example.com", + "firstName": "Clark", + "lastName": "Kent", + "document": "12345678900", + "documentType": "cpf", + "phone": "+5521998765432", + "corporateName": null, + "tradeName": null, + "corporateDocument": null, + "stateInscription": null, + "corporatePhone": null, + "isCorporate": false, + "profileCompleteOnLoading": false, + "profileErrorOnLoading": null, + "customerClass": null + }, + "paymentData": { + "installmentOptions": [ + { + "paymentSystem": "2", + "bin": null, + "paymentName": null, + "paymentGroupName": null, + "value": 15000, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 15000, + "total": 15000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 15000, + "total": 15000 + } + ] + }, + { + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 7500, + "total": 15000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 7500, + "total": 15000 + } + ] + } + ] + } + ], + "paymentSystems": [ + { + "id": 2, + "name": "Visa", + "groupName": "creditCardPaymentGroup", + "validator": { + "regex": "^2[1-8]{17}$", + "mask": "9999 9999 9999 9999", + "cardCodeRegex": "^[0-3]{8}$", + "cardCodeMask": "999", + "weights": [ + 2, + 1, + 2, + 1, + 2, + 1 + ], + "useCvv": true, + "useExpirationDate": true, + "useCardHolderName": true, + "useBillingAddress": true + }, + "stringId": "2", + "template": "creditCardPaymentGroup-template", + "requiresDocument": false, + "isCustom": false, + "description": null, + "requiresAuthentication": false, + "dueDate": "2020-03-05T14:59:00.7879306Z", + "availablePayments": null + } + ], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": { + "coupon": "free-shipping", + "utmSource": "app", + "utmMedium": "CPC", + "utmCampaign": "Black friday", + "utmipage": null, + "utmiPart": null, + "utmiCampaign": null + }, + "sellers": [ + { + "id": "1", + "name": "lojadobreno", + "logo": "" + } + ], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": false + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymboupdate cartl": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": { + "items": [ + { + "id": "1", + "seller": "1", + "name": "Ração Royal Canin Feline Urinary 500g", + "skuName": "Ração Royal Canin Feline Urinary 500g", + "productId": "1", + "refId": "0001", + "ean": "123456789", + "imageUrl": "http://lojadobreno.vteximg.com.br/arquivos/ids/155450-55-55/Racao-Royal-Canin-Feline-Urinary-SO.jpg?v=637139444438700000", + "detailUrl": "/racao-royal-canin-feline-urinary/p", + "assemblyOptions": [] + } + ] + }, + "hooksData": null, + "ratesAndBenefitsData": { + "rateAndBenefitsIdentifiers": [], + "teaser": [] + }, + "subscriptionData": null, + "itemsOrdination": { + "criteria": "NAME", + "ascending": true + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/items": { + "post": { + "tags": [ + "Shopping cart" + ], + "summary": "Add cart items", + "description": "Use this request to add a new item to the shopping cart.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\n\r\n\r> This request has a time out of 45 seconds.", + "operationId": "Items", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm corresponding to the cart in which the new item will be added.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "ede846222cd44046ba6c638442c3505a" + } + }, + { + "name": "allowedOutdatedData", + "in": "query", + "description": "In order to optimize performance, this parameter allows some information to not be updated when there are changes in the minicart. For instance, if a shopper adds another unit of a given SKU to the cart, it may not be necessary to recalculate payment information, which could impact performance.\n\r\n\rThis array accepts strings and currently the only possible value is `”paymentData”`.", + "required": false, + "style": "form", + "schema": { + "type": "array", + "default": [ + "paymentData" + ], + "items": {} + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "orderItems": { + "type": "array", + "description": "Array containing the cart items. Each object inside this array corresponds to a different item.", + "items": { + "required": [ + "quantity", + "seller", + "id", + "index" + ], + "type": "object", + "properties": { + "quantity": { + "type": "integer", + "format": "int32", + "description": "The quantity of the item (SKU) in the cart.", + "example": 3 + }, + "seller": { + "type": "string", + "description": "The seller responsible for the SKU.", + "example": "1" + }, + "id": { + "type": "string", + "description": "The ID of the SKU in VTEX platform.", + "example": "2005" + }, + "index": { + "type": "integer", + "description": "The position of the item in the array.", + "example": 0 + }, + "price": { + "type": "integer", + "description": "Price of the item in cents. Send this value in case you want to make a bulk price change.", + "example": 1099 + } + } + } + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "orderFormId": { + "type": "string", + "description": "ID of the orderForm corresponding to a specific cart." + }, + "salesChannel": { + "type": "string", + "description": "Attribute created by the seller, in their VTEX store configuration." + }, + "loggedIn": { + "type": "boolean", + "description": "Indicates whether the user is logged into the store." + }, + "isCheckedIn": { + "type": "boolean", + "description": "Indicates whether order is checked in." + }, + "storeId": { + "type": "string", + "description": "ID of the store.", + "nullable": true + }, + "allowManualPrice": { + "type": "boolean", + "description": "Permission to modify item price manually." + }, + "canEditData": { + "type": "boolean", + "description": "Data can be edited." + }, + "userProfileId": { + "type": "string", + "description": "Unique ID associated with the customer profile." + }, + "profileProvider": { + "type": "string", + "description": "Profile provider." + }, + "availableAccounts": { + "type": "array", + "description": "Available accounts.", + "items": { + "type": "string" + } + }, + "availableAddresses": { + "type": "array", + "description": "Information on each available address.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Address type." + }, + "receiverName": { + "type": "string", + "description": "Name of the receiver." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "city": { + "type": "string", + "description": "City of the address." + }, + "state": { + "type": "string", + "description": "State of the address." + }, + "country": { + "type": "string", + "description": "Country of the address. ISO three-letter code." + }, + "street": { + "type": "string", + "description": "Street of the address." + }, + "number": { + "type": "string", + "description": "Number of the address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the address." + }, + "complement": { + "type": "string", + "description": "Complement to the address.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Reference that may help in the location of the address.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + }, + "userType": { + "type": "string", + "description": "User type.", + "nullable": true + }, + "ignoreProfileData": { + "type": "boolean", + "description": "Ignore customer profile data." + }, + "value": { + "type": "integer", + "description": "Total value of the order without separating cents. For example, $24.99 is represented `2499`." + }, + "messages": { + "type": "array", + "description": "Array containing an object for each message generated by our servers while processing the request." + }, + "items": { + "type": "array", + "description": "Information on each item in the order.", + "items": { + "type": "object", + "properties": { + "uniqueId": { + "type": "string", + "description": "Unique ID." + }, + "id": { + "type": "string", + "description": "ID of the item." + }, + "productId": { + "type": "string", + "description": "Product ID." + }, + "productRefId": { + "type": "string", + "description": "Product Ref ID." + }, + "refId": { + "type": "string", + "description": "Ref ID." + }, + "ean": { + "type": "string", + "description": "European Article Number.", + "nullable": true + }, + "name": { + "type": "string", + "description": "Product name." + }, + "skuName": { + "type": "string", + "description": "SKU name." + }, + "modalType": { + "type": "string", + "description": "Modal type.", + "nullable": true + }, + "parentItemIndex": { + "type": "integer", + "description": "Parent item index.", + "nullable": true + }, + "parentAssemblyBinding": { + "type": "string", + "description": "Parent assembly binding.", + "nullable": true + }, + "priceValidUntil": { + "type": "string", + "description": "Price expiration date and time." + }, + "tax": { + "type": "integer", + "description": "Tax value in cents." + }, + "taxCode": { + "type": "string", + "description": "A unique identifier code assigned to a tax within the VTEX Admin." + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "manualPrice": { + "type": "integer", + "description": "Manual price in cents.", + "nullable": true + }, + "manualPriceAppliedBy": { + "type": "string", + "description": "User that applied the manual price, if that is the case.", + "nullable": true + }, + "sellingPrice": { + "type": "integer", + "description": "Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead." + }, + "rewardValue": { + "type": "integer", + "description": "Reward value in cents." + }, + "isGift": { + "type": "boolean", + "description": "Indicates whether item is a gift." + }, + "additionalInfo": { + "type": "object", + "description": "Additional information.", + "properties": { + "dimension": { + "type": "string", + "description": "Dimension.", + "nullable": true + }, + "brandName": { + "type": "string", + "description": "Brand name." + }, + "brandId": { + "type": "string", + "description": "Brand ID." + }, + "offeringInfo": { + "type": "string", + "description": "Offering information.", + "nullable": true + }, + "offeringType": { + "type": "string", + "description": "Offering type.", + "nullable": true + }, + "offeringTypeId": { + "type": "string", + "description": "Offering type ID.", + "nullable": true + } + } + }, + "preSaleDate": { + "type": "string", + "description": "Presale date.", + "nullable": true + }, + "productCategoryIds": { + "type": "string", + "description": "Product category IDs." + }, + "productCategories": { + "type": "object", + "description": "Object, where each field is an ID from `productCategoryIds`.", + "properties": { + "{ID}": { + "type": "string", + "description": "Product category corresponding to the ID in the field key." + } + } + }, + "quantity": { + "type": "integer", + "description": "Quantity." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "sellerChain": { + "type": "array", + "description": "Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order.", + "items": { + "type": "string", + "description": "Seller." + } + }, + "imageUrl": { + "type": "string", + "description": "Image URL." + }, + "detailUrl": { + "type": "string", + "description": "Detail URL." + }, + "bundleItems": { + "type": "array", + "description": "Information on services sold along with the SKU. Example: a gift package.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Service type." + }, + "id": { + "type": "integer", + "description": "Service identifier." + }, + "name": { + "type": "string", + "description": "Service name." + }, + "price": { + "type": "integer", + "description": "Service price in cents." + } + } + } + }, + "attachments": { + "type": "array", + "description": "Array containing information on attachments.", + "items": { + "type": "string" + } + }, + "priceTags": { + "type": "array", + "description": "Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order.", + "items": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "Price tag identifier." + }, + "isPercentual": { + "type": "boolean", + "description": "Indicates whether price tag value is applied through a percentage." + }, + "name": { + "type": "string", + "description": "Price tag name." + }, + "rawValue": { + "type": "integer", + "description": "Price tag raw value." + }, + "value": { + "type": "integer", + "description": "Price tag value." + } + } + } + }, + "availability": { + "type": "string", + "description": "Availability." + }, + "measurementUnit": { + "type": "string", + "description": "Measurement unit." + }, + "unitMultiplier": { + "type": "integer", + "description": "Unit multiplier." + }, + "manufacturerCode": { + "type": "string", + "description": "Manufacturer code.", + "nullable": true + }, + "priceDefinition": { + "type": "object", + "description": "Price information for all units of a specific item.", + "properties": { + "calculatedSellingPrice": { + "type": "integer", + "description": "Item's calculated unitary selling price in cents." + }, + "total": { + "type": "integer", + "description": "Total value for all units of the item in cents." + }, + "sellingPrices": { + "type": "array", + "description": "Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total.", + "items": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "description": "Value in cents for that specific rounding." + }, + "quantity": { + "type": "integer", + "description": "Rounding quantity, meaning how many items are rounded to this value." + } + } + } + } + } + } + } + } + }, + "selectableGifts": { + "type": "array", + "description": "Array containing the data of the item selected as a gift." + }, + "totalizers": { + "type": "array", + "description": "Array containing an object for each totalizer for the purchase. Totalizers contain the sum of values for a specific part of the order (e.g. Total item value, Total shipping value)." + }, + "shippingData": { + "type": "object", + "description": "Shipping information pertinent to the order.", + "properties": { + "address": { + "type": "object", + "description": "Address information.", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + }, + "logisticsInfo": { + "type": "array", + "description": "Array with logistics information. Each object in this array corresponds to an object in the `items` array, based on the respective `itemIndex`.", + "items": { + "type": "object", + "properties": { + "itemIndex": { + "type": "integer", + "description": "Index corresponding to the position of the object in the `items` array." + }, + "selectedSla": { + "type": "string", + "description": "SLA selected by the customer." + }, + "selectedDeliveryChannel": { + "type": "string", + "description": "Delivery channel selected by the customer." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "slas": { + "type": "array", + "description": "Information on available SLAs.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "SLA ID." + }, + "deliveryChannel": { + "type": "string", + "description": "Delivery channel." + }, + "name": { + "type": "string", + "description": "SLA name." + }, + "deliveryIds": { + "type": "array", + "description": "Information on each delivery ID.", + "items": { + "type": "object", + "properties": { + "courierId": { + "type": "string", + "description": "Courier ID." + }, + "warehouseId": { + "type": "string", + "description": "Warehouse ID." + }, + "dockId": { + "type": "string", + "description": "Warehouse ID." + }, + "courierName": { + "type": "string", + "description": "Courier name." + }, + "quantity": { + "type": "integer", + "description": "Quantity." + } + } + } + }, + "shippingEstimate": { + "type": "string", + "description": "Shipping estimate. For instance, Three business days will be represented `3bd`." + }, + "shippingEstimateDate": { + "type": "string", + "description": "Shipping estimate date.", + "nullable": true + }, + "lockTTL": { + "type": "string", + "description": "Estimate date of delivery." + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "tax": { + "type": "integer", + "description": "Tax in cents." + }, + "pickupStoreInfo": { + "type": "object", + "description": "Information on the pickup store.", + "properties": { + "isPickupStore": { + "type": "boolean", + "description": "Indicates whether it is the pickup store." + }, + "friendlyName": { + "type": "string", + "description": "Friendly name.", + "nullable": true + }, + "address": { + "type": "object", + "description": "Address information.", + "nullable": true, + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + }, + "additionalInfo": { + "type": "string", + "description": "Additional information.", + "nullable": true + }, + "dockId": { + "type": "string", + "description": "Corresponding dock ID.", + "nullable": true + } + } + }, + "pickupPointId": { + "type": "string", + "description": "Pickup point ID.", + "nullable": true + }, + "pickupDistance": { + "type": "integer", + "description": "Pickup point distance." + }, + "polygonName": { + "type": "string", + "description": "Polygon name.", + "nullable": true + }, + "transitTime": { + "type": "string", + "description": "Transit time. For instance, \"three business days\" is represented `3bd`." + } + } + } + }, + "shipsTo": { + "type": "array", + "description": "List of countries that the item may be shipped to.", + "items": { + "type": "string", + "description": "Three letter country code." + } + }, + "itemId": { + "type": "string", + "description": "Item ID." + }, + "deliveryChannels": { + "type": "array", + "description": "List of available delivery channels.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Delivery channel ID." + } + } + } + } + } + } + }, + "selectedAddresses": { + "type": "array", + "description": "Array with information on the selected addresses for the order.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies." + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + }, + "availableAddresses": { + "type": "array", + "description": "Array with information on the available addresses for the order.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies." + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + } + } + }, + "clientProfileData": { + "type": "object", + "description": "Customer's profile information.", + "properties": { + "email": { + "type": "string", + "description": "Email address." + }, + "firstName": { + "type": "string", + "description": "First name." + }, + "lastName": { + "type": "string", + "description": "Last name." + }, + "documentType": { + "type": "string", + "description": "Type of the document informed by the customer." + }, + "document": { + "type": "string", + "description": "Document informed by the customer." + }, + "phone": { + "type": "string", + "description": "Phone number." + }, + "corporateName": { + "type": "string", + "description": "Company name, if the customer is a legal entity.", + "nullable": true + }, + "tradeName": { + "type": "string", + "description": "Trade name, if the customer is a legal entity.", + "nullable": true + }, + "corporateDocument": { + "type": "string", + "description": "Corporate document, if the customer is a legal entity.", + "nullable": true + }, + "stateInscription": { + "type": "string", + "description": "State inscription, if the customer is a legal entity.", + "nullable": true + }, + "corporatePhone": { + "type": "string", + "description": "Corporate phone number, if the customer is a legal entity.", + "nullable": true + }, + "isCorporate": { + "type": "boolean", + "description": "Indicates whether the customer is a legal entity." + }, + "profileCompleteOnLoading": { + "type": "boolean", + "description": "Indicates whether profile is complete on loading." + }, + "profileErrorOnLoading": { + "type": "boolean", + "description": "Indicates whether profile presents error on loading.", + "nullable": true + }, + "customerClass": { + "type": "string", + "description": "Customer class.", + "nullable": true + } + } + }, + "paymentData": { + "type": "object", + "description": "Information on the order's payment.", + "properties": { + "giftCards": { + "type": "array", + "description": "Gift card information, if it applies to the order.", + "items": { + "type": "object", + "properties": { + "redemptionCode": { + "type": "string", + "description": "Gift card redemption code." + }, + "value": { + "type": "integer", + "description": "Gift card value in cents." + }, + "balance": { + "type": "integer", + "description": "Gift card balance in cents." + }, + "name": { + "type": "string", + "description": "Gift card name." + }, + "id": { + "type": "string", + "description": "Gift card ID." + }, + "inUse": { + "type": "boolean", + "description": "Indicates whether gift card is in use." + }, + "isSpecialCard": { + "type": "boolean", + "description": "Indicates whether gift card is special." + } + } + } + }, + "transactions": { + "type": "array", + "description": "Information on each transaction pertinent to the order.", + "items": { + "type": "object", + "properties": { + "isActive": { + "type": "boolean", + "description": "Indicates whether transaction is active." + }, + "transactionId": { + "type": "string", + "description": "Transaction ID." + }, + "merchantName": { + "type": "string", + "description": "Merchant name." + }, + "payments": { + "type": "array", + "description": "Information on each payment.", + "items": { + "type": "object", + "properties": { + "accountId": { + "type": "string", + "description": "Account ID." + }, + "bin": { + "type": "string", + "description": "Bin." + }, + "installments": { + "type": "integer", + "description": "Number of installments." + }, + "paymentSystem": { + "type": "string", + "description": "Payment system." + }, + "referenceValue": { + "type": "integer", + "description": "Reference value for calculating interest rates, in case it applies. Displayed in cents." + }, + "value": { + "type": "integer", + "description": "Value including interest, in case it applies. Displayed in cents." + } + } + } + }, + "sharedTransaction": { + "type": "boolean", + "description": "Indicates whather transaction is shared." + } + } + } + } + } + }, + "marketingData": { + "type": "object", + "description": "Object containing promotion data such as coupon tracking information and internal or external UTMs.", + "properties": { + "coupon": { + "type": "string", + "description": "Sending an existing coupon code in this field will return the corresponding discount in the purchase. Use the [cart simulation](https://developers.vtex.com/vtex-rest-api/reference/orderform#orderformsimulation) request to check which coupons might apply before placing the order.", + "default": "free-shipping" + }, + "utmSource": { + "type": "string", + "description": "UTM source.", + "default": "Facebook" + }, + "utmMedium": { + "type": "string", + "description": "UTM medium.", + "default": "CPC" + }, + "utmCampaign": { + "type": "string", + "description": "UTM campaign", + "default": "Black friday" + }, + "utmiPage": { + "type": "string", + "description": "utmi_page (internal utm).", + "default": "utmi_page-example", + "nullable": true + }, + "utmiPart": { + "type": "string", + "description": "utmi_part (internal utm).", + "default": "utmi_part-example", + "nullable": true + }, + "utmiCampaign": { + "type": "string", + "description": "utmi_campaign (internal utm).", + "default": "utmi_campaign-example", + "nullable": true + } + } + }, + "sellers": { + "type": "array", + "description": "Information on each seller.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Seller ID." + }, + "name": { + "type": "string", + "description": "Seller name." + }, + "logo": { + "type": "string", + "description": "Seller logo.", + "nullable": true + } + } + } + }, + "clientPreferencesData": { + "type": "object", + "description": "Object containing preferences from the client who placed the order.", + "properties": { + "locale": { + "type": "string", + "description": "Client's locale. Examples: `pt-BR` and `en-US`." + }, + "optinNewsLetter": { + "type": "boolean", + "description": "`true` if the client opted to receive newsletter from the store.", + "default": false + } + } + }, + "commercialConditionData": { + "type": "object", + "description": "Object containing commercial condition information.", + "nullable": true + }, + "storePreferencesData": { + "type": "object", + "description": "Object containing data from the store's configuration (stored in VTEX's License Manager)." + }, + "giftRegistryData": { + "type": "object", + "description": "Gift registry list information.", + "nullable": true + }, + "openTextField": { + "type": "string", + "description": "Optional field meant to hold additional information about the order. We recommend using this field for text, not data formats such as `JSON` even if escaped. For that purpose, see [Creating customizable fields](https://developers.vtex.com/vtex-rest-api/docs/creating-customizable-fields-in-the-cart-with-checkout-api-1).", + "default": "open-text-example", + "nullable": true + }, + "invoiceData": { + "type": "object", + "description": "Object containing information pertinent to the order's invoice.", + "nullable": true + }, + "customData": { + "type": "object", + "description": "Customer additional information.", + "nullable": true + }, + "itemMetadata": { + "type": "object", + "description": "Item metadata.", + "properties": { + "items": { + "type": "array", + "description": "List of objects containing metadata on each item in the order.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Item ID." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "name": { + "type": "string", + "description": "Product name." + }, + "skuName": { + "type": "string", + "description": "SKU name." + }, + "productId": { + "type": "string", + "description": "Product ID." + }, + "refId": { + "type": "string", + "description": "Ref ID." + }, + "ean": { + "type": "string", + "description": "European Article Number.", + "nullable": true + }, + "imageUrl": { + "type": "string", + "description": "Image URL." + }, + "detailUrl": { + "type": "string", + "description": "Detail URL." + } + } + } + } + } + }, + "hooksData": { + "type": "object", + "description": "Hooks information.", + "nullable": true + }, + "ratesAndBenefitsData": { + "type": "object", + "description": "Information on rates and benefits that apply to the order.", + "properties": { + "rateAndBenefitsIdentifiers": { + "type": "array", + "description": "List with rates and benefits identifiers.", + "items": { + "type": "string" + } + }, + "teaser": { + "type": "array", + "description": "List with rates and benefits teasers.", + "items": { + "type": "string" + } + } + } + }, + "subscriptionData": { + "type": "object", + "description": "Subscription information.", + "nullable": true + }, + "itemsOrdination": { + "type": "object", + "description": "Object containing information about the ordering of items within the orderForm.", + "properties": { + "criteria": { + "type": "string", + "description": "Criteria adopted to order the items in the list." + }, + "ascending": { + "type": "boolean", + "description": "Indicates whether the ordering is ascending." + } + } + } + } + }, + "example": { + "orderFormId": "ede846222cd44046ba6c638442c3505a", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": "fb542e51-5488-4c34-8d17-ed8fcf597a94", + "profileProvider": "VTEX", + "availableAccounts": [], + "availableAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "666c2e830bd9474ab6f6cc53fb6dd2d2", + "isDisposable": true, + "postalCode": "70386000", + "city": "Brasília", + "state": "DF", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "userType": null, + "ignoreProfileData": false, + "value": 34390, + "messages": [], + "items": [ + { + "uniqueId": "9D6E447B3FF64CEDA33B17C01379C119", + "id": "2", + "productId": "2005", + "productRefId": "", + "refId": "CBC30L", + "ean": null, + "name": "Chopp Brahma Claro 30L", + "skuName": "Chopp Brahma Claro 30L", + "modalType": null, + "parentItemIndex": null, + "parentAssemblyBinding": null, + "assemblies": [], + "priceValidUntil": "2022-07-13T18:30:46Z", + "tax": 0, + "taxCode": "54WC8ZN6K8", + "price": 32890, + "listPrice": 49900, + "manualPrice": null, + "manualPriceAppliedBy": null, + "sellingPrice": 32890, + "rewardValue": 0, + "isGift": false, + "additionalInfo": { + "dimension": null, + "brandName": "Brahma", + "brandId": "2000000", + "offeringInfo": null, + "offeringType": null, + "offeringTypeId": null + }, + "preSaleDate": null, + "productCategoryIds": "/1/", + "productCategories": { + "1": "Bebidas" + }, + "quantity": 3, + "seller": "1", + "sellerChain": [ + "1" + ], + "imageUrl": "http://mystore.vteximg.com.br/arquivos/ids/155400-55-55/30l_v2.png?v=637303412106100000", + "detailUrl": "/chopp-brahma-claro-30l/p", + "components": [], + "bundleItems": [], + "attachments": [], + "attachmentOfferings": [], + "offerings": [], + "priceTags": [], + "availability": "available", + "measurementUnit": "un", + "unitMultiplier": 1, + "manufacturerCode": null, + "priceDefinition": { + "calculatedSellingPrice": 32890, + "total": 32890, + "sellingPrices": [ + { + "value": 32890, + "quantity": 1 + } + ] + } + } + ], + "selectableGifts": [], + "totalizers": [ + { + "id": "Items", + "name": "Total dos Itens", + "value": 15000 + } + ], + "shippingData": { + "address": { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "70386000", + "city": "Brasília", + "state": "DF", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + }, + "logisticsInfo": [ + { + "itemIndex": 0, + "selectedSla": "Normal", + "selectedDeliveryChannel": "delivery", + "addressId": "teste", + "slas": [ + { + "id": "Normal", + "deliveryChannel": "delivery", + "name": "Normal", + "deliveryIds": [ + { + "courierId": "1", + "warehouseId": "1_1", + "dockId": "1", + "courierName": "Transportadora", + "quantity": 1, + "kitItemDetails": [] + } + ], + "shippingEstimate": "3bd", + "shippingEstimateDate": null, + "lockTTL": "10d", + "availableDeliveryWindows": [], + "deliveryWindow": null, + "price": 1500, + "listPrice": 1500, + "tax": 0, + "pickupStoreInfo": { + "isPickupStore": false, + "friendlyName": null, + "address": null, + "additionalInfo": null, + "dockId": null + }, + "pickupPointId": null, + "pickupDistance": 0, + "polygonName": null, + "transitTime": "3bd" + } + ], + "shipsTo": [ + "BRA", + "COL", + "USA" + ], + "itemId": "2", + "deliveryChannels": [ + { + "id": "delivery" + }, + { + "id": "pickup-in-point" + } + ] + } + ], + "selectedAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "availableAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "pickupPoints": [] + }, + "clientProfileData": { + "email": "clark.kent@example.com", + "firstName": "Clark", + "lastName": "Kent", + "document": "12345678900", + "documentType": "cpf", + "phone": "+5521998765432", + "corporateName": null, + "tradeName": null, + "corporateDocument": null, + "stateInscription": null, + "corporatePhone": null, + "isCorporate": false, + "profileCompleteOnLoading": false, + "profileErrorOnLoading": null, + "customerClass": null + }, + "paymentData": { + "installmentOptions": [ + { + "paymentSystem": "2", + "bin": null, + "paymentName": null, + "paymentGroupName": null, + "value": 15000, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 15000, + "total": 15000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 15000, + "total": 15000 + } + ] + }, + { + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 7500, + "total": 15000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 7500, + "total": 15000 + } + ] + } + ] + } + ], + "paymentSystems": [ + { + "id": 2, + "name": "Visa", + "groupName": "creditCardPaymentGroup", + "validator": { + "regex": "^2[1-8]{17}$", + "mask": "9999 9999 9999 9999", + "cardCodeRegex": "^[0-3]{8}$", + "cardCodeMask": "999", + "weights": [ + 2, + 1, + 2, + 1, + 2, + 1 + ], + "useCvv": true, + "useExpirationDate": true, + "useCardHolderName": true, + "useBillingAddress": true + }, + "stringId": "2", + "template": "creditCardPaymentGroup-template", + "requiresDocument": false, + "isCustom": false, + "description": null, + "requiresAuthentication": false, + "dueDate": "2020-03-05T14:59:00.7879306Z", + "availablePayments": null + } + ], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": { + "coupon": "free-shipping", + "utmSource": "app", + "utmMedium": "CPC", + "utmCampaign": "Black friday", + "utmipage": null, + "utmiPart": null, + "utmiCampaign": null + }, + "sellers": [ + { + "id": "1", + "name": "lojadobreno", + "logo": "" + } + ], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": false + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymboupdate cartl": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": { + "items": [ + { + "id": "1", + "seller": "1", + "name": "Ração Royal Canin Feline Urinary 500g", + "skuName": "Ração Royal Canin Feline Urinary 500g", + "productId": "1", + "refId": "0001", + "ean": "123456789", + "imageUrl": "http://lojadobreno.vteximg.com.br/arquivos/ids/155450-55-55/Racao-Royal-Canin-Feline-Urinary-SO.jpg?v=637139444438700000", + "detailUrl": "/racao-royal-canin-feline-urinary/p", + "assemblyOptions": [] + } + ] + }, + "hooksData": null, + "ratesAndBenefitsData": { + "rateAndBenefitsIdentifiers": [], + "teaser": [] + }, + "subscriptionData": null, + "itemsOrdination": { + "criteria": "NAME", + "ascending": true + } + } + } + } + } + }, + "deprecated": false + }, + "patch": { + "tags": [ + "Shopping cart" + ], + "summary": "Handle cart items", + "description": "You can use this request to:\n\r\n\r1. Change the quantity or price of one or more items to the shopping cart.\n\r2. Add a new item to the shopping cart.\r\n\r\n**Important**: To add a new item to the shopping cart, do not send the string `index` in the request body.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure that represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\n\r\n\r> This request has a time out of 45 seconds.", + "operationId": "ItemsHandle", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm corresponding to the cart in which items will be handled.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "ede846222cd44046ba6c638442c3505a" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "orderItems": { + "type": "array", + "description": "Array containing the cart items. Each object inside this array corresponds to a different item.", + "items": { + "required": [ + "id", + "quantity", + "seller" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The ID of the SKU in VTEX platform.", + "example": "2005" + }, + "quantity": { + "type": "integer", + "format": "int32", + "description": "The quantity of the item (SKU) in the cart.", + "example": 3 + }, + "seller": { + "type": "string", + "description": "The seller responsible for the SKU.", + "example": "1" + }, + "index": { + "type": "integer", + "description": "The position of the item in the array. This string should be sent only to modify price or quantity of an item. NOTE: This string should not be sent when you are adding a new item to the cart.", + "example": 0 + }, + "price": { + "type": "integer", + "description": "Price of the item in cents. Send this value in case you want to make a bulk price change.", + "example": 1099 + }, + "attachments": { + "type": "array", + "description": "Array containing information on attachments.", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Attachment identification.", + "example": "Packages" + }, + "content": { + "type": "object", + "description": "Attachment content data. E.g. `\"Do you want to receive packages?\": \"Yes\"`.", + "nullable": true + } + } + } + }, + "noSplitItem": { + "type": "boolean", + "description": "Indicates whether the item can be splitted.", + "default": false + }, + "allowedOutdatedData": { + "type": "array", + "description": "In order to optimize performance, this parameter allows some information to not be updated when there are changes in the minicart. For instance, if a shopper adds another unit of a given SKU to the cart, it may not be necessary to recalculate payment information, which could impact performance. This array accepts strings and currently the only possible value is `\"paymentData\"`.", + "items": { + "type": "string", + "default": "paymentData" + } + } + } + } + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "orderFormId": { + "type": "string", + "description": "ID of the orderForm corresponding to a specific cart." + }, + "salesChannel": { + "type": "string", + "description": "Attribute created by the seller, in their VTEX store configuration." + }, + "loggedIn": { + "type": "boolean", + "description": "Indicates whether the user is logged into the store." + }, + "isCheckedIn": { + "type": "boolean", + "description": "Indicates whether order is checked in." + }, + "storeId": { + "type": "string", + "description": "ID of the store.", + "nullable": true + }, + "allowManualPrice": { + "type": "boolean", + "description": "Permission to modify item price manually." + }, + "canEditData": { + "type": "boolean", + "description": "Data can be edited." + }, + "userProfileId": { + "type": "string", + "description": "Unique ID associated with the customer profile." + }, + "profileProvider": { + "type": "string", + "description": "Profile provider." + }, + "availableAccounts": { + "type": "array", + "description": "Available accounts.", + "items": { + "type": "string" + } + }, + "availableAddresses": { + "type": "array", + "description": "Information on each available address.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Address type." + }, + "receiverName": { + "type": "string", + "description": "Name of the receiver." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "city": { + "type": "string", + "description": "City of the address." + }, + "state": { + "type": "string", + "description": "State of the address." + }, + "country": { + "type": "string", + "description": "Country of the address. ISO three-letter code." + }, + "street": { + "type": "string", + "description": "Street of the address." + }, + "number": { + "type": "string", + "description": "Number of the address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the address." + }, + "complement": { + "type": "string", + "description": "Complement to the address.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Reference that may help in the location of the address.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + }, + "userType": { + "type": "string", + "description": "User type.", + "nullable": true + }, + "ignoreProfileData": { + "type": "boolean", + "description": "Ignore customer profile data." + }, + "value": { + "type": "integer", + "description": "Total value of the order without separating cents. For example, $24.99 is represented `2499`." + }, + "messages": { + "type": "array", + "description": "Array containing an object for each message generated by our servers while processing the request." + }, + "items": { + "type": "array", + "description": "Information on each item in the order.", + "items": { + "type": "object", + "properties": { + "uniqueId": { + "type": "string", + "description": "Unique ID." + }, + "id": { + "type": "string", + "description": "ID of the item." + }, + "productId": { + "type": "string", + "description": "Product ID." + }, + "productRefId": { + "type": "string", + "description": "Product Ref ID." + }, + "refId": { + "type": "string", + "description": "Ref ID." + }, + "ean": { + "type": "string", + "description": "European Article Number.", + "nullable": true + }, + "name": { + "type": "string", + "description": "Product name." + }, + "skuName": { + "type": "string", + "description": "SKU name." + }, + "modalType": { + "type": "string", + "description": "Modal type.", + "nullable": true + }, + "parentItemIndex": { + "type": "integer", + "description": "Parent item index.", + "nullable": true + }, + "parentAssemblyBinding": { + "type": "string", + "description": "Parent assembly binding.", + "nullable": true + }, + "priceValidUntil": { + "type": "string", + "description": "Price expiration date and time." + }, + "tax": { + "type": "integer", + "description": "Tax value in cents." + }, + "taxCode": { + "type": "string", + "description": "A unique identifier code assigned to a tax within the VTEX Admin." + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "manualPrice": { + "type": "integer", + "description": "Manual price in cents.", + "nullable": true + }, + "manualPriceAppliedBy": { + "type": "string", + "description": "User that applied the manual price, if that is the case.", + "nullable": true + }, + "sellingPrice": { + "type": "integer", + "description": "Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead." + }, + "rewardValue": { + "type": "integer", + "description": "Reward value in cents." + }, + "isGift": { + "type": "boolean", + "description": "Indicates whether item is a gift." + }, + "additionalInfo": { + "type": "object", + "description": "Additional information.", + "properties": { + "dimension": { + "type": "string", + "description": "Dimension.", + "nullable": true + }, + "brandName": { + "type": "string", + "description": "Brand name." + }, + "brandId": { + "type": "string", + "description": "Brand ID." + }, + "offeringInfo": { + "type": "string", + "description": "Offering information.", + "nullable": true + }, + "offeringType": { + "type": "string", + "description": "Offering type.", + "nullable": true + }, + "offeringTypeId": { + "type": "string", + "description": "Offering type ID.", + "nullable": true + } + } + }, + "preSaleDate": { + "type": "string", + "description": "Presale date.", + "nullable": true + }, + "productCategoryIds": { + "type": "string", + "description": "Product category IDs." + }, + "productCategories": { + "type": "object", + "description": "Object, where each field is an ID from `productCategoryIds`.", + "properties": { + "{ID}": { + "type": "string", + "description": "Product category corresponding to the ID in the field key." + } + } + }, + "quantity": { + "type": "integer", + "description": "Quantity." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "sellerChain": { + "type": "array", + "description": "Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order.", + "items": { + "type": "string", + "description": "Seller." + } + }, + "imageUrl": { + "type": "string", + "description": "Image URL." + }, + "detailUrl": { + "type": "string", + "description": "Detail URL." + }, + "bundleItems": { + "type": "array", + "description": "Information on services sold along with the SKU. Example: a gift package.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Service type." + }, + "id": { + "type": "integer", + "description": "Service identifier." + }, + "name": { + "type": "string", + "description": "Service name." + }, + "price": { + "type": "integer", + "description": "Service price in cents." + } + } + } + }, + "attachments": { + "type": "array", + "description": "Array containing information on attachments.", + "items": { + "type": "string" + } + }, + "priceTags": { + "type": "array", + "description": "Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order.", + "items": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "Price tag identifier." + }, + "isPercentual": { + "type": "boolean", + "description": "Indicates whether price tag value is applied through a percentage." + }, + "name": { + "type": "string", + "description": "Price tag name." + }, + "rawValue": { + "type": "integer", + "description": "Price tag raw value." + }, + "value": { + "type": "integer", + "description": "Price tag value." + } + } + } + }, + "availability": { + "type": "string", + "description": "Availability." + }, + "measurementUnit": { + "type": "string", + "description": "Measurement unit." + }, + "unitMultiplier": { + "type": "integer", + "description": "Unit multiplier." + }, + "manufacturerCode": { + "type": "string", + "description": "Manufacturer code.", + "nullable": true + }, + "priceDefinition": { + "type": "object", + "description": "Price information for all units of a specific item.", + "properties": { + "calculatedSellingPrice": { + "type": "integer", + "description": "Item's calculated unitary selling price in cents." + }, + "total": { + "type": "integer", + "description": "Total value for all units of the item in cents." + }, + "sellingPrices": { + "type": "array", + "description": "Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total.", + "items": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "description": "Value in cents for that specific rounding." + }, + "quantity": { + "type": "integer", + "description": "Rounding quantity, meaning how many items are rounded to this value." + } + } + } + } + } + } + } + } + }, + "selectableGifts": { + "type": "array", + "description": "Array containing the data of the item selected as a gift." + }, + "totalizers": { + "type": "array", + "description": "Array containing an object for each totalizer for the purchase. Totalizers contain the sum of values for a specific part of the order (e.g. Total item value, Total shipping value)." + }, + "shippingData": { + "type": "object", + "description": "Shipping information pertinent to the order.", + "properties": { + "address": { + "type": "object", + "description": "Address information.", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + }, + "logisticsInfo": { + "type": "array", + "description": "Array with logistics information. Each object in this array corresponds to an object in the `items` array, based on the respective `itemIndex`.", + "items": { + "type": "object", + "properties": { + "itemIndex": { + "type": "integer", + "description": "Index corresponding to the position of the object in the `items` array." + }, + "selectedSla": { + "type": "string", + "description": "SLA selected by the customer." + }, + "selectedDeliveryChannel": { + "type": "string", + "description": "Delivery channel selected by the customer." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "slas": { + "type": "array", + "description": "Information on available SLAs.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "SLA ID." + }, + "deliveryChannel": { + "type": "string", + "description": "Delivery channel." + }, + "name": { + "type": "string", + "description": "SLA name." + }, + "deliveryIds": { + "type": "array", + "description": "Information on each delivery ID.", + "items": { + "type": "object", + "properties": { + "courierId": { + "type": "string", + "description": "Courier ID." + }, + "warehouseId": { + "type": "string", + "description": "Warehouse ID." + }, + "dockId": { + "type": "string", + "description": "Warehouse ID." + }, + "courierName": { + "type": "string", + "description": "Courier name." + }, + "quantity": { + "type": "integer", + "description": "Quantity." + } + } + } + }, + "shippingEstimate": { + "type": "string", + "description": "Shipping estimate. For instance, Three business days will be represented `3bd`." + }, + "shippingEstimateDate": { + "type": "string", + "description": "Shipping estimate date.", + "nullable": true + }, + "lockTTL": { + "type": "string", + "description": "Estimate date of delivery." + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "tax": { + "type": "integer", + "description": "Tax in cents." + }, + "pickupStoreInfo": { + "type": "object", + "description": "Information on the pickup store.", + "properties": { + "isPickupStore": { + "type": "boolean", + "description": "Indicates whether it is the pickup store." + }, + "friendlyName": { + "type": "string", + "description": "Friendly name.", + "nullable": true + }, + "address": { + "type": "object", + "description": "Address information.", + "nullable": true, + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + }, + "additionalInfo": { + "type": "string", + "description": "Additional information.", + "nullable": true + }, + "dockId": { + "type": "string", + "description": "Corresponding dock ID.", + "nullable": true + } + } + }, + "pickupPointId": { + "type": "string", + "description": "Pickup point ID.", + "nullable": true + }, + "pickupDistance": { + "type": "integer", + "description": "Pickup point distance." + }, + "polygonName": { + "type": "string", + "description": "Polygon name.", + "nullable": true + }, + "transitTime": { + "type": "string", + "description": "Transit time. For instance, \"three business days\" is represented `3bd`." + } + } + } + }, + "shipsTo": { + "type": "array", + "description": "List of countries that the item may be shipped to.", + "items": { + "type": "string", + "description": "Three letter country code." + } + }, + "itemId": { + "type": "string", + "description": "Item ID." + }, + "deliveryChannels": { + "type": "array", + "description": "List of available delivery channels.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Delivery channel ID." + } + } + } + } + } + } + }, + "selectedAddresses": { + "type": "array", + "description": "Array with information on the selected addresses for the order.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies." + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + }, + "availableAddresses": { + "type": "array", + "description": "Array with information on the available addresses for the order.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies." + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + } + } + }, + "clientProfileData": { + "type": "object", + "description": "Customer's profile information.", + "properties": { + "email": { + "type": "string", + "description": "Email address." + }, + "firstName": { + "type": "string", + "description": "First name." + }, + "lastName": { + "type": "string", + "description": "Last name." + }, + "documentType": { + "type": "string", + "description": "Type of the document informed by the customer." + }, + "document": { + "type": "string", + "description": "Document informed by the customer." + }, + "phone": { + "type": "string", + "description": "Phone number." + }, + "corporateName": { + "type": "string", + "description": "Company name, if the customer is a legal entity.", + "nullable": true + }, + "tradeName": { + "type": "string", + "description": "Trade name, if the customer is a legal entity.", + "nullable": true + }, + "corporateDocument": { + "type": "string", + "description": "Corporate document, if the customer is a legal entity.", + "nullable": true + }, + "stateInscription": { + "type": "string", + "description": "State inscription, if the customer is a legal entity.", + "nullable": true + }, + "corporatePhone": { + "type": "string", + "description": "Corporate phone number, if the customer is a legal entity.", + "nullable": true + }, + "isCorporate": { + "type": "boolean", + "description": "Indicates whether the customer is a legal entity." + }, + "profileCompleteOnLoading": { + "type": "boolean", + "description": "Indicates whether profile is complete on loading." + }, + "profileErrorOnLoading": { + "type": "boolean", + "description": "Indicates whether profile presents error on loading.", + "nullable": true + }, + "customerClass": { + "type": "string", + "description": "Customer class.", + "nullable": true + } + } + }, + "paymentData": { + "type": "object", + "description": "Information on the order's payment.", + "properties": { + "giftCards": { + "type": "array", + "description": "Gift card information, if it applies to the order.", + "items": { + "type": "object", + "properties": { + "redemptionCode": { + "type": "string", + "description": "Gift card redemption code." + }, + "value": { + "type": "integer", + "description": "Gift card value in cents." + }, + "balance": { + "type": "integer", + "description": "Gift card balance in cents." + }, + "name": { + "type": "string", + "description": "Gift card name." + }, + "id": { + "type": "string", + "description": "Gift card ID." + }, + "inUse": { + "type": "boolean", + "description": "Indicates whether gift card is in use." + }, + "isSpecialCard": { + "type": "boolean", + "description": "Indicates whether gift card is special." + } + } + } + }, + "transactions": { + "type": "array", + "description": "Information on each transaction pertinent to the order.", + "items": { + "type": "object", + "properties": { + "isActive": { + "type": "boolean", + "description": "Indicates whether transaction is active." + }, + "transactionId": { + "type": "string", + "description": "Transaction ID." + }, + "merchantName": { + "type": "string", + "description": "Merchant name." + }, + "payments": { + "type": "array", + "description": "Information on each payment.", + "items": { + "type": "object", + "properties": { + "accountId": { + "type": "string", + "description": "Account ID." + }, + "bin": { + "type": "string", + "description": "Bin." + }, + "installments": { + "type": "integer", + "description": "Number of installments." + }, + "paymentSystem": { + "type": "string", + "description": "Payment system." + }, + "referenceValue": { + "type": "integer", + "description": "Reference value for calculating interest rates, in case it applies. Displayed in cents." + }, + "value": { + "type": "integer", + "description": "Value including interest, in case it applies. Displayed in cents." + } + } + } + }, + "sharedTransaction": { + "type": "boolean", + "description": "Indicates whather transaction is shared." + } + } + } + } + } + }, + "marketingData": { + "type": "object", + "description": "Object containing promotion data such as coupon tracking information and internal or external UTMs.", + "properties": { + "coupon": { + "type": "string", + "description": "Sending an existing coupon code in this field will return the corresponding discount in the purchase. Use the [cart simulation](https://developers.vtex.com/docs/api-reference/checkout-api#post-/api/checkout/pub/orderForms/simulation) request to check which coupons might apply before placing the order.", + "default": "free-shipping" + }, + "utmSource": { + "type": "string", + "description": "UTM source.", + "default": "Facebook" + }, + "utmMedium": { + "type": "string", + "description": "UTM medium.", + "default": "CPC" + }, + "utmCampaign": { + "type": "string", + "description": "UTM campaign", + "default": "Black friday" + }, + "utmiPage": { + "type": "string", + "description": "utmi_page (internal utm).", + "default": "utmi_page-example", + "nullable": true + }, + "utmiPart": { + "type": "string", + "description": "utmi_part (internal utm).", + "default": "utmi_part-example", + "nullable": true + }, + "utmiCampaign": { + "type": "string", + "description": "utmi_campaign (internal utm).", + "default": "utmi_campaign-example", + "nullable": true + } + } + }, + "sellers": { + "type": "array", + "description": "Information on each seller.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Seller ID." + }, + "name": { + "type": "string", + "description": "Seller name." + }, + "logo": { + "type": "string", + "description": "Seller logo.", + "nullable": true + } + } + } + }, + "clientPreferencesData": { + "type": "object", + "description": "Object containing preferences from the client who placed the order.", + "properties": { + "locale": { + "type": "string", + "description": "Client's locale. Examples: `pt-BR` and `en-US`." + }, + "optinNewsLetter": { + "type": "boolean", + "description": "`true` if the client opted to receive newsletter from the store.", + "default": false + } + } + }, + "commercialConditionData": { + "type": "object", + "description": "Object containing commercial condition information.", + "nullable": true + }, + "storePreferencesData": { + "type": "object", + "description": "Object containing data from the store's configuration (stored in VTEX's License Manager)." + }, + "giftRegistryData": { + "type": "object", + "description": "Gift registry list information.", + "nullable": true + }, + "openTextField": { + "type": "string", + "description": "Optional field meant to hold additional information about the order. We recommend using this field for text, not data formats such as `JSON` even if escaped. For that purpose, see [Creating customizable fields](https://developers.vtex.com/docs/guides/customizable-fields-with-checkout-api).", + "default": "open-text-example", + "nullable": true + }, + "invoiceData": { + "type": "object", + "description": "Object containing information pertinent to the order's invoice.", + "nullable": true + }, + "customData": { + "type": "object", + "description": "Customer additional information.", + "nullable": true + }, + "itemMetadata": { + "type": "object", + "description": "Item metadata.", + "properties": { + "items": { + "type": "array", + "description": "List of objects containing metadata on each item in the order.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Item ID." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "name": { + "type": "string", + "description": "Product name." + }, + "skuName": { + "type": "string", + "description": "SKU name." + }, + "productId": { + "type": "string", + "description": "Product ID." + }, + "refId": { + "type": "string", + "description": "Ref ID." + }, + "ean": { + "type": "string", + "description": "European Article Number.", + "nullable": true + }, + "imageUrl": { + "type": "string", + "description": "Image URL." + }, + "detailUrl": { + "type": "string", + "description": "Detail URL." + } + } + } + } + } + }, + "hooksData": { + "type": "object", + "description": "Hooks information.", + "nullable": true + }, + "ratesAndBenefitsData": { + "type": "object", + "description": "Information on rates and benefits that apply to the order.", + "properties": { + "rateAndBenefitsIdentifiers": { + "type": "array", + "description": "List with rates and benefits identifiers.", + "items": { + "type": "string" + } + }, + "teaser": { + "type": "array", + "description": "List with rates and benefits teasers.", + "items": { + "type": "string" + } + } + } + }, + "subscriptionData": { + "type": "object", + "description": "Subscription information.", + "nullable": true + }, + "itemsOrdination": { + "type": "object", + "description": "Object containing information about the ordering of items within the orderForm.", + "properties": { + "criteria": { + "type": "string", + "description": "Criteria adopted to order the items in the list." + }, + "ascending": { + "type": "boolean", + "description": "Indicates whether the ordering is ascending." + } + } + } + } + }, + "example": { + "orderFormId": "ede846222cd44046ba6c638442c3505a", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": "fb542e51-5488-4c34-8d17-ed8fcf597a94", + "profileProvider": "VTEX", + "availableAccounts": [], + "availableAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "666c2e830bd9474ab6f6cc53fb6dd2d2", + "isDisposable": true, + "postalCode": "70386000", + "city": "Brasília", + "state": "DF", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "userType": null, + "ignoreProfileData": false, + "value": 34390, + "messages": [], + "items": [ + { + "uniqueId": "9D6E447B3FF64CEDA33B17C01379C119", + "id": "2", + "productId": "2005", + "productRefId": "", + "refId": "CBC30L", + "ean": null, + "name": "Chopp Brahma Claro 30L", + "skuName": "Chopp Brahma Claro 30L", + "modalType": null, + "parentItemIndex": null, + "parentAssemblyBinding": null, + "assemblies": [], + "priceValidUntil": "2022-07-13T18:30:46Z", + "tax": 0, + "taxCode": "54WC8ZN6K8", + "price": 32890, + "listPrice": 49900, + "manualPrice": null, + "manualPriceAppliedBy": null, + "sellingPrice": 32890, + "rewardValue": 0, + "isGift": false, + "additionalInfo": { + "dimension": null, + "brandName": "Brahma", + "brandId": "2000000", + "offeringInfo": null, + "offeringType": null, + "offeringTypeId": null + }, + "preSaleDate": null, + "productCategoryIds": "/1/", + "productCategories": { + "1": "Bebidas" + }, + "quantity": 3, + "seller": "1", + "sellerChain": [ + "1" + ], + "imageUrl": "http://mystore.vteximg.com.br/arquivos/ids/155400-55-55/30l_v2.png?v=637303412106100000", + "detailUrl": "/chopp-brahma-claro-30l/p", + "components": [], + "bundleItems": [], + "attachments": [], + "attachmentOfferings": [], + "offerings": [], + "priceTags": [], + "availability": "available", + "measurementUnit": "un", + "unitMultiplier": 1, + "manufacturerCode": null, + "priceDefinition": { + "calculatedSellingPrice": 32890, + "total": 32890, + "sellingPrices": [ + { + "value": 32890, + "quantity": 1 + } + ] + } + } + ], + "selectableGifts": [], + "totalizers": [ + { + "id": "Items", + "name": "Total dos Itens", + "value": 15000 + } + ], + "shippingData": { + "address": { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "70386000", + "city": "Brasília", + "state": "DF", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + }, + "logisticsInfo": [ + { + "itemIndex": 0, + "selectedSla": "Normal", + "selectedDeliveryChannel": "delivery", + "addressId": "teste", + "slas": [ + { + "id": "Normal", + "deliveryChannel": "delivery", + "name": "Normal", + "deliveryIds": [ + { + "courierId": "1", + "warehouseId": "1_1", + "dockId": "1", + "courierName": "Transportadora", + "quantity": 1, + "kitItemDetails": [] + } + ], + "shippingEstimate": "3bd", + "shippingEstimateDate": null, + "lockTTL": "10d", + "availableDeliveryWindows": [], + "deliveryWindow": null, + "price": 1500, + "listPrice": 1500, + "tax": 0, + "pickupStoreInfo": { + "isPickupStore": false, + "friendlyName": null, + "address": null, + "additionalInfo": null, + "dockId": null + }, + "pickupPointId": null, + "pickupDistance": 0, + "polygonName": null, + "transitTime": "3bd" + } + ], + "shipsTo": [ + "BRA", + "COL", + "USA" + ], + "itemId": "2", + "deliveryChannels": [ + { + "id": "delivery" + }, + { + "id": "pickup-in-point" + } + ] + } + ], + "selectedAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "availableAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "pickupPoints": [] + }, + "clientProfileData": { + "email": "clark.kent@example.com", + "firstName": "Clark", + "lastName": "Kent", + "document": "12345678900", + "documentType": "cpf", + "phone": "+5521998765432", + "corporateName": null, + "tradeName": null, + "corporateDocument": null, + "stateInscription": null, + "corporatePhone": null, + "isCorporate": false, + "profileCompleteOnLoading": false, + "profileErrorOnLoading": null, + "customerClass": null + }, + "paymentData": { + "installmentOptions": [ + { + "paymentSystem": "2", + "bin": null, + "paymentName": null, + "paymentGroupName": null, + "value": 15000, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 15000, + "total": 15000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 15000, + "total": 15000 + } + ] + }, + { + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 7500, + "total": 15000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 7500, + "total": 15000 + } + ] + } + ] + } + ], + "paymentSystems": [ + { + "id": 2, + "name": "Visa", + "groupName": "creditCardPaymentGroup", + "validator": { + "regex": "^2[1-8]{17}$", + "mask": "9999 9999 9999 9999", + "cardCodeRegex": "^[0-3]{8}$", + "cardCodeMask": "999", + "weights": [ + 2, + 1, + 2, + 1, + 2, + 1 + ], + "useCvv": true, + "useExpirationDate": true, + "useCardHolderName": true, + "useBillingAddress": true + }, + "stringId": "2", + "template": "creditCardPaymentGroup-template", + "requiresDocument": false, + "isCustom": false, + "description": null, + "requiresAuthentication": false, + "dueDate": "2020-03-05T14:59:00.7879306Z", + "availablePayments": null + } + ], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": { + "coupon": "free-shipping", + "utmSource": "app", + "utmMedium": "CPC", + "utmCampaign": "Black friday", + "utmipage": null, + "utmiPart": null, + "utmiCampaign": null + }, + "sellers": [ + { + "id": "1", + "name": "lojadobreno", + "logo": "" + } + ], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": false + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymboupdate cartl": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": { + "items": [ + { + "id": "1", + "seller": "1", + "name": "Ração Royal Canin Feline Urinary 500g", + "skuName": "Ração Royal Canin Feline Urinary 500g", + "productId": "1", + "refId": "0001", + "ean": "123456789", + "imageUrl": "http://lojadobreno.vteximg.com.br/arquivos/ids/155450-55-55/Racao-Royal-Canin-Feline-Urinary-SO.jpg?v=637139444438700000", + "detailUrl": "/racao-royal-canin-feline-urinary/p", + "assemblyOptions": [] + } + ] + }, + "hooksData": null, + "ratesAndBenefitsData": { + "rateAndBenefitsIdentifiers": [], + "teaser": [] + }, + "subscriptionData": null, + "itemsOrdination": { + "criteria": "NAME", + "ascending": true + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/items/{itemIndex}/price": { + "put": { + "tags": [ + "Shopping cart" + ], + "summary": "Change price", + "description": "This request changes the price of an SKU in a cart.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\n\r\n\rYou need to inform which cart you are referring to, by sending its `orderFormId` and what is the item whose price you want to change, by sending its `itemIndex`.\n\r\n\rYou also need to pass the new price value in the body.\n\r\n\rRemember that, to use this endpoint, the feature of *manual price* must be active. To check if it's active, use the [Get orderForm configuration](https://developers.vtex.com/docs/api-reference/checkout-api#get-/api/checkout/pvt/configuration/orderForm) endpoint. To make it active, use the [Update orderForm configuration](https://developers.vtex.com/docs/api-reference/checkout-api#post-/api/checkout/pvt/configuration/orderForm) endpoint, making the `allowManualPrice` field `true`.\n\r\n\r> Whenever you use this request to change the price of an item, all items in that cart with the same SKU are affected by this change. This applies even to items that share the SKU but have been separated into different objects in the `items` array due to customizations or attachments, for example.", + "operationId": "PriceChange", + "parameters": [ + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm corresponding to the cart whose items will have the price changed.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "ede846222cd44046ba6c638442c3505a" + } + }, + { + "name": "itemIndex", + "in": "path", + "description": "The index of the item in the cart. Each cart item is identified by an index, starting in 0.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PriceChangeRequest" + }, + "example": { + "price": 10000 + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "orderFormId": "ede846222cd44046ba6c638442c3505a", + "salesChannel": "1", + "loggedIn": true, + "isCheckedIn": false, + "storeId": null, + "checkedInPickupPointId": null, + "allowManualPrice": true, + "canEditData": true, + "userProfileId": null, + "userType": null, + "ignoreProfileData": false, + "value": 10000, + "messages": [], + "items": [ + { + "uniqueId": "E0F2B7AF5CD74D668F1E27537206912C", + "id": "1", + "productId": "1", + "productRefId": "", + "refId": "0001", + "ean": "123456789", + "name": "Ração Royal Canin Feline Urinary 500g", + "skuName": "Ração Royal Canin Feline Urinary 500g", + "modalType": null, + "parentItemIndex": null, + "parentAssemblyBinding": null, + "assemblies": [], + "priceValidUntil": "2021-02-27T14:59:00.8288784Z", + "tax": 0, + "taxCode": "54WC8ZN6K8", + "price": 15000, + "listPrice": 30000, + "manualPrice": 10000, + "sellingPrice": 10000, + "rewardValue": 0, + "isGift": false, + "additionalInfo": { + "brandName": "Royal Canin", + "brandId": "2000000", + "offeringInfo": null, + "offeringType": null, + "offeringTypeId": null + }, + "preSaleDate": null, + "productCategoryIds": "/1/10/", + "productCategories": { + "10": "Ração Seca", + "1": "Alimentação" + }, + "quantity": 1, + "seller": "1", + "sellerChain": [ + "1" + ], + "imageUrl": "http://lojadobreno.vteximg.com.br/arquivos/ids/155450-55-55/Racao-Royal-Canin-Feline-Urinary-SO.jpg?v=637139444438700000", + "detailUrl": "/racao-royal-canin-feline-urinary/p", + "components": [], + "bundleItems": [], + "attachments": [], + "attachmentOfferings": [], + "offerings": [], + "priceTags": [ + { + "name": "DISCOUNT@MANUALPRICE", + "value": -5000, + "rawValue": -50.0, + "isPercentual": false, + "identifier": null + } + ], + "availability": "available", + "measurementUnit": "un", + "unitMultiplier": 1.0, + "manufacturerCode": null + } + ], + "selectableGifts": [], + "totalizers": [ + { + "id": "Items", + "name": "Total dos Itens", + "value": 15000 + }, + { + "id": "Discounts", + "name": "Total dos Descontos", + "value": -5000 + } + ], + "shippingData": { + "address": null, + "logisticsInfo": [ + { + "itemIndex": 0, + "selectedSla": null, + "selectedDeliveryChannel": "delivery", + "addressId": null, + "slas": [], + "shipsTo": [ + "BRA" + ], + "itemId": "1", + "deliveryChannels": [ + { + "id": "pickup-in-point" + }, + { + "id": "delivery" + } + ] + } + ], + "selectedAddresses": [], + "availableAddresses": [], + "pickupPoints": [] + }, + "clientProfileData": null, + "paymentData": { + "installmentOptions": [ + { + "paymentSystem": "2", + "bin": null, + "paymentName": null, + "paymentGroupName": null, + "value": 10000, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 10000, + "total": 10000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 10000, + "total": 10000 + } + ] + }, + { + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 5000, + "total": 10000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 5000, + "total": 10000 + } + ] + } + ] + } + ], + "paymentSystems": [ + { + "id": 2, + "name": "Visa", + "groupName": "creditCardPaymentGroup", + "validator": { + "regex": "^4[0-9]{15}$", + "mask": "9999 9999 9999 9999", + "cardCodeRegex": "^[0-9]{3}$", + "cardCodeMask": "999", + "weights": [ + 2, + 1, + 2, + 1, + 2 + ], + "useCvv": true, + "useExpirationDate": true, + "useCardHolderName": true, + "useBillingAddress": true + }, + "stringId": "2", + "template": "creditCardPaymentGroup-template", + "requiresDocument": false, + "isCustom": false, + "description": null, + "requiresAuthentication": false, + "dueDate": "2020-03-05T16:42:31.7836281Z", + "availablePayments": null + } + ], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": null, + "sellers": [ + { + "id": "1", + "name": "lojadobreno", + "logo": "" + } + ], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": null + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": { + "items": [ + { + "id": "1", + "seller": "1", + "name": "Ração Royal Canin Feline Urinary 500g", + "skuName": "Ração Royal Canin Feline Urinary 500g", + "productId": "1", + "refId": "0001", + "ean": "123456789", + "imageUrl": "http://lojadobreno.vteximg.com.br/arquivos/ids/155450-55-55/Racao-Royal-Canin-Feline-Urinary-SO.jpg?v=637139444438700000", + "detailUrl": "/racao-royal-canin-feline-urinary/p", + "assemblyOptions": [] + } + ] + }, + "hooksData": null, + "ratesAndBenefitsData": { + "rateAndBenefitsIdentifiers": [], + "teaser": [] + }, + "subscriptionData": null, + "itemsOrdination": null + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/profile": { + "patch": { + "tags": [ + "Shopping cart" + ], + "summary": "Ignore profile data", + "description": "When a shopper provides an email address at Checkout, the platform tries to retrieve existing profile information for that email and add it to the shopping cart information. Use this request if you want to change this behavior for a given cart, meaning profile information will not be included in the order automattically.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\r\n\r\nNote that this request will only work if you have not sent the `clientProfileData` to the cart yet. Sending it to a cart that already has a `clientProfileData` should return a status `403 Forbidden` error, with an `Access denied` message.", + "operationId": "IgnoreProfileData", + "security": [], + "parameters": [ + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm corresponding to the cart whose items will have the price changed.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "ede846222cd44046ba6c638442c3505a" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "ignoreProfileData": { + "type": "boolean", + "description": "Indicates whether profile data should be ignored.", + "default": false + } + } + }, + "example": { + "price": 10000 + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "", + "headers": {}, + "content": { + "application/json": { + "example": { + "orderFormId": "68b287ae65534704b1a1e42e47c82abc", + "salesChannel": "1", + "loggedIn": true, + "isCheckedIn": false, + "storeId": null, + "checkedInPickupPointId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": null, + "userType": null, + "ignoreProfileData": true, + "value": 0, + "messages": [], + "items": [], + "selectableGifts": [], + "totalizers": [], + "shippingData": null, + "clientProfileData": { + "email": null, + "firstName": null, + "lastName": null, + "document": null, + "documentType": null, + "phone": null, + "corporateName": null, + "tradeName": null, + "corporateDocument": null, + "stateInscription": null, + "corporatePhone": null, + "isCorporate": false, + "profileCompleteOnLoading": null, + "profileErrorOnLoading": null, + "customerClass": null + }, + "paymentData": { + "updateStatus": "updated", + "installmentOptions": [], + "paymentSystems": [], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": null, + "sellers": [], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": null + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": null, + "hooksData": null, + "ratesAndBenefitsData": null, + "subscriptionData": null, + "itemsOrdination": null + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/profiles": { + "get": { + "tags": [ + "Cart attachments" + ], + "summary": "Get client profile by email", + "description": "Retrieve a client's profile information by providing an email address.\n\r\n\rIf the response body fields are empty, the following situations may have occurred:\n\r\n\r1. There is no client registered with the email address provided in your store, or;\n\r2. Client profile is invalid or incomplete. However, you can use the query parameter `ensureComplete=false` to get incomplete profiles. For more information, see [SmartCheckout - Customer information automatic fill-in](https://help.vtex.com/en/tutorial/smartcheckout-customer-information-automatic-fill-in--2Nuu3xAFzdhIzJIldAdtan).\r\n\r\n>⚠️ The authentication of this endpoint can change depending on the customer context. If you are consulting information from a customer with a complete profile on the store, the response will return the customer's data masked. You can only access the customer data with an authenticated request.", + "operationId": "GetClientProfileByEmail", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "email", + "in": "query", + "description": "Client's email address to be searched.", + "required": true, + "style": "form", + "schema": { + "type": "string", + "example": "clark.kent@examplemail.com" + } + }, + { + "name": "ensureComplete", + "in": "query", + "description": "Indicates whether the returned profiles must be complete or not.", + "required": false, + "style": "form", + "schema": { + "type": "boolean", + "example": false, + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "userProfileId": { + "type": "string", + "description": "Unique ID associated with the customer profile." + }, + "profileProvider": { + "type": "string", + "description": "Profile provider." + }, + "availableAccounts": { + "type": "array", + "description": "Available accounts.", + "items": { + "type": "string" + } + }, + "availableAddresses": { + "type": "array", + "description": "Information on each available address.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Address type." + }, + "receiverName": { + "type": "string", + "description": "Name of the receiver." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "city": { + "type": "string", + "description": "City of the address." + }, + "state": { + "type": "string", + "description": "State of the address." + }, + "country": { + "type": "string", + "description": "Country of the address. ISO three-letter code." + }, + "street": { + "type": "string", + "description": "Street of the address." + }, + "number": { + "type": "string", + "description": "Number of the address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the address." + }, + "complement": { + "type": "string", + "description": "Complement to the address.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Reference that may help in the location of the address.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + }, + "userProfile": { + "type": "object", + "description": "Customer profile information.", + "properties": { + "email": { + "type": "string", + "description": "Email address." + }, + "firstName": { + "type": "string", + "description": "First name." + }, + "lastName": { + "type": "string", + "description": "Last name." + }, + "document": { + "type": "string", + "description": "Document." + }, + "documentType": { + "type": "string", + "description": "Document type." + }, + "phone": { + "type": "string", + "description": "Telephone number." + }, + "corporateName": { + "type": "string", + "description": "Name of the company. Used for corporate clients.", + "nullable": true + }, + "tradeName": { + "type": "string", + "description": "Trade name. Used for corporate clients.", + "nullable": true + }, + "corporateDocument": { + "type": "string", + "description": "Document. Used for corporate clients.", + "nullable": true + }, + "stateInscription": { + "type": "string", + "description": "State inscription. Used for corporate clients.", + "nullable": true + }, + "corporatePhone": { + "type": "string", + "description": "Telephone number. Used for corporate clients.", + "nullable": true + }, + "isCorporate": { + "type": "boolean", + "description": "Indicates whether client is corporate.", + "default": false + }, + "profileCompleteOnLoading": { + "type": "string", + "description": "Profile complete when loading.", + "nullable": true + }, + "profileErrorOnLoading": { + "type": "string", + "description": "Profile error when loading.", + "nullable": true + }, + "customerClass": { + "type": "string", + "description": "Customer class.", + "nullable": true + } + } + }, + "isComplete": { + "type": "boolean", + "description": "Indicates whether customer profile is complete." + } + } + }, + "example": { + "userProfileId": "fb542e51-5488-4c34-8d17-ed8fcf597a94", + "profileProvider": "VTEX", + "availableAccounts": [], + "availableAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "666c2e830bd9474ab6f6cc53fb6dd2d2", + "isDisposable": false, + "postalCode": "12345-000", + "city": "Metropolis", + "state": "NY", + "country": "USA", + "street": "My street", + "number": "123", + "neighborhood": "My neighborhood", + "complement": null, + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "userProfile": { + "email": "clark.kent@example.com", + "firstName": "Clark", + "lastName": "Kent", + "document": "12345678900", + "documentType": "cpf", + "phone": "+556199999999", + "corporateName": null, + "tradeName": null, + "corporateDocument": null, + "stateInscription": null, + "corporatePhone": null, + "isCorporate": false, + "profileCompleteOnLoading": null, + "profileErrorOnLoading": null, + "customerClass": null + }, + "isComplete": true + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/attachments/clientProfileData": { + "post": { + "tags": [ + "Cart attachments" + ], + "summary": "Add client profile", + "description": "Use this request to include client profile information to a given shopping cart.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\n\r\n\r> This request has a time out of 12 seconds.\r\n\r\n>⚠️ The authentication of this endpoint can change depending on the customer context. If you are modifying information from a customer with a complete profile on the store, the response will return the customer's data masked. You can only access the customer data with an authenticated request.", + "operationId": "AddClientProfile", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm that will receive client profile information.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Customer's profile information.", + "required": [ + "email", + "firstName", + "lastName", + "documentType", + "document" + ], + "properties": { + "email": { + "type": "string", + "description": "Customer's email address.", + "default": "customer@examplemail.com" + }, + "firstName": { + "type": "string", + "description": "Customer's first name.", + "default": "first-name" + }, + "lastName": { + "type": "string", + "description": "Customer's last name.", + "default": "last-name" + }, + "documentType": { + "type": "string", + "description": "Type of the document informed by the customer.", + "default": "cpf" + }, + "document": { + "type": "string", + "description": "Document number informed by the customer.", + "default": "123456789" + }, + "phone": { + "type": "string", + "description": "Customer's phone number.", + "default": "+55110988887777" + }, + "corporateName": { + "type": "string", + "description": "Company name, if the customer is a legal entity.", + "default": "company-name" + }, + "tradeName": { + "type": "string", + "description": "Trade name, if the customer is a legal entity.", + "default": "trade-name" + }, + "corporateDocument": { + "type": "string", + "description": "Corporate document, if the customer is a legal entity.", + "default": "12345678000100" + }, + "stateInscription": { + "type": "string", + "description": "State inscription, if the customer is a legal entity.", + "default": "12345678" + }, + "corporatePhone": { + "type": "string", + "description": "Corporate phone number, if the customer is a legal entity.", + "default": "+551100988887777" + }, + "isCorporate": { + "type": "boolean", + "description": "`true` if the customer is a legal entity.", + "default": false + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "headers": {}, + "content": { + "application/json": { + "example": { + "orderFormId": "9ceee0fde6db489fbc809a0e2ab13a86", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "checkedInPickupPointId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": null, + "userType": null, + "ignoreProfileData": false, + "value": 0, + "messages": [], + "items": [], + "selectableGifts": [], + "totalizers": [], + "shippingData": null, + "clientProfileData": { + "email": "clark.kent@examplemail.com", + "firstName": "Clark", + "lastName": "Kent", + "document": "44444444444", + "documentType": "cpf", + "phone": "+5511123456789", + "corporateName": null, + "tradeName": null, + "corporateDocument": null, + "stateInscription": null, + "corporatePhone": null, + "isCorporate": false, + "profileCompleteOnLoading": false, + "profileErrorOnLoading": false, + "customerClass": null + }, + "paymentData": { + "updateStatus": "updated", + "installmentOptions": [], + "paymentSystems": [], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": null, + "sellers": [], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": null + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": null, + "hooksData": null, + "ratesAndBenefitsData": null, + "subscriptionData": null, + "itemsOrdination": null + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/attachments/shippingData": { + "post": { + "tags": [ + "Cart attachments" + ], + "summary": "Add shipping address and select delivery option", + "description": "Use this request to include shipping information and/or selected delivery option to a given shopping cart.\r\n\r\nTo add shipping addresses send the `selectedAddresses` array. For delivery option use the `logisticsInfo` array.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\n\r\n\r> This request has a time out of 12 seconds.\r\n\r\n>⚠️ The authentication of this endpoint can change depending on the customer context. If you are modifying information from a customer with a complete profile on the store, the response will return the customer's data masked. You can only access the customer data with an authenticated request.", + "operationId": "AddShippingAddress", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm that will receive client profile information.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "clearAddressIfPostalCodeNotFound": { + "type": "boolean", + "description": "This field should be sent as `false` to prevent the address information from being filled in automatically based on the `postalCode` information.", + "example": false + }, + "selectedAddresses": { + "type": "array", + "description": "List of objects with addresses information.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`, among others.", + "example": "residential" + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order.", + "example": "receiver name" + }, + "addressId": { + "type": "string", + "description": "Address ID.", + "example": "c3701fc4c61b4d1b91f67e81415db44d" + }, + "postalCode": { + "type": "string", + "description": "Postal Code.", + "example": "12345-000" + }, + "city": { + "type": "string", + "description": "City of the shipping address.", + "example": "Rio de Janeiro" + }, + "state": { + "type": "string", + "description": "State of the shipping address.", + "example": "RJ" + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address.", + "example": "BRA" + }, + "street": { + "type": "string", + "description": "Street of the shipping address.", + "example": "Praia de Botafogo" + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address.", + "example": "300" + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address.", + "example": "Botafogo" + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address in case it applies.", + "example": "3rd floor" + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "example": "Grey building" + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "default": [ + -47.924747467041016, + -15.832582473754883 + ], + "items": { + "type": "number", + "example": -47.924747467041016 + } + } + } + } + }, + "logisticsInfo": { + "type": "array", + "description": "Array with logistics information on each item of the `items` array in the `orderForm`.", + "items": { + "type": "object", + "properties": { + "itemIndex": { + "type": "integer", + "description": "Index of item in items array", + "example": 0 + }, + "selectedDeliveryChannel": { + "type": "string", + "description": "Delivery channel selected by the customer. For example, `\"delivery\"` or `\"pickup-in-point\"`.", + "example": "delivery" + }, + "selectedSla": { + "type": "string", + "description": "Selected SLA. For example, `\"normal\"` or `\"express\"`.", + "example": "normal" + } + } + } + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "headers": {}, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "orderFormId": { + "type": "string", + "description": "ID of the `orderForm` corresponding to a specific cart." + }, + "salesChannel": { + "type": "string", + "description": "Attribute created by the seller, in their VTEX store configuration." + }, + "loggedIn": { + "type": "boolean", + "description": "Indicates whether the user is logged into the store." + }, + "isCheckedIn": { + "type": "boolean", + "description": "Indicates whether order is checked in." + }, + "storeId": { + "type": "string", + "description": "ID of the store.", + "nullable": true + }, + "checkedInPickupPointId": { + "type": "string", + "description": "Checked in pickuppoint identification.", + "nullable": true + }, + "allowManualPrice": { + "type": "boolean", + "description": "Permission to modify item price manually." + }, + "canEditData": { + "type": "boolean", + "description": "Data can be edited." + }, + "userProfileId": { + "type": "string", + "description": "Unique ID associated with the customer profile.", + "nullable": true + }, + "userType": { + "type": "string", + "description": "User type.", + "nullable": true + }, + "ignoreProfileData": { + "type": "boolean", + "description": "Ignore customer profile data." + }, + "value": { + "type": "integer", + "description": "Total value of the order without separating cents. For example, $24.99 is represented `2499`." + }, + "messages": { + "type": "array", + "description": "Array containing an object for each message generated by our servers while processing the request." + }, + "items": { + "type": "array", + "description": "Information on each item in the order.", + "items": { + "type": "object", + "properties": { + "uniqueId": { + "type": "string", + "description": "Unique ID." + }, + "id": { + "type": "string", + "description": "ID of the item." + }, + "productId": { + "type": "string", + "description": "Product ID." + }, + "productRefId": { + "type": "string", + "description": "Product Ref ID." + }, + "refId": { + "type": "string", + "description": "Ref ID." + }, + "ean": { + "type": "string", + "description": "European Article Number.", + "nullable": true + }, + "name": { + "type": "string", + "description": "Product name." + }, + "skuName": { + "type": "string", + "description": "SKU name." + }, + "modalType": { + "type": "string", + "description": "Modal type.", + "nullable": true + }, + "parentItemIndex": { + "type": "integer", + "description": "Parent item index.", + "nullable": true + }, + "parentAssemblyBinding": { + "type": "string", + "description": "Parent assembly binding.", + "nullable": true + }, + "priceValidUntil": { + "type": "string", + "description": "Price expiration date and time." + }, + "tax": { + "type": "integer", + "description": "Tax value in cents." + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "manualPrice": { + "type": "integer", + "description": "Manual price in cents.", + "nullable": true + }, + "manualPriceAppliedBy": { + "type": "string", + "description": "User that applied the manual price, if that is the case.", + "nullable": true + }, + "sellingPrice": { + "type": "integer", + "description": "Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead." + }, + "rewardValue": { + "type": "integer", + "description": "Reward value in cents." + }, + "isGift": { + "type": "boolean", + "description": "Indicates whether item is a gift." + }, + "additionalInfo": { + "type": "object", + "description": "Additional information.", + "properties": { + "dimension": { + "type": "string", + "description": "Dimension.", + "nullable": true + }, + "brandName": { + "type": "string", + "description": "Brand name." + }, + "brandId": { + "type": "string", + "description": "Brand ID." + }, + "offeringInfo": { + "type": "string", + "description": "Offering information.", + "nullable": true + }, + "offeringType": { + "type": "string", + "description": "Offering type.", + "nullable": true + }, + "offeringTypeId": { + "type": "string", + "description": "Offering type ID.", + "nullable": true + } + } + }, + "preSaleDate": { + "type": "string", + "description": "Presale date.", + "nullable": true + }, + "productCategoryIds": { + "type": "string", + "description": "Product category IDs." + }, + "productCategories": { + "type": "object", + "description": "Object, where each field is an ID from `productCategoryIds`.", + "properties": { + "{ID}": { + "type": "string", + "description": "Product category corresponding to the ID in the field key." + } + } + }, + "quantity": { + "type": "integer", + "description": "Quantity." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "sellerChain": { + "type": "array", + "description": "Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order.", + "items": { + "type": "string", + "description": "Seller." + } + }, + "imageUrl": { + "type": "string", + "description": "Image URL." + }, + "detailUrl": { + "type": "string", + "description": "Detail URL." + }, + "bundleItems": { + "type": "array", + "description": "Information on services sold along with the SKU. Example: a gift package.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Service type." + }, + "id": { + "type": "integer", + "description": "Service identifier." + }, + "name": { + "type": "string", + "description": "Service name." + }, + "price": { + "type": "integer", + "description": "Service price in cents." + } + } + } + }, + "attachments": { + "type": "array", + "description": "Array containing information on attachments.", + "items": { + "type": "string" + } + }, + "priceTags": { + "type": "array", + "description": "Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order.", + "items": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "Price tag identifier." + }, + "isPercentual": { + "type": "boolean", + "description": "Indicates whether price tag value is applied through a percentage." + }, + "name": { + "type": "string", + "description": "Price tag name." + }, + "rawValue": { + "type": "integer", + "description": "Price tag raw value." + }, + "value": { + "type": "integer", + "description": "Price tag value." + } + } + } + }, + "availability": { + "type": "string", + "description": "Availability." + }, + "measurementUnit": { + "type": "string", + "description": "Measurement unit." + }, + "unitMultiplier": { + "type": "integer", + "description": "Unit multiplier." + }, + "manufacturerCode": { + "type": "string", + "description": "Manufacturer code.", + "nullable": true + }, + "priceDefinition": { + "type": "object", + "description": "Price information for all units of a specific item.", + "properties": { + "calculatedSellingPrice": { + "type": "integer", + "description": "Item's calculated unitary selling price in cents." + }, + "total": { + "type": "integer", + "description": "Total value for all units of the item in cents." + }, + "sellingPrices": { + "type": "array", + "description": "Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total.", + "items": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "description": "Value in cents for that specific rounding." + }, + "quantity": { + "type": "integer", + "description": "Rounding quantity, meaning how many items are rounded to this value." + } + } + } + } + } + } + } + } + }, + "selectableGifts": { + "type": "array", + "description": "Array containing the data of the item selected as a gift." + }, + "totalizers": { + "type": "array", + "description": "Array containing an object for each totalizer for the purchase. Totalizers contain the sum of values for a specific part of the order (e.g. Total item value, Total shipping value)." + }, + "shippingData": { + "type": "object", + "description": "Shipping information pertinent to the order.", + "properties": { + "address": { + "type": "object", + "description": "Address information.", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + }, + "logisticsInfo": { + "type": "array", + "description": "Array with logistics information. Each object in this array corresponds to an object in the `items` array, based on the respective `itemIndex`.", + "items": { + "type": "object", + "properties": { + "itemIndex": { + "type": "integer", + "description": "Index corresponding to the position of the object in the `items` array." + }, + "selectedSla": { + "type": "string", + "description": "SLA selected by the customer.", + "nullable": true + }, + "selectedDeliveryChannel": { + "type": "string", + "description": "Delivery channel selected by the customer.", + "nullable": true + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "slas": { + "type": "array", + "description": "Information on available SLAs.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "SLA ID." + }, + "deliveryChannel": { + "type": "string", + "description": "Delivery channel." + }, + "name": { + "type": "string", + "description": "SLA name." + }, + "deliveryIds": { + "type": "array", + "description": "Information on each delivery ID.", + "items": { + "type": "object", + "properties": { + "courierId": { + "type": "string", + "description": "Courier ID." + }, + "warehouseId": { + "type": "string", + "description": "Warehouse ID." + }, + "dockId": { + "type": "string", + "description": "Warehouse ID." + }, + "courierName": { + "type": "string", + "description": "Courier name." + }, + "quantity": { + "type": "integer", + "description": "Quantity." + } + } + } + }, + "shippingEstimate": { + "type": "string", + "description": "Shipping estimate. For instance, Three business days will be represented `3bd`." + }, + "shippingEstimateDate": { + "type": "string", + "description": "Shipping estimate date.", + "nullable": true + }, + "lockTTL": { + "type": "string", + "description": "Estimate date of delivery.", + "nullable": true + }, + "availableDeliveryWindows": { + "type": "object", + "description": "This object contains information about the delivery window available to the shopper.", + "properties": { + "startDateUtc": { + "type": "string", + "description": "Delivery window starting day and time in UTC." + }, + "endDateUtc": { + "type": "string", + "description": "Delivery window ending day and time in UTC." + }, + "price": { + "type": "integer", + "description": "Delivery window price." + }, + "lisPrice": { + "type": "integer", + "description": "Delivery window list price." + }, + "tax": { + "type": "integer", + "description": "Delivery window tax." + } + } + }, + "deliveryWindow": { + "type": "object", + "description": "In case of scheduled delivery, this object will contain information on the delivery window selected by the shopper.", + "properties": { + "startDateUtc": { + "type": "string", + "description": "Delivery window starting day and time in UTC." + }, + "endDateUtc": { + "type": "string", + "description": "Delivery window ending day and time in UTC." + }, + "price": { + "type": "integer", + "description": "Delivery window price." + }, + "lisPrice": { + "type": "integer", + "description": "Delivery window list price." + }, + "tax": { + "type": "integer", + "description": "Delivery window tax." + } + } + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "tax": { + "type": "integer", + "description": "Tax in cents." + }, + "pickupStoreInfo": { + "type": "object", + "description": "Information on the pickup store.", + "properties": { + "isPickupStore": { + "type": "boolean", + "description": "Indicates whether it is the pickup store." + }, + "friendlyName": { + "type": "string", + "description": "Friendly name.", + "nullable": true + }, + "address": { + "type": "object", + "description": "Address information.", + "nullable": true, + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + }, + "additionalInfo": { + "type": "string", + "description": "Additional information.", + "nullable": true + }, + "dockId": { + "type": "string", + "description": "Corresponding dock ID.", + "nullable": true + } + } + }, + "pickupPointId": { + "type": "string", + "description": "Pickup point ID.", + "nullable": true + }, + "pickupDistance": { + "type": "integer", + "description": "Pickup point distance." + }, + "polygonName": { + "type": "string", + "description": "Polygon name.", + "nullable": true + }, + "transitTime": { + "type": "string", + "description": "Transit time. For instance, \"three business days\" is represented `3bd`." + } + } + } + }, + "shipsTo": { + "type": "array", + "description": "List of countries that the item may be shipped to.", + "items": { + "type": "string", + "description": "Three letter country code." + } + }, + "itemId": { + "type": "string", + "description": "Item ID." + }, + "deliveryChannels": { + "type": "array", + "description": "List of available delivery channels.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Delivery channel ID." + } + } + } + } + } + } + }, + "selectedAddresses": { + "type": "array", + "description": "Array with information on the selected addresses for the order.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + }, + "availableAddresses": { + "type": "array", + "description": "Information on each available address.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Address type." + }, + "receiverName": { + "type": "string", + "description": "Name of the receiver." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "city": { + "type": "string", + "description": "City of the address." + }, + "state": { + "type": "string", + "description": "State of the address." + }, + "country": { + "type": "string", + "description": "Country of the address. ISO three-letter code." + }, + "street": { + "type": "string", + "description": "Street of the address." + }, + "number": { + "type": "string", + "description": "Number of the address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the address." + }, + "complement": { + "type": "string", + "description": "Complement to the address.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Reference that may help in the location of the address.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number", + "description": "Items information." + } + } + } + } + }, + "pickupPoints": { + "type": "array", + "description": "Array containing pickup points information." + } + } + }, + "clientProfileData": { + "type": "object", + "description": "Customer's profile information.", + "properties": { + "email": { + "type": "string", + "description": "Email address." + }, + "firstName": { + "type": "string", + "description": "First name." + }, + "lastName": { + "type": "string", + "description": "Last name." + }, + "documentType": { + "type": "string", + "description": "Type of the document informed by the customer." + }, + "document": { + "type": "string", + "description": "Document informed by the customer." + }, + "phone": { + "type": "string", + "description": "Phone number." + }, + "corporateName": { + "type": "string", + "description": "Company name, if the customer is a legal entity.", + "nullable": true + }, + "tradeName": { + "type": "string", + "description": "Trade name, if the customer is a legal entity.", + "nullable": true + }, + "corporateDocument": { + "type": "string", + "description": "Corporate document, if the customer is a legal entity.", + "nullable": true + }, + "stateInscription": { + "type": "string", + "description": "State inscription, if the customer is a legal entity.", + "nullable": true + }, + "corporatePhone": { + "type": "string", + "description": "Corporate phone number, if the customer is a legal entity.", + "nullable": true + }, + "isCorporate": { + "type": "boolean", + "description": "Indicates whether the customer is a legal entity." + }, + "profileCompleteOnLoading": { + "type": "boolean", + "description": "Indicates whether profile is complete on loading." + }, + "profileErrorOnLoading": { + "type": "boolean", + "description": "Indicates whether profile presents error on loading.", + "nullable": true + }, + "customerClass": { + "type": "string", + "description": "Customer class.", + "nullable": true + } + } + }, + "paymentData": { + "type": "object", + "description": "Payment data information.", + "properties": { + "updateStatus": { + "type": "string", + "description": "Indicate whether this object's information is up to date according to the order's items. An order can not be placed if `\"outdated\"`" + }, + "installmentOptions": { + "type": "array", + "description": "Installment options information.", + "properties": { + "paymentSystem": { + "type": "integer", + "description": "Payment system identification." + }, + "bin": { + "type": "string", + "description": "Bin.", + "nullable": true + }, + "paymentName": { + "type": "string", + "description": "Payment name." + }, + "paymentGroupName": { + "type": "string", + "description": "Payment group name." + }, + "value": { + "type": "integer", + "description": "Total value assigned to this payment." + }, + "installments": { + "type": "array", + "description": "Installments information.", + "properties": { + "count": { + "type": "integer", + "description": "Count information." + }, + "hasInterestRate": { + "type": "boolean", + "description": "Indicates whether the payment has interest." + }, + "interestRate": { + "type": "integer", + "description": "Interest rate value." + }, + "value": { + "type": "integer", + "description": "Value of the order without the interest rate. The value is shown without separating cents." + }, + "total": { + "type": "integer", + "description": "Total value of the order without separating cents. For example, $24.99 is represented `2499`." + }, + "sellerMerchantInstallments": { + "type": "array", + "description": "Seller merchant installments information." + } + } + } + } + }, + "paymentSystems": { + "type": "array", + "description": "Information on payment systems.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "Payment system ID." + }, + "name": { + "type": "string", + "description": "Payment system name." + }, + "groupName": { + "type": "string", + "description": "Payment group name." + }, + "validator": { + "type": "object", + "description": "Payment system validator.", + "nullable": true + }, + "stringId": { + "type": "string", + "description": "String ID." + }, + "template": { + "type": "string", + "description": "Template." + }, + "requiresDocument": { + "type": "boolean", + "description": "Indicates whether a document is required." + }, + "displayDocument": { + "type": "boolean", + "description": "Indicates whether a document is shown." + }, + "isCustom": { + "type": "boolean", + "description": "Indicates whether it is custom." + }, + "description": { + "type": "string", + "description": "Description." + }, + "requiresAuthentication": { + "type": "boolean", + "description": "Indicates whether a authentication is required." + }, + "dueDate": { + "type": "string", + "description": "Payment due date." + }, + "availablePayments": { + "type": "string", + "description": "Availability of payment.", + "nullable": true + } + } + } + }, + "payments": { + "type": "array", + "description": "Information on each payment." + }, + "giftCards": { + "type": "array", + "description": "Gift card information, if it applies to the order." + }, + "giftCardMessages": { + "type": "array", + "description": "Array of gift card messages." + }, + "availableAccounts": { + "type": "array", + "description": "Available accounts." + }, + "availableTokens": { + "type": "array", + "description": "Available tokens." + }, + "availableAssociations": { + "type": "object", + "description": "Available associations." + } + } + }, + "marketingData": { + "type": "object", + "description": "Object containing promotion data such as coupon tracking information and internal or external UTMs.", + "nullable": true + }, + "sellers": { + "type": "array", + "description": "Information on each seller.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Seller ID." + }, + "name": { + "type": "string", + "description": "Seller name." + }, + "logo": { + "type": "string", + "description": "Seller logo.", + "nullable": true + } + } + } + }, + "clientPreferencesData": { + "type": "object", + "description": "Object containing preferences from the client who placed the order.", + "properties": { + "locale": { + "type": "string", + "description": "Client's locale. Examples: `pt-BR` and `en-US`." + }, + "optinNewsLetter": { + "type": "boolean", + "description": "`true` if the client opted to receive newsletter from the store." + } + } + }, + "commercialConditionData": { + "type": "object", + "description": "Object containing commercial condition information.", + "nullable": true + }, + "storePreferencesData": { + "type": "object", + "description": "Object containing data from the store's configuration (stored in VTEX's License Manager).", + "properties": { + "countryCode": { + "type": "string", + "description": "Three letters ISO code of the country (ISO 3166 ALPHA-3)." + }, + "saveUserData": { + "type": "boolean", + "description": "Defines whether the customer want the store to keep their personal and payment data saved." + }, + "timeZone": { + "type": "string", + "description": "Time zone from where the order was made." + }, + "currencyCode": { + "type": "string", + "description": "Currency code in ISO 4217. For example, `BRL`." + }, + "currencyLocale": { + "type": "integer", + "format": "int32", + "description": "Currency Locale Code in LCID in decimal." + }, + "currencySymbol": { + "type": "string", + "description": "Currency symbol." + }, + "CurrencyFormatInfo": { + "description": "Object with currency format details.", + "type": "object", + "properties": { + "CurrencyDecimalDigits": { + "type": "integer", + "format": "int32", + "description": "Quantity of currency decimal digits." + }, + "CurrencyDecimalSeparator": { + "type": "string", + "description": "Defines what currency decimal separator will be applied." + }, + "CurrencyGroupSeparator": { + "type": "string", + "description": "Defines what currency group separator will be applied." + }, + "CurrencyGroupSize": { + "type": "integer", + "format": "int32", + "description": "Defines how many characters will be grouped." + }, + "StartsWithCurrencySymbol": { + "type": "boolean", + "description": "Defines if all prices will be initiated with the currency symbol (`true`) or not (`false`)." + } + } + } + } + }, + "giftRegistryData": { + "type": "object", + "description": "Gift registry list information.", + "nullable": true + }, + "openTextField": { + "type": "string", + "description": "Optional field meant to hold additional information about the order. We recommend using this field for text, not data formats such as `JSON` even if escaped. For that purpose, see [Creating customizable fields](https://developers.vtex.com/vtex-rest-api/docs/creating-customizable-fields-in-the-cart-with-checkout-api-1).", + "nullable": true + }, + "invoiceData": { + "type": "object", + "description": "Object containing information pertinent to the order's invoice.", + "nullable": true + }, + "customData": { + "type": "object", + "description": "Customer additional information.", + "nullable": true + }, + "itemMetadata": { + "type": "object", + "description": "Item metadata.", + "nullable": true + }, + "hooksData": { + "type": "object", + "description": "Hooks information.", + "nullable": true + }, + "ratesAndBenefitsData": { + "type": "object", + "description": "Information on rates and benefits that apply to the order.", + "nullable": true + }, + "subscriptionData": { + "type": "object", + "description": "Subscription information.", + "nullable": true + }, + "itemsOrdination": { + "type": "object", + "description": "Object containing information about the ordering of items within the orderForm.", + "nullable": true + } + } + }, + "example": { + "orderFormId": "2f586e50342a4f87b7e0654c56299e88", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "checkedInPickupPointId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": null, + "userType": null, + "ignoreProfileData": false, + "value": 0, + "messages": [], + "items": [], + "selectableGifts": [], + "totalizers": [], + "shippingData": { + "address": { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "c3701fc4c61b4d1b91f67e81415db44d", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "ST", + "country": "BRA", + "street": "My street", + "number": "1091", + "neighborhood": "My neighborhood", + "complement": null, + "reference": null, + "geoCoordinates": [] + }, + "logisticsInfo": [ + { + "itemIndex": 0, + "selectedSla": null, + "selectedDeliveryChannel": null, + "addressId": "f239ad30f8c948a382543ab2c739b967", + "slas": [ + { + "id": "Retirada (VTEXSP)", + "deliveryChannel": "pickup-in-point", + "name": "Retirada (VTEXSP)", + "deliveryIds": [ + { + "courierId": "1ee17c2", + "warehouseId": "1_1", + "dockId": "1", + "courierName": "Retira em Loja", + "quantity": 2, + "kitItemDetails": [] + } + ], + "shippingEstimate": "3bd", + "shippingEstimateDate": null, + "lockTTL": null, + "availableDeliveryWindows": { + "startDateUtc": "2017-03-27T00:00:00+00:00", + "endDateUtc": "2017-03-27T00:00:00+00:00", + "price": 0, + "lisPrice": 0, + "tax": 0 + }, + "deliveryWindow": { + "startDateUtc": "2014-04-21T09:00:00+00:00", + "endDateUtc": "2014-04-21T12:00:00+00:00", + "price": 0, + "listprice": 1000, + "tax": 0 + }, + "price": 250, + "listPrice": 250, + "tax": 0, + "pickupStoreInfo": { + "isPickupStore": true, + "friendlyName": "VTEX SP", + "address": { + "addressType": "pickup", + "receiverName": "Clark Kent", + "addressId": "VTEXSP", + "isDisposable": true, + "postalCode": "04538-132", + "city": "São Paulo", + "state": "SP", + "country": "BRA", + "street": "Avenida Brigadeiro Faria Lima", + "number": "4440", + "neighborhood": "Itaim Bibi", + "complement": "", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + }, + "additionalInfo": "", + "dockId": "1" + }, + "pickupPointId": "1_VTEXSP", + "pickupDistance": 15, + "polygonName": null, + "transitTime": "3bd" + } + ], + "shipsTo": [ + "BRA", + "COL", + "USA" + ], + "itemId": "2", + "deliveryChannels": [ + { + "id": "pickup-in-point" + }, + { + "id": "delivery" + } + ] + } + ], + "selectedAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "c3701fc4c61b4d1b91f67e81415db44d", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "ST", + "country": "BRA", + "street": "My street", + "number": "1091", + "neighborhood": "My neighborhood", + "complement": null, + "reference": null, + "geoCoordinates": [] + } + ], + "availableAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "ae3173b32bf64663a81fc42b057be211", + "isDisposable": true, + "postalCode": "70386060", + "city": "Brasília", + "state": "DF", + "country": "BRA", + "street": "Quadra SQS 116 Bloco F", + "number": "101", + "neighborhood": "Asa Sul", + "complement": null, + "reference": null, + "geoCoordinates": [ + -47.925922393798828, + -15.832707405090332 + ] + }, + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "449dcbe11c5844098fb4545a49cf6e07", + "isDisposable": true, + "postalCode": "00076555", + "city": "Brasília", + "state": "DF", + "country": "BRA", + "street": "My street", + "number": "101", + "neighborhood": "Asa sul", + "complement": null, + "reference": null, + "geoCoordinates": [] + }, + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "c3701fc4c61b4d1b91f67e81415db44d", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "ST", + "country": "BRA", + "street": "My street", + "number": "1091", + "neighborhood": "My neighborhood", + "complement": null, + "reference": null, + "geoCoordinates": [] + } + ], + "pickupPoints": [] + }, + "clientProfileData": { + "email": "clark.kent@example.com", + "firstName": "Clark", + "lastName": "Kent", + "document": "12345678900", + "documentType": "cpf", + "phone": "+5521998765432", + "corporateName": null, + "tradeName": null, + "corporateDocument": null, + "stateInscription": null, + "corporatePhone": null, + "isCorporate": false, + "profileCompleteOnLoading": false, + "profileErrorOnLoading": null, + "customerClass": null + }, + "paymentData": { + "updateStatus": "updated", + "installmentOptions": [], + "paymentSystems": [], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": null, + "sellers": [], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": false + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": null, + "hooksData": null, + "ratesAndBenefitsData": null, + "subscriptionData": null, + "itemsOrdination": null + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/attachments/clientPreferencesData": { + "post": { + "tags": [ + "Cart attachments" + ], + "summary": "Add client preferences", + "description": "Use this request to include client preferences information to a given shopping cart.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\n\r\n\r> This request has a time out of 12 seconds.", + "operationId": "AddClientPreferences", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm that will receive client profile information.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "locale": { + "type": "string", + "description": "Locale chosen by the shopper. Determines website language.", + "default": "EN" + }, + "optinNewsLetter": { + "type": "boolean", + "description": "Indicates whether the shopper opted in to receive the store's news letter.", + "default": false + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": {}, + "example": { + "orderFormId": "a7e4702410864239959f9bdcf77e3fba", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "checkedInPickupPointId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": null, + "userType": null, + "ignoreProfileData": false, + "value": 0, + "messages": [], + "items": [], + "selectableGifts": [], + "totalizers": [], + "shippingData": null, + "clientProfileData": null, + "paymentData": { + "updateStatus": "updated", + "installmentOptions": [], + "paymentSystems": [], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": null, + "sellers": [], + "clientPreferencesData": { + "locale": "PT", + "optinNewsLetter": false + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": null, + "hooksData": null, + "ratesAndBenefitsData": null, + "subscriptionData": null, + "itemsOrdination": null + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/attachments/marketingData": { + "post": { + "tags": [ + "Cart attachments" + ], + "summary": "Add marketing data", + "description": "Use this request to include marketing information to a given shopping cart.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\n\r\n\r> This request has a time out of 12 seconds.", + "operationId": "AddMarketingData", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm that will receive client profile information.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "coupon": { + "type": "string", + "description": "Sending an existing coupon code in this field will return the corresponding discount in the purchase. Use the [cart simulation](https://developers.vtex.com/vtex-rest-api/reference/orderform#orderformsimulation) request to check which coupons might apply before placing the order.\n\r\n\rTo send more than one coupon code to the same cart, use commas. E.g.`\"sales25, blackfriday30\"`.", + "default": "free-shipping" + }, + "marketingTags": { + "type": "array", + "description": "Marketing tags. Limited to a maximum of 50 items.", + "items": { + "type": "string" + }, + "default": [ + "tag1", + "tag2" + ] + }, + "utmSource": { + "type": "string", + "description": "UTM source.", + "default": "Facebook" + }, + "utmMedium": { + "type": "string", + "description": "UTM medium.", + "default": "CPC" + }, + "utmCampaign": { + "type": "string", + "description": "UTM campaign", + "default": "Black friday" + }, + "utmiPage": { + "type": "string", + "description": "utmi_page (internal utm)", + "default": "utmi_page-example" + }, + "utmiPart": { + "type": "string", + "description": "utmi_part (internal utm)", + "default": "utmi_part-exmaple" + }, + "utmiCampaign": { + "type": "string", + "description": "utmi_campaign (internal utm)", + "default": "utmi_campaign-exmaple" + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "orderFormId": "7c5b47971fad41b89102c7ab7bb8b08b", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "checkedInPickupPointId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": null, + "userType": null, + "ignoreProfileData": false, + "value": 0, + "messages": [], + "items": [], + "selectableGifts": [], + "totalizers": [], + "shippingData": null, + "clientProfileData": null, + "paymentData": { + "updateStatus": "updated", + "installmentOptions": [], + "paymentSystems": [], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": { + "utmSource": "app", + "utmMedium": "CPC", + "utmCampaign": "Black friday", + "utmipage": null, + "utmiPart": null, + "utmiCampaign": null, + "coupon": "free-shipping", + "marketingTags": [ + "tag1", + "tag2" + ] + }, + "sellers": [], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": null + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": null, + "hooksData": null, + "ratesAndBenefitsData": null, + "subscriptionData": null, + "itemsOrdination": null + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/attachments/paymentData": { + "post": { + "tags": [ + "Cart attachments" + ], + "summary": "Add payment data", + "description": "Use this request to include payment information to a given shopping cart. The payment information attachment in the shopping cart does not determine the final order payment method in itself. However, it allows tha platform to update any relevant information that may be impacted by the payment method.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\n\r\n\r> This request has a time out of 12 seconds.", + "operationId": "AddPaymentData", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm that will receive client profile information.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "payments": { + "type": "array", + "description": "Array with information on each payment chosen by the shopper.", + "items": { + "type": "object", + "properties": { + "paymentSystem": { + "type": "integer", + "description": "Payment system ID.", + "default": 1 + }, + "paymentSystemName": { + "type": "string", + "description": "Payment system name.", + "default": "Boleto Bancário" + }, + "group": { + "type": "string", + "description": "Payment system group.", + "default": "bankInvoicePaymentGroup" + }, + "installments": { + "type": "integer", + "description": "Selected number of installments.", + "default": 1 + }, + "installmentsInterestRate": { + "type": "number", + "description": "Installments' interest rate.", + "default": 0 + }, + "installmentsValue": { + "type": "integer", + "description": "Value of the installments.", + "default": 1 + }, + "value": { + "type": "integer", + "description": "Total value assigned to this payment.", + "default": 100 + }, + "referenceValue": { + "type": "integer", + "description": "Reference value used to calculate total order value with interest.", + "default": 100 + }, + "hasDefaultBillingAddress": { + "type": "boolean", + "description": "Indicates whether billing address for this payment is the default address.", + "default": false + } + } + } + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "", + "headers": {}, + "content": { + "application/json": { + "example": { + "orderFormId": "29154e27383145cc8ce1f7a1df0d99c4", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "checkedInPickupPointId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": null, + "userType": null, + "ignoreProfileData": false, + "value": 65780, + "messages": [], + "items": [ + { + "uniqueId": "3CBFA140CE8F4E208062FC15CE9ED8D3", + "id": "2", + "productId": "2", + "productRefId": "", + "refId": "CBC30L", + "ean": null, + "name": "Chopp Claro 30L", + "skuName": "Chopp Claro 30L", + "modalType": null, + "parentItemIndex": null, + "parentAssemblyBinding": null, + "assemblies": [], + "priceValidUntil": "2022-07-28T22:25:25Z", + "tax": 0, + "price": 32890, + "listPrice": 49900, + "manualPrice": null, + "manualPriceAppliedBy": null, + "sellingPrice": 32890, + "rewardValue": 0, + "isGift": false, + "additionalInfo": { + "dimension": null, + "brandName": "Beershow", + "brandId": "2000000", + "offeringInfo": null, + "offeringType": null, + "offeringTypeId": null + }, + "preSaleDate": null, + "productCategoryIds": "/1/", + "productCategories": { + "1": "Bebidas" + }, + "quantity": 2, + "seller": "1", + "sellerChain": [ + "1" + ], + "imageUrl": "http://myshop.vteximg.com.br/arquivos/ids/155400-55-55/30l_v2.png?v=637303412106100000", + "detailUrl": "/chopp-claro-30l/p", + "components": [], + "bundleItems": [], + "attachments": [], + "attachmentOfferings": [], + "offerings": [], + "priceTags": [], + "availability": "available", + "measurementUnit": "un", + "unitMultiplier": 1.0, + "manufacturerCode": null, + "priceDefinition": { + "calculatedSellingPrice": 32890, + "total": 65780, + "sellingPrices": [ + { + "value": 32890, + "quantity": 2 + } + ] + } + } + ], + "selectableGifts": [], + "totalizers": [ + { + "id": "Items", + "name": "Total dos Itens", + "value": 65780 + } + ], + "shippingData": { + "address": null, + "logisticsInfo": [ + { + "itemIndex": 0, + "selectedSla": null, + "selectedDeliveryChannel": null, + "addressId": null, + "slas": [], + "shipsTo": [ + "BRA", + "COL", + "USA" + ], + "itemId": "2", + "deliveryChannels": [ + { + "id": "delivery" + }, + { + "id": "pickup-in-point" + } + ] + } + ], + "selectedAddresses": [], + "availableAddresses": [], + "pickupPoints": [] + }, + "clientProfileData": null, + "paymentData": { + "updateStatus": "updated", + "installmentOptions": [ + { + "paymentSystem": "2", + "bin": null, + "paymentName": null, + "paymentGroupName": null, + "value": 65780, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 65780, + "total": 65780, + "sellerMerchantInstallments": [ + { + "id": "MYSHOP", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 65780, + "total": 65780 + } + ] + } + ] + }, + { + "paymentSystem": "4", + "bin": null, + "paymentName": null, + "paymentGroupName": null, + "value": 65780, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 65780, + "total": 65780, + "sellerMerchantInstallments": [ + { + "id": "MYSHOP", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 65780, + "total": 65780 + } + ] + } + ] + }, + { + "paymentSystem": "6", + "bin": null, + "paymentName": null, + "paymentGroupName": null, + "value": 65780, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 65780, + "total": 65780, + "sellerMerchantInstallments": [ + { + "id": "MYSHOP", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 65780, + "total": 65780 + } + ] + } + ] + } + ], + "paymentSystems": [ + { + "id": 2, + "name": "Visa", + "groupName": "creditCardPaymentGroup", + "validator": { + "regex": "^4[0-9]{15}$", + "mask": "9999 9999 9999 9999", + "cardCodeRegex": "^[0-9]{3}$", + "cardCodeMask": "999", + "weights": [ + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2 + ], + "useCvv": true, + "useExpirationDate": true, + "useCardHolderName": true, + "useBillingAddress": true + }, + "stringId": "2", + "template": "creditCardPaymentGroup-template", + "requiresDocument": false, + "isCustom": false, + "description": null, + "requiresAuthentication": false, + "dueDate": "2021-08-04T22:19:04.9948627Z", + "availablePayments": null + }, + { + "id": 4, + "name": "Mastercard", + "groupName": "creditCardPaymentGroup", + "validator": { + "regex": "^((5(([1-2]|[4-5])[0-9]{8}|0((1|6)([0-9]{7}))|3(0(4((0|[2-9])[0-9]{5})|([0-3]|[5-9])[0-9]{6})|[1-9][0-9]{7})))|((508116)\\d{4,10})|((502121)\\d{4,10})|((589916)\\d{4,10})|(2[0-9]{15})|(67[0-9]{14})|(506387)\\d{4,10})", + "mask": "9999 9999 9999 9999", + "cardCodeRegex": "^[0-9]{3}$", + "cardCodeMask": "999", + "weights": [ + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2 + ], + "useCvv": true, + "useExpirationDate": true, + "useCardHolderName": true, + "useBillingAddress": true + }, + "stringId": "4", + "template": "creditCardPaymentGroup-template", + "requiresDocument": false, + "isCustom": false, + "description": null, + "requiresAuthentication": false, + "dueDate": "2021-08-04T22:19:04.9948627Z", + "availablePayments": null + }, + { + "id": 6, + "name": "Boleto Bancário", + "groupName": "bankInvoicePaymentGroup", + "validator": { + "regex": null, + "mask": null, + "cardCodeRegex": null, + "cardCodeMask": null, + "weights": null, + "useCvv": false, + "useExpirationDate": false, + "useCardHolderName": false, + "useBillingAddress": false + }, + "stringId": "6", + "template": "bankInvoicePaymentGroup-template", + "requiresDocument": false, + "isCustom": false, + "description": null, + "requiresAuthentication": false, + "dueDate": "2021-08-04T22:19:04.9948627Z", + "availablePayments": null + } + ], + "payments": [ + { + "paymentSystem": "6", + "bin": null, + "accountId": null, + "tokenId": null, + "installments": 1, + "referenceValue": 65780, + "value": 65780, + "merchantSellerPayments": [ + { + "id": "MYSHOP", + "installments": 1, + "referenceValue": 65780, + "value": 65780, + "interestRate": 0, + "installmentValue": 65780 + } + ] + } + ], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": null, + "sellers": [ + { + "id": "1", + "name": "My Seller", + "logo": "" + } + ], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": null + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": { + "items": [ + { + "id": "2", + "seller": "1", + "name": "Chopp Claro 30L", + "skuName": "Chopp Claro 30L", + "productId": "2", + "refId": "CBC30L", + "ean": null, + "imageUrl": "http://myshop.vteximg.com.br/arquivos/ids/155400-55-55/30l_v2.png?v=637303412106100000", + "detailUrl": "/chopp-claro-30l/p", + "assemblyOptions": [] + } + ] + }, + "hooksData": null, + "ratesAndBenefitsData": { + "rateAndBenefitsIdentifiers": [], + "teaser": [] + }, + "subscriptionData": null, + "itemsOrdination": null + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/attachments/merchantContextData": { + "post": { + "tags": [ + "Cart attachments" + ], + "summary": "Add merchant context data", + "description": "This endpoint is used for the merchant to add to the cart any relevant information that is related to the context of a specific order.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\n\r\n\r> This request has a time out of 12 seconds.", + "operationId": "AddMerchantContextData", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm that will receive the relevant information added by the merchant.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + }, + "example": "29154e27383145cc8ce1f7a1df0d99c4" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "salesAssociateData" + ], + "properties": { + "salesAssociateData": { + "type": "object", + "description": "Sales Associate information.", + "properties": { + "salesAssociateId": { + "type": "string", + "description": "Sales Associate (Seller) identification code. All information should be registered by the merchant. Maximum of 100 characters.", + "default": "seller123" + } + } + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "salesAssociateId": { + "type": "string", + "description": "Sales Associate (Seller) identification code." + } + } + }, + "example": { + "salesAssociateData": { + "salesAssociateId": "seller123" + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/customData/{appId}": { + "put": { + "tags": [ + "Custom data" + ], + "summary": "Set multiple custom field values", + "description": "Your account may create `apps`, which contain custom fields, through the [Update orderForm configuration](https://developers.vtex.com/docs/api-reference/checkout-api#post-/api/checkout/pvt/configuration/orderForm) request. The values of these custom fields can then be updated by this request.\n\r\n\rTo do that, you need to inform the ID of the app you created with the configuration API (`appId`).\n\r\n\rIn the body of the request, for each field created in this app (`appFieldName`) you will inform a value (`appFieldValue`).\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.", + "operationId": "SetMultipleCustomFieldValues", + "security": [], + "parameters": [ + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm that will receive the new custom field values.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "appId", + "in": "path", + "description": "ID of the app created with the configuration API.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "Here you must add the pairs of Field Name and Field Value.", + "type": "object", + "additionalProperties": true + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": {}, + "example": { + "orderFormId": "ede846222cd44046ba6c638442c3505a", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "checkedInPickupPointId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": null, + "userType": null, + "ignoreProfileData": false, + "value": 10000, + "messages": [], + "items": [ + { + "uniqueId": "E0F2B7AF5CD74D668F1E27537206912C", + "id": "1", + "productId": "1", + "productRefId": "", + "refId": "0001", + "ean": "123456789", + "name": "Ração Royal Canin Feline Urinary 500g", + "skuName": "Ração Royal Canin Feline Urinary 500g", + "modalType": null, + "parentItemIndex": null, + "parentAssemblyBinding": null, + "assemblies": [], + "priceValidUntil": "2021-02-27T14:59:00.8288784Z", + "tax": 0, + "price": 15000, + "listPrice": 30000, + "manualPrice": 10000, + "sellingPrice": 10000, + "rewardValue": 0, + "isGift": false, + "additionalInfo": { + "brandName": "Royal Canin", + "brandId": "2000000", + "offeringInfo": null, + "offeringType": null, + "offeringTypeId": null + }, + "preSaleDate": null, + "productCategoryIds": "/1/10/", + "productCategories": { + "10": "Ração Seca", + "1": "Alimentação" + }, + "quantity": 1, + "seller": "1", + "sellerChain": [ + "1" + ], + "imageUrl": "http://lojadobreno.vteximg.com.br/arquivos/ids/155450-55-55/Racao-Royal-Canin-Feline-Urinary-SO.jpg?v=637139444438700000", + "detailUrl": "/racao-royal-canin-feline-urinary/p", + "components": [], + "bundleItems": [], + "attachments": [], + "attachmentOfferings": [], + "offerings": [], + "priceTags": [ + { + "name": "DISCOUNT@MANUALPRICE", + "value": -5000, + "rawValue": -50.0, + "isPercentual": false, + "identifier": null + } + ], + "availability": "available", + "measurementUnit": "un", + "unitMultiplier": 1.0, + "manufacturerCode": null + } + ], + "selectableGifts": [], + "totalizers": [ + { + "id": "Items", + "name": "Total dos Itens", + "value": 15000 + }, + { + "id": "Discounts", + "name": "Total dos Descontos", + "value": -5000 + } + ], + "shippingData": { + "address": null, + "logisticsInfo": [ + { + "itemIndex": 0, + "selectedSla": null, + "selectedDeliveryChannel": "delivery", + "addressId": null, + "slas": [], + "shipsTo": [ + "BRA" + ], + "itemId": "1", + "deliveryChannels": [ + { + "id": "pickup-in-point" + }, + { + "id": "delivery" + } + ] + } + ], + "selectedAddresses": [], + "availableAddresses": [], + "pickupPoints": [] + }, + "clientProfileData": null, + "paymentData": { + "installmentOptions": [ + { + "paymentSystem": "2", + "bin": null, + "paymentName": null, + "paymentGroupName": null, + "value": 10000, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 10000, + "total": 10000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 10000, + "total": 10000 + } + ] + }, + { + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 5000, + "total": 10000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 5000, + "total": 10000 + } + ] + } + ] + } + ], + "paymentSystems": [ + { + "id": 2, + "name": "Visa", + "groupName": "creditCardPaymentGroup", + "validator": { + "regex": "^4[0-9]{15}$", + "mask": "9999 9999 9999 9999", + "cardCodeRegex": "^[0-9]{3}$", + "cardCodeMask": "999", + "weights": [ + 2, + 1, + 2, + 1 + ], + "useCvv": true, + "useExpirationDate": true, + "useCardHolderName": true, + "useBillingAddress": true + }, + "stringId": "2", + "template": "creditCardPaymentGroup-template", + "requiresDocument": false, + "isCustom": false, + "description": null, + "requiresAuthentication": false, + "dueDate": "2020-03-05T16:42:31.7836281Z", + "availablePayments": null + } + ], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": null, + "sellers": [ + { + "id": "1", + "name": "lojadobreno", + "logo": "" + } + ], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": null + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": { + "customApps": [ + { + "fields": { + "testField1": "testValue1", + "testField2": "testValue2" + }, + "id": "abcd", + "major": 1 + } + ] + }, + "itemMetadata": { + "items": [ + { + "id": "1", + "seller": "1", + "name": "Ração Royal Canin Feline Urinary 500g", + "skuName": "Ração Royal Canin Feline Urinary 500g", + "productId": "1", + "refId": "0001", + "ean": "123456789", + "imageUrl": "http://lojadobreno.vteximg.com.br/arquivos/ids/155450-55-55/Racao-Royal-Canin-Feline-Urinary-SO.jpg?v=637139444438700000", + "detailUrl": "/racao-royal-canin-feline-urinary/p", + "assemblyOptions": [] + } + ] + }, + "hooksData": null, + "ratesAndBenefitsData": { + "rateAndBenefitsIdentifiers": [], + "teaser": [] + }, + "subscriptionData": null, + "itemsOrdination": null + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/customData/{appId}/{appFieldName}": { + "put": { + "tags": [ + "Custom data" + ], + "summary": "Set single custom field value", + "description": "Your account may create `apps`, which contain custom fields, through the [Update orderForm configuration](https://developers.vtex.com/docs/api-reference/checkout-api#post-/api/checkout/pvt/configuration/orderForm) request. The value of a specific custom field can then be updated by this request.\n\r\n\rTo do that, you need to inform in the URL the ID of the app you created with the configuration API (`appId`).\n\r\n\rIn the body of the request, you will inform the new value (`appFieldValue`, passed through the body) of the specific field created in this app (identified by the `appFieldName` parameter, passed through the URL).\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.", + "operationId": "SetSingleCustomFieldValue", + "security": [], + "parameters": [ + { + "name": "orderFormId", + "in": "path", + "description": "The ID of the orderForm whose custom field's value you want to change.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }, + { + "name": "appId", + "in": "path", + "description": "ID of the app created through the Update orderForm Configuration endpoint.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }, + { + "name": "appFieldName", + "in": "path", + "description": "Name of the app's field created through the Update orderForm Configuration endpoint.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetsinglecustomfieldvalueRequest" + }, + "example": { + "value": "{{appFieldValue}}" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "", + "headers": {}, + "content": { + "application/json": { + "example": { + "orderFormId": "ede846222cd44046ba6c638442c3505a", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "checkedInPickupPointId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": null, + "userType": null, + "ignoreProfileData": false, + "value": 10000, + "messages": [], + "items": [ + { + "uniqueId": "E0F2B7AF5CD74D668F1E27537206912C", + "id": "1", + "productId": "1", + "productRefId": "", + "refId": "0001", + "ean": "123456789", + "name": "Ração Royal Canin Feline Urinary 500g", + "skuName": "Ração Royal Canin Feline Urinary 500g", + "modalType": null, + "parentItemIndex": null, + "parentAssemblyBinding": null, + "assemblies": [], + "priceValidUntil": "2021-02-27T14:59:00.8288784Z", + "tax": 0, + "price": 15000, + "listPrice": 30000, + "manualPrice": 10000, + "sellingPrice": 10000, + "rewardValue": 0, + "isGift": false, + "additionalInfo": { + "brandName": "Royal Canin", + "brandId": "2000000", + "offeringInfo": null, + "offeringType": null, + "offeringTypeId": null + }, + "preSaleDate": null, + "productCategoryIds": "/1/10/", + "productCategories": { + "10": "Ração Seca", + "1": "Alimentação" + }, + "quantity": 1, + "seller": "1", + "sellerChain": [ + "1" + ], + "imageUrl": "http://lojadobreno.vteximg.com.br/arquivos/ids/155450-55-55/Racao-Royal-Canin-Feline-Urinary-SO.jpg?v=637139444438700000", + "detailUrl": "/racao-royal-canin-feline-urinary/p", + "components": [], + "bundleItems": [], + "attachments": [], + "attachmentOfferings": [], + "offerings": [], + "priceTags": [ + { + "name": "DISCOUNT@MANUALPRICE", + "value": -5000, + "rawValue": -50.0, + "isPercentual": false, + "identifier": null + } + ], + "availability": "available", + "measurementUnit": "un", + "unitMultiplier": 1.0, + "manufacturerCode": null + } + ], + "selectableGifts": [], + "totalizers": [ + { + "id": "Items", + "name": "Total dos Itens", + "value": 15000 + }, + { + "id": "Discounts", + "name": "Total dos Descontos", + "value": -5000 + } + ], + "shippingData": { + "address": null, + "logisticsInfo": [ + { + "itemIndex": 0, + "selectedSla": null, + "selectedDeliveryChannel": "delivery", + "addressId": null, + "slas": [], + "shipsTo": [ + "BRA" + ], + "itemId": "1", + "deliveryChannels": [ + { + "id": "pickup-in-point" + }, + { + "id": "delivery" + } + ] + } + ], + "selectedAddresses": [], + "availableAddresses": [], + "pickupPoints": [] + }, + "clientProfileData": null, + "paymentData": { + "installmentOptions": [ + { + "paymentSystem": "2", + "bin": null, + "paymentName": null, + "paymentGroupName": null, + "value": 10000, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 10000, + "total": 10000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 10000, + "total": 10000 + } + ] + }, + { + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 5000, + "total": 10000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 5000, + "total": 10000 + } + ] + } + ] + } + ], + "paymentSystems": [ + { + "id": 2, + "name": "Visa", + "groupName": "creditCardPaymentGroup", + "validator": { + "regex": "^4[0-9]{15}$", + "mask": "9999 9999 9999 9999", + "cardCodeRegex": "^[0-9]{3}$", + "cardCodeMask": "999", + "weights": [ + 2, + 1, + 2, + 1, + 2 + ], + "useCvv": true, + "useExpirationDate": true, + "useCardHolderName": true, + "useBillingAddress": true + }, + "stringId": "2", + "template": "creditCardPaymentGroup-template", + "requiresDocument": false, + "isCustom": false, + "description": null, + "requiresAuthentication": false, + "dueDate": "2020-03-05T16:42:31.7836281Z", + "availablePayments": null + } + ], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": null, + "sellers": [ + { + "id": "1", + "name": "lojadobreno", + "logo": "" + } + ], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": null + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": { + "customApps": [ + { + "fields": { + "testField1": "Hello World", + "testField2": "testValue2" + }, + "id": "abcd", + "major": 1 + } + ] + }, + "itemMetadata": { + "items": [ + { + "id": "1", + "seller": "1", + "name": "Ração Royal Canin Feline Urinary 500g", + "skuName": "Ração Royal Canin Feline Urinary 500g", + "productId": "1", + "refId": "0001", + "ean": "123456789", + "imageUrl": "http://lojadobreno.vteximg.com.br/arquivos/ids/155450-55-55/Racao-Royal-Canin-Feline-Urinary-SO.jpg?v=637139444438700000", + "detailUrl": "/racao-royal-canin-feline-urinary/p", + "assemblyOptions": [] + } + ] + }, + "hooksData": null, + "ratesAndBenefitsData": { + "rateAndBenefitsIdentifiers": [], + "teaser": [] + }, + "subscriptionData": null, + "itemsOrdination": null + } + } + } + } + }, + "deprecated": false + }, + "delete": { + "tags": [ + "Custom data" + ], + "summary": "Remove single custom field value", + "description": "Your account may create `apps`, which contain custom fields, through the [Update orderForm configuration](https://developers.vtex.com/docs/api-reference/checkout-api#post-/api/checkout/pvt/configuration/orderForm) request. The value of a specific custom field can be removed by this request.\n\r\n\rTo do that, you need to inform in the URL the ID of the app you created with the configuration API (`appId`).\n\r\n\rYou also need to iform the specific field created in this app (identified by the `appFieldName` parameter, also passed through the URL) whose value you want to remove.", + "operationId": "Removesinglecustomfieldvalue", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "orderFormId", + "in": "path", + "description": "The ID of the orderForm from which you want to remove the custom field value.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }, + { + "name": "appId", + "in": "path", + "description": "ID of the app created through the Update orderForm Configuration endpoint.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }, + { + "name": "appFieldName", + "in": "path", + "description": "Name of the app's field created through the Update orderForm Configuration endpoint and which will be deleted.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "orderFormId": "ede846222cd44046ba6c638442c3505a", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "checkedInPickupPointId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": null, + "userType": null, + "ignoreProfileData": false, + "value": 10000, + "messages": [], + "items": [ + { + "uniqueId": "E0F2B7AF5CD74D668F1E27537206912C", + "id": "1", + "productId": "1", + "productRefId": "", + "refId": "0001", + "ean": "123456789", + "name": "Ração Royal Canin Feline Urinary 500g", + "skuName": "Ração Royal Canin Feline Urinary 500g", + "modalType": null, + "parentItemIndex": null, + "parentAssemblyBinding": null, + "assemblies": [], + "priceValidUntil": "2021-02-27T14:59:00.8288784Z", + "tax": 0, + "price": 15000, + "listPrice": 30000, + "manualPrice": 10000, + "sellingPrice": 10000, + "rewardValue": 0, + "isGift": false, + "additionalInfo": { + "brandName": "Royal Canin", + "brandId": "2000000", + "offeringInfo": null, + "offeringType": null, + "offeringTypeId": null + }, + "preSaleDate": null, + "productCategoryIds": "/1/10/", + "productCategories": { + "10": "Ração Seca", + "1": "Alimentação" + }, + "quantity": 1, + "seller": "1", + "sellerChain": [ + "1" + ], + "imageUrl": "http://lojadobreno.vteximg.com.br/arquivos/ids/155450-55-55/Racao-Royal-Canin-Feline-Urinary-SO.jpg?v=637139444438700000", + "detailUrl": "/racao-royal-canin-feline-urinary/p", + "components": [], + "bundleItems": [], + "attachments": [], + "attachmentOfferings": [], + "offerings": [], + "priceTags": [ + { + "name": "DISCOUNT@MANUALPRICE", + "value": -5000, + "rawValue": -50.0, + "isPercentual": false, + "identifier": null + } + ], + "availability": "available", + "measurementUnit": "un", + "unitMultiplier": 1.0, + "manufacturerCode": null + } + ], + "selectableGifts": [], + "totalizers": [ + { + "id": "Items", + "name": "Total dos Itens", + "value": 15000 + }, + { + "id": "Discounts", + "name": "Total dos Descontos", + "value": -5000 + } + ], + "shippingData": { + "address": null, + "logisticsInfo": [ + { + "itemIndex": 0, + "selectedSla": null, + "selectedDeliveryChannel": "delivery", + "addressId": null, + "slas": [], + "shipsTo": [ + "BRA" + ], + "itemId": "1", + "deliveryChannels": [ + { + "id": "pickup-in-point" + }, + { + "id": "delivery" + } + ] + } + ], + "selectedAddresses": [], + "availableAddresses": [], + "pickupPoints": [] + }, + "clientProfileData": null, + "paymentData": { + "installmentOptions": [ + { + "paymentSystem": "2", + "bin": null, + "paymentName": null, + "paymentGroupName": null, + "value": 10000, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 10000, + "total": 10000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 10000, + "total": 10000 + } + ] + }, + { + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 5000, + "total": 10000, + "sellerMerchantInstallments": [ + { + "id": "LOJADOBRENO", + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 5000, + "total": 10000 + } + ] + } + ] + } + ], + "paymentSystems": [ + { + "id": 2, + "name": "Visa", + "groupName": "creditCardPaymentGroup", + "validator": { + "regex": "^4[0-9]{15}$", + "mask": "9999 9999 9999 9999", + "cardCodeRegex": "^[0-9]{3}$", + "cardCodeMask": "999", + "weights": [ + 2, + 1, + 2, + 1, + 2 + ], + "useCvv": true, + "useExpirationDate": true, + "useCardHolderName": true, + "useBillingAddress": true + }, + "stringId": "2", + "template": "creditCardPaymentGroup-template", + "requiresDocument": false, + "isCustom": false, + "description": null, + "requiresAuthentication": false, + "dueDate": "2020-03-05T16:42:31.7836281Z", + "availablePayments": null + } + ], + "payments": [], + "giftCards": [], + "giftCardMessages": [], + "availableAccounts": [], + "availableTokens": [] + }, + "marketingData": null, + "sellers": [ + { + "id": "1", + "name": "lojadobreno", + "logo": "" + } + ], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": null + }, + "commercialConditionData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": true, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": { + "customApps": [ + { + "fields": { + "testField2": "testValue2" + }, + "id": "abcd", + "major": 1 + } + ] + }, + "itemMetadata": { + "items": [ + { + "id": "1", + "seller": "1", + "name": "Ração Royal Canin Feline Urinary 500g", + "skuName": "Ração Royal Canin Feline Urinary 500g", + "productId": "1", + "refId": "0001", + "ean": "123456789", + "imageUrl": "http://lojadobreno.vteximg.com.br/arquivos/ids/155450-55-55/Racao-Royal-Canin-Feline-Urinary-SO.jpg?v=637139444438700000", + "detailUrl": "/racao-royal-canin-feline-urinary/p", + "assemblyOptions": [] + } + ] + }, + "hooksData": null, + "ratesAndBenefitsData": { + "rateAndBenefitsIdentifiers": [], + "teaser": [] + }, + "subscriptionData": null, + "itemsOrdination": null + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pvt/configuration/orderForm": { + "get": { + "tags": [ + "Configuration" + ], + "summary": "Get orderForm configuration", + "description": "Retrieves the settings that are currently applied to every orderForm in the account.\n\r\n\rThese settings are defined by the request [Update orderForm configuration](https://developers.vtex.com/docs/api-reference/checkout-api#post-/api/checkout/pvt/configuration/orderForm).\n\r\n\rAlways use this request to retrieve the current configuration before performing an update. By doing so you ensure that you are modifying only the properties you want.", + "operationId": "GetorderFormconfiguration", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "", + "headers": {}, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "paymentConfiguration": { + "type": "object", + "description": "Payment configuration information.", + "properties": { + "requiresAuthenticationForPreAuthorizedPaymentOption": { + "type": "boolean", + "description": "Determines whether pre-authorized payments require authentication." + }, + "allowInstallmentsMerge": { + "type": "boolean", + "description": "By default (when `false`), on a multi-seller purchase is on the run, a simple intersection with installment options configured by every seller will be available. When indicated as `true`, this option allows a more complex but flexible installment option, since it considers max installments of every seller configuration, even if those do not match. Installment values may not be equal in this case." + } + } + }, + "taxConfiguration": { + "type": "object", + "description": "External tax service configuration information.", + "nullable": true, + "properties": { + "url": { + "type": "string", + "description": "Endpoint URL.", + "nullable": true + }, + "authorizationHeader": { + "type": "string", + "description": "Authorization header.", + "nullable": true + }, + "appId": { + "type": "string", + "description": "Custom data ID sent to the tax system." + } + } + }, + "minimumQuantityAccumulatedForItems": { + "type": "integer", + "description": "Minimum SKU quantity by cart." + }, + "decimalDigitsPrecision": { + "type": "integer", + "description": "Number of price digits." + }, + "minimumValueAccumulated": { + "type": "integer", + "description": "Minimum cart value.", + "nullable": true + }, + "apps": { + "type": "array", + "nullable": true, + "description": "Array of objects containing Apps configuration information.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "App ID." + }, + "fields": { + "type": "array", + "description": "Array of fields available to the app.", + "items": { + "type": "string" + } + }, + "major": { + "type": "integer", + "description": "App major version." + } + } + } + }, + "allowMultipleDeliveries": { + "type": "boolean", + "description": "On the same purchase, allows the selection of items from multiple delivery channels.", + "nullable": true + }, + "allowManualPrice": { + "type": "boolean", + "description": "Allows the editing of SKU prices right in the cart.", + "nullable": true + }, + "savePersonalDataAsOptIn": { + "type": "boolean", + "description": "Allows users to select whether they want the store to keep their personal and payment data saved.", + "nullable": true + }, + "maxNumberOfWhiteLabelSellers": { + "type": "integer", + "description": "Allows the input of a limit of white label sellers involved on the cart.", + "nullable": true + }, + "maskFirstPurchaseData": { + "type": "boolean", + "description": "Allows, on a first purchase, masking client's data. It could be useful when a shared cart is used and the client does not want to share its data.", + "nullable": true + }, + "recaptchaValidation": { + "type": "string", + "description": "Configures reCAPTCHA validation for the account, defining in which situations the shopper will be prompted to validate a purchase with reCAPTCHA. Learn more about [reCAPTCHA validation for VTEX stores](https://help.vtex.com/en/tutorial/using-recaptcha-at-checkout--18Te3oDd7f4qcjKu9jhNzP)\n\r\n\rPossible values are:\n\r- `\"never\"`: no purchases are validated with reCAPTCHA.\n\r- `\"always\"`: every purchase is validated with reCAPTCHA.\n\r- `\"vtexCriteria\"`: only some purchases are validated with reCAPTCHA in order to minimize friction and improve shopping experience. VTEX's algorithm determines which sessions are trustworthy and which should be validated with reCAPTCHA. This is the recommended option.", + "default": "vtexCriteria" + }, + "requiresLoginToPlaceOrder": { + "type": "boolean", + "description": "Indicates whether authentication is required for completing purchases.", + "example": true + }, + "minimumPurchaseDowntimeSeconds": { + "type": "integer", + "description": "Minimum interval (in seconds) between successive purchases.", + "example": 90 + }, + "cartAgeToUseNewCardSeconds": { + "type": "integer", + "description": "Minimum cart existence period (in seconds) before allowing the use of a new credit card.", + "example": 30 + } + } + }, + "example": { + "paymentConfiguration": { + "requiresAuthenticationForPreAuthorizedPaymentOption": false, + "allowInstallmentsMerge": false, + "blockPaymentSession": null + }, + "taxConfiguration": null, + "minimumQuantityAccumulatedForItems": 1, + "decimalDigitsPrecision": 2, + "minimumValueAccumulated": null, + "apps": [ + { + "fields": [ + "name", + "age" + ], + "id": "abcd", + "major": 1 + } + ], + "allowMultipleDeliveries": false, + "allowManualPrice": true, + "savePersonalDataAsOptIn": false, + "maxNumberOfWhiteLabelSellers": null, + "maskFirstPurchaseData": null, + "recaptchaValidation": "vtexCriteria", + "requiresLoginToPlaceOrder": true, + "minimumPurchaseDowntimeSeconds": 90, + "cartAgeToUseNewCardSeconds": 30 + } + } + } + } + }, + "deprecated": false + }, + "post": { + "tags": [ + "Configuration" + ], + "summary": "Update orderForm configuration", + "description": "Determines settings that will apply to every orderForm in the account.\n\r\n\rFor example, if you create an app using this request, every orderForm of this account will have the custom fields created though it.\n\r\n\r>ℹ️ Always retrieve the current configuration before performing an update to ensure that you are modifying only the properties you want. Otherwise, old values can be overwritten. To retrieve the current configuration, use the request [Get orderForm configuration](https://developers.vtex.com/docs/api-reference/checkout-api#get-/api/checkout/pvt/configuration/orderForm).", + "operationId": "UpdateorderFormconfiguration", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateorderFormconfigurationRequest" + }, + "example": { + "paymentConfiguration": { + "requiresAuthenticationForPreAuthorizedPaymentOption": false + }, + "taxConfiguration": null, + "minimumQuantityAccumulatedForItems": 1, + "decimalDigitsPrecision": 2, + "minimumValueAccumulated": null, + "apps": null, + "allowMultipleDeliveries": null, + "allowManualPrice": null, + "requiresLoginToPlaceOrder": true, + "minimumPurchaseDowntimeSeconds": 90, + "cartAgeToUseNewCardSeconds": 30 + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "", + "headers": {} + } + }, + "deprecated": false + } + }, + "/api/checkout/pvt/configuration/window-to-change-seller": { + "get": { + "tags": [ + "Configuration" + ], + "summary": "Get window to change seller", + "description": "Retrieves a marketplace’s window to change seller, that is, the period when it is possible to choose another seller to fulfill a given order after the original seller has canceled it.\n\r\n\rThe default period for this window is of 2 days, but it can be configured by the request Update window to change seller.", + "operationId": "GetWindowToChangeSeller", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "example": "2" + } + } + } + }, + "deprecated": false + }, + "post": { + "tags": [ + "Configuration" + ], + "summary": "Update window to change seller", + "description": "Updates a marketplace’s window to change seller, that is, the period when it is possible to choose another seller to fulfill a given order after the original seller has canceled it.\n\r\n\rIt is possible to check the current window using the request Get window to change seller.", + "operationId": "UpdateWindowToChangeSeller", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WaitingTime" + }, + "example": { + "waitingTime": 4 + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Created", + "headers": {} + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/messages/clear": { + "post": { + "tags": [ + "Configuration" + ], + "summary": "Clear orderForm messages", + "description": "This request removes all messages from the `messages` field of the orderForm , leaving it empty.\r\n\r\nYou must send an empty JSON in the body of the request.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\r\n\r\n**Important**: **Request Body** must always be sent with empty value \"{ }\" in this endpoint.", + "operationId": "ClearorderFormMessages", + "security": [], + "parameters": [ + { + "name": "orderFormId", + "in": "path", + "description": "ID of the orderForm corresponding to the cart whose messages you want to remove.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "ede846222cd44046ba6c638442c3505a" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "This object must be empty.", + "title": "", + "properties": {}, + "default": {} + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "headers": {}, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "orderFormId": { + "type": "string", + "description": "ID of the orderForm corresponding to a specific cart." + }, + "salesChannel": { + "type": "string", + "description": "Attribute created by the seller, in their VTEX store configuration." + }, + "loggedIn": { + "type": "boolean", + "description": "Indicates whether the user is logged into the store." + }, + "isCheckedIn": { + "type": "boolean", + "description": "Indicates whether order is checked in." + }, + "storeId": { + "type": "string", + "description": "ID of the store.", + "nullable": true + }, + "allowManualPrice": { + "type": "boolean", + "description": "Permission to modify item price manually." + }, + "canEditData": { + "type": "boolean", + "description": "Data can be edited." + }, + "userProfileId": { + "type": "string", + "description": "Unique ID associated with the customer profile." + }, + "profileProvider": { + "type": "string", + "description": "Profile provider." + }, + "availableAccounts": { + "type": "array", + "description": "Available accounts.", + "items": { + "type": "string" + } + }, + "availableAddresses": { + "type": "array", + "description": "Information on each available address.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Address type." + }, + "receiverName": { + "type": "string", + "description": "Name of the receiver." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "city": { + "type": "string", + "description": "City of the address." + }, + "state": { + "type": "string", + "description": "State of the address." + }, + "country": { + "type": "string", + "description": "Country of the address. ISO three-letter code." + }, + "street": { + "type": "string", + "description": "Street of the address." + }, + "number": { + "type": "string", + "description": "Number of the address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the address." + }, + "complement": { + "type": "string", + "description": "Complement to the address.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Reference that may help in the location of the address.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + }, + "userType": { + "type": "string", + "description": "User type.", + "nullable": true + }, + "ignoreProfileData": { + "type": "boolean", + "description": "Ignore customer profile data." + }, + "value": { + "type": "integer", + "description": "Total value of the order without separating cents. For example, $24.99 is represented `2499`." + }, + "messages": { + "type": "array", + "description": "Array containing an object for each message generated by our servers while processing the request." + }, + "items": { + "type": "array", + "description": "Information on each item in the order.", + "items": { + "type": "object", + "properties": { + "uniqueId": { + "type": "string", + "description": "Unique ID." + }, + "id": { + "type": "string", + "description": "ID of the item." + }, + "productId": { + "type": "string", + "description": "Product ID." + }, + "productRefId": { + "type": "string", + "description": "Product Ref ID." + }, + "refId": { + "type": "string", + "description": "Ref ID." + }, + "ean": { + "type": "string", + "description": "European Article Number.", + "nullable": true + }, + "name": { + "type": "string", + "description": "Product name." + }, + "skuName": { + "type": "string", + "description": "SKU name." + }, + "modalType": { + "type": "string", + "description": "Modal type.", + "nullable": true + }, + "parentItemIndex": { + "type": "integer", + "description": "Parent item index.", + "nullable": true + }, + "parentAssemblyBinding": { + "type": "string", + "description": "Parent assembly binding.", + "nullable": true + }, + "priceValidUntil": { + "type": "string", + "description": "Price expiration date and time." + }, + "tax": { + "type": "integer", + "description": "Tax value in cents." + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "manualPrice": { + "type": "integer", + "description": "Manual price in cents.", + "nullable": true + }, + "manualPriceAppliedBy": { + "type": "string", + "description": "User that applied the manual price, if that is the case.", + "nullable": true + }, + "sellingPrice": { + "type": "integer", + "description": "Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead." + }, + "rewardValue": { + "type": "integer", + "description": "Reward value in cents." + }, + "isGift": { + "type": "boolean", + "description": "Indicates whether item is a gift." + }, + "additionalInfo": { + "type": "object", + "description": "Additional information.", + "properties": { + "dimension": { + "type": "string", + "description": "Dimension.", + "nullable": true + }, + "brandName": { + "type": "string", + "description": "Brand name." + }, + "brandId": { + "type": "string", + "description": "Brand ID." + }, + "offeringInfo": { + "type": "string", + "description": "Offering information.", + "nullable": true + }, + "offeringType": { + "type": "string", + "description": "Offering type.", + "nullable": true + }, + "offeringTypeId": { + "type": "string", + "description": "Offering type ID.", + "nullable": true + } + } + }, + "preSaleDate": { + "type": "string", + "description": "Presale date.", + "nullable": true + }, + "productCategoryIds": { + "type": "string", + "description": "Product category IDs." + }, + "productCategories": { + "type": "object", + "description": "Object, where each field is an ID from `productCategoryIds`.", + "properties": { + "{ID}": { + "type": "string", + "description": "Product category corresponding to the ID in the field key." + } + } + }, + "quantity": { + "type": "integer", + "description": "Quantity." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "sellerChain": { + "type": "array", + "description": "Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order.", + "items": { + "type": "string", + "description": "Seller." + } + }, + "imageUrl": { + "type": "string", + "description": "Image URL." + }, + "detailUrl": { + "type": "string", + "description": "Detail URL." + }, + "bundleItems": { + "type": "array", + "description": "Information on services sold along with the SKU. Example: a gift package.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Service type." + }, + "id": { + "type": "integer", + "description": "Service identifier." + }, + "name": { + "type": "string", + "description": "Service name." + }, + "price": { + "type": "integer", + "description": "Service price in cents." + } + } + } + }, + "attachments": { + "type": "array", + "description": "Array containing information on attachments.", + "items": { + "type": "string" + } + }, + "priceTags": { + "type": "array", + "description": "Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order.", + "items": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "Price tag identifier." + }, + "isPercentual": { + "type": "boolean", + "description": "Indicates whether price tag value is applied through a percentage." + }, + "name": { + "type": "string", + "description": "Price tag name." + }, + "rawValue": { + "type": "integer", + "description": "Price tag raw value." + }, + "value": { + "type": "integer", + "description": "Price tag value." + } + } + } + }, + "availability": { + "type": "string", + "description": "Availability." + }, + "measurementUnit": { + "type": "string", + "description": "Measurement unit." + }, + "unitMultiplier": { + "type": "integer", + "description": "Unit multiplier." + }, + "manufacturerCode": { + "type": "string", + "description": "Manufacturer code.", + "nullable": true + }, + "priceDefinition": { + "type": "object", + "description": "Price information for all units of a specific item.", + "properties": { + "calculatedSellingPrice": { + "type": "integer", + "description": "Item's calculated unitary selling price in cents." + }, + "total": { + "type": "integer", + "description": "Total value for all units of the item in cents." + }, + "sellingPrices": { + "type": "array", + "description": "Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total.", + "items": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "description": "Value in cents for that specific rounding." + }, + "quantity": { + "type": "integer", + "description": "Rounding quantity, meaning how many items are rounded to this value." + } + } + } + } + } + } + } + } + }, + "selectableGifts": { + "type": "array", + "description": "Array containing the data of the item selected as a gift." + }, + "totalizers": { + "type": "array", + "description": "Array containing an object for each totalizer for the purchase. Totalizers contain the sum of values for a specific part of the order (e.g. Total item value, Total shipping value)." + }, + "shippingData": { + "type": "object", + "description": "Shipping information pertinent to the order.", + "properties": { + "address": { + "type": "object", + "description": "Address information.", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + }, + "logisticsInfo": { + "type": "array", + "description": "Array with logistics information. Each object in this array corresponds to an object in the `items` array, based on the respective `itemIndex`.", + "items": { + "type": "object", + "properties": { + "itemIndex": { + "type": "integer", + "description": "Index corresponding to the position of the object in the `items` array." + }, + "selectedSla": { + "type": "string", + "description": "SLA selected by the customer." + }, + "selectedDeliveryChannel": { + "type": "string", + "description": "Delivery channel selected by the customer." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "slas": { + "type": "array", + "description": "Information on available SLAs.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "SLA ID." + }, + "deliveryChannel": { + "type": "string", + "description": "Delivery channel." + }, + "name": { + "type": "string", + "description": "SLA name." + }, + "deliveryIds": { + "type": "array", + "description": "Information on each delivery ID.", + "items": { + "type": "object", + "properties": { + "courierId": { + "type": "string", + "description": "Courier ID." + }, + "warehouseId": { + "type": "string", + "description": "Warehouse ID." + }, + "dockId": { + "type": "string", + "description": "Warehouse ID." + }, + "courierName": { + "type": "string", + "description": "Courier name." + }, + "quantity": { + "type": "integer", + "description": "Quantity." + } + } + } + }, + "shippingEstimate": { + "type": "string", + "description": "Shipping estimate. For instance, Three business days will be represented `3bd`." + }, + "shippingEstimateDate": { + "type": "string", + "description": "Shipping estimate date.", + "nullable": true + }, + "lockTTL": { + "type": "string", + "description": "Estimate date of delivery." + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "tax": { + "type": "integer", + "description": "Tax in cents." + }, + "pickupStoreInfo": { + "type": "object", + "description": "Information on the pickup store.", + "properties": { + "isPickupStore": { + "type": "boolean", + "description": "Indicates whether it is the pickup store." + }, + "friendlyName": { + "type": "string", + "description": "Friendly name.", + "nullable": true + }, + "address": { + "type": "object", + "description": "Address information.", + "nullable": true, + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + }, + "additionalInfo": { + "type": "string", + "description": "Additional information.", + "nullable": true + }, + "dockId": { + "type": "string", + "description": "Corresponding dock ID.", + "nullable": true + } + } + }, + "pickupPointId": { + "type": "string", + "description": "Pickup point ID.", + "nullable": true + }, + "pickupDistance": { + "type": "integer", + "description": "Pickup point distance." + }, + "polygonName": { + "type": "string", + "description": "Polygon name.", + "nullable": true + }, + "transitTime": { + "type": "string", + "description": "Transit time. For instance, \"three business days\" is represented `3bd`." + } + } + } + }, + "shipsTo": { + "type": "array", + "description": "List of countries that the item may be shipped to.", + "items": { + "type": "string", + "description": "Three letter country code." + } + }, + "itemId": { + "type": "string", + "description": "Item ID." + }, + "deliveryChannels": { + "type": "array", + "description": "List of available delivery channels.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Delivery channel ID." + } + } + } + } + } + } + }, + "selectedAddresses": { + "type": "array", + "description": "Array with information on the selected addresses for the order.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies." + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + }, + "availableAddresses": { + "type": "array", + "description": "Array with information on the available addresses for the order.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies." + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + } + } + }, + "clientProfileData": { + "type": "object", + "description": "Customer's profile information.", + "properties": { + "email": { + "type": "string", + "description": "Email address." + }, + "firstName": { + "type": "string", + "description": "First name." + }, + "lastName": { + "type": "string", + "description": "Last name." + }, + "documentType": { + "type": "string", + "description": "Type of the document informed by the customer." + }, + "document": { + "type": "string", + "description": "Document informed by the customer." + }, + "phone": { + "type": "string", + "description": "Phone number." + }, + "corporateName": { + "type": "string", + "description": "Company name, if the customer is a legal entity.", + "nullable": true + }, + "tradeName": { + "type": "string", + "description": "Trade name, if the customer is a legal entity.", + "nullable": true + }, + "corporateDocument": { + "type": "string", + "description": "Corporate document, if the customer is a legal entity.", + "nullable": true + }, + "stateInscription": { + "type": "string", + "description": "State inscription, if the customer is a legal entity.", + "nullable": true + }, + "corporatePhone": { + "type": "string", + "description": "Corporate phone number, if the customer is a legal entity.", + "nullable": true + }, + "isCorporate": { + "type": "boolean", + "description": "Indicates whether the customer is a legal entity." + }, + "profileCompleteOnLoading": { + "type": "boolean", + "description": "Indicates whether profile is complete on loading." + }, + "profileErrorOnLoading": { + "type": "boolean", + "description": "Indicates whether profile presents error on loading.", + "nullable": true + }, + "customerClass": { + "type": "string", + "description": "Customer class.", + "nullable": true + } + } + }, + "paymentData": { + "type": "object", + "description": "Information on the order's payment.", + "properties": { + "giftCards": { + "type": "array", + "description": "Gift card information, if it applies to the order.", + "items": { + "type": "object", + "properties": { + "redemptionCode": { + "type": "string", + "description": "Gift card redemption code." + }, + "value": { + "type": "integer", + "description": "Gift card value in cents." + }, + "balance": { + "type": "integer", + "description": "Gift card balance in cents." + }, + "name": { + "type": "string", + "description": "Gift card name." + }, + "id": { + "type": "string", + "description": "Gift card ID." + }, + "inUse": { + "type": "boolean", + "description": "Indicates whether gift card is in use." + }, + "isSpecialCard": { + "type": "boolean", + "description": "Indicates whether gift card is special." + } + } + } + }, + "transactions": { + "type": "array", + "description": "Information on each transaction pertinent to the order.", + "items": { + "type": "object", + "properties": { + "isActive": { + "type": "boolean", + "description": "Indicates whether transaction is active." + }, + "transactionId": { + "type": "string", + "description": "Transaction ID." + }, + "merchantName": { + "type": "string", + "description": "Merchant name." + }, + "payments": { + "type": "array", + "description": "Information on each payment.", + "items": { + "type": "object", + "properties": { + "accountId": { + "type": "string", + "description": "Account ID." + }, + "bin": { + "type": "string", + "description": "Bin." + }, + "installments": { + "type": "integer", + "description": "Number of installments." + }, + "paymentSystem": { + "type": "string", + "description": "Payment system." + }, + "referenceValue": { + "type": "integer", + "description": "Reference value for calculating interest rates, in case it applies. Displayed in cents." + }, + "value": { + "type": "integer", + "description": "Value including interest, in case it applies. Displayed in cents." + } + } + } + }, + "sharedTransaction": { + "type": "boolean", + "description": "Indicates whather transaction is shared." + } + } + } + } + } + }, + "marketingData": { + "type": "object", + "description": "Object containing promotion data such as coupon tracking information and internal or external UTMs.", + "properties": { + "coupon": { + "type": "string", + "description": "Sending an existing coupon code in this field will return the corresponding discount in the purchase. Use the [cart simulation](https://developers.vtex.com/vtex-rest-api/reference/orderform#orderformsimulation) request to check which coupons might apply before placing the order.", + "default": "free-shipping" + }, + "utmSource": { + "type": "string", + "description": "UTM source.", + "default": "Facebook" + }, + "utmMedium": { + "type": "string", + "description": "UTM medium.", + "default": "CPC" + }, + "utmCampaign": { + "type": "string", + "description": "UTM campaign", + "default": "Black friday" + }, + "utmiPage": { + "type": "string", + "description": "utmi_page (internal utm)", + "default": "utmi_page-example", + "nullable": true + }, + "utmiPart": { + "type": "string", + "description": "utmi_part (internal utm).", + "default": "utmi_part-example", + "nullable": true + }, + "utmiCampaign": { + "type": "string", + "description": "utmi_campaign (internal utm).", + "default": "utmi_campaign-example", + "nullable": true + } + } + }, + "sellers": { + "type": "array", + "description": "Information on each seller.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Seller ID." + }, + "name": { + "type": "string", + "description": "Seller name." + }, + "logo": { + "type": "string", + "description": "Seller logo.", + "nullable": true + } + } + } + }, + "clientPreferencesData": { + "type": "object", + "description": "Object containing preferences from the client who placed the order.", + "properties": { + "locale": { + "type": "string", + "description": "Client's locale. Examples: `pt-BR` and `en-US`." + }, + "optinNewsLetter": { + "type": "boolean", + "description": "`true` if the client opted to receive newsletter from the store.", + "default": false + } + } + }, + "commercialConditionData": { + "type": "object", + "description": "Object containing commercial condition information.", + "nullable": true + }, + "storePreferencesData": { + "type": "object", + "description": "Object containing data from the store's configuration (stored in VTEX's License Manager)." + }, + "giftRegistryData": { + "type": "object", + "description": "Gift registry list information.", + "nullable": true + }, + "openTextField": { + "type": "string", + "description": "Optional field meant to hold additional information about the order. We recommend using this field for text, not data formats such as `JSON` even if escaped. For that purpose, see [Creating customizable fields](https://developers.vtex.com/vtex-rest-api/docs/creating-customizable-fields-in-the-cart-with-checkout-api-1).", + "default": "open-text-example", + "nullable": true + }, + "invoiceData": { + "type": "object", + "description": "Object containing information pertinent to the order's invoice.", + "nullable": true + }, + "customData": { + "type": "object", + "description": "Customer additional information.", + "nullable": true + }, + "itemMetadata": { + "type": "object", + "description": "Item metadata.", + "properties": { + "items": { + "type": "array", + "description": "List of objects containing metadata on each item in the order.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Item ID." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "name": { + "type": "string", + "description": "Product name." + }, + "skuName": { + "type": "string", + "description": "SKU name." + }, + "productId": { + "type": "string", + "description": "Product ID." + }, + "refId": { + "type": "string", + "description": "Ref ID." + }, + "ean": { + "type": "string", + "description": "European Article Number.", + "nullable": true + }, + "imageUrl": { + "type": "string", + "description": "Image URL." + }, + "detailUrl": { + "type": "string", + "description": "Detail URL." + } + } + } + } + } + }, + "hooksData": { + "type": "object", + "description": "Hooks information.", + "nullable": true + }, + "ratesAndBenefitsData": { + "type": "object", + "description": "Information on rates and benefits that apply to the order.", + "properties": { + "rateAndBenefitsIdentifiers": { + "type": "array", + "description": "List with rates and benefits identifiers.", + "items": { + "type": "string" + } + }, + "teaser": { + "type": "array", + "description": "List with rates and benefits teasers.", + "items": { + "type": "string" + } + } + } + }, + "subscriptionData": { + "type": "object", + "description": "Subscription information.", + "nullable": true + }, + "itemsOrdination": { + "type": "object", + "description": "Object containing information about the ordering of items within the orderForm.", + "properties": { + "criteria": { + "type": "string", + "description": "Criteria adopted to order the items in the list." + }, + "ascending": { + "type": "boolean", + "description": "Indicates whether the ordering is ascending." + } + } + } + } + }, + "examples": { + "response": { + "value": { + "orderFormId": "ede846222cd44046ba6c638442c3505a", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": "fb542e51-5488-4c34-8d17-ed8fcf597a94", + "profileProvider": "VTEX", + "availableAccounts": [], + "availableAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "666c2e830bd9474ab6f6cc53fb6dd2d2", + "isDisposable": true, + "postalCode": "70386000", + "city": "Brasília", + "state": "DF", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "userType": null, + "ignoreProfileData": false, + "value": 34390, + "messages": [], + "items": [ + { + "uniqueId": "9D6E447B3FF64CEDA33B17C01379C119", + "id": "2", + "productId": "2", + "productRefId": "", + "refId": "CBC30L", + "ean": null, + "name": "Chopp Brahma Claro 30L", + "skuName": "Chopp Brahma Claro 30L", + "modalType": null, + "parentItemIndex": null, + "parentAssemblyBinding": null, + "assemblies": [], + "priceValidUntil": "2022-07-13T18:30:46Z", + "tax": 0, + "price": 32890, + "listPrice": 49900, + "manualPrice": null, + "manualPriceAppliedBy": null, + "sellingPrice": 32890, + "rewardValue": 0, + "isGift": false, + "additionalInfo": { + "dimension": null, + "brandName": "Brahma", + "brandId": "2000000", + "offeringInfo": null, + "offeringType": null, + "offeringTypeId": null + }, + "preSaleDate": null, + "productCategoryIds": "/1/", + "productCategories": { + "1": "Bebidas" + }, + "quantity": 1, + "seller": "1", + "sellerChain": [ + "1" + ], + "imageUrl": "http://mystore.vteximg.com.br/arquivos/ids/155400-55-55/30l_v2.png?v=637303412106100000", + "detailUrl": "/chopp-brahma-claro-30l/p", + "components": [], + "bundleItems": [], + "attachments": [], + "attachmentOfferings": [], + "offerings": [], + "priceTags": [], + "availability": "available", + "measurementUnit": "un", + "unitMultiplier": 1, + "manufacturerCode": null, + "priceDefinition": { + "calculatedSellingPrice": 32890, + "total": 32890, + "sellingPrices": [ + { + "value": 32890, + "quantity": 1 + } + ] + } + } + ], + "selectableGifts": [], + "totalizers": [ + { + "id": "Items", + "name": "Total Items", + "value": 32890 + } + ], + "shippingData": { + "address": { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "70386000", + "city": "Brasília", + "state": "DF", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + }, + "logisticsInfo": [ + { + "itemIndex": 0, + "selectedSla": "Normal", + "selectedDeliveryChannel": "delivery", + "addressId": "teste", + "slas": [ + { + "id": "Normal", + "deliveryChannel": "delivery", + "name": "Normal", + "deliveryIds": [ + { + "courierId": "1", + "warehouseId": "1_1", + "dockId": "1", + "courierName": "Transportadora", + "quantity": 1, + "kitItemDetails": [] + } + ], + "shippingEstimate": "3bd", + "shippingEstimateDate": null, + "lockTTL": "10d", + "availableDeliveryWindows": [], + "deliveryWindow": null, + "price": 1500, + "listPrice": 1500, + "tax": 0, + "pickupStoreInfo": { + "isPickupStore": false, + "friendlyName": null, + "address": null, + "additionalInfo": null, + "dockId": null + }, + "pickupPointId": null, + "pickupDistance": 0, + "polygonName": null, + "transitTime": "3bd" + } + ], + "shipsTo": [ + "BRA", + "COL", + "USA" + ], + "itemId": "2", + "deliveryChannels": [ + { + "id": "delivery" + }, + { + "id": "pickup-in-point" + } + ] + } + ], + "selectedAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "availableAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "pickupPoints": [] + }, + "clientProfileData": { + "email": "clark.kent@example.com", + "firstName": "Clark", + "lastName": "Kent", + "document": "12345678900", + "documentType": "cpf", + "phone": "+5521998765432", + "corporateName": null, + "tradeName": null, + "corporateDocument": null, + "stateInscription": null, + "corporatePhone": null, + "isCorporate": false, + "profileCompleteOnLoading": false, + "profileErrorOnLoading": null, + "customerClass": null + }, + "paymentData": { + "giftCards": [], + "transactions": [ + { + "isActive": true, + "transactionId": "296D6D245C17437E823EB77E403FC88D", + "merchantName": "MYSTORE", + "payments": [], + "sharedTransaction": false + } + ] + }, + "marketingData": { + "coupon": "free-shipping", + "utmSource": "app", + "utmMedium": "CPC", + "utmCampaign": "Black friday", + "utmipage": null, + "utmiPart": null, + "utmiCampaign": null + }, + "sellers": [ + { + "id": "1", + "name": "lojadobreno", + "logo": "" + } + ], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": false + }, + "commercialConditionData": null, + "storePreferencesData": {}, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": { + "items": [ + { + "id": "2", + "seller": "1", + "name": "Chopp Brahma Claro 30L", + "skuName": "Chopp Brahma Claro 30L", + "productId": "2", + "refId": "CBC30L", + "ean": null, + "imageUrl": "http://mystore.vteximg.com.br/arquivos/ids/155400-55-55/30l_v2.png?v=637303412106100000", + "detailUrl": "/chopp-brahma-claro-30l/p", + "assemblyOptions": [] + } + ] + }, + "hooksData": null, + "ratesAndBenefitsData": { + "rateAndBenefitsIdentifiers": [], + "teaser": [] + }, + "subscriptionData": null, + "itemsOrdination": { + "criteria": "NAME", + "ascending": true + } + } + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/installments": { + "get": { + "tags": [ + "Shopping cart" + ], + "summary": "Cart installments", + "description": "Retrieves possible amount of installments and respective values for a given cart with a given payment method.\r\n\r\nThe [orderForm](https://developers.vtex.com/docs/guides/orderform-fields) is the data structure which represents a shopping cart and contains all information pertaining to it. Hence, the `orderFormId` is the identification code of a given cart.\n\r\n\rThis endpoint can be used to get the installment options for only one payment method at a time.\n\r\n\rThis endpoint should be called only after the selected `orderForm` already has a `paymentData`.", + "operationId": "GetCartInstallments", + "security": [], + "parameters": [ + { + "name": "orderFormId", + "in": "path", + "required": true, + "description": "ID of the `orderForm` to be consulted for installments.", + "schema": { + "type": "string" + } + }, + { + "name": "paymentSystem", + "in": "query", + "description": "ID of the payment method to be consulted for installments.", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "integer" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "headers": {}, + "content": { + "application/json": { + "example": { + "paymentSystem": "2", + "bin": null, + "paymentName": null, + "paymentGroupName": null, + "value": 32000, + "installments": [ + { + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 32000, + "total": 32000, + "sellerMerchantInstallments": [ + { + "id": "MyStore", + "count": 1, + "hasInterestRate": false, + "interestRate": 0, + "value": 32000, + "total": 32000 + } + ] + }, + { + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 1600, + "total": 32000, + "sellerMerchantInstallments": [ + { + "id": "MyStore", + "count": 2, + "hasInterestRate": false, + "interestRate": 0, + "value": 1600, + "total": 32000 + } + ] + }, + { + "count": 3, + "hasInterestRate": false, + "interestRate": 0, + "value": 10666, + "total": 32000, + "sellerMerchantInstallments": [ + { + "id": "MyStore", + "count": 3, + "hasInterestRate": false, + "interestRate": 0, + "value": 10666, + "total": 32000 + } + ] + } + ] + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/coupons": { + "post": { + "tags": [ + "Shopping cart" + ], + "summary": "Add coupons to the cart", + "description": "Use this request to add coupons to a given shopping cart.\n\r\n\rTo add multiple coupons to the same cart, you need to:\n\r\n\r1. Request the activation of this feature through the [Support VTEX](https://help.vtex.com/support) if this is the first time you perform this action on your store.\n\r2. Submit all coupon codes in the same requisition separated by commas. E.g.: {\"text\": \"freeshipping, discount10, holiday30\"}.\r\n\r\nFor more information on multiple coupons, access the [coupons tutorial](https://help.vtex.com/en/tutorial/creating-a-coupon-beta--7lMk3MmhNp2IEccyGApxU).", + "operationId": "AddCoupons", + "security": [], + "parameters": [ + { + "name": "orderFormId", + "in": "path", + "required": true, + "description": "ID of the orderForm that will receive coupon information.", + "style": "simple", + "schema": { + "type": "string", + "default": "ede846222cd44046ba6c638442c3505a" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "Sending an existing coupon code in this field will return the corresponding discount in the purchase.", + "default": "freeshipping" + } + } + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "headers": {}, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "orderFormId": { + "type": "string", + "description": "ID of the orderForm corresponding to a specific cart." + }, + "salesChannel": { + "type": "string", + "description": "Attribute created by the seller, in their VTEX store configuration." + }, + "loggedIn": { + "type": "boolean", + "description": "Indicates whether the user is logged into the store." + }, + "isCheckedIn": { + "type": "boolean", + "description": "Indicates whether order is checked in." + }, + "storeId": { + "type": "string", + "description": "ID of the store.", + "nullable": true + }, + "allowManualPrice": { + "type": "boolean", + "description": "Permission to modify item price manually." + }, + "canEditData": { + "type": "boolean", + "description": "Data can be edited." + }, + "userProfileId": { + "type": "string", + "description": "Unique ID associated with the customer profile." + }, + "profileProvider": { + "type": "string", + "description": "Profile provider." + }, + "availableAccounts": { + "type": "array", + "description": "Available accounts.", + "items": { + "type": "string" + } + }, + "availableAddresses": { + "type": "array", + "description": "Information on each available address.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Address type." + }, + "receiverName": { + "type": "string", + "description": "Name of the receiver." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "city": { + "type": "string", + "description": "City of the address." + }, + "state": { + "type": "string", + "description": "State of the address." + }, + "country": { + "type": "string", + "description": "Country of the address. ISO three-letter code." + }, + "street": { + "type": "string", + "description": "Street of the address." + }, + "number": { + "type": "string", + "description": "Number of the address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the address." + }, + "complement": { + "type": "string", + "description": "Complement to the address.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Reference that may help in the location of the address.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + }, + "userType": { + "type": "string", + "description": "User type.", + "nullable": true + }, + "ignoreProfileData": { + "type": "boolean", + "description": "Ignore customer profile data." + }, + "value": { + "type": "integer", + "description": "Total value of the order without separating cents. For example, $24.99 is represented `2499`." + }, + "messages": { + "type": "array", + "description": "Array containing an object for each message generated by our servers while processing the request." + }, + "items": { + "type": "array", + "description": "Information on each item in the order.", + "items": { + "type": "object", + "properties": { + "uniqueId": { + "type": "string", + "description": "Unique ID." + }, + "id": { + "type": "string", + "description": "ID of the item." + }, + "productId": { + "type": "string", + "description": "Product ID." + }, + "productRefId": { + "type": "string", + "description": "Product Ref ID." + }, + "refId": { + "type": "string", + "description": "Ref ID." + }, + "ean": { + "type": "string", + "description": "European Article Number.", + "nullable": true + }, + "name": { + "type": "string", + "description": "Product name." + }, + "skuName": { + "type": "string", + "description": "SKU name." + }, + "modalType": { + "type": "string", + "description": "Modal type.", + "nullable": true + }, + "parentItemIndex": { + "type": "integer", + "description": "Parent item index.", + "nullable": true + }, + "parentAssemblyBinding": { + "type": "string", + "description": "Parent assembly binding.", + "nullable": true + }, + "priceValidUntil": { + "type": "string", + "description": "Price expiration date and time." + }, + "tax": { + "type": "integer", + "description": "Tax value in cents." + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "manualPrice": { + "type": "integer", + "description": "Manual price in cents.", + "nullable": true + }, + "manualPriceAppliedBy": { + "type": "string", + "description": "User that applied the manual price, if that is the case.", + "nullable": true + }, + "sellingPrice": { + "type": "integer", + "description": "Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead." + }, + "rewardValue": { + "type": "integer", + "description": "Reward value in cents." + }, + "isGift": { + "type": "boolean", + "description": "Indicates whether item is a gift." + }, + "additionalInfo": { + "type": "object", + "description": "Additional information.", + "properties": { + "dimension": { + "type": "string", + "description": "Dimension.", + "nullable": true + }, + "brandName": { + "type": "string", + "description": "Brand name." + }, + "brandId": { + "type": "string", + "description": "Brand ID." + }, + "offeringInfo": { + "type": "string", + "description": "Offering information.", + "nullable": true + }, + "offeringType": { + "type": "string", + "description": "Offering type.", + "nullable": true + }, + "offeringTypeId": { + "type": "string", + "description": "Offering type ID.", + "nullable": true + } + } + }, + "preSaleDate": { + "type": "string", + "description": "Presale date.", + "nullable": true + }, + "productCategoryIds": { + "type": "string", + "description": "Product category IDs." + }, + "productCategories": { + "type": "object", + "description": "Object, where each field is an ID from `productCategoryIds`.", + "properties": { + "{ID}": { + "type": "string", + "description": "Product category corresponding to the ID in the field key." + } + } + }, + "quantity": { + "type": "integer", + "description": "Quantity." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "sellerChain": { + "type": "array", + "description": "Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/en/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order.", + "items": { + "type": "string", + "description": "Seller." + } + }, + "imageUrl": { + "type": "string", + "description": "Image URL." + }, + "detailUrl": { + "type": "string", + "description": "Detail URL." + }, + "bundleItems": { + "type": "array", + "description": "Information on services sold along with the SKU. Example: a gift package.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Service type." + }, + "id": { + "type": "integer", + "description": "Service identifier." + }, + "name": { + "type": "string", + "description": "Service name." + }, + "price": { + "type": "integer", + "description": "Service price in cents." + } + } + } + }, + "attachments": { + "type": "array", + "description": "Array containing information on attachments.", + "items": { + "type": "string" + } + }, + "priceTags": { + "type": "array", + "description": "Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order.", + "items": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "Price tag identifier." + }, + "isPercentual": { + "type": "boolean", + "description": "Indicates whether price tag value is applied through a percentage." + }, + "name": { + "type": "string", + "description": "Price tag name." + }, + "rawValue": { + "type": "integer", + "description": "Price tag raw value." + }, + "value": { + "type": "integer", + "description": "Price tag value." + } + } + } + }, + "availability": { + "type": "string", + "description": "Availability" + }, + "measurementUnit": { + "type": "string", + "description": "Measurement unit" + }, + "unitMultiplier": { + "type": "integer", + "description": "Unit multiplier" + }, + "manufacturerCode": { + "type": "string", + "description": "Manufacturer code.", + "nullable": true + }, + "priceDefinition": { + "type": "object", + "description": "Price information for all units of a specific item.", + "properties": { + "calculatedSellingPrice": { + "type": "integer", + "description": "Item's calculated unitary selling price in cents." + }, + "total": { + "type": "integer", + "description": "Total value for all units of the item in cents." + }, + "sellingPrices": { + "type": "array", + "description": "Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total.", + "items": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "description": "Value in cents for that specific rounding." + }, + "quantity": { + "type": "integer", + "description": "Rounding quantity, meaning how many items are rounded to this value." + } + } + } + } + } + } + } + } + }, + "selectableGifts": { + "type": "array", + "description": "Array containing the data of the item selected as a gift." + }, + "totalizers": { + "type": "array", + "description": "Array containing an object for each totalizer for the purchase. Totalizers contain the sum of values for a specific part of the order (e.g. Total item value, Total shipping value)." + }, + "shippingData": { + "type": "object", + "description": "Shipping information pertinent to the order.", + "properties": { + "address": { + "type": "object", + "description": "Address information.", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + }, + "logisticsInfo": { + "type": "array", + "description": "Array with logistics information. Each object in this array corresponds to an object in the `items` array, based on the respective `itemIndex`.", + "items": { + "type": "object", + "properties": { + "itemIndex": { + "type": "integer", + "description": "Index corresponding to the position of the object in the `items` array." + }, + "selectedSla": { + "type": "string", + "description": "SLA selected by the customer." + }, + "selectedDeliveryChannel": { + "type": "string", + "description": "Delivery channel selected by the customer." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "slas": { + "type": "array", + "description": "Information on available SLAs.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "SLA ID." + }, + "deliveryChannel": { + "type": "string", + "description": "Delivery channel." + }, + "name": { + "type": "string", + "description": "SLA name." + }, + "deliveryIds": { + "type": "array", + "description": "Information on each delivery ID.", + "items": { + "type": "object", + "properties": { + "courierId": { + "type": "string", + "description": "Courier ID." + }, + "warehouseId": { + "type": "string", + "description": "Warehouse ID." + }, + "dockId": { + "type": "string", + "description": "Warehouse ID." + }, + "courierName": { + "type": "string", + "description": "Courier name." + }, + "quantity": { + "type": "integer", + "description": "Quantity." + } + } + } + }, + "shippingEstimate": { + "type": "string", + "description": "Shipping estimate. For instance, Three business days will be represented `3bd`." + }, + "shippingEstimateDate": { + "type": "string", + "description": "Shipping estimate date.", + "nullable": true + }, + "lockTTL": { + "type": "string", + "description": "Estimate date of delivery." + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "tax": { + "type": "integer", + "description": "Tax in cents." + }, + "pickupStoreInfo": { + "type": "object", + "description": "Information on the pickup store.", + "properties": { + "isPickupStore": { + "type": "boolean", + "description": "Indicates whether it is the pickup store." + }, + "friendlyName": { + "type": "string", + "description": "Friendly name.", + "nullable": true + }, + "address": { + "type": "object", + "description": "Address information.", + "nullable": true, + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + }, + "additionalInfo": { + "type": "string", + "description": "Additional information.", + "nullable": true + }, + "dockId": { + "type": "string", + "description": "Corresponding dock ID.", + "nullable": true + } + } + }, + "pickupPointId": { + "type": "string", + "description": "Pickup point ID.", + "nullable": true + }, + "pickupDistance": { + "type": "integer", + "description": "Pickup point distance." + }, + "polygonName": { + "type": "string", + "description": "Polygon name.", + "nullable": true + }, + "transitTime": { + "type": "string", + "description": "Transit time. For instance, \"three business days\" is represented `3bd`." + } + } + } + }, + "shipsTo": { + "type": "array", + "description": "List of countries that the item may be shipped to.", + "items": { + "type": "string", + "description": "Three letter country code." + } + }, + "itemId": { + "type": "string", + "description": "Item ID." + }, + "deliveryChannels": { + "type": "array", + "description": "List of available delivery channels.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Delivery channel ID." + } + } + } + } + } + } + }, + "selectedAddresses": { + "type": "array", + "description": "Array with information on the selected addresses for the order.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies." + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + }, + "availableAddresses": { + "type": "array", + "description": "Array with information on the available addresses for the order.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies." + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + } + } + }, + "clientProfileData": { + "type": "object", + "description": "Customer's profile information.", + "properties": { + "email": { + "type": "string", + "description": "Email address." + }, + "firstName": { + "type": "string", + "description": "First name." + }, + "lastName": { + "type": "string", + "description": "Last name." + }, + "documentType": { + "type": "string", + "description": "Type of the document informed by the customer." + }, + "document": { + "type": "string", + "description": "Document informed by the customer." + }, + "phone": { + "type": "string", + "description": "Phone number." + }, + "corporateName": { + "type": "string", + "description": "Company name, if the customer is a legal entity.", + "nullable": true + }, + "tradeName": { + "type": "string", + "description": "Trade name, if the customer is a legal entity.", + "nullable": true + }, + "corporateDocument": { + "type": "string", + "description": "Corporate document, if the customer is a legal entity.", + "nullable": true + }, + "stateInscription": { + "type": "string", + "description": "State inscription, if the customer is a legal entity.", + "nullable": true + }, + "corporatePhone": { + "type": "string", + "description": "Corporate phone number, if the customer is a legal entity.", + "nullable": true + }, + "isCorporate": { + "type": "boolean", + "description": "Indicates whether the customer is a legal entity." + }, + "profileCompleteOnLoading": { + "type": "boolean", + "description": "Indicates whether profile is complete on loading." + }, + "profileErrorOnLoading": { + "type": "boolean", + "description": "Indicates whether profile presents error on loading.", + "nullable": true + }, + "customerClass": { + "type": "string", + "description": "Customer class.", + "nullable": true + } + } + }, + "paymentData": { + "type": "object", + "description": "Information on the order's payment.", + "properties": { + "giftCards": { + "type": "array", + "description": "Gift card information, if it applies to the order.", + "items": { + "type": "object", + "properties": { + "redemptionCode": { + "type": "string", + "description": "Gift card redemption code." + }, + "value": { + "type": "integer", + "description": "Gift card value in cents." + }, + "balance": { + "type": "integer", + "description": "Gift card balance in cents." + }, + "name": { + "type": "string", + "description": "Gift card name." + }, + "id": { + "type": "string", + "description": "Gift card ID." + }, + "inUse": { + "type": "boolean", + "description": "Indicates whether gift card is in use." + }, + "isSpecialCard": { + "type": "boolean", + "description": "Indicates whether gift card is special." + } + } + } + }, + "transactions": { + "type": "array", + "description": "Information on each transaction pertinent to the order.", + "items": { + "type": "object", + "properties": { + "isActive": { + "type": "boolean", + "description": "Indicates whether transaction is active." + }, + "transactionId": { + "type": "string", + "description": "Transaction ID." + }, + "merchantName": { + "type": "string", + "description": "Merchant name." + }, + "payments": { + "type": "array", + "description": "Information on each payment.", + "items": { + "type": "object", + "properties": { + "accountId": { + "type": "string", + "description": "Account ID." + }, + "bin": { + "type": "string", + "description": "Bin." + }, + "installments": { + "type": "integer", + "description": "Number of installments." + }, + "paymentSystem": { + "type": "string", + "description": "Payment system." + }, + "referenceValue": { + "type": "integer", + "description": "Reference value for calculating interest rates, in case it applies. Displayed in cents." + }, + "value": { + "type": "integer", + "description": "Value including interest, in case it applies. Displayed in cents." + } + } + } + }, + "sharedTransaction": { + "type": "boolean", + "description": "Indicates whather transaction is shared." + } + } + } + } + } + }, + "marketingData": { + "type": "object", + "description": "Object containIng promotion data such as coupon tracking information and internal or external UTMs.", + "properties": { + "coupon": { + "type": "string", + "description": "Sending an existing coupon code in this field will return the corresponding discount in the purchase. Use the [cart simulation](https://developers.vtex.com/vtex-rest-api/reference/orderform#orderformsimulation) request to check which coupons might apply before placing the order.", + "default": "free-shipping" + }, + "utmSource": { + "type": "string", + "description": "UTM source.", + "default": "Facebook", + "nullable": true + }, + "utmMedium": { + "type": "string", + "description": "UTM medium.", + "default": "CPC", + "nullable": true + }, + "utmCampaign": { + "type": "string", + "description": "UTM campaign.", + "default": "Black friday", + "nullable": true + }, + "utmiPage": { + "type": "string", + "description": "utmi_page (internal utm).", + "default": "utmi_page-example", + "nullable": true + }, + "utmiPart": { + "type": "string", + "description": "utmi_part (internal utm).", + "default": "utmi_part-exmaple", + "nullable": true + }, + "utmiCampaign": { + "type": "string", + "description": "utmi_campaign (internal utm).", + "default": "utmi_campaign-exmaple", + "nullable": true + } + } + }, + "sellers": { + "type": "array", + "description": "Information on each seller.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Seller ID." + }, + "name": { + "type": "string", + "description": "Seller name." + }, + "logo": { + "type": "string", + "description": "Seller logo.", + "nullable": true + } + } + } + }, + "clientPreferencesData": { + "type": "object", + "description": "Object containing preferences from the client who placed the order.", + "properties": { + "locale": { + "type": "string", + "description": "Client's locale. Examples: `pt-BR` and `en-US`." + }, + "optinNewsLetter": { + "type": "boolean", + "description": "`true` if the client opted to receive newsletter from the store.", + "nullable": false + } + } + }, + "commercialConditionData": { + "type": "object", + "description": "Object containing commercial condition information.", + "nullable": true + }, + "storePreferencesData": { + "type": "object", + "description": "Object containing data from the store's configuration (stored in VTEX's License Manager)." + }, + "giftRegistryData": { + "type": "object", + "description": "Gift registry list information.", + "nullable": true + }, + "openTextField": { + "type": "string", + "description": "Optional field meant to hold additional information about the order. We recommend using this field for text, not data formats such as `JSON` even if escaped. For that purpose, see [Creating customizable fields](https://developers.vtex.com/vtex-rest-api/docs/creating-customizable-fields-in-the-cart-with-checkout-api-1)", + "default": "open-text-example", + "nullable": true + }, + "invoiceData": { + "type": "object", + "description": "Object containing information pertinent to the order's invoice.", + "nullable": true + }, + "customData": { + "type": "object", + "description": "Customer additional information.", + "nullable": true + }, + "itemMetadata": { + "type": "object", + "description": "Item metadata.", + "properties": { + "items": { + "type": "array", + "description": "List of objects containing metadata on each item in the order.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Item ID." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "name": { + "type": "string", + "description": "Product name." + }, + "skuName": { + "type": "string", + "description": "SKU name." + }, + "productId": { + "type": "string", + "description": "Product ID." + }, + "refId": { + "type": "string", + "description": "Ref ID." + }, + "ean": { + "type": "string", + "description": "European Article Number.", + "nullable": true + }, + "imageUrl": { + "type": "string", + "description": "Image URL." + }, + "detailUrl": { + "type": "string", + "description": "Detail URL." + } + } + } + } + } + }, + "hooksData": { + "type": "object", + "description": "Hooks information.", + "nullable": true + }, + "ratesAndBenefitsData": { + "type": "object", + "description": "Information on rates and benefits that apply to the order.", + "properties": { + "rateAndBenefitsIdentifiers": { + "type": "array", + "description": "List with rates and benefits identifiers.", + "items": { + "type": "string" + } + }, + "teaser": { + "type": "array", + "description": "List with rates and benefits teasers.", + "items": { + "type": "string" + } + } + } + }, + "subscriptionData": { + "type": "object", + "description": "Subscription information.", + "nullable": true + }, + "itemsOrdination": { + "type": "object", + "description": "Object containing information about the ordering of items within the orderForm.", + "properties": { + "criteria": { + "type": "string", + "description": "Criteria adopted to order the items in the list." + }, + "ascending": { + "type": "boolean", + "description": "Indicates whether the ordering is ascending." + } + } + } + } + }, + "examples": { + "response": { + "value": { + "orderFormId": "ede846222cd44046ba6c638442c3505a", + "salesChannel": "1", + "loggedIn": false, + "isCheckedIn": false, + "storeId": null, + "allowManualPrice": false, + "canEditData": true, + "userProfileId": "fb542e51-5488-4c34-8d17-ed8fcf597a94", + "profileProvider": "VTEX", + "availableAccounts": [], + "availableAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "666c2e830bd9474ab6f6cc53fb6dd2d2", + "isDisposable": true, + "postalCode": "70386000", + "city": "Brasília", + "state": "DF", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "userType": null, + "ignoreProfileData": false, + "value": 34390, + "messages": [], + "items": [ + { + "uniqueId": "9D6E447B3FF64CEDA33B17C01379C119", + "id": "2", + "productId": "2", + "productRefId": "", + "refId": "CBC30L", + "ean": null, + "name": "Chopp Brahma Claro 30L", + "skuName": "Chopp Brahma Claro 30L", + "modalType": null, + "parentItemIndex": null, + "parentAssemblyBinding": null, + "assemblies": [], + "priceValidUntil": "2022-07-13T18:30:46Z", + "tax": 0, + "price": 32890, + "listPrice": 49900, + "manualPrice": null, + "manualPriceAppliedBy": null, + "sellingPrice": 32890, + "rewardValue": 0, + "isGift": false, + "additionalInfo": { + "dimension": null, + "brandName": "Brahma", + "brandId": "2000000", + "offeringInfo": null, + "offeringType": null, + "offeringTypeId": null + }, + "preSaleDate": null, + "productCategoryIds": "/1/", + "productCategories": { + "1": "Bebidas" + }, + "quantity": 1, + "seller": "1", + "sellerChain": [ + "1" + ], + "imageUrl": "http://mystore.vteximg.com.br/arquivos/ids/155400-55-55/30l_v2.png?v=637303412106100000", + "detailUrl": "/chopp-brahma-claro-30l/p", + "components": [], + "bundleItems": [], + "attachments": [], + "attachmentOfferings": [], + "offerings": [], + "priceTags": [], + "availability": "available", + "measurementUnit": "un", + "unitMultiplier": 1, + "manufacturerCode": null, + "priceDefinition": { + "calculatedSellingPrice": 32890, + "total": 32890, + "sellingPrices": [ + { + "value": 32890, + "quantity": 1 + } + ] + } + } + ], + "selectableGifts": [], + "totalizers": [ + { + "id": "Items", + "name": "Total Items", + "value": 32890 + } + ], + "shippingData": { + "address": { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "70386000", + "city": "Brasília", + "state": "DF", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + }, + "logisticsInfo": [ + { + "itemIndex": 0, + "selectedSla": "Normal", + "selectedDeliveryChannel": "delivery", + "addressId": "teste", + "slas": [ + { + "id": "Normal", + "deliveryChannel": "delivery", + "name": "Normal", + "deliveryIds": [ + { + "courierId": "1", + "warehouseId": "1_1", + "dockId": "1", + "courierName": "Transportadora", + "quantity": 1, + "kitItemDetails": [] + } + ], + "shippingEstimate": "3bd", + "shippingEstimateDate": null, + "lockTTL": "10d", + "availableDeliveryWindows": [], + "deliveryWindow": null, + "price": 1500, + "listPrice": 1500, + "tax": 0, + "pickupStoreInfo": { + "isPickupStore": false, + "friendlyName": null, + "address": null, + "additionalInfo": null, + "dockId": null + }, + "pickupPointId": null, + "pickupDistance": 0, + "polygonName": null, + "transitTime": "3bd" + } + ], + "shipsTo": [ + "BRA", + "COL", + "USA" + ], + "itemId": "2", + "deliveryChannels": [ + { + "id": "delivery" + }, + { + "id": "pickup-in-point" + } + ] + } + ], + "selectedAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "availableAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "pickupPoints": [] + }, + "clientProfileData": { + "email": "clark.kent@example.com", + "firstName": "Clark", + "lastName": "Kent", + "document": "12345678900", + "documentType": "cpf", + "phone": "+5521998765432", + "corporateName": null, + "tradeName": null, + "corporateDocument": null, + "stateInscription": null, + "corporatePhone": null, + "isCorporate": false, + "profileCompleteOnLoading": false, + "profileErrorOnLoading": null, + "customerClass": null + }, + "paymentData": { + "giftCards": [], + "transactions": [ + { + "isActive": true, + "transactionId": "296D6D245C17437E823EB77E403FC88D", + "merchantName": "MYSTORE", + "payments": [], + "sharedTransaction": false + } + ] + }, + "marketingData": { + "utmSource": null, + "utmMedium": null, + "utmCampaign": null, + "utmipage": null, + "utmiPart": null, + "utmiCampaign": null, + "coupon": "freeshipping", + "marketingTags": [] + }, + "sellers": [ + { + "id": "1", + "name": "lojadobreno", + "logo": "" + } + ], + "clientPreferencesData": { + "locale": "pt-BR", + "optinNewsLetter": false + }, + "commercialConditionData": null, + "storePreferencesData": {}, + "giftRegistryData": null, + "openTextField": null, + "invoiceData": null, + "customData": null, + "itemMetadata": { + "items": [ + { + "id": "2", + "seller": "1", + "name": "Chopp Brahma Claro 30L", + "skuName": "Chopp Brahma Claro 30L", + "productId": "2", + "refId": "CBC30L", + "ean": null, + "imageUrl": "http://mystore.vteximg.com.br/arquivos/ids/155400-55-55/30l_v2.png?v=637303412106100000", + "detailUrl": "/chopp-brahma-claro-30l/p", + "assemblyOptions": [] + } + ] + }, + "hooksData": null, + "ratesAndBenefitsData": { + "rateAndBenefitsIdentifiers": [], + "teaser": [] + }, + "subscriptionData": null, + "itemsOrdination": { + "criteria": "NAME", + "ascending": true + } + } + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/pickup-points": { + "get": { + "tags": [ + "Fulfillment" + ], + "summary": "List pickup points by location", + "description": "Retrieves information on pickup points close to a given location determined by geocoordinates or postal code.\n\r\n\rThe pickup points returned are not necessarily all active ones. Make sure to validate the information consumed by integrations.", + "operationId": "ListPickupPpointsByLocation", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "geoCoordinates", + "in": "query", + "description": "Geocoordinates (first longitude, then latitude) around which to search for pickup points. If you use this type of search, do not pass postal and country codes.", + "required": false, + "style": "form", + "schema": { + "type": "array", + "default": [ + -47.924747467041016, + -15.832582473754883 + ], + "items": { + "type": "number", + "example": -47.924747467041016 + } + } + }, + { + "name": "postalCode", + "in": "query", + "description": "Postal code around which to search for pickup points. If you use this type of search, make sure to pass a `countryCode` and do not pass `geoCoordinates`.", + "required": false, + "style": "form", + "schema": { + "type": "string", + "default": "1234000" + } + }, + { + "name": "countryCode", + "in": "query", + "description": "Three letter country code refering to the `postalCode` field. Pass the country code only if you are searching pickup points by postal code.", + "required": false, + "style": "form", + "schema": { + "type": "string", + "default": "BRA" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "paging": { + "page": 1, + "pageSize": 30, + "total": 1, + "pages": 1 + }, + "items": [ + { + "distance": 0.84697865186165456, + "pickupPoint": { + "friendlyName": "physical-store-02", + "address": { + "addressType": "pickup", + "receiverName": null, + "addressId": "physical-store-02", + "isDisposable": true, + "postalCode": "23450-070", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Praia de Botafogo", + "number": "132", + "neighborhood": "Botafogo", + "complement": "", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + }, + "additionalInfo": null, + "id": "02_Physical", + "businessHours": [ + { + "DayOfWeek": 0, + "OpeningTime": "00:00:00", + "ClosingTime": "23:59:00" + }, + { + "DayOfWeek": 1, + "OpeningTime": "00:00:00", + "ClosingTime": "23:59:00" + }, + { + "DayOfWeek": 2, + "OpeningTime": "00:00:00", + "ClosingTime": "23:59:00" + }, + { + "DayOfWeek": 3, + "OpeningTime": "00:00:00", + "ClosingTime": "23:59:00" + }, + { + "DayOfWeek": 4, + "OpeningTime": "00:00:00", + "ClosingTime": "23:50:00" + }, + { + "DayOfWeek": 5, + "OpeningTime": "00:00:00", + "ClosingTime": "23:59:00" + }, + { + "DayOfWeek": 6, + "OpeningTime": "00:00:00", + "ClosingTime": "23:59:00" + } + ] + } + } + ] + }, + "schema": { + "type": "object", + "properties": { + "paging": { + "description": "Paging.", + "type": "object", + "properties": { + "page": { + "description": "Page number.", + "type": "integer" + }, + "pageSize": { + "description": "Page size.", + "type": "integer" + }, + "total": { + "description": "Total pages.", + "type": "integer" + }, + "pages": { + "description": "Pages.", + "type": "integer" + } + } + }, + "items": { + "description": "Items.", + "type": "array", + "items": { + "description": "Item information.", + "type": "object", + "properties": { + "distance": { + "description": "Distance.", + "type": "integer" + }, + "pickupPoint": { + "description": "Pickup point.", + "type": "object", + "properties": { + "friendlyName": { + "description": "Friendly name.", + "type": "string" + }, + "address": { + "description": "Address.", + "type": "object", + "properties": { + "addressType": { + "description": "Address type.", + "type": "string" + }, + "receiverName": { + "description": "Receiver name.", + "type": "string" + }, + "addressId": { + "description": "Address ID.", + "type": "string", + "nullable": true + }, + "isDisposable": { + "description": "Is disposable.", + "type": "boolean" + }, + "postalCode": { + "description": "Postal code.", + "type": "string" + }, + "city": { + "description": "City.", + "type": "string" + }, + "state": { + "description": "State.", + "type": "string" + }, + "country": { + "description": "Country.", + "type": "string" + }, + "street": { + "description": "Street.", + "type": "string" + }, + "number": { + "description": "Number.", + "type": "string" + }, + "neighborhood": { + "description": "Neighborhood.", + "type": "string" + }, + "complement": { + "description": "Complement to the shipping address, in case it applies.", + "type": "string", + "nullable": true + }, + "reference": { + "description": "Racao.", + "type": "string" + }, + "geoCoordinates": { + "description": "Geo coordinates.", + "type": "array", + "items": { + "description": "Geo coordinate.", + "type": "integer" + } + } + } + }, + "additionalInfo": { + "description": "Additional info.", + "type": "string" + }, + "id": { + "description": "ID.", + "type": "string" + }, + "businessHours": { + "description": "Array with business hours.", + "type": "array", + "items": { + "description": "Business hours.", + "type": "object", + "properties": { + "DayOfWeek": { + "description": "Day of week.", + "type": "integer" + }, + "OpeningTime": { + "description": "Opening time.", + "type": "string" + }, + "ClosingTime": { + "description": "Closing time.", + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + }, + "/api/checkout/pub/postal-code/{countryCode}/{postalCode}": { + "get": { + "tags": [ + "Fulfillment" + ], + "summary": "Get address by postal code", + "description": "Retrieves address information for a given postal code and country.\r\n\r\nThis request can be used to implement auto complete functionality when a customer needs to fill in an address.", + "operationId": "GetAddressByPostalCode", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "countryCode", + "in": "path", + "description": "Three letter country code refering to the `postalCode` field.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "BRA" + } + }, + { + "name": "postalCode", + "in": "path", + "description": "Postal code.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "1234000" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": { + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "My street", + "number": "", + "neighborhood": "My neighborhood", + "complement": "", + "reference": "", + "geoCoordinates": [] + } + } + } + } + } + } + }, + "/api/checkout/pub/orderForm/{orderFormId}/transaction": { + "post": { + "tags": [ + "Order placement" + ], + "summary": "Place order from an existing cart", + "description": "This endpoint places an order from an existing `orderForm` object, meaning an existing cart.\n\r\n\rAfter the creation of an order with this request, you have five minutes to send payment information and then request payment processing.", + "operationId": "PlaceOrderFromExistingOrderForm", + "security": [], + "parameters": [ + { + "name": "orderFormId", + "in": "path", + "description": "ID of the `orderForm` corresponding to the cart from which to place the order.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "ede846222cd44046ba6c638442c3505a" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "", + "required": [ + "referenceId", + "value", + "referenceValue", + "interestValue" + ], + "properties": { + "referenceId": { + "title": "referenceId", + "type": "string", + "description": "ID of the `orderForm` corresponding to the cart from which to place the order. This is the same as the `orderFormId` parameter.", + "default": "41a22925298a4ddca95318131a25b000" + }, + "savePersonalData": { + "title": "savePersonalData", + "type": "boolean", + "description": "`true` if the shopper's data provided during checkout should be saved for future reference.", + "default": false + }, + "optinNewsLetter": { + "title": "optinNewsLetter", + "type": "boolean", + "description": "True if the shopper opted to receive the newsletter.", + "default": false + }, + "value": { + "type": "integer", + "description": "Total value of the order without separating cents. For example, $24.99 is represented `2499`.", + "default": 6800 + }, + "referenceValue": { + "type": "integer", + "description": "Reference value of the order for calculating interest if that is the case. Can be equal to the total value and does not separate cents. For example, $24.99 is represented `2499`.", + "default": 6800 + }, + "interestValue": { + "type": "integer", + "description": "Interest rate to be used in case it applies.", + "default": 0 + } + } + } + } + } + }, + "responses": { + "200": { + "description": "", + "headers": {}, + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "orderForm": null, + "transactionData": { + "merchantTransactions": [ + { + "id": "STORE", + "transactionId": "62FEDE228E2144649CF67812C4E5ER79", + "merchantName": "STORE", + "payments": [ + { + "paymentSystem": "6", + "bin": null, + "accountId": null, + "value": 15650, + "referenceValue": 15650, + "giftCardRedemptionCode": null, + "giftCardProvider": null, + "giftCardId": null + } + ] + } + ], + "receiverUri": "https://store.vtexpayments.com.br/split/v976778amgh/payments", + "gatewayCallbackTemplatePath": "/checkout/gatewayCallback/v976778amgh/{messageCode}" + }, + "orders": [ + { + "orderId": "v976778amgh-01", + "orderGroup": "v976778amgh", + "state": "order-created", + "isCheckedIn": false, + "sellerOrderId": "00-v976778amgh-01", + "storeId": null, + "value": 15650, + "items": [ + { + "uniqueId": "0F93E9C4926A4CD97FDD4C2599BDF9DB", + "id": "2000016", + "productId": "2000002", + "refId": "35-Preto", + "ean": null, + "name": "Produto Seleção SKU - Lista 35 - Preto", + "skuName": "35 - Preto", + "modalType": null, + "priceValidUntil": "2018-02-16T23:42:44.5467295Z", + "tax": 0, + "price": 15000, + "listPrice": 15000, + "manualPrice": null, + "sellingPrice": 15000, + "rewardValue": 1, + "isGift": false, + "additionalInfo": { + "brandName": "Marca Um", + "brandId": "1", + "offeringInfo": null, + "offeringType": null, + "offeringTypeId": null + }, + "preSaleDate": null, + "productCategoryIds": "/12/28/", + "productCategories": { + "28": "Categoria 5-3", + "12": "Departamento 5" + }, + "defaultPicker": null, + "handlerSequence": 0, + "handling": false, + "quantity": 1, + "seller": "1", + "imageUrl": "http://store.vteximg.com.br/arquivos/ids/168463-55-55/imagem-modo-lista.png", + "detailUrl": "/produto-selecao-sku-lista/p", + "components": [], + "bundleItems": [], + "attachments": [], + "itemAttachment": { + "name": null, + "content": {} + }, + "attachmentOfferings": [], + "offerings": [], + "priceTags": [], + "availability": "available", + "measurementUnit": "un", + "unitMultiplier": 1.0 + } + ], + "sellers": [ + { + "id": "1", + "name": "Store", + "logo": "" + } + ], + "totals": [ + { + "id": "Items", + "name": "Total dos Itens", + "value": 15000 + }, + { + "id": "Discounts", + "name": "Total dos Descontos", + "value": 0 + }, + { + "id": "Shipping", + "name": "Total do Frete", + "value": 650 + }, + { + "id": "Tax", + "name": "Total da Taxa", + "value": 0 + } + ], + "clientProfileData": { + "attachmentId": "clientProfileData", + "email": "marcelo@vtex.com.br", + "firstName": "Marcelo", + "lastName": "Couto", + "document": "71279846675", + "documentType": "cpf", + "phone": "1234567890", + "corporateName": null, + "tradeName": null, + "corporateDocument": null, + "stateInscription": null, + "corporatePhone": null, + "isCorporate": false, + "profileCompleteOnLoading": null, + "profileErrorOnLoading": null + }, + "ratesAndBenefitsData": { + "attachmentId": "ratesAndBenefitsData", + "rateAndBenefitsIdentifiers": [], + "teaser": [] + }, + "shippingData": { + "attachmentId": "shippingData", + "address": { + "addressType": "residential", + "receiverName": "Marcelo", + "addressId": "49ad09e5fba8434a8ff1e0faa4b60ceb", + "postalCode": "28050987", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [] + }, + "logisticsInfo": [ + { + "itemIndex": 0, + "selectedSla": "Normal", + "slas": [ + { + "id": "n2_2", + "name": "n2_2", + "deliveryIds": [ + { + "courierId": "1de4790", + "warehouseId": "1_1", + "dockId": "N2", + "courierName": "N2_2", + "quantity": 1 + } + ], + "shippingEstimate": "6bd", + "shippingEstimateDate": null, + "lockTTL": "7d", + "availableDeliveryWindows": [ + { + "startDateUtc": "2017-03-27T00:00:00+00:00", + "endDateUtc": "2017-03-27T00:00:00+00:00", + "price": 0, + "lisPrice": 0, + "tax": 0 + }, + { + "startDateUtc": "2017-03-28T00:00:00+00:00", + "endDateUtc": "2017-03-28T00:00:00+00:00", + "price": 0, + "lisPrice": 0, + "tax": 0 + } + ], + "deliveryWindow": null, + "price": 650, + "listPrice": 650, + "tax": 0, + "pickupStoreInfo": { + "isPickupStore": false, + "friendlyName": null, + "address": null, + "additionalInfo": null, + "dockId": null + } + }, + { + "id": "Normal", + "name": "Normal", + "deliveryIds": [ + { + "courierId": "2p1t", + "warehouseId": "1_1", + "dockId": "N2", + "courierName": "Post_Test_2", + "quantity": 1 + } + ], + "shippingEstimate": "6bd", + "shippingEstimateDate": null, + "lockTTL": "7d", + "availableDeliveryWindows": [], + "deliveryWindow": null, + "price": 650, + "listPrice": 650, + "tax": 0, + "pickupStoreInfo": { + "isPickupStore": false, + "friendlyName": null, + "address": null, + "additionalInfo": null, + "dockId": null + } + }, + { + "id": "P_T", + "name": "P_T", + "deliveryIds": [ + { + "courierId": "1p1t", + "warehouseId": "1_1", + "dockId": "N2", + "courierName": "Post_Teste", + "quantity": 1 + } + ], + "shippingEstimate": "6bd", + "shippingEstimateDate": null, + "lockTTL": "7d", + "availableDeliveryWindows": [], + "deliveryWindow": null, + "price": 1462, + "listPrice": 1462, + "tax": 0, + "pickupStoreInfo": { + "isPickupStore": false, + "friendlyName": null, + "address": null, + "additionalInfo": null, + "dockId": null + } + }, + { + "id": "Econômica", + "name": "Econômica", + "deliveryIds": [ + { + "courierId": "2B9C2C7D-7A76-485D-94EF-701D041E448C", + "warehouseId": "1_1", + "dockId": "1_1_1", + "courierName": "Leve 30kg (De: 10000-000 Até: 25999-999) ", + "quantity": 1 + } + ], + "shippingEstimate": "20bd", + "shippingEstimateDate": null, + "lockTTL": "7d", + "availableDeliveryWindows": [], + "deliveryWindow": null, + "price": 2265, + "listPrice": 2265, + "tax": 0, + "pickupStoreInfo": { + "isPickupStore": false, + "friendlyName": null, + "address": null, + "additionalInfo": null, + "dockId": null + } + } + ], + "shipsTo": [ + "BRA" + ], + "itemId": "2000016" + } + ], + "availableAddresses": [ + { + "addressType": "residential", + "receiverName": "Marcelo", + "addressId": "49ad09e5fba8434a8ff1e0faa4b60ceb", + "postalCode": "28050642", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [] + } + ] + }, + "paymentData": { + "attachmentId": "paymentData", + "transactionId": "62FEDE228E2144649CF67812C4E5DD87", + "payments": [], + "giftCards": [], + "transactions": [ + { + "isActive": true, + "transactionId": "62FEDE228E2144649CF67812C4E5DD87", + "merchantName": "STORE", + "payments": [] + } + ], + "merchantName": "STORE" + }, + "clientPreferencesData": { + "attachmentId": "clientPreferencesData", + "locale": "pt-BR", + "optinNewsLetter": true + }, + "giftRegistryData": null, + "marketingData": null, + "storePreferencesData": { + "countryCode": "BRA", + "checkToSavePersonDataByDefault": false, + "templateOptions": { + "toggleCorporate": false + }, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "openTextField": { + "attachmentId": "openTextField", + "value": null + }, + "changeData": null, + "salesChannel": "1", + "followUpEmail": "f1e7309d88dd4633825ce183d52a50a6@ct.vtex.com.br", + "creationDate": "2017-02-16T23:42:43.9605088Z", + "lastChange": "2017-02-16T23:42:47.62285Z", + "timeZoneCreationDate": "2017-02-16T21:42:43.9605088", + "timeZoneLastChange": "2017-02-16T21:42:47.62285", + "isCompleted": false, + "hostName": "ambienteqa", + "merchantName": null, + "userType": "", + "roundingError": 0 + } + ] + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/orders": { + "put": { + "tags": [ + "Order placement" + ], + "summary": "Place order", + "description": "Places order without having any prior cart information. This means all information on items, client, payment and shipping must be sent in the body.\r\n\r\n>⚠️ The authentication of this endpoint is required if you are creating an order with an item that has an attachment that creates a Subscription. For more information, access [Subscriptions API](https://developers.vtex.com/docs/api-reference/subscriptions-api-v3).", + "operationId": "PlaceOrder", + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "sc", + "in": "query", + "description": "Trade Policy (Sales Channel) identification. This query can be used to create an order for a specific sales channel.", + "required": false, + "style": "form", + "schema": { + "type": "integer", + "example": 1 + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "items", + "clientProfileData", + "shippingData", + "paymentData" + ], + "properties": { + "items": { + "type": "array", + "description": "Array of objects containing information on each of the order's items.", + "items": { + "type": "object", + "required": [ + "id", + "quantity", + "seller" + ], + "properties": { + "id": { + "type": "string", + "description": "The SKU ID.", + "example": "123" + }, + "quantity": { + "type": "integer", + "format": "int32", + "description": "The quantity of items of this specific SKU in the cart to be simulated.", + "example": 1 + }, + "seller": { + "type": "string", + "description": "The ID of the seller responsible for this SKU. This ID can be found in your VTEX Admin.", + "example": "1" + }, + "commission": { + "type": "integer", + "description": "Comission.", + "example": 10 + }, + "freightCommission": { + "type": "integer", + "description": "Freight comission", + "example": 10 + }, + "price": { + "type": "integer", + "description": "Item price within the context of the order without separating cents. For example, $24.99 is represented `2499`.", + "example": 2499 + }, + "bundleItems": { + "type": "array", + "description": "Information on services sold along with the SKU. Example: a gift package.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Service type.", + "example": "type-example" + }, + "id": { + "type": "string", + "description": "Service identifier.", + "example": "id-example" + }, + "name": { + "type": "string", + "description": "Service name.", + "example": "name-example" + }, + "price": { + "type": "integer", + "description": "Service price. The last two digits are the cents.", + "example": 199 + } + } + } + }, + "itemAttachment": { + "type": "object", + "description": "Item attachment.", + "properties": { + "name": { + "type": "string", + "description": "Attachment name.", + "example": "name-example" + }, + "content": { + "type": "string", + "description": "Content referring to the customization requested by the customer.", + "example": "content-example" + } + } + }, + "attachments": { + "type": "array", + "description": "Array containing information on attachments.", + "items": { + "type": "string" + } + }, + "priceTags": { + "type": "array", + "description": "Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order.", + "items": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "Price tag identifier.", + "default": "1234abc-5678b-1234c" + }, + "isPercentual": { + "type": "boolean", + "description": "`true` if price tag value is applied through a percentage.", + "default": false + }, + "name": { + "type": "string", + "description": "Price tag name.", + "default": "discount@name-1234abc-5678b-1234c" + }, + "rawValue": { + "type": "integer", + "description": "Price tag raw value.", + "default": -12 + }, + "value": { + "type": "integer", + "description": "Price tag value.", + "default": -1200 + } + } + } + }, + "measurementUnit": { + "type": "string", + "description": "SKU measurement unit.", + "default": "g" + }, + "unitMultiplier": { + "type": "integer", + "description": "SKU unit multiplier.", + "default": 1 + }, + "isGift": { + "type": "boolean", + "description": "Indicates whether the order is a gift.", + "default": false + } + }, + "example": { + "id": "123456789", + "quantity": 1, + "seller": "1" + } + } + }, + "clientProfileData": { + "type": "object", + "description": "Customer's profile information. The `email` functions as a customer's ID.\n\r\n\rFor customers already in your database, sending only the email address is enough to register the order to the shopper’s existing account.\n\r\n\r> If the shopper exists in you database but is not logged in, sending other profile information along with the email will cause the platform to fail placing the order. This happens because this action is interpreted as an attempt to edit profile data, which is not possible unless the customer is logged in to the store.", + "required": [ + "email" + ], + "properties": { + "email": { + "type": "string", + "description": "Customer's email address.", + "default": "customer@examplemail.com" + }, + "firstName": { + "type": "string", + "description": "Customer's first name.", + "default": "first-name" + }, + "lastName": { + "type": "string", + "description": "Customer's last name.", + "default": "last-name" + }, + "documentType": { + "type": "string", + "description": "Type of the document informed by the customer.", + "default": "cpf" + }, + "document": { + "type": "string", + "description": "Document number informed by the customer.", + "default": "123456789" + }, + "phone": { + "type": "string", + "description": "Customer's phone number.", + "default": "+55110988887777" + }, + "corporateName": { + "type": "string", + "description": "Company name, if the customer is a legal entity.", + "default": "company-name" + }, + "tradeName": { + "type": "string", + "description": "Trade name, if the customer is a legal entity.", + "default": "trade-name" + }, + "corporateDocument": { + "type": "string", + "description": "Corporate document, if the customer is a legal entity.", + "default": "12345678000100" + }, + "stateInscription": { + "type": "string", + "description": "State inscription, if the customer is a legal entity.", + "default": "12345678" + }, + "corporatePhone": { + "type": "string", + "description": "Corporate phone number, if the customer is a legal entity.", + "default": "+551100988887777" + }, + "isCorporate": { + "type": "boolean", + "description": "`true` if the customer is a legal entity.", + "default": false + } + } + }, + "shippingData": { + "type": "object", + "description": "Shipping information.", + "properties": { + "address": { + "type": "object", + "description": "Shipping address.\n\r\n\rFor customers already in your data base, it is enough to send this object only with an `addressId`, which you may obtain from a [Cart simulation request](https://developers.vtex.com/vtex-rest-api/reference/shopping-cart#cartsimulation), for example.", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`, among others.", + "example": "residential" + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order.", + "default": "receiver-name" + }, + "addressId": { + "type": "string", + "description": "Address ID.", + "default": "Home" + }, + "postalCode": { + "type": "string", + "description": "Postal Code.", + "default": "12345-000" + }, + "city": { + "type": "string", + "description": "City of the shipping address.", + "default": "Rio de Janeiro" + }, + "state": { + "type": "string", + "description": "State of the shipping address.", + "default": "Rio de Janeiro" + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address.", + "default": "BRA" + }, + "street": { + "type": "string", + "description": "Street of the shipping address.", + "default": "Praia de Botafogo" + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address.", + "default": "300" + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address.", + "default": "Botafogo" + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address in case it applies.", + "default": "3rd floor" + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "default": "Grey building" + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "default": [ + -47.924747467041016, + -15.832582473754883 + ], + "items": { + "type": "number", + "example": -47.924747467041016 + } + } + } + }, + "logisticsInfo": { + "type": "array", + "description": "Array of objects containing logistics information of each item.", + "items": { + "type": "object", + "required": [ + "itemIndex", + "selectedSla", + "price" + ], + "properties": { + "itemIndex": { + "type": "integer", + "description": "Index of the item in the `items` array, starting from 0.", + "example": 0 + }, + "selectedSla": { + "type": "string", + "description": "Selected shipping option", + "example": "Express" + }, + "selectedDeliveryChannel": { + "type": "string", + "description": "String with the selected delivery channel. This field supports the following values: \n\n- `delivery`, \n\n- `pickup-in-point`.", + "example": "delivery" + }, + "lockTTL": { + "type": "string", + "description": "Logistics reservation waiting time.", + "example": "8d" + }, + "shippingEstimate": { + "type": "string", + "description": "Estimated time until delivery for the item.", + "example": "7d" + }, + "price": { + "type": "integer", + "description": "Shipping price for the item. Does not account for the whole order's shipping price.", + "example": 1099 + }, + "deliveryWindow": { + "type": "object", + "description": "In case of scheduled delivery, this object will contain information on the delivery window selected by the shopper.", + "properties": { + "startDateUtc": { + "type": "string", + "description": "Delivery window starting day and time in UTC.", + "default": "2021-07-13T00:00:00+00:00" + }, + "endDateUtc": { + "type": "string", + "description": "Delivery window ending day and time in UTC.", + "default": "2021-07-13T23:59:59+00:00" + }, + "price": { + "type": "integer", + "description": "Delivery window price.", + "default": 0 + }, + "lisPrice": { + "type": "integer", + "description": "Delivery window list price.", + "default": 0 + }, + "tax": { + "type": "integer", + "description": "Delivery window tax.", + "default": 0 + } + } + } + } + } + }, + "updateStatus": { + "type": "string", + "description": "Indicate whether this object's information is up to date according to the order's items. An order can not be placed if `\"outdated\"`", + "default": "updated" + } + } + }, + "paymentData": { + "type": "object", + "required": [ + "payments" + ], + "description": "Payment infomation.", + "properties": { + "giftCards": { + "type": "array", + "description": "Gift card information, if it applies to the order.", + "items": { + "type": "object", + "required": [ + "redemptionCode", + "value" + ], + "properties": { + "redemptionCode": { + "type": "string", + "description": "Gift card redemption code.", + "example": "HYUO-TEZZ-QFFT-HTFR" + }, + "value": { + "type": "integer", + "description": "Gift card value.", + "example": 500 + }, + "balance": { + "type": "integer", + "description": "Gift card balance.", + "example": 500 + }, + "name": { + "type": "string", + "description": "Gift card name.", + "example": "name-example" + }, + "id": { + "type": "string", + "description": "Gift card ID.", + "example": "1390324156495k195pmab4rall3di" + }, + "inUse": { + "type": "boolean", + "description": "Indicates whether gift card is in use.", + "example": true + }, + "isSpecialCard": { + "type": "boolean", + "description": "Indicates whether gift card is special.", + "example": false + } + } + } + }, + "giftCardMessages": { + "type": "array", + "description": "Array of gift card messages.", + "items": { + "default": "message-example" + } + }, + "paymentSystems": { + "type": "array", + "description": "Information on payment systems.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "Payment system ID.", + "example": 2 + }, + "name": { + "type": "string", + "description": "Payment system name.", + "example": "Visa" + }, + "groupName": { + "type": "string", + "description": "Payment group name.", + "example": "creditCardPaymentGroup" + }, + "validator": { + "type": "object", + "description": "Payment system validator.", + "properties": { + "regex": { + "type": "string", + "description": "", + "example": "^4" + }, + "mask": { + "type": "string", + "description": "Validator mask.", + "example": "9999 9999 9999 9999" + }, + "cardCodeRegex": { + "type": "string", + "description": "Card code regular expression.", + "example": "[^0-9]" + }, + "cardCodeMask": { + "type": "string", + "description": "Card code mask.", + "example": "999" + }, + "weights": { + "type": "array", + "description": "Weights.", + "items": { + "type": "integer" + }, + "default": [ + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2, + 1, + 2 + ] + } + } + }, + "stringId": { + "type": "string", + "description": "String ID.", + "default": "12345abc" + }, + "template": { + "type": "string", + "description": "Template.", + "default": "creditCardPaymentGroup-template" + }, + "requiresDocument": { + "type": "boolean", + "description": "Indicates whether a document is required.", + "default": false + }, + "selected": { + "type": "boolean", + "description": "Indicates whether this payment system has been selected.", + "default": false + }, + "isCustom": { + "type": "boolean", + "description": "Indicates whether it is custom.", + "default": false + }, + "description": { + "type": "string", + "description": "Description.", + "default": "description-example" + } + } + } + }, + "payments": { + "type": "array", + "description": "Payment information.", + "items": { + "type": "object", + "required": [ + "paymentSystem", + "referenceValue", + "value", + "installments" + ], + "description": "", + "properties": { + "accountId": { + "type": "string", + "description": "Account ID.", + "default": "accountID-example" + }, + "bin": { + "type": "string", + "description": "Payment bin.", + "default": "2" + }, + "installments": { + "type": "integer", + "description": "Number of installments.", + "default": 2 + }, + "paymentSystem": { + "type": "string", + "description": "Payment system.", + "default": "12" + }, + "referenceValue": { + "type": "integer", + "description": "Reference value for calculating interest rates, in case it applies.", + "default": 16175 + }, + "value": { + "type": "integer", + "description": "Value including interest, in case it applies.", + "default": 16175 + } + } + } + }, + "updateStatus": { + "type": "string", + "description": "Indicates whether this object's information is up to date according to the order's items. An order can not be placed if `\"outdated\"`", + "default": "updated" + } + } + }, + "marketingData": { + "type": "object", + "properties": { + "coupon": { + "type": "string", + "description": "Sending an existing coupon code in this field will return the corresponding discount in the purchase. Use the [cart simulation](https://developers.vtex.com/vtex-rest-api/reference/orderform#orderformsimulation) request to check which coupons might apply before placing the order.", + "default": "free-shipping" + }, + "utmSource": { + "type": "string", + "description": "UTM source.", + "default": "Facebook" + }, + "utmMedium": { + "type": "string", + "description": "UTM medium.", + "default": "CPC" + }, + "utmCampaign": { + "type": "string", + "description": "UTM campaign", + "default": "Black friday" + }, + "utmiPage": { + "type": "string", + "description": "utmi_page (internal utm)", + "default": "utmi_page-example" + }, + "utmiPart": { + "type": "string", + "description": "utmi_part (internal utm)", + "default": "utmi_part-exmaple" + }, + "utmiCampaign": { + "type": "string", + "description": "utmi_campaign (internal utm)", + "default": "utmi_campaign-exmaple" + } + } + }, + "openTextField": { + "type": "string", + "description": "Optional field meant to hold additional information about the order. We recommend using this field for text, not data formats such as `JSON` even if escaped. For that purpose, see [Creating customizable fields](https://developers.vtex.com/vtex-rest-api/docs/creating-customizable-fields-in-the-cart-with-checkout-api-1)", + "default": "open-text-example" + }, + "salesAssociateData": { + "type": "object", + "description": "Sales Associate information.", + "properties": { + "salesAssociateId": { + "type": "string", + "description": "Sales Associate (Seller) identification code. All information should be registered by the merchant. Maximum of 100 characters.", + "default": "seller123" + } + } + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "orderForm": { + "type": "string", + "description": "This is `null` since this request does not depend on any previously existing orderForm information in the platform.", + "nullable": true + }, + "transactionData": { + "type": "object", + "description": "Information on each transaction pertinent to the order placed.", + "properties": { + "merchantTransactions": { + "type": "array", + "description": "Information on each merchant transaction.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the seller." + }, + "transactionId": { + "type": "string", + "description": "ID of the transaction in the platform." + }, + "merchantName": { + "type": "string", + "description": "Name of the merchant responsible for the sale." + }, + "payments": { + "type": "array", + "description": "Information on each payment pertinent to the transaction.", + "items": { + "type": "object", + "properties": { + "paymentSystem": { + "type": "string", + "description": "Payment system." + }, + "bin": { + "type": "string", + "description": "Payment bin.", + "nullable": true + }, + "accountId": { + "type": "string", + "description": "Account ID.", + "nullable": true + }, + "tokenId": { + "type": "string", + "description": "Token ID.", + "nullable": true + }, + "value": { + "type": "integer", + "description": "Total value to be paid in this payment." + }, + "referenceValue": { + "type": "integer", + "description": "Reference value over which interests may be applied." + }, + "giftCardRedemptionCode": { + "type": "string", + "description": "Gift card redemption code.", + "nullable": true + }, + "giftCardProvider": { + "type": "string", + "description": "Gift card provider.", + "nullable": true + }, + "giftCardId": { + "type": "string", + "description": "Gift card ID.", + "nullable": true + } + } + } + } + } + } + }, + "receiverUri": { + "type": "string", + "description": "Receiver URI." + }, + "gatewayCallbackTemplatePath": { + "type": "string", + "description": "Template of the gateway callback path, which may later be used to send information about the transaction." + } + } + }, + "orders": { + "type": "array", + "description": "Information on each of the orders created.", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string", + "description": "ID of the order in the Order Management System (OMS)." + }, + "orderGroup": { + "type": "string", + "description": "Order group. Orders that involve different sellers are split into different orders of a same order group." + }, + "state": { + "type": "string", + "description": "State.", + "nullable": true + }, + "isCheckedIn": { + "type": "boolean", + "description": "Indicates whether order is checked in.", + "default": false + }, + "sellerOrderId": { + "type": "string", + "description": "ID of the order in the seller.", + "nullable": true + }, + "storeId": { + "type": "string", + "description": "Store ID.", + "nullable": true + }, + "checkedInPickupPointId": { + "type": "string", + "description": "Checked in pickuppoint.", + "nullable": true + }, + "value": { + "type": "integer", + "description": "Value of the order." + }, + "items": { + "type": "array", + "description": "Information on each item in the order.", + "items": { + "type": "object", + "properties": { + "uniqueId": { + "type": "string", + "description": "Unique ID." + }, + "id": { + "type": "string", + "description": "ID of the item." + }, + "productId": { + "type": "string", + "description": "Product ID." + }, + "productRefId": { + "type": "string", + "description": "Product Ref ID." + }, + "refId": { + "type": "string", + "description": "Ref ID." + }, + "ean": { + "type": "string", + "description": "European Article Number.", + "nullable": true + }, + "name": { + "type": "string", + "description": "Product name." + }, + "skuName": { + "type": "string", + "description": "SKU name." + }, + "modalType": { + "type": "string", + "description": "Modal type.", + "nullable": true + }, + "parentItemIndex": { + "type": "integer", + "description": "Parent item index.", + "nullable": true + }, + "parentAssemblyBinding": { + "type": "string", + "description": "Parent assembly binding.", + "nullable": true + }, + "priceValidUntil": { + "type": "string", + "description": "Price expiration date and time." + }, + "tax": { + "type": "integer", + "description": "Tax value in cents." + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "manualPrice": { + "type": "integer", + "description": "Manual price in cents.", + "nullable": true + }, + "manualPriceAppliedBy": { + "type": "string", + "description": "User that applied the manual price, if that is the case.", + "nullable": true + }, + "sellingPrice": { + "type": "integer", + "description": "Selling price in cents. Note that this field may be subject to rounding discrepancies. We recommend retrieving data from the `priceDefinition` data structure instead." + }, + "rewardValue": { + "type": "integer", + "description": "Reward value in cents." + }, + "isGift": { + "type": "boolean", + "description": "Indicates whether item is a gift." + }, + "additionalInfo": { + "type": "object", + "description": "Additional information.", + "properties": { + "dimension": { + "type": "string", + "description": "Dimension.", + "nullable": true + }, + "brandName": { + "type": "string", + "description": "Brand name." + }, + "brandId": { + "type": "string", + "description": "Brand ID." + }, + "offeringInfo": { + "type": "string", + "description": "Offering information.", + "nullable": true + }, + "offeringType": { + "type": "string", + "description": "Offering type.", + "nullable": true + }, + "offeringTypeId": { + "type": "string", + "description": "Offering type ID.", + "nullable": true + } + } + }, + "preSaleDate": { + "type": "string", + "description": "Presale date.", + "nullable": true + }, + "productCategoryIds": { + "type": "string", + "description": "Product category IDs." + }, + "productCategories": { + "type": "object", + "description": "Object, where each field is an ID from `productCategoryIds`.", + "properties": { + "{ID}": { + "type": "string", + "description": "Product category corresponding to the ID in the field key." + } + } + }, + "quantity": { + "type": "integer", + "description": "Quantity." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "sellerChain": { + "type": "array", + "description": "Sellers involved in the chain. The list should contain only one seller, unless it is a [Multilevel Omnichannel Inventory](https://help.vtex.com/pt/tutorial/multilevel-omnichannel-inventory--7M1xyCZWUyCB7PcjNtOyw4) order.", + "items": { + "type": "string", + "description": "Seller." + } + }, + "imageUrl": { + "type": "string", + "description": "Image URL." + }, + "detailUrl": { + "type": "string", + "description": "Detail URL." + }, + "bundleItems": { + "type": "array", + "description": "Information on services sold along with the SKU. Example: a gift package.", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "Service type." + }, + "id": { + "type": "integer", + "description": "Service identifier." + }, + "name": { + "type": "string", + "description": "Service name." + }, + "price": { + "type": "integer", + "description": "Service price in cents." + } + } + } + }, + "attachments": { + "type": "array", + "description": "Array containing information on attachments.", + "items": { + "type": "string" + } + }, + "priceTags": { + "type": "array", + "description": "Array of price tags, each of which, modifies the price in some way, like discounts or rates that apply to the item in the context of the order.", + "items": { + "type": "object", + "properties": { + "identifier": { + "type": "string", + "description": "Price tag identifier." + }, + "isPercentual": { + "type": "boolean", + "description": "Indicates whether price tag value is applied through a percentage." + }, + "name": { + "type": "string", + "description": "Price tag name." + }, + "rawValue": { + "type": "integer", + "description": "Price tag raw value." + }, + "value": { + "type": "integer", + "description": "Price tag value." + } + } + } + }, + "availability": { + "type": "string", + "description": "Availability" + }, + "measurementUnit": { + "type": "string", + "description": "Measurement unit" + }, + "unitMultiplier": { + "type": "integer", + "description": "Unit multiplier" + }, + "manufacturerCode": { + "type": "string", + "description": "Manufacturer code.", + "nullable": true + }, + "priceDefinition": { + "type": "object", + "description": "Price information for all units of a specific item.", + "properties": { + "calculatedSellingPrice": { + "type": "integer", + "description": "Item's calculated unitary selling price in cents." + }, + "total": { + "type": "integer", + "description": "Total value for all units of the item in cents." + }, + "sellingPrices": { + "type": "array", + "description": "Array of objects, each containing value (in cents) and quantity for the different rounding instances that can be combined to form the correctly rounded total.", + "items": { + "type": "object", + "properties": { + "value": { + "type": "integer", + "description": "Value in cents for that specific rounding." + }, + "quantity": { + "type": "integer", + "description": "Rounding quantity, meaning how many items are rounded to this value." + } + } + } + } + } + } + } + } + }, + "sellers": { + "type": "array", + "description": "Information on each seller.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Seller ID." + }, + "name": { + "type": "string", + "description": "Seller name." + }, + "logo": { + "type": "string", + "description": "Seller logo.", + "nullable": true + } + } + } + }, + "totals": { + "type": "array", + "description": "Information on order totals.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Total ID." + }, + "name": { + "type": "string", + "description": "Total name." + }, + "value": { + "type": "integer", + "description": "Total value." + } + } + } + }, + "clientProfileData": { + "type": "object", + "description": "Customer's profile information.", + "properties": { + "email": { + "type": "string", + "description": "Email address." + }, + "firstName": { + "type": "string", + "description": "First name." + }, + "lastName": { + "type": "string", + "description": "Last name." + }, + "documentType": { + "type": "string", + "description": "Type of the document informed by the customer." + }, + "document": { + "type": "string", + "description": "Document informed by the customer." + }, + "phone": { + "type": "string", + "description": "Phone number." + }, + "corporateName": { + "type": "string", + "description": "Company name, if the customer is a legal entity.", + "nullable": true + }, + "tradeName": { + "type": "string", + "description": "Trade name, if the customer is a legal entity.", + "nullable": true + }, + "corporateDocument": { + "type": "string", + "description": "Corporate document, if the customer is a legal entity.", + "nullable": true + }, + "stateInscription": { + "type": "string", + "description": "State inscription, if the customer is a legal entity.", + "nullable": true + }, + "corporatePhone": { + "type": "string", + "description": "Corporate phone number, if the customer is a legal entity.", + "nullable": true + }, + "isCorporate": { + "type": "boolean", + "description": "Indicates whether the customer is a legal entity." + }, + "profileCompleteOnLoading": { + "type": "boolean", + "description": "Indicates whether profile is complete on loading." + }, + "profileErrorOnLoading": { + "type": "boolean", + "description": "Indicates whether profile presents error on loading.", + "nullable": true + }, + "customerClass": { + "type": "string", + "description": "Customer class.", + "nullable": true + } + } + }, + "ratesAndBenefitsData": { + "type": "object", + "description": "Information on rates and benefits that apply to the order.", + "properties": { + "rateAndBenefitsIdentifiers": { + "type": "array", + "description": "List with rates and benefits identifiers.", + "items": { + "type": "string" + } + }, + "teaser": { + "type": "array", + "description": "List with rates and benefits teasers.", + "items": { + "type": "string" + } + } + } + }, + "shippingData": { + "type": "object", + "description": "Shipping information pertinent to the order.", + "properties": { + "address": { + "type": "object", + "description": "Address information.", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + }, + "logisticsInfo": { + "type": "array", + "description": "Array with logistics information. Each object in this array corresponds to an object in the `items` array, based on the respective `itemIndex`.", + "items": { + "type": "object", + "properties": { + "itemIndex": { + "type": "integer", + "description": "Index corresponding to the position of the object in the `items` array." + }, + "selectedSla": { + "type": "string", + "description": "SLA selected by the customer." + }, + "selectedDeliveryChannel": { + "type": "string", + "description": "Delivery channel selected by the customer. For example, `\"delivery\"` or `\"pickup-in-point\"`." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "slas": { + "type": "array", + "description": "Information on available SLAs.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "SLA ID." + }, + "deliveryChannel": { + "type": "string", + "description": "Delivery channel." + }, + "name": { + "type": "string", + "description": "SLA name." + }, + "deliveryIds": { + "type": "array", + "description": "Information on each delivery ID.", + "items": { + "type": "object", + "properties": { + "courierId": { + "type": "string", + "description": "Courier ID." + }, + "warehouseId": { + "type": "string", + "description": "Warehouse ID." + }, + "dockId": { + "type": "string", + "description": "Warehouse ID." + }, + "courierName": { + "type": "string", + "description": "Courier name." + }, + "quantity": { + "type": "integer", + "description": "Quantity." + } + } + } + }, + "shippingEstimate": { + "type": "string", + "description": "Shipping estimate. For instance, Three business days will be represented `3bd`." + }, + "shippingEstimateDate": { + "type": "string", + "description": "Shipping estimate date.", + "nullable": true + }, + "lockTTL": { + "type": "string", + "description": "Estimate date of delivery." + }, + "price": { + "type": "integer", + "description": "Price in cents." + }, + "listPrice": { + "type": "integer", + "description": "List price in cents." + }, + "tax": { + "type": "integer", + "description": "Tax in cents." + }, + "pickupStoreInfo": { + "type": "object", + "description": "Information on the pickup store.", + "properties": { + "isPickupStore": { + "type": "boolean", + "description": "Indicates whether it is the pickup store." + }, + "friendlyName": { + "type": "string", + "description": "Friendly name.", + "nullable": true + }, + "address": { + "type": "object", + "description": "Address information.", + "nullable": true, + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies.", + "nullable": true + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + }, + "additionalInfo": { + "type": "string", + "description": "Additional information.", + "nullable": true + }, + "dockId": { + "type": "string", + "description": "Corresponding dock ID.", + "nullable": true + } + } + }, + "pickupPointId": { + "type": "string", + "description": "Pickup point ID.", + "nullable": true + }, + "pickupDistance": { + "type": "integer", + "description": "Pickup point distance." + }, + "polygonName": { + "type": "string", + "description": "Polygon name.", + "nullable": true + }, + "transitTime": { + "type": "string", + "description": "Transit time. For instance, \"three business days\" is represented `3bd`." + } + } + } + }, + "shipsTo": { + "type": "array", + "description": "List of countries that the item may be shipped to.", + "items": { + "type": "string", + "description": "Three letter country code." + } + }, + "itemId": { + "type": "string", + "description": "Item ID." + }, + "deliveryChannels": { + "type": "array", + "description": "List of available delivery channels.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Delivery channel ID." + } + } + } + } + } + } + }, + "selectedAddresses": { + "type": "array", + "description": "Array with information on the selected addresses for the order.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies." + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + }, + "availableAddresses": { + "type": "array", + "description": "Array with information on the available addresses for the order.", + "items": { + "type": "object", + "properties": { + "addressType": { + "type": "string", + "description": "Type of address. For example, `Residential` or `Pickup`." + }, + "receiverName": { + "type": "string", + "description": "Name of the person who is going to receive the order." + }, + "addressId": { + "type": "string", + "description": "Address ID." + }, + "isDisposable": { + "type": "boolean", + "description": "Indicates whether address is disposable." + }, + "postalCode": { + "type": "string", + "description": "Postal code." + }, + "city": { + "type": "string", + "description": "City of the shipping address." + }, + "state": { + "type": "string", + "description": "State of the shipping address." + }, + "country": { + "type": "string", + "description": "Three letter ISO code of the country of the shipping address." + }, + "street": { + "type": "string", + "description": "Street of the shipping address." + }, + "number": { + "type": "string", + "description": "Number of the building, house or apartment in the shipping address." + }, + "neighborhood": { + "type": "string", + "description": "Neighborhood of the shipping address." + }, + "complement": { + "type": "string", + "description": "Complement to the shipping address, in case it applies." + }, + "reference": { + "type": "string", + "description": "Complement that might help locate the shipping address more precisely in case of delivery.", + "nullable": true + }, + "geoCoordinates": { + "type": "array", + "description": "Array containing two floats with geocoordinates, first longitude, then latitude.", + "items": { + "type": "number" + } + } + } + } + } + } + }, + "paymentData": { + "type": "object", + "description": "Information on the order's payment.", + "properties": { + "giftCards": { + "type": "array", + "description": "Gift card information, if it applies to the order.", + "items": { + "type": "object", + "properties": { + "redemptionCode": { + "type": "string", + "description": "Gift card redemption code." + }, + "value": { + "type": "integer", + "description": "Gift card value in cents." + }, + "balance": { + "type": "integer", + "description": "Gift card balance in cents." + }, + "name": { + "type": "string", + "description": "Gift card name." + }, + "id": { + "type": "string", + "description": "Gift card ID." + }, + "inUse": { + "type": "boolean", + "description": "Indicates whether gift card is in use." + }, + "isSpecialCard": { + "type": "boolean", + "description": "Indicates whether gift card is special." + } + } + } + }, + "transactions": { + "type": "array", + "description": "Information on each transaction pertinent to the order.", + "items": { + "type": "object", + "properties": { + "isActive": { + "type": "boolean", + "description": "Indicates whether transaction is active." + }, + "transactionId": { + "type": "string", + "description": "Transaction ID." + }, + "merchantName": { + "type": "string", + "description": "Merchant name." + }, + "payments": { + "type": "array", + "description": "Information on each payment.", + "items": { + "type": "object", + "properties": { + "accountId": { + "type": "string", + "description": "Account ID." + }, + "bin": { + "type": "string", + "description": "Bin." + }, + "installments": { + "type": "integer", + "description": "Number of installments." + }, + "paymentSystem": { + "type": "string", + "description": "Payment system." + }, + "referenceValue": { + "type": "integer", + "description": "Reference value for calculating interest rates, in case it applies. Displayed in cents." + }, + "value": { + "type": "integer", + "description": "Value including interest, in case it applies. Displayed in cents." + } + } + } + }, + "sharedTransaction": { + "type": "boolean", + "description": "Indicates whather transaction is shared." + } + } + } + } + } + }, + "itemMetadata": { + "type": "object", + "description": "Item metadata.", + "properties": { + "items": { + "type": "array", + "description": "List of objects containing metadata on each item in the order.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Item ID." + }, + "seller": { + "type": "string", + "description": "Seller." + }, + "name": { + "type": "string", + "description": "Product name." + }, + "skuName": { + "type": "string", + "description": "SKU name." + }, + "productId": { + "type": "string", + "description": "Product ID." + }, + "refId": { + "type": "string", + "description": "Ref ID." + }, + "ean": { + "type": "string", + "description": "European Article Number.", + "nullable": true + }, + "imageUrl": { + "type": "string", + "description": "Image URL." + }, + "detailUrl": { + "type": "string", + "description": "Detail URL." + } + } + } + } + } + }, + "salesChannel": { + "type": "string", + "description": "Sales channel." + }, + "followUpEmail": { + "type": "string", + "description": "Follow up email address." + }, + "creationDate": { + "type": "string", + "description": "Creation date." + }, + "lastChange": { + "type": "string", + "description": "Last change." + }, + "timeZoneCreationDate": { + "type": "string", + "description": "Time zone creation date." + }, + "timeZoneLastChange": { + "type": "string", + "description": "Time zone last change." + }, + "isCompleted": { + "type": "boolean", + "description": "Indicates whether order is completed." + }, + "hostName": { + "type": "string", + "description": "Host name." + }, + "merchantName": { + "type": "string", + "description": "Merchant name.", + "nullable": true + }, + "userType": { + "type": "string", + "description": "User type." + }, + "roundingError": { + "type": "integer", + "description": "Rounding error." + }, + "allowEdition": { + "type": "boolean", + "description": "Indicates whether edition is allowed." + }, + "allowCancelation": { + "type": "boolean", + "description": "Indicates whether cancelation is allowed." + }, + "allowChangeSeller": { + "type": "boolean", + "description": "Indicates whether seller changing is allowed." + }, + "isUserDataVisible": { + "type": "boolean", + "description": "Indicates whether user data is visible." + }, + "orderFormCreationDate": { + "type": "string", + "description": "`orderForm` creation date." + }, + "salesAssociateId": { + "type": "string", + "description": "Sales Associate (Seller) identification code." + } + } + } + } + } + }, + "example": { + "orderForm": null, + "transactionData": { + "merchantTransactions": [ + { + "id": "MYSTORE", + "transactionId": "296D6D245C17437E823EB77E403FC88D", + "merchantName": "MYSTORE", + "payments": [ + { + "paymentSystem": "6", + "bin": null, + "accountId": null, + "tokenId": null, + "value": 34390, + "referenceValue": 34390, + "giftCardRedemptionCode": null, + "giftCardProvider": null, + "giftCardId": null + } + ] + } + ], + "receiverUri": "https://mystore.vtexpayments.com.br/split/1146512005522/payments", + "gatewayCallbackTemplatePath": "/checkout/gatewayCallback/1146512005522/{messageCode}" + }, + "orders": [ + { + "orderId": "1146512005522-01", + "orderGroup": "1146512005522", + "state": null, + "isCheckedIn": false, + "sellerOrderId": "00-1146512005522-01", + "storeId": null, + "checkedInPickupPointId": null, + "value": 34390, + "items": [ + { + "uniqueId": "9D6E447B3FF64CEDA33B17C01379C119", + "id": "2", + "productId": "2", + "productRefId": "", + "refId": "CBC30L", + "ean": null, + "name": "Chopp Brahma Claro 30L", + "skuName": "Chopp Brahma Claro 30L", + "modalType": null, + "parentItemIndex": null, + "parentAssemblyBinding": null, + "assemblies": [], + "priceValidUntil": "2022-07-13T18:30:46Z", + "tax": 0, + "price": 32890, + "listPrice": 49900, + "manualPrice": null, + "manualPriceAppliedBy": null, + "sellingPrice": 32890, + "rewardValue": 0, + "isGift": false, + "additionalInfo": { + "dimension": null, + "brandName": "Brahma", + "brandId": "2000000", + "offeringInfo": null, + "offeringType": null, + "offeringTypeId": null + }, + "preSaleDate": null, + "productCategoryIds": "/1/", + "productCategories": { + "1": "Bebidas" + }, + "quantity": 1, + "seller": "1", + "sellerChain": [ + "1" + ], + "imageUrl": "http://mystore.vteximg.com.br/arquivos/ids/155400-55-55/30l_v2.png?v=637303412106100000", + "detailUrl": "/chopp-brahma-claro-30l/p", + "components": [], + "bundleItems": [], + "attachments": [], + "attachmentOfferings": [], + "offerings": [], + "priceTags": [], + "availability": "available", + "measurementUnit": "un", + "unitMultiplier": 1, + "manufacturerCode": null, + "priceDefinition": { + "calculatedSellingPrice": 32890, + "total": 32890, + "sellingPrices": [ + { + "value": 32890, + "quantity": 1 + } + ] + } + } + ], + "sellers": [ + { + "id": "1", + "name": "Tracking QA", + "logo": "" + } + ], + "totals": [ + { + "id": "Items", + "name": "Total dos Itens", + "value": 32890 + }, + { + "id": "Discounts", + "name": "Total dos Descontos", + "value": 0 + }, + { + "id": "Shipping", + "name": "Total do Frete", + "value": 1500 + }, + { + "id": "Tax", + "name": "Total da Taxa", + "value": 0 + } + ], + "clientProfileData": { + "email": "clark.kent@example.com", + "firstName": "Clark", + "lastName": "Kent", + "document": "12345678900", + "documentType": "cpf", + "phone": "+5521998765432", + "corporateName": null, + "tradeName": null, + "corporateDocument": null, + "stateInscription": null, + "corporatePhone": null, + "isCorporate": false, + "profileCompleteOnLoading": false, + "profileErrorOnLoading": null, + "customerClass": null + }, + "ratesAndBenefitsData": { + "rateAndBenefitsIdentifiers": [], + "teaser": [] + }, + "shippingData": { + "address": { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "70386000", + "city": "Brasília", + "state": "DF", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + }, + "logisticsInfo": [ + { + "itemIndex": 0, + "selectedSla": "Normal", + "selectedDeliveryChannel": "delivery", + "addressId": "teste", + "slas": [ + { + "id": "Normal", + "deliveryChannel": "delivery", + "name": "Normal", + "deliveryIds": [ + { + "courierId": "1", + "warehouseId": "1_1", + "dockId": "1", + "courierName": "Transportadora", + "quantity": 1, + "kitItemDetails": [] + } + ], + "shippingEstimate": "3bd", + "shippingEstimateDate": null, + "lockTTL": "10d", + "availableDeliveryWindows": [], + "deliveryWindow": null, + "price": 1500, + "listPrice": 1500, + "tax": 0, + "pickupStoreInfo": { + "isPickupStore": false, + "friendlyName": null, + "address": null, + "additionalInfo": null, + "dockId": null + }, + "pickupPointId": null, + "pickupDistance": 0, + "polygonName": null, + "transitTime": "3bd" + } + ], + "shipsTo": [ + "BRA", + "COL", + "USA" + ], + "itemId": "2", + "deliveryChannels": [ + { + "id": "delivery" + }, + { + "id": "pickup-in-point" + } + ] + } + ], + "selectedAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "availableAddresses": [ + { + "addressType": "residential", + "receiverName": "Clark Kent", + "addressId": "teste", + "isDisposable": true, + "postalCode": "12345000", + "city": "Rio de Janeiro", + "state": "RJ", + "country": "BRA", + "street": "Rua da minha casa", + "number": "123", + "neighborhood": "Copacabana", + "complement": "15º andar", + "reference": null, + "geoCoordinates": [ + -47.924747467041016, + -15.832582473754883 + ] + } + ], + "pickupPoints": [] + }, + "paymentData": { + "giftCards": [], + "transactions": [ + { + "isActive": true, + "transactionId": "296D6D245C17437E823EB77E403FC88D", + "merchantName": "MYSTORE", + "payments": [], + "sharedTransaction": false + } + ] + }, + "clientPreferencesData": null, + "commercialConditionData": null, + "giftRegistryData": null, + "marketingData": null, + "storePreferencesData": { + "countryCode": "BRA", + "saveUserData": false, + "timeZone": "E. South America Standard Time", + "currencyCode": "BRL", + "currencyLocale": 1046, + "currencySymbol": "R$", + "currencyFormatInfo": { + "currencyDecimalDigits": 2, + "currencyDecimalSeparator": ",", + "currencyGroupSeparator": ".", + "currencyGroupSize": 3, + "startsWithCurrencySymbol": true + } + }, + "openTextField": { + "value": null + }, + "invoiceData": null, + "itemMetadata": { + "items": [ + { + "id": "2", + "seller": "1", + "name": "Chopp Brahma Claro 30L", + "skuName": "Chopp Brahma Claro 30L", + "productId": "2", + "refId": "CBC30L", + "ean": null, + "imageUrl": "http://mystore.vteximg.com.br/arquivos/ids/155400-55-55/30l_v2.png?v=637303412106100000", + "detailUrl": "/chopp-brahma-claro-30l/p", + "assemblyOptions": [] + } + ] + }, + "taxData": null, + "customData": null, + "hooksData": null, + "changeData": null, + "subscriptionData": null, + "salesChannel": "1", + "followUpEmail": "6c10d76b5170456d89823b38b7c8f6ac@ct.vtex.com.br", + "creationDate": "2021-07-13T18:33:25.3029443Z", + "lastChange": "2021-07-13T18:33:27.736557Z", + "timeZoneCreationDate": "2021-07-13T15:33:25.3029443", + "timeZoneLastChange": "2021-07-13T15:33:27.736557", + "isCompleted": false, + "hostName": "mystore", + "merchantName": null, + "userType": "", + "roundingError": 0, + "allowEdition": false, + "allowCancellation": false, + "isUserDataVisible": true, + "allowChangeSeller": false, + "orderFormCreationDate": "2021-07-13T18:33:25.1313373Z" + } + ], + "salesAssociateData": { + "salesAssociateId": "seller123" + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/gatewayCallback/{orderGroup}": { + "post": { + "tags": [ + "Order placement" + ], + "summary": "Process order", + "description": "Order processing callback request, which is made after an order's payment is approved.\n\r\n\r> This request has to be made within five minutes after the [Place order](https://developers.vtex.com/docs/api-reference/checkout-api#put-/api/checkout/pub/orders) or [Place order from existing cart](https://developers.vtex.com/docs/api-reference/checkout-api#post-/api/checkout/pub/orderForm/-orderFormId-/transaction) request has been made, or else, the order will not be processed.", + "operationId": "ProcessOrder", + "security": [], + "parameters": [ + { + "name": "orderGroup", + "in": "path", + "description": "Order group. It is the part of the `orderId` that comes before the `-`. For example, the `orderGroup` of the order `123456789-01` is `123456789`.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "123456789" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Cookie", + "in": "header", + "description": "VTEX Chekout cookie associated with a specific order. Use the `Vtex_CHKO_Auth` and the `CheckoutDataAccess` cookies returned by the [Place order](https://developers.vtex.com/vtex-rest-api/reference/order-placement-1#placeorder) or [Place order from existing cart](https://developers.vtex.com/vtex-rest-api/reference/order-placement-1#placeorderfromexistingorderform) API requests, like a browser would.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "Vtex_CHKO_Auth=0e/RpYIEZu19BuwXB4tZ7eIGu9HT8vdUAHWQDHDpxMc=; CheckoutDataAccess=0e/PoiTEZu19BuwXB4tZ7eIGu9HT8vdUAHWQDHDpxMc=" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "example": {} + } + } + }, + "428": { + "description": "This code is used to indicate that a payment redirection flow is required to complete the order, such as using an [external payment application](https://developers.vtex.com/docs/guides/payments-integration-payment-app).", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "RedirectResponseCollection": { + "type": "array", + "description": "Redirect Payment information.", + "items": { + "type": "object", + "properties": { + "redirectUrl": { + "type": "string", + "description": "Redirect URL information." + } + } + } + }, + "paymentAuthorizationAppCollection": { + "type": "array", + "description": "Payment authorization information.", + "items": { + "type": "object", + "properties": { + "appName": { + "type": "string", + "description": "Indicates which VTEX IO app that will handle the payment flow at Checkout." + }, + "appPayload": { + "type": "object", + "description": "App payload information.", + "properties": { + "code": { + "type": "string", + "description": "URL source of external payment flow." + }, + "expiresAt": { + "type": "string", + "description": "Payment flow expiration date in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format (`YYYY-MM-DDThh:mm:ss.fff`)." + }, + "paymentId": { + "type": "string", + "description": "Payment identifier at VTEX." + }, + "transactionId": { + "type": "string", + "description": "Transaction ID." + } + } + } + } + } + } + } + }, + "example": { + "RedirectResponseCollection": [ + { + "redirectUrl": "https://bacen.pix/pix/…" + } + ], + "paymentAuthorizationAppCollection": [ + { + "appName": "vtex.pix-payment", + "appPayload": { + "code": "https://bacen.pix/pix/…", + "expiresAt": "2023-07-12 14:18:11Z", + "paymentId": "7AA33BDE370746839F2F8C5F13FE1D84", + "transactionId": "7CEA6AD624D54F07825D37EDEAA746ED" + } + } + ] + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "operationId": { + "type": "string", + "description": "Operation ID." + }, + "error": { + "type": "object", + "description": "Information on the error.", + "properties": { + "code": { + "type": "string", + "description": "Error code." + }, + "message": { + "type": "string", + "description": "Error message." + }, + "exception": { + "type": "string", + "description": "Error exception.", + "nullable": true + } + } + } + } + }, + "example": { + "operationId": "a231ed11-255b-4ea0-96c3-1790e1b27f7e", + "error": { + "code": "001", + "message": "Seu pagamento não foi autorizado. Falha ao enviar os dados de pagamento. Favor entrar em contato com o SAC ou utilizar outra forma de pagamento. *** ", + "exception": null + } + } + } + } + } + }, + "deprecated": false + } + }, + "/api/checkout/pub/regions/{regionId}": { + "get": { + "tags": [ + "Region" + ], + "summary": "Get sellers by region or address", + "description": "Retrieves a list of sellers that cater to a specific region or address, according to your setup of our [regionalization feature](https://help.vtex.com/en/tutorial/setting-up-price-and-availability-of-skus-by-region--12ne58BmvYsYuGsimmugoc#). Learn more about [Region v2](https://developers.vtex.com/docs/guides/region-v2-release).\n\r\n\rTo access the list of sellers, you must choose one of the following methods:\n\r\n\r1. Send the identification of the list of sellers (`regionId`) as a path parameter through the URL. Or;\n\r2. Send the `country` (3-digit ISO code) and at least one of the two values (`postal Code` or `geo Coordinates`) as query parameters through the URL. For this method, it is also allowed to send both values (`postalCode` or `geoCoordinates`) in the same request.\n\r\n\r> The `regionId` and `country` parameters are indicated as required in this documentation. However, only one of them should be sent in the request according to one of the methods mentioned above.", + "operationId": "GetSellersByRegion", + "security": [], + "parameters": [ + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "regionId", + "in": "path", + "description": "ID of the region corresponding to the shopper's location.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "v2.1BB18CE648B5111D0933734ED83EC783" + } + }, + { + "name": "country", + "in": "query", + "description": "Three letter country code refering to the `postalCode` field.", + "required": true, + "style": "form", + "schema": { + "type": "string", + "default": "BRA" + } + }, + { + "name": "postalCode", + "in": "query", + "description": "Postal code corresponding to the shopper's location.", + "required": false, + "style": "form", + "schema": { + "type": "string", + "default": "1234000" + } + }, + { + "name": "geoCoordinates", + "in": "query", + "description": "Geocoordinates (first longitude, semicolon, then latitude) corresponding to the shopper's location.", + "required": false, + "style": "form", + "schema": { + "type": "array", + "default": [ + -47.924747467041016, + -15.832582473754883 + ], + "items": { + "type": "number", + "example": -47.924747467041016 + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Region ID." + }, + "sellers": { + "type": "array", + "description": "Array with information on each seller retrieved for the given region.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Seller ID." + }, + "name": { + "type": "string", + "description": "Seller name." + }, + "logo": { + "type": "string", + "description": "Seller logo.", + "nullable": true + } + } + } + } + } + }, + "example": { + "id": "v2.1BB18CE648B5111D0933734ED83EC783", + "sellers": [ + { + "id": "abacaba", + "name": "Abacaba Store", + "logo": null + }, + { + "id": "abacaba2", + "name": "Abacaba VTEX Outlet", + "logo": null + }, + { + "id": "abacaba3", + "name": "Abacaba VTEX Mall", + "logo": null + } + ] + } + } + } + } + } + } + }, + "/api/oms/user/orders": { + "get": { + "tags": ["User orders"], + "summary": "Retrieve user's orders", + "description": "Lists all orders from a given customer, filtering by their email. \r\n\r\n> You can only access information from orders created in the last two years, and that same period is valid for customers through [My Account](https://help.vtex.com/en/tutorial/how-my-account-works--2BQ3GiqhqGJTXsWVuio3Xh). \r\n\r\n> Note that this request should be made by an [user](https://developers.vtex.com/docs/guides/user-authentication-and-login) or [an appKey / appToken pair](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys) that is associated with the [Call center operator](https://help.vtex.com/en/tutorial/predefined-roles--jGDurZKJHvHJS13LnO7Dy#call-center-operator) role. Otherwise, it will return only orders from the same email informed in the `clientEmail` query parameter. \r\n\r\n## Permissions\r\n\r\nAny user or [application key](https://developers.vtex.com/docs/guides/api-authentication-using-application-keys) must have at least one of the appropriate [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3) to be able to successfully run this request. Otherwise they will receive a status code `403` error. These are the applicable resources for this endpoint:\r\n\r\n| **Product** | **Category** | **Resource** |\r\n| --------------- | ----------------- | ----------------- |\r\n| OMS | OMS access | **View order** |\r\n\r\nYou can [create a custom role](https://help.vtex.com/en/tutorial/roles--7HKK5Uau2H6wxE1rH5oRbc#creating-a-role) with that resource or use one of the following [predefined roles](https://help.vtex.com/en/tutorial/predefined-roles--jGDurZKJHvHJS13LnO7Dy):\r\n\r\n| **Role** | **Resource** | \r\n| --------------- | ----------------- | \r\n| Call center operator | View order |\r\n| OMS - Read only | View order |\r\n\r\n>❗ Assigning a [predefined role](https://help.vtex.com/en/tutorial/predefined-roles--jGDurZKJHvHJS13LnO7Dy) to users or application keys usually grants permission to multiple [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3). If some of these permissions are not necessary, consider creating a custom role instead. For more information regarding security, see [Best practices for using application keys](https://help.vtex.com/en/tutorial/best-practices-application-keys--7b6nD1VMHa49aI5brlOvJm). \r\n\r\nTo learn more about machine authentication at VTEX, see [Authentication overview](https://developers.vtex.com/docs/guides/authentication).", + "operationId": "Userorderslist", + "parameters": [ + { + "name": "clientEmail", + "in": "query", + "description": "Customer email.", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "string", + "example": "customer@mail.com" + } + }, + { + "name": "page", + "in": "query", + "description": "Page number for result pagination.", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "string", + "example": "15" + } + }, + { + "name": "per_page", + "in": "query", + "description": "Page quantity for result pagination.", + "required": true, + "style": "form", + "explode": true, + "schema": { + "type": "string", + "example": "15" + } + }, + { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + }, + { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "default": "application/json" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Userorderslist" + }, + "example": { + "list": [ + { + "orderId": "v502556llux-01", + "creationDate": "2019-01-28T20:09:43+00:00", + "clientName": "Cunha VTEX", + "items": null, + "totalValue": 1160, + "paymentNames": "Boleto Bancário", + "status": "handling", + "statusDescription": "Preparando Entrega", + "marketPlaceOrderId": null, + "sequence": "502556", + "salesChannel": "1", + "affiliateId": "", + "origin": "Marketplace", + "workflowInErrorState": false, + "workflowInRetry": false, + "lastMessageUnread": " Lux Store Seu pedido foi alterado! Pedido realizado em: 28/01/2019 Olá, Rodrigo. Seu pedido foi alterado. Seguem informações abaixo: ", + "ShippingEstimatedDate": "2019-02-04T20:33:46+00:00", + "ShippingEstimatedDateMax": null, + "ShippingEstimatedDateMin": null, + "orderIsComplete": true, + "listId": null, + "listType": null, + "authorizedDate": "2019-01-28T20:33:04+00:00", + "callCenterOperatorName": null, + "totalItems": 1, + "currencyCode": "BRL" + }, + { + "orderId": "v502449llux-02", + "creationDate": "2018-08-28T17:42:40+00:00", + "clientName": "Cunha VTEX", + "items": null, + "totalValue": 118588, + "paymentNames": "Promissory", + "status": "canceled", + "statusDescription": "Cancelado", + "marketPlaceOrderId": null, + "sequence": "502452", + "salesChannel": "1", + "affiliateId": "", + "origin": "Marketplace", + "workflowInErrorState": false, + "workflowInRetry": false, + "lastMessageUnread": " Lux Store 96 Seu pedido foi cancelado. Referente ao Pedido #v502449llux-02 Resumo Itens R$ 1.178,98 Entrega R$ 6,90 Total R$ 1.185,88", + "ShippingEstimatedDate": null, + "ShippingEstimatedDateMax": null, + "ShippingEstimatedDateMin": null, + "orderIsComplete": true, + "listId": null, + "listType": null, + "authorizedDate": null, + "callCenterOperatorName": null, + "totalItems": 12, + "currencyCode": "BRL" + }, + { + "orderId": "v502449llux-01", + "creationDate": "2018-08-28T17:42:28.9171556+00:00", + "clientName": "Cunha VTEX", + "items": [ + { + "seller": "1", + "quantity": 1, + "description": "Mangueira Reservatório Ao Cavalete", + "ean": null, + "refId": "TE3121110", + "id": "195", + "productId": "134", + "sellingPrice": 7390, + "price": 7390 + }, + { + "seller": "1", + "quantity": 1, + "description": "Mangueira Filtro", + "ean": null, + "refId": "XC459N610CA", + "id": "238", + "productId": "162", + "sellingPrice": 5190, + "price": 5190 + } + ], + "totalValue": 21526180, + "paymentNames": null, + "status": "canceled", + "statusDescription": "Cancelado", + "marketPlaceOrderId": "", + "sequence": "502449", + "salesChannel": "1", + "affiliateId": "", + "origin": "Marketplace", + "workflowInErrorState": false, + "workflowInRetry": false, + "lastMessageUnread": null, + "ShippingEstimatedDate": null, + "ShippingEstimatedDateMax": null, + "ShippingEstimatedDateMin": null, + "orderIsComplete": true, + "listId": null, + "listType": null, + "authorizedDate": null, + "callCenterOperatorName": null, + "totalItems": 0, + "currencyCode": null + }, + { + "orderId": "v502058llux-01", + "creationDate": "2017-07-25T23:17:36.7963248+00:00", + "clientName": "Cunha VTEX", + "items": [ + { + "seller": "1", + "quantity": 1, + "description": "Aquecedor Britania 1500 Branco", + "ean": "1235567890143", + "refId": "branquinho", + "id": "1234568212", + "productId": "1000200", + "sellingPrice": 35599, + "price": 35599 + } + ], + "totalValue": 35599, + "paymentNames": null, + "status": "invoiced", + "statusDescription": "Faturado", + "marketPlaceOrderId": "", + "sequence": "502058", + "salesChannel": "1", + "affiliateId": "", + "origin": "Marketplace", + "workflowInErrorState": false, + "workflowInRetry": false, + "lastMessageUnread": null, + "ShippingEstimatedDate": "2017-07-29T19:24:20.7444363+00:00", + "ShippingEstimatedDateMax": null, + "ShippingEstimatedDateMin": null, + "orderIsComplete": true, + "listId": null, + "listType": null, + "authorizedDate": null, + "callCenterOperatorName": null, + "totalItems": 0, + "currencyCode": null + }, + { + "orderId": "v501538llux-01", + "creationDate": "2017-06-26T16:57:58.9986524+00:00", + "clientName": "Cunha VTEX", + "items": [ + { + "seller": "1", + "quantity": 1, + "description": "Boneco do Mário", + "ean": "bonecomario", + "refId": "bonecomario", + "id": "1234568183", + "productId": "1000257", + "sellingPrice": 150363, + "price": 150363 + }, + { + "seller": "1", + "quantity": 1, + "description": "Camiseta GG", + "ean": null, + "refId": "abc1234", + "id": "1234567894", + "productId": "1000187", + "sellingPrice": 899, + "price": 899 + } + ], + "totalValue": 151262, + "paymentNames": null, + "status": "invoiced", + "statusDescription": "Faturado", + "marketPlaceOrderId": "", + "sequence": "501538", + "salesChannel": "1", + "affiliateId": "", + "origin": "Marketplace", + "workflowInErrorState": false, + "workflowInRetry": false, + "lastMessageUnread": null, + "ShippingEstimatedDate": "2017-06-27T13:59:49.7705236+00:00", + "ShippingEstimatedDateMax": null, + "ShippingEstimatedDateMin": null, + "orderIsComplete": true, + "listId": null, + "listType": null, + "authorizedDate": null, + "callCenterOperatorName": null, + "totalItems": 0, + "currencyCode": null + }, + { + "orderId": "v501020llux-01", + "creationDate": "2016-11-21T19:57:54.0415289+00:00", + "clientName": "Cunha VTEX", + "items": [ + { + "seller": "1", + "quantity": 2, + "description": "Camiseta GG", + "ean": null, + "refId": "abc1234", + "id": "1234567894", + "productId": "1000187", + "sellingPrice": 899, + "price": 899 + } + ], + "totalValue": 3190, + "paymentNames": null, + "status": "canceled", + "statusDescription": "Cancelado", + "marketPlaceOrderId": "", + "sequence": "501020", + "salesChannel": "1", + "affiliateId": "", + "origin": "Marketplace", + "workflowInErrorState": false, + "workflowInRetry": false, + "lastMessageUnread": null, + "ShippingEstimatedDate": "2016-12-02T08:00:00+00:00", + "ShippingEstimatedDateMax": null, + "ShippingEstimatedDateMin": null, + "orderIsComplete": true, + "listId": null, + "listType": null, + "authorizedDate": null, + "callCenterOperatorName": null, + "totalItems": 0, + "currencyCode": null + }, + { + "orderId": "v500973llux-01", + "creationDate": "2016-10-10T17:19:30.8562035+00:00", + "clientName": "Cunha VTEX", + "items": [ + { + "seller": "1", + "quantity": 1, + "description": "SMARTPHONE SAMSUNG GALAXY S7 FLAT SM-G930FZDLZTO 32GB DOURADO TELA 5.1\" 4G CÂMERA 12 MP", + "ean": null, + "refId": "testefnac", + "id": "1234568028", + "productId": "1000203", + "sellingPrice": 299000, + "price": 299000 + } + ], + "totalValue": 299900, + "paymentNames": null, + "status": "handling", + "statusDescription": "Preparando Entrega", + "marketPlaceOrderId": "", + "sequence": "500973", + "salesChannel": "1", + "affiliateId": "", + "origin": "Marketplace", + "workflowInErrorState": false, + "workflowInRetry": false, + "lastMessageUnread": null, + "ShippingEstimatedDate": "2016-10-10T14:23:17.1897068+00:00", + "ShippingEstimatedDateMax": null, + "ShippingEstimatedDateMin": null, + "orderIsComplete": true, + "listId": null, + "listType": null, + "authorizedDate": null, + "callCenterOperatorName": null, + "totalItems": 0, + "currencyCode": null + }, + { + "orderId": "v500970llux-01", + "creationDate": "2016-10-10T17:07:59.0889392+00:00", + "clientName": "Cunha VTEX", + "items": [ + { + "seller": "1", + "quantity": 1, + "description": "Camiseta GG", + "ean": null, + "refId": "abc1234", + "id": "1234567894", + "productId": "1000187", + "sellingPrice": 899, + "price": 899 + } + ], + "totalValue": 1799, + "paymentNames": null, + "status": "invoiced", + "statusDescription": "Faturado", + "marketPlaceOrderId": "", + "sequence": "500970", + "salesChannel": "1", + "affiliateId": "", + "origin": "Marketplace", + "workflowInErrorState": false, + "workflowInRetry": false, + "lastMessageUnread": null, + "ShippingEstimatedDate": "2016-10-10T14:13:34.4927265+00:00", + "ShippingEstimatedDateMax": null, + "ShippingEstimatedDateMin": null, + "orderIsComplete": true, + "listId": null, + "listType": null, + "authorizedDate": null, + "callCenterOperatorName": null, + "totalItems": 0, + "currencyCode": null + }, + { + "orderId": "v500890llux-01", + "creationDate": "2016-08-17T18:35:04.8659804+00:00", + "clientName": "Cunha VTEX", + "items": [ + { + "seller": "1", + "quantity": 1, + "description": "Botin Futbol Adidas 11Questra Fg Cesped Hombre Absolut - M", + "ean": "absolutm", + "refId": null, + "id": "549", + "productId": "9", + "sellingPrice": 1000, + "price": 1000 + } + ], + "totalValue": 1000, + "paymentNames": null, + "status": "canceled", + "statusDescription": "Cancelado", + "marketPlaceOrderId": "", + "sequence": "500890", + "salesChannel": "1", + "affiliateId": "", + "origin": "Marketplace", + "workflowInErrorState": false, + "workflowInRetry": false, + "lastMessageUnread": null, + "ShippingEstimatedDate": null, + "ShippingEstimatedDateMax": null, + "ShippingEstimatedDateMin": null, + "orderIsComplete": true, + "listId": null, + "listType": null, + "authorizedDate": null, + "callCenterOperatorName": null, + "totalItems": 0, + "currencyCode": null + }, + { + "orderId": "v500838llux-01", + "creationDate": "2016-07-29T00:20:47.7736718+00:00", + "clientName": "Cunha VTEX", + "items": [ + { + "seller": "1", + "quantity": 1, + "description": "Rooibos Lavanda - Pouch - 50gr", + "ean": "198", + "refId": "10098", + "id": "98", + "productId": "1000025", + "sellingPrice": 5200, + "price": 5200 + } + ], + "totalValue": 6200, + "paymentNames": null, + "status": "canceled", + "statusDescription": "Cancelado", + "marketPlaceOrderId": "", + "sequence": "500838", + "salesChannel": "1", + "affiliateId": "", + "origin": "Marketplace", + "workflowInErrorState": false, + "workflowInRetry": false, + "lastMessageUnread": null, + "ShippingEstimatedDate": null, + "ShippingEstimatedDateMax": null, + "ShippingEstimatedDateMin": null, + "orderIsComplete": true, + "listId": null, + "listType": null, + "authorizedDate": null, + "callCenterOperatorName": null, + "totalItems": 0, + "currencyCode": null + } + ], + "facets": [], + "paging": { + "total": 19, + "pages": 10, + "currentPage": 1, + "perPage": 2 + }, + "stats": { + "stats": { + "totalValue": { + "Count": 19, + "Max": 0, + "Mean": 0, + "Min": 0, + "Missing": 0, + "StdDev": 0, + "Sum": 0, + "SumOfSquares": 0, + "Facets": {} + }, + "totalItems": { + "Count": 19, + "Max": 0, + "Mean": 0, + "Min": 0, + "Missing": 0, + "StdDev": 0, + "Sum": 0, + "SumOfSquares": 0, + "Facets": {} + } + } + } + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "PickupPoint": { + "type": "object", + "description": "Pickup point information.", + "properties": { + "id": { + "type": "string", + "description": "[Pickup point](https://help.vtex.com/en/tutorial/pickup-points--2fljn6wLjn8M4lJHA6HP3R) ID." + }, + "name": { + "type": "string", + "description": "Pickup point name displayed to customers at checkout." + }, + "description": { + "type": "string", + "description": "Pickup point description displayed to customers at checkout." + }, + "instructions": { + "type": "string", + "description": "Instructions for customers when collecting their package." + }, + "formatted_address": { + "type": "string", + "description": "Formatted address.", + "nullable": true + }, + "address": { + "type": "object", + "description": "Pickup point address information.", + "properties": { + "postalCode": { + "type": "string", + "description": "Pickup point address postal code." + }, + "country": { + "type": "object", + "description": "Information about the pickup point address country.", + "properties": { + "acronym": { + "type": "string", + "description": "Three-digit country code of the pickup point address, in [ISO 3166 ALPHA-3](https://www.iban.com/country-codes) format." + }, + "name": { + "type": "string", + "description": "Country name of the pickup point address." + } + } + }, + "city": { + "type": "string", + "description": "Pickup point address city." + }, + "state": { + "type": "string", + "description": "Pickup point address state." + }, + "neighborhood": { + "type": "string", + "description": "Pickup point address neighborhood." + }, + "street": { + "type": "string", + "description": "Pickup point address street." + }, + "number": { + "type": "string", + "description": "Pickup point address number." + }, + "complement": { + "type": "string", + "description": "Pickup point address complement." + }, + "reference": { + "type": "string", + "description": "Reference point to help the customer find the pickup point." + }, + "location": { + "type": "object", + "description": "Pickup point address geolocation coordinates.", + "properties": { + "latitude": { + "type": "number", + "description": "Latitude coordinate." + }, + "longitude": { + "type": "number", + "description": "Longitude coordinate." + } + } + } + } + }, + "isActive": { + "type": "boolean", + "description": "Defines if the pickup point is active (`true`) or inactive (`false`)." + }, + "distance": { + "type": "number", + "description": "Pickup point configured distance." + }, + "seller": { + "type": "string", + "description": "Seller that corresponds to the pickup point." + }, + "_sort": { + "type": "array", + "description": "Sort array.", + "items": { + "type": "number", + "description": "Pickup point sort information." + } + }, + "businessHours": { + "type": "array", + "description": "Pickup point business hours configurations.", + "items": { + "type": "object", + "description": "Business hours configurations from Monday to Friday.", + "properties": { + "dayOfWeek": { + "type": "integer", + "description": "Day of the week identification, as in `1` = Monday, `2` = Tuesday, `3` = Wednesday, `4` = Thursday, and `5` = Friday." + }, + "openingTime": { + "type": "string", + "description": "Opening time in `HH:MM:SS` format." + }, + "closingTime": { + "type": "string", + "description": "Closing time in `HH:MM:SS` format." + } + } + } + }, + "tagsLabel": { + "type": "array", + "description": "Tags that identify a group of pickup points.", + "items": { + "type": "string", + "description": "Pickup point tag label." + } + }, + "pickupHolidays": { + "type": "array", + "description": "[Holidays](https://help.vtex.com/en/tutorial/registering-holidays--2ItOthSEAoyAmcwsuiO6Yk) configured for the pickup point.", + "items": { + "type": "object", + "description": "Holiday information.", + "properties": { + "date": { + "type": "string", + "description": "Holiday date and time, in [ISO 8601 time zone offset format](https://learn.microsoft.com/en-us/rest/api/storageservices/formatting-datetime-values), as in `YYYY-MM-DDThh:mm:ss.ssZ`." + }, + "hourBegin": { + "type": "string", + "description": "Holiday beginning time in `HH:MM` format." + }, + "hourEnd": { + "type": "string", + "description": "Holiday ending time in `HH:MM` format." + } + } + } + }, + "isThirdPartyPickup": { + "type": "boolean", + "description": "Defines if the pickup point is third-party (`true`) or not (`false`)." + }, + "accountOwnerName": { + "type": "string", + "description": "Account owner name." + }, + "accountOwnerId": { + "type": "string", + "description": "Account owner ID." + }, + "parentAccountName": { + "type": "string", + "description": "Parent account name." + }, + "originalId": { + "type": "string", + "description": "Original ID.", + "nullable": true + } + } + }, + "CreateNewDocument": { + "type": "object", + "properties": { + "Id": { + "type": "string" + }, + "Href": { + "type": "string" + }, + "DocumentId": { + "type": "string" + } + } + }, + "OrderFormSimulationRequest": { + "required": [ + "items", + "country" + ], + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Item" + }, + "description": "Array containing information about the SKUs inside the cart to be simulated." + }, + "country": { + "type": "string" + } + }, + "example": { + "items": [ + { + "id": "{{skuId}}", + "quantity": 1, + "seller": "1" + } + ], + "country": "{{countryCode-ISO-3-digits}}" + } + }, + "Item": { + "title": "Item", + "required": [ + "id", + "quantity", + "seller" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The SKU ID." + }, + "quantity": { + "type": "integer", + "format": "int32", + "description": "The quantity of items of this specific SKU in the cart to be simulated." + }, + "seller": { + "type": "string", + "description": "The ID of the seller responsible for this SKU. This ID can be found in your VTEX Admin." + } + }, + "example": { + "id": "{{skuId}}", + "quantity": 1, + "seller": "1" + } + }, + "PriceChangeRequest": { + "required": [ + "price" + ], + "type": "object", + "properties": { + "price": { + "type": "integer", + "format": "int32", + "description": "The new price of the item." + } + }, + "example": { + "price": 10000 + } + }, + "SetsinglecustomfieldvalueRequest": { + "required": [ + "value" + ], + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "The value you want to set to the specified field." + } + } + }, + "UpdateorderFormconfigurationRequest": { + "required": [ + "paymentConfiguration", + "taxConfiguration", + "minimumQuantityAccumulatedForItems", + "decimalDigitsPrecision", + "minimumValueAccumulated", + "apps", + "allowMultipleDeliveries", + "allowManualPrice" + ], + "type": "object", + "properties": { + "paymentConfiguration": { + "$ref": "#/components/schemas/PaymentConfiguration" + }, + "taxConfiguration": { + "type": "object", + "description": "External tax service configuration.", + "nullable": true, + "properties": { + "url": { + "type": "string", + "nullable": true, + "description": "Endpoint URL." + }, + "authorizationHeader": { + "type": "string", + "description": "Authorization header.", + "nullable": true + }, + "appId": { + "type": "string", + "description": "Custom data ID sent to the tax system." + } + } + }, + "minimumQuantityAccumulatedForItems": { + "type": "integer", + "format": "int32", + "description": "Minimum SKU quantity by cart." + }, + "decimalDigitsPrecision": { + "type": "integer", + "format": "int32", + "description": "Number of price digits." + }, + "minimumValueAccumulated": { + "type": "integer", + "nullable": true, + "description": "Minimum cart value." + }, + "apps": { + "type": "array", + "nullable": true, + "description": "Array of objects containing Apps configuration information.", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "App ID.", + "example": "birthdayApp" + }, + "fields": { + "type": "array", + "description": "Array of fields available to the app.", + "items": { + "type": "string", + "example": "birthdayField" + } + }, + "major": { + "type": "integer", + "description": "App major version.", + "example": 1 + } + } + } + }, + "allowMultipleDeliveries": { + "type": "boolean", + "nullable": true, + "description": "On the same purchase, allows the selection of items from multiple delivery channels." + }, + "allowManualPrice": { + "type": "boolean", + "nullable": true, + "description": "Allows the editing of SKU prices right in the cart." + }, + "maxNumberOfWhiteLabelSellers": { + "type": "integer", + "description": "Allows the input of a limit of white label sellers involved on the cart." + }, + "maskFirstPurchaseData": { + "type": "boolean", + "description": "Allows, on a first purchase, masking client's data. It could be useful when a shared cart is used and the client doesn't want to share its data." + }, + "recaptchaValidation": { + "type": "string", + "description": "Configures reCAPTCHA validation for the account, defining in which situations the shopper will be prompted to validate a purchase with reCAPTCHA. Learn more about [reCAPTCHA validation for VTEX stores](https://help.vtex.com/tutorial/recaptcha-no-checkout--18Te3oDd7f4qcjKu9jhNzP)\n\r\n\rPossible values are:\n\r- `\"never\"`: no purchases are validated with reCAPTCHA.\n\r- `\"always\"`: every purchase is validated with reCAPTCHA.\n\r- `\"vtexCriteria\"`: only some purchases are validated with reCAPTCHA in order to minimize friction and improve shopping experience. VTEX’s algorithm determines which sessions are trustworthy and which should be validated with reCAPTCHA. This is the recommended option.", + "default": "vtexCriteria" + }, + "requiresLoginToPlaceOrder": { + "type": "boolean", + "description": "Indicates whether authentication is required for completing purchases." + }, + "minimumPurchaseDowntimeSeconds": { + "type": "integer", + "description": "Minimum interval (in seconds) between successive purchases." + }, + "cartAgeToUseNewCardSeconds": { + "type": "integer", + "description": "Minimum cart existence period (in seconds) before allowing the use of a new credit card." + }, + "paymentSystemToCheckFirstInstallment": { + "type": "string", + "description": "If you want to apply a first installment discount to a particular payment system, set this field to that payment system's ID. Learn more: [Configuring a discount for orders prepaid in full](https://help.vtex.com/en/tutorial/configurar-desconto-de-preco-a-vista--7Lfcj9Wb5dpYfA2gKkACIt).", + "example": "6" + } + }, + "example": { + "paymentConfiguration": { + "requiresAuthenticationForPreAuthorizedPaymentOption": false + }, + "taxConfiguration": null, + "minimumQuantityAccumulatedForItems": 1, + "decimalDigitsPrecision": 2, + "minimumValueAccumulated": null, + "apps": null, + "allowMultipleDeliveries": null, + "allowManualPrice": null + } + }, + "PaymentConfiguration": { + "title": "PaymentConfiguration", + "description": "Payment Configuration object", + "required": [ + "requiresAuthenticationForPreAuthorizedPaymentOption" + ], + "type": "object", + "properties": { + "requiresAuthenticationForPreAuthorizedPaymentOption": { + "type": "boolean", + "description": "Determines whether pre-authorized payments require authentication" + }, + "allowInstallmentsMerge": { + "type": "boolean", + "description": "By default (when `false`), on a multi-seller purchase is on the run, a simple intersection with installments options configured by every seller will be available. When `true`, this option allows a more complex but flexible installment option, since it considers max installments of every seller configuration, even if those don't match. Installment values may not be equal in this case." + } + }, + "example": { + "requiresAuthenticationForPreAuthorizedPaymentOption": false, + "allowInstallmentsMerge": false + } + }, + "WaitingTime": { + "type": "object", + "required": [ + "waitingTime" + ], + "properties": { + "waitingTime": { + "type": "integer", + "description": "Number of days after order cancelation by a seller, during which another seller may be assigned to fulfill the order." + } + } + }, + "SKUFileURL": { + "type": "object", + "required": [ + "Name", + "Url" + ], + "properties": { + "IsMain": { + "type": "boolean", + "description": "Defines if the Image is the main image of the SKU.", + "example": true + }, + "Label": { + "type": "string", + "description": "SKU image label.", + "example": "Main" + }, + "Name": { + "type": "string", + "description": "SKU image name.", + "example": "Nike-Red-Janoski-1" + }, + "Text": { + "type": "string", + "description": "General text of the image.", + "example": "Nike-Red-Janoski", + "nullable": true + }, + "Url": { + "type": "string", + "description": "External Image's URL. The URL must start with the protocol identifier (`http://` or `https://`) and end with the file extension (`.jpg`, `.png` or `.gif`).", + "example": "https://m.media-amazon.com/images/I/610G2-sJx5L._AC_UX695_.jpg" + } + } + }, + "SKUFile": { + "type": "string", + "format": "binary", + "description": "The image file has a size limit of 3200 x 3200 pixels." + }, + "GetCategoryTree": { + "required": [ + "id", + "name", + "hasChildren", + "url", + "children", + "Title", + "MetaTagDescription" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Category ID.", + "example": 1 + }, + "name": { + "type": "string", + "description": "Category name.", + "example": "Toys" + }, + "hasChildren": { + "type": "boolean", + "description": "If the category has a category child (`true`) or not (`false`).", + "example": true + }, + "url": { + "type": "string", + "description": "Category URL.", + "example": "https://lojadobreno.vtexcommercestable.com.br/toys" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GetCategoryTreeChild" + }, + "description": "Array with information about the category's children." + }, + "Title": { + "type": "string", + "description": "Category page title.", + "example": "Toys" + }, + "MetaTagDescription": { + "type": "string", + "description": "Category page Meta tag description.", + "example": "New and used toys for sale." + } + }, + "example": { + "id": 1, + "name": "Alimentação", + "hasChildren": true, + "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao", + "children": [ + { + "id": 6, + "name": "Bebedouro", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/bebedouro", + "children": [], + "Title": "Bebedouro para Gatos", + "MetaTagDescription": "" + }, + { + "id": 7, + "name": "Comedouro", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/comedouro", + "children": [], + "Title": "Comedouro para Gatos", + "MetaTagDescription": "" + }, + { + "id": 8, + "name": "Biscoitos", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/biscoitos", + "children": [], + "Title": "Biscoitos para Gatos", + "MetaTagDescription": "" + }, + { + "id": 9, + "name": "Petiscos", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/petiscos", + "children": [], + "Title": "Petiscos para Gatos", + "MetaTagDescription": "" + }, + { + "id": 10, + "name": "Ração Seca", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/racao-seca", + "children": [], + "Title": "Ração Seca para Gatos", + "MetaTagDescription": "" + }, + { + "id": 11, + "name": "Ração Úmida", + "hasChildren": false, + "url": "https://lojadobreno.vtexcommercestable.com.br/alimentacao/racao-umida", + "children": [], + "Title": "Ração Úmida para Gatos", + "MetaTagDescription": "" + } + ], + "Title": "Alimentação para Gatos", + "MetaTagDescription": "" + } + }, + "GetCategoryTreeChild": { + "required": [ + "id", + "name", + "hasChildren", + "url", + "children", + "Title", + "MetaTagDescription" + ], + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Category ID.", + "example": 1 + }, + "name": { + "type": "string", + "description": "Category name.", + "example": "Dolls" + }, + "hasChildren": { + "type": "boolean", + "description": "If the category has a category child (`true`) or not (`false`).", + "example": true + }, + "url": { + "type": "string", + "description": "Category URL.", + "example": "https://lojadobreno.vtexcommercestable.com.br/dolls" + }, + "children": { + "type": "array", + "description": "Array with information about the category's children.", + "items": {} + }, + "Title": { + "type": "string", + "description": "Category page title.", + "example": "Dolls" + }, + "MetaTagDescription": { + "type": "string", + "description": "Category page Meta tag description.", + "example": "New and used dolls for sale." + } + }, + "example": { + "id": 78, + "name": "Xbox 360", + "hasChildren": false, + "url": "https://ambienteqa.vtexcommercestable.com.br/games/xbox-360", + "children": [ + { + "id": 79, + "name": "Consoles", + "hasChildren": false, + "url": "https://ambienteqa.vtexcommercestable.com.br/games/xbox-360/consoles", + "children": [] + }, + { + "id": 126, + "name": "Acessorio", + "hasChildren": false, + "url": "https://ambienteqa.vtexcommercestable.com.br/games/xbox-360/acessorio", + "children": [] + } + ], + "Title": "Games", + "MetaTagDescription": "Video games." + } + }, + "Category": { + "required": [ + "Id", + "Name", + "FatherCategoryId", + "Title", + "Description", + "Keywords", + "IsActive", + "LomadeeCampaignCode", + "AdWordsRemarketingCode", + "ShowInStoreFront", + "ShowBrandFilter", + "ActiveStoreFrontLink", + "GlobalCategoryId", + "StockKeepingUnitSelectionMode", + "Score", + "LinkId", + "HasChildren" + ], + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Category ID." + }, + "Name": { + "type": "string", + "description": "Category name." + }, + "FatherCategoryId": { + "type": "integer", + "description": "ID of the father category, apply in case of category and subcategory.", + "nullable": true + }, + "Title": { + "type": "string", + "description": "Category page title." + }, + "Description": { + "type": "string", + "description": "Describes details about the category." + }, + "Keywords": { + "type": "string", + "description": "Substitutes words for the category." + }, + "IsActive": { + "type": "boolean", + "description": "Shows if the category is active (`true`) or not (`false`)." + }, + "LomadeeCampaignCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "AdWordsRemarketingCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "ShowInStoreFront": { + "type": "boolean", + "description": "Defines if the category is shown on side and upper menu (`true`) or not (`false`)." + }, + "ShowBrandFilter": { + "type": "boolean", + "description": "Defines if the category has brand filter (`true`) or not (`false`)." + }, + "ActiveStoreFrontLink": { + "type": "boolean", + "description": "Defines if the Category has an active link on the website (`true`) or not (`false`)." + }, + "GlobalCategoryId": { + "type": "integer", + "description": "Google Global Category ID." + }, + "StockKeepingUnitSelectionMode": { + "type": "string", + "description": "Defines how the SKU will be exhibited." + }, + "Score": { + "type": "integer", + "description": "Score for search ordination.", + "nullable": true + }, + "LinkId": { + "type": "string", + "description": "Text Link.", + "nullable": true + }, + "HasChildren": { + "type": "boolean", + "description": "Defines if the category has child categories (`true`) or not (`false`)." + } + }, + "example": { + "Id": 1, + "Name": "Home Appliances", + "FatherCategoryId": null, + "Title": "Home Appliances", + "Description": "Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.", + "Keywords": "Kitchen, Laundry, Appliances", + "IsActive": true, + "LomadeeCampaignCode": "", + "AdWordsRemarketingCode": "", + "ShowInStoreFront": true, + "ShowBrandFilter": true, + "ActiveStoreFrontLink": true, + "GlobalCategoryId": 3367, + "StockKeepingUnitSelectionMode": "LIST", + "Score": null, + "LinkId": "Alimentacao", + "HasChildren": true + } + }, + "CreateCategoryRequest": { + "type": "object", + "required": [ + "Name", + "Keywords", + "Title", + "Description", + "AdWordsRemarketingCode", + "LomadeeCampaignCode", + "FatherCategoryId", + "GlobalCategoryId", + "ShowInStoreFront", + "IsActive", + "ActiveStoreFrontLink", + "ShowBrandFilter", + "Score", + "StockKeepingUnitSelectionMode" + ], + "properties": { + "Id": { + "type": "integer", + "description": "Category unique identifier. If not informed, it will be automatically generated by VTEX.", + "example": 1 + }, + "Name": { + "type": "string", + "description": "Category name.", + "example": "Home Appliances" + }, + "Keywords": { + "type": "string", + "description": "Substitute words for the Category.", + "example": "Kitchen, Laundry, Appliances" + }, + "Title": { + "type": "string", + "description": "Text used in title tag for Category page.", + "example": "Home Appliances" + }, + "Description": { + "type": "string", + "description": "Text used in meta description tag for Category page.", + "example": "Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now." + }, + "AdWordsRemarketingCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "example": "Sale", + "nullable": true, + "deprecated": true + }, + "LomadeeCampaignCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "example": "Sale", + "nullable": true, + "deprecated": true + }, + "FatherCategoryId": { + "type": "integer", + "description": "ID of the parent category, apply in case of category and subcategory.", + "example": 2, + "nullable": true + }, + "GlobalCategoryId": { + "type": "integer", + "description": "Google Global Category ID.", + "example": 222 + }, + "ShowInStoreFront": { + "type": "boolean", + "description": "If true, the Category is shown in the top and side menu.", + "example": true + }, + "IsActive": { + "type": "boolean", + "description": "If true, the Category page becomes available in store.", + "example": true + }, + "ActiveStoreFrontLink": { + "type": "boolean", + "description": "If true, the Category link becomes active in store.", + "example": true + }, + "ShowBrandFilter": { + "type": "boolean", + "description": "If true, the Category page displays a Brand filter.", + "example": true + }, + "Score": { + "type": "integer", + "description": "Score for search sorting order.", + "nullable": true, + "example": 3 + }, + "StockKeepingUnitSelectionMode": { + "type": "string", + "description": "Defines how the SKU will be exhibited", + "example": "SPECIFICATION" + } + }, + "example": { + "Name": "Home Appliances", + "FatherCategoryId": null, + "Title": "Home Appliances", + "Description": "Discover our range of home appliances. Find smart vacuums, kitchen and laundry appliances to suit your needs. Order online now.", + "Keywords": "Kitchen, Laundry, Appliances", + "IsActive": true, + "LomadeeCampaignCode": null, + "AdWordsRemarketingCode": null, + "ShowInStoreFront": true, + "ShowBrandFilter": true, + "ActiveStoreFrontLink": true, + "GlobalCategoryId": 800, + "StockKeepingUnitSelectionMode": "SPECIFICATION", + "Score": null + } + }, + "GetorUpdateProductSpecification": { + "required": [ + "Value" + ], + "type": "object", + "properties": { + "Value": { + "type": "array", + "description": "Array with Specification values.", + "items": { + "type": "string", + "description": "Specification value.", + "example": "Cotton" + } + }, + "Id": { + "type": "integer", + "format": "int32", + "description": "Specification field ID, which is the same as `FieldId` in other specification endpoints.", + "example": 7 + }, + "Name": { + "type": "string", + "description": "Name of the Specification.", + "example": "Fabric" + } + }, + "example": { + "Value": [ + "Iron", + "Plastic" + ], + "Id": 30, + "Name": "Material" + } + }, + "GetSKUandContext": { + "required": [ + "Id", + "ProductId", + "NameComplete", + "ProductName", + "ProductDescription", + "SkuName", + "IsActive", + "IsTransported", + "IsInventoried", + "IsGiftCardRecharge", + "ImageUrl", + "DetailUrl", + "CSCIdentification", + "BrandId", + "BrandName", + "Dimension", + "RealDimension", + "ManufacturerCode", + "IsKit", + "KitItems", + "Services", + "Categories", + "Attachments", + "Collections", + "SkuSellers", + "SalesChannels", + "Images", + "SkuSpecifications", + "ProductSpecifications", + "ProductClustersIds", + "ProductCategoryIds", + "ProductGlobalCategoryId", + "ProductCategories", + "CommercialConditionId", + "RewardValue", + "AlternateIds", + "AlternateIdValues", + "EstimatedDateArrival", + "MeasurementUnit", + "UnitMultiplier", + "InformationSource", + "ModalType" + ], + "type": "object", + "properties": { + "Id": { + "type": "integer", + "format": "int32", + "description": "SKU ID." + }, + "ProductId": { + "type": "integer", + "format": "int32", + "description": "ID of the related Product." + }, + "NameComplete": { + "type": "string", + "description": "Product Name and SKU Name concatenated." + }, + "ComplementName": { + "type": "string", + "description": "Product Complement Name." + }, + "ProductName": { + "type": "string", + "description": "Product Name." + }, + "ProductDescription": { + "type": "string", + "description": "Product Description. HTML is allowed." + }, + "ProductRefId": { + "type": "string", + "description": "Reference ID of the related Product." + }, + "TaxCode": { + "type": "string", + "description": "SKU Tax Code." + }, + "SkuName": { + "type": "string", + "description": "SKU Name." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the SKU is active or not." + }, + "IsTransported": { + "type": "boolean", + "nullable": true, + "deprecated": true + }, + "IsInventoried": { + "type": "boolean", + "nullable": true, + "deprecated": true + }, + "IsGiftCardRecharge": { + "type": "boolean", + "description": "Defines if the purchase will generate a reward." + }, + "ImageUrl": { + "type": "string", + "description": "SKU image URL." + }, + "DetailUrl": { + "type": "string", + "description": "Product URL." + }, + "CSCIdentification": { + "type": "string", + "nullable": true, + "description": "SKU Seller identification." + }, + "BrandId": { + "type": "string", + "description": "Product Brand ID." + }, + "BrandName": { + "type": "string", + "description": "Product Brand Name." + }, + "Dimension": { + "$ref": "#/components/schemas/Dimension" + }, + "RealDimension": { + "$ref": "#/components/schemas/RealDimension" + }, + "ManufacturerCode": { + "type": "string", + "description": "Product Supplier ID." + }, + "IsKit": { + "type": "boolean", + "description": "Defines if the SKU is part of a bundle." + }, + "KitItems": { + "type": "array", + "items": { + "type": "string", + "description": "SKU ID." + }, + "description": "Array with SKU IDs of bundle components." + }, + "Services": { + "type": "array", + "items": { + "type": "string", + "description": "Service ID." + }, + "description": "Array with Service IDs that are related to the SKU." + }, + "Categories": { + "type": "array", + "items": { + "type": "string", + "description": "Category ID." + }, + "description": "Array with Categories from the related Product." + }, + "Attachments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Attachment" + }, + "description": "Array with Attachments ID that are related to the SKU." + }, + "Collections": { + "type": "array", + "items": { + "type": "string", + "description": "Collection ID." + }, + "description": "Array with Collections ID that are related to the Product." + }, + "SkuSellers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SkuSeller" + }, + "description": "Array with SKU Sellers data." + }, + "SalesChannels": { + "type": "array", + "items": { + "type": "integer", + "format": "int32" + }, + "description": "Array with the ID of all the Sales Channels that are related to the product." + }, + "Images": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Image" + }, + "description": "Array with SKU images." + }, + "SkuSpecifications": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SkuSpecification" + }, + "description": "Array with related SKU Specifications." + }, + "ProductSpecifications": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductSpecification" + }, + "description": "Array with related Product Specifications." + }, + "ProductClusterNames": { + "type": "object", + "additionalProperties": { + "type": "string", + "description": "Collection ID", + "additionalProperties": { + "type": "string", + "description": "Category Name." + } + } + }, + "ProductClustersIds": { + "type": "string", + "description": "Product Clusters IDs." + }, + "ProductCategoryIds": { + "type": "string", + "description": "Category Hierarchy with Category IDs." + }, + "ProductGlobalCategoryId": { + "type": "integer", + "nullable": true, + "description": "Global Category ID." + }, + "ProductCategories": { + "type": "object", + "description": "Object containing product categories. Structure: \"{CategoryID}\": \"{CategoryName}\".", + "additionalProperties": { + "type": "string", + "description": "Category ID.", + "additionalProperties": { + "type": "string", + "description": "Category Name." + } + } + }, + "CommercialConditionId": { + "type": "integer", + "format": "int32", + "description": "SKU Commercial Condition ID." + }, + "RewardValue": { + "type": "number", + "description": "Reward value related to the SKU." + }, + "AlternateIds": { + "$ref": "#/components/schemas/AlternateIds" + }, + "AlternateIdValues": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array with values of alternative SKU IDs." + }, + "EstimatedDateArrival": { + "type": "string", + "nullable": true, + "description": "To add the product as pre-sale, enter the product estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format. You must take into consideration both the launch date and the freight calculation for the arrival date." + }, + "MeasurementUnit": { + "type": "string", + "description": "SKU Measurement Unit." + }, + "UnitMultiplier": { + "type": "number", + "description": "This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward." + }, + "InformationSource": { + "type": "string", + "description": "Information Source.", + "nullable": true + }, + "ModalType": { + "type": "string", + "nullable": true, + "description": "Modal Type." + }, + "KeyWords": { + "type": "string", + "nullable": true, + "description": "Keywords related to the product." + }, + "ReleaseDate": { + "type": "string", + "nullable": true, + "description": "Release date of the product." + }, + "ProductIsVisible": { + "type": "boolean", + "description": "Defines if the product is visible or not." + }, + "ShowIfNotAvailable": { + "type": "boolean", + "description": "Defines if the product will be shown if it is not available." + }, + "IsProductActive": { + "type": "boolean", + "description": "Defines if the product is active or not." + }, + "ProductFinalScore": { + "type": "integer", + "description": "Product Final Score." + } + }, + "example": { + "Id": 310118450, + "ProductId": 2, + "NameComplete": "Caixa de Areia Azul Petmate sku test", + "ComplementName": "", + "ProductName": "Caixa de Areia Azul Petmate", + "ProductDescription": "", + "ProductRefId": "", + "TaxCode": "", + "SkuName": "sku test", + "IsActive": true, + "IsTransported": true, + "IsInventoried": true, + "IsGiftCardRecharge": false, + "ImageUrl": "https://lojadobreno.vteximg.com.br/arquivos/ids/155451-55-55/caixa-areia-azul-petmate.jpg?v=637139451191670000", + "DetailUrl": "/caixa-de-areia-azul-petmate/p", + "CSCIdentification": null, + "BrandId": "2000005", + "BrandName": "Petmate", + "IsBrandActive": true, + "Dimension": { + "cubicweight": 0.2083, + "height": 10.0000, + "length": 10.0000, + "weight": 10.0000, + "width": 10.0000 + }, + "RealDimension": { + "realCubicWeight": 0.000, + "realHeight": 0.0, + "realLength": 0.0, + "realWeight": 0.0, + "realWidth": 0.0 + }, + "ManufacturerCode": "123", + "IsKit": false, + "KitItems": [], + "Services": [], + "Categories": [], + "CategoriesFullPath": [ + "/3/15/", + "/3/", + "/1/" + ], + "Attachments": [], + "Collections": [], + "SkuSellers": [ + { + "SellerId": "1", + "StockKeepingUnitId": 310118450, + "SellerStockKeepingUnitId": "310118450", + "IsActive": true, + "FreightCommissionPercentage": 0.0, + "ProductCommissionPercentage": 0.0 + } + ], + "SalesChannels": [ + 1, + 3 + ], + "Images": [ + { + "ImageUrl": "https://lojadobreno.vteximg.com.br/arquivos/ids/155451/caixa-areia-azul-petmate.jpg?v=637139451191670000", + "ImageName": null, + "FileId": 155451 + } + ], + "Videos": [], + "SkuSpecifications": [], + "ProductSpecifications": [], + "ProductClustersIds": "151,158", + "PositionsInClusters": { + "151": 1, + "158": 2 + }, + "ProductClusterNames": { + "151": "asdfghj", + "158": "Coleção halloween" + }, + "ProductClusterHighlights": { + "151": "asdfghj" + }, + "ProductCategoryIds": "/3/15/", + "IsDirectCategoryActive": true, + "ProductGlobalCategoryId": 5000, + "ProductCategories": { + "15": "Caixa de Areia", + "3": "Higiene", + "1": "Alimentação" + }, + "CommercialConditionId": 1, + "RewardValue": 0.0, + "AlternateIds": { + "RefId": "1" + }, + "AlternateIdValues": [ + "1" + ], + "EstimatedDateArrival": null, + "MeasurementUnit": "un", + "UnitMultiplier": 1.0000, + "InformationSource": null, + "ModalType": null, + "KeyWords": "", + "ReleaseDate": "2020-01-06T00:00:00Z", + "ProductIsVisible": true, + "ShowIfNotAvailable": true, + "IsProductActive": true, + "ProductFinalScore": 0 + } + }, + "Dimension": { + "required": [ + "cubicweight", + "height", + "length", + "weight", + "width" + ], + "type": "object", + "description": "Object containing the SKU dimensions to be used on the shipping calculation.", + "properties": { + "cubicweight": { + "type": "number", + "description": "SKU Cubic Weight." + }, + "height": { + "type": "number", + "description": "SKU Height." + }, + "length": { + "type": "number", + "description": "SKU Length." + }, + "weight": { + "type": "number", + "description": "SKU Weight." + }, + "width": { + "type": "number", + "description": "SKU Width." + } + }, + "example": { + "cubicweight": 81.6833, + "height": 65, + "length": 58, + "weight": 10000, + "width": 130 + } + }, + "RealDimension": { + "required": [ + "realCubicWeight", + "realHeight", + "realLength", + "realWeight", + "realWidth" + ], + "type": "object", + "description": "Object containing the real SKU dimensions, which appear in the product page.", + "properties": { + "realCubicWeight": { + "type": "number", + "description": "Real SKU Cubic Weight." + }, + "realHeight": { + "type": "number", + "description": "Real SKU Height." + }, + "realLength": { + "type": "number", + "description": "Real SKU Length." + }, + "realWeight": { + "type": "number", + "description": "Real SKU Weight." + }, + "realWidth": { + "type": "number", + "description": "Real SKU Width." + } + }, + "example": { + "realCubicWeight": 274.1375, + "realHeight": 241, + "realLength": 65, + "realWeight": 9800, + "realWidth": 105 + } + }, + "Attachment": { + "required": [ + "Id", + "Name", + "Keys", + "Fields", + "IsActive", + "IsRequired" + ], + "type": "object", + "description": "Object containing information about SKU attachments.", + "properties": { + "Id": { + "type": "integer", + "format": "int32", + "description": "Attachment ID." + }, + "Name": { + "type": "string", + "description": "Attachment Name." + }, + "Keys": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Attachment Keys." + }, + "Fields": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Field" + }, + "description": "Array containing Attachment fields." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the Attachment is active or not." + }, + "IsRequired": { + "type": "boolean", + "description": "Defines if the Attachment is required or not." + } + }, + "example": { + "Id": 3, + "Name": "Mensagem", + "Keys": [ + "nome;20", + "foto;40" + ], + "Fields": [ + { + "FieldName": "nome", + "MaxCaracters": "20", + "DomainValues": "Adalberto,Pedro,João" + }, + { + "FieldName": "foto", + "MaxCaracters": "40", + "DomainValues": null + } + ], + "IsActive": true, + "IsRequired": false + } + }, + "Field": { + "required": [ + "FieldName", + "MaxCaracters", + "DomainValues" + ], + "type": "object", + "properties": { + "FieldName": { + "type": "string", + "description": "Attachment field name." + }, + "MaxCaracters": { + "type": "string", + "description": "Maximum number of characters accepted in the attachment field." + }, + "DomainValues": { + "type": "string", + "nullable": true, + "description": "Allowed key values." + } + }, + "example": { + "FieldName": "nome", + "MaxCaracters": "20", + "DomainValues": "Adalberto,Pedro,João" + } + }, + "SkuSeller": { + "required": [ + "SellerId", + "StockKeepingUnitId", + "SellerStockKeepingUnitId", + "IsActive", + "FreightCommissionPercentage", + "ProductCommissionPercentage" + ], + "type": "object", + "description": "Object containing related SKU Sellers data.", + "properties": { + "SellerId": { + "type": "string", + "description": "SKU Seller ID. This is the ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID." + }, + "StockKeepingUnitId": { + "type": "integer", + "format": "int32", + "description": "SKU ID." + }, + "SellerStockKeepingUnitId": { + "type": "string", + "description": "SKU ID for the SKU Seller." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the SKU is active." + }, + "FreightCommissionPercentage": { + "type": "number", + "description": "Registered value for Seller Freight Commission." + }, + "ProductCommissionPercentage": { + "type": "number", + "description": "Registered value for Seller Product Commission." + } + }, + "example": { + "SellerId": "1", + "StockKeepingUnitId": 2001773, + "SellerStockKeepingUnitId": "2001773", + "IsActive": true, + "FreightCommissionPercentage": 0, + "ProductCommissionPercentage": 0 + } + }, + "Image": { + "required": [ + "ImageUrl", + "ImageName", + "FileId" + ], + "type": "object", + "description": "Object containing SKU images details.", + "properties": { + "ImageUrl": { + "type": "string", + "description": "Image URL." + }, + "ImageName": { + "type": "string", + "description": "Image label.", + "nullable": true + }, + "FileId": { + "type": "integer", + "format": "int32", + "description": "SKU image ID." + } + }, + "example": { + "ImageUrl": "http://ambienteqa.vteximg.com.br/arquivos/ids/168952/7508800GG.jpg", + "ImageName": "", + "FileId": 168952 + } + }, + "SkuSpecification": { + "required": [ + "FieldId", + "FieldName", + "FieldValueIds", + "FieldValues" + ], + "type": "object", + "description": "Object containing related SKU Specifications.", + "properties": { + "FieldId": { + "type": "integer", + "format": "int32", + "description": "Specification field ID." + }, + "FieldName": { + "type": "string", + "description": "Specification field Name." + }, + "FieldValueIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "description": "Specification Value ID." + }, + "description": "Array with related Specification Values IDs." + }, + "FieldValues": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array with related Specification Values." + } + }, + "example": { + "FieldId": 102, + "FieldName": "Cor", + "FieldValueIds": [ + 266 + ], + "FieldValues": [ + "Padrão" + ] + } + }, + "ProductSpecification": { + "required": [ + "FieldId", + "FieldName", + "FieldValueIds", + "FieldValues" + ], + "type": "object", + "properties": { + "FieldId": { + "type": "integer", + "format": "int32", + "description": "Specification field ID." + }, + "FieldName": { + "type": "string", + "description": "Specification name. Limited to 100 characters." + }, + "FieldValueIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int32", + "description": "Specification Value ID." + }, + "description": "Array with related Specification Values IDs." + }, + "FieldValues": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array with related Specification Values." + } + }, + "example": { + "FieldId": 7, + "FieldName": "Faixa Etária", + "FieldValueIds": [ + 58, + 56, + 55, + 52 + ], + "FieldValues": [ + "5 a 6 anos", + "7 a 8 anos", + "9 a 10 anos", + "Acima de 10 anos" + ] + } + }, + "AlternateIds": { + "type": "object", + "description": "Array with alternate SKU IDs, such as EAN and RefId.", + "properties": { + "Ean": { + "type": "string", + "description": "SKU EAN." + }, + "RefId": { + "type": "string", + "description": "SKU Reference ID." + } + }, + "example": { + "Ean": "8781", + "RefId": "878181" + } + }, + "GetSKUAltID": { + "required": [ + "Id", + "ProductId", + "NameComplete", + "ProductName", + "ProductDescription", + "SkuName", + "IsActive", + "IsTransported", + "IsInventoried", + "IsGiftCardRecharge", + "ImageUrl", + "DetailUrl", + "CSCIdentification", + "BrandId", + "BrandName", + "Dimension", + "RealDimension", + "ManufacturerCode", + "IsKit", + "KitItems", + "Services", + "Categories", + "Attachments", + "Collections", + "SkuSellers", + "SalesChannels", + "Images", + "SkuSpecifications", + "ProductSpecifications", + "ProductClustersIds", + "ProductCategoryIds", + "ProductGlobalCategoryId", + "ProductCategories", + "CommercialConditionId", + "RewardValue", + "AlternateIds", + "AlternateIdValues", + "EstimatedDateArrival", + "MeasurementUnit", + "UnitMultiplier", + "InformationSource", + "ModalType" + ], + "type": "object", + "properties": { + "Id": { + "type": "integer", + "format": "int32", + "description": "SKU ID." + }, + "ProductId": { + "type": "integer", + "format": "int32", + "description": "Product ID." + }, + "NameComplete": { + "type": "string", + "description": "Product Name and SKU Name combined." + }, + "ComplementName": { + "type": "string", + "description": "Product Complement Name." + }, + "ProductName": { + "type": "string", + "description": "Product Name." + }, + "ProductDescription": { + "type": "string", + "description": "Product Description. HTML is allowed." + }, + "ProductRefId": { + "type": "string", + "description": "Product Reference ID." + }, + "TaxCode": { + "type": "string", + "description": "SKU Tax Code." + }, + "SkuName": { + "type": "string", + "description": "SKU Name." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the SKU is active or not." + }, + "IsTransported": { + "type": "boolean", + "deprecated": true + }, + "IsInventoried": { + "type": "boolean", + "deprecated": true + }, + "IsGiftCardRecharge": { + "type": "boolean", + "description": "Defines if the purchase of the SKU will generate reward value for the customer." + }, + "ImageUrl": { + "type": "string", + "description": "SKU image URL." + }, + "DetailUrl": { + "type": "string", + "description": "Product slug." + }, + "CSCIdentification": { + "type": "string", + "nullable": true, + "description": "SKU Seller Identification." + }, + "BrandId": { + "type": "string", + "description": "Brand ID." + }, + "BrandName": { + "type": "string", + "description": "Brand Name." + }, + "Dimension": { + "$ref": "#/components/schemas/Dimension" + }, + "RealDimension": { + "$ref": "#/components/schemas/RealDimension" + }, + "ManufacturerCode": { + "type": "string", + "description": "Product Supplier ID." + }, + "IsKit": { + "type": "boolean", + "description": "Defines if the SKU is part of a bundle." + }, + "KitItems": { + "type": "array", + "description": "Array with SKU IDs of bundle components.", + "items": { + "type": "string", + "description": "SKU ID of each bundle component." + } + }, + "Services": { + "type": "array", + "description": "Array with Service IDs that are related to the SKU.", + "items": { + "type": "string", + "description": "Service IDs of each service related to the SKU." + } + }, + "Categories": { + "type": "array", + "description": "Categories of the related product.", + "items": { + "type": "string", + "description": "Category ID." + } + }, + "CategoriesFullPath": { + "type": "array", + "description": "Path of Categories of the related product.", + "items": { + "type": "string", + "description": "Path composed by Category IDs separated by `/`." + } + }, + "Attachments": { + "type": "array", + "description": "Array with Attachments ID that are related to the SKU.", + "items": { + "$ref": "#/components/schemas/Attachment" + } + }, + "Collections": { + "type": "array", + "description": "Array with Collections IDs that are related to the Product.", + "items": { + "type": "string", + "description": "Collection ID." + } + }, + "SkuSellers": { + "type": "array", + "description": "Array with related Sellers data.", + "items": { + "$ref": "#/components/schemas/SkuSeller" + } + }, + "SalesChannels": { + "type": "array", + "description": "Array of trade policy IDs.", + "items": { + "type": "integer", + "format": "int32", + "description": "Trade policy ID." + } + }, + "Images": { + "type": "array", + "description": "Array of objects with SKU image details.", + "items": { + "$ref": "#/components/schemas/Image" + } + }, + "SkuSpecifications": { + "type": "array", + "description": "Array with related SKU Specifications.", + "items": { + "$ref": "#/components/schemas/SkuSpecification" + } + }, + "ProductSpecifications": { + "type": "array", + "description": "Array with related Product Specifications.", + "items": { + "$ref": "#/components/schemas/ProductSpecification" + } + }, + "ProductClustersIds": { + "type": "string", + "description": "Product Cluster IDs separated by comma (`,`)." + }, + "PositionsInClusters": { + "type": "object", + "description": "Product Clusters position in each Cluster. Structure: \"{Product Cluster ID}\": {Position}.\n\n`{Product Cluster ID}` is a string, while `{Position}` is an integer.", + "additionalProperties": { + "type": "integer", + "description": "Product Cluster ID.", + "additionalProperties": { + "type": "integer", + "description": "Position." + } + } + }, + "ProductClusterNames": { + "type": "object", + "description": "Product Clusters Names. Structure: \"{Product Cluster ID}\": \"{Product Cluster Name}\". Both the key and the value are strings.", + "additionalProperties": { + "type": "string", + "description": "Product Cluster ID.", + "additionalProperties": { + "type": "string", + "description": "Product Cluster Name." + } + } + }, + "ProductClusterHighlights": { + "type": "object", + "description": "Product Clusters Highlights. Structure: \"{Product Cluster ID}\": \"{Product Cluster Name}\". Both the key and the value are strings.", + "additionalProperties": { + "type": "string", + "description": "Product Cluster ID.", + "additionalProperties": { + "type": "string", + "description": "Product Cluster Highlight." + } + } + }, + "ProductCategoryIds": { + "type": "string", + "description": "Category path composed by category IDs separated by `/`." + }, + "IsDirectCategoryActive": { + "type": "boolean", + "description": "Indicates if the direct Product Category is active or not." + }, + "ProductGlobalCategoryId": { + "type": "integer", + "nullable": true, + "description": "Product Global Category ID." + }, + "ProductCategories": { + "type": "object", + "description": "Object containing product categories. Structure: \"{CategoryID}\": \"{CategoryName}\". Both the key and the value are strings.", + "additionalProperties": { + "type": "string", + "description": "Category ID.", + "additionalProperties": { + "type": "string", + "description": "Category Name." + } + } + }, + "CommercialConditionId": { + "type": "integer", + "format": "int32", + "description": "SKU Commercial Condition ID." + }, + "RewardValue": { + "type": "number", + "description": "Reward value related to the SKU." + }, + "AlternateIds": { + "$ref": "#/components/schemas/AlternateIds" + }, + "AlternateIdValues": { + "type": "array", + "description": "Array with values of alternative SKU IDs.", + "items": { + "type": "string", + "description": "Alternative SKU ID." + } + }, + "EstimatedDateArrival": { + "type": "string", + "nullable": true, + "description": "SKU estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format, when the product is on pre-sale. You must take into consideration both the launch date and the freight calculation for the arrival date." + }, + "MeasurementUnit": { + "type": "string", + "description": "Measurement unit." + }, + "UnitMultiplier": { + "type": "number", + "description": "This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward." + }, + "InformationSource": { + "type": "string", + "nullable": true, + "description": "Information Source." + }, + "ModalType": { + "type": "string", + "nullable": true, + "description": "Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. \"Chemicals\" or \"Refrigerated products\"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy)." + }, + "KeyWords": { + "type": "string", + "nullable": true, + "description": "Keywords related to the product." + }, + "ReleaseDate": { + "type": "string", + "nullable": true, + "description": "Release date of the product." + }, + "ProductIsVisible": { + "type": "boolean", + "description": "Defines if the product is visible or not." + }, + "ShowIfNotAvailable": { + "type": "boolean", + "description": "Defines if the product will be shown if it is not available." + }, + "IsProductActive": { + "type": "boolean", + "description": "Defines if the product is active or not." + }, + "ProductFinalScore": { + "type": "integer", + "description": "Product Final Score." + } + }, + "example": { + "Id": 310118450, + "ProductId": 2, + "NameComplete": "Caixa de Areia Azul Petmate sku test", + "ComplementName": "", + "ProductName": "Caixa de Areia Azul Petmate", + "ProductDescription": "", + "ProductRefId": "", + "TaxCode": "", + "SkuName": "sku test", + "IsActive": true, + "IsTransported": true, + "IsInventoried": true, + "IsGiftCardRecharge": false, + "ImageUrl": "https://lojadobreno.vteximg.com.br/arquivos/ids/155451-55-55/caixa-areia-azul-petmate.jpg?v=637139451191670000", + "DetailUrl": "/caixa-de-areia-azul-petmate/p", + "CSCIdentification": null, + "BrandId": "2000005", + "BrandName": "Petmate", + "IsBrandActive": true, + "Dimension": { + "cubicweight": 0.2083, + "height": 10.0000, + "length": 10.0000, + "weight": 10.0000, + "width": 10.0000 + }, + "RealDimension": { + "realCubicWeight": 0.000, + "realHeight": 0.0, + "realLength": 0.0, + "realWeight": 0.0, + "realWidth": 0.0 + }, + "ManufacturerCode": "123", + "IsKit": false, + "KitItems": [], + "Services": [], + "Categories": [], + "CategoriesFullPath": [ + "/3/15/", + "/3/", + "/1/" + ], + "Attachments": [], + "Collections": [], + "SkuSellers": [ + { + "SellerId": "1", + "StockKeepingUnitId": 310118450, + "SellerStockKeepingUnitId": "310118450", + "IsActive": true, + "FreightCommissionPercentage": 0.0, + "ProductCommissionPercentage": 0.0 + } + ], + "SalesChannels": [ + 1, + 3 + ], + "Images": [ + { + "ImageUrl": "https://lojadobreno.vteximg.com.br/arquivos/ids/155451/caixa-areia-azul-petmate.jpg?v=637139451191670000", + "ImageName": null, + "FileId": 155451 + } + ], + "Videos": [], + "SkuSpecifications": [], + "ProductSpecifications": [], + "ProductClustersIds": "151,158", + "PositionsInClusters": { + "151": 1, + "158": 2 + }, + "ProductClusterNames": { + "151": "asdfghj", + "158": "Coleção halloween" + }, + "ProductClusterHighlights": { + "151": "asdfghj" + }, + "ProductCategoryIds": "/3/15/", + "IsDirectCategoryActive": true, + "ProductGlobalCategoryId": 5000, + "ProductCategories": { + "15": "Caixa de Areia", + "3": "Higiene", + "1": "Alimentação" + }, + "CommercialConditionId": 1, + "RewardValue": 0.0, + "AlternateIds": { + "RefId": "1" + }, + "AlternateIdValues": [ + "1" + ], + "EstimatedDateArrival": null, + "MeasurementUnit": "un", + "UnitMultiplier": 1.0000, + "InformationSource": null, + "ModalType": null, + "KeyWords": "", + "ReleaseDate": "2020-01-06T00:00:00Z", + "ProductIsVisible": true, + "ShowIfNotAvailable": true, + "IsProductActive": true, + "ProductFinalScore": 0 + } + }, + "SkulistbyProductId": { + "type": "object", + "properties": { + "IsPersisted": { + "type": "boolean", + "description": "Defines if the SKU is persisted." + }, + "IsRemoved": { + "type": "boolean", + "deprecated": true, + "description": "Defines if the SKU is removed." + }, + "Id": { + "type": "integer", + "format": "int32", + "description": "SKU ID." + }, + "ProductId": { + "type": "integer", + "format": "int32", + "description": "Product ID." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the SKU is active or not." + }, + "Name": { + "type": "string", + "description": "SKU Name." + }, + "Height": { + "type": "number", + "description": "SKU Height." + }, + "RealHeight": { + "type": "number", + "nullable": true, + "description": "Real SKU Height." + }, + "Width": { + "type": "number", + "description": "SKU Width." + }, + "RealWidth": { + "type": "number", + "nullable": true, + "description": "Real SKU Width." + }, + "Length": { + "type": "number", + "description": "SKU Length." + }, + "RealLength": { + "type": "number", + "nullable": true, + "description": "Real SKU Length." + }, + "WeightKg": { + "type": "number", + "nullable": true, + "description": "Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams." + }, + "RealWeightKg": { + "type": "number", + "nullable": true, + "description": "Real Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams." + }, + "ModalId": { + "type": "integer", + "format": "int32", + "description": "Delivery Method (Modal Type) ID." + }, + "RefId": { + "type": "string", + "description": "Product Reference ID." + }, + "CubicWeight": { + "type": "number", + "description": "[Cubic weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128)." + }, + "IsKit": { + "type": "boolean", + "description": "Flag to set whether the product SKU is made up of one or more SKUs, thereby becoming a bundle. Must be enabled if you are adding a bundle. Once activated, the flag cannot be reverted." + }, + "IsDynamicKit": { + "type": "string", + "nullable": true, + "deprecated": true + }, + "InternalNote": { + "type": "string", + "nullable": true, + "description": "Internal note." + }, + "DateUpdated": { + "type": "string", + "description": "Date when the product was updated for the most recent time." + }, + "RewardValue": { + "type": "number", + "nullable": true, + "description": "Reward value related to the SKU." + }, + "CommercialConditionId": { + "type": "integer", + "format": "int32", + "description": "SKU Commercial Condition ID." + }, + "EstimatedDateArrival": { + "type": "string", + "nullable": true, + "description": "SKU estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format, when the product is on pre-sale. You must take into consideration both the launch date and the freight calculation for the arrival date." + }, + "FlagKitItensSellApart": { + "type": "boolean", + "description": "Defines if the SKU bundle items can be sold separately." + }, + "ManufacturerCode": { + "type": "string", + "description": "Product Supplier ID." + }, + "ReferenceStockKeepingUnitId": { + "type": "string", + "nullable": true, + "description": "SKU Reference ID." + }, + "Position": { + "type": "integer", + "format": "int32", + "description": "SKU Position." + }, + "ActivateIfPossible": { + "type": "boolean", + "description": "When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component." + }, + "MeasurementUnit": { + "type": "string", + "description": "Measurement unit." + }, + "UnitMultiplier": { + "type": "number", + "description": "This is the multiple number of SKU. If the Multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward." + }, + "IsInventoried": { + "type": "boolean", + "nullable": true, + "deprecated": true + }, + "IsTransported": { + "type": "boolean", + "nullable": true, + "deprecated": true + }, + "IsGiftCardRecharge": { + "type": "boolean", + "nullable": true, + "description": "Defines if the purchase of the SKU will generate reward value for the customer." + }, + "ModalType": { + "type": "string", + "nullable": true, + "description": "Links an unusual type of SKU to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. \"Chemicals\" or \"Refrigerated products\"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy)." + }, + "isKitOptimized": { + "type": "boolean", + "description": "Defines if the SKU is a Optimized bundle." + } + }, + "example": { + "IsPersisted": true, + "Id": 1, + "ProductId": 1, + "IsActive": true, + "Name": "Ração Royal Canin Feline Urinary 500g", + "Height": 6.5000, + "RealHeight": 2.2000, + "Width": 14.0000, + "RealWidth": 3.3000, + "Length": 24.0000, + "RealLength": 4.4000, + "WeightKg": 550.0000, + "RealWeightKg": 1.1000, + "ModalId": 1, + "RefId": "0001", + "CubicWeight": 1.0000, + "IsKit": false, + "InternalNote": null, + "DateUpdated": "2021-10-29T18:25:00", + "RewardValue": null, + "CommercialConditionId": 1, + "EstimatedDateArrival": null, + "FlagKitItensSellApart": false, + "ManufacturerCode": "", + "ReferenceStockKeepingUnitId": null, + "Position": 1, + "ActivateIfPossible": true, + "MeasurementUnit": "un", + "UnitMultiplier": 300.0000, + "IsInventoried": true, + "IsTransported": true, + "IsGiftCardRecharge": false, + "ModalType": null, + "isKitOptimized": false + } + }, + "CreateSellerRequest": { + "type": "object", + "required": [ + "SellerId", + "Name", + "Email", + "Description", + "ExchangeReturnPolicy", + "DeliveryPolicy", + "UseHybridPaymentOptions", + "UserName", + "Password", + "SecutityPrivacyPolicy", + "CNPJ", + "CSCIdentification", + "ArchiveId", + "UrlLogo", + "ProductCommissionPercentage", + "FreightCommissionPercentage", + "FulfillmentEndpoint", + "CatalogSystemEndpoint", + "IsActive", + "FulfillmentSellerId", + "SellerType", + "IsBetterScope" + ], + "properties": { + "SellerId": { + "type": "string", + "description": "Code used to identify the seller. It is assigned by the marketplace. We recommend filling it in with the seller's account name.", + "example": "pedrostore" + }, + "Name": { + "type": "string", + "description": "Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method.", + "example": "My pedrostore" + }, + "Email": { + "type": "string", + "description": "Email of the admin responsible for the seller.", + "example": "breno@breno.com" + }, + "Description": { + "type": "string", + "description": "Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563).", + "example": "Brief description" + }, + "ExchangeReturnPolicy": { + "type": "string", + "description": "Text describing the exchange and return policy previously agreed between the marketplace and the seller.", + "example": "Exchange return policy text" + }, + "DeliveryPolicy": { + "type": "string", + "description": "Text describing the delivery policy previously agreed between the marketplace and the seller.", + "example": "Delivery policy text" + }, + "UseHybridPaymentOptions": { + "type": "boolean", + "description": "Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller.", + "example": false + }, + "UserName": { + "type": "string", + "description": "Seller username.", + "example": "myseller" + }, + "Password": { + "type": "string", + "description": "Seller password.", + "example": "passoword" + }, + "SecutityPrivacyPolicy": { + "type": "string", + "description": "Text describing the security policy previously agreed between the marketplace and the seller.", + "example": "Secutity privacy policy text" + }, + "CNPJ": { + "type": "string", + "description": "Company registration number.", + "example": "12035072751" + }, + "CSCIdentification": { + "type": "string", + "description": "CSC identification.", + "example": "pedrostore" + }, + "ArchiveId": { + "type": "integer", + "description": "Seller archive ID.", + "example": 1 + }, + "UrlLogo": { + "type": "string", + "description": "Seller URL logo.", + "example": "/myseller" + }, + "ProductCommissionPercentage": { + "type": "number", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`.", + "example": 0.0 + }, + "FreightCommissionPercentage": { + "type": "number", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`.", + "example": 0.0 + }, + "CategoryCommissionPercentage": { + "type": "string", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`.", + "example": "[{\"CategoryId\":14,\"ProductCommission\":15.0,\"FreightCommission\":0.0}]" + }, + "FulfillmentEndpoint": { + "type": "string", + "description": "URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don’t need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added.", + "example": "http://pedrostore.vtexcommercestable.com.br/api/fulfillment?affiliateid=LDB&sc=1" + }, + "CatalogSystemEndpoint": { + "type": "string", + "description": "URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`.", + "example": "http://pedrostore.vtexcommercestable.com.br/api/catalog_system/" + }, + "IsActive": { + "type": "boolean", + "description": "If the selle is active (`true`) or not (`false`).", + "example": true + }, + "MerchantName": { + "type": "string", + "description": "Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-payment--6k5JidhYRUxileNolY2VLx) article to know more.", + "example": "pedrostore" + }, + "FulfillmentSellerId": { + "type": "integer", + "description": "Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank.", + "example": 1 + }, + "SellerType": { + "type": "integer", + "description": "Seller type.", + "example": 1 + }, + "IsBetterScope": { + "type": "boolean", + "description": "Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI).", + "example": false + }, + "TrustPolicy": { + "type": "string", + "description": "Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`.", + "example": "Default" + } + } + }, + "UpdateSellerRequest": { + "type": "object", + "required": [ + "SellerId", + "Name", + "Email", + "Description", + "ExchangeReturnPolicy", + "DeliveryPolicy", + "UseHybridPaymentOptions", + "UserName", + "Password", + "SecutityPrivacyPolicy", + "CNPJ", + "CSCIdentification", + "ArchiveId", + "UrlLogo", + "ProductCommissionPercentage", + "FreightCommissionPercentage", + "FulfillmentEndpoint", + "CatalogSystemEndpoint", + "IsActive", + "FulfillmentSellerId", + "SellerType", + "IsBetterScope" + ], + "properties": { + "SellerId": { + "type": "string", + "description": "ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID.", + "example": "pedrostore" + }, + "Name": { + "type": "string", + "description": "Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method.", + "example": "My pedrostore" + }, + "Email": { + "type": "string", + "description": "Email of the admin responsible for the seller.", + "example": "breno@breno.com" + }, + "Description": { + "type": "string", + "description": "Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563).", + "example": "Brief description" + }, + "ExchangeReturnPolicy": { + "type": "string", + "description": "Text describing the exchange and return policy previously agreed between the marketplace and the seller.", + "example": "Exchange return policy text" + }, + "DeliveryPolicy": { + "type": "string", + "description": "Text describing the delivery policy previously agreed between the marketplace and the seller.", + "example": "Delivery policy text" + }, + "UseHybridPaymentOptions": { + "type": "boolean", + "description": "Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller.", + "example": false + }, + "UserName": { + "type": "string", + "description": "Seller username.", + "example": "myseller" + }, + "Password": { + "type": "string", + "description": "Seller password.", + "example": "passoword" + }, + "SecutityPrivacyPolicy": { + "type": "string", + "description": "Text describing the security policy previously agreed between the marketplace and the seller.", + "example": "Secutity privacy policy text" + }, + "CNPJ": { + "type": "string", + "description": "Company registration number.", + "example": "12035072751" + }, + "CSCIdentification": { + "type": "string", + "description": "CSC identification.", + "example": "pedrostore" + }, + "ArchiveId": { + "type": "integer", + "description": "Seller archive ID.", + "example": 1 + }, + "UrlLogo": { + "type": "string", + "description": "Seller URL logo.", + "example": "/myseller" + }, + "ProductCommissionPercentage": { + "type": "number", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`.", + "example": 0.0 + }, + "FreightCommissionPercentage": { + "type": "number", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`.", + "example": 0.0 + }, + "CategoryCommissionPercentage": { + "type": "string", + "description": "The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`.", + "example": "[{\"CategoryId\":14,\"ProductCommission\":15.0,\"FreightCommission\":0.0}]" + }, + "FulfillmentEndpoint": { + "type": "string", + "description": "URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don’t need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added.", + "example": "http://pedrostore.vtexcommercestable.com.br/api/fulfillment?affiliateid=LDB&sc=1" + }, + "CatalogSystemEndpoint": { + "type": "string", + "description": "URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`.", + "example": "http://pedrostore.vtexcommercestable.com.br/api/catalog_system/" + }, + "IsActive": { + "type": "boolean", + "description": "If the selle is active (`true`) or not (`false`).", + "example": true + }, + "MerchantName": { + "type": "string", + "description": "Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-payment--6k5JidhYRUxileNolY2VLx) article to know more.", + "example": "pedrostore" + }, + "FulfillmentSellerId": { + "type": "integer", + "description": "Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank.", + "example": 1 + }, + "SellerType": { + "type": "integer", + "description": "Seller type.", + "example": 1 + }, + "IsBetterScope": { + "type": "boolean", + "description": "Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI).", + "example": false + }, + "TrustPolicy": { + "type": "string", + "description": "Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`.", + "example": "Default" + } + } + }, + "CategorySpecification": { + "required": [ + "Name", + "CategoryId", + "FieldId", + "IsActive", + "IsStockKeepingUnit" + ], + "type": "array", + "description": "Array of objects.", + "items": { + "type": "object", + "description": "Object containing Specification information.", + "properties": { + "Name": { + "type": "string", + "description": "Specification name. Limited to 100 characters.", + "example": "Composition" + }, + "CategoryId": { + "type": "integer", + "description": "Category ID.", + "example": 1 + }, + "FieldId": { + "type": "integer", + "description": "Specification field ID.", + "example": 1 + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the specification is active.", + "example": true + }, + "IsStockKeepingUnit": { + "type": "boolean", + "description": "Defines if it is an SKU specification.", + "example": true + } + } + }, + "example": [ + { + "Name": "Specification A", + "CategoryId": 1, + "FieldId": 33, + "IsActive": true, + "IsStockKeepingUnit": false + }, + { + "Name": "Specification B", + "CategoryId": 1, + "FieldId": 34, + "IsActive": true, + "IsStockKeepingUnit": false + }, + { + "Name": "Specification C", + "CategoryId": 1, + "FieldId": 35, + "IsActive": false, + "IsStockKeepingUnit": false + } + ] + }, + "GetSpecFieldValue": { + "required": [ + "FieldValueId", + "Value", + "IsActive", + "Position" + ], + "type": "object", + "properties": { + "FieldValueId": { + "type": "integer", + "format": "int32", + "description": "Specification Field Value ID." + }, + "Value": { + "type": "string", + "description": "Specification Field Value." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the Specification Field is active (`true`) or inactive (`false`)." + }, + "Position": { + "type": "integer", + "format": "int32", + "description": "Specification Field Value Position." + } + }, + "example": { + "FieldValueId": 52, + "Value": "0 a 6 meses", + "IsActive": true, + "Position": 1 + } + }, + "SpecificationsInsertFieldRequest": { + "required": [ + "Name", + "CategoryId", + "IsActive", + "FieldId", + "IsRequired", + "FieldTypeId", + "FieldValueId", + "Description", + "IsStockKeepingUnit", + "IsFilter", + "IsOnProductDetails", + "Position", + "IsWizard", + "IsTopMenuLinkActive", + "IsSideMenuLinkActive", + "DefaultValue", + "FieldGroupId", + "FieldGroupName" + ], + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Specification Field name. Limited to 100 characters." + }, + "CategoryId": { + "type": "integer", + "nullable": true, + "description": "Category ID." + }, + "FieldId": { + "type": "integer", + "nullable": true, + "description": "Specification Field ID." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the Specification Field is active. The default value is `true`." + }, + "IsRequired": { + "type": "boolean", + "description": "Makes the Specification Field mandatory (`true`) or optional (`false`)." + }, + "FieldTypeId": { + "type": "integer", + "format": "int32", + "description": "Specification Field Type ID." + }, + "FieldValueId": { + "type": "integer", + "nullable": true, + "description": "Specification Field Value ID." + }, + "Description": { + "type": "string", + "nullable": true, + "description": "Specification Field Description." + }, + "IsStockKeepingUnit": { + "type": "boolean", + "description": "If `true`, it will be added as a SKU specification. If `false`, it will be added as a product specification field." + }, + "IsFilter": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar.\r\n" + }, + "IsOnProductDetails": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal -If specification is visible on the product page.\r\n" + }, + "Position": { + "type": "integer", + "format": "int32", + "description": "Specification Field Position." + }, + "IsWizard": { + "type": "boolean", + "description": "Deprecated field.", + "deprecated": true + }, + "IsTopMenuLinkActive": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To make the specification visible in the store's upper menu.\r\n" + }, + "IsSideMenuLinkActive": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To make the specification field clickable in the search navigation bar.\r\n" + }, + "DefaultValue": { + "type": "string", + "nullable": true, + "description": "Specification Field default Value." + }, + "FieldGroupId": { + "type": "integer", + "format": "int32", + "description": "Specification Field Group ID." + }, + "FieldGroupName": { + "type": "string", + "description": "Specification Field Group Name." + } + }, + "example": { + "Name": "Material", + "CategoryId": 4, + "FieldId": 88, + "IsActive": true, + "IsRequired": true, + "FieldTypeId": 1, + "FieldValueId": 1, + "IsStockKeepingUnit": false, + "Description": "Composition of the product.", + "IsFilter": true, + "IsOnProductDetails": false, + "Position": 1, + "IsWizard": false, + "IsTopMenuLinkActive": true, + "IsSideMenuLinkActive": true, + "DefaultValue": null, + "FieldGroupId": 20, + "FieldGroupName": "Clothes specifications" + } + }, + "SpecificationsInsertFieldUpdateRequest": { + "required": [ + "Name", + "CategoryId", + "IsActive", + "FieldId", + "IsRequired", + "FieldTypeId", + "Description", + "IsStockKeepingUnit", + "IsWizard", + "IsFilter", + "IsOnProductDetails", + "Position", + "IsTopMenuLinkActive", + "IsSideMenuLinkActive", + "DefaultValue", + "FieldGroupId", + "FieldGroupName" + ], + "type": "object", + "properties": { + "Name": { + "type": "string", + "description": "Specification Field ID." + }, + "CategoryId": { + "type": "integer", + "nullable": true, + "description": "Category ID." + }, + "FieldId": { + "type": "integer", + "nullable": true, + "description": "Specification Field ID." + }, + "IsActive": { + "type": "boolean", + "description": "Enables(`true`) or disables (`false`) the Specification Field.", + "example": true + }, + "IsRequired": { + "type": "boolean", + "description": "Makes the Specification Field mandatory (`true`) or optional (`false`)." + }, + "FieldTypeId": { + "type": "integer", + "format": "int32", + "description": "Specification Field Type ID." + }, + "FieldValueId": { + "type": "integer", + "nullable": true, + "description": "Specification Field Value ID." + }, + "Description": { + "type": "string", + "nullable": true, + "description": "Specification Field Description." + }, + "IsStockKeepingUnit": { + "type": "boolean", + "description": "If `true`, it will be added as a SKU specification field. If `false`, it will be added as a product specification field." + }, + "IsFilter": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar.\r\n" + }, + "IsOnProductDetails": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal -If specification is visible on the product page.\r\n" + }, + "Position": { + "type": "integer", + "format": "int32", + "description": "Specification Field Position." + }, + "IsWizard": { + "type": "boolean", + "description": "Deprecated field.", + "deprecated": true + }, + "IsTopMenuLinkActive": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To make the specification visible in the store's upper menu.\r\n" + }, + "IsSideMenuLinkActive": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - To make the specification field clickable in the search navigation bar.\r\n", + "example": false + }, + "DefaultValue": { + "type": "string", + "nullable": true, + "description": "Specification Field default Value." + }, + "FieldGroupId": { + "type": "integer", + "format": "int32", + "description": "Specification Field Group ID." + }, + "FieldGroupName": { + "type": "string", + "description": "Specification Field Group Name." + } + } + }, + "SpecificationsInsertFieldValueRequest": { + "required": [ + "FieldId", + "Name", + "Text", + "IsActive", + "Position" + ], + "type": "object", + "properties": { + "FieldId": { + "type": "integer", + "format": "int32", + "description": "Specification Field ID." + }, + "Name": { + "type": "string", + "description": "Specification Field Value Name." + }, + "Text": { + "type": "string", + "description": "Specification Field Value Description." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the Specification Field Value is active (`true`) or inactive (`false`)." + }, + "Position": { + "type": "integer", + "format": "int32", + "description": "Specification Field Value Position." + } + }, + "example": { + "FieldValueId": 143, + "FieldId": 34, + "Name": "Cotton", + "Text": "Cotton fibers", + "IsActive": true, + "Position": 100 + } + }, + "SpecificationsUpdateFieldValueRequest": { + "required": [ + "FieldId", + "Name", + "Text", + "IsActive", + "Position" + ], + "type": "object", + "properties": { + "FieldId": { + "type": "integer", + "nullable": true, + "description": "Specification Field ID." + }, + "Name": { + "type": "string", + "description": "Specification Field Value Name." + }, + "Text": { + "type": "string", + "nullable": true, + "description": "Specification Field Value Description." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the Specification Field Value is active (`true`) or inactive (`false`)." + }, + "Position": { + "type": "integer", + "format": "int32", + "description": "Specification Field Position." + } + }, + "example": { + "FieldId": 1, + "FieldValueId": 143, + "Name": "Cotton", + "Text": "Cotton fibers", + "IsActive": true, + "Position": 100 + } + }, + "SpecificationsGroup": { + "required": [ + "CategoryId", + "Id", + "Name", + "Position" + ], + "type": "object", + "properties": { + "CategoryId": { + "type": "integer", + "nullable": true, + "description": "Category ID." + }, + "Id": { + "type": "integer", + "format": "int32", + "description": "Specification Group ID." + }, + "Name": { + "type": "string", + "description": "Specification Group Name." + }, + "Position": { + "type": "integer", + "format": "int32", + "nullable": true, + "description": "Specification Group Position." + } + }, + "example": { + "CategoryId": 1, + "Id": 4, + "Name": "Sizes", + "Position": 1 + } + }, + "SpecificationGroupInsertRequest": { + "required": [ + "CategoryId", + "Name" + ], + "type": "object", + "properties": { + "CategoryId": { + "type": "integer", + "format": "int32", + "description": "Category ID." + }, + "Name": { + "type": "string", + "description": "Specification Group Name." + } + }, + "example": { + "CategoryId": 1, + "Name": "GroupName1" + } + }, + "SkuComplement": { + "required": [ + "Id", + "SkuId", + "ParentSkuId", + "ComplementTypeId" + ], + "type": "array", + "items": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "SKU Complement’s unique numerical identifier." + }, + "SkuId": { + "type": "integer", + "description": "ID of the SKU which will be inserted as a Complement in the Parent SKU." + }, + "ParentSkuId": { + "type": "integer", + "description": "ID of the Parent SKU, where the Complement will be inserted." + }, + "ComplementTypeId": { + "type": "integer", + "description": "Complement Type ID. This represents the type of the complement. The possible values are: `1` for Accessory; `2` for Suggestion; `3` for Similar Product; `5` for Show Together." + } + } + }, + "example": [ + { + "Id": 61, + "SkuId": 7, + "ParentSkuId": 1, + "ComplementTypeId": 1 + } + ] + }, + "SkuKit": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "SKU Kit ID, same as `StockKeepingUnitParent`." + }, + "StockKeepingUnitParent": { + "type": "integer", + "description": "Parent SKU ID." + }, + "StockKeepingUnitId": { + "type": "integer", + "description": "SKU ID of the kit component." + }, + "Quantity": { + "type": "integer", + "description": "Component quantity." + }, + "UnitPrice": { + "type": "integer", + "description": "Component price per unit." + } + }, + "example": { + "Id": 7, + "StockKeepingUnitParent": 7, + "StockKeepingUnitId": 1, + "Quantity": 1, + "UnitPrice": 50.0000 + } + }, + "SKUSpecificationResponse": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "ID of the association of the specification and the SKU. This ID is used to update or delete the specification." + }, + "SkuId": { + "type": "integer", + "description": "SKU ID." + }, + "FieldId": { + "type": "integer", + "description": "Specification field ID." + }, + "FieldValueId": { + "type": "integer", + "description": "Specification Value ID. Required only for `FieldTypeId` as `5`, `6` and `7`." + }, + "Text": { + "type": "string", + "description": "Value of specification. Only for `FieldTypeId` different from `5`, `6` and `7`." + } + }, + "example": { + "Id": 1505, + "SkuId": 1234568387, + "FieldId": 193, + "FieldValueId": 360, + "Text": "Size 10" + } + }, + "SKUService": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "SKU Service ID.", + "example": 1 + }, + "SkuServiceTypeId": { + "type": "integer", + "description": "SKU Service Type ID.", + "example": 1 + }, + "SkuServiceValueId": { + "type": "integer", + "description": "SKU Service Value ID.", + "example": 1 + }, + "SkuId": { + "type": "integer", + "description": "SKU ID.", + "example": 1 + }, + "Name": { + "type": "string", + "description": "SKU Service Name. Maximum of 50 characters.", + "example": "Engraving" + }, + "Text": { + "type": "string", + "description": "Internal description of the SKU Service. Maximum of 100 characters.", + "example": "Name engraving additional service." + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the SKU Service is active or not.", + "example": true + } + }, + "example": { + "Id": 1, + "SkuServiceTypeId": 1, + "SkuServiceValueId": 1, + "SkuId": 1, + "Name": "name", + "Text": "text", + "IsActive": false + } + }, + "SKUServiceTypeRequest": { + "type": "object", + "required": [ + "Name", + "IsActive", + "ShowOnProductFront", + "ShowOnCartFront", + "ShowOnAttachmentFront", + "ShowOnFileUpload", + "IsGiftCard", + "IsRequired" + ], + "properties": { + "Name": { + "type": "string", + "description": "SKU Service Type Name. Maximum of 100 characters.", + "default": "Test API Sku Services" + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the SKU Service Type is active or not.", + "default": true + }, + "ShowOnProductFront": { + "type": "boolean", + "description": "Deprecated", + "example": false, + "deprecated": true + }, + "ShowOnCartFront": { + "type": "boolean", + "description": "Defines if the SKU Service Type is displayed on the cart screen.", + "example": false + }, + "ShowOnAttachmentFront": { + "type": "boolean", + "description": "Defines if the SKU Service Type has an attachment.", + "example": false + }, + "ShowOnFileUpload": { + "type": "boolean", + "description": "Defines if the SKU Service Type can be associated with an attachment or not.", + "example": false + }, + "IsGiftCard": { + "type": "boolean", + "description": "Defines if the SKU Service Type is displayed as a Gift Card.", + "example": false + }, + "IsRequired": { + "type": "boolean", + "description": "Defines if the SKU Service type is mandatory.", + "example": false + } + } + }, + "SKUServiceTypeResponse": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "SKU Service Type ID.", + "example": 2 + }, + "Name": { + "type": "string", + "description": "SKU Service Type Name. Maximum of 100 characters.", + "example": "Test API Sku Services" + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the SKU Service Type is active or not.", + "example": true + }, + "ShowOnProductFront": { + "type": "boolean", + "description": "Deprecated.", + "example": false, + "deprecated": true + }, + "ShowOnCartFront": { + "type": "boolean", + "description": "Defines if the SKU Service Type is displayed on the cart screen.", + "example": false + }, + "ShowOnAttachmentFront": { + "type": "boolean", + "description": "Defines if the SKU Service Type has an attachment.", + "default": false + }, + "ShowOnFileUpload": { + "type": "boolean", + "description": "Defines if the SKU Service Type can be associated with an attachment or not.", + "default": false + }, + "IsGiftCard": { + "type": "boolean", + "description": "Defines if the SKU Service Type is displayed as a Gift Card.", + "default": false + }, + "IsRequired": { + "type": "boolean", + "description": "Defines if the SKU Service type is mandatory.", + "default": false + } + }, + "example": { + "Id": 2, + "Name": "Test API SKU Services", + "IsActive": true, + "ShowOnProductFront": true, + "ShowOnCartFront": true, + "ShowOnAttachmentFront": true, + "ShowOnFileUpload": true, + "IsGiftCard": true, + "IsRequired": true + } + }, + "SKUServiceValueRequest": { + "type": "object", + "required": [ + "SkuServiceTypeId", + "Name", + "Value", + "Cost" + ], + "properties": { + "SkuServiceTypeId": { + "type": "integer", + "description": "SKU Service Type ID.", + "example": 2 + }, + "Name": { + "type": "string", + "description": "SKU Service Value name. Maximum of 100 characters.", + "example": "Test ServiceValue API" + }, + "Value": { + "type": "number", + "description": "SKU Service Value value.", + "example": 10.5 + }, + "Cost": { + "type": "number", + "description": "SKU Service Value cost.", + "example": 10.5 + } + }, + "example": { + "SkuServiceTypeId": 2, + "Name": "Test ServiceValue API", + "Value": 10.5, + "Cost": 10.5 + } + }, + "SKUServiceValueResponse": { + "type": "object", + "required": [ + "SkuServiceTypeId", + "Name", + "Value", + "Cost" + ], + "properties": { + "Id": { + "type": "integer", + "description": "SKU Service Value ID.", + "example": 2 + }, + "SkuServiceTypeId": { + "type": "integer", + "description": "SKU Service Type ID.", + "example": 2 + }, + "Name": { + "type": "string", + "description": "SKU Service Value name. Maximum of 100 characters.", + "example": "Test ServiceValue API" + }, + "Value": { + "type": "number", + "description": "SKU Service Value value.", + "example": 10.5 + }, + "Cost": { + "type": "number", + "description": "SKU Service Value cost.", + "example": 10.5 + } + }, + "example": { + "Id": 2, + "SkuServiceTypeId": 2, + "Name": "Test ServiceValue API", + "Value": 10.5, + "Cost": 10.5 + } + }, + "BrandCreateUpdate": { + "type": "object", + "description": "Object containing Brand information.", + "required": [ + "Id", + "Name" + ], + "properties": { + "Id": { + "type": "integer", + "description": "Brand's unique numerical identifier.", + "example": 2000003 + }, + "Name": { + "type": "string", + "description": "Brand name.", + "example": "Adidas" + }, + "Text": { + "type": "string", + "description": "Meta Description for the Brand page. A brief description of the brand, displayed by search engines. Since search engines can only display less than 150 characters, we recommend not exceeding this character limit when creating the description.", + "example": "Adidas" + }, + "Keywords": { + "type": "string", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - Alternative search terms that will lead to the specific brand. The user can find the desired brand even when misspelling it. Used especially when words are of foreign origin and have a distinct spelling that is transcribed into a generic one, or when small spelling mistakes occur.\r\n", + "example": "adidas" + }, + "SiteTitle": { + "type": "string", + "description": "Meta Title for the Brand page.", + "example": "Adidas" + }, + "AdWordsRemarketingCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "LomadeeCampaignCode": { + "type": "string", + "description": "This is a legacy field. Do not take this information into consideration.", + "deprecated": true + }, + "Score": { + "type": "integer", + "description": "Store Framework - Deprecated\r\nLegacy CMS Portal - Value used to set the priority on the search result page.\r\n", + "example": 10, + "nullable": true + }, + "MenuHome": { + "type": "boolean", + "description": "Store Framework - Deprecated.\r\nLegacy CMS Portal - Defines if the Brand appears in the Department Menu control (``).\r\n", + "example": true + }, + "Active": { + "type": "boolean", + "description": "Defines if the brand is active (`true`) or not (`false`).", + "example": true + }, + "LinkId": { + "type": "string", + "description": "Brand page slug. Only lowercase letters and hyphens (`-`) are allowed.", + "example": "adidas-sports", + "nullable": true + } + }, + "example": { + "Id": 2000013, + "Name": "Orma Carbono2", + "Text": "Orma Carbon2", + "Keywords": "orma", + "SiteTitle": "Orma Carbon2", + "Active": true, + "MenuHome": true, + "AdWordsRemarketingCode": "", + "LomadeeCampaignCode": "", + "Score": null, + "LinkId": null + } + }, + "BrandGet": { + "type": "object", + "description": "Object containing Brand information.", + "required": [ + "id", + "name", + "isActive", + "imageUrl", + "title", + "metaTagDescription" + ], + "properties": { + "id": { + "type": "integer", + "description": "Brand's unique numerical identifier." + }, + "name": { + "type": "string", + "description": "Brand name." + }, + "isActive": { + "type": "boolean", + "description": "Defines if the brand is active (`true`) or not (`false`)." + }, + "title": { + "type": "string", + "description": "Meta Title for the Brand page." + }, + "metaTagDescription": { + "type": "string", + "description": "Meta Description for the Brand page. A brief description of the brand, displayed by search engines. Since search engines can only display less than 150 characters, we recommend not exceeding this character limit when creating the description." + }, + "imageUrl": { + "type": "string", + "description": "URL of the brand's image.", + "nullable": true + } + } + }, + "AttachmentResponse": { + "type": "object", + "required": [ + "Id", + "Name", + "IsRequired", + "IsActive", + "Domains" + ], + "properties": { + "Id": { + "type": "integer", + "description": "Attachment ID.", + "example": 8 + }, + "Name": { + "type": "string", + "description": "Attachment Name.", + "example": "Shirt customization" + }, + "IsRequired": { + "type": "boolean", + "description": "Defines if the attachment is required or not.", + "example": false + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the attachment is active or not.", + "example": false + }, + "Domains": { + "type": "array", + "description": "List of characteristics related to the attachment.", + "items": { + "type": "object", + "properties": { + "FieldName": { + "type": "string", + "description": "Attachment key name.", + "example": "Number" + }, + "MaxCaracters": { + "type": "string", + "description": "Maximum number of characters in the attachment key.", + "example": "1" + }, + "DomainValues": { + "type": "string", + "description": "Allowed key values.", + "example": "7,9,10" + } + } + } + } + }, + "example": { + "Id": 8, + "Name": "Ingredients", + "IsRequired": true, + "IsActive": true, + "Domains": [ + { + "FieldName": "Sauce", + "MaxCaracters": "", + "DomainValues": "[1-2]#9[1-1][1]basic;#11[0-1][1]basic" + }, + { + "FieldName": "Toppings", + "MaxCaracters": "", + "DomainValues": "[0-10]#8[0-3][0]medium;#9[0-3][0]medium;#10[0-3][0]medium;#11[0-3][0]medium;#36[0-3][0]medium;#37[0-3][0]medium;#38[0-3][0]medium" + } + ] + } + }, + "AttachmentRequest": { + "type": "object", + "required": [ + "Name", + "IsRequired", + "IsActive", + "Domains" + ], + "properties": { + "Name": { + "type": "string", + "description": "Attachment Name.", + "example": "Shirt customization" + }, + "IsRequired": { + "type": "boolean", + "description": "Defines if the attachment is required or not.", + "example": false + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the attachment is active or not.", + "example": false + }, + "Domains": { + "type": "array", + "description": "List of characteristics related to the attachment.", + "items": { + "type": "object", + "properties": { + "FieldName": { + "type": "string", + "description": "Attachment key name.", + "example": "Number" + }, + "MaxCaracters": { + "type": "string", + "description": "Maximum number of characters in the attachment key.", + "example": "1" + }, + "DomainValues": { + "type": "string", + "description": "Allowed key values.", + "example": "7,9,10" + } + } + } + } + }, + "example": { + "Name": "Ingredients", + "IsRequired": true, + "IsActive": true, + "Domains": [ + { + "FieldName": "Sauce", + "MaxCaracters": "", + "DomainValues": "[1-2]#9[1-1][1]basic;#11[0-1][1]basic" + }, + { + "FieldName": "Toppings", + "MaxCaracters": "", + "DomainValues": "[0-10]#8[0-3][0]medium;#9[0-3][0]medium;#10[0-3][0]medium;#11[0-3][0]medium;#36[0-3][0]medium;#37[0-3][0]medium;#38[0-3][0]medium" + } + ] + } + }, + "SupplierRequest": { + "type": "object", + "required": [ + "Name", + "CorporateName", + "StateInscription", + "Cnpj", + "Phone", + "CellPhone", + "CorportePhone", + "Email", + "IsActive" + ], + "properties": { + "Name": { + "type": "string", + "description": "Supplier Name.", + "example": "Supplier" + }, + "CorporateName": { + "type": "string", + "description": "Supplier Corporate Name.", + "example": "TopStore" + }, + "StateInscription": { + "type": "string", + "description": "State Inscription.", + "example": "123456" + }, + "Cnpj": { + "type": "string", + "description": "Corporate legal ID.", + "example": "33304981001272" + }, + "Phone": { + "type": "string", + "description": "Supplier Phone.", + "example": "3333333333" + }, + "CellPhone": { + "type": "string", + "description": "Supplier Cellphone.", + "example": "4444444444" + }, + "CorportePhone": { + "type": "string", + "description": "Supplier Corporate Phone.", + "example": "5555555555" + }, + "Email": { + "type": "string", + "description": "Supplier email.", + "example": "email@email.com" + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the Supplier is active (`true`) or not (`false`).", + "example": false + } + } + }, + "SupplierResponse": { + "type": "object", + "properties": { + "Id": { + "type": "integer", + "description": "Supplier unique identifier code.", + "example": 123 + }, + "Name": { + "type": "string", + "description": "Supplier Name.", + "example": "Supplier" + }, + "CorporateName": { + "type": "string", + "description": "Supplier Corporate Name.", + "example": "TopStore" + }, + "StateInscription": { + "type": "string", + "description": "State Inscription.", + "example": "123456" + }, + "Cnpj": { + "type": "string", + "description": "Corporate legal ID.", + "example": "33304981001272" + }, + "Phone": { + "type": "string", + "description": "Supplier Phone.", + "example": "3333333333" + }, + "CellPhone": { + "type": "string", + "description": "Supplier Cellphone.", + "example": "4444444444" + }, + "CorportePhone": { + "type": "string", + "description": "Supplier Corporate Phone.", + "example": "5555555555" + }, + "Email": { + "type": "string", + "description": "Supplier email.", + "example": "email@email.com" + }, + "IsActive": { + "type": "boolean", + "description": "Defines if the Supplier is active (`true`) or not (`false`).", + "example": false + } + } + }, + "Userorderslist": { + "title": "Userorderslist", + "required": ["list", "facets", "paging", "stats"], + "type": "object", + "description": "Order list object.", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/components/schemas/List1" + }, + "description": "List with user's orders details." + }, + "facets": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array containing facets information." + }, + "paging": { + "$ref": "#/components/schemas/Paging" + }, + "stats": { + "$ref": "#/components/schemas/Stats2" + } + } + }, + "List1": { + "title": "List1", + "required": [ + "orderId", + "creationDate", + "clientName", + "items", + "totalValue", + "paymentNames", + "status", + "statusDescription", + "marketPlaceOrderId", + "sequence", + "salesChannel", + "affiliateId", + "origin", + "workflowInErrorState", + "workflowInRetry", + "lastMessageUnread", + "ShippingEstimatedDate", + "ShippingEstimatedDateMax", + "ShippingEstimatedDateMin", + "orderIsComplete", + "listId", + "listType", + "authorizedDate", + "callCenterOperatorName", + "totalItems", + "currencyCode" + ], + "type": "object", + "properties": { + "orderId": { + "type": "string", + "description": "Order ID is a unique code that identifies an order." + }, + "creationDate": { + "type": "string", + "description": "Order's creation date." + }, + "clientName": { + "type": "string", + "description": "Order's customer name." + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Item2" + }, + "description": "Information about order's items.", + "nullable": true, + "deprecated": true + }, + "totalValue": { + "type": "integer", + "description": "Total value amount." + }, + "paymentNames": { + "type": "string", + "nullable": true, + "description": "Payment system name." + }, + "status": { + "type": "string", + "description": "Order [status](https://help.vtex.com/en/tutorial/order-flow-and-status--tutorials_196)." + }, + "statusDescription": { + "type": "string", + "description": "Status description which is displayed on the Admin panel. This field is deprecated and may not return any value.", + "deprecated": true + }, + "marketPlaceOrderId": { + "type": "string", + "nullable": true, + "description": "Marketplace order ID." + }, + "sequence": { + "type": "string", + "description": "Six-digit string that follows the order ID. For example, in order `1268540501456-01 (501456)`, the sequence is `501456`." + }, + "salesChannel": { + "type": "string", + "description": "Sales channel (or [trade policy](https://help.vtex.com/tutorial/how-trade-policies-work--6Xef8PZiFm40kg2STrMkMV)) ID related to the order." + }, + "affiliateId": { + "type": "string", + "description": "Corresponds to the three-digits [affiliate](https://help.vtex.com/en/tutorial/configuring-affiliates--tutorials_187) identification code of the seller responsible for the order." + }, + "origin": { + "type": "string", + "description": "Order's [origin in the order flow](https://developers.vtex.com/docs/guides/orders-overview#understanding-order-flow-types), which can be `Marketplace`, `Fulfillment` or `Chain`." + }, + "workflowInErrorState": { + "type": "boolean", + "description": "If there is a work flow error (`true`) or not (`false`)." + }, + "workflowInRetry": { + "type": "boolean", + "description": "If the order is in a work flow retry (`true`) or not (`false`)." + }, + "lastMessageUnread": { + "type": "string", + "nullable": true, + "description": "Last sent transactional message." + }, + "ShippingEstimatedDate": { + "type": "string", + "nullable": true, + "description": "Estimate shipping date." + }, + "ShippingEstimatedDateMax": { + "type": "string", + "nullable": true, + "description": "The most extended shipping estimation possible." + }, + "ShippingEstimatedDateMin": { + "type": "string", + "nullable": true, + "description": "The least extended shipping estimation possible." + }, + "orderIsComplete": { + "type": "boolean", + "description": "If it is a completed order (`true`) or not (`false`). For more information, see [Order flow and status](https://help.vtex.com/en/tutorial/order-flow-and-status--tutorials_196)." + }, + "listId": { + "type": "string", + "nullable": true, + "description": "Related Gift List ID." + }, + "listType": { + "type": "string", + "nullable": true, + "description": "Related Gift list type." + }, + "authorizedDate": { + "type": "string", + "nullable": true, + "description": "Authorized order date." + }, + "callCenterOperatorName": { + "type": "string", + "nullable": true, + "description": "Call center operator responsible for the order." + }, + "totalItems": { + "type": "integer", + "description": "Order's total amount of items." + }, + "currencyCode": { + "type": "string", + "nullable": true, + "description": "Currency code in ISO 4217. For example, `BRL`." + } + }, + "example": { + "orderId": "1172452900788-01", + "creationDate": "2019-01-28T20:09:43+00:00", + "clientName": "Cunha VTEX", + "items": [ + { + "seller": "1", + "quantity": 1, + "description": "Reservoir hose", + "ean": null, + "refId": "TE3121110", + "id": "195", + "productId": "134", + "sellingPrice": 7390, + "price": 7390 + }, + { + "seller": "1", + "quantity": 1, + "description": "Reservoir filter", + "ean": null, + "refId": "XC459N610CA", + "id": "238", + "productId": "162", + "sellingPrice": 5190, + "price": 5190 + } + ], + "totalValue": 1160, + "paymentNames": "Boleto Bancário", + "status": "handling", + "statusDescription": "Preparing for delivery", + "marketPlaceOrderId": null, + "sequence": "502556", + "salesChannel": "1", + "affiliateId": "GTB", + "origin": "Marketplace", + "workflowInErrorState": false, + "workflowInRetry": false, + "lastMessageUnread": " Lux Store Seu pedido foi alterado! Pedido realizado em: 28/01/2019 Olá, Rodrigo. Seu pedido foi alterado. Seguem informações abaixo: ", + "ShippingEstimatedDate": "2019-02-04T20:33:46+00:00", + "ShippingEstimatedDateMax": null, + "ShippingEstimatedDateMin": null, + "orderIsComplete": true, + "listId": null, + "listType": null, + "authorizedDate": "2019-01-28T20:33:04+00:00", + "callCenterOperatorName": null, + "totalItems": 1, + "currencyCode": "BRL" + } + }, + "Item2": { + "title": "Item2", + "required": [ + "seller", + "quantity", + "description", + "ean", + "refId", + "id", + "productId", + "sellingPrice", + "price" + ], + "type": "object", + "properties": { + "seller": { + "type": "string", + "description": "Seller related to the order." + }, + "quantity": { + "type": "integer", + "description": "Quantity of SKUs." + }, + "description": { + "type": "string", + "description": "Description of items." + }, + "ean": { + "type": "string", + "nullable": true, + "description": "EAN of the SKU." + }, + "refId": { + "type": "string", + "nullable": true, + "description": "Item's reference ID." + }, + "id": { + "type": "string", + "description": "Item's SKU ID, which is a unique numerical identifier." + }, + "productId": { + "type": "string", + "description": "ID of the Product associated with the item." + }, + "sellingPrice": { + "type": "integer", + "description": "Details on item's selling price." + }, + "price": { + "type": "integer", + "description": "Item's price." + } + }, + "example": { + "seller": "1", + "quantity": 1, + "description": "Mangueira Reservatório Ao Cavalete", + "ean": null, + "refId": "TE3121110", + "id": "195", + "productId": "134", + "sellingPrice": 7390, + "price": 7390 + } + }, + "Paging": { + "type": "object", + "description": "Pagination information.", + "required": [ + "total", + "pages", + "currentPage", + "perPage" + ], + "properties": { + "total": { + "type": "integer", + "description": "Total number of orders." + }, + "pages": { + "type": "integer", + "description": "Total number of pages." + }, + "currentPage": { + "type": "integer", + "description": "Number of the current page." + }, + "perPage": { + "type": "integer", + "description": "Number of orders per page." + } + } + }, + "Stats2": { + "title": "Stats2", + "required": ["stats"], + "type": "object", + "properties": { + "stats": { + "$ref": "#/components/schemas/Stats3" + } + }, + "example": { + "stats": { + "totalValue": { + "Count": 19, + "Max": 0, + "Mean": 0, + "Min": 0, + "Missing": 0, + "StdDev": 0, + "Sum": 0, + "SumOfSquares": 0, + "Facets": {} + }, + "totalItems": { + "Count": 19, + "Max": 0, + "Mean": 0, + "Min": 0, + "Missing": 0, + "StdDev": 0, + "Sum": 0, + "SumOfSquares": 0, + "Facets": {} + } + } + } + }, + "Stats3": { + "title": "Stats3", + "required": ["totalValue", "totalItems"], + "type": "object", + "properties": { + "totalValue": { + "$ref": "#/components/schemas/TotalValue1" + }, + "totalItems": { + "$ref": "#/components/schemas/TotalItems1" + } + }, + "example": { + "totalValue": { + "Count": 19, + "Max": 0, + "Mean": 0, + "Min": 0, + "Missing": 0, + "StdDev": 0, + "Sum": 0, + "SumOfSquares": 0, + "Facets": {} + }, + "totalItems": { + "Count": 19, + "Max": 0, + "Mean": 0, + "Min": 0, + "Missing": 0, + "StdDev": 0, + "Sum": 0, + "SumOfSquares": 0, + "Facets": {} + } + } + }, + "TotalValue1": { + "title": "TotalValue1", + "required": [ + "Count", + "Max", + "Mean", + "Min", + "Missing", + "StdDev", + "Sum", + "SumOfSquares", + "Facets" + ], + "type": "object", + "properties": { + "Count": { + "type": "integer" + }, + "Max": { + "type": "integer" + }, + "Mean": { + "type": "integer" + }, + "Min": { + "type": "integer" + }, + "Missing": { + "type": "integer" + }, + "StdDev": { + "type": "integer" + }, + "Sum": { + "type": "integer" + }, + "SumOfSquares": { + "type": "integer" + }, + "Facets": { + "type": "object" + } + }, + "example": { + "Count": 19, + "Max": 0, + "Mean": 0, + "Min": 0, + "Missing": 0, + "StdDev": 0, + "Sum": 0, + "SumOfSquares": 0, + "Facets": {} + } + }, + "TotalItems1": { + "title": "TotalItems1", + "required": [ + "Count", + "Max", + "Mean", + "Min", + "Missing", + "StdDev", + "Sum", + "SumOfSquares", + "Facets" + ], + "type": "object", + "properties": { + "Count": { + "type": "integer" + }, + "Max": { + "type": "integer" + }, + "Mean": { + "type": "integer" + }, + "Min": { + "type": "integer" + }, + "Missing": { + "type": "integer" + }, + "StdDev": { + "type": "integer" + }, + "Sum": { + "type": "integer" + }, + "SumOfSquares": { + "type": "integer" + }, + "Facets": { + "type": "object" + } + }, + "example": { + "Count": 19, + "Max": 0, + "Mean": 0, + "Min": 0, + "Missing": 0, + "StdDev": 0, + "Sum": 0, + "SumOfSquares": 0, + "Facets": {} + } + } + } + }, + "tags": [] +} diff --git a/app-tags/utils/types.ts b/app-tags/utils/types.ts new file mode 100644 index 0000000..a62a0eb --- /dev/null +++ b/app-tags/utils/types.ts @@ -0,0 +1,295 @@ +import { Color, ImageWidget } from "apps/admin/widgets.ts"; + +/** + * @format dynamic-options + * @options vtex/loaders/options/productIdByTerm.ts + * @description Equivalente ao ID do SKU na plataforma VTEX + */ +export type ProductID = string; + +export type flagPosition = + | "topo esquerda" + | "topo centro" + | "topo-direita" + | "inferior esquerda" + | "inferior centro" + | "inferior direita" + | "centro"; + +export interface Category { + id: number; + name: string; + hasChildren: boolean; + url: string; + children: Category[]; +} + +export interface OrganizedCategory { + value: string; + label: string; +} + +export interface PropsCategory { + accountName: string; +} + +/** @title Categoria */ +export interface OptionCategory { + /** + * @pattern \d* + * @format dynamic-options + * @options app-tags/loaders/getCategoryTree.ts + * @title Categoria + */ + categories?: string; +} + +/** @title Coleção */ +export interface OptionCollectionId { + /** + * @pattern \d* + * @format dynamic-options + * @options app-tags/loaders/collections/list.ts + * @title Coleção + */ + idCollection?: string; +} + +/** @title Edição de Flag */ +export interface FormatFlagCustom { + /** @title Nome da flag personalizada */ + name: string; + + /** @title Cor do texto da flag personalizada */ + textColor?: Color; + + /** @title Cor de fundo da flag personalizada */ + backgroundColor?: Color; + + /** @title Ícone */ + icon?: ImageWidget; + + /** @title Posição do ícone */ + /** @description Direita ou Esquerda */ + iconPosition?: "Direita" | "Esquerda"; +} + +/** @title Imagem */ +export interface FormatFlagImage { + /** @title Imagem da flag */ + image?: ImageWidget; + + /** @title Posição da flag */ + flagPosition?: flagPosition; +} + +export interface OptionsFlagCustom { + /** @title Formato da flag: personalizada ou com imagem */ + optionsFormat: FormatFlagCustom | FormatFlagImage; +} + +export interface Options { + /** @title Opções */ + options: OptionCategory | OptionCollectionId; +} + +/** @title {{{name}}} */ +export interface FlagSpecialProps { + /** @title Opções de Categoria ou Coleção */ + options: Options; + + /** @title Nome da flag especial */ + name: string; + + /** @title Formato da Flag */ + formatFlag: OptionsFlagCustom; + + /** @title Data de Início */ + /** @format date */ + dateFrom?: string; + + /** @title Data de Fim */ + /** @format date */ + dateTo?: string; + + /** @title Ativar a Flag Personalizada */ + showFlag: boolean; +} + +/**@title Edição de Flag */ +export interface FlagEdit { + /** @title Texto Lado Direito */ + /** @description ex: de graça */ + textRight: string; + + /** @title Cor do Texto Lado Direito */ + /** @description ex: #FFF */ + textRightColor: Color; + + /** @title Cor de Fundo Lado Direito */ + /** @description ex: #D50202 */ + textRightBackgroundColor: Color; + + /** @title Texto Lado Esquerdo */ + /** @description Este lado é opcional ex: 3ª peça por */ + textLeft?: string; + + /** @title Cor do Texto Lado Esquerdo */ + /** @description ex: #FFF */ + textLeftColor: Color; + + /** @title Cor de Fundo Lado Esquerdo */ + /** @description ex: #720303 */ + textLeftBackgroundColor: Color; + + /** @title Posição da flag */ + flagPosition?: flagPosition; + + /** @hide true */ + type?: "ProductDetails" | "ProductShelf"; +} + +export interface FlagFormatCustom { + /** @title Formato da flag: personalizada ou com imagem */ + optionsFormat: FlagEdit | FormatFlagImage; +} + +/** @title {{{name}}} */ +export interface Flags { + /** @title Opções de Categoria ou Coleção */ + options: Options; + + /** @title Nome da Flag */ + /** @description ex: Flag aniversário */ + name: string; + + /** @title Formato da Flag */ + formatFlag: FlagFormatCustom; + + /** @title Data de Início */ + /** @format date */ + dateFrom?: string; + + /** @title Data de Fim */ + /** @format date */ + dateTo?: string; + + /** @title Ativar a Flag Personalizada */ + showFlag: boolean; +} + +/** @title {{{name}}} */ +export interface FlagCollectionCustomProps { + /** + * @pattern \d* + * @format dynamic-options + * @options app-tags/loaders/collections/list.ts + */ + idCollection: string; + + /** @title Nome da Flag */ + /** @description ex: Flag aniversário */ + name: string; + + /** @title Texto Lado Direito */ + /** @description ex: de graça */ + textRight: string; + + /** @title Cor do Texto Lado Direito */ + /** @description ex: #FFF */ + textRightColor: Color; + + /** @title Cor de Fundo Lado Direito */ + /** @description ex: #D50202 */ + textRightBackgroundColor: Color; + + /** @title Texto Lado Esquerdo */ + /** @description Este lado é opcional ex: 3ª peça por */ + textLeft?: string; + + /** @title Cor do Texto Lado Esquerdo */ + /** @description ex: #FFF */ + textLeftColor: Color; + + /** @title Cor de Fundo Lado Esquerdo */ + /** @description ex: #720303 */ + textLeftBackgroundColor: Color; + + /** @title Posição da flag */ + flagPosition?: flagPosition; + + /** @hide true */ + type?: "ProductDetails" | "ProductShelf"; +} + +/** @title {{{name}}} */ +export interface FlagDiscountThirdForProps { + /** @title Opções de Categoria ou Coleção */ + options: Options; + + /** @title Nome da Flag */ + /** @description ex: Flag aniversário */ + name: string; + + /** @title Data de Início */ + /** @format date */ + dateFrom?: string; + + /** @title Data de Fim */ + /** @format date */ + dateTo?: string; + + /** @title Valor da Porcentagem */ + /** @description ex: 70 */ + discountPercentage: number; + + /** @title Cor de Fundo do Preço */ + /** @description ex: #585857 */ + priceBackgroundColor: Color; + + /** @title Cor do Preço */ + /** @description ex: #FFF */ + priceColor: Color; + + /** @title Texto */ + /** @description ex: 3ª peça por */ + text: string; + + /** @title Cor de Fundo do Texto */ + /** @description ex: #8D8D8D */ + textBackgroundColor: Color; + + /** @title Cor do Texto */ + /** @description ex: #FFF */ + textColor: Color; + + /** @title Posição da flag */ + flagPosition?: flagPosition; + + /** @title Ativar a Flag Desconto na Terceira Compra */ + showFlag: boolean; +} + +export interface Collection { + id: number; + name: "Live influencers"; + searchable: boolean; + highlight: boolean; + dateFrom: string; + dateTo: string; + totalSku: number; + totalProducts: number; + type: "Manual" | "Automatic" | "Hybrid"; + lastModifiedBy?: string; +} + +export interface CollectionList { + paging: { + page: number; + perPage: number; + total: number; + pages: number; + limit: number; + }; + items?: Collection[]; +} diff --git a/apps/local/app-tags.ts b/apps/local/app-tags.ts new file mode 100644 index 0000000..c9c84e5 --- /dev/null +++ b/apps/local/app-tags.ts @@ -0,0 +1,2 @@ +export { default } from "../../app-tags/mod.ts"; +export * from "../../app-tags/mod.ts"; \ No newline at end of file diff --git a/components/home/TimedProductShelf.tsx b/components/home/TimedProductShelf.tsx index 42fbbb9..5120b3b 100644 --- a/components/home/TimedProductShelf.tsx +++ b/components/home/TimedProductShelf.tsx @@ -1,74 +1,71 @@ import type { LoaderReturnType } from "$live/types.ts"; import type { Product } from "apps/commerce/types.ts"; import { AppContext } from "apps/vtex/mod.ts"; -import { SectionProps } from "deco/mod.ts"; import CountdownTimer from "site/islands/CountdownTimer.tsx"; -import { - ResponsiveConditionals, -} from "$store/components/ui/BannerCarousel.tsx"; +import { ResponsiveConditionals, } from "$store/components/ui/BannerCarousel.tsx"; import { HighLight } from "$store/components/product/ProductHighlights.tsx"; import type { Layout as CardLayout } from "$store/components/product/ProductCard.tsx"; import LocalProductShelf from "site/components/home/LocalProductShelf.tsx"; - +import { type SectionProps } from "@deco/deco"; interface Props { productShelf: LoaderReturnType; - /** + /** * @title Cor da Moldura * @default #ED2D26 * @format color */ frameColor: string; - /** + /** * @title Título da Moldura * @default Ofertas da Semana! */ titleFrame: string; - /** + /** * @title Cor do Título da Moldura * @format color * @default #FFFFFF */ colorTitleFrame: string; - /** + /** * @title Sub Título da Moldura * @default Estas Ofertas Expiram em */ subTitleFrame: string; - /** + /** * @title Cor do Sub Título da Moldura * @format color * @default #FFFFFF */ colorSubTitleFrame: string; - /** + /** * @title Temporizador regressivo * @format date */ countdownTimerDate: string; - /** + /** * @title Temporizador regressivo Horas:minutos:segundos * @description Padrão HH:MM:SS (Horas:Minutos:Segundos) */ countdownTimerHours: string; - /** + /** * @title Cor de fundo do CountDown * @format color * @default #AB00C2 */ countdownFrameColor: string; - /** + /** * @title Cor das flags no CountDown * @format color * @default #FFFFFF */ countdownTextColor: string; - /** + /** * @title Cor das números no CountDown * @format color * @default #FFFFFF */ countdownNumberColor: string; - /** + /** * @title Cor dos dots na Prateleira * @format color * @default #591212 @@ -87,69 +84,34 @@ interface Props { }; showPaginationArrows?: ResponsiveConditionals; cardLayout?: CardLayout; - } + }; } - export function loader(props: Props, _req: Request, ctx: AppContext) { - if (!props.productShelf) return { success: false, ...props }; - - return { success: true, ...props } + if (!props.productShelf) + return { success: false, ...props }; + return { success: true, ...props }; } - -const TimedProductShelf = (props: SectionProps)=> { - if (!props.success) return null; - - const { - productShelf, - colorSubTitleFrame, - colorTitleFrame, - countdownTimerDate, - frameColor, - subTitleFrame, - titleFrame, - countdownTimerHours, - productShelfConfig, - countdownFrameColor, - countdownTextColor, - countdownNumberColor, - dotSliderColor } = props; - - const countdownDateTimeString = `${countdownTimerDate}T${countdownTimerHours}`; - const countdownDateTime = new Date(countdownDateTimeString); - const currentDateTime = new Date(); - const offset = currentDateTime.getTimezoneOffset(); - const localDateTime = new Date(currentDateTime.getTime() - offset * 60 * 1000); - - const isCurrentDateTime = countdownDateTime.toISOString() === localDateTime.toISOString(); - - if (!productShelf || isCurrentDateTime) return null; - - return ( -
+const TimedProductShelf = (props: SectionProps) => { + if (!props.success) + return null; + const { productShelf, colorSubTitleFrame, colorTitleFrame, countdownTimerDate, frameColor, subTitleFrame, titleFrame, countdownTimerHours, productShelfConfig, countdownFrameColor, countdownTextColor, countdownNumberColor, dotSliderColor } = props; + const countdownDateTimeString = `${countdownTimerDate}T${countdownTimerHours}`; + const countdownDateTime = new Date(countdownDateTimeString); + const currentDateTime = new Date(); + const offset = currentDateTime.getTimezoneOffset(); + const localDateTime = new Date(currentDateTime.getTime() - offset * 60 * 1000); + const isCurrentDateTime = countdownDateTime.toISOString() === localDateTime.toISOString(); + if (!productShelf || isCurrentDateTime) + return null; + return (
{titleFrame} {subTitleFrame} - +
- +
-
- ); -} - +
); +}; export default TimedProductShelf; - diff --git a/components/product/ProductDetails.tsx b/components/product/ProductDetails.tsx index 6f659bf..3ce12a8 100644 --- a/components/product/ProductDetails.tsx +++ b/components/product/ProductDetails.tsx @@ -14,91 +14,60 @@ import type { ProductDetailsPage } from "apps/commerce/types.ts"; import type { LoaderReturnType } from "$live/types.ts"; import AddToCartActions from "$store/islands/AddToCartActions.tsx"; import ProductDetailsImages from "$store/islands/ProductDetailsImages.tsx"; -import { FnContext, SectionProps } from "deco/mod.ts"; import Icon from "$store/components/ui/Icon.tsx"; import { getShareLink } from "$store/sdk/shareLinks.tsx"; import { HighLight } from "$store/components/product/ProductHighlights.tsx"; import ProductSelector from "./ProductVariantSelector.tsx"; import SimilarSelector from "site/components/product/SimilarSelector.tsx"; - - +import { type FnContext, type SectionProps } from "@deco/deco"; export type Variant = "front-back" | "slider" | "auto"; - export type ShareableNetwork = "Facebook" | "Twitter" | "Email" | "WhatsApp"; - export interface Props { - page: LoaderReturnType; - /** - * @description Flags, displayed when products are found - */ - highlights?: HighLight[]; - /** - * @title Product view - * @description Ask for the developer to remove this option since this is here to help development only and should not be used in production - */ - variant?: Variant; - shipmentPolitics?: { - label: string; - link: string; - }; - shareableNetworks?: ShareableNetwork[]; + page: LoaderReturnType; + /** + * @description Flags, displayed when products are found + */ + highlights?: HighLight[]; + /** + * @title Product view + * @description Ask for the developer to remove this option since this is here to help development only and should not be used in production + */ + variant?: Variant; + shipmentPolitics?: { + label: string; + link: string; + }; + shareableNetworks?: ShareableNetwork[]; } - const WIDTH = 250; const HEIGHT = 250; const ASPECT_RATIO = `${WIDTH} / ${HEIGHT}`; - /** * Rendered when a not found is returned by any of the loaders run on this page */ function NotFound() { - return ( -
+ return (
Página não encontrada
-
- ); +
); } - -function ProductInfo( - { page, shipmentPolitics, shareableNetworks }: { +function ProductInfo({ page, shipmentPolitics, shareableNetworks }: { page: ProductDetailsPage; shipmentPolitics?: Props["shipmentPolitics"]; shareableNetworks?: Props["shareableNetworks"]; - }, -) { - const { - breadcrumbList, - product, - } = page; - const { - - description, - productID, - offers, - name, - isVariantOf, - isSimilarTo, - url, - - } = product; - const { price = 0, listPrice, seller, availability, installment } = useOffer( - offers, - ); - - const forPrice = product.offers?.offers[0].priceSpecification[1].price - const discount = listPrice && listPrice > price; - const vendorName = product.offers?.offers[0].sellerName - - - console.log(vendorName) - - return ( - <> +}) { + const { breadcrumbList, product, } = page; + const { description, productID, offers, name, isVariantOf, isSimilarTo, url, } = product; + const { price = 0, listPrice, seller, availability, installment } = useOffer(offers); + const forPrice = product.offers?.offers[0].priceSpecification[1].price; + const discount = listPrice && listPrice > price; + const vendorName = product.offers?.offers[0].sellerName; + console.log(vendorName); + return (<> {/* Code and name */}

@@ -106,13 +75,11 @@ function ProductInfo( {isVariantOf?.name}

- {name && name?.length > 0 && ( -
+ {name && name?.length > 0 && (
Referência: {productID} -
- )} +
)}
Vendido e entregue por: @@ -124,14 +91,11 @@ function ProductInfo(
{/* Prices */} {availability === "https://schema.org/InStock" - ? ( -
+ ? (
- {listPrice !== price && ( - + {listPrice !== price && ( {formatPrice(listPrice, offers!.priceCurrency!)} - - )} + )}
{formatPrice(forPrice, offers!.priceCurrency!)} @@ -143,77 +107,51 @@ function ProductInfo(
- ou {installment?.billingDuration}x de {formatPrice( - installment?.billingIncrement, - offers!.priceCurrency, - )} + ou {installment?.billingDuration}x de {formatPrice(installment?.billingIncrement, offers!.priceCurrency)}
{formatPrice(price, offers?.priceCurrency)} - {discount && forPrice && ( - + {discount && forPrice && ( {Math.round(((forPrice - price) / forPrice) * 100)}% de desconto no Pix ou boleto - - )} + )}
-
- ) - : null} +
) + : null} {/* Sku Selector */} {availability === "https://schema.org/InStock" - ? ( -
- + ? (
+ {/* */} -
- ) - : null} +
) + : null} {/* Add to Cart and Favorites button */}
{availability === "https://schema.org/InStock" - ? ( - <> - {seller && ( - - )} - - ) - : } + ? (<> + {seller && ()} + ) + : }
{/* Shipping Simulation */} {availability === "https://schema.org/InStock" - ? ( - - ) - : null} + ? () + : null} {/* Info card */}
Informações do produto
- -

+ +

@@ -223,194 +161,117 @@ function ProductInfo( Características do produto
- -

+ +

{/* Share Product on Social Networks */} - {shareableNetworks && ( -
+ {shareableNetworks && ( - )} +
)} {/* Analytics Event */} - - - ); + + ); } - -function Details({ - page, - variant, - shipmentPolitics, - shareableNetworks, - highlights, - device, -}: { - page: ProductDetailsPage; - variant: Variant; - shipmentPolitics?: Props["shipmentPolitics"]; - shareableNetworks?: Props["shareableNetworks"]; - highlights?: HighLight[]; - device:string; +function Details({ page, variant, shipmentPolitics, shareableNetworks, highlights, device, }: { + page: ProductDetailsPage; + variant: Variant; + shipmentPolitics?: Props["shipmentPolitics"]; + shareableNetworks?: Props["shareableNetworks"]; + highlights?: HighLight[]; + device: string; }) { - const { product, breadcrumbList } = page; - const filteredBreadcrumbList = breadcrumbList.itemListElement.filter((item) => - item.name!.length > 1 - ); - const id = `product-image-gallery:${useId()}`; - - const images = product.image!; - - /** - * Product slider variant - */ - if (variant === "slider") { - return ( - <> + const { product, breadcrumbList } = page; + const filteredBreadcrumbList = breadcrumbList.itemListElement.filter((item) => item.name!.length > 1); + const id = `product-image-gallery:${useId()}`; + const images = product.image!; + /** + * Product slider variant + */ + if (variant === "slider") { + return (<> {/* Breadcrumb */} - -
+ +
{/* Product Images */} - + {/* Product Info */}
- +
- - ); - } - - /** - * Product front-back variant. - * - * Renders two images side by side both on mobile and on desktop. On mobile, the overflow is - * reached causing a scrollbar to be rendered. - */ - return ( -
+ ); + } + /** + * Product front-back variant. + * + * Renders two images side by side both on mobile and on desktop. On mobile, the overflow is + * reached causing a scrollbar to be rendered. + */ + return (
{/* Image slider */} {/* Product Info */}
- +
-
- ); +
); } - -function ProductDetails( - { page, variant: maybeVar = "auto", shipmentPolitics, shareableNetworks, highlights, device }: - SectionProps>, -) { - /** - * Showcase the different product views we have on this template. In case there are less - * than two images, render a front-back, otherwhise render a slider - * Remove one of them and go with the best suited for your use case. - */ - const variant = maybeVar === "auto" - ? page?.product.image?.length && page?.product.image?.length < 2 - ? "front-back" - : "slider" - : maybeVar; - - return ( -
+function ProductDetails({ page, variant: maybeVar = "auto", shipmentPolitics, shareableNetworks, highlights, device }: SectionProps>) { + /** + * Showcase the different product views we have on this template. In case there are less + * than two images, render a front-back, otherwhise render a slider + * Remove one of them and go with the best suited for your use case. + */ + const variant = maybeVar === "auto" + ? page?.product.image?.length && page?.product.image?.length < 2 + ? "front-back" + : "slider" + : maybeVar; + return (
{page - ? ( -
- ) - : } -
- ); + ? (
) + : } +
); } - export const loader = (props: Props, _req: Request, ctx: FnContext) => { - return { - ...props, - device: ctx.device, - }; + return { + ...props, + device: ctx.device, + }; }; - export default ProductDetails; diff --git a/deno.json b/deno.json index 5c3eacb..9fd61f4 100644 --- a/deno.json +++ b/deno.json @@ -1,17 +1,18 @@ { "tasks": { - "start": "deno task bundle && deno run -A --unstable-kv --env --config=deno.json $(deno eval 'console.log(import.meta.resolve(\"deco/hypervisor/main.ts\"))') --build-cmd 'deno task build' -- deno task dev", + "start": "deno run -A --unstable-http --env https://deco.cx/run -- deno task dev", "gen": "deno run -A dev.ts --gen-only", "component": "deno eval 'import \"deco/scripts/component.ts\"'", "release": "deno eval 'import \"deco/scripts/release.ts\"'", - "update": "deno eval 'import \"deco/scripts/update.ts\"'", + "update": "deno run -Ar https://deco.cx/update", "check": "deno fmt && deno lint && deno check dev.ts main.ts", "build": "deno run -A dev.ts build", "preview": "deno run -A main.ts", "install": "deno eval 'import \"deco/scripts/apps/install.ts\"'", "uninstall": "deno eval 'import \"deco/scripts/apps/uninstall.ts\"'", - "bundle": "deno eval 'import \"deco/scripts/apps/bundle.ts\"' site", - "dev": "deno run -A --env --unstable --unstable-hmr dev.ts" + "bundle": "deno run -A jsr:@deco/deco/scripts/bundle site", + "dev": "deno run -A --env --unstable-kv --unstable-hmr dev.ts", + "reload": "deno cache -r https://deco.cx/run" }, "githooks": { "pre-commit": "check" @@ -30,20 +31,47 @@ }, "imports": { "$store/": "./", - "deco-sites/std/": "https://denopkg.com/deco-sites/std@1.26.7/", - "$live/": "https://denopkg.com/deco-cx/deco@1.80.1/", - "deco/": "https://denopkg.com/deco-cx/deco@1.80.1/", - "$fresh/": "https://deno.land/x/fresh@1.6.5/", - "preact": "https://esm.sh/preact@10.19.2", - "preact/": "https://esm.sh/preact@10.19.2/", - "preact-render-to-string": "https://esm.sh/*preact-render-to-string@6.2.2", + "site/": "./", + "deco-sites/std/": "https://denopkg.com/deco-sites/std@1.26.8/", + "$live/": "https://denopkg.com/deco-cx/deco@1.106.3/", + "deco/": "https://denopkg.com/deco-cx/deco@1.106.3/", + "$fresh/": "https://deno.land/x/fresh@1.7.3/", + "preact": "npm:preact@10.23.1", + "preact-render-to-string": "npm:preact-render-to-string@6.4.2", "@preact/signals": "https://esm.sh/*@preact/signals@1.2.1", "@preact/signals-core": "https://esm.sh/*@preact/signals-core@1.5.0", "std/": "https://deno.land/std@0.190.0/", "partytown/": "https://denopkg.com/deco-cx/partytown@0.4.8/", "daisyui": "npm:daisyui@3.0.3", - "apps/": "https://denopkg.com/deco-cx/apps@0.53.0/", - "site/": "./" + "apps/": "https://denopkg.com/deco-cx/apps@0.63.0/", + "@deco/deco": "jsr:@deco/deco@1.106.3", + "@std/assert": "jsr:@std/assert@^1.0.2", + "@std/async": "jsr:@std/async@^0.224.1", + "@std/crypto": "jsr:@std/crypto@1.0.0-rc.1", + "@std/datetime": "jsr:@std/datetime@^0.224.0", + "@std/encoding": "jsr:@std/encoding@^1.0.0-rc.1", + "@std/http": "jsr:@std/http@^1.0.0", + "@std/io": "jsr:@std/io@^0.224.4", + "@std/log": "jsr:@std/log@^0.224.5", + "@std/media-types": "jsr:@std/media-types@^1.0.0-rc.1", + "@std/streams": "jsr:@std/streams@^1.0.0", + "@std/testing": "jsr:@std/testing@^1.0.0", + "@std/flags": "jsr:@std/flags@^0.224.0", + "@std/fmt": "jsr:@std/fmt@^0.225.3", + "@std/fs": "jsr:@std/fs@^1.0.1", + "@std/path": "jsr:@std/path@^1.0.2", + "@std/semver": "jsr:@std/semver@^1.0.1", + "@cliffy/prompt": "jsr:@cliffy/prompt@^1.0.0-rc.5", + "@core/asyncutil": "jsr:@core/asyncutil@^1.0.2", + "@deco/durable": "jsr:@deco/durable@0.5.3", + "@deco/warp": "jsr:@deco/warp@0.3.8", + "@hono/hono": "jsr:@hono/hono@^4.5.4", + "@std/cli": "jsr:@std/cli@^1.0.3", + "@zaubrik/djwt": "jsr:@zaubrik/djwt@^3.0.2", + "fast-json-patch": "npm:fast-json-patch@^3.1.1", + "simple-git": "npm:simple-git@^3.25.0", + "https://esm.sh/*preact-render-to-string@6.3.1": "npm:preact-render-to-string@6.4.2", + "@deco/dev": "jsr:@deco/dev@1.106.3" }, "lint": { "rules": { @@ -52,5 +80,6 @@ "recommended" ] } - } -} \ No newline at end of file + }, + "lock": false +} diff --git a/dev.ts b/dev.ts index bc466b6..0143ae9 100755 --- a/dev.ts +++ b/dev.ts @@ -1,3 +1,5 @@ +import { build } from "@deco/dev/tailwind"; +await build(); import "https://deno.land/x/dotenv@v3.2.2/load.ts"; import dev from "$fresh/dev.ts"; diff --git a/fresh.config.ts b/fresh.config.ts index afbb307..a500f86 100644 --- a/fresh.config.ts +++ b/fresh.config.ts @@ -1,6 +1,6 @@ // fresh.config.ts import { defineConfig } from "$fresh/server.ts"; -import plugins from "deco-sites/std/plugins/mod.ts"; +import { plugins } from "deco/plugins/deco.ts"; import manifest from "./manifest.gen.ts"; import tailwind from "./tailwind.config.ts"; import partytownPlugin from "partytown/mod.ts"; @@ -10,7 +10,7 @@ export default defineConfig({ ...plugins({ manifest, // deno-lint-ignore no-explicit-any - tailwind: tailwind as any, + }), partytownPlugin(), ], diff --git a/fresh.gen.ts b/fresh.gen.ts index 9aa31fd..d27bbc4 100644 --- a/fresh.gen.ts +++ b/fresh.gen.ts @@ -25,7 +25,7 @@ import * as $SliderJS from "./islands/SliderJS.tsx"; import * as $Sort from "./islands/Sort.tsx"; import * as $TopBar from "./islands/TopBar.tsx"; import * as $WishlistButton from "./islands/WishlistButton.tsx"; -import { type Manifest } from "$fresh/server.ts"; +import type { Manifest } from "$fresh/server.ts"; const manifest = { routes: { diff --git a/manifest.gen.ts b/manifest.gen.ts index 5a6f7c5..43fe43a 100644 --- a/manifest.gen.ts +++ b/manifest.gen.ts @@ -4,7 +4,8 @@ import * as $$$$$$$$$$$0 from "./apps/deco/crux.ts"; import * as $$$$$$$$$$$1 from "./apps/decohub.ts"; -import * as $$$$$$$$$$$2 from "./apps/site.ts"; +import * as $$$$$$$$$$$2 from "./apps/local/app-tags.ts"; +import * as $$$$$$$$$$$3 from "./apps/site.ts"; import * as $$$0 from "./loaders/RedirectsFromCsvWithEncoding.ts"; import * as $$$$$$0 from "./sections/Category/CategoryBanner.tsx"; import * as $$$$$$1 from "./sections/Category/CategoryBreadcrumb.tsx"; @@ -106,7 +107,8 @@ const manifest = { "apps": { "site/apps/deco/crux.ts": $$$$$$$$$$$0, "site/apps/decohub.ts": $$$$$$$$$$$1, - "site/apps/site.ts": $$$$$$$$$$$2, + "site/apps/local/app-tags.ts": $$$$$$$$$$$2, + "site/apps/site.ts": $$$$$$$$$$$3, }, "name": "site", "baseUrl": import.meta.url, diff --git a/sdk/useId.ts b/sdk/useId.ts new file mode 100644 index 0000000..ec978d4 --- /dev/null +++ b/sdk/useId.ts @@ -0,0 +1,13 @@ +/** + * As of July 2023, Fresh has a bug where preact's useId returns the same id + * for different islands, thus creating duplicate ids on the final markup + * + * This hook uses a non deterministic approach to creating ids, thus + * preventing duplicate ids being used on the markup. The drawback + * of this approach is creating hydration mismatches + */ + +import { useId as usePreactId, useMemo } from "preact/hooks"; + +export const useId = () => + useMemo(() => `${usePreactId()}${Math.trunc(Math.random() * 1e6)}`, []); \ No newline at end of file diff --git a/sections/DesignSystem/DesignSystem.tsx b/sections/DesignSystem/DesignSystem.tsx index 17c0d22..59a4ef6 100644 --- a/sections/DesignSystem/DesignSystem.tsx +++ b/sections/DesignSystem/DesignSystem.tsx @@ -7,7 +7,8 @@ import { Head } from "$fresh/runtime.ts"; import Icon from "$store/components/ui/Icon.tsx"; import { Color } from "https://deno.land/x/color@v0.3.0/mod.ts"; -import { useId } from "preact/hooks"; +import { useId } from "site/sdk/useId.ts"; + export interface OptionalColors { /**