{
  "info": {
    "_postman_id": "60106097-5dff-c10f-74f2-02738d6e44bf",
    "name": "Kwiga Public API",
    "description": "Auto-generated from the Slate request YAMLs. **Authentication — fill these once in the collection's Variables tab** (right-click the collection → Edit → Variables; or override them per Environment): `token` and `cabinet_hash`. `Token` is then sent automatically via the collection Authorization (API Key header) and `Cabinet-Hash` is added by a collection pre-request script — no per-request setup needed. Folders mirror the documentation sections; each endpoint keeps its alternative examples as saved examples.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "in",
        "value": "header",
        "type": "string"
      },
      {
        "key": "key",
        "value": "Token",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{token}}",
        "type": "string"
      }
    ]
  },
  "item": [
    {
      "name": "Certificates",
      "item": [
        {
          "name": "Get certificate by number",
          "request": {
            "method": "GET",
            "header": [

            ],
            "url": {
              "raw": "{{base_url}}/certificates/by-number/:number",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "certificates",
                "by-number",
                ":number"
              ],
              "variable": [
                {
                  "key": "number",
                  "value": "{{number}}"
                }
              ]
            },
            "description": "Get certificate by number"
          },
          "response": [
            {
              "name": "Get certificate by number",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/certificates/by-number/:number",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "certificates",
                    "by-number",
                    ":number"
                  ],
                  "variable": [
                    {
                      "key": "number",
                      "value": "{{number}}"
                    }
                  ]
                },
                "description": "Get certificate by number"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n    \"data\": {\n        \"id\": 55,\n        \"uuid\": \"262e7042-1933-42a9-ba01-e96d7d5110dc\",\n        \"cabinet_id\": 1,\n        \"user_id\": 273,\n        \"issued_at\": \"2023-07-25T15:36:44.000000Z\",\n        \"number\": \"1986-0001\",\n        \"url\": \"http://cabinet-1.kwiga.local/certificates/262e7042-1933-42a9-ba01-e96d7d5110dc\",\n        \"created_at\": \"2023-07-25T15:36:44.000000Z\",\n        \"updated_at\": \"2023-07-25T15:36:44.000000Z\",\n        \"finished_at\": \"2023-07-25T15:36:44.000000Z\",\n        \"points\": 120,\n        \"user\": {\n            \"id\": 273,\n            \"name\": \"test name\",\n            \"email\": \"test-student@kwiga.com\"\n        },\n        \"certificateble_title\": \"Test course\"\n    }\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Contacts",
      "item": [
        {
          "name": "Contact records",
          "item": [
            {
              "name": "Get contacts list",
              "request": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/contacts",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts"
                  ]
                },
                "description": "Get contacts list"
              },
              "response": [
                {
                  "name": "Get contacts list",
                  "originalRequest": {
                    "method": "GET",
                    "header": [

                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts"
                      ]
                    },
                    "description": "Get contacts list"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": [\n    {\n      \"id\": 1,\n      \"created_at\": \"2022-02-04T12:17:32.000000Z\",\n      \"email\": \"test@example.com\",\n      \"first_name\": \"James\",\n      \"last_name\": \"Bond\",\n      \"phone\": \"+380931234567\",\n      \"tags\": [\n          {\n              \"id\": 93,\n              \"name\": \"test-tag\"\n          }\n      ],\n      \"offers\": [\n          {\n              \"id\": 8,\n              \"unique_offer_code\": \"ptJmPPXVYs0t\",\n              \"title\": \"Предложение #8\",\n              \"limit_type\": {\n                  \"id\": 1,\n                  \"name\": \"Неограничено\"\n              },\n              \"limit_of_sales\": null\n          }\n      ]\n    },\n\t\"utm\": {\n\t\t\"utm_source\": [\n\t\t\t\"test-source\"\n\t\t],\n\t\t\"utm_campaign\": [],\n\t\t\"utm_medium\": [],\n\t\t\"utm_term\": [\n\t\t\t\"test-term\"\n\t\t],\n\t\t\"utm_content\": []\n\t},\n    {\n      \"id\": 2,\n      \"created_at\": \"2022-02-04T12:17:32.000000Z\",\n      \"email\": \"test2@example.com\",\n      \"first_name\": \"Petr\",\n      \"last_name\": \"Ivanov\",\n      \"phone\": \"+380983234512\",\n      \"tags\": [],\n      \"offers\": []\n    }\n  ],\n  \"links\": {\n        \"first\": \"<%= config[:base_url] %>/contacts?page=1\",\n        \"last\": \"<%= config[:base_url] %>/contacts?page=2\",\n        \"prev\": null,\n        \"next\": \"<%= config[:base_url] %>/contacts?page=2\"\n   },\n   \"meta\": {\n        \"current_page\": 1,\n        \"from\": 1,\n        \"last_page\": 2,\n        \"links\": [\n            {\n                \"url\": null,\n                \"label\": \"&laquo; <%= t(:pagination_prev) %>\",\n                \"active\": false\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/contacts?page=1\",\n                \"label\": \"1\",\n                \"active\": true\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/contacts?page=2\",\n                \"label\": \"2\",\n                \"active\": false\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/contacts?page=2\",\n                \"label\": \"<%= t(:pagination_next) %> &raquo;\",\n                \"active\": false\n            }\n        ],\n        \"path\": \"<%= config[:base_url] %>/contacts\",\n        \"per_page\": 15,\n        \"to\": 2,\n        \"total\": 3\n    }\n}"
                },
                {
                  "name": "Get contacts list with pagination",
                  "originalRequest": {
                    "method": "GET",
                    "header": [

                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts?page=1&per_page=15",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts"
                      ],
                      "query": [
                        {
                          "key": "page",
                          "value": "1"
                        },
                        {
                          "key": "per_page",
                          "value": "15"
                        }
                      ]
                    },
                    "description": "Get contacts list"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": [\n    {\n      \"id\": 1,\n      \"created_at\": \"2022-02-04T12:17:32.000000Z\",\n      \"email\": \"test@example.com\",\n      \"first_name\": \"James\",\n      \"last_name\": \"Bond\",\n      \"phone\": \"+380931234567\",\n      \"tags\": [\n          {\n              \"id\": 93,\n              \"name\": \"test-tag\"\n          }\n      ],\n      \"offers\": [\n          {\n              \"id\": 8,\n              \"unique_offer_code\": \"ptJmPPXVYs0t\",\n              \"title\": \"Предложение #8\",\n              \"limit_type\": {\n                  \"id\": 1,\n                  \"name\": \"Неограничено\"\n              },\n              \"limit_of_sales\": null\n          }\n      ]\n    },\n\t\"utm\": {\n\t\t\"utm_source\": [\n\t\t\t\"test-source\"\n\t\t],\n\t\t\"utm_campaign\": [],\n\t\t\"utm_medium\": [],\n\t\t\"utm_term\": [\n\t\t\t\"test-term\"\n\t\t],\n\t\t\"utm_content\": []\n\t},\n    {\n      \"id\": 2,\n      \"created_at\": \"2022-02-04T12:17:32.000000Z\",\n      \"email\": \"test2@example.com\",\n      \"first_name\": \"Petr\",\n      \"last_name\": \"Ivanov\",\n      \"phone\": \"+380983234512\",\n      \"tags\": [],\n      \"offers\": []\n    }\n  ],\n  \"links\": {\n        \"first\": \"<%= config[:base_url] %>/contacts?page=1\",\n        \"last\": \"<%= config[:base_url] %>/contacts?page=2\",\n        \"prev\": null,\n        \"next\": \"<%= config[:base_url] %>/contacts?page=2\"\n   },\n   \"meta\": {\n        \"current_page\": 1,\n        \"from\": 1,\n        \"last_page\": 2,\n        \"links\": [\n            {\n                \"url\": null,\n                \"label\": \"&laquo; <%= t(:pagination_prev) %>\",\n                \"active\": false\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/contacts?page=1\",\n                \"label\": \"1\",\n                \"active\": true\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/contacts?page=2\",\n                \"label\": \"2\",\n                \"active\": false\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/contacts?page=2\",\n                \"label\": \"<%= t(:pagination_next) %> &raquo;\",\n                \"active\": false\n            }\n        ],\n        \"path\": \"<%= config[:base_url] %>/contacts\",\n        \"per_page\": 15,\n        \"to\": 2,\n        \"total\": 3\n    }\n}"
                },
                {
                  "name": "Get contacts list with filters",
                  "originalRequest": {
                    "method": "GET",
                    "header": [

                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts?page=1&per_page=15&filters[date_from]=2022-04-27&filters[search]=example.com&with_offers=1",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts"
                      ],
                      "query": [
                        {
                          "key": "page",
                          "value": "1"
                        },
                        {
                          "key": "per_page",
                          "value": "15"
                        },
                        {
                          "key": "filters[date_from]",
                          "value": "2022-04-27"
                        },
                        {
                          "key": "filters[search]",
                          "value": "example.com"
                        },
                        {
                          "key": "with_offers",
                          "value": "1"
                        }
                      ]
                    },
                    "description": "Get contacts list"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": [\n    {\n      \"id\": 1,\n      \"created_at\": \"2022-02-04T12:17:32.000000Z\",\n      \"email\": \"test@example.com\",\n      \"first_name\": \"James\",\n      \"last_name\": \"Bond\",\n      \"phone\": \"+380931234567\",\n      \"tags\": [\n          {\n              \"id\": 93,\n              \"name\": \"test-tag\"\n          }\n      ],\n      \"offers\": [\n          {\n              \"id\": 8,\n              \"unique_offer_code\": \"ptJmPPXVYs0t\",\n              \"title\": \"Предложение #8\",\n              \"limit_type\": {\n                  \"id\": 1,\n                  \"name\": \"Неограничено\"\n              },\n              \"limit_of_sales\": null\n          }\n      ]\n    },\n\t\"utm\": {\n\t\t\"utm_source\": [\n\t\t\t\"test-source\"\n\t\t],\n\t\t\"utm_campaign\": [],\n\t\t\"utm_medium\": [],\n\t\t\"utm_term\": [\n\t\t\t\"test-term\"\n\t\t],\n\t\t\"utm_content\": []\n\t},\n    {\n      \"id\": 2,\n      \"created_at\": \"2022-02-04T12:17:32.000000Z\",\n      \"email\": \"test2@example.com\",\n      \"first_name\": \"Petr\",\n      \"last_name\": \"Ivanov\",\n      \"phone\": \"+380983234512\",\n      \"tags\": [],\n      \"offers\": []\n    }\n  ],\n  \"links\": {\n        \"first\": \"<%= config[:base_url] %>/contacts?page=1\",\n        \"last\": \"<%= config[:base_url] %>/contacts?page=2\",\n        \"prev\": null,\n        \"next\": \"<%= config[:base_url] %>/contacts?page=2\"\n   },\n   \"meta\": {\n        \"current_page\": 1,\n        \"from\": 1,\n        \"last_page\": 2,\n        \"links\": [\n            {\n                \"url\": null,\n                \"label\": \"&laquo; <%= t(:pagination_prev) %>\",\n                \"active\": false\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/contacts?page=1\",\n                \"label\": \"1\",\n                \"active\": true\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/contacts?page=2\",\n                \"label\": \"2\",\n                \"active\": false\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/contacts?page=2\",\n                \"label\": \"<%= t(:pagination_next) %> &raquo;\",\n                \"active\": false\n            }\n        ],\n        \"path\": \"<%= config[:base_url] %>/contacts\",\n        \"per_page\": 15,\n        \"to\": 2,\n        \"total\": 3\n    }\n}"
                }
              ]
            },
            {
              "name": "Get contact by ID",
              "request": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/contacts/:contact",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    ":contact"
                  ],
                  "variable": [
                    {
                      "key": "contact",
                      "value": "{{contact}}"
                    }
                  ]
                },
                "description": "Get contact by ID"
              },
              "response": [
                {
                  "name": "Get contact by ID",
                  "originalRequest": {
                    "method": "GET",
                    "header": [

                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact"
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        }
                      ]
                    },
                    "description": "Get contact by ID"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n    \"data\": {\n        \"id\": 132,\n        \"email\": \"bond@example.com\",\n        \"first_name\": \"James\",\n        \"last_name\": \"Bond\",\n        \"phone_number\": \"931234567\",\n        \"tags\": [],\n        \"created_at\": \"2023-06-26T19:01:00.000000Z\",\n        \"additional_fields\": [\n            {\n                \"id\": 110,\n                \"field\": {\n                    \"id\": 17,\n                    \"title\": \"test global\",\n                    \"is_local\": false\n                },\n                \"value\": \"this is test value\"\n            }\n        ]\n    }\n}"
                }
              ]
            },
            {
              "name": "Create contact",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/contacts",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"first_name\": \"James\",\n  \"last_name\": \"Bond\",\n  \"email\": \"bond@example.com\",\n  \"send_activation_email\": true,\n  \"phone\": \"+380931234567\",\n  \"manager_ids\": [\n    264,\n    288\n  ],\n  \"additional_fields\": [\n    {\n      \"field_id\": 17,\n      \"value\": \"this is test value\"\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Create contact"
              },
              "response": [
                {
                  "name": "Create new contact",
                  "originalRequest": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts"
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"first_name\": \"James\",\n  \"last_name\": \"Bond\",\n  \"email\": \"bond@example.com\",\n  \"send_activation_email\": true,\n  \"phone\": \"+380931234567\",\n  \"manager_ids\": [\n    264,\n    288\n  ],\n  \"additional_fields\": [\n    {\n      \"field_id\": 17,\n      \"value\": \"this is test value\"\n    }\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "description": "Create contact"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n    \"data\": {\n        \"id\": 132,\n        \"email\": \"bond@example.com\",\n        \"first_name\": \"James\",\n        \"last_name\": \"Bond\",\n        \"phone_number\": \"931234567\",\n        \"tags\": [],\n        \"created_at\": \"2023-06-26T19:01:00.000000Z\",\n        \"additional_fields\": [\n            {\n                \"id\": 110,\n                \"field\": {\n                    \"id\": 17,\n                    \"title\": \"test global\",\n                    \"is_local\": false\n                },\n                \"value\": \"this is test value\"\n            }\n        ]\n    }\n}"
                }
              ]
            },
            {
              "name": "Update contact",
              "request": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/contacts/:contact",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    ":contact"
                  ],
                  "variable": [
                    {
                      "key": "contact",
                      "value": "{{contact}}"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"first_name\": \"John\",\n  \"last_name\": \"Black\",\n  \"email\": \"bond123@example.com\",\n  \"phone\": \"+380931112233\",\n  \"tags\": [\n    \"test-tag\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Update contact"
              },
              "response": [
                {
                  "name": "Update contact",
                  "originalRequest": {
                    "method": "PUT",
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact"
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"first_name\": \"John\",\n  \"last_name\": \"Black\",\n  \"email\": \"bond123@example.com\",\n  \"phone\": \"+380931112233\",\n  \"tags\": [\n    \"test-tag\"\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "description": "Update contact"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n    \"data\": {\n        \"id\": 132,\n        \"email\": \"bond@example.com\",\n        \"first_name\": \"James\",\n        \"last_name\": \"Bond\",\n        \"phone_number\": \"931234567\",\n        \"tags\": [],\n        \"created_at\": \"2023-06-26T19:01:00.000000Z\",\n        \"additional_fields\": [\n            {\n                \"id\": 110,\n                \"field\": {\n                    \"id\": 17,\n                    \"title\": \"test global\",\n                    \"is_local\": false\n                },\n                \"value\": \"this is test value\"\n            }\n        ]\n    }\n}"
                }
              ]
            },
            {
              "name": "Add purchase to contact",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/contacts/purchases",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    "purchases"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"first_name\": \"James\",\n  \"last_name\": \"Bond\",\n  \"email\": \"bond@example.com\",\n  \"send_activation_email\": true,\n  \"phone\": \"+380931234567\",\n  \"offer_id\": 18,\n  \"additional_fields\": [\n    {\n      \"field_id\": 17,\n      \"value\": \"this is test value\"\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Add purchase to contact"
              },
              "response": [
                {
                  "name": "Add purchase to contact",
                  "originalRequest": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/purchases",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        "purchases"
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"first_name\": \"James\",\n  \"last_name\": \"Bond\",\n  \"email\": \"bond@example.com\",\n  \"send_activation_email\": true,\n  \"phone\": \"+380931234567\",\n  \"offer_id\": 18,\n  \"additional_fields\": [\n    {\n      \"field_id\": 17,\n      \"value\": \"this is test value\"\n    }\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "description": "Add purchase to contact"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n    \"data\": {\n        \"id\": 132,\n        \"email\": \"bond@example.com\",\n        \"first_name\": \"James\",\n        \"last_name\": \"Bond\",\n        \"phone_number\": \"931234567\",\n        \"tags\": [],\n        \"created_at\": \"2023-06-26T19:01:00.000000Z\",\n        \"additional_fields\": [\n            {\n                \"id\": 110,\n                \"field\": {\n                    \"id\": 17,\n                    \"title\": \"test global\",\n                    \"is_local\": false\n                },\n                \"value\": \"this is test value\"\n            }\n        ],\n        \"orders\": [\n            {\n                \"id\": 1060,\n                \"type_id\": 1,\n                \"first_paid_at\": \"2023-10-13T18:04:02.000000Z\",\n                \"paid_at\": \"2023-10-13T18:04:02.000000Z\",\n                \"created_at\": \"2023-10-13T18:04:02.000000Z\",\n                \"updated_at\": \"2023-10-13T18:04:02.000000Z\",\n                \"products\": [\n                    {\n                        \"id\": 25,\n                        \"productable_id\": 10,\n                        \"productable_type\": \"course\",\n                        \"title\": \"test course\",\n                        \"url\": \"https://sample-school.kwiga.com/courses/test-course\"\n                    }\n                ],\n                \"payments\": [\n                    {\n                        \"id\": 1231,\n                        \"status\": 2,\n                        \"status_title\": \"Paid\",\n                        \"payment_type\": null,\n                        \"payment_type_title\": null,\n                        \"payment_form\": null,\n                        \"payment_form_title\": null,\n                        \"price_info\": {\n                            \"amount\": 0,\n                            \"currency\": {\n                                \"id\": 147,\n                                \"code\": \"UAH\",\n                                \"html_code\": \"₴\",\n                                \"html_letter_code\": \"грн\"\n                            }\n                        },\n                        \"paid_at\": \"2023-10-13T18:04:02.000000Z\",\n                        \"created_at\": \"2023-10-13T18:04:02.000000Z\",\n                        \"updated_at\": \"2023-10-13T18:04:02.000000Z\",\n                        \"transactions\": [\n                            {\n                                \"id\": 28,\n                                \"merchant_id\": 2,\n                                \"payment_id\": 1231,\n                                \"order_id\": 1060,\n                                \"payment_system_status\": \"Declined\",\n                                \"failure_reason\": \"Cardholder session expired\",\n                                \"price\": \"147\",\n                                \"currency_code\": \"UAH\",\n                                \"payer_account\": null,\n                                \"card_mask\": null,\n                                \"rrn\": null,\n                                \"fee\": null,\n                                \"created_at\": \"2023-11-03T08:45:10.000000Z\"\n                            },\n                            {\n                                \"id\": 29,\n                                \"merchant_id\": 2,\n                                \"payment_id\": 1231,\n                                \"order_id\": 1060,\n                                \"payment_system_status\": \"Approved\",\n                                \"failure_reason\": null,\n                                \"price\": \"147\",\n                                \"currency_code\": \"UAH\",\n                                \"payer_account\": \"JKNNASWTZ99SJ\",\n                                \"card_mask\": \"53****2144\",\n                                \"rrn\": 330710335365,\n                                \"fee\": null,\n                                \"created_at\": \"2023-11-03T08:48:10.000000Z\"\n                            }\n                        ]\n                    }\n                ],\n                \"paid_status\": \"paid\",\n                \"paid_status_title\": \"Сплачено\",\n                \"order_stage\": {\n                    \"id\": 43,\n                    \"title\": \"Стейдж 1\",\n                    \"order_group\": {\n                        \"id\": 22,\n                        \"slug\": \"voronka-1\",\n                        \"title\": null,\n                        \"order\": 4,\n                        \"created_at\": \"2023-06-22T18:20:53.000000Z\"\n                    },\n                    \"order_funnel\": {\n                        \"id\": 1,\n                        \"title\": \"Воронка за замовчуванням\",\n                        \"created_at\": \"2023-05-26T09:47:16.000000Z\"\n                    },\n                    \"created_at\": \"2023-06-22T18:21:10.000000Z\"\n                },\n                \"cost_info\": {\n                    \"amount\": 0,\n                    \"currency\": {\n                        \"id\": 147,\n                        \"code\": \"UAH\",\n                        \"html_code\": \"₴\",\n                        \"html_letter_code\": \"грн\"\n                    }\n                },\n                \"managers\": [\n                    {\n                        \"id\": 264,\n                        \"name\": \"test\",\n                        \"email\": \"testfsdf@fdafasd.fsd\"\n                    },\n                    {\n                        \"id\": 288,\n                        \"name\": \"fdsf\",\n                        \"email\": \"sdfs@fdf.dfss\"\n                    }\n                ]\n            }\n        ]\n    }\n}"
                }
              ]
            }
          ]
        },
        {
          "name": "Tags",
          "item": [
            {
              "name": "Add tags to contacts",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/contacts/tags",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    "tags"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"contacts\": [\n    23698\n  ],\n  \"tags\": [\n    \"test-tag\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Add tags to contacts"
              },
              "response": [
                {
                  "name": "Add tags to contacts",
                  "originalRequest": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/tags",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        "tags"
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"contacts\": [\n    23698\n  ],\n  \"tags\": [\n    \"test-tag\"\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "description": "Add tags to contacts"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n    \"success\": true\n}"
                }
              ]
            },
            {
              "name": "Remove tags from contacts",
              "request": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/contacts/tags",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    "tags"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"contacts\": [\n    23698\n  ],\n  \"tags\": [\n    \"test-tag\"\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Remove tags from contacts"
              },
              "response": [
                {
                  "name": "Remove tags from contacts",
                  "originalRequest": {
                    "method": "DELETE",
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/tags",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        "tags"
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"contacts\": [\n    23698\n  ],\n  \"tags\": [\n    \"test-tag\"\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "description": "Remove tags from contacts"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n    \"success\": true\n}"
                }
              ]
            }
          ]
        },
        {
          "name": "Products & subscriptions",
          "item": [
            {
              "name": "Get contact products",
              "request": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/contacts/:contact/products",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    ":contact",
                    "products"
                  ],
                  "variable": [
                    {
                      "key": "contact",
                      "value": "{{contact}}"
                    }
                  ]
                },
                "description": "Get contact products"
              },
              "response": [
                {
                  "name": "Get contact products",
                  "originalRequest": {
                    "method": "GET",
                    "header": [

                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact/products",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact",
                        "products"
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        }
                      ]
                    },
                    "description": "Get contact products"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\r\n  \"data\": [\r\n    {\r\n      \"id\": 299,\r\n      \"productable_id\": 142,\r\n      \"productable_type\": \"course\",\r\n      \"title\": \"Copy Test backup\",\r\n      \"image_url\": \"\",\r\n      \"is_published\": false,\r\n      \"aggregated_subscription\": {\r\n        \"is_active\": true,\r\n        \"is_paid\": true,\r\n        \"start_at\": \"2025-05-05T15:09:04.000000Z\",\r\n        \"end_at\": null,\r\n        \"offer_end_at\": null,\r\n        \"order_end_at\": null,\r\n        \"count_available_days\": 39,\r\n        \"count_left_days\": null,\r\n        \"state\": {\r\n          \"id\": 2,\r\n          \"name\": \"Open\",\r\n          \"title\": \"Open\"\r\n        }\r\n      },\r\n      \"subscriptions\": [\r\n        {\r\n          \"id\": 4775,\r\n          \"creator_id\": 24457,\r\n          \"user_id\": 24457,\r\n          \"product_id\": 299,\r\n          \"order_id\": 2710,\r\n          \"offer_id\": 757,\r\n          \"is_active\": true,\r\n          \"start_at\": \"2025-05-05T15:09:04.000000Z\",\r\n          \"order_end_at\": null,\r\n          \"end_at\": null,\r\n          \"paid_at\": \"2025-05-05T15:09:04.000000Z\",\r\n          \"created_at\": \"2025-05-05T15:09:04.000000Z\",\r\n          \"updated_at\": \"2025-05-05T15:09:04.000000Z\"\r\n        }\r\n      ]\r\n    }\r\n  ]\r\n}"
                }
              ]
            },
            {
              "name": "Delete contact product",
              "request": {
                "method": "DELETE",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/contacts/:contact/products/:product",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    ":contact",
                    "products",
                    ":product"
                  ],
                  "variable": [
                    {
                      "key": "contact",
                      "value": "{{contact}}"
                    },
                    {
                      "key": "product",
                      "value": "{{product}}"
                    }
                  ]
                },
                "description": "Delete contact product"
              },
              "response": [
                {
                  "name": "Delete contact product",
                  "originalRequest": {
                    "method": "DELETE",
                    "header": [

                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact/products/:product",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact",
                        "products",
                        ":product"
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        },
                        {
                          "key": "product",
                          "value": "{{product}}"
                        }
                      ]
                    },
                    "description": "Delete contact product"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\r\n  \"success\": true\r\n}"
                }
              ]
            },
            {
              "name": "Delete contact products in bulk",
              "request": {
                "method": "DELETE",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/contacts/products",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    "products"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"email\": \"user@example.com\",\n  \"product_id\": 299,\n  \"offers\": [\n    421\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Delete contact products in bulk"
              },
              "response": [
                {
                  "name": "Delete contact products in bulk",
                  "originalRequest": {
                    "method": "DELETE",
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/products",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        "products"
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"email\": \"user@example.com\",\n  \"product_id\": 299,\n  \"offers\": [\n    421\n  ]\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "description": "Delete contact products in bulk"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\r\n  \"data\": {\r\n    \"affected_subscriptions\": [\r\n      2309,\r\n      2661\r\n    ],\r\n    \"affected_orders\": [\r\n      1578,\r\n      1784\r\n    ],\r\n    \"affected_by_offers\": {\r\n      \"421\": {\r\n        \"affected_subscriptions\": [\r\n          2309,\r\n          2661\r\n        ],\r\n        \"affected_orders\": [\r\n          1578,\r\n          1784\r\n        ]\r\n      }\r\n    },\r\n    \"affected_by_products\": []\r\n  },\r\n  \"contact_id\": 125\r\n}"
                }
              ]
            },
            {
              "name": "Freeze the contact's subscription on a product",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/contacts/:contact/products/:product/freeze",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    ":contact",
                    "products",
                    ":product",
                    "freeze"
                  ],
                  "variable": [
                    {
                      "key": "contact",
                      "value": "{{contact}}"
                    },
                    {
                      "key": "product",
                      "value": "{{product}}"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"count_frozen_days\": 30\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Freeze the contact's subscription on a product"
              },
              "response": [
                {
                  "name": "Freeze the subscription for 30 days",
                  "originalRequest": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact/products/:product/freeze",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact",
                        "products",
                        ":product",
                        "freeze"
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        },
                        {
                          "key": "product",
                          "value": "{{product}}"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"count_frozen_days\": 30\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "description": "Freeze the contact's subscription on a product"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": {\n    \"id\": 299,\n    \"productable_id\": 142,\n    \"productable_type\": \"course\",\n    \"title\": \"JS Foundations\",\n    \"image_url\": \"https://cdn.kwiga.com/preview.jpg\",\n    \"url\": \"https://kwiga.com/courses/js-foundations\",\n    \"is_published\": true,\n    \"aggregated_subscription\": {\n      \"is_active\": false,\n      \"is_paid\": true,\n      \"start_at\": \"2026-06-05T00:00:00.000000Z\",\n      \"end_at\": \"2026-08-04T00:00:00.000000Z\",\n      \"offer_end_at\": null,\n      \"order_end_at\": \"2026-08-04T00:00:00.000000Z\",\n      \"frozen_at\": \"2026-05-20T10:00:00.000000Z\",\n      \"extended_at\": null,\n      \"count_available_days\": 60,\n      \"count_left_days\": 60,\n      \"state\": {\n        \"id\": 4,\n        \"name\": \"Frozen\",\n        \"title\": \"Frozen\"\n      }\n    },\n    \"subscriptions\": [\n      {\n        \"id\": 4775,\n        \"creator_id\": 24457,\n        \"user_id\": 24457,\n        \"product_id\": 299,\n        \"order_id\": 2710,\n        \"offer_id\": 757,\n        \"is_active\": false,\n        \"start_at\": \"2026-06-05T00:00:00.000000Z\",\n        \"order_end_at\": \"2026-08-04T00:00:00.000000Z\",\n        \"end_at\": \"2026-08-04T00:00:00.000000Z\",\n        \"frozen_at\": \"2026-05-20T10:00:00.000000Z\",\n        \"extended_at\": null,\n        \"paid_at\": \"2026-05-05T15:09:04.000000Z\",\n        \"created_at\": \"2026-05-05T15:09:04.000000Z\",\n        \"updated_at\": \"2026-05-06T12:42:11.000000Z\"\n      }\n    ]\n  }\n}"
                }
              ]
            },
            {
              "name": "Unfreeze a previously frozen contact subscription",
              "request": {
                "method": "POST",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/contacts/:contact/products/:product/unfreeze",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    ":contact",
                    "products",
                    ":product",
                    "unfreeze"
                  ],
                  "variable": [
                    {
                      "key": "contact",
                      "value": "{{contact}}"
                    },
                    {
                      "key": "product",
                      "value": "{{product}}"
                    }
                  ]
                },
                "description": "Unfreeze a previously frozen contact subscription"
              },
              "response": [
                {
                  "name": "Unfreeze the subscription (no body)",
                  "originalRequest": {
                    "method": "POST",
                    "header": [

                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact/products/:product/unfreeze",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact",
                        "products",
                        ":product",
                        "unfreeze"
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        },
                        {
                          "key": "product",
                          "value": "{{product}}"
                        }
                      ]
                    },
                    "description": "Unfreeze a previously frozen contact subscription"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": {\n    \"id\": 299,\n    \"productable_id\": 142,\n    \"productable_type\": \"course\",\n    \"title\": \"JS Foundations\",\n    \"image_url\": \"https://cdn.kwiga.com/preview.jpg\",\n    \"url\": \"https://kwiga.com/courses/js-foundations\",\n    \"is_published\": true,\n    \"aggregated_subscription\": {\n      \"is_active\": false,\n      \"is_paid\": true,\n      \"start_at\": \"2026-06-05T00:00:00.000000Z\",\n      \"end_at\": \"2026-08-04T00:00:00.000000Z\",\n      \"offer_end_at\": null,\n      \"order_end_at\": \"2026-08-04T00:00:00.000000Z\",\n      \"frozen_at\": \"2026-05-20T10:00:00.000000Z\",\n      \"extended_at\": null,\n      \"count_available_days\": 60,\n      \"count_left_days\": 60,\n      \"state\": {\n        \"id\": 4,\n        \"name\": \"Frozen\",\n        \"title\": \"Frozen\"\n      }\n    },\n    \"subscriptions\": [\n      {\n        \"id\": 4775,\n        \"creator_id\": 24457,\n        \"user_id\": 24457,\n        \"product_id\": 299,\n        \"order_id\": 2710,\n        \"offer_id\": 757,\n        \"is_active\": false,\n        \"start_at\": \"2026-06-05T00:00:00.000000Z\",\n        \"order_end_at\": \"2026-08-04T00:00:00.000000Z\",\n        \"end_at\": \"2026-08-04T00:00:00.000000Z\",\n        \"frozen_at\": \"2026-05-20T10:00:00.000000Z\",\n        \"extended_at\": null,\n        \"paid_at\": \"2026-05-05T15:09:04.000000Z\",\n        \"created_at\": \"2026-05-05T15:09:04.000000Z\",\n        \"updated_at\": \"2026-05-06T12:42:11.000000Z\"\n      }\n    ]\n  }\n}"
                }
              ]
            },
            {
              "name": "Extend the contact's subscription on a product by a number of days",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/contacts/:contact/products/:product/extend",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    ":contact",
                    "products",
                    ":product",
                    "extend"
                  ],
                  "variable": [
                    {
                      "key": "contact",
                      "value": "{{contact}}"
                    },
                    {
                      "key": "product",
                      "value": "{{product}}"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"count_extend_days\": 14\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Extend the contact's subscription on a product by a number of days"
              },
              "response": [
                {
                  "name": "Extend access by 14 days",
                  "originalRequest": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact/products/:product/extend",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact",
                        "products",
                        ":product",
                        "extend"
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        },
                        {
                          "key": "product",
                          "value": "{{product}}"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"count_extend_days\": 14\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "description": "Extend the contact's subscription on a product by a number of days"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": {\n    \"id\": 299,\n    \"productable_id\": 142,\n    \"productable_type\": \"course\",\n    \"title\": \"JS Foundations\",\n    \"image_url\": \"https://cdn.kwiga.com/preview.jpg\",\n    \"url\": \"https://kwiga.com/courses/js-foundations\",\n    \"is_published\": true,\n    \"aggregated_subscription\": {\n      \"is_active\": false,\n      \"is_paid\": true,\n      \"start_at\": \"2026-06-05T00:00:00.000000Z\",\n      \"end_at\": \"2026-08-04T00:00:00.000000Z\",\n      \"offer_end_at\": null,\n      \"order_end_at\": \"2026-08-04T00:00:00.000000Z\",\n      \"frozen_at\": \"2026-05-20T10:00:00.000000Z\",\n      \"extended_at\": null,\n      \"count_available_days\": 60,\n      \"count_left_days\": 60,\n      \"state\": {\n        \"id\": 4,\n        \"name\": \"Frozen\",\n        \"title\": \"Frozen\"\n      }\n    },\n    \"subscriptions\": [\n      {\n        \"id\": 4775,\n        \"creator_id\": 24457,\n        \"user_id\": 24457,\n        \"product_id\": 299,\n        \"order_id\": 2710,\n        \"offer_id\": 757,\n        \"is_active\": false,\n        \"start_at\": \"2026-06-05T00:00:00.000000Z\",\n        \"order_end_at\": \"2026-08-04T00:00:00.000000Z\",\n        \"end_at\": \"2026-08-04T00:00:00.000000Z\",\n        \"frozen_at\": \"2026-05-20T10:00:00.000000Z\",\n        \"extended_at\": null,\n        \"paid_at\": \"2026-05-05T15:09:04.000000Z\",\n        \"created_at\": \"2026-05-05T15:09:04.000000Z\",\n        \"updated_at\": \"2026-05-06T12:42:11.000000Z\"\n      }\n    ]\n  }\n}"
                }
              ]
            },
            {
              "name": "Set an explicit end_at date on the contact's subscription",
              "request": {
                "method": "PUT",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/contacts/:contact/products/:product/end-date",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    ":contact",
                    "products",
                    ":product",
                    "end-date"
                  ],
                  "variable": [
                    {
                      "key": "contact",
                      "value": "{{contact}}"
                    },
                    {
                      "key": "product",
                      "value": "{{product}}"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"end_at\": \"2027-01-01 23:59:59\",\n  \"timezone_id\": 1\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Set an explicit end_at date on the contact's subscription"
              },
              "response": [
                {
                  "name": "Set the subscription end to the given date in the chosen timezone",
                  "originalRequest": {
                    "method": "PUT",
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact/products/:product/end-date",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact",
                        "products",
                        ":product",
                        "end-date"
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        },
                        {
                          "key": "product",
                          "value": "{{product}}"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"end_at\": \"2027-01-01 23:59:59\",\n  \"timezone_id\": 1\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "description": "Set an explicit end_at date on the contact's subscription"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": {\n    \"id\": 299,\n    \"productable_id\": 142,\n    \"productable_type\": \"course\",\n    \"title\": \"JS Foundations\",\n    \"image_url\": \"https://cdn.kwiga.com/preview.jpg\",\n    \"url\": \"https://kwiga.com/courses/js-foundations\",\n    \"is_published\": true,\n    \"aggregated_subscription\": {\n      \"is_active\": false,\n      \"is_paid\": true,\n      \"start_at\": \"2026-06-05T00:00:00.000000Z\",\n      \"end_at\": \"2026-08-04T00:00:00.000000Z\",\n      \"offer_end_at\": null,\n      \"order_end_at\": \"2026-08-04T00:00:00.000000Z\",\n      \"frozen_at\": \"2026-05-20T10:00:00.000000Z\",\n      \"extended_at\": null,\n      \"count_available_days\": 60,\n      \"count_left_days\": 60,\n      \"state\": {\n        \"id\": 4,\n        \"name\": \"Frozen\",\n        \"title\": \"Frozen\"\n      }\n    },\n    \"subscriptions\": [\n      {\n        \"id\": 4775,\n        \"creator_id\": 24457,\n        \"user_id\": 24457,\n        \"product_id\": 299,\n        \"order_id\": 2710,\n        \"offer_id\": 757,\n        \"is_active\": false,\n        \"start_at\": \"2026-06-05T00:00:00.000000Z\",\n        \"order_end_at\": \"2026-08-04T00:00:00.000000Z\",\n        \"end_at\": \"2026-08-04T00:00:00.000000Z\",\n        \"frozen_at\": \"2026-05-20T10:00:00.000000Z\",\n        \"extended_at\": null,\n        \"paid_at\": \"2026-05-05T15:09:04.000000Z\",\n        \"created_at\": \"2026-05-05T15:09:04.000000Z\",\n        \"updated_at\": \"2026-05-06T12:42:11.000000Z\"\n      }\n    ]\n  }\n}"
                }
              ]
            }
          ]
        },
        {
          "name": "Rewards (points)",
          "item": [
            {
              "name": "List the points (rewards) journal for a contact",
              "request": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/contacts/:contact/rewards",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    ":contact",
                    "rewards"
                  ],
                  "variable": [
                    {
                      "key": "contact",
                      "value": "{{contact}}"
                    }
                  ]
                },
                "description": "List the points (rewards) journal for a contact"
              },
              "response": [
                {
                  "name": "List rewards (default ordering)",
                  "originalRequest": {
                    "method": "GET",
                    "header": [

                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact/rewards",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact",
                        "rewards"
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        }
                      ]
                    },
                    "description": "List the points (rewards) journal for a contact"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": [\n    {\n      \"id\": 9821,\n      \"points\": 50,\n      \"accrual_type\": {\n        \"id\": \"accrued\",\n        \"slug\": \"Plus\",\n        \"title\": \"Accrued\"\n      },\n      \"reason_type\": {\n        \"id\": 6,\n        \"slug\": \"Manual\",\n        \"title\": \"Manual\"\n      },\n      \"event\": null,\n      \"event_name\": null,\n      \"eventable_type\": null,\n      \"eventable_id\": null,\n      \"event_comment\": null,\n      \"manual_comment\": \"Bonus for active chat participation\",\n      \"is_visible_to_student\": true,\n      \"message\": \"Manual points accrual: Bonus for active chat participation\",\n      \"product\": null,\n      \"creator\": {\n        \"id\": 17,\n        \"name\": \"Alice Curator\",\n        \"email\": \"alice@kwiga.com\"\n      },\n      \"created_at\": \"2026-05-24T11:14:51.000000Z\"\n    },\n    {\n      \"id\": 9820,\n      \"points\": 25,\n      \"accrual_type\": {\n        \"id\": \"accrued\",\n        \"slug\": \"Plus\",\n        \"title\": \"Accrued\"\n      },\n      \"reason_type\": {\n        \"id\": 1,\n        \"slug\": \"QuizPassed\",\n        \"title\": \"Quiz passed\"\n      },\n      \"event\": \"quiz.passed\",\n      \"event_name\": \"Quiz passed\",\n      \"eventable_type\": \"quiz_attempt\",\n      \"eventable_id\": 4821,\n      \"event_comment\": null,\n      \"manual_comment\": null,\n      \"is_visible_to_student\": null,\n      \"message\": \"Quiz Module 3 final test in lesson Closures & scope -> Attempt\",\n      \"product\": {\n        \"id\": 431,\n        \"productable_type\": \"course\",\n        \"productable_id\": 226,\n        \"name\": \"JS Foundations\",\n        \"url\": \"https://lm4.kwiga.com/courses/js-foundations\"\n      },\n      \"creator\": null,\n      \"created_at\": \"2026-05-23T11:14:51.000000Z\"\n    },\n    {\n      \"id\": 9810,\n      \"points\": -30,\n      \"accrual_type\": {\n        \"id\": \"deducted\",\n        \"slug\": \"Minus\",\n        \"title\": \"Deducted\"\n      },\n      \"reason_type\": {\n        \"id\": 6,\n        \"slug\": \"Manual\",\n        \"title\": \"Manual\"\n      },\n      \"event\": null,\n      \"event_name\": null,\n      \"eventable_type\": null,\n      \"eventable_id\": null,\n      \"event_comment\": null,\n      \"manual_comment\": null,\n      \"is_visible_to_student\": null,\n      \"message\": \"Manual points accrual\",\n      \"product\": null,\n      \"creator\": {\n        \"id\": 17,\n        \"name\": \"Alice Curator\",\n        \"email\": \"alice@kwiga.com\"\n      },\n      \"created_at\": \"2026-05-22T09:00:00.000000Z\"\n    }\n  ],\n  \"links\": {\n    \"first\": \"https://api.kwiga.com/contacts/142/rewards?page=1\",\n    \"last\": \"https://api.kwiga.com/contacts/142/rewards?page=1\",\n    \"prev\": null,\n    \"next\": null\n  },\n  \"meta\": {\n    \"current_page\": 1,\n    \"from\": 1,\n    \"last_page\": 1,\n    \"path\": \"https://api.kwiga.com/contacts/142/rewards\",\n    \"per_page\": 15,\n    \"to\": 3,\n    \"total\": 3\n  },\n  \"sum_points\": 45,\n  \"sum_accrued_points\": 75,\n  \"sum_deducted_points\": -30\n}"
                },
                {
                  "name": "Only accruals from quiz-passed and manual reasons, scoped to two products",
                  "originalRequest": {
                    "method": "GET",
                    "header": [

                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact/rewards?filters[accrual_type]=accrued&filters[reason_types]=1,6&filters[product_ids]=10,11&per_page=50",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact",
                        "rewards"
                      ],
                      "query": [
                        {
                          "key": "filters[accrual_type]",
                          "value": "accrued"
                        },
                        {
                          "key": "filters[reason_types]",
                          "value": "1,6"
                        },
                        {
                          "key": "filters[product_ids]",
                          "value": "10,11"
                        },
                        {
                          "key": "per_page",
                          "value": "50"
                        }
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        }
                      ]
                    },
                    "description": "List the points (rewards) journal for a contact"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": [\n    {\n      \"id\": 9821,\n      \"points\": 50,\n      \"accrual_type\": {\n        \"id\": \"accrued\",\n        \"slug\": \"Plus\",\n        \"title\": \"Accrued\"\n      },\n      \"reason_type\": {\n        \"id\": 6,\n        \"slug\": \"Manual\",\n        \"title\": \"Manual\"\n      },\n      \"event\": null,\n      \"event_name\": null,\n      \"eventable_type\": null,\n      \"eventable_id\": null,\n      \"event_comment\": null,\n      \"manual_comment\": \"Bonus for active chat participation\",\n      \"is_visible_to_student\": true,\n      \"message\": \"Manual points accrual: Bonus for active chat participation\",\n      \"product\": null,\n      \"creator\": {\n        \"id\": 17,\n        \"name\": \"Alice Curator\",\n        \"email\": \"alice@kwiga.com\"\n      },\n      \"created_at\": \"2026-05-24T11:14:51.000000Z\"\n    },\n    {\n      \"id\": 9820,\n      \"points\": 25,\n      \"accrual_type\": {\n        \"id\": \"accrued\",\n        \"slug\": \"Plus\",\n        \"title\": \"Accrued\"\n      },\n      \"reason_type\": {\n        \"id\": 1,\n        \"slug\": \"QuizPassed\",\n        \"title\": \"Quiz passed\"\n      },\n      \"event\": \"quiz.passed\",\n      \"event_name\": \"Quiz passed\",\n      \"eventable_type\": \"quiz_attempt\",\n      \"eventable_id\": 4821,\n      \"event_comment\": null,\n      \"manual_comment\": null,\n      \"is_visible_to_student\": null,\n      \"message\": \"Quiz Module 3 final test in lesson Closures & scope -> Attempt\",\n      \"product\": {\n        \"id\": 431,\n        \"productable_type\": \"course\",\n        \"productable_id\": 226,\n        \"name\": \"JS Foundations\",\n        \"url\": \"https://lm4.kwiga.com/courses/js-foundations\"\n      },\n      \"creator\": null,\n      \"created_at\": \"2026-05-23T11:14:51.000000Z\"\n    },\n    {\n      \"id\": 9810,\n      \"points\": -30,\n      \"accrual_type\": {\n        \"id\": \"deducted\",\n        \"slug\": \"Minus\",\n        \"title\": \"Deducted\"\n      },\n      \"reason_type\": {\n        \"id\": 6,\n        \"slug\": \"Manual\",\n        \"title\": \"Manual\"\n      },\n      \"event\": null,\n      \"event_name\": null,\n      \"eventable_type\": null,\n      \"eventable_id\": null,\n      \"event_comment\": null,\n      \"manual_comment\": null,\n      \"is_visible_to_student\": null,\n      \"message\": \"Manual points accrual\",\n      \"product\": null,\n      \"creator\": {\n        \"id\": 17,\n        \"name\": \"Alice Curator\",\n        \"email\": \"alice@kwiga.com\"\n      },\n      \"created_at\": \"2026-05-22T09:00:00.000000Z\"\n    }\n  ],\n  \"links\": {\n    \"first\": \"https://api.kwiga.com/contacts/142/rewards?page=1\",\n    \"last\": \"https://api.kwiga.com/contacts/142/rewards?page=1\",\n    \"prev\": null,\n    \"next\": null\n  },\n  \"meta\": {\n    \"current_page\": 1,\n    \"from\": 1,\n    \"last_page\": 1,\n    \"path\": \"https://api.kwiga.com/contacts/142/rewards\",\n    \"per_page\": 15,\n    \"to\": 3,\n    \"total\": 3\n  },\n  \"sum_points\": 45,\n  \"sum_accrued_points\": 75,\n  \"sum_deducted_points\": -30\n}"
                }
              ]
            },
            {
              "name": "Add a manual reward (positive = accrual, negative = deduction) for a contact",
              "request": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/contacts/:contact/rewards",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    ":contact",
                    "rewards"
                  ],
                  "variable": [
                    {
                      "key": "contact",
                      "value": "{{contact}}"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"points\": 50\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Add a manual reward (positive = accrual, negative = deduction) for a contact"
              },
              "response": [
                {
                  "name": "Accrue 50 points for finishing a milestone, unbound from any product",
                  "originalRequest": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact/rewards",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact",
                        "rewards"
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"points\": 50\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "description": "Add a manual reward (positive = accrual, negative = deduction) for a contact"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": {\n    \"id\": 9822,\n    \"points\": 50,\n    \"accrual_type\": {\n      \"id\": \"accrued\",\n      \"slug\": \"Plus\",\n      \"title\": \"Accrued\"\n    },\n    \"reason_type\": {\n      \"id\": 6,\n      \"slug\": \"Manual\",\n      \"title\": \"Manual\"\n    },\n    \"event\": null,\n    \"event_name\": null,\n    \"eventable_type\": null,\n    \"eventable_id\": null,\n    \"event_comment\": null,\n    \"manual_comment\": \"Bonus for active chat participation\",\n    \"is_visible_to_student\": true,\n    \"message\": \"Manual points accrual: Bonus for active chat participation\",\n    \"product\": null,\n    \"creator\": {\n      \"id\": 17,\n      \"name\": \"Alice Curator\",\n      \"email\": \"alice@kwiga.com\"\n    },\n    \"created_at\": \"2026-05-25T14:30:00.000000Z\"\n  }\n}"
                },
                {
                  "name": "Accrue 100 points scoped to product id 10",
                  "originalRequest": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact/rewards",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact",
                        "rewards"
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"points\": 100,\n  \"product_id\": 10\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "description": "Add a manual reward (positive = accrual, negative = deduction) for a contact"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": {\n    \"id\": 9822,\n    \"points\": 50,\n    \"accrual_type\": {\n      \"id\": \"accrued\",\n      \"slug\": \"Plus\",\n      \"title\": \"Accrued\"\n    },\n    \"reason_type\": {\n      \"id\": 6,\n      \"slug\": \"Manual\",\n      \"title\": \"Manual\"\n    },\n    \"event\": null,\n    \"event_name\": null,\n    \"eventable_type\": null,\n    \"eventable_id\": null,\n    \"event_comment\": null,\n    \"manual_comment\": \"Bonus for active chat participation\",\n    \"is_visible_to_student\": true,\n    \"message\": \"Manual points accrual: Bonus for active chat participation\",\n    \"product\": null,\n    \"creator\": {\n      \"id\": 17,\n      \"name\": \"Alice Curator\",\n      \"email\": \"alice@kwiga.com\"\n    },\n    \"created_at\": \"2026-05-25T14:30:00.000000Z\"\n  }\n}"
                },
                {
                  "name": "Accrue 50 points with a curator comment that the student also sees in their journal",
                  "originalRequest": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact/rewards",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact",
                        "rewards"
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"points\": 50,\n  \"comment\": \"Bonus for active chat participation\",\n  \"is_visible_to_student\": true\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "description": "Add a manual reward (positive = accrual, negative = deduction) for a contact"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": {\n    \"id\": 9822,\n    \"points\": 50,\n    \"accrual_type\": {\n      \"id\": \"accrued\",\n      \"slug\": \"Plus\",\n      \"title\": \"Accrued\"\n    },\n    \"reason_type\": {\n      \"id\": 6,\n      \"slug\": \"Manual\",\n      \"title\": \"Manual\"\n    },\n    \"event\": null,\n    \"event_name\": null,\n    \"eventable_type\": null,\n    \"eventable_id\": null,\n    \"event_comment\": null,\n    \"manual_comment\": \"Bonus for active chat participation\",\n    \"is_visible_to_student\": true,\n    \"message\": \"Manual points accrual: Bonus for active chat participation\",\n    \"product\": null,\n    \"creator\": {\n      \"id\": 17,\n      \"name\": \"Alice Curator\",\n      \"email\": \"alice@kwiga.com\"\n    },\n    \"created_at\": \"2026-05-25T14:30:00.000000Z\"\n  }\n}"
                },
                {
                  "name": "Safely retry the same accrual — passing Idempotency-Key collapses replays to a single FlowReward",
                  "originalRequest": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      },
                      {
                        "key": "Idempotency-Key",
                        "value": "reward-for-quiz-attempt-4821"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact/rewards",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact",
                        "rewards"
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"points\": 25\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "description": "Add a manual reward (positive = accrual, negative = deduction) for a contact"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": {\n    \"id\": 9822,\n    \"points\": 50,\n    \"accrual_type\": {\n      \"id\": \"accrued\",\n      \"slug\": \"Plus\",\n      \"title\": \"Accrued\"\n    },\n    \"reason_type\": {\n      \"id\": 6,\n      \"slug\": \"Manual\",\n      \"title\": \"Manual\"\n    },\n    \"event\": null,\n    \"event_name\": null,\n    \"eventable_type\": null,\n    \"eventable_id\": null,\n    \"event_comment\": null,\n    \"manual_comment\": \"Bonus for active chat participation\",\n    \"is_visible_to_student\": true,\n    \"message\": \"Manual points accrual: Bonus for active chat participation\",\n    \"product\": null,\n    \"creator\": {\n      \"id\": 17,\n      \"name\": \"Alice Curator\",\n      \"email\": \"alice@kwiga.com\"\n    },\n    \"created_at\": \"2026-05-25T14:30:00.000000Z\"\n  }\n}"
                },
                {
                  "name": "Deduct 30 points",
                  "originalRequest": {
                    "method": "POST",
                    "header": [
                      {
                        "key": "Content-Type",
                        "value": "application/json"
                      }
                    ],
                    "url": {
                      "raw": "{{base_url}}/contacts/:contact/rewards",
                      "host": [
                        "{{base_url}}"
                      ],
                      "path": [
                        "contacts",
                        ":contact",
                        "rewards"
                      ],
                      "variable": [
                        {
                          "key": "contact",
                          "value": "{{contact}}"
                        }
                      ]
                    },
                    "body": {
                      "mode": "raw",
                      "raw": "{\n  \"points\": -30\n}",
                      "options": {
                        "raw": {
                          "language": "json"
                        }
                      }
                    },
                    "description": "Add a manual reward (positive = accrual, negative = deduction) for a contact"
                  },
                  "status": "OK",
                  "code": 200,
                  "_postman_previewlanguage": "json",
                  "header": [
                    {
                      "key": "Content-Type",
                      "value": "application/json"
                    }
                  ],
                  "body": "{\n  \"data\": {\n    \"id\": 9822,\n    \"points\": 50,\n    \"accrual_type\": {\n      \"id\": \"accrued\",\n      \"slug\": \"Plus\",\n      \"title\": \"Accrued\"\n    },\n    \"reason_type\": {\n      \"id\": 6,\n      \"slug\": \"Manual\",\n      \"title\": \"Manual\"\n    },\n    \"event\": null,\n    \"event_name\": null,\n    \"eventable_type\": null,\n    \"eventable_id\": null,\n    \"event_comment\": null,\n    \"manual_comment\": \"Bonus for active chat participation\",\n    \"is_visible_to_student\": true,\n    \"message\": \"Manual points accrual: Bonus for active chat participation\",\n    \"product\": null,\n    \"creator\": {\n      \"id\": 17,\n      \"name\": \"Alice Curator\",\n      \"email\": \"alice@kwiga.com\"\n    },\n    \"created_at\": \"2026-05-25T14:30:00.000000Z\"\n  }\n}"
                }
              ]
            }
          ]
        },
        {
          "name": "Query contacts (POST alias for GET /contacts)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/contacts/query",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "contacts",
                "query"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"filters\": {\n    \"emails\": [\n      \"alice@example.com\",\n      \"bob@example.com\"\n    ],\n    \"contact_ids\": [\n      1,\n      2,\n      3\n    ]\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Query contacts (POST alias for GET /contacts)"
          },
          "response": [
            {
              "name": "Query contacts filtered by emails and tags",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/contacts/query",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "contacts",
                    "query"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"emails\": [\n      \"alice@example.com\",\n      \"bob@example.com\"\n    ],\n    \"contact_ids\": [\n      1,\n      2,\n      3\n    ]\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Query contacts (POST alias for GET /contacts)"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": ""
            }
          ]
        }
      ]
    },
    {
      "name": "Coupons",
      "item": [
        {
          "name": "Get coupons list",
          "request": {
            "method": "GET",
            "header": [

            ],
            "url": {
              "raw": "{{base_url}}/coupons",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "coupons"
              ]
            },
            "description": "Get coupons list"
          },
          "response": [
            {
              "name": "Get coupons list",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/coupons",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "coupons"
                  ]
                },
                "description": "Get coupons list"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n    \"data\": [\n        {\n            \"id\": 3,\n            \"code\": \"KwigaSMVT-MD\",\n            \"reward\": 30,\n            \"is_fixed\": true,\n            \"is_disposable\": false,\n            \"used_amount\": 0,\n            \"total_uses\": 10,\n            \"total_uses_per_user\": 1,\n            \"user\": {\n                \"id\": 3,\n                \"avatar_url\": \"https://someurl.com\",\n                \"hash\": \"EL9p2ycy4Ypga715\",\n                \"name\": \"Test User\",\n                \"email\": \"test@example.com\",\n                \"tag_name\": \"TestUser\"\n            },\n            \"created_at\": \"2022-04-28T09:46:11.000000Z\",\n            \"updated_at\": \"2022-04-28T09:46:11.000000Z\",\n            \"deleted_at\": null\n        }\n    ]\n}"
            },
            {
              "name": "Get coupons list with date filters",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/coupons?filters[date_from]=2022-04-15&filters[date_to]=2022-04-27",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "coupons"
                  ],
                  "query": [
                    {
                      "key": "filters[date_from]",
                      "value": "2022-04-15"
                    },
                    {
                      "key": "filters[date_to]",
                      "value": "2022-04-27"
                    }
                  ]
                },
                "description": "Get coupons list"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n    \"data\": [\n        {\n            \"id\": 3,\n            \"code\": \"KwigaSMVT-MD\",\n            \"reward\": 30,\n            \"is_fixed\": true,\n            \"is_disposable\": false,\n            \"used_amount\": 0,\n            \"total_uses\": 10,\n            \"total_uses_per_user\": 1,\n            \"user\": {\n                \"id\": 3,\n                \"avatar_url\": \"https://someurl.com\",\n                \"hash\": \"EL9p2ycy4Ypga715\",\n                \"name\": \"Test User\",\n                \"email\": \"test@example.com\",\n                \"tag_name\": \"TestUser\"\n            },\n            \"created_at\": \"2022-04-28T09:46:11.000000Z\",\n            \"updated_at\": \"2022-04-28T09:46:11.000000Z\",\n            \"deleted_at\": null\n        }\n    ]\n}"
            }
          ]
        },
        {
          "name": "Get coupon by ID",
          "request": {
            "method": "GET",
            "header": [

            ],
            "url": {
              "raw": "{{base_url}}/coupons/:coupon",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "coupons",
                ":coupon"
              ],
              "variable": [
                {
                  "key": "coupon",
                  "value": "{{coupon}}"
                }
              ]
            },
            "description": "Get coupon by ID"
          },
          "response": [
            {
              "name": "Get coupon by ID",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/coupons/:coupon",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "coupons",
                    ":coupon"
                  ],
                  "variable": [
                    {
                      "key": "coupon",
                      "value": "{{coupon}}"
                    }
                  ]
                },
                "description": "Get coupon by ID"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"code\": \"KwigaSMVT-MD\",\n        \"reward\": 30,\n        \"is_fixed\": true,\n        \"is_disposable\": false,\n        \"used_amount\": 0,\n        \"total_uses\": 10,\n        \"total_uses_per_user\": 1,\n        \"created_at\": \"2022-04-28T09:46:11.000000Z\",\n        \"updated_at\": \"2022-04-28T09:46:11.000000Z\",\n        \"deleted_at\": null\n    }\n}"
            }
          ]
        },
        {
          "name": "Create coupon",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/coupons",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "coupons"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"MY-COUPON\",\n  \"reward\": 0,\n  \"type_discount[id]\": \"discount_with_percent\",\n  \"expires_at\": null,\n  \"timezone[id]\": 375,\n  \"total_uses\": 0,\n  \"total_uses_per_user\": 0\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Create coupon"
          },
          "response": [
            {
              "name": "Create coupon",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/coupons",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "coupons"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"code\": \"MY-COUPON\",\n  \"reward\": 0,\n  \"type_discount[id]\": \"discount_with_percent\",\n  \"expires_at\": null,\n  \"timezone[id]\": 375,\n  \"total_uses\": 0,\n  \"total_uses_per_user\": 0\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Create coupon"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n    \"data\": {\n        \"id\": 8,\n        \"code\": \"MY-COUPON\",\n        \"reward\": 100,\n        \"type_discount\": {\n            \"id\": \"discount_with_percent\",\n            \"name\": \"In % of order/offer value\"\n        },\n        \"type_date_expired\": {\n            \"id\": \"indefinite_action\",\n            \"name\": \"Never expires\"\n        },\n        \"type_total_count_used\": {\n            \"id\": \"certain_amount\",\n            \"name\": \"A certain amount\"\n        },\n        \"type_used_contact_lists\": {\n            \"id\": \"all_users\",\n            \"name\": \"All users\"\n        },\n        \"is_fixed\": false,\n        \"is_active\": true,\n        \"used_amount\": 0,\n        \"has_infinite_used\": true,\n        \"has_access_contact_lists\": false,\n        \"total_uses\": 0,\n        \"total_uses_per_user\": 1,\n        \"contact_lists\": [],\n        \"type\": {\n            \"id\": 4,\n            \"title\": \"Offers\"\n        },\n        \"expires_at\": null,\n        \"expires_at_utc\": null,\n        \"timezone_id\": null,\n        \"currency_id\": null,\n        \"currency\": null,\n        \"created_at\": \"2024-01-09T16:17:55.000000Z\",\n        \"updated_at\": \"2024-01-09T16:17:55.000000Z\",\n        \"deleted_at\": null\n    }\n}"
            }
          ]
        },
        {
          "name": "Check coupon validity",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/coupons/check",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "coupons",
                "check"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"VAJ6-EA\",\n  \"price\": 65\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Check coupon validity"
          },
          "response": [
            {
              "name": "Check coupon validity",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/coupons/check",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "coupons",
                    "check"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"code\": \"VAJ6-EA\",\n  \"price\": 65\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Check coupon validity"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\r\n  \"data\": {\r\n    \"can_use\": true,\r\n    \"discount\": 6.5\r\n  }\r\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Courses",
      "item": [
        {
          "name": "Get courses list",
          "request": {
            "method": "GET",
            "header": [

            ],
            "url": {
              "raw": "{{base_url}}/courses",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "courses"
              ]
            },
            "description": "Get courses list"
          },
          "response": [
            {
              "name": "Get courses list",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/courses",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "courses"
                  ]
                },
                "description": "Get courses list"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\r\n  \"data\": [\r\n    {\r\n      \"id\": 226,\r\n      \"product_id\": 431,\r\n      \"type\": {\r\n        \"id\": 1,\r\n        \"name\": \"Course\",\r\n        \"type\": \"course\"\r\n      },\r\n      \"title\": \"Test черновик квизов\",\r\n      \"slug\": \"test-chernovik-kvizov\",\r\n      \"preview\": {\r\n        \"id\": 3140,\r\n        \"uuid\": \"bdfe1347-574f-4829-a745-09ba2176cc2a\",\r\n        \"name\": \"image_13.jpeg\",\r\n        \"original_name\": \"image_13.jpeg\",\r\n        \"url\": \"https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13.jpeg\",\r\n        \"thumbnails\": {\r\n          \"xs\": \"https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13_thumb_150.jpeg\",\r\n          \"small\": \"https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13_thumb_500.jpeg\",\r\n          \"medium\": \"https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13.jpeg\",\r\n          \"large\": \"https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13.jpeg\",\r\n          \"default\": \"https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13.jpeg\"\r\n        },\r\n        \"extension\": \"jpeg\",\r\n        \"type_id\": 2,\r\n        \"mime_type\": \"image/jpeg\"\r\n      },\r\n      \"url\": \"http://test.local/courses/test-chernovik-kvizov\",\r\n      \"status\": {\r\n        \"id\": 3,\r\n        \"name\": \"Published\"\r\n      }\r\n    }\r\n  ],\r\n  \"links\": {\r\n    \"first\": \"http://api.kwiga.local/courses?page=1\",\r\n    \"last\": \"http://api.kwiga.local/courses?page=1\",\r\n    \"prev\": null,\r\n    \"next\": null\r\n  },\r\n  \"meta\": {\r\n    \"current_page\": 1,\r\n    \"from\": 1,\r\n    \"last_page\": 1,\r\n    \"links\": [\r\n      {\r\n        \"url\": null,\r\n        \"label\": \"&laquo; Previous\",\r\n        \"active\": false\r\n      },\r\n      {\r\n        \"url\": \"http://api.kwiga.local/courses?page=1\",\r\n        \"label\": \"1\",\r\n        \"active\": true\r\n      },\r\n      {\r\n        \"url\": null,\r\n        \"label\": \"Next &raquo;\",\r\n        \"active\": false\r\n      }\r\n    ],\r\n    \"path\": \"http://api.kwiga.local/courses\",\r\n    \"per_page\": 15,\r\n    \"to\": 1,\r\n    \"total\": 1\r\n  }\r\n}"
            },
            {
              "name": "Get courses list with pagination and includes",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/courses?with[]=offers&with[]=description&with[]=program&per_page=15&page=1",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "courses"
                  ],
                  "query": [
                    {
                      "key": "with[]",
                      "value": "offers"
                    },
                    {
                      "key": "with[]",
                      "value": "description"
                    },
                    {
                      "key": "with[]",
                      "value": "program"
                    },
                    {
                      "key": "per_page",
                      "value": "15"
                    },
                    {
                      "key": "page",
                      "value": "1"
                    }
                  ]
                },
                "description": "Get courses list"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\r\n  \"data\": [\r\n    {\r\n      \"id\": 226,\r\n      \"product_id\": 431,\r\n      \"type\": {\r\n        \"id\": 1,\r\n        \"name\": \"Course\",\r\n        \"type\": \"course\"\r\n      },\r\n      \"title\": \"Test черновик квизов\",\r\n      \"slug\": \"test-chernovik-kvizov\",\r\n      \"preview\": {\r\n        \"id\": 3140,\r\n        \"uuid\": \"bdfe1347-574f-4829-a745-09ba2176cc2a\",\r\n        \"name\": \"image_13.jpeg\",\r\n        \"original_name\": \"image_13.jpeg\",\r\n        \"url\": \"https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13.jpeg\",\r\n        \"thumbnails\": {\r\n          \"xs\": \"https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13_thumb_150.jpeg\",\r\n          \"small\": \"https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13_thumb_500.jpeg\",\r\n          \"medium\": \"https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13.jpeg\",\r\n          \"large\": \"https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13.jpeg\",\r\n          \"default\": \"https://cdn57098163.ahacdn.me/local/cabinet-1/rcIJuNkWmpCQ/image_13.jpeg\"\r\n        },\r\n        \"extension\": \"jpeg\",\r\n        \"type_id\": 2,\r\n        \"mime_type\": \"image/jpeg\"\r\n      },\r\n      \"url\": \"http://test.local/courses/test-chernovik-kvizov\",\r\n      \"status\": {\r\n        \"id\": 3,\r\n        \"name\": \"Published\"\r\n      }\r\n    }\r\n  ],\r\n  \"links\": {\r\n    \"first\": \"http://api.kwiga.local/courses?page=1\",\r\n    \"last\": \"http://api.kwiga.local/courses?page=1\",\r\n    \"prev\": null,\r\n    \"next\": null\r\n  },\r\n  \"meta\": {\r\n    \"current_page\": 1,\r\n    \"from\": 1,\r\n    \"last_page\": 1,\r\n    \"links\": [\r\n      {\r\n        \"url\": null,\r\n        \"label\": \"&laquo; Previous\",\r\n        \"active\": false\r\n      },\r\n      {\r\n        \"url\": \"http://api.kwiga.local/courses?page=1\",\r\n        \"label\": \"1\",\r\n        \"active\": true\r\n      },\r\n      {\r\n        \"url\": null,\r\n        \"label\": \"Next &raquo;\",\r\n        \"active\": false\r\n      }\r\n    ],\r\n    \"path\": \"http://api.kwiga.local/courses\",\r\n    \"per_page\": 15,\r\n    \"to\": 1,\r\n    \"total\": 1\r\n  }\r\n}"
            }
          ]
        },
        {
          "name": "Get course users",
          "request": {
            "method": "GET",
            "header": [

            ],
            "url": {
              "raw": "{{base_url}}/courses/:course/users",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "courses",
                ":course",
                "users"
              ],
              "variable": [
                {
                  "key": "course",
                  "value": "{{course}}"
                }
              ]
            },
            "description": "Get course users"
          },
          "response": [
            {
              "name": "Get course users",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/courses/:course/users",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "courses",
                    ":course",
                    "users"
                  ],
                  "variable": [
                    {
                      "key": "course",
                      "value": "{{course}}"
                    }
                  ]
                },
                "description": "Get course users"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\r\n    \"data\": [\r\n        {\r\n            \"user\": {\r\n                \"id\": 3,\r\n                \"name\": \"Admin Кабинет\",\r\n                \"email\": \"test@test.com\"\r\n            },\r\n            \"contact\": {\r\n                \"id\": 1,\r\n                \"user_id\": 3,\r\n                \"email\": \"test@test.com\",\r\n                \"first_name\": \"test\",\r\n                \"last_name\": \"admin cabinet\",\r\n                \"phone\": \"979\",\r\n                \"created_at\": \"2023-05-26T09:47:20.000000Z\",\r\n                \"last_activity_at\": null\r\n            },\r\n            \"course_points\": 0,\r\n            \"course_progress\": {\r\n                \"course_id\": 20,\r\n                \"course_url\": \"http://test.local/courses/Pm8CEofJ\",\r\n                \"title\": \"Dripping\",\r\n                \"lessons_count\": 9,\r\n                \"lessons_count_viewed\": 0,\r\n                \"lessons_viewed_percentage\": 0,\r\n                \"lessons_count_completed\": 0,\r\n                \"lessons_completion_percentage\": 0,\r\n                \"quizzes_count\": 0,\r\n                \"quizzes_count_completed\": 0,\r\n                \"quizzes_completion_percentage\": 0,\r\n                \"scores_max\": 0,\r\n                \"quizzes_scores\": 0,\r\n                \"product_scores\": 0,\r\n                \"scores\": 0,\r\n                \"is_completed\": false,\r\n                \"completed_at\": null,\r\n                \"current_lesson\": {\r\n                    \"id\": 48,\r\n                    \"course_id\": 20,\r\n                    \"type_id\": 1,\r\n                    \"status_id\": 4,\r\n                    \"number\": 6,\r\n                    \"title\": \"2\",\r\n                    \"slug\": \"2\",\r\n                    \"url\": \"http://test.local/courses/Pm8CEofJ/2\",\r\n                    \"quizzes\": [],\r\n                    \"module\": {\r\n                        \"id\": 7,\r\n                        \"course_id\": 20,\r\n                        \"number\": 1,\r\n                        \"title\": \"Module title\"\r\n                    }\r\n                },\r\n                \"next_lesson\": {\r\n                    \"id\": 46,\r\n                    \"course_id\": 20,\r\n                    \"type_id\": 1,\r\n                    \"status_id\": 4,\r\n                    \"number\": 1,\r\n                    \"title\": \"3\",\r\n                    \"slug\": \"3\",\r\n                    \"url\": \"http://test.local/courses/Pm8CEofJ/3\",\r\n                    \"module\": {\r\n                        \"id\": 7,\r\n                        \"course_id\": 20,\r\n                        \"number\": 1,\r\n                        \"title\": \"Module title\"\r\n                    }\r\n                },\r\n                \"last_activity_at\": null,\r\n                \"is_checkpoints_skipped\": false,\r\n                \"checkpoints\": [],\r\n                \"is_current_dripping_date_skipped\": false,\r\n                \"is_next_dripping_date_skipped\": false,\r\n                \"current_dripping_date\": null,\r\n                \"next_dripping_date\": null\r\n            },\r\n            \"lessons_available_count\": 9,\r\n            \"is_full_access\": true,\r\n            \"subscription\": {\r\n                \"is_active\": true,\r\n                \"is_paid\": true,\r\n                \"start_at\": \"2024-04-23T13:45:02.000000Z\",\r\n                \"end_at\": null,\r\n                \"offer_end_at\": null,\r\n                \"order_end_at\": null,\r\n                \"count_available_days\": 661,\r\n                \"count_left_days\": null,\r\n                \"state\": {\r\n                    \"id\": 2,\r\n                    \"name\": \"Open\",\r\n                    \"title\": \"Open\"\r\n                }\r\n            }\r\n        }\r\n    ],\r\n    \"links\": {\r\n        \"first\": \"http://api.kwiga.local/courses/20/users?page=1\",\r\n        \"last\": \"http://api.kwiga.local/courses/20/users?page=1\",\r\n        \"prev\": null,\r\n        \"next\": null\r\n    },\r\n    \"meta\": {\r\n        \"current_page\": 1,\r\n        \"from\": 1,\r\n        \"last_page\": 1,\r\n        \"links\": [\r\n            {\r\n                \"url\": null,\r\n                \"label\": \"&laquo; Previous\",\r\n                \"active\": false\r\n            },\r\n            {\r\n                \"url\": \"http://api.kwiga.local/courses/20/users?page=1\",\r\n                \"label\": \"1\",\r\n                \"active\": true\r\n            },\r\n            {\r\n                \"url\": null,\r\n                \"label\": \"Next &raquo;\",\r\n                \"active\": false\r\n            }\r\n        ],\r\n        \"path\": \"http://api.kwiga.local/courses/20/users\",\r\n        \"per_page\": 15,\r\n        \"to\": 1,\r\n        \"total\": 1\r\n    }\r\n}"
            },
            {
              "name": "Get course users with filters",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/courses/:course/users?progress_general_from=50&progress_general_to=100&per_page=20",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "courses",
                    ":course",
                    "users"
                  ],
                  "query": [
                    {
                      "key": "progress_general_from",
                      "value": "50"
                    },
                    {
                      "key": "progress_general_to",
                      "value": "100"
                    },
                    {
                      "key": "per_page",
                      "value": "20"
                    }
                  ],
                  "variable": [
                    {
                      "key": "course",
                      "value": "{{course}}"
                    }
                  ]
                },
                "description": "Get course users"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\r\n    \"data\": [\r\n        {\r\n            \"user\": {\r\n                \"id\": 3,\r\n                \"name\": \"Admin Кабинет\",\r\n                \"email\": \"test@test.com\"\r\n            },\r\n            \"contact\": {\r\n                \"id\": 1,\r\n                \"user_id\": 3,\r\n                \"email\": \"test@test.com\",\r\n                \"first_name\": \"test\",\r\n                \"last_name\": \"admin cabinet\",\r\n                \"phone\": \"979\",\r\n                \"created_at\": \"2023-05-26T09:47:20.000000Z\",\r\n                \"last_activity_at\": null\r\n            },\r\n            \"course_points\": 0,\r\n            \"course_progress\": {\r\n                \"course_id\": 20,\r\n                \"course_url\": \"http://test.local/courses/Pm8CEofJ\",\r\n                \"title\": \"Dripping\",\r\n                \"lessons_count\": 9,\r\n                \"lessons_count_viewed\": 0,\r\n                \"lessons_viewed_percentage\": 0,\r\n                \"lessons_count_completed\": 0,\r\n                \"lessons_completion_percentage\": 0,\r\n                \"quizzes_count\": 0,\r\n                \"quizzes_count_completed\": 0,\r\n                \"quizzes_completion_percentage\": 0,\r\n                \"scores_max\": 0,\r\n                \"quizzes_scores\": 0,\r\n                \"product_scores\": 0,\r\n                \"scores\": 0,\r\n                \"is_completed\": false,\r\n                \"completed_at\": null,\r\n                \"current_lesson\": {\r\n                    \"id\": 48,\r\n                    \"course_id\": 20,\r\n                    \"type_id\": 1,\r\n                    \"status_id\": 4,\r\n                    \"number\": 6,\r\n                    \"title\": \"2\",\r\n                    \"slug\": \"2\",\r\n                    \"url\": \"http://test.local/courses/Pm8CEofJ/2\",\r\n                    \"quizzes\": [],\r\n                    \"module\": {\r\n                        \"id\": 7,\r\n                        \"course_id\": 20,\r\n                        \"number\": 1,\r\n                        \"title\": \"Module title\"\r\n                    }\r\n                },\r\n                \"next_lesson\": {\r\n                    \"id\": 46,\r\n                    \"course_id\": 20,\r\n                    \"type_id\": 1,\r\n                    \"status_id\": 4,\r\n                    \"number\": 1,\r\n                    \"title\": \"3\",\r\n                    \"slug\": \"3\",\r\n                    \"url\": \"http://test.local/courses/Pm8CEofJ/3\",\r\n                    \"module\": {\r\n                        \"id\": 7,\r\n                        \"course_id\": 20,\r\n                        \"number\": 1,\r\n                        \"title\": \"Module title\"\r\n                    }\r\n                },\r\n                \"last_activity_at\": null,\r\n                \"is_checkpoints_skipped\": false,\r\n                \"checkpoints\": [],\r\n                \"is_current_dripping_date_skipped\": false,\r\n                \"is_next_dripping_date_skipped\": false,\r\n                \"current_dripping_date\": null,\r\n                \"next_dripping_date\": null\r\n            },\r\n            \"lessons_available_count\": 9,\r\n            \"is_full_access\": true,\r\n            \"subscription\": {\r\n                \"is_active\": true,\r\n                \"is_paid\": true,\r\n                \"start_at\": \"2024-04-23T13:45:02.000000Z\",\r\n                \"end_at\": null,\r\n                \"offer_end_at\": null,\r\n                \"order_end_at\": null,\r\n                \"count_available_days\": 661,\r\n                \"count_left_days\": null,\r\n                \"state\": {\r\n                    \"id\": 2,\r\n                    \"name\": \"Open\",\r\n                    \"title\": \"Open\"\r\n                }\r\n            }\r\n        }\r\n    ],\r\n    \"links\": {\r\n        \"first\": \"http://api.kwiga.local/courses/20/users?page=1\",\r\n        \"last\": \"http://api.kwiga.local/courses/20/users?page=1\",\r\n        \"prev\": null,\r\n        \"next\": null\r\n    },\r\n    \"meta\": {\r\n        \"current_page\": 1,\r\n        \"from\": 1,\r\n        \"last_page\": 1,\r\n        \"links\": [\r\n            {\r\n                \"url\": null,\r\n                \"label\": \"&laquo; Previous\",\r\n                \"active\": false\r\n            },\r\n            {\r\n                \"url\": \"http://api.kwiga.local/courses/20/users?page=1\",\r\n                \"label\": \"1\",\r\n                \"active\": true\r\n            },\r\n            {\r\n                \"url\": null,\r\n                \"label\": \"Next &raquo;\",\r\n                \"active\": false\r\n            }\r\n        ],\r\n        \"path\": \"http://api.kwiga.local/courses/20/users\",\r\n        \"per_page\": 15,\r\n        \"to\": 1,\r\n        \"total\": 1\r\n    }\r\n}"
            }
          ]
        },
        {
          "name": "Query course participants (POST alias for GET /courses/:course/users)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/courses/:course/users/query",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "courses",
                ":course",
                "users",
                "query"
              ],
              "variable": [
                {
                  "key": "course",
                  "value": "{{course}}"
                }
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"include\": [\n    \"course_program\",\n    \"lesson_progress\",\n    \"module_progress\",\n    \"quiz_progress\"\n  ],\n  \"contact_ids\": [\n    1,\n    2,\n    3\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Query course participants (POST alias for GET /courses/:course/users)"
          },
          "response": [
            {
              "name": "Query course users with analytics include",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/courses/:course/users/query",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "courses",
                    ":course",
                    "users",
                    "query"
                  ],
                  "variable": [
                    {
                      "key": "course",
                      "value": "{{course}}"
                    }
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"include\": [\n    \"course_program\",\n    \"lesson_progress\",\n    \"module_progress\",\n    \"quiz_progress\"\n  ],\n  \"contact_ids\": [\n    1,\n    2,\n    3\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Query course participants (POST alias for GET /courses/:course/users)"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": ""
            }
          ]
        }
      ]
    },
    {
      "name": "Mailing",
      "item": [
        {
          "name": "Get contact lists",
          "request": {
            "method": "GET",
            "header": [

            ],
            "url": {
              "raw": "{{base_url}}/mailing/contact-lists",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "mailing",
                "contact-lists"
              ]
            },
            "description": "Get contact lists"
          },
          "response": [
            {
              "name": "Get contact lists",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/mailing/contact-lists",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "mailing",
                    "contact-lists"
                  ]
                },
                "description": "Get contact lists"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n        \"id\": 2,\n        \"title\": \"Пример 2\",\n        \"description\": \"Описание\",\n        \"is_default\": false,\n        \"created_at\": \"2022-04-28T13:22:44.000000Z\",\n        \"updated_at\": \"2022-04-28T13:22:44.000000Z\"\n    },\n    {\n        \"id\": 1,\n        \"title\": \"Мой первый список\",\n        \"description\": \"Данный список создаётся автоматически с вашим контактом внутри. Вы можете его отредактировать под свои потребности.\",\n        \"is_default\": true,\n        \"created_at\": \"2022-04-28T12:47:08.000000Z\",\n        \"updated_at\": \"2022-04-28T12:47:08.000000Z\"\n    }\n  ],\n  \"links\": {\n        \"first\": \"<%= config[:base_url] %>/mailing/contact-lists?page=1\",\n        \"last\": \"<%= config[:base_url] %>/mailing/contact-lists?page=2\",\n        \"prev\": null,\n        \"next\": \"<%= config[:base_url] %>/mailing/contact-lists?page=2\"\n   },\n   \"meta\": {\n        \"current_page\": 1,\n        \"from\": 1,\n        \"last_page\": 2,\n        \"links\": [\n            {\n                \"url\": null,\n                \"label\": \"&laquo; <%= t(:pagination_prev) %>\",\n                \"active\": false\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/mailing/contact-lists?page=1\",\n                \"label\": \"1\",\n                \"active\": true\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/mailing/contact-lists?page=2\",\n                \"label\": \"2\",\n                \"active\": false\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/mailing/contact-lists?page=2\",\n                \"label\": \"<%= t(:pagination_next) %> &raquo;\",\n                \"active\": false\n            }\n        ],\n        \"path\": \"<%= config[:base_url] %>/mailing/contact-lists\",\n        \"per_page\": 2,\n        \"to\": 2,\n        \"total\": 3\n    }\n}"
            },
            {
              "name": "Get contact lists with pagination",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/mailing/contact-lists?page=1&per_page=15",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "mailing",
                    "contact-lists"
                  ],
                  "query": [
                    {
                      "key": "page",
                      "value": "1"
                    },
                    {
                      "key": "per_page",
                      "value": "15"
                    }
                  ]
                },
                "description": "Get contact lists"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n        \"id\": 2,\n        \"title\": \"Пример 2\",\n        \"description\": \"Описание\",\n        \"is_default\": false,\n        \"created_at\": \"2022-04-28T13:22:44.000000Z\",\n        \"updated_at\": \"2022-04-28T13:22:44.000000Z\"\n    },\n    {\n        \"id\": 1,\n        \"title\": \"Мой первый список\",\n        \"description\": \"Данный список создаётся автоматически с вашим контактом внутри. Вы можете его отредактировать под свои потребности.\",\n        \"is_default\": true,\n        \"created_at\": \"2022-04-28T12:47:08.000000Z\",\n        \"updated_at\": \"2022-04-28T12:47:08.000000Z\"\n    }\n  ],\n  \"links\": {\n        \"first\": \"<%= config[:base_url] %>/mailing/contact-lists?page=1\",\n        \"last\": \"<%= config[:base_url] %>/mailing/contact-lists?page=2\",\n        \"prev\": null,\n        \"next\": \"<%= config[:base_url] %>/mailing/contact-lists?page=2\"\n   },\n   \"meta\": {\n        \"current_page\": 1,\n        \"from\": 1,\n        \"last_page\": 2,\n        \"links\": [\n            {\n                \"url\": null,\n                \"label\": \"&laquo; <%= t(:pagination_prev) %>\",\n                \"active\": false\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/mailing/contact-lists?page=1\",\n                \"label\": \"1\",\n                \"active\": true\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/mailing/contact-lists?page=2\",\n                \"label\": \"2\",\n                \"active\": false\n            },\n            {\n                \"url\": \"<%= config[:base_url] %>/mailing/contact-lists?page=2\",\n                \"label\": \"<%= t(:pagination_next) %> &raquo;\",\n                \"active\": false\n            }\n        ],\n        \"path\": \"<%= config[:base_url] %>/mailing/contact-lists\",\n        \"per_page\": 2,\n        \"to\": 2,\n        \"total\": 3\n    }\n}"
            }
          ]
        },
        {
          "name": "Get contact list by ID",
          "request": {
            "method": "GET",
            "header": [

            ],
            "url": {
              "raw": "{{base_url}}/mailing/contact-lists/:list",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "mailing",
                "contact-lists",
                ":list"
              ],
              "variable": [
                {
                  "key": "list",
                  "value": "{{list}}"
                }
              ]
            },
            "description": "Get contact list by ID"
          },
          "response": [
            {
              "name": "Get contact list by ID",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/mailing/contact-lists/:list",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "mailing",
                    "contact-lists",
                    ":list"
                  ],
                  "variable": [
                    {
                      "key": "list",
                      "value": "{{list}}"
                    }
                  ]
                },
                "description": "Get contact list by ID"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"title\": \"Мой первый список\",\n    \"description\": \"Данный список создаётся автоматически с вашим контактом внутри. Вы можете его отредактировать под свои потребности.\",\n    \"is_default\": true,\n    \"created_at\": \"2022-04-28T12:47:08.000000Z\",\n    \"updated_at\": \"2022-04-28T12:47:08.000000Z\",\n    \"contacts\": [\n        {\n            \"id\": 1,\n            \"first_name\": \"Alex\",\n            \"middle_name\": null,\n            \"last_name\": \"Иванович Burt\",\n            \"name\": \"Иванович Burt Alex\",\n            \"sex\": null,\n            \"age\": null,\n            \"email\": \"admin@grandstep.com.ua\",\n            \"phone_country\": \"UA\",\n            \"phone_number\": \"983721222\",\n            \"city\": null,\n            \"phone\": \"+380983721222\",\n            \"created_at\": \"2022-04-28T12:47:07.000000Z\",\n            \"updated_at\": \"2022-04-28T12:47:08.000000Z\"\n        }\n    ],\n    \"statistic\": {\n        \"contact_list_id\": 1,\n        \"count_contacts\": 1\n    }\n}\n}"
            }
          ]
        },
        {
          "name": "Create contact list",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/mailing/contact-lists",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "mailing",
                "contact-lists"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"title\": \"Название группы\",\n  \"description\": \"описание\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Create contact list"
          },
          "response": [
            {
              "name": "Create contact list",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/mailing/contact-lists",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "mailing",
                    "contact-lists"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"title\": \"Название группы\",\n  \"description\": \"описание\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Create contact list"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n    \"data\": {\n        \"id\": 3,\n        \"title\": \"fsdaf asfsf dsafsda fsda\",\n        \"description\": \"1dsad sadsa ds dsa\",\n        \"is_default\": false,\n        \"created_at\": \"2022-05-04T09:57:37.000000Z\",\n        \"updated_at\": \"2022-05-04T09:57:37.000000Z\"\n    }\n}"
            }
          ]
        },
        {
          "name": "Bulk add contacts to lists",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/mailing/contact-lists/bulk-contacts",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "mailing",
                "contact-lists",
                "bulk-contacts"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"contacts[]\": 2,\n  \"contact_lists[]\": 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Bulk add contacts to lists"
          },
          "response": [
            {
              "name": "Bulk add contacts to lists",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/mailing/contact-lists/bulk-contacts",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "mailing",
                    "contact-lists",
                    "bulk-contacts"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"contacts[]\": 2,\n  \"contact_lists[]\": 1\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Bulk add contacts to lists"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n    \"success\": true\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Offers",
      "item": [
        {
          "name": "Get offers list",
          "request": {
            "method": "GET",
            "header": [

            ],
            "url": {
              "raw": "{{base_url}}/offers?product_id=130",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "offers"
              ],
              "query": [
                {
                  "key": "product_id",
                  "value": "130"
                }
              ]
            },
            "description": "Get offers list"
          },
          "response": [
            {
              "name": "Get offers list filtered by product",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/offers?product_id=130",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "offers"
                  ],
                  "query": [
                    {
                      "key": "product_id",
                      "value": "130"
                    }
                  ]
                },
                "description": "Get offers list"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n      \"id\": 273,\n      \"unique_offer_code\": \"nELQzbLRPmzo\",\n      \"url\": \"https://kwiga.com/o/nELQzbLRPmzo\",\n      \"title\": \"This is paid offer for my course\",\n      \"description\": \"<p style=\\\"text-align: left\\\">Description with html.</p>\",\n      \"short_description\": \"<p style=\\\"text-align: left\\\">Shot description with html.</p>\",\n      \"price_type\": {\n        \"id\": 2,\n        \"name\": \"Платно\"\n      },\n      \"price\": {\n        \"amount\": \"10.00\",\n        \"amount_rounded\": \"10.00\",\n        \"amount_formatted\": \"10.00 usd\",\n        \"amount_formatted_code\": \"$10.00\",\n        \"amount_formatted_code_short\": \"$10.00\",\n        \"currency\": {\n          \"id\": 5,\n          \"code\": \"USD\",\n          \"html_code\": \"$\",\n          \"html_letter_code\": \"usd\",\n          \"is_volatile\": false\n        }\n      },\n      \"price_discounted\": {\n        \"amount\": 5,\n        \"amount_rounded\": \"5.00\",\n        \"amount_formatted\": \"5.00 usd\",\n        \"amount_formatted_code\": \"$5.00\",\n        \"amount_formatted_code_short\": \"$5.00\",\n        \"currency\": {\n          \"id\": 5,\n          \"code\": \"USD\",\n          \"html_code\": \"$\",\n          \"html_letter_code\": \"usd\",\n          \"is_volatile\": false\n        }\n      },\n      \"discount\": {\n        \"id\": 3,\n        \"price_discounted\": 5,\n        \"limit_type\": {\n          \"id\": 1,\n          \"name\": \"Безстроково\"\n        },\n        \"start_at\": \"2023-12-28T14:41:00.000000Z\",\n        \"start_at_utc\": \"2023-12-28T12:41:00.000000Z\",\n        \"start_timezone_id\": 371,\n        \"end_at\": \"2024-01-03T14:41:00.000000Z\",\n        \"end_type\": 3,\n        \"end_at_utc\": \"2024-01-03T12:41:00.000000Z\",\n        \"end_timezone_id\": 371,\n        \"sales_limit\": null,\n        \"sales\": null,\n        \"is_active\": true,\n        \"is_available\": true,\n        \"created_at\": \"2023-12-28T12:41:58.000000Z\",\n        \"updated_at\": \"2023-12-28T12:41:58.000000Z\",\n        \"start_timezone\": {\n          \"id\": 371,\n          \"name\": \"Europe/Kyiv\",\n          \"name_full\": \"Europe/Kyiv (UTC+03:00)\",\n          \"value\": \"UTC+03:00\"\n        },\n        \"end_timezone\": {\n          \"id\": 371,\n          \"name\": \"Europe/Kyiv\",\n          \"name_full\": \"Europe/Kyiv (UTC+03:00)\",\n          \"value\": \"UTC+03:00\"\n        }\n      },\n      \"has_subscription\": false,\n      \"limit_type\": {\n        \"id\": 1,\n        \"name\": \"Необмежено\"\n      },\n      \"limit_of_sales\": null,\n      \"is_active\": true,\n      \"is_draft\": false,\n      \"validity_start\": {\n        \"type\": \"validity_start\",\n        \"duration_type_id\": 1,\n        \"date_at\": \"2023-12-28T14:40:00.000000Z\",\n        \"date_at_utc\": \"2023-12-28T12:40:00.000000Z\",\n        \"timezone_id\": 371,\n        \"timezone\": {\n          \"id\": 371,\n          \"name\": \"Europe/Kyiv\",\n          \"name_full\": \"Europe/Kyiv (UTC+03:00)\",\n          \"value\": \"UTC+03:00\"\n        },\n        \"after_months\": 0,\n        \"after_days\": 0,\n        \"specific_time\": null\n      },\n      \"validity_end\": {\n        \"type\": \"validity_end\",\n        \"duration_type_id\": 3,\n        \"date_at\": \"2023-12-28T14:40:00.000000Z\",\n        \"date_at_utc\": \"2023-12-28T12:40:00.000000Z\",\n        \"timezone_id\": 371,\n        \"timezone\": {\n          \"id\": 371,\n          \"name\": \"Europe/Kyiv\",\n          \"name_full\": \"Europe/Kyiv (UTC+03:00)\",\n          \"value\": \"UTC+03:00\"\n        },\n        \"after_months\": 0,\n        \"after_days\": 0,\n        \"specific_time\": null\n      },\n      \"products\": [\n        {\n          \"id\": 130,\n          \"productable_id\": 38,\n          \"productable_type\": \"course\",\n          \"title\": \"This is my course\",\n          \"url\": \"https://kwiga.com/courses/test-fail\"\n        }\n      ]\n    },\n    {\n      \"id\": 272,\n      \"unique_offer_code\": \"2obtMsUEujcy\",\n      \"url\": \"https://kwiga.com/o/2obtMsUEujcy\",\n      \"title\": \"This is free offer for my course\",\n      \"description\": null,\n      \"short_description\": null,\n      \"price_type\": {\n        \"id\": 1,\n        \"name\": \"Безкоштовно\"\n      },\n      \"price\": {\n        \"amount\": \"0.00\",\n        \"amount_rounded\": \"0.00\",\n        \"amount_formatted\": \"0.00 usd\",\n        \"amount_formatted_code\": \"$0.00\",\n        \"amount_formatted_code_short\": \"$0.00\",\n        \"currency\": {\n          \"id\": 5,\n          \"code\": \"USD\",\n          \"html_code\": \"$\",\n          \"html_letter_code\": \"usd\",\n          \"is_volatile\": false\n        }\n      },\n      \"price_discounted\": {\n        \"amount\": 0,\n        \"amount_rounded\": \"0.00\",\n        \"amount_formatted\": \"0.00 usd\",\n        \"amount_formatted_code\": \"$0.00\",\n        \"amount_formatted_code_short\": \"$0.00\",\n        \"currency\": {\n          \"id\": 5,\n          \"code\": \"USD\",\n          \"html_code\": \"$\",\n          \"html_letter_code\": \"usd\",\n          \"is_volatile\": false\n        }\n      },\n      \"discount\": null,\n      \"has_subscription\": false,\n      \"limit_type\": {\n        \"id\": 1,\n        \"name\": \"Необмежено\"\n      },\n      \"limit_of_sales\": null,\n      \"is_active\": true,\n      \"is_draft\": false,\n      \"validity_start\": {\n        \"type\": \"validity_start\",\n        \"duration_type_id\": 1,\n        \"date_at\": \"2023-12-27T12:45:00.000000Z\",\n        \"date_at_utc\": \"2023-12-27T10:45:00.000000Z\",\n        \"timezone_id\": 371,\n        \"timezone\": {\n          \"id\": 371,\n          \"name\": \"Europe/Kyiv\",\n          \"name_full\": \"Europe/Kyiv (UTC+03:00)\",\n          \"value\": \"UTC+03:00\"\n        },\n        \"after_months\": 0,\n        \"after_days\": 0,\n        \"specific_time\": null\n      },\n      \"validity_end\": {\n        \"type\": \"validity_end\",\n        \"duration_type_id\": 3,\n        \"date_at\": \"2023-12-27T12:45:00.000000Z\",\n        \"date_at_utc\": \"2023-12-27T10:45:00.000000Z\",\n        \"timezone_id\": 371,\n        \"timezone\": {\n          \"id\": 371,\n          \"name\": \"Europe/Kyiv\",\n          \"name_full\": \"Europe/Kyiv (UTC+03:00)\",\n          \"value\": \"UTC+03:00\"\n        },\n        \"after_months\": 0,\n        \"after_days\": 0,\n        \"specific_time\": null\n      },\n      \"products\": [\n        {\n          \"id\": 130,\n          \"productable_id\": 38,\n          \"productable_type\": \"course\",\n          \"title\": \"This is my course\",\n          \"url\": \"https://kwiga.com/courses/test-fail\"\n        }\n      ]\n    }\n  ],\n  \"links\": {\n    \"first\": \"http://api.kwiga.local/offers?page=1\",\n    \"last\": \"http://api.kwiga.local/offers?page=1\",\n    \"prev\": null,\n    \"next\": null\n  },\n  \"meta\": {\n    \"current_page\": 1,\n    \"from\": 1,\n    \"last_page\": 1,\n    \"links\": [\n      {\n        \"url\": null,\n        \"label\": \"&laquo; Previous\",\n        \"active\": false\n      },\n      {\n        \"url\": \"http://api.kwiga.local/offers?page=1\",\n        \"label\": \"1\",\n        \"active\": true\n      },\n      {\n        \"url\": null,\n        \"label\": \"Next &raquo;\",\n        \"active\": false\n      }\n    ],\n    \"path\": \"http://api.kwiga.local/offers\",\n    \"per_page\": 15,\n    \"to\": 1,\n    \"total\": 2\n  }\n}"
            }
          ]
        },
        {
          "name": "Get offer by ID",
          "request": {
            "method": "GET",
            "header": [

            ],
            "url": {
              "raw": "{{base_url}}/offers/:offer",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "offers",
                ":offer"
              ],
              "variable": [
                {
                  "key": "offer",
                  "value": "{{offer}}"
                }
              ]
            },
            "description": "Get offer by ID"
          },
          "response": [
            {
              "name": "Get offer by ID",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/offers/:offer",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "offers",
                    ":offer"
                  ],
                  "variable": [
                    {
                      "key": "offer",
                      "value": "{{offer}}"
                    }
                  ]
                },
                "description": "Get offer by ID"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"unique_offer_code\": \"6rT1wj99lbZV\",\n    \"title\": \"Offer #1\",\n    \"limit_type\": {\n      \"id\": 2,\n      \"name\": \"Certain amount\"\n    },\n    \"limit_of_sales\": 20,\n    \"purchases_count\": 1,\n    \"sales_left\": 19\n  }\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Products",
      "item": [
        {
          "name": "Get products list",
          "request": {
            "method": "GET",
            "header": [

            ],
            "url": {
              "raw": "{{base_url}}/products",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "products"
              ]
            },
            "description": "Get products list"
          },
          "response": [
            {
              "name": "Get products list",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/products",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "products"
                  ]
                },
                "description": "Get products list"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\r\n  \"data\": [\r\n    {\r\n      \"id\": 299,\r\n      \"productable_id\": 142,\r\n      \"productable_type\": \"course\",\r\n      \"title\": \"Sample Course Title\",\r\n      \"url\": \"http://test.local/courses/test-slug\"\r\n    }\r\n  ],\r\n  \"links\": {\r\n    \"first\": \"https://api.kwiga.com/products?page=1\",\r\n    \"last\": \"https://api.kwiga.com/products?page=5\",\r\n    \"prev\": null,\r\n    \"next\": \"https://api.kwiga.com/products?page=2\"\r\n  },\r\n  \"meta\": {\r\n    \"current_page\": 1,\r\n    \"from\": 1,\r\n    \"last_page\": 5,\r\n    \"path\": \"https://api.kwiga.com/products\",\r\n    \"per_page\": 15,\r\n    \"to\": 15,\r\n    \"total\": 75\r\n  }\r\n}"
            },
            {
              "name": "Get products list with pagination and sorting",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/products?per_page=20&page=1&sort_by=asc",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "products"
                  ],
                  "query": [
                    {
                      "key": "per_page",
                      "value": "20"
                    },
                    {
                      "key": "page",
                      "value": "1"
                    },
                    {
                      "key": "sort_by",
                      "value": "asc"
                    }
                  ]
                },
                "description": "Get products list"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\r\n  \"data\": [\r\n    {\r\n      \"id\": 299,\r\n      \"productable_id\": 142,\r\n      \"productable_type\": \"course\",\r\n      \"title\": \"Sample Course Title\",\r\n      \"url\": \"http://test.local/courses/test-slug\"\r\n    }\r\n  ],\r\n  \"links\": {\r\n    \"first\": \"https://api.kwiga.com/products?page=1\",\r\n    \"last\": \"https://api.kwiga.com/products?page=5\",\r\n    \"prev\": null,\r\n    \"next\": \"https://api.kwiga.com/products?page=2\"\r\n  },\r\n  \"meta\": {\r\n    \"current_page\": 1,\r\n    \"from\": 1,\r\n    \"last_page\": 5,\r\n    \"path\": \"https://api.kwiga.com/products\",\r\n    \"per_page\": 15,\r\n    \"to\": 15,\r\n    \"total\": 75\r\n  }\r\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Quiz Attempts",
      "item": [
        {
          "name": "List cabinet quiz attempts",
          "request": {
            "method": "GET",
            "header": [

            ],
            "url": {
              "raw": "{{base_url}}/quiz-attempts",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "quiz-attempts"
              ]
            },
            "description": "List cabinet quiz attempts"
          },
          "response": [
            {
              "name": "List quiz attempts (defaults — newest first by status_updated_at)",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/quiz-attempts",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "quiz-attempts"
                  ]
                },
                "description": "List cabinet quiz attempts"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n      \"id\": 4821,\n      \"root_id\": 4810,\n      \"previous_id\": 4815,\n      \"number_version\": 3,\n      \"user_id\": 712,\n      \"product_id\": 431,\n      \"quiz_id\": 88,\n      \"course_id\": 226,\n      \"course_lesson_id\": 504,\n      \"lesson_section\": {\n        \"id\": 88,\n        \"name\": \"Knowledge check\",\n        \"order\": 3,\n        \"url\": \"https://lm4.kwiga.com/courses/js-foundations/3/lessons/504\",\n        \"crm_url\": \"https://lm4.kwiga.com/expert/courses/js-foundations/3/lessons/504/sections/3\"\n      },\n      \"status\": {\n        \"id\": 6,\n        \"slug\": \"PendingCheck\",\n        \"title\": \"Pending review\"\n      },\n      \"scores\": 12.5,\n      \"scores_max\": 15,\n      \"count_questions\": 10,\n      \"count_questions_correct\": 8,\n      \"count_questions_incorrect\": 2,\n      \"is_force_approved\": false,\n      \"is_read\": false,\n      \"started_at\": \"2026-05-23T11:02:14.000000Z\",\n      \"last_activity_at\": \"2026-05-23T11:14:51.000000Z\",\n      \"finished_at\": \"2026-05-23T11:14:51.000000Z\",\n      \"deadline_at\": null,\n      \"status_updated_at\": \"2026-05-23T11:14:51.000000Z\",\n      \"checked_at\": null,\n      \"commented_at\": null,\n      \"canceled_at\": null,\n      \"passed_time_in_seconds\": 757,\n      \"crm_url\": \"https://lm4.kwiga.com/expert/practices?attempt_id=4821\",\n      \"user\": {\n        \"id\": 712,\n        \"name\": \"Alice Student\",\n        \"email\": \"alice@example.com\"\n      },\n      \"quiz\": {\n        \"id\": 88,\n        \"name\": \"Module 3 final test\"\n      },\n      \"course\": {\n        \"id\": 226,\n        \"product_id\": 431,\n        \"type\": {\n          \"id\": 1,\n          \"name\": \"Course\",\n          \"type\": \"course\"\n        },\n        \"title\": \"JS Foundations\",\n        \"slug\": \"js-foundations\",\n        \"url\": \"http://test.local/courses/js-foundations\",\n        \"status\": {\n          \"id\": 3,\n          \"name\": \"Published\"\n        }\n      },\n      \"lesson\": {\n        \"id\": 504,\n        \"title\": \"Closures & scope\",\n        \"course\": {\n          \"id\": 226,\n          \"product_id\": 431,\n          \"type_id\": 1,\n          \"title\": \"JS Foundations\",\n          \"url\": \"http://test.local/courses/js-foundations\"\n        },\n        \"module\": {\n          \"id\": 30,\n          \"course_id\": 226,\n          \"number\": 3,\n          \"title\": \"Functions in depth\"\n        }\n      },\n      \"product\": {\n        \"id\": 431,\n        \"productable_type\": \"course\",\n        \"productable_id\": 226,\n        \"name\": \"JS Foundations\",\n        \"url\": \"http://test.local/courses/js-foundations\"\n      }\n    }\n  ],\n  \"links\": {\n    \"first\": \"https://api.kwiga.com/quiz-attempts?page=1\",\n    \"last\": \"https://api.kwiga.com/quiz-attempts?page=4\",\n    \"prev\": null,\n    \"next\": \"https://api.kwiga.com/quiz-attempts?page=2\"\n  },\n  \"meta\": {\n    \"current_page\": 1,\n    \"from\": 1,\n    \"last_page\": 4,\n    \"path\": \"https://api.kwiga.com/quiz-attempts\",\n    \"per_page\": 15,\n    \"to\": 15,\n    \"total\": 58,\n    \"links\": [\n      { \"url\": null, \"label\": \"&laquo; Previous\", \"active\": false },\n      { \"url\": \"https://api.kwiga.com/quiz-attempts?page=1\", \"label\": \"1\", \"active\": true },\n      { \"url\": \"https://api.kwiga.com/quiz-attempts?page=2\", \"label\": \"2\", \"active\": false },\n      { \"url\": \"https://api.kwiga.com/quiz-attempts?page=2\", \"label\": \"Next &raquo;\", \"active\": false }\n    ]\n  },\n  \"attempts_unread_count\": 12\n}"
            },
            {
              "name": "Filtered list — pending check & need rework, scoped to two products",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/quiz-attempts?filters[practice_statuses]=3,6&filters[product_ids]=10,11&sort_by=last_activity_at&sort_dir=desc&per_page=50",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "quiz-attempts"
                  ],
                  "query": [
                    {
                      "key": "filters[practice_statuses]",
                      "value": "3,6"
                    },
                    {
                      "key": "filters[product_ids]",
                      "value": "10,11"
                    },
                    {
                      "key": "sort_by",
                      "value": "last_activity_at"
                    },
                    {
                      "key": "sort_dir",
                      "value": "desc"
                    },
                    {
                      "key": "per_page",
                      "value": "50"
                    }
                  ]
                },
                "description": "List cabinet quiz attempts"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"data\": [\n    {\n      \"id\": 4821,\n      \"root_id\": 4810,\n      \"previous_id\": 4815,\n      \"number_version\": 3,\n      \"user_id\": 712,\n      \"product_id\": 431,\n      \"quiz_id\": 88,\n      \"course_id\": 226,\n      \"course_lesson_id\": 504,\n      \"lesson_section\": {\n        \"id\": 88,\n        \"name\": \"Knowledge check\",\n        \"order\": 3,\n        \"url\": \"https://lm4.kwiga.com/courses/js-foundations/3/lessons/504\",\n        \"crm_url\": \"https://lm4.kwiga.com/expert/courses/js-foundations/3/lessons/504/sections/3\"\n      },\n      \"status\": {\n        \"id\": 6,\n        \"slug\": \"PendingCheck\",\n        \"title\": \"Pending review\"\n      },\n      \"scores\": 12.5,\n      \"scores_max\": 15,\n      \"count_questions\": 10,\n      \"count_questions_correct\": 8,\n      \"count_questions_incorrect\": 2,\n      \"is_force_approved\": false,\n      \"is_read\": false,\n      \"started_at\": \"2026-05-23T11:02:14.000000Z\",\n      \"last_activity_at\": \"2026-05-23T11:14:51.000000Z\",\n      \"finished_at\": \"2026-05-23T11:14:51.000000Z\",\n      \"deadline_at\": null,\n      \"status_updated_at\": \"2026-05-23T11:14:51.000000Z\",\n      \"checked_at\": null,\n      \"commented_at\": null,\n      \"canceled_at\": null,\n      \"passed_time_in_seconds\": 757,\n      \"crm_url\": \"https://lm4.kwiga.com/expert/practices?attempt_id=4821\",\n      \"user\": {\n        \"id\": 712,\n        \"name\": \"Alice Student\",\n        \"email\": \"alice@example.com\"\n      },\n      \"quiz\": {\n        \"id\": 88,\n        \"name\": \"Module 3 final test\"\n      },\n      \"course\": {\n        \"id\": 226,\n        \"product_id\": 431,\n        \"type\": {\n          \"id\": 1,\n          \"name\": \"Course\",\n          \"type\": \"course\"\n        },\n        \"title\": \"JS Foundations\",\n        \"slug\": \"js-foundations\",\n        \"url\": \"http://test.local/courses/js-foundations\",\n        \"status\": {\n          \"id\": 3,\n          \"name\": \"Published\"\n        }\n      },\n      \"lesson\": {\n        \"id\": 504,\n        \"title\": \"Closures & scope\",\n        \"course\": {\n          \"id\": 226,\n          \"product_id\": 431,\n          \"type_id\": 1,\n          \"title\": \"JS Foundations\",\n          \"url\": \"http://test.local/courses/js-foundations\"\n        },\n        \"module\": {\n          \"id\": 30,\n          \"course_id\": 226,\n          \"number\": 3,\n          \"title\": \"Functions in depth\"\n        }\n      },\n      \"product\": {\n        \"id\": 431,\n        \"productable_type\": \"course\",\n        \"productable_id\": 226,\n        \"name\": \"JS Foundations\",\n        \"url\": \"http://test.local/courses/js-foundations\"\n      }\n    }\n  ],\n  \"links\": {\n    \"first\": \"https://api.kwiga.com/quiz-attempts?page=1\",\n    \"last\": \"https://api.kwiga.com/quiz-attempts?page=4\",\n    \"prev\": null,\n    \"next\": \"https://api.kwiga.com/quiz-attempts?page=2\"\n  },\n  \"meta\": {\n    \"current_page\": 1,\n    \"from\": 1,\n    \"last_page\": 4,\n    \"path\": \"https://api.kwiga.com/quiz-attempts\",\n    \"per_page\": 15,\n    \"to\": 15,\n    \"total\": 58,\n    \"links\": [\n      { \"url\": null, \"label\": \"&laquo; Previous\", \"active\": false },\n      { \"url\": \"https://api.kwiga.com/quiz-attempts?page=1\", \"label\": \"1\", \"active\": true },\n      { \"url\": \"https://api.kwiga.com/quiz-attempts?page=2\", \"label\": \"2\", \"active\": false },\n      { \"url\": \"https://api.kwiga.com/quiz-attempts?page=2\", \"label\": \"Next &raquo;\", \"active\": false }\n    ]\n  },\n  \"attempts_unread_count\": 12\n}"
            }
          ]
        },
        {
          "name": "Query cabinet quiz attempts (POST alias for GET /quiz-attempts)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/quiz-attempts/query",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "quiz-attempts",
                "query"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"filters\": {\n    \"curator_ids\": [\n      101,\n      102,\n      103,\n      104\n    ],\n    \"lesson_ids\": [\n      501,\n      502,\n      503,\n      504,\n      505\n    ],\n    \"practice_statuses\": [\n      3,\n      6\n    ],\n    \"last_activity_from\": \"2026-04-01 00:00:00\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "Query cabinet quiz attempts (POST alias for GET /quiz-attempts)"
          },
          "response": [
            {
              "name": "Wide curator/lesson filter that does not fit a query string",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  }
                ],
                "url": {
                  "raw": "{{base_url}}/quiz-attempts/query",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "quiz-attempts",
                    "query"
                  ]
                },
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"filters\": {\n    \"curator_ids\": [\n      101,\n      102,\n      103,\n      104\n    ],\n    \"lesson_ids\": [\n      501,\n      502,\n      503,\n      504,\n      505\n    ],\n    \"practice_statuses\": [\n      3,\n      6\n    ],\n    \"last_activity_from\": \"2026-04-01 00:00:00\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                },
                "description": "Query cabinet quiz attempts (POST alias for GET /quiz-attempts)"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": ""
            }
          ]
        }
      ]
    },
    {
      "name": "Timezones",
      "item": [
        {
          "name": "Get timezones list",
          "request": {
            "method": "GET",
            "header": [

            ],
            "url": {
              "raw": "{{base_url}}/timezones",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "timezones"
              ]
            },
            "description": "Get timezones list"
          },
          "response": [
            {
              "name": "Get timezones list",
              "originalRequest": {
                "method": "GET",
                "header": [

                ],
                "url": {
                  "raw": "{{base_url}}/timezones",
                  "host": [
                    "{{base_url}}"
                  ],
                  "path": [
                    "timezones"
                  ]
                },
                "description": "Get timezones list"
              },
              "status": "OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n    \"data\": [\n        {\n            \"id\": 1,\n            \"name\": \"Asia/Kabul\",\n            \"name_full\": \"Asia/Kabul (UTC+04:30)\",\n            \"value\": \"UTC+04:30\"\n        },\n        {\n            \"id\": 2,\n            \"name\": \"Europe/Tirane\",\n            \"name_full\": \"Europe/Tirane (UTC+02:00)\",\n            \"value\": \"UTC+02:00\"\n        },\n        ...\n    ]\n}"
            }
          ]
        }
      ]
    }
  ],
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [
          "// Cabinet-Hash is a custom header — inject it from the cabinet_hash variable.",
          "// (Token is sent automatically via the collection Authorization.)",
          "const hash = pm.collectionVariables.get('cabinet_hash');",
          "if (hash) pm.request.headers.upsert({ key: 'Cabinet-Hash', value: hash });"
        ]
      }
    }
  ],
  "variable": [
    {
      "key": "base_url",
      "value": "https://api.kwiga.com",
      "type": "string"
    },
    {
      "key": "token",
      "value": "",
      "type": "string"
    },
    {
      "key": "cabinet_hash",
      "value": "",
      "type": "string"
    },
    {
      "key": "contact",
      "value": "1",
      "type": "string"
    },
    {
      "key": "coupon",
      "value": "1",
      "type": "string"
    },
    {
      "key": "course",
      "value": "1",
      "type": "string"
    },
    {
      "key": "list",
      "value": "1",
      "type": "string"
    },
    {
      "key": "number",
      "value": "1",
      "type": "string"
    },
    {
      "key": "offer",
      "value": "1",
      "type": "string"
    },
    {
      "key": "product",
      "value": "1",
      "type": "string"
    }
  ]
}