Bloomreach Catalog configuration API

The Catalog configuration API from Bloomreach — 3 operation(s) for catalog configuration.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

bloomreach-catalog-configuration-api-openapi.yml Raw ↑
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 <base64(APIKeyID:APISecret)>`


        The API key must have the **Imports → Allow trigger imports**

        permission enabled in Workspace settings → Access management →

        API.

        '