@uappi/public-sdk 1.2.8 → 1.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/.gitlab-ci.yml +43 -0
  2. package/.husky/pre-push +1 -0
  3. package/.vscode/extensions.json +4 -4
  4. package/.vscode/settings.json +6 -6
  5. package/README.md +67 -0
  6. package/components/Animations/ExpandTransition.ts +89 -89
  7. package/components/Animations/index.ts +1 -1
  8. package/components/ColorTheme/ColorTheme.ts +80 -80
  9. package/components/ColorTheme/index.ts +1 -1
  10. package/components/ColorTheme/types.ts +18 -18
  11. package/components/SocialAuth/FacebookAuth/types.ts +2 -2
  12. package/components/SocialAuth/GoogleAuth/types.ts +2 -2
  13. package/components/SocialAuth/index.ts +1 -1
  14. package/components/index.ts +2 -2
  15. package/eslint.config.mjs +19 -0
  16. package/main.ts +4 -4
  17. package/modules/Api/README.md +469 -469
  18. package/modules/Api/endpoints/CommonComposable.ts +24 -24
  19. package/modules/Api/endpoints/CouponComposable.ts +18 -18
  20. package/modules/Api/endpoints/CustomerComposable.ts +1 -1
  21. package/modules/Api/endpoints/LoggoutComposable.ts +8 -8
  22. package/modules/Api/endpoints/MFAComposable.ts +43 -43
  23. package/modules/Api/endpoints/PaymentComposable.ts +14 -14
  24. package/modules/Api/endpoints/PublicComposable.ts +8 -8
  25. package/modules/Api/endpoints/TemplateComposable.ts +7 -7
  26. package/modules/Api/endpoints/ThirdPartyComposable.ts +13 -13
  27. package/modules/Api/endpoints/UpsellComposable.ts +17 -18
  28. package/modules/Api/endpoints/VerifyComposable.ts +7 -7
  29. package/modules/Api/endpoints/WalletComposable.ts +36 -36
  30. package/modules/Api/paramsSerializer/encodeWafNormalizer.ts +7 -7
  31. package/modules/Api/types/context/api-config.types.ts +0 -1
  32. package/modules/Api/types/endpoints/cart/cart.interfaces.ts +161 -161
  33. package/modules/Api/types/endpoints/cart/cart.types.ts +27 -27
  34. package/modules/Api/types/endpoints/common/common.interfaces.ts +21 -21
  35. package/modules/Api/types/endpoints/country/country.types.ts +7502 -7502
  36. package/modules/Api/types/endpoints/coupon/coupon.interfaces.ts +13 -13
  37. package/modules/Api/types/endpoints/discounts/discounts.interfaces.ts +9 -9
  38. package/modules/Api/types/endpoints/mfa/mfa.interfaces.ts +51 -51
  39. package/modules/Api/types/endpoints/payment/payment.interfaces.ts +103 -103
  40. package/modules/Api/types/endpoints/payment/payment.types.ts +27 -27
  41. package/modules/Api/types/endpoints/price/price.interfaces.ts +21 -21
  42. package/modules/Api/types/endpoints/template/template.interfaces.ts +29 -29
  43. package/modules/Api/types/endpoints/third-party/oauth.interfaces.ts +5 -5
  44. package/modules/Api/types/endpoints/upsell/upsell.interfaces.ts +12 -12
  45. package/modules/Api/types/endpoints/wallet/wallet-obsearch.ts +8 -8
  46. package/modules/Api/types/endpoints/wallet/wallet.interfaces.ts +57 -57
  47. package/modules/Api/types/endpoints/zipcode/zipcode.interfaces.ts +23 -23
  48. package/modules/Api/types/index.ts +504 -504
  49. package/modules/Tracking/endpoints/CartComposable.ts +75 -75
  50. package/modules/Tracking/endpoints/CustomerComposable.ts +71 -71
  51. package/modules/Tracking/endpoints/types.ts +11 -11
  52. package/modules/Tracking/events/actions/addPaymentInfo.ts +31 -31
  53. package/modules/Tracking/events/actions/addShippingInfo.ts +27 -27
  54. package/modules/Tracking/events/actions/addToCart.ts +35 -35
  55. package/modules/Tracking/events/actions/beginCheckout.ts +28 -28
  56. package/modules/Tracking/events/actions/customerProfile.ts +36 -36
  57. package/modules/Tracking/events/actions/generateLead.ts +12 -12
  58. package/modules/Tracking/events/actions/login.ts +8 -8
  59. package/modules/Tracking/events/actions/purchase.ts +42 -42
  60. package/modules/Tracking/events/actions/removeFromCart.ts +52 -52
  61. package/modules/Tracking/events/actions/search.ts +8 -8
  62. package/modules/Tracking/events/actions/selectItem.ts +64 -64
  63. package/modules/Tracking/events/actions/selectPromotion.ts +24 -24
  64. package/modules/Tracking/events/actions/shippingCalculation.ts +7 -7
  65. package/modules/Tracking/events/actions/signup.ts +8 -8
  66. package/modules/Tracking/events/actions/upsertToCart.ts +62 -62
  67. package/modules/Tracking/events/views/viewCart.ts +28 -28
  68. package/modules/Tracking/events/views/viewHome.ts +5 -5
  69. package/modules/Tracking/events/views/viewItem.ts +31 -31
  70. package/modules/Tracking/events/views/viewItemList.ts +65 -65
  71. package/modules/Tracking/events/views/viewNotFound.ts +5 -5
  72. package/modules/Tracking/events/views/viewOther.ts +5 -5
  73. package/modules/Tracking/events/views/viewPayment.ts +7 -7
  74. package/modules/Tracking/events/views/viewPromotion.ts +28 -28
  75. package/modules/Tracking/events/views/viewShipping.ts +7 -7
  76. package/modules/Tracking/index.ts +84 -84
  77. package/modules/Tracking/publicApiTracking.ts +35 -36
  78. package/modules/Tracking/types/actions/add-payment-info.interfaces.ts +12 -12
  79. package/modules/Tracking/types/actions/add-shipping-info.interfaces.ts +11 -11
  80. package/modules/Tracking/types/actions/add-to-cart.interfaces.ts +10 -10
  81. package/modules/Tracking/types/actions/begin-checkout.interfaces.ts +12 -12
  82. package/modules/Tracking/types/actions/customer-profile.interfaces.ts +19 -19
  83. package/modules/Tracking/types/actions/file-download.interfaces.ts +4 -4
  84. package/modules/Tracking/types/actions/generate-lead.interfaces.ts +12 -12
  85. package/modules/Tracking/types/actions/login.interfaces.ts +4 -4
  86. package/modules/Tracking/types/actions/purchase.interfaces.ts +18 -18
  87. package/modules/Tracking/types/actions/remove-from-cart.interfaces.ts +10 -10
  88. package/modules/Tracking/types/actions/search.interfaces.ts +4 -4
  89. package/modules/Tracking/types/actions/select-item.interfaces.ts +16 -16
  90. package/modules/Tracking/types/actions/select-promotion.interfaces.ts +8 -8
  91. package/modules/Tracking/types/actions/share.interfaces.ts +4 -4
  92. package/modules/Tracking/types/actions/shipping-calculation.interfaces.ts +3 -3
  93. package/modules/Tracking/types/actions/signup.interfaces.ts +4 -4
  94. package/modules/Tracking/types/event.types.ts +54 -54
  95. package/modules/Tracking/types/index.ts +37 -37
  96. package/modules/Tracking/types/item.interfaces.ts +30 -30
  97. package/modules/Tracking/types/views/view-cart.interfaces.ts +11 -11
  98. package/modules/Tracking/types/views/view-home.interfaces.ts +3 -3
  99. package/modules/Tracking/types/views/view-item-list.interfaces.ts +11 -11
  100. package/modules/Tracking/types/views/view-item.interfaces.ts +15 -15
  101. package/modules/Tracking/types/views/view-not-found.interfaces.ts +3 -3
  102. package/modules/Tracking/types/views/view-other.interfaces.ts +3 -3
  103. package/modules/Tracking/types/views/view-payment.interfaces.ts +3 -3
  104. package/modules/Tracking/types/views/view-promotion.interfaces.ts +8 -8
  105. package/modules/Tracking/types/views/view-shipping.interfaces.ts +3 -3
  106. package/modules/Tracking/utils/cart.ts +100 -100
  107. package/modules/Tracking/utils/pushDatalayer.ts +7 -7
  108. package/modules/index.ts +1 -1
  109. package/package.json +18 -2
  110. package/scripts/release.sh +34 -0
  111. package/shims.d.ts +5 -0
  112. package/tsconfig.json +17 -0
@@ -1,469 +1,469 @@
1
- # ../../api
2
-
3
- Composables Vue 3 + TypeScript para integração simplificada com a API pública da Uappi, facilitando o consumo, gerenciamento e reutilização de endpoints em aplicações modernas.
4
-
5
- ## Instalação
6
-
7
- Adicione ao seu projeto:
8
-
9
- ```bash
10
- npm install ../../api
11
- ```
12
-
13
- ## Escopos Disponíveis
14
-
15
- O pacote expõe os seguintes escopos, cada um agrupando recursos relacionados:
16
-
17
- - [**cart**](#cart): Operações de carrinho, como adicionar/remover produtos, simular frete, pagamentos e condições.
18
- - listDetail Lista detalhes do carrinho
19
- - addProduct Adiciona um produto ao carrinho
20
- - deleteProduct Remove um produto do carrinho
21
- - upsertProduct Atualiza ou insere produto
22
- - shipmentQuote Lista opções de frete com base no carrinho
23
- - selectShipment Seleciona opção de frete
24
- - applyAddresses Aplica endereços entrega/faturamento ao carrinho
25
- - listPayments Lista formas de pagamento
26
- - buy: Finaliza a compra
27
- - paymentConditions: Lista condições de pagamento
28
-
29
- - [**common**](#common): Utilitários como consulta de CEP, países e bandeiras de cartão.
30
- - listZipcode: Lista detalhes de endereço de CEP
31
- - listContries: Lista detalhes de países
32
- - countryDetail: Detalhes de um país
33
- - listCardFlags: Retorna dados utilitários sobre cada bandeira de cartão (regex de validação, etc)
34
-
35
- - [**customer**](#customer): Recursos para autenticação, cadastro, endereços, pedidos, newsletter, avaliações e histórico do cliente.
36
- - addNewsletter: Inscreve na newsletter da loja por email e name
37
- - deleteNewsletter: Remove inscrição na newsletter (apenas cliente logado)
38
- - createProductReview: Avalia um produto (apenas clientes logado)
39
- - listProductReview: Listagem paginada de todas avaliações do produto
40
- - listStoreReview: Listagem paginada de todas avaliações da loja
41
- - createInterest: Cria uma solicitação de interesse em um produto fora de estoque
42
- - changePasswordByAuthenticated: Alteração de senha com cliente autenticado
43
- - changePasswordByCode: Alteração de senha através de código enviado por e-mail
44
- - check: Verifica existencia de cliente com base no e-mail ou documento
45
- - listAddress: Listagem de endereços do cliente logado
46
- - createAddress: Cria novo endereço do cliente logado
47
- - deleteAddress: Remove um endereço do cliente logado
48
- - updateAddress: Atualiza endereço do cliente logado
49
- - updatePrimaryAddress: Define um endereço como principal
50
- - detail: Detalhes do cliente logado
51
- - passwordRecovery: Recuperação de senha
52
- - signinByDocument: Login por documento
53
- - signinByEmail: Login por e-mail
54
- - signup: Cadastro de novo cliente
55
- - update: Atualiza dados do cliente
56
- - loggout: Logout
57
- - detailOrderGroup: Detalhes de pedido
58
- - listOrderGroups: Lista pedidos
59
- - listOrderItemHistory: Exibe o histórico de atualizações do pedido
60
- - listCustomerHistory: Exibe o histórico de atualizações do cliente (senha, endereço, etc.)
61
- - listCustomerReview: Lista avaliações do cliente em produto
62
- - listWalletTransaction: Lista transações da carteira
63
- - claimGiftCard: Resgata gift card
64
-
65
- - [**customization**](#customization): Listagem de banners, vitrines e menus customizados.
66
- - listShowcase: Lista detalhes de vitrines
67
- - listBanners: Lista detalhes de banners
68
- - listMenu: Lista detalhes de menus
69
- - listTemplateSettings: Lista as configurações de settings e apps da loja com base na URI
70
-
71
- - [**product**](#product): Consulta de marcas, variações, busca, comentários e informações de produtos.
72
- - listBrands: Listagem de marcas ativas
73
- - listVariation: Lista variações de um produto
74
- - getUrl: Consulta URL de produto (categorias, institucionais, detalhe de produto, etc.)
75
- - getSearch: Pesquisa produtos por termo
76
- - listShipmentQuoteProduct: Lista opções frete com base em um produto
77
- - deleteProductComment: Remove um comentário no produto
78
- - createProductComment: Adiciona um comentário no produto
79
- - listProductComments: Lista comentários de produto
80
-
81
- - [**promotional**](#promotional): Ofertas, cupons, carteiras e pontos promocionais.
82
- - listPairOffers: Lista ofertas em pares de um produto (compre junto)
83
- - addCoupon: Adiciona cupom no carrinho
84
- - deleteCoupon: Remove cupom no carrinho
85
- - applyWallet: Aplica carteira saldo da carteira no carrinho
86
- - deleteWallet: Remove carteira saldo da carteira no carrinho
87
- - applyPoint: Aplica saldo de pontos no carrinho
88
- - deletePoint: Remove saldo de pontos no carrinho
89
-
90
- ---
91
-
92
- ## Exemplos de Uso por Escopo
93
-
94
- ### [cart](#cart)
95
- ```ts
96
- import api from '../../api';
97
-
98
- // Listar detalhes do carrinho
99
- await api.cart.listDetail(): CartResponse;
100
-
101
- // Adiciona produto ao carrinho
102
- await api.cart.addProduct(
103
- payload: UpsertCartRequest
104
- ): CartResponse;
105
-
106
- // Remover um ou varios produtos do carrinho
107
- await api.cart.deleteProduct(
108
- payload: DeleteCartRequest
109
- ): CartResponse;
110
-
111
- // Adiciona ou atualiza a quantidade do produto no carrinho
112
- await api.cart.upsertProduct(
113
- payload: UpsertCartRequest
114
- ): CartResponse;
115
-
116
- // Retorna opções de frete no contexto do carrinho
117
- await api.cart.shipmentQuote(
118
- payload: ShipmentQuoteCartRequest
119
- ): CartResponse;
120
-
121
- // Seleciona uma opção de frete no contexto do carrinho.
122
- await api.cart.selectShipment(
123
- payload: SelectShipimentRequest
124
- ): CartResponse;
125
-
126
- // Aplica endereço no contexto do carrinho.
127
- await api.cart.applyAddresses(
128
- payload: AddressesToCartRequest
129
- ): CartResponse;
130
-
131
- // Lista as opções de pagamento no contexto do carrinho.
132
- await api.cart.listPayments(): PaymentResponse;
133
-
134
- // Informa as condições do pagamento, para verificar condições do mix de pagamento
135
- await api.cart.paymentConditions(
136
- payload: PaymentConditionsRequest
137
- ): PaymentConditionsResponse;
138
- ```
139
-
140
- ### [common](#common)
141
- ```ts
142
- import api from '../../api';
143
-
144
- // Consultar CEP
145
- await api.common.listZipcode(zipcode: string): ZipcodeResponse;
146
-
147
- // Retorna dados complementares de cada pais
148
- await api.common.listContries(): Array<CountryResponse>;
149
-
150
- // Retorna os detalhes de um pais
151
- await api.common.countryDetail(code: CountryAlpha3): CountryResponse;
152
-
153
- // Retorna dados utilitários sobre cada bandeira de cartão
154
- await api.common.listCardFlags(): CardFlags;
155
- ```
156
-
157
- ### [customer](#customer)
158
- ```ts
159
- import api from '../../api';
160
-
161
- // Inscreve na newsletter da loja por email e name
162
- await api.customer.addNewsletter(): CustomerOrderResponse;
163
-
164
- // Remove inscrição na newsletter (apenas clientes logado)
165
- await api.customer.deleteNewsletter(): CustomerOrderResponse;
166
-
167
- // Avalia um produto (apenas clientes logado)
168
- await api.customer.createProductReview(
169
- productId: number,
170
- payload: ProductReviewRequest,
171
- ): ProductReviewResponse;
172
-
173
- // Listagem paginada de todas avaliações do produto
174
- await api.customer.listProductReview(
175
- options?: Pick<
176
- ApiParams<ReviewFields, ReviewSortFields, ReviewConditionFields>,
177
- 'condition' | 'order' | 'fields' | 'limit' | 'offset'
178
- >
179
- ): ProductReviewResponse;
180
-
181
- // Listagem paginada de todas avaliações da loja
182
- await api.customer.listStoreReview(): ProductReviewResponse;
183
-
184
- //
185
- await api.customer.createInterest(
186
- payload: RequestInterest
187
- ): ResponseInterest;
188
-
189
- // Alteração de senha com cliente autenticado
190
- await api.customer.changePasswordByAuthenticated(
191
- payload: ChangePasswordCustomerAuthenticated,
192
- ): boolean;
193
-
194
- // Alteração de senha através de código enviado por e-mail
195
- await api.customer.changePasswordByCode(
196
- payload: ChangePasswordCustomerByCode
197
- ): boolean;
198
-
199
- // Verifica existencia de cliente com base no e-mail ou documento
200
- await api.customer.check(
201
- payload: CheckCustomer
202
- ): boolean;
203
-
204
- // Listagem de endereços do cliente logado
205
- await api.customer.listAddress(): CustomerAddressesResponse;
206
-
207
- // Cria novo endereço do cliente logado
208
- await api.customer.createAddress(
209
- payload: UpsertCustomerAddressRequest
210
- ): CustomerAddressResponse;
211
-
212
- // Remove um endereço do cliente logado
213
- await api.customer.deleteAddress(
214
- addressId: number
215
- ): CustomerAddressResponse;
216
-
217
- // Atualiza endereço do cliente logado
218
- await api.customer.updateAddress(
219
- addressId: number,
220
- payload: UpsertCustomerAddressRequest,
221
- ): CustomerAddressResponse;
222
-
223
- //
224
- await api.customer.updatePrimaryAddress(
225
- addressId: number
226
- ): CustomerAddressResponse;
227
-
228
- //
229
- await api.customer.detail(
230
- options?: Pick<
231
- ApiParams<CustomerFields, CustomerSortFields, CustomerConditionFields>,
232
- 'condition' | 'fields' | 'order'
233
- >
234
- ): CustomerResponse;
235
-
236
- //
237
- await api.customer.passwordRecovery(
238
- payload: PasswordRecoveryCustomer
239
- ): boolean;
240
-
241
- //
242
- await api.customer.signinByDocument(
243
- payload: SigninCustomerByDocument
244
- ): ResponseSigninCustomer;
245
-
246
- //
247
- await api.customer.signinByEmail(
248
- payload: SigninCustomerByEmail
249
- ): ResponseSigninCustomer;
250
-
251
- //
252
- await api.customer.signup(
253
- payload: SignupCustomer
254
- ): CustomerResponse;
255
-
256
- //
257
- await api.customer.update(
258
- payload: UpdateCustomer
259
- ): CustomerResponse;
260
-
261
- //
262
- await api.customer.loggout(): boolean;
263
-
264
- //
265
- await api.customer.detailOrderGroup(
266
- orderId: number,
267
- options?: Pick<ApiParams<CustomerOrderGroupFields>, 'fields'>,
268
- ): CustomerOrderResponse;
269
-
270
- //
271
- await api.customer.listOrderGroups(
272
- options?: Pick<
273
- ApiParams<
274
- CustomerOrderGroupFields,
275
- CustomerOrderGroupSortFields,
276
- CustomerOrderGroupConditionFields
277
- >,
278
- 'condition' | 'fields' | 'limit' | 'offset' | 'order'
279
- >,
280
- ): CustomerOrdersResponse;
281
-
282
- //
283
- await api.customer.listOrderItemHistory(
284
- orderId: number,
285
- options?: Pick<
286
- ApiParams<
287
- '',
288
- CustomerOrderItemHistorySortFields,
289
- CustomerOrderItemHistoryConditionFields
290
- >,
291
- 'condition' | 'fields' | 'limit' | 'offset' | 'order'
292
- >,
293
- ): CustomerOrderItemHistoriesResponse;
294
-
295
- //
296
- await api.customer.listCustomerHistory(
297
- options?: Pick<
298
- ApiParams<
299
- '',
300
- CustomerHistorySortFields,
301
- CustomerHistoryConditionFields
302
- >,
303
- 'condition' | 'limit' | 'offset' | 'order'
304
- >,
305
- ): CustomerHistoryResponse;
306
-
307
- //
308
- await api.customer.listCustomerReview(
309
- options?: Pick<
310
- ApiParams<
311
- ReviewFields,
312
- ReviewSortFields,
313
- ReviewConditionFields
314
- >,
315
- 'condition' | 'order' | 'fields' | 'limit' | 'offset'
316
- >,
317
- ): ProductReviewResponse;
318
-
319
- //
320
- await api.customer.listWalletTransaction(
321
- options?: Pick<
322
- ApiParams<
323
- '',
324
- WalletSortFields,
325
- WalletConditionFields
326
- >,
327
- 'condition' | 'order' | 'limit' | 'offset'
328
- >,
329
- ): WalletTransactionResponse;
330
-
331
- //
332
- await api.customer.claimGiftCard(
333
- payload: ClaimGiftCardRequest
334
- ): ClaimGiftCardResponse;
335
- ```
336
-
337
- ### [customization](#customization)
338
- ```ts
339
- import api from '../../api';
340
-
341
- // Esse método possui sobrecarga de função, permitindo uma mesma função possuir duas assinaturas.
342
- // Retorna uma ou varias vitrines com base nos code passado como parametro
343
- await api.customization.listShowcase(codes: Array<string>): Array<Showcase>;
344
- await api.customization.listShowcase(code: string): Showcase;
345
-
346
- // Esse método possui sobrecarga de função, permitindo uma mesma função possuir duas assinaturas.
347
- // Esse método possui Generic AdditionalParameters usado para definir a tipagem dos parametros personalizados e dinamicos cadastrados no grupo de banner.
348
- // Retorna uma ou varios grupos de banner com base nos code passado como parametro
349
- await api.customization.listBanners<AdditionalParameters>(codes: Array<string>): Array<Banners<AdditionalParameters>>;
350
- await api.customization.listBanners<AdditionalParameters>(code: string): Banners<AdditionalParameters>;
351
-
352
- // Esse método possui sobrecarga de função, permitindo uma mesma função possuir duas assinaturas.
353
- // Retorna uma ou varias vitrines com base nos code passado como parametro
354
- await api.customization.listMenu(codes: Array<string>) Array<Menu>;
355
- await api.customization.listMenu(code: string) Menu;
356
- ```
357
-
358
- ### [product](#product)
359
- ```ts
360
- import api from '../../api';
361
-
362
- // Listar marcas
363
- await api.product.listBrands(
364
- options?: Pick<
365
- ApiParams<BrandFields, BrandOrders, BrandConditions>,
366
- 'condition' | 'fields' | 'offset' | 'limit' | 'order'
367
- >
368
- ): Brand;
369
-
370
- // Buscar variações de um produto
371
- await api.product.listVariation(
372
- variationData: VariationData,
373
- options?: Pick<
374
- ApiParams<ProductFields, ProductSortFields, ProductConditionFields>,
375
- 'condition' | 'fields' | 'meta'
376
- >
377
- ): Product;
378
-
379
- // Nesse método é necessário definir o Generic UrlType conforme a request da página que espera ser retornado, exemplo: para buscar uma página de catalogo é informamos UrlListing. Todos os tipos podem ser conferidos na documentação oficial.
380
- // Request com dados da página (categoria, detalhe de produto, institucional, marca, etc)
381
- await api.product.getUrl<UrlType>(
382
- path: string,
383
- options?: Pick<
384
- ApiParams<ProductFields, ProductOrderFields, ProductConditionFields>,
385
- 'condition' | 'fields' | 'limit' | 'offset' | 'meta' | 'order'
386
- >
387
- ): UrlType;
388
-
389
- // Retorna uma lista de produtos com base no termo de pesquisa. Pode ser usado para criar uma sugestão no header do site e também para criar uma listagem paginada de busca de produto
390
- await api.product.getSearch(
391
- term: string,
392
- options?: Pick<
393
- ApiParams<ProductFields, ProductSortFields, ProductConditionFields>,
394
- 'condition' | 'fields' | 'limit' | 'meta' | 'offset' | 'order'
395
- >
396
- ): Search;
397
-
398
- // Usado para cotar frete no contexto do produto informado na requisição. Não considera produtos persistidos no carrinho.
399
- await api.product.listShipmentQuoteProduct(
400
- payload: Pick<ApiParams, 'targetCountryCode' | 'targetZipCode' | 'items'>,
401
- ): ShipmentQuoteProductResponse;
402
-
403
- // Permite o cliente deletar seu comentário/pergunta realizada no produto.
404
- await api.product.deleteProductComment(
405
- commentId: number
406
- ): boolean;
407
-
408
- // Permite o cliente criar um comentário/pergunta no produto.
409
- await api.product.createProductComment(
410
- productId: number,
411
- payload: CreateProductComment,
412
- ): ProductComment;
413
-
414
- // Retorna uma listagem paginada de todos os comentários do produto
415
- await api.product.listProductComments(
416
- options?: Pick<
417
- ApiParams<
418
- ProductCommentFields,
419
- ProductCommentSortFields,
420
- ProductCommentConditionFields
421
- >,
422
- 'condition' | 'order' | 'limit' | 'offset' | 'fields'
423
- >
424
- ): ProductCommentsResponse;
425
- ```
426
-
427
-
428
- ### [promotional](#promotional)
429
- ```ts
430
- import api from '../../api';
431
-
432
- // Retorna a listagem de opções de compre junto no contexto do produto.
433
- await api.promotional.listPairOffers(
434
- productId: number,
435
- options?: Pick<ApiParams<ProductFields>, 'fields' | 'variationMap'>
436
- ): PairOfferResponse;
437
-
438
- // Adiciona cupom no contexto do carrinho.
439
- await api.promotional.addCoupon(
440
- payload: AddCouponRequest
441
- ): CartResponse;
442
-
443
- // Remove cupom no contexto do carrinho.
444
- await api.promotional.deleteCoupon(): CartResponse;
445
-
446
- // Aplica saldo em carteira como forma de desconto no contexto carrinho.
447
- await api.promotional.applyWallet(): CartResponse;
448
-
449
- // Remove saldo em carteira aplicado no contexto do carrinho.
450
- await api.promotional.deleteWallet(): CartResponse;
451
-
452
- // Aplica saldo de pontos como forma de desconto no contexto do carrinho.
453
- await api.promotional.applyPoint(): CartResponse;
454
-
455
- // Remove saldo de pontos aplicado no contexto do carrinho.
456
- await api.promotional.deletePoint(): CartResponse;
457
- ```
458
-
459
- ## Tipos
460
-
461
- Todos os métodos retornam dados tipados para melhor experiência com TypeScript.
462
-
463
- ## Contribuição
464
-
465
- Contribuições são bem-vindas! Abra uma issue ou envie um pull request.
466
-
467
- ## Licença
468
-
469
- ISC
1
+ # ../../api
2
+
3
+ Composables Vue 3 + TypeScript para integração simplificada com a API pública da Uappi, facilitando o consumo, gerenciamento e reutilização de endpoints em aplicações modernas.
4
+
5
+ ## Instalação
6
+
7
+ Adicione ao seu projeto:
8
+
9
+ ```bash
10
+ npm install ../../api
11
+ ```
12
+
13
+ ## Escopos Disponíveis
14
+
15
+ O pacote expõe os seguintes escopos, cada um agrupando recursos relacionados:
16
+
17
+ - [**cart**](#cart): Operações de carrinho, como adicionar/remover produtos, simular frete, pagamentos e condições.
18
+ - listDetail Lista detalhes do carrinho
19
+ - addProduct Adiciona um produto ao carrinho
20
+ - deleteProduct Remove um produto do carrinho
21
+ - upsertProduct Atualiza ou insere produto
22
+ - shipmentQuote Lista opções de frete com base no carrinho
23
+ - selectShipment Seleciona opção de frete
24
+ - applyAddresses Aplica endereços entrega/faturamento ao carrinho
25
+ - listPayments Lista formas de pagamento
26
+ - buy: Finaliza a compra
27
+ - paymentConditions: Lista condições de pagamento
28
+
29
+ - [**common**](#common): Utilitários como consulta de CEP, países e bandeiras de cartão.
30
+ - listZipcode: Lista detalhes de endereço de CEP
31
+ - listContries: Lista detalhes de países
32
+ - countryDetail: Detalhes de um país
33
+ - listCardFlags: Retorna dados utilitários sobre cada bandeira de cartão (regex de validação, etc)
34
+
35
+ - [**customer**](#customer): Recursos para autenticação, cadastro, endereços, pedidos, newsletter, avaliações e histórico do cliente.
36
+ - addNewsletter: Inscreve na newsletter da loja por email e name
37
+ - deleteNewsletter: Remove inscrição na newsletter (apenas cliente logado)
38
+ - createProductReview: Avalia um produto (apenas clientes logado)
39
+ - listProductReview: Listagem paginada de todas avaliações do produto
40
+ - listStoreReview: Listagem paginada de todas avaliações da loja
41
+ - createInterest: Cria uma solicitação de interesse em um produto fora de estoque
42
+ - changePasswordByAuthenticated: Alteração de senha com cliente autenticado
43
+ - changePasswordByCode: Alteração de senha através de código enviado por e-mail
44
+ - check: Verifica existencia de cliente com base no e-mail ou documento
45
+ - listAddress: Listagem de endereços do cliente logado
46
+ - createAddress: Cria novo endereço do cliente logado
47
+ - deleteAddress: Remove um endereço do cliente logado
48
+ - updateAddress: Atualiza endereço do cliente logado
49
+ - updatePrimaryAddress: Define um endereço como principal
50
+ - detail: Detalhes do cliente logado
51
+ - passwordRecovery: Recuperação de senha
52
+ - signinByDocument: Login por documento
53
+ - signinByEmail: Login por e-mail
54
+ - signup: Cadastro de novo cliente
55
+ - update: Atualiza dados do cliente
56
+ - loggout: Logout
57
+ - detailOrderGroup: Detalhes de pedido
58
+ - listOrderGroups: Lista pedidos
59
+ - listOrderItemHistory: Exibe o histórico de atualizações do pedido
60
+ - listCustomerHistory: Exibe o histórico de atualizações do cliente (senha, endereço, etc.)
61
+ - listCustomerReview: Lista avaliações do cliente em produto
62
+ - listWalletTransaction: Lista transações da carteira
63
+ - claimGiftCard: Resgata gift card
64
+
65
+ - [**customization**](#customization): Listagem de banners, vitrines e menus customizados.
66
+ - listShowcase: Lista detalhes de vitrines
67
+ - listBanners: Lista detalhes de banners
68
+ - listMenu: Lista detalhes de menus
69
+ - listTemplateSettings: Lista as configurações de settings e apps da loja com base na URI
70
+
71
+ - [**product**](#product): Consulta de marcas, variações, busca, comentários e informações de produtos.
72
+ - listBrands: Listagem de marcas ativas
73
+ - listVariation: Lista variações de um produto
74
+ - getUrl: Consulta URL de produto (categorias, institucionais, detalhe de produto, etc.)
75
+ - getSearch: Pesquisa produtos por termo
76
+ - listShipmentQuoteProduct: Lista opções frete com base em um produto
77
+ - deleteProductComment: Remove um comentário no produto
78
+ - createProductComment: Adiciona um comentário no produto
79
+ - listProductComments: Lista comentários de produto
80
+
81
+ - [**promotional**](#promotional): Ofertas, cupons, carteiras e pontos promocionais.
82
+ - listPairOffers: Lista ofertas em pares de um produto (compre junto)
83
+ - addCoupon: Adiciona cupom no carrinho
84
+ - deleteCoupon: Remove cupom no carrinho
85
+ - applyWallet: Aplica carteira saldo da carteira no carrinho
86
+ - deleteWallet: Remove carteira saldo da carteira no carrinho
87
+ - applyPoint: Aplica saldo de pontos no carrinho
88
+ - deletePoint: Remove saldo de pontos no carrinho
89
+
90
+ ---
91
+
92
+ ## Exemplos de Uso por Escopo
93
+
94
+ ### [cart](#cart)
95
+ ```ts
96
+ import api from '../../api';
97
+
98
+ // Listar detalhes do carrinho
99
+ await api.cart.listDetail(): CartResponse;
100
+
101
+ // Adiciona produto ao carrinho
102
+ await api.cart.addProduct(
103
+ payload: UpsertCartRequest
104
+ ): CartResponse;
105
+
106
+ // Remover um ou varios produtos do carrinho
107
+ await api.cart.deleteProduct(
108
+ payload: DeleteCartRequest
109
+ ): CartResponse;
110
+
111
+ // Adiciona ou atualiza a quantidade do produto no carrinho
112
+ await api.cart.upsertProduct(
113
+ payload: UpsertCartRequest
114
+ ): CartResponse;
115
+
116
+ // Retorna opções de frete no contexto do carrinho
117
+ await api.cart.shipmentQuote(
118
+ payload: ShipmentQuoteCartRequest
119
+ ): CartResponse;
120
+
121
+ // Seleciona uma opção de frete no contexto do carrinho.
122
+ await api.cart.selectShipment(
123
+ payload: SelectShipimentRequest
124
+ ): CartResponse;
125
+
126
+ // Aplica endereço no contexto do carrinho.
127
+ await api.cart.applyAddresses(
128
+ payload: AddressesToCartRequest
129
+ ): CartResponse;
130
+
131
+ // Lista as opções de pagamento no contexto do carrinho.
132
+ await api.cart.listPayments(): PaymentResponse;
133
+
134
+ // Informa as condições do pagamento, para verificar condições do mix de pagamento
135
+ await api.cart.paymentConditions(
136
+ payload: PaymentConditionsRequest
137
+ ): PaymentConditionsResponse;
138
+ ```
139
+
140
+ ### [common](#common)
141
+ ```ts
142
+ import api from '../../api';
143
+
144
+ // Consultar CEP
145
+ await api.common.listZipcode(zipcode: string): ZipcodeResponse;
146
+
147
+ // Retorna dados complementares de cada pais
148
+ await api.common.listContries(): Array<CountryResponse>;
149
+
150
+ // Retorna os detalhes de um pais
151
+ await api.common.countryDetail(code: CountryAlpha3): CountryResponse;
152
+
153
+ // Retorna dados utilitários sobre cada bandeira de cartão
154
+ await api.common.listCardFlags(): CardFlags;
155
+ ```
156
+
157
+ ### [customer](#customer)
158
+ ```ts
159
+ import api from '../../api';
160
+
161
+ // Inscreve na newsletter da loja por email e name
162
+ await api.customer.addNewsletter(): CustomerOrderResponse;
163
+
164
+ // Remove inscrição na newsletter (apenas clientes logado)
165
+ await api.customer.deleteNewsletter(): CustomerOrderResponse;
166
+
167
+ // Avalia um produto (apenas clientes logado)
168
+ await api.customer.createProductReview(
169
+ productId: number,
170
+ payload: ProductReviewRequest,
171
+ ): ProductReviewResponse;
172
+
173
+ // Listagem paginada de todas avaliações do produto
174
+ await api.customer.listProductReview(
175
+ options?: Pick<
176
+ ApiParams<ReviewFields, ReviewSortFields, ReviewConditionFields>,
177
+ 'condition' | 'order' | 'fields' | 'limit' | 'offset'
178
+ >
179
+ ): ProductReviewResponse;
180
+
181
+ // Listagem paginada de todas avaliações da loja
182
+ await api.customer.listStoreReview(): ProductReviewResponse;
183
+
184
+ //
185
+ await api.customer.createInterest(
186
+ payload: RequestInterest
187
+ ): ResponseInterest;
188
+
189
+ // Alteração de senha com cliente autenticado
190
+ await api.customer.changePasswordByAuthenticated(
191
+ payload: ChangePasswordCustomerAuthenticated,
192
+ ): boolean;
193
+
194
+ // Alteração de senha através de código enviado por e-mail
195
+ await api.customer.changePasswordByCode(
196
+ payload: ChangePasswordCustomerByCode
197
+ ): boolean;
198
+
199
+ // Verifica existencia de cliente com base no e-mail ou documento
200
+ await api.customer.check(
201
+ payload: CheckCustomer
202
+ ): boolean;
203
+
204
+ // Listagem de endereços do cliente logado
205
+ await api.customer.listAddress(): CustomerAddressesResponse;
206
+
207
+ // Cria novo endereço do cliente logado
208
+ await api.customer.createAddress(
209
+ payload: UpsertCustomerAddressRequest
210
+ ): CustomerAddressResponse;
211
+
212
+ // Remove um endereço do cliente logado
213
+ await api.customer.deleteAddress(
214
+ addressId: number
215
+ ): CustomerAddressResponse;
216
+
217
+ // Atualiza endereço do cliente logado
218
+ await api.customer.updateAddress(
219
+ addressId: number,
220
+ payload: UpsertCustomerAddressRequest,
221
+ ): CustomerAddressResponse;
222
+
223
+ //
224
+ await api.customer.updatePrimaryAddress(
225
+ addressId: number
226
+ ): CustomerAddressResponse;
227
+
228
+ //
229
+ await api.customer.detail(
230
+ options?: Pick<
231
+ ApiParams<CustomerFields, CustomerSortFields, CustomerConditionFields>,
232
+ 'condition' | 'fields' | 'order'
233
+ >
234
+ ): CustomerResponse;
235
+
236
+ //
237
+ await api.customer.passwordRecovery(
238
+ payload: PasswordRecoveryCustomer
239
+ ): boolean;
240
+
241
+ //
242
+ await api.customer.signinByDocument(
243
+ payload: SigninCustomerByDocument
244
+ ): ResponseSigninCustomer;
245
+
246
+ //
247
+ await api.customer.signinByEmail(
248
+ payload: SigninCustomerByEmail
249
+ ): ResponseSigninCustomer;
250
+
251
+ //
252
+ await api.customer.signup(
253
+ payload: SignupCustomer
254
+ ): CustomerResponse;
255
+
256
+ //
257
+ await api.customer.update(
258
+ payload: UpdateCustomer
259
+ ): CustomerResponse;
260
+
261
+ //
262
+ await api.customer.loggout(): boolean;
263
+
264
+ //
265
+ await api.customer.detailOrderGroup(
266
+ orderId: number,
267
+ options?: Pick<ApiParams<CustomerOrderGroupFields>, 'fields'>,
268
+ ): CustomerOrderResponse;
269
+
270
+ //
271
+ await api.customer.listOrderGroups(
272
+ options?: Pick<
273
+ ApiParams<
274
+ CustomerOrderGroupFields,
275
+ CustomerOrderGroupSortFields,
276
+ CustomerOrderGroupConditionFields
277
+ >,
278
+ 'condition' | 'fields' | 'limit' | 'offset' | 'order'
279
+ >,
280
+ ): CustomerOrdersResponse;
281
+
282
+ //
283
+ await api.customer.listOrderItemHistory(
284
+ orderId: number,
285
+ options?: Pick<
286
+ ApiParams<
287
+ '',
288
+ CustomerOrderItemHistorySortFields,
289
+ CustomerOrderItemHistoryConditionFields
290
+ >,
291
+ 'condition' | 'fields' | 'limit' | 'offset' | 'order'
292
+ >,
293
+ ): CustomerOrderItemHistoriesResponse;
294
+
295
+ //
296
+ await api.customer.listCustomerHistory(
297
+ options?: Pick<
298
+ ApiParams<
299
+ '',
300
+ CustomerHistorySortFields,
301
+ CustomerHistoryConditionFields
302
+ >,
303
+ 'condition' | 'limit' | 'offset' | 'order'
304
+ >,
305
+ ): CustomerHistoryResponse;
306
+
307
+ //
308
+ await api.customer.listCustomerReview(
309
+ options?: Pick<
310
+ ApiParams<
311
+ ReviewFields,
312
+ ReviewSortFields,
313
+ ReviewConditionFields
314
+ >,
315
+ 'condition' | 'order' | 'fields' | 'limit' | 'offset'
316
+ >,
317
+ ): ProductReviewResponse;
318
+
319
+ //
320
+ await api.customer.listWalletTransaction(
321
+ options?: Pick<
322
+ ApiParams<
323
+ '',
324
+ WalletSortFields,
325
+ WalletConditionFields
326
+ >,
327
+ 'condition' | 'order' | 'limit' | 'offset'
328
+ >,
329
+ ): WalletTransactionResponse;
330
+
331
+ //
332
+ await api.customer.claimGiftCard(
333
+ payload: ClaimGiftCardRequest
334
+ ): ClaimGiftCardResponse;
335
+ ```
336
+
337
+ ### [customization](#customization)
338
+ ```ts
339
+ import api from '../../api';
340
+
341
+ // Esse método possui sobrecarga de função, permitindo uma mesma função possuir duas assinaturas.
342
+ // Retorna uma ou varias vitrines com base nos code passado como parametro
343
+ await api.customization.listShowcase(codes: Array<string>): Array<Showcase>;
344
+ await api.customization.listShowcase(code: string): Showcase;
345
+
346
+ // Esse método possui sobrecarga de função, permitindo uma mesma função possuir duas assinaturas.
347
+ // Esse método possui Generic AdditionalParameters usado para definir a tipagem dos parametros personalizados e dinamicos cadastrados no grupo de banner.
348
+ // Retorna uma ou varios grupos de banner com base nos code passado como parametro
349
+ await api.customization.listBanners<AdditionalParameters>(codes: Array<string>): Array<Banners<AdditionalParameters>>;
350
+ await api.customization.listBanners<AdditionalParameters>(code: string): Banners<AdditionalParameters>;
351
+
352
+ // Esse método possui sobrecarga de função, permitindo uma mesma função possuir duas assinaturas.
353
+ // Retorna uma ou varias vitrines com base nos code passado como parametro
354
+ await api.customization.listMenu(codes: Array<string>) Array<Menu>;
355
+ await api.customization.listMenu(code: string) Menu;
356
+ ```
357
+
358
+ ### [product](#product)
359
+ ```ts
360
+ import api from '../../api';
361
+
362
+ // Listar marcas
363
+ await api.product.listBrands(
364
+ options?: Pick<
365
+ ApiParams<BrandFields, BrandOrders, BrandConditions>,
366
+ 'condition' | 'fields' | 'offset' | 'limit' | 'order'
367
+ >
368
+ ): Brand;
369
+
370
+ // Buscar variações de um produto
371
+ await api.product.listVariation(
372
+ variationData: VariationData,
373
+ options?: Pick<
374
+ ApiParams<ProductFields, ProductSortFields, ProductConditionFields>,
375
+ 'condition' | 'fields' | 'meta'
376
+ >
377
+ ): Product;
378
+
379
+ // Nesse método é necessário definir o Generic UrlType conforme a request da página que espera ser retornado, exemplo: para buscar uma página de catalogo é informamos UrlListing. Todos os tipos podem ser conferidos na documentação oficial.
380
+ // Request com dados da página (categoria, detalhe de produto, institucional, marca, etc)
381
+ await api.product.getUrl<UrlType>(
382
+ path: string,
383
+ options?: Pick<
384
+ ApiParams<ProductFields, ProductOrderFields, ProductConditionFields>,
385
+ 'condition' | 'fields' | 'limit' | 'offset' | 'meta' | 'order'
386
+ >
387
+ ): UrlType;
388
+
389
+ // Retorna uma lista de produtos com base no termo de pesquisa. Pode ser usado para criar uma sugestão no header do site e também para criar uma listagem paginada de busca de produto
390
+ await api.product.getSearch(
391
+ term: string,
392
+ options?: Pick<
393
+ ApiParams<ProductFields, ProductSortFields, ProductConditionFields>,
394
+ 'condition' | 'fields' | 'limit' | 'meta' | 'offset' | 'order'
395
+ >
396
+ ): Search;
397
+
398
+ // Usado para cotar frete no contexto do produto informado na requisição. Não considera produtos persistidos no carrinho.
399
+ await api.product.listShipmentQuoteProduct(
400
+ payload: Pick<ApiParams, 'targetCountryCode' | 'targetZipCode' | 'items'>,
401
+ ): ShipmentQuoteProductResponse;
402
+
403
+ // Permite o cliente deletar seu comentário/pergunta realizada no produto.
404
+ await api.product.deleteProductComment(
405
+ commentId: number
406
+ ): boolean;
407
+
408
+ // Permite o cliente criar um comentário/pergunta no produto.
409
+ await api.product.createProductComment(
410
+ productId: number,
411
+ payload: CreateProductComment,
412
+ ): ProductComment;
413
+
414
+ // Retorna uma listagem paginada de todos os comentários do produto
415
+ await api.product.listProductComments(
416
+ options?: Pick<
417
+ ApiParams<
418
+ ProductCommentFields,
419
+ ProductCommentSortFields,
420
+ ProductCommentConditionFields
421
+ >,
422
+ 'condition' | 'order' | 'limit' | 'offset' | 'fields'
423
+ >
424
+ ): ProductCommentsResponse;
425
+ ```
426
+
427
+
428
+ ### [promotional](#promotional)
429
+ ```ts
430
+ import api from '../../api';
431
+
432
+ // Retorna a listagem de opções de compre junto no contexto do produto.
433
+ await api.promotional.listPairOffers(
434
+ productId: number,
435
+ options?: Pick<ApiParams<ProductFields>, 'fields' | 'variationMap'>
436
+ ): PairOfferResponse;
437
+
438
+ // Adiciona cupom no contexto do carrinho.
439
+ await api.promotional.addCoupon(
440
+ payload: AddCouponRequest
441
+ ): CartResponse;
442
+
443
+ // Remove cupom no contexto do carrinho.
444
+ await api.promotional.deleteCoupon(): CartResponse;
445
+
446
+ // Aplica saldo em carteira como forma de desconto no contexto carrinho.
447
+ await api.promotional.applyWallet(): CartResponse;
448
+
449
+ // Remove saldo em carteira aplicado no contexto do carrinho.
450
+ await api.promotional.deleteWallet(): CartResponse;
451
+
452
+ // Aplica saldo de pontos como forma de desconto no contexto do carrinho.
453
+ await api.promotional.applyPoint(): CartResponse;
454
+
455
+ // Remove saldo de pontos aplicado no contexto do carrinho.
456
+ await api.promotional.deletePoint(): CartResponse;
457
+ ```
458
+
459
+ ## Tipos
460
+
461
+ Todos os métodos retornam dados tipados para melhor experiência com TypeScript.
462
+
463
+ ## Contribuição
464
+
465
+ Contribuições são bem-vindas! Abra uma issue ou envie um pull request.
466
+
467
+ ## Licença
468
+
469
+ ISC