openapi: 3.1.0 info: title: Depict Lite Ab Test Listing (v2) API version: 1.0.0 description: 'REST API behind Depict Lite, the native Shopify app: onboarding, collections, boost & bury, dashboards, A/B testing and multi-store management. Endpoints are served under the /api/lite prefix and require an Auth0-issued bearer token.' servers: - url: /api/lite tags: - name: Listing (v2) paths: /v2/product-listing: post: tags: - Listing (v2) summary: Get Products operationId: Get_Products_v2_product_listing_post security: - APIKeyQuery: [] - APIKeyHeader: [] - APIKeyCookie: [] parameters: - name: x-use-db-display-store in: header required: false schema: type: boolean default: false title: X-Use-Db-Display-Store requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProductListingRequestV2' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/ProductListingResponseV2' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: ProductListingType: type: string enum: - category - collection - scollection title: ProductListingType RangeFilterMeta: properties: group_title: anyOf: - type: string - type: 'null' title: Group Title description: Title of the group, where a group consists of all the filters that share an ID. group_expanded: anyOf: - type: boolean - type: 'null' title: Group Expanded description: Whether the filter group should be expanded by default or not. type: const: range title: Type min: type: number title: Min description: The minimum value that can be selected in the range. max: type: number title: Max description: The maximum value that can be selected in the range. unit: anyOf: - type: string - type: 'null' title: Unit description: The unit of the range values. currency: anyOf: - type: string - type: 'null' title: Currency description: The currency of the range values. additionalProperties: false type: object required: - type - min - max title: RangeFilterMeta ValuesFilterMeta: properties: group_title: anyOf: - type: string - type: 'null' title: Group Title description: Title of the group, where a group consists of all the filters that share an ID. group_expanded: anyOf: - type: boolean - type: 'null' title: Group Expanded description: Whether the filter group should be expanded by default or not. type: type: string enum: - radio - checkbox - checkbox-grid - checkbox-color title: Type description: Type of filter. values: items: anyOf: - type: string enum: - 'true' - 'false' - type: number - type: integer - type: string - prefixItems: - type: number - type: number type: array maxItems: 2 minItems: 2 - prefixItems: - type: integer - type: integer type: array maxItems: 2 minItems: 2 - prefixItems: - type: integer - type: number type: array maxItems: 2 minItems: 2 - prefixItems: - type: number - type: integer type: array maxItems: 2 minItems: 2 type: array title: Values description: Selectable values counts: anyOf: - items: type: integer type: array - type: 'null' title: Counts description: Counts for values names: anyOf: - items: type: string type: array - type: 'null' title: Names description: Names for values. This is what should be displayed along with the UI item for the value. additionalProperties: false type: object required: - type - values title: ValuesFilterMeta ProductListingRequestV2: properties: cursor: anyOf: - type: string maxLength: 500 - type: 'null' title: Cursor description: Used for cursor-based pagination. Set it to the cursor from the last response. If not set, will return the first results. limit: anyOf: - type: integer maximum: 250 minimum: 1 - type: 'null' title: Limit description: Maximum number of results per response. market: type: string title: Market filters: anyOf: - items: $ref: '#/components/schemas/SearchFilter' type: array - type: 'null' title: Filters description: List of filters to apply to the results. sort: anyOf: - $ref: '#/components/schemas/SortModel-Input' - type: 'null' description: Specifies the sorting method. By default, the results are ordered by relevance. To find the possible values for this field, query the endpoint and look at the `sorts` field. session_id: anyOf: - type: string minLength: 1 - type: 'null' title: Session Id description: Session identifier metadata: anyOf: - additionalProperties: type: string type: object - type: 'null' title: Metadata description: Metadata that can be used to modify the behaviour of the search. tenant: type: string title: Tenant locale: anyOf: - type: string - type: 'null' title: Locale description: The locale to use for the search. If not set, the default locale will be used. user_id: anyOf: - type: string minLength: 1 - type: 'null' title: User Id description: User identifier dsid: anyOf: - type: string minLength: 1 - type: 'null' title: Dsid description: Populated for integrations performed by Depict.ai only. Depict.ai Session Id query_id: type: string minLength: 1 title: Query Id description: ID of the page to get products for. This is typically the slug, for example `hoodies-and-sweaters`. type: anyOf: - $ref: '#/components/schemas/ProductListingType' - type: 'null' description: 'The type of query. If not set the endpoint will look up query id in the following type order: collections, categories.' additionalProperties: false type: object required: - market - tenant - query_id title: ProductListingRequestV2 ProductListingResponseV2: properties: displays: items: type: object type: array title: Displays description: The products to be shown on the product listing page. n_hits: type: integer title: N Hits description: Total number of results for this query. Not necessarily exact. sorts: anyOf: - items: $ref: '#/components/schemas/SortModel-Output' type: array - type: 'null' title: Sorts description: Available methods for sorting the response. Any element from this list can be sent as `sort` in subsequent requests. filters: anyOf: - items: $ref: '#/components/schemas/SearchFilter' type: array - type: 'null' title: Filters description: Available filters that can be used for filtering in the subsequent request. product_listing_request_id: type: string title: Product Listing Request Id cursor: anyOf: - type: string maxLength: 500 - type: 'null' title: Cursor description: Cursor that can be used in the next request to get subsequent results. If this is not set, there are no more results. breadcrumb: anyOf: - items: $ref: '#/components/schemas/BaseCategoryDisplay' type: array - type: 'null' title: Breadcrumb description: Breadcrumb for the current page. Ordered from less to more specific, where the last element is the current page. quick_links: anyOf: - items: $ref: '#/components/schemas/BaseCategoryDisplay' type: array - type: 'null' title: Quick Links description: List of pages that can be used as quick links. Will return child pages if they exist, otherwise sibling pages. metadata: anyOf: - $ref: '#/components/schemas/PLPMetadata' - type: 'null' description: Metadata about the PLP requested, for example Collection/Category title, description, etc. additionalProperties: false type: object required: - displays - n_hits - product_listing_request_id title: ProductListingResponseV2 BaseCategoryDisplay: properties: category_id: type: string title: Category Id description: Unique identifier of the category. title: type: string title: Title description: The title of the category page_url: anyOf: - type: string - type: 'null' title: Page Url description: The full URL to the category page query_id: anyOf: - type: string - type: 'null' title: Query Id description: Optionally a unique query ID for the category uri: anyOf: - type: string - type: 'null' title: Uri description: Optionally a unique URI for the category, for example men/shoes category_type: allOf: - $ref: '#/components/schemas/ECategoryType' description: The type of category, for example CAMPAIGN, TAG, or CATEGORY default: CATEGORY additionalProperties: false type: object required: - category_id - title title: BaseCategoryDisplay ECategoryType: type: string enum: - TAG - CATEGORY - TENANT_CATEGORY - TENANT_SECONDARY_CATEGORY - CAMPAIGN - BRAND title: ECategoryType PLPMetadata: properties: title: type: string title: Title description: anyOf: - type: string - type: 'null' title: Description replace_meta_tags: type: boolean title: Replace Meta Tags description: Whether to replace the page meta tags, e.g., title and description, with the ones from the collection. default: false type: object required: - title title: PLPMetadata SortModel-Input: properties: field: type: string title: Field description: The field to sort by. order: allOf: - $ref: '#/components/schemas/SortingOrder' description: The order to sort by. meta: anyOf: - $ref: '#/components/schemas/SortMeta' - type: 'null' description: 'Metadata about the sort that can be used for rendering. ' additionalProperties: false type: object required: - field - order title: SortModel HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError SearchFilter: properties: field: type: string title: Field description: The field to filter by. op: type: string enum: - eq - neq - in - nin - leq - geq - inrange title: Op description: The operation used for filtering. The filtering should be read as `field op data`, for example `brand in ["Nike", "Adidas"]`. data: anyOf: - type: string enum: - 'true' - 'false' - type: number - type: integer - type: string - prefixItems: - type: number - type: number type: array maxItems: 2 minItems: 2 - prefixItems: - type: integer - type: integer type: array maxItems: 2 minItems: 2 - prefixItems: - type: integer - type: number type: array maxItems: 2 minItems: 2 - prefixItems: - type: number - type: integer type: array maxItems: 2 minItems: 2 - items: anyOf: - type: string enum: - 'true' - 'false' - type: number - type: integer - type: string - prefixItems: - type: number - type: number type: array maxItems: 2 minItems: 2 - prefixItems: - type: integer - type: integer type: array maxItems: 2 minItems: 2 - prefixItems: - type: integer - type: number type: array maxItems: 2 minItems: 2 - prefixItems: - type: number - type: integer type: array maxItems: 2 minItems: 2 type: array - items: items: type: string type: array type: array - type: 'null' title: Data description: Data for the filter. meta: anyOf: - oneOf: - $ref: '#/components/schemas/RangeFilterMeta' - $ref: '#/components/schemas/ValuesFilterMeta' - $ref: '#/components/schemas/HierarchicalValuesFilterMeta' discriminator: propertyName: type mapping: checkbox: '#/components/schemas/ValuesFilterMeta' checkbox-color: '#/components/schemas/ValuesFilterMeta' checkbox-grid: '#/components/schemas/ValuesFilterMeta' checkbox-hierarchical: '#/components/schemas/HierarchicalValuesFilterMeta' radio: '#/components/schemas/ValuesFilterMeta' range: '#/components/schemas/RangeFilterMeta' - type: 'null' title: Meta description: Metadata about the filter that can be used for rendering. For example, this could contain the possible values to filter by and their counts in the results. id: anyOf: - type: string - type: 'null' title: Id description: ID of the filter. If multiple filters share the same ID, they should be grouped together in the UI. additionalProperties: false type: object required: - field - op title: SearchFilter ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError HierarchicalValuesFilterMeta: properties: group_title: anyOf: - type: string - type: 'null' title: Group Title description: Title of the group, where a group consists of all the filters that share an ID. group_expanded: anyOf: - type: boolean - type: 'null' title: Group Expanded description: Whether the filter group should be expanded by default or not. type: const: checkbox-hierarchical title: Type values: items: items: type: string type: array type: array title: Values description: Selectable hierarchical values counts: anyOf: - items: type: integer type: array - type: 'null' title: Counts description: Counts for values names: anyOf: - items: type: string type: array - type: 'null' title: Names description: Names for hierarchical values, this is what you should display in the UI (not values) additionalProperties: false type: object required: - type - values title: HierarchicalValuesFilterMeta SortMeta: properties: title: type: string title: Title values: items: $ref: '#/components/schemas/SortingOrder' type: array title: Values description: Selectable values names: anyOf: - items: type: string type: array - type: 'null' title: Names description: Names for orders (this is what you should display in the UI, not values) additionalProperties: false type: object required: - title title: SortMeta SortingOrder: type: string enum: - asc - desc title: SortingOrder SortModel-Output: properties: field: type: string title: Field description: The field to sort by. order: allOf: - $ref: '#/components/schemas/SortingOrder' description: The order to sort by. meta: anyOf: - $ref: '#/components/schemas/SortMeta' - type: 'null' description: 'Metadata about the sort that can be used for rendering. ' additionalProperties: false type: object required: - field - order title: SortModel securitySchemes: Auth0: type: oauth2 flows: authorizationCode: scopes: openid: OpenID Connect profile: User profile email: User email authorizationUrl: https://depict.eu.auth0.com/oauth/authorize tokenUrl: https://depict.eu.auth0.com/oauth/token x-tokenName: id_token