{
  "openapi": "3.0.1",
  "info": {
    "title": "Voucherify API - Product Collections",
    "version": "v2018-08-01",
    "description": "Voucherify promotion engine REST API. Please see https://docs.voucherify.io/docs for more details.",
    "contact": {
      "name": "Voucherify Team",
      "url": "https://www.voucherify.io/contact-support",
      "email": "support@voucherify.io"
    },
    "termsOfService": "https://www.voucherify.io/legal/subscription-agreement",
    "license": {
      "name": "MIT",
      "url": "https://github.com/voucherifyio/voucherify-js-sdk/blob/main/LICENSE"
    }
  },
  "servers": [
    {
      "url": "https://{cluster}.voucherify.io",
      "description": "Base URL",
      "variables": {
        "cluster": {
          "default": "api",
          "enum": [
            "api",
            "us1.api",
            "as1.api",
            "download",
            "us1.download",
            "as1.download"
          ]
        }
      }
    }
  ],
  "paths": {
    "/v1/product-collections": {
      "get": {
        "operationId": "list-product-collections",
        "tags": [
          "Product Collections"
        ],
        "summary": "List Product Collections",
        "description": "This method returns a list of product collections.",
        "parameters": [
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/order"
          }
        ],
        "security": [
          {
            "X-App-Id": [],
            "X-App-Token": []
          },
          {
            "X-Voucherify-OAuth": [
              "api",
              "product-collections"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a dictionary containing a list of product collections and details about each product collection.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductCollectionsListResponseBody"
                },
                "examples": {
                  "Example": {
                    "value": {
                      "object": "list",
                      "data_ref": "data",
                      "data": [
                        {
                          "id": "pc_Dj1qSH7bho4SVh7aSDKjU174",
                          "name": "Products in Poland",
                          "type": "AUTO_UPDATE",
                          "filter": {
                            "junction": "and",
                            "metadata.product_location": {
                              "conditions": {
                                "$in_location": [
                                  "loc_RcYz537sV07e1t5aG5tIH9FD"
                                ]
                              }
                            }
                          },
                          "created_at": "2022-07-14T16:12:26.377Z",
                          "object": "products_collection"
                        },
                        {
                          "id": "pc_FJdBpaQyvK6Gcdul4D2HRChI",
                          "name": "Price less than 10",
                          "type": "AUTO_UPDATE",
                          "filter": {
                            "junction": "and",
                            "price": {
                              "conditions": {
                                "$less_than": [
                                  1000
                                ]
                              }
                            }
                          },
                          "created_at": "2022-03-17T07:11:25.406Z",
                          "object": "products_collection"
                        },
                        {
                          "id": "pc_4ndRXAsTOzwSdHcQcxf489uU",
                          "name": "Color is brown",
                          "type": "AUTO_UPDATE",
                          "filter": {
                            "junction": "and",
                            "metadata.color": {
                              "conditions": {
                                "$is": [
                                  "brown"
                                ]
                              }
                            }
                          },
                          "created_at": "2022-03-16T14:27:49.612Z",
                          "object": "products_collection"
                        },
                        {
                          "id": "pc_BxofAP7pyM9FO7M6iaIzIouy",
                          "name": "Color not brown",
                          "type": "AUTO_UPDATE",
                          "filter": {
                            "junction": "and",
                            "metadata.color": {
                              "conditions": {
                                "$is_not": [
                                  "brown"
                                ]
                              }
                            }
                          },
                          "created_at": "2022-03-16T13:49:05.697Z",
                          "object": "products_collection"
                        },
                        {
                          "id": "pc_uHpM9ipEQH2yEpm3D8aohkBM",
                          "name": "Price less than 20",
                          "type": "AUTO_UPDATE",
                          "filter": {
                            "junction": "and",
                            "price": {
                              "conditions": {
                                "$less_than": [
                                  2000
                                ]
                              }
                            }
                          },
                          "created_at": "2022-03-16T13:46:01.102Z",
                          "object": "products_collection"
                        },
                        {
                          "id": "pc_ZgM25PcZAMp6qItKJRtR2mEi",
                          "name": "Name starts with S",
                          "type": "AUTO_UPDATE",
                          "filter": {
                            "junction": "and",
                            "name": {
                              "conditions": {
                                "$starts_with": [
                                  "S"
                                ]
                              }
                            }
                          },
                          "created_at": "2022-03-16T13:42:35.917Z",
                          "object": "products_collection"
                        },
                        {
                          "id": "pc_41V4DiQQO8YGqj0J2oZD57j4",
                          "name": "Ends with baby",
                          "type": "AUTO_UPDATE",
                          "filter": {
                            "junction": "and",
                            "source_id": {
                              "conditions": {
                                "$ends_with": [
                                  "baby"
                                ]
                              }
                            }
                          },
                          "created_at": "2022-03-14T12:50:19.885Z",
                          "object": "products_collection"
                        },
                        {
                          "id": "pc_0cRX5wAFt1R1R5Ir6WdTowui",
                          "name": "C start",
                          "type": "AUTO_UPDATE",
                          "filter": {
                            "junction": "and",
                            "name": {
                              "conditions": {
                                "$starts_with": [
                                  "C"
                                ]
                              }
                            }
                          },
                          "created_at": "2022-03-14T12:18:15.588Z",
                          "object": "products_collection"
                        },
                        {
                          "id": "pc_bQ2p9TycbEhd3YzwFCR3JQYA",
                          "name": "Shirts",
                          "type": "STATIC",
                          "products": [
                            {
                              "id": "prod_0a9f9aeddb019a42db",
                              "object": "product"
                            },
                            {
                              "id": "prod_0a9f9ab4ab019a42d5",
                              "object": "product"
                            }
                          ],
                          "created_at": "2022-02-28T11:42:12.484Z",
                          "object": "products_collection"
                        }
                      ],
                      "total": 9
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "create-product-collection",
        "tags": [
          "Product Collections"
        ],
        "summary": "Create Product Collection",
        "description": "This method creates a new product collection.",
        "responses": {
          "200": {
            "description": "Returns information about the newly created collection, as well as an array containing the products.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductCollectionsCreateResponseBody"
                }
              }
            }
          }
        },
        "security": [
          {
            "X-App-Id": [],
            "X-App-Token": []
          },
          {
            "X-Voucherify-OAuth": [
              "api",
              "product-collections"
            ]
          }
        ],
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductCollectionsCreateRequestBody"
              },
              "examples": {
                "Create static collection": {
                  "value": {
                    "type": "STATIC",
                    "name": "Static collection example",
                    "products": [
                      {
                        "id": "prod_0a41dd45dc85fcab40",
                        "object": "product"
                      }
                    ]
                  }
                },
                "Create dynamic collection": {
                  "value": {
                    "type": "AUTO_UPDATE",
                    "name": "Voucherify example collection",
                    "filter": {
                      "junction": "and",
                      "metadata.brand": {
                        "conditions": {
                          "$is": [
                            "Voucherify"
                          ]
                        }
                      },
                      "price": {
                        "conditions": {
                          "$more_than": [
                            5000
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "required": true
        }
      }
    },
    "/v1/product-collections/{productCollectionId}": {
      "parameters": [
        {
          "schema": {
            "$ref": "#/components/schemas/ParameterProductCollectionId"
          },
          "name": "productCollectionId",
          "in": "path",
          "required": true,
          "description": "A unique product collection ID."
        }
      ],
      "get": {
        "operationId": "get-product-collection",
        "tags": [
          "Product Collections"
        ],
        "summary": "Get Product Collection",
        "description": "Retrieves the product collection.",
        "parameters": [],
        "security": [
          {
            "X-App-Id": [],
            "X-App-Token": []
          },
          {
            "X-Voucherify-OAuth": [
              "api",
              "product-collections"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a product collection object if a valid identifier was provided in the path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductCollectionsGetResponseBody"
                },
                "examples": {
                  "Dynamic": {
                    "value": {
                      "id": "pc_Dj1qSH7bho4SVh7aSDKjU174",
                      "name": "Products in Poland",
                      "type": "AUTO_UPDATE",
                      "filter": {
                        "junction": "and",
                        "metadata.product_location": {
                          "conditions": {
                            "$in_location": [
                              "loc_RcYz537sV07e1t5aG5tIH9FD"
                            ]
                          }
                        }
                      },
                      "created_at": "2022-07-14T16:12:26.377Z",
                      "object": "products_collection"
                    }
                  },
                  "Static": {
                    "value": {
                      "id": "pc_bQ2p9TycbEhd3YzwFCR3JQYA",
                      "name": "Shirts",
                      "type": "STATIC",
                      "products": [
                        {
                          "id": "prod_0a9f9aeddb019a42db",
                          "object": "product"
                        },
                        {
                          "id": "prod_0a9f9ab4ab019a42d5",
                          "object": "product"
                        }
                      ],
                      "created_at": "2022-02-28T11:42:12.484Z",
                      "object": "products_collection"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Returns an error when requesting a product collection that has been deleted or does not exist.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "Not Found": {
                    "value": {
                      "code": 404,
                      "key": "not_found",
                      "message": "Resource not found",
                      "details": "Cannot find products_collection with id pc_41V4DiQQO8YGqj0J2oZD57j",
                      "request_id": "v-0b4ec2530e9646cb15",
                      "resource_id": "pc_41V4DiQQO8YGqj0J2oZD57j",
                      "resource_type": "products_collection"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "put-product-collection",
        "tags": [
          "Product Collections"
        ],
        "summary": "Update Product Collection",
        "description": "Updates the product collection.\n\nFor `STATIC` collections, you can update only the `name`.\n\nFor `AUTO_UPDATE` collections, you can update its `name` and `filters`.",
        "parameters": [],
        "security": [
          {
            "X-App-Id": [],
            "X-App-Token": []
          },
          {
            "X-Voucherify-OAuth": [
              "api",
              "product-collections"
            ]
          }
        ],
        "requestBody": {
          "required": true,
          "description": "Specify the parameters to be updated.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProductCollectionsUpdateRequestBody"
              },
              "examples": {
                "Update static collection": {
                  "value": {
                    "name": "New static collection name"
                  }
                },
                "Update auto-update collection": {
                  "value": {
                    "name": "New auto-update collection name",
                    "filter": {
                      "junction": "AND",
                      "metadata.brand": {
                        "conditions": {
                          "$is": [
                            "Voucherify"
                          ]
                        }
                      },
                      "metadata.vendor": {
                        "conditions": {
                          "$in": [
                            "Bull&Pear",
                            "D&B",
                            "FloppCity",
                            "Home",
                            "I&N",
                            "Reversed"
                          ]
                        }
                      },
                      "price": {
                        "conditions": {
                          "$more_than_equal": [
                            10000
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns a product collection object if a valid identifier was provided in the path.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductCollectionsUpdateResponseBody"
                },
                "examples": {
                  "Static": {
                    "value": {
                      "id": "pc_bQ2p9TycbEhd3YzwFCR3JQYA",
                      "name": "Shirts",
                      "type": "STATIC",
                      "products": [
                        {
                          "id": "prod_0a9f9aeddb019a42db",
                          "object": "product"
                        },
                        {
                          "id": "prod_0a9f9ab4ab019a42d5",
                          "object": "product"
                        }
                      ],
                      "created_at": "2022-02-28T11:42:12.484Z",
                      "updated_at": "2026-02-23T17:43:22.384Z",
                      "object": "products_collection"
                    }
                  },
                  "Dynamic": {
                    "value": {
                      "id": "pc_Dj1qSH7bho4SVh7aSDKjU174",
                      "name": "Products in Poland",
                      "type": "AUTO_UPDATE",
                      "filter": {
                        "junction": "and",
                        "metadata.product_location": {
                          "conditions": {
                            "$in_location": [
                              "loc_RcYz537sV07e1t5aG5tIH9FD"
                            ]
                          }
                        }
                      },
                      "created_at": "2022-07-14T16:12:26.377Z",
                      "updated_at": "2026-02-23T17:43:22.384Z",
                      "object": "products_collection"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Returns an error if the data is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "Name is not `string`": {
                    "value": {
                      "code": 400,
                      "key": "invalid_payload",
                      "message": "Invalid payload",
                      "details": "Property .name must be string",
                      "request_id": "v-1204a5e6cb9054fc8a"
                    }
                  },
                  "Incorrect `junction` property": {
                    "value": {
                      "code": 400,
                      "key": "invalid_payload",
                      "message": "Invalid payload",
                      "details": "Property .filter has wrong `junction` property. It must be one of: and, or",
                      "request_id": "v-1204a62a891054fd04"
                    }
                  },
                  "Empty `filter` object": {
                    "value": {
                      "code": 400,
                      "key": "invalid_payload",
                      "message": "Invalid payload",
                      "details": "'AUTO_UPDATE' collection must contain valid filter with 'junction' property",
                      "request_id": "v-1204a662d6c65738b0"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Returns an error when requesting a product collection that has been deleted or does not exist.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "Not Found": {
                    "value": {
                      "code": 404,
                      "key": "not_found",
                      "message": "Resource not found",
                      "details": "Cannot find products_collection with id pc_wIv11jDp2n7YuX6Tkyue2Lv",
                      "request_id": "v-1204a6862d1054fdb6",
                      "resource_id": "pc_wIv11jDp2n7YuX6Tkyue2Lv",
                      "resource_type": "products_collection"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "delete-product-collection",
        "tags": [
          "Product Collections"
        ],
        "summary": "Delete Product Collection",
        "description": "Deletes a product collection.\n\n<Warning>This endpoint performs database-heavy operations. It is not designed for highly frequent use.</Warning>",
        "parameters": [],
        "security": [
          {
            "X-App-Id": [],
            "X-App-Token": []
          },
          {
            "X-Voucherify-OAuth": [
              "api",
              "product-collections"
            ]
          }
        ],
        "responses": {
          "204": {
            "description": "Returns no content if deletion is successful."
          },
          "400": {
            "description": "Returns an error indicating that the product collection with given ID is in use by other resources.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceInUseError"
                },
                "examples": {
                  "Product Colllection In Use": {
                    "value": {
                      "code": 400,
                      "key": "resource_in_use",
                      "message": "Resource in use",
                      "details": "Resource products_collection with id pc_41V4DiQQO8YGqj0J2oZD57j4 is in use by validation_ruless with ids [val_9TB89AjZeVEJ]",
                      "request_id": "v-0ae3a63aff940ed1b2",
                      "related_object_ids": [
                        "val_9TB89AjZeVEJ"
                      ],
                      "related_object_type": "validation_rules"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Returns an error indicating that the product collection with given ID was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "Product Collection Not Found": {
                    "value": {
                      "code": 404,
                      "key": "not_found",
                      "message": "Resource not found",
                      "details": "Cannot find products_collection with id pc_41V4DiQQO8YGqj0J2oZD57j",
                      "request_id": "v-0ae3a49261d027b870",
                      "resource_id": "pc_41V4DiQQO8YGqj0J2oZD57j",
                      "resource_type": "products_collection"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/product-collections/{productCollectionId}/products": {
      "parameters": [
        {
          "schema": {
            "$ref": "#/components/schemas/ParameterProductCollectionId"
          },
          "name": "productCollectionId",
          "in": "path",
          "required": true,
          "description": "Unique product collection ID."
        }
      ],
      "get": {
        "operationId": "list-products-in-collection",
        "tags": [
          "Product Collections"
        ],
        "summary": "List Products in Collection",
        "description": "Retrieves list of products from a product collection; works for both dynamic and static product collections.",
        "parameters": [
          {
            "$ref": "#/components/parameters/limit"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/order"
          },
          {
            "$ref": "#/components/parameters/starting_after"
          }
        ],
        "security": [
          {
            "X-App-Id": [],
            "X-App-Token": []
          },
          {
            "X-Voucherify-OAuth": [
              "api",
              "product-collections"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a dictionary of products and/or SKUs grouped in the collection with each product's/SKU's details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProductCollectionsProductsListResponseBody"
                },
                "examples": {
                  "Example": {
                    "value": {
                      "object": "list",
                      "data_ref": "data",
                      "data": [
                        {
                          "id": "prod_0bae45ffc7003ffc52",
                          "source_id": "second_product",
                          "name": "Samsung Phone 2",
                          "price": 230000,
                          "attributes": [
                            "color",
                            "memory",
                            "processor"
                          ],
                          "metadata": {
                            "test": true,
                            "vendor": "Online Store - 4"
                          },
                          "image_url": "{{internalVoucherifyURL}}",
                          "created_at": "2022-09-12T14:44:13.212Z",
                          "updated_at": null,
                          "object": "product"
                        },
                        {
                          "id": "sku_0bae3b28f610fd0da1",
                          "source_id": "first_product_sku_1",
                          "product_id": "prod_0bae2dc5a090fd0184",
                          "sku": "Samsung phone 256GB",
                          "price": 210000,
                          "attributes": {
                            "color": "vintage-black",
                            "memory": "256",
                            "processor": "Intel"
                          },
                          "image_url": "{{internalVoucherifyURL}}",
                          "metadata": {
                            "test": false,
                            "vendor": "Online Stores",
                            "imported": true
                          },
                          "created_at": "2022-09-12T13:56:51.828Z",
                          "updated_at": "2022-09-12T14:09:40.859Z",
                          "object": "sku",
                          "product": {
                            "id": "prod_0bae2dc5a090fd0184",
                            "source_id": "first_product",
                            "name": "Samsung Phone",
                            "price": null,
                            "attributes": [],
                            "metadata": {},
                            "object": "product"
                          }
                        },
                        {
                          "id": "prod_0bae2dc5a090fd0184",
                          "source_id": "first_product",
                          "name": "Samsung Phone 1",
                          "price": 220000,
                          "attributes": [
                            "color",
                            "memory",
                            "processor"
                          ],
                          "metadata": {
                            "test": true,
                            "vendor": "Online Store - 3"
                          },
                          "image_url": "{{internalVoucherifyURL}}",
                          "created_at": "2022-09-12T12:58:22.232Z",
                          "updated_at": "2022-09-12T14:44:13.208Z",
                          "object": "product"
                        },
                        {
                          "id": "sku_0b7d7dfb090be5c619",
                          "source_id": "ComicBook_1",
                          "product_id": "prod_0b7d7dfb05cbe5c616",
                          "sku": "Comics1",
                          "price": 1700,
                          "attributes": {},
                          "image_url": null,
                          "metadata": {
                            "color": [
                              "golden"
                            ],
                            "vendor": "islands"
                          },
                          "created_at": "2022-08-05T17:23:14.084Z",
                          "updated_at": "2022-09-09T09:24:43.806Z",
                          "object": "sku",
                          "product": {
                            "id": "prod_0b7d7dfb05cbe5c616",
                            "source_id": "Books",
                            "name": "Comic Books1",
                            "price": null,
                            "attributes": [],
                            "metadata": {},
                            "object": "product"
                          }
                        },
                        {
                          "id": "prod_0b7d7dfb05cbe5c616",
                          "source_id": "Books",
                          "name": "Comic Books1",
                          "price": 2100,
                          "attributes": [],
                          "metadata": {
                            "color": [
                              "silver"
                            ],
                            "vendor": "Bookstore1"
                          },
                          "image_url": "https://www.images.com/image1.png",
                          "created_at": "2022-08-05T17:23:14.071Z",
                          "updated_at": "2022-09-09T09:24:43.728Z",
                          "object": "product"
                        },
                        {
                          "id": "prod_0b7d7c4e814be5c502",
                          "source_id": "prod_1",
                          "name": "Apple iPhone 12",
                          "price": 60000,
                          "attributes": [],
                          "metadata": {
                            "color": [
                              "purple"
                            ],
                            "vendor": "mall"
                          },
                          "image_url": null,
                          "created_at": "2022-08-05T17:15:55.270Z",
                          "updated_at": "2022-09-09T09:24:43.704Z",
                          "object": "product"
                        }
                      ],
                      "total": 6
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Returns an error when requesting a product collection that has been deleted or does not exist.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "Not Found": {
                    "value": {
                      "code": 404,
                      "key": "not_found",
                      "message": "Resource not found",
                      "details": "Cannot find products_collection with id pc_M5XgaWPx3Sl4v26atA15zFj",
                      "request_id": "v-0b4ec6429e5646d089",
                      "resource_id": "pc_M5XgaWPx3Sl4v26atA15zFj",
                      "resource_type": "products_collection"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "parameters": {
      "limit": {
        "name": "limit",
        "in": "query",
        "required": false,
        "schema": {
          "$ref": "#/components/schemas/ParameterLimit"
        },
        "description": "Limits the number of objects to be returned. The limit can range between 1 and 100 items. If no limit is set, it returns 10 items."
      },
      "page": {
        "name": "page",
        "in": "query",
        "required": false,
        "schema": {
          "$ref": "#/components/schemas/ParameterPage"
        },
        "description": "Which page of results to return. The lowest value is `1`."
      },
      "order": {
        "name": "order",
        "in": "query",
        "required": false,
        "schema": {
          "$ref": "#/components/schemas/ParameterOrder"
        },
        "description": "Sorts the results using one of the filtering options, where the dash `-` preceding a sorting option means sorting in a descending order."
      },
      "starting_after": {
        "name": "starting_after",
        "in": "query",
        "schema": {
          "$ref": "#/components/schemas/ParameterDate"
        },
        "description": "Timestamp representing the date and time to use in starting_after cursor to get more data. Represented in ISO 8601 format."
      }
    },
    "schemas": {
      "ProductCollectionsListResponseBody": {
        "type": "object",
        "title": "Product Collections List Response Body",
        "description": "Response body schema for **GET** `v1/product-collections`.",
        "allOf": [
          {
            "$ref": "#/components/schemas/ProductCollectionsList"
          }
        ]
      },
      "ProductCollectionsCreateResponseBody": {
        "type": "object",
        "title": "Product Collections Create Response Body",
        "description": "Response body schema for **POST** `v1/product-collections`.",
        "allOf": [
          {
            "$ref": "#/components/schemas/ProductCollectionsItem"
          }
        ]
      },
      "ProductCollectionsCreateRequestBody": {
        "title": "Product Collections Create Request Body",
        "description": "Request body schema for **POST** `v1/product-collections`.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/ProductCollectionsCreateStaticRequestBody"
          },
          {
            "$ref": "#/components/schemas/ProductCollectionsCreateDynamicRequestBody"
          }
        ]
      },
      "ProductCollectionsGetResponseBody": {
        "type": "object",
        "title": "Product Collections Get Response Body",
        "description": "Response body schema for **GET** `v1/product-collections/{productCollectionId}`.",
        "allOf": [
          {
            "$ref": "#/components/schemas/ProductCollectionsItem"
          }
        ]
      },
      "Error": {
        "title": "Error Object",
        "type": "object",
        "description": "Error details",
        "properties": {
          "code": {
            "type": "integer",
            "description": "Error's HTTP status code."
          },
          "key": {
            "type": "string",
            "description": "Short string describing the kind of error which occurred."
          },
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description of the error."
          },
          "details": {
            "type": "string",
            "description": "A human-readable message providing more details about the error."
          },
          "request_id": {
            "type": "string",
            "example": "v-0a885062c80375740f",
            "description": "This ID is useful when troubleshooting and/or finding the root cause of an error response by our support team."
          },
          "resource_id": {
            "type": "string",
            "description": "Unique resource ID that can be used in another endpoint to get more details.",
            "example": "rf_0c5d710a87c8a31f86"
          },
          "resource_type": {
            "type": "string",
            "description": "The resource type.",
            "example": "voucher"
          },
          "error": {
            "type": "object",
            "description": "Includes additional information about the error.",
            "properties": {
              "message": {
                "type": "string",
                "description": "The message configured by the user in a validation rule."
              }
            }
          }
        },
        "required": [
          "code",
          "message"
        ]
      },
      "ParameterProductCollectionId": {
        "type": "string",
        "example": "pc_41V4DiQQO8YGqj0J2oZD57j4"
      },
      "ProductCollectionsUpdateRequestBody": {
        "title": "Product Collections Update Request Body",
        "description": "Response body schema for **PUT** `v1/product-collections/{productCollectionId}`.",
        "oneOf": [
          {
            "$ref": "#/components/schemas/ProductCollectionsUpdateStaticRequestBody"
          },
          {
            "$ref": "#/components/schemas/ProductCollectionsUpdateDynamicRequestBody"
          }
        ]
      },
      "ProductCollectionsUpdateResponseBody": {
        "type": "object",
        "title": "Product Collections Update Response Body",
        "description": "Response body schema for **PUT** `v1/product-collections/{productCollectionId}`.",
        "allOf": [
          {
            "$ref": "#/components/schemas/ProductCollectionsItem"
          },
          {
            "type": "object",
            "properties": {
              "updated_at": {
                "type": "string",
                "example": "2022-04-26T08:35:54.960Z",
                "description": "Timestamp representing the date and time when the product collection was last updated. The value is shown in the ISO 8601 format.",
                "format": "date-time"
              }
            }
          }
        ]
      },
      "ResourceInUseError": {
        "title": "Resource in Use Error Object",
        "type": "object",
        "description": "Error: Bad Request - Resource in use",
        "allOf": [
          {
            "$ref": "#/components/schemas/Error"
          },
          {
            "properties": {
              "related_object_ids": {
                "type": "array",
                "description": "Name or ID of the resources that are related.",
                "items": {
                  "type": "string",
                  "example": "rewa_5WV7H3y2lT3GGl03Xjw29IEc"
                }
              },
              "related_object_type": {
                "type": "string",
                "description": "Specifies the type of resource that is related."
              },
              "related_object_total": {
                "type": "integer",
                "description": "Specifies the total resource that are related."
              }
            }
          }
        ]
      },
      "ProductCollectionsProductsListResponseBody": {
        "type": "object",
        "title": "Product Collections Products List Response Body",
        "description": "Response body schema for **GET** `v1/product-collections/{productCollectionId}/products`.",
        "allOf": [
          {
            "$ref": "#/components/schemas/ProductCollectionsProductsList"
          }
        ]
      },
      "ParameterLimit": {
        "type": "integer",
        "maximum": 100,
        "minimum": 1
      },
      "ParameterPage": {
        "type": "integer",
        "minimum": 1,
        "maximum": 100
      },
      "ParameterOrder": {
        "type": "string",
        "enum": [
          "created_at",
          "-created_at",
          "updated_at",
          "-updated_at",
          "type",
          "-type",
          "code",
          "-code",
          "campaign",
          "-campaign",
          "category",
          "-category"
        ]
      },
      "ProductCollectionsList": {
        "type": "object",
        "title": "List Product Collections",
        "description": "Schema representing list of product collections",
        "properties": {
          "object": {
            "type": "string",
            "description": "The type of the object represented by JSON. This object stores information about product collections.",
            "default": "list",
            "enum": [
              "list"
            ]
          },
          "data_ref": {
            "type": "string",
            "default": "data",
            "description": "Identifies the name of the JSON property that contains the array of product collections.",
            "enum": [
              "data"
            ]
          },
          "data": {
            "description": "A dictionary that contains an array of product collections and their details.",
            "type": "array",
            "items": {
              "title": "Product Collections List Data Item",
              "allOf": [
                {
                  "$ref": "#/components/schemas/ProductCollectionsItem"
                }
              ]
            }
          },
          "total": {
            "type": "integer",
            "description": "Total number of product collections."
          }
        },
        "required": [
          "object",
          "data_ref",
          "data",
          "total"
        ]
      },
      "ProductCollectionsItem": {
        "title": "Product Collection Base",
        "description": "This is an object representing a product collection base. ",
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Product collection ID."
          },
          "name": {
            "type": "string",
            "example": "All Products",
            "description": "Unique user-defined product collection name."
          },
          "type": {
            "type": "string",
            "description": "Describes whether the product collection is dynamic (products come in and leave based on set criteria) or static (manually selected products).",
            "enum": [
              "STATIC",
              "AUTO_UPDATE"
            ]
          },
          "filter": {
            "type": "object",
            "description": "Defines a set of criteria and boundary conditions for an `AUTO_UPDATE` product collection type.",
            "required": [
              "junction"
            ],
            "properties": {
              "junction": {
                "$ref": "#/components/schemas/Junction"
              }
            },
            "additionalProperties": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/FieldConditions"
                }
              ],
              "description": "Valid keys: `id`, `product_id`, `source_id`, `name`, `price`, `object`, `attributes`, `image_url`, `skus`, `created_at`, `updated_at` and `metadata.*`"
            }
          },
          "products": {
            "description": "Defines a set of products for a `STATIC` product collection type.",
            "type": "array",
            "items": {
              "title": "Product Collections Item Products Item",
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "example": "prod_0a41bcf807c5fcaaf6",
                  "description": "The product ID."
                },
                "product_id": {
                  "type": "string",
                  "description": "Product ID for SKUs."
                },
                "object": {
                  "type": "string",
                  "enum": [
                    "sku",
                    "product"
                  ],
                  "description": "Denotes the type of the object represented by the ID."
                }
              },
              "required": [
                "id",
                "object"
              ]
            }
          },
          "created_at": {
            "type": "string",
            "example": "2021-12-09T12:51:29.898Z",
            "description": "Timestamp representing the date and time when the product collection was created. The value is shown in the ISO 8601 format.",
            "format": "date-time"
          },
          "object": {
            "type": "string",
            "description": "The type of the object represented by JSON. This object stores information about the static product collection.",
            "default": "products_collection",
            "enum": [
              "products_collection"
            ]
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "created_at",
          "object"
        ]
      },
      "ProductCollectionsCreateStaticRequestBody": {
        "title": "Product Collections Create Static Request Body",
        "description": "Request body schema for **POST** `v1/product-collections`.",
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Show that the product collection is static (manually selected products).",
            "default": "STATIC",
            "enum": [
              "STATIC"
            ]
          },
          "name": {
            "type": "string",
            "description": "Unique user-defined product collection name."
          },
          "products": {
            "type": "array",
            "description": "Defines a set of products for a `STATIC` product collection type.",
            "items": {
              "title": "Product Collections Create Dynamic Request Body Products Item",
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The product ID."
                },
                "product_id": {
                  "type": "string",
                  "description": "Product ID for SKUs."
                },
                "object": {
                  "description": "Denotes the type of the object represented by the ID.",
                  "enum": [
                    "sku",
                    "product"
                  ]
                }
              },
              "required": [
                "id",
                "object"
              ]
            }
          }
        },
        "required": [
          "type",
          "name"
        ]
      },
      "ProductCollectionsCreateDynamicRequestBody": {
        "title": "Product Collections Create Dynamic (Auto Update) Request Body",
        "description": "Request body schema for **POST** `v1/product-collections`.",
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Show that the product collection is dynamic (products come in and leave based on set criteria).",
            "default": "AUTO_UPDATE",
            "enum": [
              "AUTO_UPDATE"
            ]
          },
          "name": {
            "description": "Unique user-defined product collection name.",
            "type": "string"
          },
          "filter": {
            "type": "object",
            "description": "Defines a set of criteria and boundary conditions for an `AUTO_UPDATE` product collection type.",
            "required": [
              "junction"
            ],
            "properties": {
              "junction": {
                "$ref": "#/components/schemas/Junction"
              }
            },
            "additionalProperties": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/FieldConditions"
                }
              ],
              "description": "Valid keys: `id`, `product_id`, `source_id`, `name`, `price`, `object`, `attributes`, `image_url`, `skus`, `created_at`, `updated_at` and `metadata.*`"
            }
          }
        },
        "required": [
          "type",
          "name",
          "filter"
        ]
      },
      "ProductCollectionsUpdateStaticRequestBody": {
        "title": "Product Collections Create Static Request Body",
        "description": "Request body schema for **PUT** `v1/product-collections/{productCollectionId}`.",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Unique user-defined product collection name."
          }
        },
        "required": [
          "name"
        ]
      },
      "ProductCollectionsUpdateDynamicRequestBody": {
        "title": "Product Collections Update Dynamic (Auto Update) Request Body",
        "description": "Request body schema for **PUT** `v1/product-collections/{productCollectionId}`.",
        "type": "object",
        "properties": {
          "name": {
            "description": "Unique user-defined product collection name.",
            "type": "string"
          },
          "filter": {
            "type": "object",
            "description": "Defines a set of criteria and boundary conditions for an `AUTO_UPDATE` product collection type.\n\nSending the `filter` object overwrites the existing values.",
            "properties": {
              "junction": {
                "$ref": "#/components/schemas/Junction"
              }
            },
            "additionalProperties": {
              "description": "Valid keys: `id`, `product_id`, `source_id`, `name`, `price`, `object`, `attributes`, `image_url`, `skus`, `created_at`, `updated_at` and `metadata.*`",
              "allOf": [
                {
                  "$ref": "#/components/schemas/FieldConditions"
                }
              ]
            }
          }
        }
      },
      "ParameterDate": {
        "type": "string",
        "example": "2023-12-22T10:13:06.487Z",
        "format": "date-time"
      },
      "ProductCollectionsProductsList": {
        "type": "object",
        "description": "Response body schema for **GET** /product-collections/{productCollectionID}/products.",
        "title": "List Products in Collection Response Body",
        "properties": {
          "object": {
            "type": "string",
            "description": "The type of the object represented by JSON. This object stores information about products and SKUs.",
            "default": "list"
          },
          "data_ref": {
            "type": "string",
            "description": "Identifies the name of the JSON property that contains the array of products and SKUs.",
            "default": "data"
          },
          "data": {
            "type": "array",
            "description": "A dictionary that contains an array of products and SKUs.",
            "items": {
              "title": "Product Collections Products List Products Item",
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ProductWithoutSkus"
                },
                {
                  "$ref": "#/components/schemas/SkuWithProduct"
                }
              ]
            }
          },
          "total": {
            "type": "integer",
            "description": "Total number of products & SKUs in the product collection."
          }
        },
        "required": [
          "object",
          "data_ref",
          "data",
          "total"
        ]
      },
      "Junction": {
        "title": "Junction",
        "description": "Logical Operator Between Filters. Filter by conditions set on the `junction` parameter indicating how the `conditions` should be accounted for in the query. An `AND` is an all-inclusive logical operator, meaning the `AND` operator displays a record if **ALL** the conditions separated by AND are TRUE, while  an `OR` operator displays a record if **ANY** of the conditions separated by OR is TRUE.",
        "enum": [
          "and",
          "or"
        ],
        "type": "string"
      },
      "FieldConditions": {
        "title": "Field Conditions",
        "type": "object",
        "properties": {
          "conditions": {
            "description": "Data filters used to narrow down the data records to be returned in the result.",
            "allOf": [
              {
                "$ref": "#/components/schemas/FiltersCondition"
              }
            ]
          }
        }
      },
      "ProductWithoutSkus": {
        "title": "Product without Skus Object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique product ID assigned by Voucherify.",
            "example": "prod_0b1da8105693710357"
          },
          "source_id": {
            "type": "string",
            "nullable": true,
            "example": "productSourceID16",
            "description": "Unique product source ID."
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "Unique user-defined product name.",
            "example": "T-shirt"
          },
          "price": {
            "type": "integer",
            "nullable": true,
            "description": "Unit price. It is represented by a value multiplied by 100 to accurately reflect 2 decimal places, such as `$100.00` being expressed as `10000`."
          },
          "attributes": {
            "type": "array",
            "description": "A list of product attributes whose values you can customize for given SKUs: `[\"color\",\"size\",\"ranking\"]`. Each child SKU can have a unique value for a given attribute.",
            "items": {
              "type": "string"
            }
          },
          "metadata": {
            "type": "object",
            "description": "The metadata object stores all custom attributes assigned to the product. A set of key/value pairs that you can attach to a product object. It can be useful for storing additional information about the product in a structured format. It can be used to create product collections."
          },
          "image_url": {
            "type": "string",
            "nullable": true,
            "description": "The HTTPS URL pointing to the .png or .jpg file that will be used to render the product image.",
            "example": "https://images.com/original.jpg"
          },
          "created_at": {
            "type": "string",
            "description": "Timestamp representing the date and time when the product was created. The value is shown in the ISO 8601 format.",
            "example": "2022-05-23T06:52:55.008Z",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "nullable": true,
            "description": "Timestamp representing the date and time when the product was updated. The value is shown in the ISO 8601 format.",
            "example": "2022-05-23T09:24:07.405Z",
            "format": "date-time"
          },
          "object": {
            "type": "string",
            "description": "The type of the object represented by JSON. This object stores information about the product.",
            "default": "product",
            "enum": [
              "product"
            ]
          }
        },
        "required": [
          "id",
          "source_id",
          "name",
          "attributes",
          "metadata",
          "object",
          "price"
        ]
      },
      "SkuWithProduct": {
        "title": "SKU with parent product.",
        "allOf": [
          {
            "$ref": "#/components/schemas/Sku"
          },
          {
            "type": "object",
            "properties": {
              "product": {
                "$ref": "#/components/schemas/ProductWithoutSkus"
              }
            }
          }
        ]
      },
      "FiltersCondition": {
        "title": "Filters Condition",
        "type": "object",
        "properties": {
          "$in": {
            "$ref": "#/components/schemas/Any"
          },
          "$not_in": {
            "$ref": "#/components/schemas/Any"
          },
          "$is": {
            "$ref": "#/components/schemas/Any"
          },
          "$is_days_ago": {
            "$ref": "#/components/schemas/Any"
          },
          "$is_days_in_future": {
            "$ref": "#/components/schemas/Any"
          },
          "$is_not": {
            "$ref": "#/components/schemas/Any"
          },
          "$has_value": {
            "$ref": "#/components/schemas/Any"
          },
          "$is_unknown": {
            "$ref": "#/components/schemas/Any"
          },
          "$contains": {
            "$ref": "#/components/schemas/Any"
          },
          "$not_contain": {
            "$ref": "#/components/schemas/Any"
          },
          "$starts_with": {
            "$ref": "#/components/schemas/Any"
          },
          "$ends_with": {
            "$ref": "#/components/schemas/Any"
          },
          "$more_than": {
            "$ref": "#/components/schemas/Any"
          },
          "$less_than": {
            "$ref": "#/components/schemas/Any"
          },
          "$more_than_ago": {
            "$ref": "#/components/schemas/Any"
          },
          "$less_than_ago": {
            "$ref": "#/components/schemas/Any"
          },
          "$more_than_future": {
            "$ref": "#/components/schemas/Any"
          },
          "$less_than_future": {
            "$ref": "#/components/schemas/Any"
          },
          "$more_than_equal": {
            "$ref": "#/components/schemas/Any"
          },
          "$less_than_equal": {
            "$ref": "#/components/schemas/Any"
          },
          "$after": {
            "$ref": "#/components/schemas/Any"
          },
          "$before": {
            "$ref": "#/components/schemas/Any"
          },
          "$count": {
            "$ref": "#/components/schemas/Any"
          },
          "$count_less": {
            "$ref": "#/components/schemas/Any"
          },
          "$count_more": {
            "$ref": "#/components/schemas/Any"
          }
        }
      },
      "Sku": {
        "title": "SKU Object",
        "type": "object",
        "description": "This is an object representing a product SKU.",
        "properties": {
          "id": {
            "type": "string",
            "example": "sku_0b1621b319d248b79f",
            "description": "A unique identifier that represents the SKU and is assigned by Voucherify."
          },
          "source_id": {
            "type": "string",
            "nullable": true,
            "example": "sku_source_id_4",
            "description": "A unique SKU identifier from your inventory system."
          },
          "product_id": {
            "type": "string",
            "example": "prod_0b15f6b9f650c16990",
            "description": "The parent product's unique ID."
          },
          "sku": {
            "type": "string",
            "nullable": true,
            "example": "Large Pink Shirt",
            "description": "Unique user-defined SKU name."
          },
          "price": {
            "type": "integer",
            "nullable": true,
            "description": "Unit price. It is represented by a value multiplied by 100 to accurately reflect 2 decimal places, such as `$100.00` being expressed as `10000`."
          },
          "currency": {
            "type": "string",
            "nullable": true,
            "description": "SKU price currency.",
            "example": "USD"
          },
          "attributes": {
            "type": "object",
            "description": "The attributes object stores values for all custom attributes inherited by the SKU from the parent product. A set of key/value pairs that are attached to a SKU object and are unique to each SKU within a product family."
          },
          "image_url": {
            "type": "string",
            "nullable": true,
            "description": "The HTTPS URL pointing to the .png or .jpg file that will be used to render the SKU image."
          },
          "metadata": {
            "type": "object",
            "description": "The metadata object stores all custom attributes assigned to the SKU. A set of key/value pairs that you can attach to a SKU object. It can be useful for storing additional information about the SKU in a structured format. It can be used to create product collections."
          },
          "created_at": {
            "type": "string",
            "example": "2022-05-17T10:36:30.187Z",
            "description": "Timestamp representing the date and time when the SKU was created. The value is shown in the ISO 8601 format.",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "nullable": true,
            "example": "2022-05-17T10:55:09.137Z",
            "description": "Timestamp representing the date and time when the SKU was updated. The value is shown in the ISO 8601 format.",
            "format": "date-time"
          },
          "object": {
            "type": "string",
            "default": "sku",
            "description": "The type of the object represented by JSON. This object stores information about the `SKU`.",
            "enum": [
              "sku"
            ]
          }
        },
        "required": [
          "id",
          "source_id",
          "product_id",
          "sku",
          "price",
          "attributes",
          "metadata",
          "image_url",
          "created_at",
          "updated_at",
          "object"
        ]
      },
      "Any": {
        "title": "Any",
        "type": "array",
        "items": {
          "oneOf": [
            {
              "title": "string",
              "type": "string"
            },
            {
              "title": "string - date",
              "type": "string",
              "format": "date"
            },
            {
              "title": "string - date-time",
              "type": "string",
              "format": "date-time"
            },
            {
              "title": "number",
              "type": "number"
            },
            {
              "title": "object",
              "type": "object"
            }
          ]
        }
      }
    },
    "securitySchemes": {
      "X-App-Id": {
        "type": "apiKey",
        "name": "X-App-Id",
        "in": "header"
      },
      "X-App-Token": {
        "type": "apiKey",
        "name": "X-App-Token",
        "in": "header"
      },
      "X-Voucherify-OAuth": {
        "type": "oauth2",
        "flows": {
          "implicit": {
            "authorizationUrl": "https://api.voucherify.io/v1/oauth/token",
            "scopes": {
              "api": "Gives access to whole server-side API.",
              "vouchers": "Gives access to all endpoints and methods starting with `v1/vouchers`.",
              "client_api": "Gives access to whole client-side API.",
              "client_vouchers": "Gives access to all endpoints and methods starting with `/client/v1/vouchers`.",
              "promotions": "Gives access to all endpoints and methods starting with `/v1/promotions`.",
              "client_promotions": "Gives access to all endpoints and methods starting with `/client/v1/promotions`",
              "campaigns": "Gives access to all endpoints and methods starting with `v1/campaigns`.",
              "client_publish": "Gives access to all endpoints and methods starting with `/client/v1/publish`.",
              "exports": "Gives access to all endpoints and methods starting with `/v1/exports`.",
              "publications": "Gives access to all endpoints and methods starting with `/v1/publications`.",
              "client_validate": "Gives access to all endpoints and methods starting with `/client/v1/validate`.",
              "validations": "Gives access to all endpoints and methods starting with `/v1/validations`.",
              "client_validations": "Gives access to all endpoints and methods starting with `/client/v1/validations`.",
              "qualifications": "Gives access to all endpoints and methods starting with `/v1/qualifications`.",
              "client_qualifications": "Gives access to all endpoints and methods starting with `/client/v1/qualifications`.",
              "client_redeem": "Gives access to all endpoints and methods starting with `/client/v1/redeem",
              "redemptions": "Gives access to all endpoints and methods starting with `/v1/redemptions`.",
              "client_redemptions": "Gives access to all endpoints and methods starting with `/client/v1/redemptions`",
              "customers": "Gives access to all endpoints and methods starting with `/v1/customers`.",
              "client_customers": "Gives access to all endpoints and methods starting with `/client/v1/customers`.",
              "orders": "Gives access to all endpoints and methods starting with `/v1/orders`.",
              "products": "Gives access to all endpoints and methods starting with `/v1/products`.",
              "skus": "Gives access to all endpoints and methods starting with `/v1/SKUs`.",
              "validation-rules": "Gives access to all endpoints and methods starting with `/v1/validation-rules`.",
              "validation-rules-assignments": "Gives access to all endpoints and methods starting with `/v1/validation-rules-assignments",
              "segments": "Gives access to all endpoints and methods starting with `/v1/segments`.",
              "events": "Gives access to all endpoints and methods starting with `/v1/events`.",
              "client_events": "Gives access to all endpoints and methods starting with `client/v1/events`.",
              "rewards": "Gives access to all endpoints and methods starting with `/v1/rewards`.",
              "assets": "Gives access to all endpoints and methods starting with `/v1/assets`.",
              "task-results": "Gives access to all endpoints and methods starting with `/v1/task-results`.",
              "loyalties": "Gives access to all endpoints and methods starting with `/v1/loyalties`.",
              "client_consents": "Gives access to all endpoints and methods starting with `client/v1/consents`.",
              "consents": "Gives access to all endpoints and methods starting with `/v1/consents`.",
              "async-actions": "Gives access to all endpoints and methods starting with `/v1/async-actions`.",
              "product-collections": "Gives access to all endpoints and methods starting with `/v1/product-collections`.",
              "categories": "Gives access to all endpoints and methods starting with `/v1/categories`.",
              "metadata-schemas": "Gives access to all endpoints and methods starting with `/v1/metadata-schemas`.",
              "locations": "Gives access to all endpoints and methods starting with `/v1/locations`.",
              "referrals": "Gives access to all endpoints and methods starting with `/v1/referrals`.",
              "trash-bin": "Gives access to all endpoints and methods starting with `/v1/trash-bin`.",
              "templates": "Gives access to all endpoints and methods starting with `/v1/templates`."
            }
          }
        }
      }
    }
  }
}