⚙️ Conceito Essencial - ApiParams
Alguns recursos da API Pública permitem um alto nível de customização através de parâmetros avançados.
Esses parâmetros são baseados em um conceito interno do backend chamado “obsearch”, que permite:
- Controlar quais dados serão retornados
- Aplicar ordenação
- Definir filtros complexos
- Melhorar performance, evitando dados desnecessários
- Melhor performance
- Menor payload
- Respostas sob medida para o layout
- Use
fieldssempre que possível → melhora performance - Evite filtros muito complexos sem necessidade
- Combine
limit + offsetpara paginação - Prefira
orderno backend ao invés de ordenar no front
No public-sdk, tudo isso é abstraído pela interface:
1export interface ApiParams<2 FieldOptions = '',3 OrderOptions = '',4 ConditionOptions = '',5> {6 codes?: Array<string>;7 limit?: number;8 offset?: number;9 fields?: Array<FieldOptions>;10 order?: Array<ApiParamsOrder<OrderOptions>>;11 condition?: ApiParamsConditionGroup<ConditionOptions>;12 meta?: ApiParamsMeta;1314 // específicos15 targetZipCode?: string;16 targetCountryCode?: string;17 items?: Array<{ productId: number; quantity: number }>;1819 variationMap?: Record<string, number>;2021 loginUrl?: string;22 registerUrl?: string;23}🧠 Conceito principal
A ideia é simples: Você controla exatamente o que quer receber da API, ao invés de receber tudo.
Isso permite:
fields - Controle de retorno
Define quais informações devem ser retornadas.
Exemplo:
1await Api.product.getUrl('/camiseta', {2 fields: ['price', 'media', 'variation']3});order - Ordenação
Permite ordenar os resultados.
1await Api.product.getUrl('/camiseta', {2 order: [3 { field: 'price', order: 'ASC' }4 ]5});condition Filtros avançados
Permite criar filtros complexos com AND / OR
1await Api.product.getUrl('/camiseta', {2 condition: {3 type: 'AND',4 conditions: [5 {6 field: 'salePrice',7 operator: 'between',8 value: '50-100'9 }10 ]11 }12});limite offset - Paginação
Controlam paginação dos resultados.
1await Api.product.getUrl('/camiseta', {2 limit: 10,3 offset: 204});meta - Customizações avançadas
Permite enviar parâmetros adicionais que impactam o comportamento da API.
1await Api.product.getUrl('/camiseta', {2 meta: {3 dimensions: {4 size: 'Centimeter',5 weight: 'Kilogram'6 }7 }8});🧠 Tipagem avançada (TypeScript)
Cada recurso é tipado de forma especifica conforme a API Pública permite.
Por exemplo:
listVariation permite apenas os parametros: fields, condition e meta.
1await Api.product.listVariation(2 variationData: VariationData,3 options?: Pick<4 ApiParams<ProductFields, ProductSortFields, ProductConditionFields>,5 'condition' | 'fields' | 'meta'6 >7): Product;Já o recurso getUrl permite os parametros: fields, condition, limit, offset, order e meta.
1await Api.product.getUrl<UrlType>(2 path: string,3 options?: Pick<4 ApiParams<ProductFields, ProductOrderFields, ProductConditionFields>,5 'condition' | 'fields' | 'limit' | 'offset' | 'meta' | 'order'6 >7): UrlType;