## Find Collections

### cURL

```bash
curl --request POST \
  --url https://api.fabric.inc/v3/collections/search \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "match": {
    "id": {
      "op": "IN",
      "value": [
        "blue"
      ]
    },
    "name": {
      "op": "IN",
      "value": [
        "blue"
      ],
      "locale": [
        "en_US"
      ]
    },
    "attribute": [
      {
        "id": "60184766610c0e32a86d8758",
        "value": [
          {
            "op": "IN",
            "value": [
              "blue"
            ],
            "locale": "en_US"
          }
        ]
      }
    ],
    "categoryIdsIncluded": {
      "op": "IN",
      "value": [
        "blue"
      ]
    },
    "categoryIdsExcluded": {
      "op": "IN",
      "value": [
        "blue"
      ]
    },
    "productAttributeIdsFilter": {
      "op": "IN",
      "value": [
        "blue"
      ]
    },
    "updatedBy": {
      "op": "IN",
      "value": [
        "blue"
      ]
    },
    "createdAt": {
      "op": "RANGE",
      "fromValue": "2022-04-20T10:24:36.162Z",
      "toValue": "2023-04-20T10:24:36.162Z"
    },
    "updatedAt": {
      "op": "RANGE",
      "fromValue": "2022-04-20T10:24:36.162Z",
      "toValue": "2023-04-20T10:24:36.162Z"
    }
  },
  "sort": "+createdAt,-updatedAt",
  "offset": 0,
  "limit": 10
}
'
```

### Python

```python
import requests

url = "https://api.fabric.inc/v3/collections/search"

payload = {
    "match": {
        "id": {
            "op": "IN",
            "value": ["blue"]
        },
        "name": {
            "op": "IN",
            "value": ["blue"],
            "locale": ["en_US"]
        },
        "attribute": [
            {
                "id": "60184766610c0e32a86d8758",
                "value": [
                    {
                        "op": "IN",
                        "value": ["blue"],
                        "locale": "en_US"
                    }
                ]
            }
        ],
        "categoryIdsIncluded": {
            "op": "IN",
            "value": ["blue"]
        },
        "categoryIdsExcluded": {
            "op": "IN",
            "value": ["blue"]
        },
        "productAttributeIdsFilter": {
            "op": "IN",
            "value": ["blue"]
        },
        "updatedBy": {
            "op": "IN",
            "value": ["blue"]
        },
        "createdAt": {
            "op": "RANGE",
            "fromValue": "2022-04-20T10:24:36.162Z",
            "toValue": "2023-04-20T10:24:36.162Z"
        },
        "updatedAt": {
            "op": "RANGE",
            "fromValue": "2022-04-20T10:24:36.162Z",
            "toValue": "2023-04-20T10:24:36.162Z"
        }
    },
    "sort": "+createdAt,-updatedAt",
    "offset": 0,
    "limit": 10
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
```

### JavaScript

```javascript
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: JSON.stringify({
    match: {
      id: {op: 'IN', value: ['blue']},
      name: {op: 'IN', value: ['blue'], locale: ['en_US']},
      attribute: [
        {
          id: '60184766610c0e32a86d8758',
          value: [{op: 'IN', value: ['blue'], locale: 'en_US'}]
        }
      ],
      categoryIdsIncluded: {op: 'IN', value: ['blue']},
      categoryIdsExcluded: {op: 'IN', value: ['blue']},
      productAttributeIdsFilter: {op: 'IN', value: ['blue']},
      updatedBy: {op: 'IN', value: ['blue']},
      createdAt: {
        op: 'RANGE',
        fromValue: '2022-04-20T10:24:36.162Z',
        toValue: '2023-04-20T10:24:36.162Z'
      },
      updatedAt: {
        op: 'RANGE',
        fromValue: '2022-04-20T10:24:36.162Z',
        toValue: '2023-04-20T10:24:36.162Z'
      }
    },
    sort: '+createdAt,-updatedAt',
    offset: 0,
    limit: 10
  })
};

fetch('https://api.fabric.inc/v3/collections/search', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
```

### PHP

```php
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.fabric.inc/v3/collections/search",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    'match' => [
        'id' => [
                'op' => 'IN',
                'value' => [
                                'blue'
                ]
        ],
        'name' => [
                'op' => 'IN',
                'value' => [
                                'blue'
                ],
                'locale' => [
                                'en_US'
                ]
        ],
        'attribute' => [
                [
                                'id' => '60184766610c0e32a86d8758',
                                'value' => [
                                                                [
                                                                                                                                'op' => 'IN',
                                                                                                                                'value' => [
                                                                                                                                                                                                                                                                'blue'
                                                                                                                                ],
                                                                                                                                'locale' => 'en_US'
                                                                ]
                                ]
                ]
        ],
        'categoryIdsIncluded' => [
                'op' => 'IN',
                'value' => [
                                'blue'
                ]
        ],
        'categoryIdsExcluded' => [
                'op' => 'IN',
                'value' => [
                                'blue'
                ]
        ],
        'productAttributeIdsFilter' => [
                'op' => 'IN',
                'value' => [
                                'blue'
                ]
        ],
        'updatedBy' => [
                'op' => 'IN',
                'value' => [
                                'blue'
                ]
        ],
        'createdAt' => [
                'op' => 'RANGE',
                'fromValue' => '2022-04-20T10:24:36.162Z',
                'toValue' => '2023-04-20T10:24:36.162Z'
        ],
        'updatedAt' => [
                'op' => 'RANGE',
                'fromValue' => '2022-04-20T10:24:36.162Z',
                'toValue' => '2023-04-20T10:24:36.162Z'
        ]
    ],
    'sort' => '+createdAt,-updatedAt',
    'offset' => 0,
    'limit' => 10
  ]),
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer <token>",
    "Content-Type: application/json"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
```

### Responses

#### Success Response 200

```json
{
  "offset": 5,
  "limit": 10,
  "count": 100,
  "data": [
    {
      "id": "55184766610c0e32a86d8759",
      "name": "Color",
      "localizedProperties": {
        "en-US": {
          "name": "Color"
        },
        "en-IN": {
          "name": "Colour"
        }
      },
      "isLocalizable": true,
      "isRoot": true,
      "isActive": false,
      "attributes": [
        {
          "id": "64184766610c0e32a86d8758",
          "name": "color",
          "localizedProperties": {
            "en-US": {
              "name": "Color"
            },
            "en-IN": {
              "name": "Colour"
            }
          },
          "isLocalizable": true,
          "isInherited": true,
          "type": "TEXT",
          "validation": {
            "dateFormat": "MM-DD-YYYY"
          },
          "value": "blue"
        }
      ],
      "categoriesIncluded": [
        {
          "id": "64184766610c0e32a86d8758",
          "name": "Chairs",
          "localizedProperties": {
            "en-US": {
              "name": "Color"
            },
            "en-IN": {
              "name": "Colour"
            }
          },
          "isLocalizable": true
        }
      ],
      "categoriesExcluded": [
        {
          "id": "64184766610c0e32a86d8758",
          "name": "Chairs",
          "localizedProperties": {
            "en-US": {
              "name": "Color"
            },
            "en-IN": {
              "name": "Colour"
            }
          },
          "isLocalizable": true
        }
      ],
      "productAttributeFilters": [
        {
          "attributeId": "53184766610c0e32a86d875",
          "name": "Mobile name",
          "localizedProperties": {
            "en-US": {
              "name": "Color"
            },
            "en-IN": {
              "name": "Colour"
            }
          },
          "isLocalizable": true,
          "condition": "EQUALS",
          "value": 2
        }
      ],
      "children": [
        {
          "id": "78184766610c0e32a86d8757",
          "name": "Chairs",
          "localizedProperties": {
            "en-US": {
              "name": "Color"
            },
            "en-IN": {
              "name": "Colour"
            }
          },
          "isLocalizable": true,
          "isLeaf": false
        }
      ],
      "updatedBy": "test@eamil.com",
      "updatedAt": "2023-04-20T10:24:36.162Z",
      "createdAt": "2021-04-20T10:24:36.162Z"
    }
  ]
}
```

#### Error Responses

##### Bad Request 400

```json
{
  "message": "Request was invalid",
  "type": "Bad request",
  "errors": [
    {
      "type": "CLIENT_ERROR",
      "message": "Invalid request"
    }
  ]
}
```

##### Unauthorized 401

```json
{
  "message": "The requester is unauthorized",
  "type": "UNAUTHORIZED_ERROR"
}
```

##### Permission Denied 403

```json
{
  "type": "REQUEST_DENIED",
  "message": "User doesn't have the required permission"
}
```

##### Payload Limit Exceeded 413

```json
{
  "type": "PAYLOAD_LIMIT_EXCEEDED_ERROR",
  "message": "The payload exceeds maximum configured size"
}
```

##### Internal Server Error 500

```json
{
  "type": "SERVER_ERROR",
  "message": "Internal Server Error"
}
```

### Authorizations

- **Authorization**: S2S access token (JWT) from fabric Identity service (during Login) - required.
