# Catalog API Schema

## catalogId
- **number** (required)  
  Must be ≥ 100

## Response Messages
- **200**  Catalog retrieved successfully.
- **400**  Bad request with errors.

## Properties
### Aliases
- **object** (required)  
  The alias configuration for the catalog mapping raw data into standardized keys.
  - **Id**: **string** (required, length ≤ 50) - The unique identifier.
  - **Brand**: **object** - Configuration for brand ID and name mapping.
  - **Category**: **object** - Configuration for category ID and name mapping.
  - **Image**: **string** (length ≤ 50) - Mapping for image URL.
  - **Merchant**: **object** - Merchant ID and name mapping.
  - **Name**: **string** (length ≤ 50) - Mapping for name.
  - **Product**: **object** - Product ID and name mapping.

### SearchableAttributes
- **array of objects**  
  Declaration of extra searchable attributes.
  - **Attribute**: **string** (required, length ≤ 50)
  - **ReferenceId**: **number** (required, ≥ 100)
  - **Type**: **string** (enum, required) - Referenced type of searchable attribute.
  - **Cardinality**: **string** (enum, required) - The cardinality of the searchable attribute (`One`).

### Name
- **string** (required, length ≤ 100) - The name of the catalog.

### UIConfiguration
- **array of objects**  
  UI configuration for the catalog.
  - **Key**: **string** (length ≤ 50) - Display column key.
  - **AllowedValues**: **array** - List of limited dropdown values.
  - **AncestorsKey**: **string** - Reference for hierarchical items.
  - **DisplayColumn**: **boolean** - Display attribute when viewing record.
  - **DisplayFilter**: **boolean** - Display filter for attribute.
  - **FilterByOne**: **boolean** - Restrict filtering to a single value.
  - **FilterByRange**: **boolean** - Display distinct filter dropdown values.
  - **HideReferenceIds**: **boolean** - Hide reference IDs, show only label.
  - **Label**: **string** - Human-readable label for UI.
  - **Order**: **number** - Order the component appears in UI.
  - **Typeahead**: **boolean** - Display distinct dropdown values.
  - **Type**: **string** (enum, required) - The type of catalog (`Product`).

### Id
- **number** (required, ≥ 100)

### Configuration
- **object**  
  Configuration for the catalog.
  - **Categories**: Configuration for categories.
  - **Brands**: Configuration for brands.
  - **Merchants**: Configuration for merchants.

## Example API Request
```bash
curl --request GET \
     --url https://api.kevel.co/v1/catalog/catalogId \
     --header 'accept: application/json'
```

## Example Response
```json
{
  "Type": "Product",
  "Id": 101,
  "Name": "Product Catalog 1",
  "Aliases": {
    "Id": "item_id",
    "Name": "item_name",
    "Image": "item_image",
    "Brand": {
      "Id": "brand_id",
      "Name": "brand_name"
    },
    "Category": {
      "Id": "category_id",
      "Name": "category_name",
      "Categories": "category_ids"
    },
    "Merchant": {
      "Id": "merchant_id",
      "Name": "merchant_name"
    },
    "Product": {
      "Id": "product_id",
      "Name": "product_name"
    }
  },
  "Configuration": {
    "Brands": {
      "Source": "ItemFields"
    },
    "Categories": {
      "Source": "ItemFields"
    },
    "Merchants": {
      "Source": "ItemFields"
    }
  }
}
```

Updated 9 months ago.
