openapi: 3.1.0 info: title: Workspace Imports Autosuggest API v2 Catalog configuration API description: 'API to programmatically trigger an existing workspace-scoped import in Bloomreach Engagement. ' version: '2.1' servers: - url: https://api.bloomreach.com description: Bloomreach API security: - basicAuth: [] tags: - name: Catalog configuration paths: /accounts/{account_name}/catalogs/{catalog_name}/environments/{environment_name}/configs/LATEST: parameters: - $ref: '#/components/parameters/AccountName' - $ref: '#/components/parameters/CatalogName' - $ref: '#/components/parameters/EnvironmentName' get: tags: - Catalog configuration summary: Get current configuration description: 'Understand the current state of catalog configuration, including custom attributes configuration and all [catalog settings](https://documentation.bloomreach.com/discovery/docs/catalog-settings) present in the dashboard. ' responses: 200: description: OK. Click to see the response structure. content: application/json: schema: type: object properties: meta: type: object properties: etag: type: string data: type: object properties: config: oneOf: - $ref: '#/components/schemas/ProductConfiguration' - $ref: '#/components/schemas/ContentConfiguration' 400: description: Bad request content: application/json: schema: type: object properties: details: type: array items: $ref: '#/components/schemas/ErrorResponse' 401: description: Unauthorized 404: description: Not found content: application/json: schema: $ref: '#/components/schemas/404Response' 429: description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/429Response' 500: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/500Response' post: tags: - Catalog configuration summary: Modify current configuration description: 'Programmatically modify the current catalog configuration to automate common tasks. ' requestBody: content: application/json: schema: type: object properties: meta: type: object properties: if_match_etag: type: string description: The ETag of the catalog's current configuration. required: - if_match_etag data: type: object properties: config: oneOf: - $ref: '#/components/schemas/ProductConfiguration' - $ref: '#/components/schemas/ContentConfiguration' responses: 200: description: OK - The new config matches the current one, and no change is made. Click to see the response structure. content: application/json: schema: type: object properties: meta: type: object properties: previous_etag: type: string new_etag: type: string data: type: object properties: config: oneOf: - $ref: '#/components/schemas/ProductConfiguration' - $ref: '#/components/schemas/ContentConfiguration' 201: description: Created - The new config differs from the current one, and the changes are applied. Click to see the response structure. content: application/json: schema: type: object properties: meta: type: object properties: previous_etag: type: string new_etag: type: string data: type: object properties: config: oneOf: - $ref: '#/components/schemas/ProductConfiguration' - $ref: '#/components/schemas/ContentConfiguration' 400: description: Bad request content: application/json: schema: type: object properties: meta: type: object properties: etag: type: string details: type: array items: $ref: '#/components/schemas/ErrorResponse' 401: description: Unauthorized 404: description: Not found content: application/json: schema: $ref: '#/components/schemas/404Response' 412: description: if_match_etag field did not match expected value content: application/json: schema: $ref: '#/components/schemas/412Response' 429: description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/429Response' 500: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/500Response' /accounts/{account_name}/catalogs/{catalog_name}/environments/{environment_name}/configs/{config_id}: parameters: - $ref: '#/components/parameters/AccountName' - $ref: '#/components/parameters/CatalogName' - $ref: '#/components/parameters/EnvironmentName' - $ref: '#/components/parameters/ConfigId' get: tags: - Catalog configuration summary: Get an older configuration description: "Understand what the catalog configuration looked like at the point in time an index was generated. \n" responses: 200: description: OK. Click to see the response structure. content: application/json: schema: type: object properties: meta: type: object properties: etag: type: string data: type: object properties: config: oneOf: - $ref: '#/components/schemas/ProductConfiguration' - $ref: '#/components/schemas/ContentConfiguration' 400: description: Bad request content: application/json: schema: type: object properties: details: type: array items: $ref: '#/components/schemas/ErrorResponse' 401: description: Unauthorized 404: description: Not found content: application/json: schema: $ref: '#/components/schemas/404Response' 429: description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/429Response' 500: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/500Response' /accounts/{account_name}/catalogs/{catalog_name}/environments/{environment_name}/reserved-attributes: parameters: - $ref: '#/components/parameters/AccountName' - $ref: '#/components/parameters/CatalogName' - $ref: '#/components/parameters/EnvironmentName' get: tags: - Catalog configuration summary: Get reserved attributes description: 'Get a list of all [reserved attributes](https://documentation.bloomreach.com/discovery/reference/reserved-fields-api) for the catalog. ' responses: 200: description: OK. Click to see the response structure. content: application/json: schema: type: object properties: data: type: object properties: reserved_attributes: oneOf: - $ref: '#/components/schemas/SnapReservedAttributes' - $ref: '#/components/schemas/ContentReservedAttributes' 400: description: Bad request content: application/json: schema: type: object properties: details: type: array items: $ref: '#/components/schemas/ErrorResponse' 401: description: Unauthorized 404: description: Not found content: application/json: schema: $ref: '#/components/schemas/404Response' 429: description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/429Response' 500: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/500Response' components: schemas: SnapReservedAttributes: type: object properties: product: additionalProperties: type: object example: availability: {} brand: {} br_high_confidence_field: {} capacity: {} catalog_code: {} category_paths: {} city_location: {} color: {} color_group: {} condition: {} depth: {} description: {} flags: {} gender: {} height: {} i_level: {} is_buyable: {} is_monogramed: {} is_perishable: {} is_sellable: {} item_condition: {} item_no: {} keywords: {} large_image: {} launch_date: {} low_price: {} low_sale_price: {} model_name: {} model_no: {} price: {} price_range: {} reviews: {} sale_keywords: {} sale_price: {} sale_price_range: {} size: {} sku_id: {} store_id: {} store_location: {} suite_info: {} swatch_image: {} thumb_image: {} title: {} url: {} width: {} variant: additionalProperties: type: object example: color: {} color_group: {} large_image: {} price: {} sale_price: {} size: {} sku_id: {} swatch_image: {} thumb_image: {} 429Response: description: Too Many Requests type: object properties: details: type: array items: $ref: '#/components/schemas/ErrorResponse' 412Response: description: Precondition Failed type: object properties: details: type: array items: $ref: '#/components/schemas/ErrorResponse' ErrorResponse: type: object properties: type: type: string title: type: string detail: type: string class: type: string enum: - error - warning 404Response: description: Not Found type: object properties: details: type: array items: $ref: '#/components/schemas/ErrorResponse' ContentReservedAttributes: type: object properties: item: additionalProperties: type: object example: uid: {} item_id: {} catalog_views: {} 500Response: description: Internal Server Error type: object properties: details: type: array items: $ref: '#/components/schemas/ErrorResponse' ContentConfiguration: type: object properties: feed: type: object properties: enable_feed_jobs: type: boolean index: type: object properties: enable_index_jobs: type: boolean search_docs_drop_threshold: type: number custom_attributes_defaults: type: object properties: facetable: type: string enum: - auto - manual - false searchable: type: boolean custom_attributes: type: object additionalProperties: type: object properties: level: type: string enum: - product - variant displayable: type: boolean facetable: type: string enum: - auto - manual - false searchable: type: boolean multi_valued: type: boolean data_type: type: string enum: - text - number ProductConfiguration: type: object properties: feed: type: object properties: enable_feed_jobs: type: boolean index: type: object properties: enable_index_jobs: type: boolean enable_auto_indexing: type: boolean search_unavailable_docs: type: boolean search_docs_drop_threshold: type: number variants: type: object properties: sku_select: type: string example: on | off | transition-on | transition-off enable_hero_sku_ranking: type: boolean example: true enable_filtering: type: boolean example: false ranking_attributes: type: array items: type: string example: - color - color_group - custom_attribute use_unavailable_variant_as_hero: type: boolean example: false grouping_attribute: type: string example: some_attribute search_document_variants_limit: type: number example: 5 custom_attributes_defaults: type: object properties: facetable: type: string enum: - auto - manual - false searchable: type: boolean custom_attributes: type: object additionalProperties: type: object properties: level: type: string enum: - product - variant displayable: type: boolean facetable: type: string enum: - auto - manual - false searchable: type: boolean multi_valued: type: boolean data_type: type: string enum: - text - number autosuggest: type: object properties: product_attributes: type: object properties: categories: type: string example: leaf_only | off other_attributes: type: array items: type: string example: - color - title - custom_attribute minimum_character_count: type: number example: 4 word_count_limit: type: number example: 5 product_autosuggest: type: boolean attibute_autosuggest: type: boolean attribute_type: type: string example: category attribute_autosuggest_limit: type: number example: 3 core_attribute_searchability: type: object properties: category_names: type: boolean category_ids: type: boolean product_ids: type: boolean variant_ids: type: boolean reserved_attribute_searchability: type: object properties: title: type: boolean brand: type: boolean description: type: boolean gender: type: boolean item_no: type: boolean model_no: type: boolean suite_info: type: boolean store_id: type: boolean catalog_code: type: boolean keywords: type: boolean size: type: boolean height: type: boolean width: type: boolean weight: type: boolean capacity: type: boolean reviews: type: boolean price: type: boolean sale_price: type: boolean color: type: boolean color_group: type: boolean parameters: EnvironmentName: description: The type of environment you want to use for the request (Production/Staging). name: environment_name in: path schema: type: string minLength: 1 maxLength: 64 enum: - production - staging required: true CatalogName: description: '"Catalog name" is also called domain key. Use the same value as your domain key in your search API requests.' name: catalog_name in: path schema: type: string minLength: 1 maxLength: 64 required: true example: homeoasis_fr AccountName: description: Your unique account name. name: account_name in: path schema: type: string minLength: 1 maxLength: 64 required: true example: homeoasis ConfigId: description: The unique ID associated with a particular state of the catalog configuration. name: config_id in: path schema: type: string minLength: 1 maxLength: 64 required: true example: '1324' securitySchemes: basicAuth: type: http scheme: basic description: 'HTTP Basic authentication using an API Key ID and API Secret. For this workspace-scoped endpoint, use a workspace API key. `Authorization: Basic ` The API key must have the **Imports → Allow trigger imports** permission enabled in Workspace settings → Access management → API. '