openapi: 3.1.0 info: title: Depict Lite Ab Test Catalog Push API (v0) 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: Catalog Push API (v0) paths: /catalog/v0/product_ids: get: tags: - Catalog Push API (v0) summary: List Product Ids operationId: list_product_ids_catalog_v0_product_ids_get responses: '200': description: Successful Response content: application/json: schema: items: type: string type: array title: Response List Product Ids Catalog V0 Product Ids Get security: - HTTPBearer: [] /catalog/v0/category_ids: get: tags: - Catalog Push API (v0) summary: List Category Ids operationId: list_category_ids_catalog_v0_category_ids_get responses: '200': description: Successful Response content: application/json: schema: items: type: string type: array title: Response List Category Ids Catalog V0 Category Ids Get security: - HTTPBearer: [] /catalog/v0/products: get: tags: - Catalog Push API (v0) summary: Get Products operationId: get_products_catalog_v0_products_get security: - HTTPBearer: [] parameters: - name: product_ids in: query required: true schema: type: array items: type: string title: Product Ids responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/APIProduct-Output' title: Response Get Products Catalog V0 Products Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Catalog Push API (v0) summary: Upsert Products operationId: upsert_products_catalog_v0_products_post security: - HTTPBearer: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpsertProductsRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Catalog Push API (v0) summary: Delete Products operationId: delete_products_catalog_v0_products_delete security: - HTTPBearer: [] parameters: - name: product_id in: query required: true schema: type: array items: type: string title: Product Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /catalog/v0/categories: get: tags: - Catalog Push API (v0) summary: Get Categories operationId: get_categories_catalog_v0_categories_get security: - HTTPBearer: [] parameters: - name: category_ids in: query required: true schema: type: array items: type: string title: Category Ids responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/APICategory-Output' title: Response Get Categories Catalog V0 Categories Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Catalog Push API (v0) summary: Upsert Categories operationId: upsert_categories_catalog_v0_categories_post security: - HTTPBearer: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpsertCategoriesRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Catalog Push API (v0) summary: Delete Categories operationId: delete_categories_catalog_v0_categories_delete security: - HTTPBearer: [] parameters: - name: category_id in: query required: true schema: type: array items: type: string title: Category Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /catalog/v0/product_attribute_config: get: tags: - Catalog Push API (v0) summary: Get Product Attribute Config operationId: get_product_attribute_config_catalog_v0_product_attribute_config_get responses: '200': description: Successful Response content: application/json: schema: additionalProperties: $ref: '#/components/schemas/AttributeMetadata' type: object title: Response Get Product Attribute Config Catalog V0 Product Attribute Config Get security: - HTTPBearer: [] post: tags: - Catalog Push API (v0) summary: Set Product Attribute Config operationId: set_product_attribute_config_catalog_v0_product_attribute_config_post requestBody: content: application/json: schema: $ref: '#/components/schemas/SetProductAttributeConfigRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] /catalog/v0/category_attribute_config: get: tags: - Catalog Push API (v0) summary: Get Category Attribute Config operationId: get_category_attribute_config_catalog_v0_category_attribute_config_get responses: '200': description: Successful Response content: application/json: schema: additionalProperties: $ref: '#/components/schemas/AttributeMetadata' type: object title: Response Get Category Attribute Config Catalog V0 Category Attribute Config Get security: - HTTPBearer: [] post: tags: - Catalog Push API (v0) summary: Set Category Attribute Config operationId: set_category_attribute_config_catalog_v0_category_attribute_config_post requestBody: content: application/json: schema: $ref: '#/components/schemas/SetCatalogAttributeConfigRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] components: schemas: 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 APICategory-Input: properties: category_id: type: string title: Category Id parent_id: anyOf: - type: string - type: 'null' title: Parent Id locale_attributes: items: $ref: '#/components/schemas/realtime__routes__catalog_routes__APICategory__APILocaleAttributes' type: array title: Locale Attributes store_attributes: title: Store Attributes display_breadcrumb: type: boolean title: Display Breadcrumb default: true appear_in_quicklinks: type: boolean title: Appear In Quicklinks default: false show_in_filter: type: boolean title: Show In Filter default: true show_in_search_suggestions: type: boolean title: Show In Search Suggestions default: true additionalProperties: false type: object required: - category_id - locale_attributes title: APICategory Dimension: type: string enum: - base - inventory - locale - store - pricelist title: Dimension APIPricelistAttributes: properties: pricelist_id: type: string title: Pricelist Id sale_price: anyOf: - type: number minimum: 0 - type: string title: Sale Price original_price: anyOf: - type: number minimum: 0 - type: string title: Original Price currency: type: string pattern: ^AED|AFN|ALL|AMD|ANG|AOA|ARS|AUD|AWG|AZN|BAM|BBD|BDT|BGN|BHD|BIF|BMD|BND|BOB|BRL|BSD|BTN|BWP|BYR|BZD|CAD|CDF|CHF|CLP|CNY|COP|CRC|CUC|CUP|CVE|CZK|DJF|DKK|DOP|DZD|EGP|ERN|ETB|EUR|FJD|FKP|GBP|GEL|GGP|GHS|GIP|GMD|GNF|GTQ|GYD|HKD|HNL|HRK|HTG|HUF|IDR|ILS|IMP|INR|IQD|IRR|ISK|JEP|JMD|JOD|JPY|KES|KGS|KHR|KMF|KPW|KRW|KWD|KYD|KZT|LAK|LBP|LKR|LRD|LSL|LYD|MAD|MDL|MGA|MKD|MMK|MNT|MOP|MRO|MUR|MVR|MWK|MXN|MYR|MZN|NAD|NGN|NIO|NOK|NPR|NZD|OMR|PAB|PEN|PGK|PHP|PKR|PLN|PYG|QAR|RON|RSD|RUB|RWF|SAR|SBD|SCR|SDG|SEK|SGD|SHP|SLL|SOS|SPL|SRD|STD|SVC|SYP|SZL|THB|TJS|TMT|TND|TOP|TRY|TTD|TVD|TWD|TZS|UAH|UGX|USD|UYU|UZS|VEF|VND|VUV|WST|XAF|XCD|XDR|XOF|XPF|YER|ZAR|ZMW|ZWD$ title: Currency custom_attributes: additionalProperties: anyOf: - type: integer - type: number - type: string - type: boolean - items: anyOf: - type: integer - type: number - type: string - type: boolean - type: 'null' type: array - additionalProperties: anyOf: - type: integer - type: number - type: string - type: boolean - type: 'null' type: object - type: 'null' type: object title: Custom Attributes default: {} additionalProperties: false type: object required: - pricelist_id - sale_price - original_price - currency title: APIPricelistAttributes Age: type: string enum: - baby - kid - teen - adult title: Age AttributeConfig: properties: attribute_type: $ref: '#/components/schemas/AttributeType' dimension: $ref: '#/components/schemas/Dimension' required: type: boolean title: Required default: true additionalProperties: false type: object required: - attribute_type - dimension title: AttributeConfig description: The configuration of an attribute, available before ingestion UpsertCategoriesRequest: properties: merchant: type: string title: Merchant categories: items: $ref: '#/components/schemas/APICategory-Input' type: array title: Categories additionalProperties: false type: object required: - merchant - categories title: UpsertCategoriesRequest APICategory-Output: type: object title: APICategory realtime__routes__catalog_routes__APICategory__APILocaleAttributes: properties: locale_id: type: string title: Locale Id title: type: string title: Title uri: anyOf: - type: string - type: 'null' title: Uri additionalProperties: false type: object required: - locale_id - title title: APILocaleAttributes UpsertProductsRequest: properties: merchant: type: string title: Merchant products: items: $ref: '#/components/schemas/APIProduct-Input' type: array title: Products additionalProperties: false type: object required: - merchant - products title: UpsertProductsRequest APIProduct-Input: properties: product_id: type: string title: Product Id item_group_id: type: string title: Item Group Id main_product_id: type: string title: Main Product Id image_urls: items: type: string maxLength: 2083 minLength: 1 format: uri type: array minItems: 1 title: Image Urls category_ids: items: type: string type: array title: Category Ids brand: anyOf: - type: string - type: 'null' title: Brand inactive: type: boolean title: Inactive default: false transaction_product_id: type: string title: Transaction Product Id description: The id by which this product is known in the order data in Google Analytics. Merchants should use the same id for the DPC purchase events. locale_attributes: items: $ref: '#/components/schemas/realtime__routes__catalog_routes__APIProduct__APILocaleAttributes' type: array title: Locale Attributes inventory_attributes: items: $ref: '#/components/schemas/APIInventoryAttributes' type: array title: Inventory Attributes store_attributes: title: Store Attributes pricelist_attributes: items: $ref: '#/components/schemas/APIPricelistAttributes' type: array title: Pricelist Attributes gender: anyOf: - $ref: '#/components/schemas/Gender' - type: 'null' age: anyOf: - $ref: '#/components/schemas/Age' - type: 'null' size: anyOf: - type: string - type: 'null' title: Size is_second_hand: anyOf: - type: boolean - type: 'null' title: Is Second Hand color_hex: anyOf: - type: string - type: 'null' title: Color Hex custom_attributes: additionalProperties: anyOf: - type: integer - type: number - type: string - type: boolean - items: anyOf: - type: integer - type: number - type: string - type: boolean - type: 'null' type: array - additionalProperties: anyOf: - type: integer - type: number - type: string - type: boolean - type: 'null' type: object - type: 'null' type: object title: Custom Attributes default: {} additionalProperties: false type: object required: - product_id - item_group_id - main_product_id - image_urls - category_ids - transaction_product_id - locale_attributes - inventory_attributes - pricelist_attributes title: APIProduct SetCatalogAttributeConfigRequest: properties: merchant: type: string title: Merchant attributes: additionalProperties: $ref: '#/components/schemas/AttributeConfig' type: object title: Attributes locales: items: type: string type: array title: Locales additionalProperties: false type: object required: - merchant - attributes - locales title: SetCatalogAttributeConfigRequest SetProductAttributeConfigRequest: properties: merchant: type: string title: Merchant attributes: additionalProperties: $ref: '#/components/schemas/AttributeConfig' type: object title: Attributes locales: items: type: string type: array title: Locales pricelists: items: type: string type: array title: Pricelists inventories: items: type: string type: array title: Inventories additionalProperties: false type: object required: - merchant - attributes - locales - pricelists - inventories title: SetProductAttributeConfigRequest AttributeType: type: string enum: - bool - int - float - str - datetime - gender - age - color_hex - dict[str,] - list[bool] - list[int] - list[float] - list[str] - list[dict[str,]] - any - uuid - list[uuid] title: AttributeType APIProduct-Output: type: object title: APIProduct AttributeMetadata: properties: attribute_type: $ref: '#/components/schemas/AttributeType' dimension: $ref: '#/components/schemas/Dimension' required: type: boolean title: Required default: true dimension_keys: items: type: string type: array uniqueItems: true title: Dimension Keys additionalProperties: false type: object required: - attribute_type - dimension - dimension_keys title: AttributeMetadata description: Full information about an attribute, generated during ingestion APIInventoryAttributes: properties: inventory_id: type: string title: Inventory Id in_stock: type: boolean title: In Stock quantity: anyOf: - type: integer - type: 'null' title: Quantity custom_attributes: additionalProperties: anyOf: - type: integer - type: number - type: string - type: boolean - items: anyOf: - type: integer - type: number - type: string - type: boolean - type: 'null' type: array - additionalProperties: anyOf: - type: integer - type: number - type: string - type: boolean - type: 'null' type: object - type: 'null' type: object title: Custom Attributes default: {} additionalProperties: false type: object required: - inventory_id - in_stock title: APIInventoryAttributes HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError realtime__routes__catalog_routes__APIProduct__APILocaleAttributes: properties: locale_id: type: string title: Locale Id title: type: string title: Title description: anyOf: - type: string - type: 'null' title: Description color_name: type: string title: Color Name size_name: anyOf: - type: string - type: 'null' title: Size Name material: anyOf: - items: type: string type: array - type: 'null' title: Material custom_attributes: additionalProperties: anyOf: - type: integer - type: number - type: string - type: boolean - items: anyOf: - type: integer - type: number - type: string - type: boolean - type: 'null' type: array - additionalProperties: anyOf: - type: integer - type: number - type: string - type: boolean - type: 'null' type: object - type: 'null' type: object title: Custom Attributes default: {} additionalProperties: false type: object required: - locale_id - title - color_name title: APILocaleAttributes Gender: type: string enum: - unisex - men - women title: Gender 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