{
  "openapi": "3.0.1",
  "info": {
    "title": "Voucherify API - Async Actions",
    "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/async-actions": {
      "get": {
        "operationId": "list-async-actions",
        "tags": [
          "Async Actions"
        ],
        "summary": "List Async Actions",
        "description": "Track asynchronous operations scheduled in your project.  \n\nThe table below lists the possible types of async actions. The types are different for each endpoint generating the async action.\n\n| **Types by Context** | **Endpoint** |\n|:---|:---|\n| **CAMPAIGN** |  |\n| CAMPAIGN.VOUCHERS_IMPORT | **POST**   [`/campaigns/{campaignId}/import`](/api-reference/campaigns/import-vouchers-to-campaign) |\n| CAMPAIGN.VOUCHERS_IMPORT_CSV | **POST**   [`/campaigns/{campaignId}/importCSV`](/api-reference/campaigns/import-vouchers-to-campaign-by-csv) |\n| CAMPAIGN.VOUCHERS_UPDATE | **PUT** [`/campaigns/{campaignId}`](/api-reference/campaigns/update-campaign) |\n| CAMPAIGN.VOUCHERS_DELETE | **DELETE** [`/campaigns/{campaignId}`](/api-reference/campaigns/delete-campaign) |\n| CAMPAIGN.VOUCHERS_GENERATE | <ul><li>**POST** [`/campaigns`](/api-reference/campaigns/create-campaign): asynchronous for campaigns with more than 1 voucher, synchronous for campaign with 1 voucher</li><li>**POST**    [`/campaigns/{campaignId}/vouchers`](/api-reference/campaigns/add-vouchers-to-campaign)</li></ul> |\n| **CUSTOMERS** |  |\n| CUSTOMERS.IMPORT_CSV | **POST** [`/customers/importCSV`](/api-reference/customers/import-and-update-customers-using-csv) |\n| CUSTOMERS.BULK_UPDATE | **POST** [`/customers/bulk/async`](/api-reference/customers/update-customers-in-bulk) |\n| CUSTOMERS.METADATA_UPDATE | **POST** [`/customers/metadata/async`](/api-reference/customers/update-customers-metadata-in-bulk) |\n| **PRODUCTS** |  |\n| PRODUCTS.BULK_UPDATE | **POST** [`/products/bulk/async`](/api-reference/products/update-products-in-bulk)<br /> |\n| PRODUCTS.METADATA_UPDATE | **POST** [`/products/metadata/async`](/api-reference/products/update-products-metadata-in-bulk) |\n| PRODUCTS.IMPORT_CSV | **POST** [`/products/importCSV`](/api-reference/products/import-products-using-csv) |\n| SKUS.IMPORT_CSV | **POST** [`/skus/importCSV`](/api-reference/products/import-skus-using-csv) |\n| **VOUCHERS** |  |\n| VOUCHERS.IMPORT | **POST** [`/vouchers/import`](/api-reference/vouchers/import-vouchers) |\n| VOUCHERS.IMPORT_CSV | **POST** [`/vouchers/importCSV`](/api-reference/vouchers/import-vouchers-using-csv) |\n| VOUCHERS.BULK_UPDATE | **POST** [`/vouchers/bulk/async`](/api-reference/vouchers/update-vouchers-in-bulk)<br /> |\n| VOUCHERS.METADATA_UPDATE | **POST** [`/vouchers/metadata/async`](/api-reference/vouchers/update-vouchers-metadata-in-bulk) | \n| **ORDERS** |  |\n| ORDERS.IMPORT | **POST** [`/orders/import`](/api-reference/orders/import-orders) |\n| **METADATA KEY PURGE** |  |\n| CAMPAIGNS.METADATA_KEY_PURGE<br />CUSTOMERS.METADATA_KEY_PURGE<br />PRODUCTS.METADATA_KEY_PURGE<br />VOUCHERS.METADATA_KEY_PURGE<br />ORDERS.METADATA_KEY_PURGE | No API endpoint equivalent. You can perform this action through the Dashboard. See Dashboard documentation: Dashboard > [Project Settings](/prepare/metadata#maintenance) |",
        "parameters": [
          {
            "schema": {
              "$ref": "#/components/schemas/ParameterLimit"
            },
            "in": "query",
            "name": "limit",
            "description": "Limit the number of asynchronous actions that the API returns in the response."
          },
          {
            "schema": {
              "$ref": "#/components/schemas/ParameterDate"
            },
            "in": "query",
            "name": "end_date",
            "description": "Limits results to actions scheduled before the `end_date`. The date format needs to be consistent with ISO 8601 format (`2016-11-16T14:14:31Z` or `2016-11-16`). "
          }
        ],
        "security": [
          {
            "X-App-Id": [],
            "X-App-Token": []
          },
          {
            "X-Voucherify-OAuth": [
              "api",
              "async-actions"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a list of all scheduled asynchronous actions and detailed information for each scheduled action. Note that a status `DONE`doesn't include the result of the completed action. If you need more information about the result, use the ID of the respective async action to call the [Get Async Action](/api-reference/async-actions/get-async-action) endpoint.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AsyncActionsListResponseBody"
                },
                "examples": {
                  "List Async Actions": {
                    "value": {
                      "object": "list",
                      "data_ref": "async_actions",
                      "async_actions": [
                        {
                          "id": "aa_0ba518c55290c6fd62",
                          "type": "CUSTOMERS.BULK_UPDATE",
                          "status": "DONE",
                          "created_at": "2022-09-05T11:40:17.098Z",
                          "updated_at": "2022-09-05T11:40:17.887Z",
                          "request_id": "v-0ba518c52bc99858f0",
                          "progress": 100,
                          "object": "async_action"
                        },
                        {
                          "id": "aa_0ba50a7ff4d3574568",
                          "type": "CUSTOMERS.METADATA_UPDATE",
                          "status": "DONE",
                          "created_at": "2022-09-05T10:37:56.051Z",
                          "updated_at": "2022-09-05T10:37:56.862Z",
                          "request_id": "v-0ba50a7feb49984902",
                          "progress": 100,
                          "object": "async_action"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Returns an error if incorrect query parameters were provided.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "Invalid Query Parameters": {
                    "value": {
                      "code": 400,
                      "key": "invalid_query_params",
                      "message": "Invalid query params",
                      "details": "Property .end_date cannot be recognized as a ISO-8601 compliant date",
                      "request_id": "v-0c54493e444b0f61a6"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/async-actions/{asyncActionId}": {
      "parameters": [
        {
          "schema": {
            "$ref": "#/components/schemas/ParameterAsyncActionId"
          },
          "name": "asyncActionId",
          "in": "path",
          "required": true,
          "description": "Unique ID of the asynchronous operation."
        }
      ],
      "get": {
        "operationId": "get-async-action",
        "tags": [
          "Async Actions"
        ],
        "summary": "Get Async Action",
        "description": "Check the result of a scheduled asynchronous operation.  \n\nThe table below lists the possible types of async actions. The types are different for each endpoint generating the async action. \n\n| **Types by Context** | **Endpoint** |\n|:---|:---|\n| **CAMPAIGN** |  |\n| CAMPAIGN.VOUCHERS_IMPORT | **POST**   [`/campaigns/{campaignId}/import`](/api-reference/campaigns/import-vouchers-to-campaign) |\n| CAMPAIGN.VOUCHERS_IMPORT_CSV | **POST**   [`/campaigns/{campaignId}/importCSV`](/api-reference/campaigns/import-vouchers-to-campaign-by-csv) |\n| CAMPAIGN.VOUCHERS_UPDATE | **PUT** [`/campaigns/{campaignId}`](/api-reference/campaigns/update-campaign) |\n| CAMPAIGN.VOUCHERS_DELETE | **DELETE** [`/campaigns/{campaignId}`](/api-reference/campaigns/delete-campaign) |\n| CAMPAIGN.VOUCHERS_GENERATE | <ul><li>**POST** [`/campaigns`](/api-reference/campaigns/create-campaign): asynchronous for campaigns with more than 1 voucher, synchronous for campaign with 1 voucher</li><li>**POST**    [`/campaigns/{campaignId}/vouchers`](/api-reference/campaigns/add-vouchers-to-campaign)</li></ul> |\n| **CUSTOMERS** |  |\n| CUSTOMERS.IMPORT_CSV | **POST** [`/customers/importCSV`](/api-reference/customers/import-and-update-customers-using-csv) |\n| CUSTOMERS.BULK_UPDATE | **POST** [`/customers/bulk/async`](/api-reference/customers/update-customers-in-bulk) |\n| CUSTOMERS.METADATA_UPDATE | **POST** [`/customers/metadata/async`](/api-reference/customers/update-customers-metadata-in-bulk) |\n| **PRODUCTS** |  |\n| PRODUCTS.BULK_UPDATE | **POST** [`/products/bulk/async`](/api-reference/products/update-products-in-bulk)<br /> |\n| PRODUCTS.METADATA_UPDATE | **POST** [`/products/metadata/async`](/api-reference/products/update-products-metadata-in-bulk) |\n| PRODUCTS.IMPORT_CSV | **POST** [`/products/importCSV`](/api-reference/products/import-products-using-csv) |\n| SKUS.IMPORT_CSV | **POST** [`/skus/importCSV`](/api-reference/products/import-skus-using-csv) |\n| **VOUCHERS** |  |\n| VOUCHERS.IMPORT | **POST** [`/vouchers/import`](/api-reference/vouchers/import-vouchers) |\n| VOUCHERS.IMPORT_CSV | **POST** [`/vouchers/importCSV`](/api-reference/vouchers/import-vouchers-using-csv) |\n| VOUCHERS.BULK_UPDATE | **POST** [`/vouchers/bulk/async`](/api-reference/vouchers/update-vouchers-in-bulk)<br /> |\n| VOUCHERS.METADATA_UPDATE | **POST** [`/vouchers/metadata/async`](/api-reference/vouchers/update-vouchers-metadata-in-bulk) | \n| **ORDERS** |  |\n| ORDERS.IMPORT | **POST** [`/orders/import`](/api-reference/orders/import-orders) |\n| **METADATA KEY PURGE** |  |\n| CAMPAIGNS.METADATA_KEY_PURGE<br />CUSTOMERS.METADATA_KEY_PURGE<br />PRODUCTS.METADATA_KEY_PURGE<br />VOUCHERS.METADATA_KEY_PURGE<br />ORDERS.METADATA_KEY_PURGE | No API endpoint equivalent. You can perform this action through the Dashboard. See Dashboard documentation: Dashboard > [Project Settings](/prepare/metadata#maintenance) |",
        "parameters": [],
        "security": [
          {
            "X-App-Id": [],
            "X-App-Token": []
          },
          {
            "X-Voucherify-OAuth": [
              "api",
              "async-actions"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Returns detailed information about the async action result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AsyncActionGetResponseBody"
                },
                "examples": {
                  "CAMPAIGN.VOUCHERS_IMPORT": {
                    "value": {
                      "id": "aa_0af9b22296cf473a10",
                      "type": "CAMPAIGN.VOUCHERS_IMPORT",
                      "status": "DONE",
                      "result": {
                        "message": "0 voucher(s) imported successfully, 3 failed.",
                        "failed": [
                          {
                            "code": "CODE9",
                            "reason": "unit: must be a number, property is required (actual value is 'EUR')"
                          },
                          {
                            "code": "CODE8",
                            "reason": "unit: must be a number, property is required (actual value is 'EUR')"
                          },
                          {
                            "code": "CODE7",
                            "reason": "unit: must be a number, property is required (actual value is 'EUR')"
                          }
                        ],
                        "done_count": 0,
                        "failed_count": 3
                      },
                      "created_at": "2023-01-20T07:23:43.289Z",
                      "updated_at": "2023-01-20T07:23:44.044Z",
                      "request_id": "v-0c553fdb325688d510",
                      "progress": 100,
                      "processing_time": 755,
                      "object": "async_action"
                    }
                  },
                  "CAMPAIGN.VOUCHERS_IMPORT_CSV": {
                    "value": {
                      "id": "aa_0c5543f00797b6113f",
                      "type": "CUSTOMERS.IMPORT_CSV",
                      "status": "DONE",
                      "result": {
                        "message": "0 customer(s) imported successfully, 2 failed.",
                        "failed": [
                          {
                            "source_id": "test-user@voucherify.io",
                            "row": 1,
                            "reason": "acquisition_channel: must be a string, property is required, must be equal to one of Facebook,Twitter,Website (actual value is 'snap')"
                          },
                          {
                            "source_id": "",
                            "row": 2,
                            "reason": "acquisition_channel: must be a string, property is required, must be equal to one of Facebook,Twitter,Website (actual value is 'insta')"
                          }
                        ],
                        "done_count": 0,
                        "failed_count": 2
                      },
                      "created_at": "2023-01-20T07:41:33.086Z",
                      "updated_at": "2023-01-20T07:41:33.216Z",
                      "request_id": "v-0c5543eff2cb0f547f",
                      "progress": 100,
                      "processing_time": 130,
                      "object": "async_action"
                    }
                  },
                  "CAMPAIGN.VOUCHERS_DELETE": {
                    "value": {
                      "id": "aa_0c553853d957b67bd4",
                      "type": "CAMPAIGN.VOUCHERS_DELETE",
                      "status": "DONE",
                      "result": {
                        "message": "Deleted 2 vouchers.",
                        "done_count": 2
                      },
                      "created_at": "2023-01-20T06:50:49.573Z",
                      "updated_at": "2023-01-20T06:50:50.053Z",
                      "request_id": "v-0c553853b5c418c826",
                      "progress": 100,
                      "processing_time": 480,
                      "object": "async_action"
                    }
                  },
                  "CAMPAIGN.VOUCHERS_UPDATE": {
                    "value": {
                      "id": "aa_0c5440c25c0e5728d0",
                      "type": "CAMPAIGN.VOUCHERS_UPDATE",
                      "status": "DONE",
                      "result": {
                        "message": "Updated 1 vouchers.",
                        "done_count": 1
                      },
                      "created_at": "2023-01-19T12:49:11.024Z",
                      "updated_at": "2023-01-19T12:49:11.852Z",
                      "request_id": "v-0c5440c24304189e44",
                      "progress": 100,
                      "processing_time": 828,
                      "object": "async_action"
                    }
                  },
                  "CAMPAIGN.VOUCHERS_GENERATE": {
                    "value": {
                      "id": "aa_0c54441d14d7b60014",
                      "type": "CAMPAIGN.VOUCHERS_GENERATE",
                      "status": "DONE",
                      "result": {
                        "message": "Generated 2 vouchers.",
                        "done_count": 2
                      },
                      "created_at": "2023-01-19T13:03:50.355Z",
                      "updated_at": "2023-01-19T13:03:51.030Z",
                      "request_id": "v-0c54441d0e4418b647",
                      "progress": 100,
                      "processing_time": 675,
                      "object": "async_action"
                    }
                  },
                  "CAMPAIGNS.METADATA_KEY_PURGE": {
                    "value": {
                      "id": "aa_0c554b22664a0eb5fc",
                      "type": "CAMPAIGNS.METADATA_KEY_PURGE",
                      "status": "DONE",
                      "result": {
                        "message": "Updated 0 campaigns.",
                        "done_count": 0
                      },
                      "created_at": "2023-01-20T08:12:59.673Z",
                      "updated_at": "2023-01-20T08:13:00.638Z",
                      "request_id": "w-0c554b225f8a0eb5fb",
                      "progress": 100,
                      "processing_time": 965,
                      "object": "async_action"
                    }
                  },
                  "CUSTOMERS.IMPORT_CSV": {
                    "value": {
                      "id": "aa_0c5543f00797b6113f",
                      "type": "CUSTOMERS.IMPORT_CSV",
                      "status": "DONE",
                      "result": {
                        "message": "0 customer(s) imported successfully, 2 failed.",
                        "failed": [
                          {
                            "source_id": "test-user@voucherify.io",
                            "row": 1,
                            "reason": "acquisition_channel: must be a string, property is required, must be equal to one of Facebook,Twitter,Website (actual value is 'snap')"
                          },
                          {
                            "source_id": "",
                            "row": 2,
                            "reason": "acquisition_channel: must be a string, property is required, must be equal to one of Facebook,Twitter,Website (actual value is 'insta')"
                          }
                        ],
                        "done_count": 0,
                        "failed_count": 2
                      },
                      "created_at": "2023-01-20T07:41:33.086Z",
                      "updated_at": "2023-01-20T07:41:33.216Z",
                      "request_id": "v-0c5543eff2cb0f547f",
                      "progress": 100,
                      "processing_time": 130,
                      "object": "async_action"
                    }
                  },
                  "CUSTOMERS.BULK_UPDATE": {
                    "value": {
                      "id": "aa_0c5547cc5e17b617b6",
                      "type": "CUSTOMERS.BULK_UPDATE",
                      "status": "DONE",
                      "operation_status": "SUCCESS",
                      "result": {
                        "done_count": 3,
                        "failed_count": 0,
                        "reports": [
                          "{{voucherify-link-to-report}}"
                        ],
                        "reports_available_till": "2024-11-06T08:26:13.304Z",
                        "errors": []
                      },
                      "created_at": "2023-01-20T07:58:25.144Z",
                      "updated_at": "2023-01-20T07:58:25.869Z",
                      "request_id": "v-0c5547cc4d8b0f5be4",
                      "progress": 100,
                      "processing_time": 725,
                      "object": "async_action"
                    }
                  },
                  "CUSTOMERS.METADATA_UPDATE": {
                    "value": {
                      "id": "aa_0c554a92030e576181",
                      "type": "CUSTOMERS.METADATA_UPDATE",
                      "status": "DONE",
                      "operation_status": "SUCCESS",
                      "result": {
                        "done_count": 3,
                        "failed_count": 0,
                        "reports": [
                          "{{voucherify-link-to-report}}"
                        ],
                        "reports_available_till": "2024-11-06T08:26:13.304Z",
                        "errors": []
                      },
                      "created_at": "2023-01-20T08:10:31.821Z",
                      "updated_at": "2023-01-20T08:10:32.564Z",
                      "request_id": "v-0c554a91fb4b0f61a2",
                      "progress": 100,
                      "processing_time": 743,
                      "object": "async_action"
                    }
                  },
                  "CUSTOMERS.METADATA_KEY_PURGE": {
                    "value": {
                      "id": "aa_0c5551f2ab0a0ebf0e",
                      "type": "CUSTOMERS.METADATA_KEY_PURGE",
                      "status": "DONE",
                      "result": {
                        "message": "Updated 0 customers.",
                        "done_count": 0
                      },
                      "created_at": "2023-01-20T08:42:45.804Z",
                      "updated_at": "2023-01-20T08:42:46.079Z",
                      "request_id": "w-0c5551f2a38a0ebf0d",
                      "progress": 100,
                      "processing_time": 275,
                      "object": "async_action"
                    }
                  },
                  "PRODUCTS.BULK_UPDATE": {
                    "value": {
                      "id": "aa_0c5553f0f457b6328e",
                      "type": "PRODUCTS.BULK_UPDATE",
                      "status": "DONE",
                      "operation_status": "SUCCESS",
                      "result": {
                        "done_count": 3,
                        "failed_count": 0,
                        "reports": [
                          "{{voucherify-link-to-report}}"
                        ],
                        "reports_available_till": "2024-11-06T08:26:13.304Z",
                        "errors": []
                      },
                      "created_at": "2023-01-20T08:51:28.337Z",
                      "updated_at": "2023-01-20T08:51:28.439Z",
                      "request_id": "v-0c5553f0e94b0f7502",
                      "progress": 100,
                      "processing_time": 102,
                      "object": "async_action"
                    }
                  },
                  "PRODUCTS.METADATA_UPDATE": {
                    "value": {
                      "id": "aa_0c5554869b97b633b4",
                      "type": "PRODUCTS.METADATA_UPDATE",
                      "status": "DONE",
                      "operation_status": "SUCCESS",
                      "result": {
                        "done_count": 3,
                        "failed_count": 0,
                        "reports": [
                          "{{voucherify-link-to-report}}"
                        ],
                        "reports_available_till": "2024-11-06T08:26:13.304Z",
                        "errors": []
                      },
                      "created_at": "2023-01-20T08:54:01.582Z",
                      "updated_at": "2023-01-20T08:54:02.436Z",
                      "request_id": "v-0c55548694c418f9dd",
                      "progress": 100,
                      "processing_time": 854,
                      "object": "async_action"
                    }
                  },
                  "PRODUCTS.METADATA_KEY_PURGE": {
                    "value": {
                      "id": "aa_0c5552d997ca0ec03a",
                      "type": "PRODUCTS.METADATA_KEY_PURGE",
                      "status": "DONE",
                      "result": {
                        "message": "Updated 2 products.",
                        "done_count": 2
                      },
                      "created_at": "2023-01-20T08:46:42.271Z",
                      "updated_at": "2023-01-20T08:46:43.240Z",
                      "request_id": "w-0c5552d98e8a0ec039",
                      "progress": 100,
                      "processing_time": 969,
                      "object": "async_action"
                    }
                  },
                  "VOUCHERS.IMPORT": {
                    "value": {
                      "id": "aa_0c5559be44d7b63c06",
                      "type": "VOUCHERS.IMPORT",
                      "status": "DONE",
                      "result": {
                        "message": "0 voucher(s) imported successfully, 3 failed.",
                        "failed": [
                          {
                            "code": "PROMO-CODE31",
                            "reason": "unit: must be a number, must be equal to one of 1,2 (actual value is 'EUR')"
                          },
                          {
                            "code": "PROMO-CODE21",
                            "reason": "unit: must be a number, must be equal to one of 1,2 (actual value is 'EUR')"
                          },
                          {
                            "code": "GIFT-CARD-100-1",
                            "reason": "unit: must be a number, must be equal to one of 1,2 (actual value is 'EUR')"
                          }
                        ],
                        "done_count": 0,
                        "failed_count": 3
                      },
                      "created_at": "2023-01-20T09:16:49.299Z",
                      "updated_at": "2023-01-20T09:16:50.238Z",
                      "request_id": "v-0c5559be25c418824a",
                      "progress": 100,
                      "processing_time": 939,
                      "object": "async_action"
                    }
                  },
                  "VOUCHERS.IMPORT_CSV": {
                    "value": {
                      "id": "aa_0c555db3d697b643e1",
                      "type": "VOUCHERS.IMPORT_CSV",
                      "status": "DONE",
                      "result": {
                        "message": "0 voucher(s) imported successfully, 2 failed.",
                        "failed": [
                          {
                            "code": "FALL2023",
                            "row": 1,
                            "reason": "Voucher Type is required"
                          },
                          {
                            "code": "FALL2024",
                            "row": 2,
                            "reason": "Voucher Type is required"
                          }
                        ],
                        "done_count": 0,
                        "failed_count": 2
                      },
                      "created_at": "2023-01-20T09:34:07.194Z",
                      "updated_at": "2023-01-20T09:34:07.367Z",
                      "request_id": "v-0c555db3ba8b0f0767",
                      "progress": 100,
                      "processing_time": 173,
                      "object": "async_action"
                    }
                  },
                  "VOUCHERS.BULK_UPDATE": {
                    "value": {
                      "id": "aa_0c555e8115d7b64504",
                      "type": "VOUCHERS.BULK_UPDATE",
                      "status": "DONE",
                      "operation_status": "SUCCESS",
                      "result": {
                        "done_count": 3,
                        "failed_count": 0,
                        "reports": [
                          "{{voucherify-link-to-report}}"
                        ],
                        "reports_available_till": "2024-11-06T08:26:13.304Z",
                        "errors": []
                      },
                      "created_at": "2023-01-20T09:37:37.367Z",
                      "updated_at": "2023-01-20T09:37:37.520Z",
                      "request_id": "v-0c555e810904188aa4",
                      "progress": 100,
                      "processing_time": 153,
                      "object": "async_action"
                    }
                  },
                  "VOUCHERS.METADATA_UPDATE": {
                    "value": {
                      "id": "aa_0c555ed40857b6463a",
                      "type": "VOUCHERS.METADATA_UPDATE",
                      "status": "DONE",
                      "operation_status": "SUCCESS",
                      "result": {
                        "done_count": 3,
                        "failed_count": 0,
                        "reports": [
                          "{{voucherify-link-to-report}}"
                        ],
                        "reports_available_till": "2024-11-06T08:26:13.304Z",
                        "errors": []
                      },
                      "created_at": "2023-01-20T09:39:02.305Z",
                      "updated_at": "2023-01-20T09:39:02.640Z",
                      "request_id": "v-0c555ed40084188b55",
                      "progress": 100,
                      "processing_time": 335,
                      "object": "async_action"
                    }
                  },
                  "VOUCHERS.METADATA_KEY_PURGE": {
                    "value": {
                      "id": "aa_0c55534bd64a0ec0e0",
                      "type": "VOUCHERS.METADATA_KEY_PURGE",
                      "status": "DONE",
                      "result": {
                        "message": "Updated 9 vouchers.",
                        "done_count": 9
                      },
                      "created_at": "2023-01-20T08:48:39.257Z",
                      "updated_at": "2023-01-20T08:48:40.503Z",
                      "request_id": "w-0c55534bcfca0ec0df",
                      "progress": 100,
                      "processing_time": 1246,
                      "object": "async_action"
                    }
                  },
                  "SKUS.IMPORT_CSV": {
                    "value": {
                      "id": "aa_0c5558728d0e577e67",
                      "type": "SKUS.IMPORT_CSV",
                      "status": "DONE",
                      "result": {
                        "message": "4 sku(s) imported successfully, 0 failed.",
                        "failed": [],
                        "done_count": 4,
                        "failed_count": 0
                      },
                      "created_at": "2023-01-20T09:11:09.620Z",
                      "updated_at": "2023-01-20T09:11:10.270Z",
                      "request_id": "v-0c5558726f0b0f7d82",
                      "progress": 100,
                      "processing_time": 650,
                      "object": "async_action"
                    }
                  },
                  "PRODUCTS.IMPORT_CSV": {
                    "value": {
                      "id": "aa_0c55578e914e577cf1",
                      "type": "PRODUCTS.IMPORT_CSV",
                      "status": "DONE",
                      "result": {
                        "message": "1 product(s) imported successfully, 1 failed.",
                        "failed": [
                          {
                            "row": 1,
                            "reason": "vendor: must be a string, property is required, must be equal to one of Vendor 1,Vendor 2 (actual value is 'Vendor 3')"
                          }
                        ],
                        "done_count": 1,
                        "failed_count": 1
                      },
                      "created_at": "2023-01-20T09:07:16.165Z",
                      "updated_at": "2023-01-20T09:07:17.025Z",
                      "request_id": "v-0c55578e7a0418fef5",
                      "progress": 100,
                      "processing_time": 860,
                      "object": "async_action"
                    }
                  },
                  "ORDERS.METADATA_KEY_PURGE": {
                    "value": {
                      "id": "aa_0c555fda50472c83a8",
                      "type": "ORDERS.METADATA_KEY_PURGE",
                      "status": "DONE",
                      "result": {
                        "message": "Updated 1 orders.",
                        "done_count": 1
                      },
                      "created_at": "2023-01-20T09:43:30.881Z",
                      "updated_at": "2023-01-20T09:43:31.217Z",
                      "request_id": "w-0c555fda45c72c83a7",
                      "progress": 100,
                      "processing_time": 336,
                      "object": "async_action"
                    }
                  },
                  "ORDERS.IMPORT": {
                    "value": {
                      "id": "aa_0c5564b67d0e571534",
                      "type": "ORDERS.IMPORT",
                      "status": "DONE",
                      "result": {
                        "message": "1 order(s) imported successfully, 1 failed.",
                        "failed": [
                          {
                            "source_id": null,
                            "reason": "Internal error"
                          }
                        ],
                        "done_count": 1,
                        "failed_count": 1
                      },
                      "created_at": "2023-01-20T10:04:44.916Z",
                      "updated_at": "2023-01-20T10:04:46.102Z",
                      "request_id": "v-0c5564b6688b0f155d",
                      "progress": 100,
                      "processing_time": 1186,
                      "object": "async_action"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Returns an error indicating that the async action with given ID was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "Async-Action-Not-Found": {
                    "value": {
                      "code": 404,
                      "key": "not_found",
                      "message": "Resource not found",
                      "details": "Cannot find async_action with id aa_0aeb82bd55d5beffb",
                      "request_id": "v-0aeb88df54c82af560",
                      "resource_id": "aa_0aeb82bd55d5beffb",
                      "resource_type": "async_action"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ParameterLimit": {
        "type": "integer",
        "maximum": 100,
        "minimum": 1
      },
      "ParameterDate": {
        "type": "string",
        "example": "2023-12-22T10:13:06.487Z",
        "format": "date-time"
      },
      "AsyncActionsListResponseBody": {
        "description": "Response body schema for **GET** `v1/async-actions`.",
        "type": "object",
        "title": "Async Actions List Response Body",
        "properties": {
          "object": {
            "type": "string",
            "description": "The type of the object represented by JSON. This object stores information about asynchronous actions.",
            "default": "list",
            "enum": [
              "list"
            ]
          },
          "data_ref": {
            "type": "string",
            "default": "async_actions",
            "description": "Identifies the name of the JSON property that contains the array of asynchronous actions.",
            "enum": [
              "async_actions"
            ]
          },
          "async_actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AsyncActionBase"
            }
          },
          "has_more": {
            "type": "boolean",
            "description": "As query results are always limited by parameters, the `has_more` flag indicates if there are more records available. This lets you know if you can run another request to get more records returned in the results."
          }
        }
      },
      "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"
        ]
      },
      "AsyncActionGetResponseBody": {
        "title": "Async Action Get Response Body",
        "description": "Response body schema for **GET** `v1/async-actions/{asyncActionId}`.",
        "allOf": [
          {
            "$ref": "#/components/schemas/AsyncAction"
          }
        ]
      },
      "ParameterAsyncActionId": {
        "type": "string",
        "example": "aa_0afb3d009a55814a48"
      },
      "AsyncActionBase": {
        "title": "Async Action Base",
        "type": "object",
        "description": "This is an object representing an asynchronous action.",
        "properties": {
          "id": {
            "type": "string",
            "example": "aa_0adad13d6f057f088e",
            "description": "Async action unique ID."
          },
          "type": {
            "type": "string",
            "description": "Type of async action.",
            "enum": [
              "CAMPAIGN.VOUCHERS_IMPORT",
              "CAMPAIGN.VOUCHERS_IMPORT_CSV",
              "CAMPAIGN.VOUCHERS_UPDATE",
              "CAMPAIGN.VOUCHERS_DELETE",
              "CAMPAIGN.VOUCHERS_GENERATE",
              "CAMPAIGNS.METADATA_KEY_PURGE",
              "CUSTOMERS.IMPORT_CSV",
              "CUSTOMERS.BULK_UPDATE",
              "CUSTOMERS.METADATA_UPDATE",
              "CUSTOMERS.METADATA_KEY_PURGE",
              "PRODUCTS.BULK_UPDATE",
              "PRODUCTS.METADATA_UPDATE",
              "PRODUCTS.METADATA_KEY_PURGE",
              "PRODUCTS.IMPORT_CSV",
              "SKUS.IMPORT_CSV",
              "VOUCHERS.IMPORT",
              "VOUCHERS.IMPORT_CSV",
              "VOUCHERS.BULK_UPDATE",
              "VOUCHERS.METADATA_UPDATE",
              "VOUCHERS.METADATA_KEY_PURGE",
              "ORDERS.IMPORT",
              "ORDERS.METADATA_KEY_PURGE"
            ]
          },
          "status": {
            "type": "string",
            "description": "Status of the async action. Informs you whether the async action has already been completed.",
            "enum": [
              "DONE",
              "ENQUEUED",
              "FAILED",
              "IN_PROGRESS"
            ]
          },
          "operation_status": {
            "type": "string",
            "description": "Status of async action processing. Informs about the async action status, whether it failed, succeeded, or the status is unknown.",
            "enum": [
              "FAILED",
              "SUCCESS",
              "UNKNOWN"
            ]
          },
          "created_at": {
            "type": "string",
            "description": "Timestamp representing the date and time when the async action was scheduled in ISO 8601 format.",
            "example": "2022-06-23T11:21:45.578Z",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "example": "2022-06-23T11:21:46.795Z",
            "description": "Timestamp representing the date and time when the async action was updated. The value is shown in the ISO 8601 format.",
            "format": "date-time"
          },
          "request_id": {
            "type": "string",
            "example": "v-0b45cee140c3c9b5ca",
            "description": "Unique request ID."
          },
          "processing_time": {
            "type": "integer",
            "example": 1217,
            "description": "The length of time it took to process the request in milliseconds."
          },
          "progress": {
            "type": "integer",
            "description": "% progress to completion of the asynchronous action.",
            "minimum": 0,
            "maximum": 100
          },
          "object": {
            "type": "string",
            "default": "async_action",
            "description": "The type of the object represented by JSON. This object stores information about the `async_action`.",
            "enum": [
              "async_action"
            ]
          }
        }
      },
      "AsyncAction": {
        "title": "Async Action",
        "description": "This is an object representing an asynchronous action.",
        "allOf": [
          {
            "$ref": "#/components/schemas/AsyncActionBase"
          },
          {
            "type": "object",
            "properties": {
              "result": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_campaign_vouchers_import"
                  },
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_campaign_vouchers_import_csv"
                  },
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_campaign_vouchers_update"
                  },
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_campaign_vouchers_delete"
                  },
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_campaign_vouchers_generate"
                  },
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_campaign_metadata_key_purge"
                  },
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_customers_import_csv"
                  },
                  {
                    "$ref": "#/components/schemas/AsyncActionResultCustomersBulkUpdateResponseBody"
                  },
                  {
                    "$ref": "#/components/schemas/AsyncActionResultCustomersMetadataUpdateResponseBody"
                  },
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_customers_metadata_key_purge"
                  },
                  {
                    "$ref": "#/components/schemas/AsyncActionResultProductsBulkUpdateResponseBody"
                  },
                  {
                    "$ref": "#/components/schemas/AsyncActionResultProductsMetadataUpdateResponseBody"
                  },
                  {
                    "$ref": "#/components/schemas/AsyncActionResultProductsImportCSV"
                  },
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_skus_import_csv"
                  },
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_products_metadata_key_purge"
                  },
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_vouchers_import"
                  },
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_vouchers_import_csv"
                  },
                  {
                    "$ref": "#/components/schemas/AsyncActionResultVouchersBulkUpdateResponseBody"
                  },
                  {
                    "$ref": "#/components/schemas/AsyncActionResultVouchersMetadataUpdateResponseBody"
                  },
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_vouchers_metadata_key_purge"
                  },
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_orders_import"
                  },
                  {
                    "$ref": "#/components/schemas/17_res_obj_get_async_action_result_orders_metadata_key_purge"
                  }
                ]
              }
            }
          }
        ]
      },
      "17_res_obj_get_async_action_result_campaign_vouchers_import": {
        "title": "CAMPAIGN.VOUCHERS_IMPORT",
        "type": "object",
        "description": "Result schema for a `CAMPAIGN.VOUCHERS_IMPORT` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "failed": {
            "type": "array",
            "description": "If any records failed during the process, this array shows the failure details.",
            "items": {
              "type": "object",
              "properties": {
                "code": {
                  "type": "string",
                  "description": "Unique voucher code."
                },
                "reason": {
                  "type": "string",
                  "description": "Detailed failure cause for the voucher code import."
                }
              }
            }
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          },
          "failed_count": {
            "type": "integer",
            "description": "Number of resources failed to process."
          }
        }
      },
      "17_res_obj_get_async_action_result_campaign_vouchers_import_csv": {
        "title": "CAMPAIGN.VOUCHERS_IMPORT_CSV",
        "type": "object",
        "description": "Result schema for a `CAMPAIGN.VOUCHERS_IMPORT_CSV` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "failed": {
            "type": "array",
            "description": "If any records failed during the process, this array shows the failure details.",
            "items": {
              "type": "object",
              "properties": {
                "code": {
                  "type": "string",
                  "description": "Unique voucher code."
                },
                "row": {
                  "type": "integer",
                  "description": "The CSV file row number where the code definition is recorded. The row counter excludes the file headers row."
                },
                "reason": {
                  "type": "string",
                  "description": "Detailed failure cause for the voucher code import."
                }
              }
            }
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          },
          "failed_count": {
            "type": "integer",
            "description": "Number of resources failed to process."
          }
        }
      },
      "17_res_obj_get_async_action_result_campaign_vouchers_update": {
        "title": "CAMPAIGN.VOUCHERS_UPDATE",
        "type": "object",
        "description": "Result schema for a `CAMPAIGN.VOUCHERS_UPDATE` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          }
        }
      },
      "17_res_obj_get_async_action_result_campaign_vouchers_delete": {
        "title": "CAMPAIGN.VOUCHERS_DELETE",
        "type": "object",
        "description": "Result schema for a `CAMPAIGN.VOUCHERS_DELETE` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          }
        }
      },
      "17_res_obj_get_async_action_result_campaign_vouchers_generate": {
        "title": "CAMPAIGN.VOUCHERS_GENERATE",
        "type": "object",
        "description": "Result schema for a `CAMPAIGN.VOUCHERS_GENERATE` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          }
        }
      },
      "17_res_obj_get_async_action_result_campaign_metadata_key_purge": {
        "title": "CAMPAIGNS.METADATA_KEY_PURGE",
        "type": "object",
        "description": "Result schema for a `CAMPAIGNS.METADATA_KEY_PURGE` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          }
        }
      },
      "17_res_obj_get_async_action_result_customers_import_csv": {
        "title": "CUSTOMERS.IMPORT_CSV",
        "type": "object",
        "description": "Result schema for a `CUSTOMERS.IMPORT_CSV` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "failed": {
            "type": "array",
            "description": "If any records failed during the process, this array shows the failure details.",
            "items": {
              "type": "object",
              "properties": {
                "source_id": {
                  "type": "string",
                  "description": "Unique customer ID from your inventory system as indicated in the CSV file."
                },
                "row": {
                  "type": "integer",
                  "description": "The CSV file row number where the customer is recorded. The row counter excludes the file headers row."
                },
                "reason": {
                  "type": "string",
                  "description": "Detailed failure cause for the customer import."
                }
              }
            }
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          },
          "failed_count": {
            "type": "integer",
            "description": "Number of resources failed to process."
          }
        }
      },
      "AsyncActionResultCustomersBulkUpdateResponseBody": {
        "title": "CUSTOMERS.BULK_UPDATE",
        "allOf": [
          {
            "$ref": "#/components/schemas/AsyncActionsVoucherCustomerProductBulkUpdateResult"
          },
          {
            "description": "Result schema for a `CUSTOMERS.BULK_UPDATE` async action type."
          },
          {
            "type": "object",
            "properties": {
              "errors": {
                "type": "array",
                "description": "List of errors encountered during processing.",
                "items": {
                  "type": "object",
                  "properties": {
                    "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."
                    },
                    "key": {
                      "type": "string",
                      "description": "Short string describing the kind of error which occurred."
                    },
                    "source_id": {
                      "type": "string",
                      "description": "Source identifier of the customer for which the error occurred."
                    }
                  },
                  "required": [
                    "message",
                    "details",
                    "key",
                    "source_id"
                  ]
                }
              }
            },
            "required": [
              "errors"
            ]
          }
        ]
      },
      "AsyncActionResultCustomersMetadataUpdateResponseBody": {
        "title": "CUSTOMERS.METADATA_UPDATE",
        "description": "Result schema for a `CUSTOMERS.METADATA_UPDATE` async action type.",
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "description": "List of errors encountered during processing.",
            "items": {
              "type": "object",
              "properties": {
                "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."
                },
                "key": {
                  "type": "string",
                  "description": "Short string describing the kind of error which occurred."
                }
              },
              "required": [
                "message",
                "details",
                "key"
              ]
            }
          }
        },
        "required": [
          "errors"
        ]
      },
      "17_res_obj_get_async_action_result_customers_metadata_key_purge": {
        "title": "CUSTOMERS.METADATA_KEY_PURGE",
        "type": "object",
        "description": "Result schema for a `CUSTOMERS.METADATA_KEY_PURGE` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          }
        }
      },
      "AsyncActionResultProductsBulkUpdateResponseBody": {
        "title": "PRODUCTS.BULK_UPDATE",
        "allOf": [
          {
            "$ref": "#/components/schemas/AsyncActionsVoucherCustomerProductBulkUpdateResult"
          },
          {
            "description": "`Result schema for a PRODUCTS.BULK_UPDATE` async action type."
          },
          {
            "type": "object",
            "properties": {
              "errors": {
                "type": "array",
                "description": "List of errors encountered during processing.",
                "items": {
                  "type": "object",
                  "properties": {
                    "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."
                    },
                    "key": {
                      "type": "string",
                      "description": "Short string describing the kind of error which occurred."
                    },
                    "source_id": {
                      "type": "string",
                      "description": "Source identifier of the product for which the error occurred."
                    }
                  },
                  "required": [
                    "message",
                    "details",
                    "key",
                    "source_id"
                  ]
                }
              }
            },
            "required": [
              "errors"
            ]
          }
        ]
      },
      "AsyncActionResultProductsMetadataUpdateResponseBody": {
        "title": "PRODUCTS.METADATA_UPDATE",
        "description": "Result schema for a `PRODUCTS.METADATA_UPDATE` async action type.",
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "description": "List of errors encountered during processing.",
            "items": {
              "type": "object",
              "properties": {
                "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."
                },
                "key": {
                  "type": "string",
                  "description": "Short string describing the kind of error which occurred."
                }
              },
              "required": [
                "message",
                "details",
                "key"
              ]
            }
          }
        },
        "required": [
          "errors"
        ]
      },
      "AsyncActionResultProductsImportCSV": {
        "title": "PRODUCTS.IMPORT_CSV",
        "type": "object",
        "description": "Result schema for a `PRODUCTS.IMPORT_CSV` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "failed": {
            "type": "array",
            "description": "If any records failed during the process, this array shows the failure details.",
            "items": {
              "type": "object",
              "description": "Contains the details regarding a CSV file line item failed import.",
              "properties": {
                "row": {
                  "type": "integer",
                  "description": "The CSV file row number where the product definition is recorded. The row counter excludes the file headers row."
                },
                "source_id": {
                  "type": "string",
                  "description": "The source identifier of the product that caused the error."
                },
                "reason": {
                  "type": "string",
                  "description": "Detailed failure cause for the product import."
                }
              }
            }
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          },
          "failed_count": {
            "type": "integer",
            "description": "Number of resources failed to process."
          }
        }
      },
      "17_res_obj_get_async_action_result_skus_import_csv": {
        "title": "SKUS.IMPORT_CSV",
        "type": "object",
        "description": "Result schema for a `SKUS.IMPORT_CSV` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result.",
            "example": "2 sku(s) imported successfully, 6 failed."
          },
          "failed": {
            "type": "array",
            "description": "If any records failed during the process, this array shows the failure details.",
            "items": {
              "type": "object",
              "description": "Contains the details regarding a CSV file line item failed import.",
              "properties": {
                "row": {
                  "type": "integer",
                  "description": "The CSV file row number where the SKU definition is recorded. The row counter excludes the file headers row.",
                  "example": 2
                },
                "reason": {
                  "type": "string",
                  "description": "Detailed failure cause for the SKU import.",
                  "example": "Resource sku with id size-small is in use by products with ids [prod_0b0e3441c2462eff2c]"
                }
              }
            }
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          },
          "failed_count": {
            "type": "integer",
            "description": "Number of resources failed to process."
          }
        }
      },
      "17_res_obj_get_async_action_result_products_metadata_key_purge": {
        "title": "PRODUCTS.METADATA_KEY_PURGE",
        "type": "object",
        "description": "Result schema for a `PRODUCTS.METADATA_KEY_PURGE` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources updated successfully."
          }
        }
      },
      "17_res_obj_get_async_action_result_vouchers_import": {
        "title": "VOUCHERS.IMPORT",
        "type": "object",
        "description": "Result schema for a `VOUCHERS.IMPORT` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "failed": {
            "description": "If any records failed during the process, this array shows the failure details.",
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "description": "Unique voucher code."
              },
              "reason": {
                "type": "string",
                "description": "Detailed failure cause for the voucher code import."
              }
            }
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          },
          "failed_count": {
            "type": "integer",
            "description": "Number of resources failed to process."
          }
        }
      },
      "17_res_obj_get_async_action_result_vouchers_import_csv": {
        "title": "VOUCHERS.IMPORT_CSV",
        "type": "object",
        "description": "Result schema for a `VOUCHERS.IMPORT_CSV` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "failed": {
            "type": "array",
            "description": "If any records failed during the process, this array shows the failure details.",
            "items": {
              "type": "object",
              "properties": {
                "code": {
                  "type": "string",
                  "description": "Unique voucher code."
                },
                "row": {
                  "type": "integer",
                  "description": "The CSV file row number where the code definition is recorded. The row counter excludes the file headers row."
                },
                "reason": {
                  "type": "string",
                  "description": "Detailed failure cause for the voucher code import."
                }
              }
            }
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          },
          "failed_count": {
            "type": "integer",
            "description": "Number of resources failed to process."
          }
        }
      },
      "AsyncActionResultVouchersBulkUpdateResponseBody": {
        "title": "VOUCHERS.BULK_UPDATE",
        "allOf": [
          {
            "$ref": "#/components/schemas/AsyncActionsVoucherCustomerProductBulkUpdateResult"
          },
          {
            "description": "Result schema for a `VOUCHERS.BULK_UPDATE` async action type."
          },
          {
            "type": "object",
            "properties": {
              "errors": {
                "type": "array",
                "description": "List of errors encountered during processing.",
                "items": {
                  "type": "object",
                  "properties": {
                    "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."
                    },
                    "key": {
                      "type": "string",
                      "description": "Short string describing the kind of error which occurred."
                    },
                    "code": {
                      "type": "string",
                      "description": "Code of the voucher for which the error occurred."
                    }
                  },
                  "required": [
                    "message",
                    "details",
                    "key",
                    "code"
                  ]
                }
              }
            },
            "required": [
              "errors"
            ]
          }
        ]
      },
      "AsyncActionResultVouchersMetadataUpdateResponseBody": {
        "title": "VOUCHERS.METADATA_UPDATE",
        "description": "Result schema for a `VOUCHERS.METADATA_UPDATE` async action type.",
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "description": "List of errors encountered during processing.",
            "items": {
              "type": "object",
              "properties": {
                "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."
                },
                "key": {
                  "type": "string",
                  "description": "Short string describing the kind of error which occurred."
                }
              },
              "required": [
                "message",
                "details",
                "key"
              ]
            }
          }
        },
        "required": [
          "errors"
        ]
      },
      "17_res_obj_get_async_action_result_vouchers_metadata_key_purge": {
        "title": "VOUCHERS.METADATA_KEY_PURGE",
        "type": "object",
        "description": "Result schema for a `VOUCHERS.METADATA_KEY_PURGE` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          }
        }
      },
      "17_res_obj_get_async_action_result_orders_import": {
        "title": "ORDERS.IMPORT",
        "type": "object",
        "description": "Result schema for a `ORDERS.IMPORT` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "failed": {
            "description": "If any records failed during the process, this array shows the failure details.",
            "type": "object",
            "properties": {
              "source_id": {
                "type": "string",
                "description": "Unique order source ID."
              },
              "reason": {
                "type": "string",
                "description": "Detailed failure cause for the voucher code import."
              }
            }
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          },
          "failed_count": {
            "type": "integer",
            "description": "Number of resources failed to process."
          }
        }
      },
      "17_res_obj_get_async_action_result_orders_metadata_key_purge": {
        "title": "ORDERS.METADATA_KEY_PURGE",
        "type": "object",
        "description": "Result schema for a `ORDERS.METADATA_KEY_PURGE` async action type.",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message providing a short description about the result."
          },
          "done_count": {
            "type": "integer",
            "description": "Number of resources processed successfully."
          }
        }
      },
      "AsyncActionsVoucherCustomerProductBulkUpdateResult": {
        "type": "object",
        "title": "Async Action Voucher Customer Product Bulk Update Result",
        "description": "Result details of the async action.",
        "properties": {
          "done_count": {
            "type": "integer",
            "description": "Number of items successfully processed."
          },
          "failed_count": {
            "type": "integer",
            "description": "Number of items that failed to be processed."
          },
          "reports": {
            "type": "array",
            "description": "List of URLs to report files.",
            "items": {
              "type": "string",
              "description": "URL to the report file."
            }
          },
          "reports_available_till": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp until the reports are available."
          }
        },
        "required": [
          "done_count",
          "failed_count",
          "reports",
          "reports_available_till"
        ]
      }
    },
    "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`."
            }
          }
        }
      }
    }
  }
}