{
  "info": {
    "_postman_id": "a5533aee-e3e2-41ba-a102-49cdf20ba5bd",
    "name": "Smartix API",
    "description": "Smartix API functions.\n\nYopu will need and API key sto use these functions.\n\nYou can create API Keys in Smartix Studio (https://studio.smartix.uk)\n\nAPI keys are issued as pairs. A TEST key and a LIVE key.\n\nUsing a TEST key will create and manage TEST passes (which do not count towards your active pass limit, but have a limited lifespan of 28 hours). Uisng a LIVE key will generate LIVE passes.\n\nYou cannot retrive information about, or modify a LIVE pass with a TEST key (and visa versa).\n\nYou must create pass templates in Smartix Studio before you can create and manage passes.\n\nArchived templates cannot be used to generate passses (but can be unarchived in Smartix Studio).",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "_exporter_id": "7151620",
    "_collection_link": "https://go.postman.co/collection/7151620-a5533aee-e3e2-41ba-a102-49cdf20ba5bd?source=collection_link"
  },
  "item": [
    {
      "name": "Passes API",
      "item": [
        {
          "name": "Make Pass",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              },
              {
                "key": "x-mode",
                "value": "live",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"event\": {\n        \"ticket\": {\n            \"scanned\": false,\n            \"scanned_datetime\": \"20260101000000\"\n        }\n    },\n    \"scan\": {\n        \"disabled\": false,\n        \"disabled_date\": \"20260101000000\",\n        \"note\": \"no note\"\n    }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/makePass/:template_id",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "makePass",
                ":template_id"
              ],
              "variable": [
                {
                  "key": "template_id",
                  "value": "offer",
                  "description": "Pass Template ID"
                }
              ]
            },
            "description": "# Make new pass\n\nThis endpoint is used to create pass data for a specific template and pass ID using data supplied in the request body.\n\n#### Returns\n\nURLs that can be used to install the pass on apple and gogogle devices.\n\nThe Apple and Google URLs are digitally signed, any modification will result in pass installation failure.\n\n#### Request\n\n- Method: PUT\n    \n- URL: `{{passes_url}}/makePass/:template_id/:pass_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n    - x-mode : Either \"live\" or \"test\". Determines whether a live or test pass wil be created. Default to \"LIVE\" if omitted.\n        \n- Path Parameters:\n    \n    - `template_id` (string): The ID of the template. (must match a pre-defined template)\n        \n    - `pass_id` (string): The ID of the pass (must be unique withing the specified template_id)\n        \n- Body:\n    \n    - JSON formatted data object containing all data referenced from your specific pass template required in order to personalise your pass. Use the sampel data provided in creator as a guide as to the required content of your pass data.\n        \n    - In addition, the following fixed values can be used to set specific attributes of your isssued pass.\n        \n        - **grouping**\n            \n            - **id** : (string) \\[Apple & Google\\] Several passes can be grouped together within a wallet by using a common grouping ID\n                \n            - **index** : (integer) \\[Google Only\\] You can speficy the order the passes appear on Google devices by using a sequential index value.\n                \n        - **pass_validity** \\[Apple & Google\\]\n            \n            - **start** : (date string) If specified, your pass will not be shown as valid until this start date. (NOTE: Apple passes do not use this field). Format : YYYYMMDDhhmmss\n                \n            - **end** : (date string) If specified, your pass will not be shown as valid after this end date. Format : YYYYMMDDhhmmss\n                \n                - NOTE: On Apple devices an expired pass is displayed with the barcode greyed out and with the serial number replaced with the text \"this pass has expired\". It is also moved to the expired passes section.\n                    \n                - NOTE: On Google devices, the pass is moved to the archived pass section. NOTE: It can take up to 24 hours for a pass to be moved.\n                    \n        - **relevance**\n            \n            - **beacons** : (array) \\[Apple Only\\] An object that represents the identifier of a Bluetooth Low Energy beacon the system uses to show a relevant pass\n                \n                - **major** : (integer) The major identifier of a Bluetooth Low Energy location beacon.\n                    \n                - **minor** : (integer) The minor identifier of a Bluetooth Low Energy location beacon.\n                    \n                - **proximityUUID** : (string) (Required) The unique identifier of a Bluetooth Low Energy location beacon.\n                    \n                - **relevantText** : (string) The text to display on the lock screen when the pass is relevant. For example, a description of a nearby location, such as `“Store nearby on 1st and Main”`.\n                    \n            - **locations** : (array) \\[Apple & Google\\] An object that represents a location that the system uses to show a relevant pass.\n                \n                - **altitude** : (double) \\[Apple Only\\] The altitude, in meters, of the location.\n                    \n                - **latitude** : (double) (Required) The latitude, in degrees, of the location.\n                    \n                - **longitude** : (double)(Required) The longitude, in degrees, of the location.\n                    \n                - **relevantText** : (string) \\[Apple Only\\] The text to display on the lock screen when the pass is relevant. For example, a description of a nearby location, such as `“Store nearby on 1st and Main”`.\n                    \n            - **relevant_dates** : (array) \\[Apple Only\\] An object that represents a date interval that the system uses to show a relevant pass. Either\n                \n                - **date** **:** date string) The date and time when the pass becomes relevant as a date string (YYYYMMDDhhmmss) eg. \"20250610105400\". Used for a single date.\n                    \n                - OR (for a date range)\n                    \n                - **start** : (date string) The date and time when the pass becomes relevant as a date string (YYYYMMDDhhmmss) eg. \"20250610105400\"\n                    \n                - **end** : (date string) (Required) The date and time for the pass relevancy interval to end as a date string (YYYYMMDDhhmmss) eg. \"20250610105400\"\n                    \n                - OR (valid from now until an end date)\n                    \n                - **end** : (date string) (Required) The date and time for the pass relevancy interval to end as a date string (YYYYMMDDhhmmss) eg. \"20250610105400\"\n                    \n\nExample request\n\n``` json\n{\n  \"pass\" : {\n    \"validity\" : {\n      \"start\" : \"20260101000000\",\n      \"end\" : null\n    },\n    \"relevance\" : {},\n    \"grouping\" : {\n      \"id\" : \"grouping idenntifier\",\n      \"index\" : 1\n    }\n  },\n  \"stamp\" : {\n    \"stamps\" : {\n      \"balance\" : 1\n    }\n  }\n}\n\n ```\n\n##### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - **appleUrl** : Url to pass to customer for them to install an Apple version of the pass\n        \n    - **googleUrl** : Url to pass to customer for them to install an Google version of the pass\n        \n    - **pass_id** : ID of the pass\n        \n\nExmpale response\n\n``` json\n{\n    \"appleUrl\": \"https://api.smartix.uk/pkpass/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjIjowLCJ0Ijoib2ZmZXIiLCJwIjoiMzlKSC1YV0Y2LUNHTVUtUVhRNCIsImlhdCI6MTc3OTk3MzA0NX0.0FEEMUSU3tm5GiJQmWXfdzdVHR0awgi4wBfzzuoUseM\",\n    \"googleUrl\": \"https://pay.google.com/gp/v/save/eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzbWFydGl4QHNtYXJ0aXgtMzA1ODE0LmlhbS5nc2VydmljZWFjY291bnQuY29tIiwiYXVkIjoiZ29vZ2xlIiwib3JpZ2lucyI6WyJ3d3cuc21hcnRpeC51ayJdLCJ0eXAiOiJzYXZldG93YWxsZXQiLCJwYXlsb2FkIjp7Im9mZmVyT2JqZWN0cyI6W3siaWQiOiIzMzg4MDAwMDAwMDEwMDczNjkzLjAub2ZmZXIuMzlKSC1YV0Y2LUNHTVUtUVhRNCJ9XX0sImlhdCI6MTc3OTk3MzA0OX0.A-O7e-KP-w1RTrP4rBylWjaVgdkD8g1K3fQHm8hm85IjNh95hUJwiuwZHWDUzBU27SisiH_YQGOAYZJxi3n82vhWWHhmUyLsbFMQFR6C1K4bb2qIdCcuKhjrjvCXh24omwKj1mwP0T-ULqZq_fS4lr7_2bJVrrd387lsvxv45zsgwFtfoKiz9epoBCPnqz6UV6GKxqGQwgf43dqY3w-H9ysMTLg4LaJjhnp_IOtCGb7VWyEejfd2Xm135CbfCJxYpFKvWLDvfLMCG3BapIFJBh3PZeLxjIWqbv49XbU3Jg47-9Edgi6sJYsNUcJWYV45ZiOVVqSIpYcvnNmz7cLAnA\",\n    \"mode\": \"live\",\n    \"ok\": true,\n    \"pass_id\": \"39JH-XWF6-CGMU-QXQ4\"\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Make Passes",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "Offline key\n",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"__grouping_id__\":  \"MEM.GROUP2\",\n    \"passes\": [\n        {\n            \"template_id\": \"smartix_membership_EKP_L31_RAB_MPA_BNY\",\n            \"pass_id\": \"MEM-TEST-12\",\n            \"instance_data\": {\n                \"test1\" : 1\n            },\n            \"scanner_instance_data\": {\n                \"test2\": 2\n            }\n        },\n        {\n            \"template_id\": \"smartix_membership_EKP_L31_RAB_MPA_BNY\",\n            \"pass_id\": \"MEM-TEST-13\",\n            \"instance_data\": {\n                \"test3\" : 3\n            }\n        }\n    ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/makePasses",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "makePasses"
              ]
            },
            "description": "# Make new passes (group)\n\nThis function is used to create a group of passes which will be displayed as a group in the user's wallet. You can supply a grouping id, or allow Smartix to generate one for you. If you specify your own grouping id it can be easier to add futher passes to that group later.\n\n#### Returns\n\nURLs that can be used to install the pass on apple and gogogle devices.\n\nThe Apple and Google URLs are digitally signed, any modification will result in pass installation failure.\n\n#### Request\n\n- Method: POST\n    \n- URL: `https://api.smartix.uk/passes-0101/makePasses/:template_id/:pass_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n    - x-mode : Either \"live\" or \"test\". Determines whether a live or test passes wil be created. Default to \"LIVE\" if omitted.\n        \n- Path Parameters:\n    \n    - `template_id` (string): The ID of the template. (must match a pre-defined template)\n        \n    - `pass_id` (string): The ID of the pass (must be unique withing the specified template_id)\n        \n\nBody: An array of pass data. See Make Pass for data format.\n\nExample request\n\n``` json\n{\n    \"passes\": [\n        {\n            \"template_id\": \"loyalty_GHL_5K8_YAP_DNX_PNT\",\n            \"pass_id\": \"LOYALTY_GROUP_11\",\n            \"data\": {\n                \"grouping\": {\n                    \"id\": \"LOYALTY.GROUP\",\n                    \"index\": 1\n                }\n            }\n        },\n        {\n            \"template_id\": \"loyalty_GHL_5K8_YAP_DNX_PNT\",\n            \"pass_id\": \"LOYALTY_GROUP_12\",\n            \"data\": {\n                \"grouping\": {\n                    \"id\": \"LOYALTY.GROUP\",\n                    \"index\": 2\n                }\n            }\n        }\n    ]\n}\n\n ```\n\n##### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - **appleGroupedUrl** : This link will install the whole group of Apple passes\n        \n    - **appleUrls** : Individual URLs for each Apple passes\n        \n    - **googleUrl** : This link will install the whole group of Google passes\n        \n\nExample response\n\n``` json\n{\n    \"appleGroupedUrl\": \"https://api.smartix.uk/pkpasses/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjIjoyLCJnIjoiMjMzRkhFQVhHSiIsImlhdCI6MTc2NTM4NTU4OX0.Q91OlIJQwbmr9Enw5i4NUP4Lp4qY3YOMr_Il8XjjCBA\",\n    \"appleUrls\": [\n        \"https://api.smartix.uk/pkpass/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjIjoyLCJ0IjoibG95YWx0eV9HSExfNUs4X1lBUF9ETlhfUE5UIiwicCI6IkxPWUFMVFlfR1JPVVBfMTYiLCJpYXQiOjE3NjUzODU1ODh9.E6cEDolCK8TdhwiWmA42GR2ZB1dkR0Gow9hlSogpJf4\",\n        \"https://api.smartix.uk/pkpass/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjIjoyLCJ0IjoibG95YWx0eV9HSExfNUs4X1lBUF9ETlhfUE5UIiwicCI6IkxPWUFMVFlfR1JPVVBfMTUiLCJpYXQiOjE3NjUzODU1ODh9.3G8D-ivIR3bK-Kh98n-lGvdSGOaX_mUBi8azGsGTDPc\"\n    ],\n    \"googleUrl\": \"https://pay.google.com/gp/v/save/eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzbWFydGl4QHNtYXJ0aXgtMzA1ODE0LmlhbS5nc2VydmljZWFjY291bnQuY29tIiwiYXVkIjoiZ29vZ2xlIiwib3JpZ2lucyI6WyJ3d3cuc21hcnRpeC51ayJdLCJ0eXAiOiJzYXZldG93YWxsZXQiLCJwYXlsb2FkIjp7ImxveWFsdHlPYmplY3RzIjpbeyJpZCI6IjMzODgwMDAwMDAwMTAwNzM2OTMubG95YWx0eV9HSExfNUs4X1lBUF9ETlhfUE5ULkxPWUFMVFlfR1JPVVBfMTYifSx7ImlkIjoiMzM4ODAwMDAwMDAxMDA3MzY5My5sb3lhbHR5X0dITF81SzhfWUFQX0ROWF9QTlQuTE9ZQUxUWV9HUk9VUF8xNSJ9XX0sImlhdCI6MTc2NTM4NTU4OX0.ENZSU0PBfbtz_fXPbhaJoAFDBWw2-8YIPceBNbvUKxn3KKU5SgAnRBRi-pnyTBi7JmGoEx3mO22sg93pPR-IZD8o_jcL6TxGEUYkBhMBVi3TDmD3_1yI3L-twfiihOW2ctHYLwvg2NTUHwKbQg09uoh01we7NLFvD_2kvagCbLCs6q0yG84UaMlg9d1HswW0tEbwRsBiKyRtB0BxArjtXfIlBWUgf4VAKwHO5rbpVXay1XDKjCJRPsg16LpFxaWjGorem0laKcyfiajjqmHqEqLu1ssDNHxM4B3CVud-uGPoNrK_9NSUnH-mxgiev9TsslIcYfuLurRAndIsyfj3ow\",\n    \"ok\": true\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Get Pass",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{passes_url}}/getPass/:pass_id",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "getPass",
                ":pass_id"
              ],
              "variable": [
                {
                  "key": "pass_id",
                  "value": "RV69-DL9P-PAFM-FAUG"
                }
              ]
            },
            "description": "# Get pass\n\nThis endpoint is used to retrieve data relating to an issued pass.\n\n#### Returns\n\nPass instance data, count of Apple and Google device installations, Apple pass URL, Google pass URL, timestamps)\n\n#### Request\n\n- Method: GET\n    \n- URL:`{{passes_url}}/:template_id/:pass_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `template_id` (string): The ID of the template.\n        \n    - `pass_id` (string): The ID of the pass.\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body:\n    \n    - pass\n        \n        - **client_id : your client ID**\n            \n        - **user_id** : ID of the user/API Key that created this pass\n            \n        - **template_id** : (string) Pass template ID\n            \n        - **pass_id** : (string) Pass ID\n            \n        - **mode** : (string) : Either \"live\" or \"test\"\n            \n        - **grouping_id** : A unique ID used to group multiple passes together in a wallet\n            \n        - **grouping_index** : Order of passes in the group (Google only)\n            \n        - **creation_timestamp** : (date string) Date and time pass created (YYYYMMDDhhmmss format)\n            \n        - **last_modified_apple_timestamp** : (date string) Date and time Apple version last modified (YYYYMMDDhhmmss format)\n            \n        - **last_modified_google_timestamp** : (date string) Date and time Google version last modified (YYYYMMDDhhmmss format)\n            \n        - **expiry_date** : Date and time pass wil expiry (no expiry is null). (YYYYMMDDhhmmss format)\n            \n        - **apple_url** : (string) URL to install Apple pass\n            \n        - **google_url** : (string) URL to install Google pass\n            \n        - **apple_installs** : (integer) Number of Apple devices pass is currently installed on\n            \n        - **google_installs** : (integer) Number of Google devices pass is currently installed on\n            \n        - **variables** : (object) Your unique pass data\n            \n        - **scanner_data** : (object) Data managed by Smartix Scan _\\*_\n            \n        - **scanner_audit_data** : (array) Record of scans made by Smartix Scan _**_\n            \n\nExample response\n\n``` json\n{\n    \"ok\": true,\n    \"pass\": {\n        \"apple_installs\": 0,\n        \"apple_sync_hash\": null,\n        \"apple_url\": \"https://api.smartix.uk/pkpass/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjIjowLCJ0Ijoib2ZmZXIiLCJwIjoiMzlKSC1YV0Y2LUNHTVUtUVhRNCIsImlhdCI6MTc3OTk3MzA0NX0.0FEEMUSU3tm5GiJQmWXfdzdVHR0awgi4wBfzzuoUseM\",\n        \"charge_applied\": 1,\n        \"client_id\": 0,\n        \"creation_timestamp\": \"20260528135725\",\n        \"expiry_date\": null,\n        \"google_installs\": 0,\n        \"google_object_sync_hash\": \"3e9d75865d08c2205441ff9d53685aa6e61234dee67b3e375cc148eb31e43cb9\",\n        \"google_url\": \"https://pay.google.com/gp/v/save/eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzbWFydGl4QHNtYXJ0aXgtMzA1ODE0LmlhbS5nc2VydmljZWFjY291bnQuY29tIiwiYXVkIjoiZ29vZ2xlIiwib3JpZ2lucyI6WyJ3d3cuc21hcnRpeC51ayJdLCJ0eXAiOiJzYXZldG93YWxsZXQiLCJwYXlsb2FkIjp7Im9mZmVyT2JqZWN0cyI6W3siaWQiOiIzMzg4MDAwMDAwMDEwMDczNjkzLjAub2ZmZXIuMzlKSC1YV0Y2LUNHTVUtUVhRNCJ9XX0sImlhdCI6MTc3OTk3MzA0OX0.A-O7e-KP-w1RTrP4rBylWjaVgdkD8g1K3fQHm8hm85IjNh95hUJwiuwZHWDUzBU27SisiH_YQGOAYZJxi3n82vhWWHhmUyLsbFMQFR6C1K4bb2qIdCcuKhjrjvCXh24omwKj1mwP0T-ULqZq_fS4lr7_2bJVrrd387lsvxv45zsgwFtfoKiz9epoBCPnqz6UV6GKxqGQwgf43dqY3w-H9ysMTLg4LaJjhnp_IOtCGb7VWyEejfd2Xm135CbfCJxYpFKvWLDvfLMCG3BapIFJBh3PZeLxjIWqbv49XbU3Jg47-9Edgi6sJYsNUcJWYV45ZiOVVqSIpYcvnNmz7cLAnA\",\n        \"grouping_id\": null,\n        \"grouping_index\": null,\n        \"has_smartix_advert\": 0,\n        \"key_id\": 1,\n        \"key_type\": \"key\",\n        \"last_modified_apple_timestamp\": \"20260528135725\",\n        \"last_modified_google_timestamp\": \"20260528135725\",\n        \"mode\": \"live\",\n        \"pass_id\": \"39JH-XWF6-CGMU-QXQ4\",\n        \"scanner_audit_data_enc\": [],\n        \"template_id\": \"offer\",\n        \"update_counter\": 0,\n        \"variables\": {\n            \"event\": {\n                \"ticket\": {\n                    \"scanned\": false,\n                    \"scanned_datetime\": \"20260101000000\"\n                }\n            },\n            \"pass\": {\n                \"pass_id\": \"39JH-XWF6-CGMU-QXQ4\"\n            },\n            \"scan\": {\n                \"disabled\": false,\n                \"disabled_date\": \"20260101000000\",\n                \"note\": \"no note\"\n            }\n        }\n    }\n}\n\n ```\n\n###### _\\*_ Smartix Scan data\n\nThese fields are only present for managed passes. **scanner_instance_data** contains scan related data, get number of loyalty points, number of scans, goft card balance etc. scanner_audit_data is a record of any changes made to **scanner_instance_data** by Smartix Scan or within Smartix Studio."
          },
          "response": []
        },
        {
          "name": "Add loyalty points",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/managed/loyalty/add/:pass_id /:num_points",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "loyalty",
                "add",
                ":pass_id ",
                ":num_points"
              ],
              "variable": [
                {
                  "key": "pass_id ",
                  "value": "RV69-DL9P-PAFM-FAUG"
                },
                {
                  "key": "num_points",
                  "value": "12"
                }
              ]
            },
            "description": "# Add managed pass loyalty points\n\nThis endpoint is used to add points to a managed loyalty card.\n\n#### Returns\n\nThe new points balance.\n\n#### Request\n\n- Method: PUT\n    \n- URL: `{{passes_url}}/managed/loyalty/add/:pass_id/:num_points`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n    - num_points (integer) : The number of points to add\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - points (integer) : new points balance\n        \n\n``` json\n{\n    \"ok\": true,\n    \"points\": 29896\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Remove loyalty points",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/managed/loyalty/remove/:pass_id /:num_points",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "loyalty",
                "remove",
                ":pass_id ",
                ":num_points"
              ],
              "variable": [
                {
                  "key": "pass_id ",
                  "value": "RV69-DL9P-PAFM-FAUG"
                },
                {
                  "key": "num_points",
                  "value": "61"
                }
              ]
            },
            "description": "# Remove managed pass loyalty points\n\nThis endpoint is used to remove points from a managed loyalty card.\n\nThis should be used for admin purposes. if customer is redeemign points, use **Redeem Loyalty Points** function intsead.\n\n#### Returns\n\nThe new points balance.\n\n#### Request\n\n- Method: PUT\n    \n- URL: `{{passes_url}}/managed/loyalty/remove/:pass_id/:num_points`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n    - num_points (integer) : The number of points to remove\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - points (integer) : new points balance\n        \n\n``` json\n{\n    \"ok\": true,\n    \"points\": 29896\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Add stampcard stamps",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/managed/stamp/add/:template_id/:pass_id /:num_stamps",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "stamp",
                "add",
                ":template_id",
                ":pass_id ",
                ":num_stamps"
              ],
              "variable": [
                {
                  "key": "template_id",
                  "value": "stamp_J5W_7PU_QGF_FAB_KX9"
                },
                {
                  "key": "pass_id ",
                  "value": "CGW3-TUSE-GUS4-KZKL"
                },
                {
                  "key": "num_stamps",
                  "value": "45"
                }
              ]
            },
            "description": "# Add managed pass stampcard stamps\n\nThis endpoint is used to add stamps to a managed stampcard card.\n\n#### Returns\n\nThe new stamps and full card balances.\n\n#### Request\n\n- Method: PUT\n    \n- URL: `{{passes_url}}/managed/stamp/add/:pass_id/:num_stamps`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `template_id` (string): The ID of the template.\n        \n    - `pass_id` (string): The ID of the pass.\n        \n    - num_stamps (integer) : The number of stamps to add\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - stamps (integer) : new stamps balance\n        \n    - cards (integer) : new full cards balance\n        \n\n``` json\n{\n    \"cards\": 187,\n    \"ok\": true,\n    \"stamps\": 1872\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Remove stampcard stamps",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/managed/stamp/remove/:pass_id /:num_stamps",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "stamp",
                "remove",
                ":pass_id ",
                ":num_stamps"
              ],
              "variable": [
                {
                  "key": "pass_id ",
                  "value": "CGW3-TUSE-GUS4-KZKL"
                },
                {
                  "key": "num_stamps",
                  "value": "61"
                }
              ]
            },
            "description": "# Remove managed pass stampcard stamps\n\nThis endpoint is used to remove stamps from a managed stampcard card. When redeemign cards, use **Redeem Stampcards** instead. Thsi functions is for removing stamps for other reasons.\n\n#### Returns\n\nThe new stamps and full card balances.\n\n#### Request\n\n- Method: PUT\n    \n- URL: `{{passes_url}}/managed/stamp/remove/:pass_id/:num_stamps`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n    - num_stamps (integer) : The number of stamps to remove\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - stamps (integer) : new stamps balance\n        \n    - cards (integer) : new full cards balance\n        \n\n``` json\n{\n    \"cards\": 187,\n    \"ok\": true,\n    \"stamps\": 1872\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Redeem stampcards",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/managed/stamp/redeem/:pass_id /:num_cards",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "stamp",
                "redeem",
                ":pass_id ",
                ":num_cards"
              ],
              "variable": [
                {
                  "key": "pass_id ",
                  "value": "CGW3-TUSE-GUS4-KZKL"
                },
                {
                  "key": "num_cards",
                  "value": "1"
                }
              ]
            },
            "description": "# Redeem Stampcards\n\nThis endpoint is used to redeemfull full managed stampcard cards.\n\n#### Returns\n\nThe new stamps and full card balances.\n\n#### Request\n\n- Method: PUT\n    \n- URL: `{{passes_url}}/managed/stamp/redeem/:pass_id/:num_cards`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n    - `num_cards` (integer) : The number of cards to redeem\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - stamps (integer) : new stamps balance\n        \n    - cards (integer) : new full cards balance\n        \n\n``` json\n{\n    \"cards\": 187,\n    \"ok\": true,\n    \"stamps\": 1872\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Redeem gift card",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/managed/gift/redeem/:pass_id /:amount",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "gift",
                "redeem",
                ":pass_id ",
                ":amount"
              ],
              "variable": [
                {
                  "key": "pass_id ",
                  "value": "FMPW-R3PS-KZLS-4SCC"
                },
                {
                  "key": "amount",
                  "value": "1.50"
                }
              ]
            },
            "description": "# Redeem Gift card\n\nThis endpoint is used to debit the balance of a managed gift card.\n\n#### Returns\n\nThe new stamps and full card balances.\n\n#### Request\n\n- Method: PUT\n    \n- URL: `{{passes_url}}/managed/gift/redeem/:pass_id/:amount`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n    - `amount` (money string) : The amount to debit\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - balance (money) : new balance\n        \n\n``` json\n{\n    \"balance\": \"25.00\",\n    \"ok\": true\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Refund gift card",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/managed/gift/refund/:pass_id /:amount",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "gift",
                "refund",
                ":pass_id ",
                ":amount"
              ],
              "variable": [
                {
                  "key": "pass_id ",
                  "value": "FMPW-R3PS-KZLS-4SCC"
                },
                {
                  "key": "amount",
                  "value": "12.57"
                }
              ]
            },
            "description": "# Refund Gift card\n\nThis endpoint is used to refund to the balance of a managed gift card.\n\n#### Returns\n\nThe new stamps and full card balances.\n\n#### Request\n\n- Method: PUT\n    \n- URL: `{{passes_url}}/managed/stamp/add/:pass_id/:amount`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n    - `amount` (money string) : The amount to refund\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - balance (money) : new balance\n        \n\n``` json\n{\n    \"balance\": \"25.00\",\n    \"ok\": true\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Redeem loyalty points",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/managed/loyalty/redeem/:pass_id /:num_points",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "loyalty",
                "redeem",
                ":pass_id ",
                ":num_points"
              ],
              "variable": [
                {
                  "key": "pass_id ",
                  "value": "RV69-DL9P-PAFM-FAUG"
                },
                {
                  "key": "num_points",
                  "value": "12"
                }
              ]
            },
            "description": "# Redeem managed pass loyalty points\n\nThis endpoint is used to remove points from a managed loyalty card.\n\nThis should be used when customer is redeemign points. If you wish to remove points for another reaosn, pelase use **Removel Lotalty Points** funciton instead.\n\n#### Returns\n\nThe new points balance.\n\n#### Request\n\n- Method: PUT\n    \n- URL: `{{passes_url}}/managed/loyalty/redeem/:pass_id/:num_points`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n    - num_points (integer) : The number of points to remove\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - points (integer) : new points balance\n        \n\n``` json\n{\n    \"ok\": true,\n    \"points\": 29896\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Set managed pass status",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"note\" : \"A test note\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/managed/status/:pass_id/:enabled",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "status",
                ":pass_id",
                ":enabled"
              ],
              "variable": [
                {
                  "key": "pass_id",
                  "value": "8P2-QPD-6V5"
                },
                {
                  "key": "enabled",
                  "value": "false"
                }
              ]
            },
            "description": "# Set managed pass (enabled) status\n\nThis endpoint is used to disable/enable a managed pass.\n\n#### Returns\n\nThe new status\n\n#### Request\n\n- Method: PUT\n    \n- URL: `{{passes_url}}/managed/status/:template_id/:pass_id/:enabled`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n    - enabled (boolean) : enable the card? (false = disable)\n        \n- Body\n    \n    - note (string) : the note to add to the pass\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - status (string) : new status (enabled or disabled)\n        \n\n``` json\n{\n    \"ok\": true,\n    \"status\": \"disabled\"\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Set managed pass note",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"note\" : \"A new note\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/managed/note/:pass_id ",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "note",
                ":pass_id "
              ],
              "variable": [
                {
                  "key": "pass_id ",
                  "value": "8P2-QPD-6V5"
                }
              ]
            },
            "description": "# Set managed pass note\n\nThis endpoint is used to add a note to a managed pass.\n\nNotes are visible in Smartix Scan.\n\n#### Returns\n\nThe new status\n\n#### Request\n\n- Method: PUT\n    \n- URL: `{{passes_url}}/managed/status/:pass_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n- Body :\n    \n    - note (string) : the not to attched to the pass\n        \n\nExample request\n\n``` json\n{\n    \"note\" : \"A new note\"\n}\n\n ```\n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - status (string) : new status (enabled or disabled)\n        \n\n``` json\n{\n    \"ok\": true,\n    \"status\": \"disabled\"\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "get Managed loyalty card data",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{passes_url}}/managed/loyalty/data/:pass_id ",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "loyalty",
                "data",
                ":pass_id "
              ],
              "variable": [
                {
                  "key": "pass_id ",
                  "value": "8P2-QPD-6V5"
                }
              ]
            },
            "description": "# Get managed loyalty card data\n\nThis endpoint is used to retrive the loyalty data for a pass. This differs from **getPass** in that only the data associated with the loyalty account is returned, rather than all pass data.\n\n#### Returns\n\nThe loyalty, scan and history data.\n\n#### Request\n\n- Method: GET\n    \n- URL: `{{passes_url}}/managed/loyalty/data/:pass_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - loyalty (object) :\n        \n        - history (object) :\n            \n            - collection (array) :\n                \n            - redemption (array) :\n                \n            - other (array) :\n                \n    - points (object) :\n        \n        - balance (integer) : current points balance\n            \n        - collected (integer) : total number of points collected\n            \n        - redeemed (integer) : number of points redeemed.\n            \n    - scan (object) :\n        \n        - disabled (boolean) : indicates if pass has been disabled\n            \n        - disabled_date (datetimestring) : if disabled, contains the date /time it was disabled\n            \n        - note (string) : Note attached to pass\n            \n\nExample response\n\n``` json\n{\n    \"loyalty\": {\n        \"history\": {\n            \"collection\": [\n                {\n                    \"action\": \"collect\",\n                    \"key_id\": 3,\n                    \"points_added\": 12,\n                    \"reference\": \"ABC16\",\n                    \"timestamp\": \"20260427104716\",\n                    \"username\": \"shop loyalty cards\"\n                },\n                {\n                    \"action\": \"collect\",\n                    \"key_id\": 3,\n                    \"points_added\": 12,\n                    \"reference\": \"ABC15\",\n                    \"timestamp\": \"20260421124322\",\n                    \"username\": \"shop loyalty cards\"\n                }\n            ],\n            \"other\": [],\n            \"redemption\": [\n                {\n                    \"action\": \"redeem\",\n                    \"key_id\": 3,\n                    \"points_redeemed\": 12,\n                    \"reference\": \"ABC11\",\n                    \"timestamp\": \"20260420163708\",\n                    \"username\": \"shop loyalty cards\"\n                },\n                {\n                    \"action\": \"redeem\",\n                    \"key_id\": 3,\n                    \"points_redeemed\": 12,\n                    \"reference\": \"ABC10\",\n                    \"timestamp\": \"20260420162424\",\n                    \"username\": \"shop loyalty cards\"\n                }\n            ]\n        },\n        \"points\": {\n            \"balance\": 36,\n            \"collected\": 36,\n            \"redeemed\": 0\n        },\n        \"scan\": {\n            \"disabled\": true,\n            \"disabled_date\": \"20260528163004\",\n            \"note\": \"A new note\"\n        }\n    },\n    \"ok\": true\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "get Managed stampcard data",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{passes_url}}/managed/stamp/data/:pass_id ",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "stamp",
                "data",
                ":pass_id "
              ],
              "variable": [
                {
                  "key": "pass_id ",
                  "value": "CGW3-TUSE-GUS4-KZKL"
                }
              ]
            },
            "description": "# Get managed stamp card data\n\nThis endpoint is used to retrive the stampcard data for a pass. This differs from **getPass** in that only the data associated with the stampcard account is returned, rather than all pass data.\n\n#### Returns\n\nThe stamps, cards, scan and history data.\n\n#### Request\n\n- Method: GET\n    \n- URL: `{{passes_url}}/managed/stamp/data/:pass_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - stamp (object) :\n        \n        - history (object) :\n            \n            - collection (array) :\n                \n            - redemption (array) :\n                \n            - other (array) :\n                \n    - stamps (object) :\n        \n        - balance (integer) : current points balance\n            \n        - collected (integer) : total number of points collected\n            \n    - caerds (object) :\n        \n        - balance (integer) : current full cards balance\n            \n        - collected (integer) : total cards filled\n            \n        - redeemed (integer) : number of full cards redeemed\n            \n    - scan (object) :\n        \n        - disabled (boolean) : indicates if pass has been disabled\n            \n        - disabled_date (datetimestring) : if disabled, contains the date /time it was disabled\n            \n        - note (string) : Note attached to pass\n            \n\nExample response\n\n``` json\n{\n    \"ok\": true,\n    \"stamp\": {\n        \"cards\": {\n            \"balance\": 187,\n            \"collected\": 6,\n            \"redeemed\": 15\n        },\n        \"history\": {\n            \"collection\": [\n                {\n                    \"action\": \"collect\",\n                    \"key_id\": 3,\n                    \"position\": null,\n                    \"reference\": null,\n                    \"stamps\": 45,\n                    \"timestamp\": \"20260528141732\",\n                    \"user_id\": null,\n                    \"username\": \"shop loyalty cards\"\n                },\n                {\n                    \"action\": \"collect\",\n                    \"key_id\": 1,\n                    \"position\": null,\n                    \"reference\": null,\n                    \"stamps\": 10,\n                    \"timestamp\": \"20260527103816\",\n                    \"user_id\": 1,\n                    \"username\": \"ian (bale)\"\n                }\n            ],\n            \"redemption\":[],\n            \"other\" : []\n        },\n        \"scan\": {\n            \"disabled\": false,\n            \"disabledDate\": null,\n            \"note\": null\n        },\n        \"stamps\": {\n            \"balance\": 2,\n            \"collected\": 2302\n        }\n    }\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "get Managed gift card data",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{passes_url}}/managed/gift/data/:pass_id ",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "gift",
                "data",
                ":pass_id "
              ],
              "variable": [
                {
                  "key": "pass_id ",
                  "value": "FMPW-R3PS-KZLS-4SCC"
                }
              ]
            },
            "description": "# Get managed gift card data\n\nThis endpoint is used to retrive the stampcard data for a pass. This differs from **getPass** in that only the data associated with the gift card is returned, rather than all pass data.\n\n#### Returns\n\nThe gift, scan and history data.\n\n#### Request\n\n- Method: GET\n    \n- URL: `{{passes_url}}/managed/gift/data/:pass_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - stamp (object) :\n        \n        - history (object) :\n            \n            - collection (array) :\n                \n            - redemption (array) :\n                \n            - other (array) :\n                \n    - gift (object) :\n        \n        - balance (integer) : current points balance\n            \n        - collected (integer) : total number of points collected\n            \n\nExample response\n\n``` json\n{\n    \"gift\": {\n        \"balance\": \"26.07\",\n        \"card_number\": \"5344-8931-3418-3266\",\n        \"gifted_amount\": 25,\n        \"history\": {\n            \"redemption\": [\n                {\n                    \"action\": \"debit\",\n                    \"amount_debited\": \"1.50\",\n                    \"key_id\": 3,\n                    \"position\": null,\n                    \"reference\": null,\n                    \"timestamp\": \"20260601101026\",\n                    \"user_id\": null,\n                    \"username\": \"shop loyalty cards\"\n                },\n                {\n                    \"action\": \"refund\",\n                    \"amount_credited\": \"12.57\",\n                    \"key_id\": 3,\n                    \"position\": null,\n                    \"reference\": null,\n                    \"timestamp\": \"20260601101006\",\n                    \"user_id\": null,\n                    \"username\": \"shop loyalty cards\"\n                }\n            ]\n        }\n    },\n    \"ok\": true,\n    \"scan\": {\n        \"disabled\": false,\n        \"disabled_date\": null,\n        \"note\": null\n    }\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "get Managed event ticket data",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{passes_url}}/managed/event/data/:pass_id ",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "event",
                "data",
                ":pass_id "
              ],
              "variable": [
                {
                  "key": "pass_id ",
                  "value": "TNRV-DE8N-2V6W-ZGSQ"
                }
              ]
            },
            "description": "# Get managed event ticket data\n\nThis endpoint is used to retrive the event ticket data for a pass. This differs from **getPass** in that only the data associated with the event is returned, rather than all pass data.\n\n#### Returns\n\nThe event, scan and history data.\n\n#### Request\n\n- Method: GET\n    \n- URL: `{{passes_url}}/managed/event/data/:pass_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - stamp (object) :\n        \n        - history (object) :\n            \n            - collection (array) :\n                \n            - redemption (array) :\n                \n            - other (array) :\n                \n    - event (object) :\n        \n        - ticket (object) :\n            \n            - scanned (boolean) : whether ticket has been scanned or not\n                \n            - scanned_datetime (datetime string) : id scanned, date and time of scan.\n                \n            - other ticket data such as gate, section, seat, ticket type etc.\n                \n\nExample response\n\n``` json\n{\n    \"event\": {\n        \"ticket\": {\n            \"scanned\": true,\n            \"scanned_datetime\": \"20260527122134\"\n        }\n    },\n    \"ok\": true,\n    \"scan\": {\n        \"disabled\": false\n    }\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "get Managed membership card data",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{passes_url}}/managed/membership/data/:pass_id ",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "managed",
                "membership",
                "data",
                ":pass_id "
              ],
              "variable": [
                {
                  "key": "pass_id ",
                  "value": "TP8U-EHVJ-RCME"
                }
              ]
            },
            "description": "# Get managed membership card data\n\nThis endpoint is used to retrive the membership data for a pass. This differs from **getPass** in that only the data associated with the membership is returned, rather than all pass data.\n\n#### Returns\n\nThe event, scan and history data.\n\n#### Request\n\n- Method: GET\n    \n- URL: `{{passes_url}}/managed/membership/data/:pass_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - ok (boolean) : execution status\n        \n    - stamp (object) :\n        \n        - history (object) :\n            \n            - collection (array) :\n                \n            - redemption (array) :\n                \n            - other (array) :\n                \n    - membership (object) :\n        \n        - expiry_date (datetyime string) : date of membershiip expiry (or null)\n            \n        - member_name (string) : member's name (optiona)\n            \n        - membership_number (string) : member's membership number (optional)\n            \n        - tier (string) : membership tier (optional)\n            \n        - discount _percentage (number) : discount given to member (optional)\n            \n\nExample response\n\n``` json\n{\n    \"membership\": {\n        \"expiry_date\": \"20250606000000\",\n        \"member_name\": \"Jake Dumphries\",\n        \"membership_number\": \"JD56123\",\n        \"tier\": \"White\"\n    },\n    \"ok\": true,\n    \"scan\": {\n        \"disabled\": false,\n        \"disabled_date\": null,\n        \"note\": \"\"\n    }\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Get Template Variables",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{passes_url}}/getTemplateVariables/:template_id",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "getTemplateVariables",
                ":template_id"
              ],
              "variable": [
                {
                  "key": "template_id",
                  "value": "smartix_membership_EKP_L31_RAB_MPA_BNY"
                }
              ]
            },
            "description": "# Get template variables\n\nThis endpoint is used to retrieve template (default pass) variables\n\n#### Returns\n\nA variables object\n\n#### Request\n\n- Method: GET\n    \n- URL:`{passes_url}/getTemplateVariables/:template_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- URL parameters\n    \n    - template_id (string) : Template ID\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body:\n    \n    - variables (object) : Typical content:\n        \n        - barcode (object) :\n            \n            - format (string) : Barcode format (QR_CODE, AZTEC, PDF_417 or CODE_128)\n                \n            - payload (string) : Barcode payload\n                \n            - text (string) : Text that sites below barcode. Often pass_id.\n                \n        - colours (object) :\n            \n            - background (hex colour) :\n                \n            - foreground (hex colour) :\n                \n            - label (hex colour) :\n                \n            - strip (hex colour) :\n                \n        - images (object) :\n            \n            - apple (object) :\n                \n                - icon (string) : URL of Apple icon image (required)\n                    \n                - logo (string) : URL of Apple logo image (required)\n                    \n                - thumbnail (string): URL of Apple thumbnail image (optional)\n                    \n                - strip (string): URL of Apple strip image (optional)\n                    \n                - backgriund (string): URL of Apple background image (optional)\n                    \n            - google (object) :\n                \n                - logo (string) : URL of Google logo image (required)\n                    \n                - wide_logo (string) : URL of Google wide_logo image (optional)\n                    \n                - hero (string) : URL of Google hero image (optional)\n                    \n            - pass (object) :\n                \n                - pass_id (string) : Pass unique ID (required - readonly)\n                    \n                - header (string) : header text\n                    \n                - subheader (string) : subheader text (optional)\n                    \n                - issuer_name (string) : pass issuer\n                    \n                - title (string) : pass title text\n                    \n                - grouping (object) :\n                    \n                    - id (string) : grouoing identifier\n                        \n                    - index (integer) : grouping order\n                        \n            - scan (object) : (required for managed passes)\n                \n                - disabled (boolean) : indicated if pass has been disabled\n                    \n                - disabled_date_time (datetiem string) : if disabled, the date/time it was disabled\n                    \n                - note (string) : Note attached ot the pass\n                    \n\n**NOTE**: variables can reference other variables using {{var name}} syntax. eg. in the example below, barcode.text = {{pass.pass_id}} which means use the value from pass.pass_id as the barcode text.\n\nExample response\n\n``` json\n{\n    \"ok\": true,\n    \"variables\": {\n        \"barcode\": {\n            \"format\": \"QR_CODE\",\n            \"payload\": \"1.A.000-000-000-000\",\n            \"text\": \"{{pass.pass_id}}\"\n        },\n        \"colours\": {\n            \"background\": \"#ffffff\",\n            \"foreground\": \"#000000\",\n            \"label\": \"#3d3d3d\",\n            \"strip\": \"#ffffff\"\n        },\n        \"images\": {\n            \"apple\": {\n                \"icon\": \"https://s3.eu-west-1.amazonaws.com/images.smartix.uk/2/apple/icon/C-20260209120645-20260210091007.png\",\n                \"logo\": \"https://s3.eu-west-1.amazonaws.com/images.smartix.uk/2/apple/logo/C-20260209120645-20260210090954.png\",\n                \"thumbnail\": \"https://s3.eu-west-1.amazonaws.com/images.smartix.uk/2/apple/thumbnail/membership-apple-thumbnail-20250924134410.png\"\n            },\n            \"google\": {\n                \"hero\": \"https://s3.eu-west-1.amazonaws.com/images.smartix.uk/2/google/hero/bwclub-an-other-20260210095327.png\",\n                \"logo\": \"https://s3.eu-west-1.amazonaws.com/images.smartix.uk/2/google/logo/C-20260209120645-20260210091017.png\"\n            }\n        },\n        \"membership\": {\n            \"discount_percentage\": 10,\n            \"expiry_date\": \"20270213\",\n            \"history\": {\n                \"scans\": \"\"\n            },\n            \"member_name\": \"Bob\",\n            \"membership_number\": \"M123123\",\n            \"tier\": \"VIP\"\n        },\n        \"pass\": {\n            \"description\": \"\",\n            \"grouping\": {\n                \"id\": \"smartix-demo\",\n                \"index\": null\n            },\n            \"header\": \"{{membership.member_name}}\",\n            \"issuer_name\": \"Smartix.Demos\",\n            \"pass_id\": \"000-000-000\",\n            \"subheader\": \"MEMBER\",\n            \"title\": \"Black & White Club\"\n        },\n        \"scan\": {\n            \"disabled\": false,\n            \"disabled_date\": null,\n            \"note\": null\n        }\n    }\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Get Passes",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"passes\" : [\n        \"39JH-XWF6-CGMU-QXQ4\",\n        \"DXPQ-MFBF-6AG4-UGQK\"\n    ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/getPasses",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "getPasses"
              ]
            },
            "description": "# Get passes\n\nThis endpoint is used to retrieve data relating to a list of issued passes.\n\nIt is essentially the same as **getPass**, but allows you to retieve dfata about several passes in a single request,\n\n#### Returns\n\nAn array of pass data (see **getPass**)\n\n#### Request\n\n- Method: POST\n    \n- URL:`{passes_url}/getPasses:template_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Body\n    \n\nExample Requests\n\n``` json\n{\n    \"passes\" : [\n        \"39JH-XWF6-CGMU-QXQ4\",\n        \"DXPQ-MFBF-6AG4-UGQK\"\n    ]\n}\n\n ```\n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body:\n    \n    - **passes** : (array) of pass IDs\n        \n\nExample response\n\n``` json\n{\n    \"ok\": true,\n    \"passes\": [\n        {\n            \"apple_installs\": 0,\n            \"apple_sync_hash\": null,\n            \"apple_url\": \"https://api.smartix.uk/pkpass/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjIjowLCJ0Ijoib2ZmZXIiLCJwIjoiMzlKSC1YV0Y2LUNHTVUtUVhRNCIsImlhdCI6MTc3OTk3MzA0NX0.0FEEMUSU3tm5GiJQmWXfdzdVHR0awgi4wBfzzuoUseM\",\n            \"charge_applied\": 1,\n            \"client_id\": 0,\n            \"creation_timestamp\": \"20260528135725\",\n            \"expiry_date\": null,\n            \"google_installs\": 0,\n            \"google_object_sync_hash\": \"3e9d75865d08c2205441ff9d53685aa6e61234dee67b3e375cc148eb31e43cb9\",\n            \"google_url\": \"https://pay.google.com/gp/v/save/eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzbWFydGl4QHNtYXJ0aXgtMzA1ODE0LmlhbS5nc2VydmljZWFjY291bnQuY29tIiwiYXVkIjoiZ29vZ2xlIiwib3JpZ2lucyI6WyJ3d3cuc21hcnRpeC51ayJdLCJ0eXAiOiJzYXZldG93YWxsZXQiLCJwYXlsb2FkIjp7Im9mZmVyT2JqZWN0cyI6W3siaWQiOiIzMzg4MDAwMDAwMDEwMDczNjkzLjAub2ZmZXIuMzlKSC1YV0Y2LUNHTVUtUVhRNCJ9XX0sImlhdCI6MTc3OTk3MzA0OX0.A-O7e-KP-w1RTrP4rBylWjaVgdkD8g1K3fQHm8hm85IjNh95hUJwiuwZHWDUzBU27SisiH_YQGOAYZJxi3n82vhWWHhmUyLsbFMQFR6C1K4bb2qIdCcuKhjrjvCXh24omwKj1mwP0T-ULqZq_fS4lr7_2bJVrrd387lsvxv45zsgwFtfoKiz9epoBCPnqz6UV6GKxqGQwgf43dqY3w-H9ysMTLg4LaJjhnp_IOtCGb7VWyEejfd2Xm135CbfCJxYpFKvWLDvfLMCG3BapIFJBh3PZeLxjIWqbv49XbU3Jg47-9Edgi6sJYsNUcJWYV45ZiOVVqSIpYcvnNmz7cLAnA\",\n            \"grouping_id\": null,\n            \"grouping_index\": null,\n            \"has_smartix_advert\": 0,\n            \"key_id\": 1,\n            \"key_type\": \"key\",\n            \"last_modified_apple_timestamp\": \"20260528135725\",\n            \"last_modified_google_timestamp\": \"20260528135725\",\n            \"mode\": \"live\",\n            \"pass_id\": \"39JH-XWF6-CGMU-QXQ4\",\n            \"scanner_audit_data_enc\": [],\n            \"template_id\": \"offer\",\n            \"update_counter\": 0,\n            \"variables\": {\n                \"event\": {\n                    \"ticket\": {\n                        \"scanned\": false,\n                        \"scanned_datetime\": \"20260101000000\"\n                    }\n                },\n                \"pass\": {\n                    \"pass_id\": \"39JH-XWF6-CGMU-QXQ4\"\n                },\n                \"scan\": {\n                    \"disabled\": false,\n                    \"disabled_date\": \"20260101000000\",\n                    \"note\": \"no note\"\n                }\n            }\n        },\n        {\n            \"apple_installs\": 0,\n            \"apple_sync_hash\": null,\n            \"apple_url\": \"https://api.smartix.uk/pkpass/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjIjowLCJ0Ijoib2ZmZXIiLCJwIjoiRFhQUS1NRkJGLTZBRzQtVUdRSyIsImlhdCI6MTc3OTk3MzI2M30._32b3NybhWPFO_bLBTbXSCJp3EsMfOWAvjoMTsZUF14\",\n            \"charge_applied\": 1,\n            \"client_id\": 0,\n            \"creation_timestamp\": \"20260528140103\",\n            \"expiry_date\": null,\n            \"google_installs\": 0,\n            \"google_object_sync_hash\": \"f112510517a29b89a9051b117803b09af814972c2ce47aeabce8020cfb72ff51\",\n            \"google_url\": \"https://pay.google.com/gp/v/save/eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzbWFydGl4QHNtYXJ0aXgtMzA1ODE0LmlhbS5nc2VydmljZWFjY291bnQuY29tIiwiYXVkIjoiZ29vZ2xlIiwib3JpZ2lucyI6WyJ3d3cuc21hcnRpeC51ayJdLCJ0eXAiOiJzYXZldG93YWxsZXQiLCJwYXlsb2FkIjp7Im9mZmVyT2JqZWN0cyI6W3siaWQiOiIzMzg4MDAwMDAwMDEwMDczNjkzLjAub2ZmZXIuRFhQUS1NRkJGLTZBRzQtVUdRSyJ9XX0sImlhdCI6MTc3OTk3MzI2NH0.TF2ehaXTxM2HqsWM8h09wns3llcRHrSyBuHqbhdCyYxb9pK34JmbtbKBN__oJfu8HRLELu1Dao6kmjT9bXC9KqtXMPIczLZTQUZPa3-69Banyx_KUQk7iP3Dt6YmK_xD5s6xOe-7MzOd-jmSbBPGUkompC7jCBY_N8NrUU_KXw9dB8XDGN60NcSU_ejMwXUYanuHEt96LcdL3dUC0CNL0v160lsGBtMzgDuIuUny93sSDSYaFgJZJW5h-6XQOPgdGjtj-N4id-sBkuJj0m87qOwTrJVlEQqc1Nn9hMaOR4tJLLarYX2sHzVU4sq2apRoRzhc8kt1g8AZOQNCDqSA-w\",\n            \"grouping_id\": null,\n            \"grouping_index\": null,\n            \"has_smartix_advert\": 0,\n            \"key_id\": 1,\n            \"key_type\": \"key\",\n            \"last_modified_apple_timestamp\": \"20260528140103\",\n            \"last_modified_google_timestamp\": \"20260528140103\",\n            \"mode\": \"live\",\n            \"pass_id\": \"DXPQ-MFBF-6AG4-UGQK\",\n            \"scanner_audit_data_enc\": [],\n            \"template_id\": \"offer\",\n            \"update_counter\": 0,\n            \"variables\": {\n                \"event\": {\n                    \"ticket\": {\n                        \"scanned\": false,\n                        \"scanned_datetime\": \"20260101000000\"\n                    }\n                },\n                \"pass\": {\n                    \"pass_id\": \"DXPQ-MFBF-6AG4-UGQK\"\n                },\n                \"scan\": {\n                    \"disabled\": false,\n                    \"disabled_date\": \"20260101000000\",\n                    \"note\": \"no note\"\n                }\n            }\n        }\n    ]\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Get Pass Notifications",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{passes_url}}/getPassNotifications/:pass_id",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "getPassNotifications",
                ":pass_id"
              ],
              "variable": [
                {
                  "key": "pass_id",
                  "value": "39JH-XWF6-CGMU-QXQ4"
                }
              ]
            },
            "description": "# Get pass notifications\n\nThis endpoint is used to retrieve notifications sent to a pass.\n\n#### Request\n\n- Method: GET\n    \n- URL: `{{passes_url}}/getPassNotifications/:template_id/:pass_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body:\n    \n    - **notifications** : (array) Array of notifications\n        \n        - **ts** : (datestring) : Notification timestamp\n            \n        - **message** : (string) Notification message\n            \n\n``` json\n{\n    \"notifications\": [\n        {\n            \"message\": \"Your renewal is due\",\n            \"ts\": \"202511051333\"\n        },\n        {\n            \"message\": \"Your policy has been renewed\",\n            \"ts\": \"202512011200\"\n        }\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Get Active Pass Count",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{passes_url}}/getActivePassesCount",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "getActivePassesCount"
              ]
            },
            "description": "# Get active pass count\n\nThis endpoint is used to retrieve a count of your current number of active passes.\n\n#### Request\n\n- Method: GET\n    \n- URL: `{{passes_url}}/getActivePassesCount`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body:\n    \n    - **templates** : (array) One item per template\n        \n        - **template_id** : (string) Template ID\n            \n        - **name** : (string) Template name\n            \n        - **counter** : (integer) Numebr of active passes associated with this template\n            \n    - **total** : (integer) Total number of active passes\n        \n\n``` json\n{\n    \"ok\": true,\n    \"templates\": [\n        {\n            \"counter\": 1,\n            \"name\": \"Test Gift\",\n            \"template_id\": \"smartix_gift_N6V_9JM_P3C_7N5_R9K\"\n        }\n    ],\n    \"total\": 1\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Delete Pass",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{passes_url}}/deletePass/:pass_id",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "deletePass",
                ":pass_id"
              ],
              "variable": [
                {
                  "key": "pass_id",
                  "value": "DXPQ-MFBF-6AG4-UGQK"
                }
              ]
            },
            "description": "# Delete pass\n\nThis endpoint is used to delete a pass\n\n#### Request\n\n- Method: DELETE\n    \n- URL: `{{passes_url}}/deletePass/:pass_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n\nNOTE: No warning is given if the requested pass does not exist / has already been deleted."
          },
          "response": []
        },
        {
          "name": "Delete Passes",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"passes\" : [\n        \"LOYALTY_GROUP_9\",\n        \"LOYALTY_GROUP_10\"\n    ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/deletePasses",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "deletePasses"
              ]
            },
            "description": "# Delete passes\n\nThis endpoint is used to delete a list of passes.\n\n#### Request\n\n- Method: GET\n    \n- URL: `{{passes_url}}/deletePasses`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Body:\n    \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body:\n    \n- passes (array) : array of pass_id\n    \n\nReturns\n\n- num_passes_deleted : (string) A conformation of the number of passes deleted\n    \n\nNOTE: No warning is given if any of the requestes passes do not exist / have already been deleted.\n\n``` json\n{\n    \"num_passes_deleted\": 0,\n    \"ok\": true\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Patch Pass",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"policy\": {\n        \"policy_number\": \"X98765\"\n    },\n    \"policy.vehicle\": \"Ford Puma\",\n    \"pass.validity.end\": null,\n    \"relevance\": {}\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/patchPass/:pass_id",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "patchPass",
                ":pass_id"
              ],
              "variable": [
                {
                  "key": "pass_id",
                  "value": "EVHB-3LUV-R3KT"
                }
              ]
            },
            "description": "# Patch Pass\n\nThis endpoint is used to update an existing pass.\n\nOnly the supplied fields are modified. All other fields will retain their existing value. To remove a field send a null value.\n\nSee _**makePass**_ function for details of the request data content.\n\nif you are replacing the entire pass content, please use the **updatePass** method instead.\n\n#### Request\n\n- Method: PATCH\n    \n- URL: `{{passes_url}}/patchPass/:pass_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n- Body\n    \n    - JSON pass data (only fields that are to be updated)\n        \n\n``` json\n{\n   \"event_date\": \"20261101120000\"\n}\n\n ```\n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body : {ok:true} if successful"
          },
          "response": []
        },
        {
          "name": "Patch Template Variables",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"membership\": {\n        \"tier\": \"Standard\"\n    }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/patchTemplateVariables/:template_id",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "patchTemplateVariables",
                ":template_id"
              ],
              "variable": [
                {
                  "key": "template_id",
                  "value": "smartix_membership_EKP_L31_RAB_MPA_BNY"
                }
              ]
            },
            "description": "# Patch template variables\n\nThis endpoint is used to patch template (default pass) variables\n\nVariables provided are merged with the existing variables with new values overwriting old values.\n\nAfter merge a sync is initiated. Any passes where content changes as a result of the new template values will be updated.\n\n#### Request\n\n- Method: PATCH\n    \n- URL:`{passes_url}/patchTemplateVariables/:template_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- URL parameters\n    \n    - template_id (string) : Template ID\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body:\n    \n    - ok (boolean) : true if request suceeded"
          },
          "response": []
        },
        {
          "name": "Patch Passes",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{passes_url}}/patchPasses/:template_id",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "patchPasses",
                ":template_id"
              ],
              "variable": [
                {
                  "key": "template_id",
                  "value": "insurance_demo"
                }
              ]
            },
            "description": "# Patch Passes\n\nThis endpoint is used to update common instance data for a supplied list of passes\n\nOnly the supplied fields are modified. All other fields will retain their existing value. To remove a field send a null value.\n\nBe aware that the data values you supply will be applied to all of the listed passes. So use this function only for updating data that applies to all of those passes.\n\nYou cannot use this function to patch different values to a range of passes. To do that use **patchPass** for each pass you wish to update.\n\nSee _**makePass**_ function for details of the request data content.\n\nif you are repreplacing the entire pass content, please use the update_**Pass**_ method instead.\n\n#### Request\n\n- Method: PATCH\n    \n- URL: `{{passes_url}}/patchPass/:template_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `template_id` (string): The ID of the template.\n        \n    - `pass_id` (string): The ID of the pass.\n        \n- Body\n    \n    - JSON pass data (only fields that are to be updated)\n        \n\n``` json\n{\n   \"event_date\": \"20261101120000\"\n}\n\n ```\n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body (See **getPass**. THis function returns the same full pass data)"
          },
          "response": []
        },
        {
          "name": "Patch All Passes",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"policy.vehicle\": \"BMW i5\",\n    \"relevance\": {}\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/patchAllPasses/:template_id",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "patchAllPasses",
                ":template_id"
              ],
              "variable": [
                {
                  "key": "template_id",
                  "value": "insurance_demo"
                }
              ]
            },
            "description": "# Patch All Passes\n\nThis endpoint is used to update common instance data for all passes\n\nOnly the supplied fields are modified. All other fields will retain their existing value. To remove a field send a null value.\n\nBe aware that the data values you supply will be applied to ALL passes. So use this function only for updating data that applies to all passes.\n\nYou cannot use this function to patch different values to a range of passes. To do that use **patchPass** for each pass you wish to update.\n\nSee _**makePass**_ function for details of the request data content.\n\n#### Request\n\n- Method: PATCH\n    \n- URL: `{{passes_url}}/patchPass/:template_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `template_id` (string): The ID of the template.\n        \n    - `pass_id` (string): The ID of the pass.\n        \n- Body\n    \n    - JSON pass data (only fields that are to be updated)\n        \n\n``` json\n{\n   \"event_date\": \"20261101120000\"\n}\n\n ```\n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body (See **getPass**. This function returns the same full pass data)"
          },
          "response": []
        },
        {
          "name": "Notify pass",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "Offline key\n",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"notification\" : \"Hello\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/notifyPass/:pass_id",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "notifyPass",
                ":pass_id"
              ],
              "variable": [
                {
                  "key": "pass_id",
                  "value": "39JH-XWF6-CGMU-QXQ4"
                }
              ]
            },
            "description": "# Notify Pass\n\nThis endpoint is used to send a notifiation to a pass.\n\nThe handling of Apple and Google is slightly different:\n\n##### Apple\n\nA lock screen alert is displayed showing the content of the new notification.\n\nTwo extra fields are included in the details section of Apple passes: notification and messages.\n\nThe new notification is displayed in the notification field. Any prior notifications are lsted in the messages field.\n\n##### Google\n\nA lock screen notification indicates that a notification has been received for a pass (text is fixed by Google).\n\nAll notifications (new one, plus any prior ones) are displayed in a messages field in the opass details section.\n\n#### Fair use policy\n\nWe expect you to use this feature in a reasonable manner. DO NOT send unsolicited notifications. Frequent notificsations to large numbers of passes will be reviewed an if considered to be ouside of reasonable and fair use then a warning will be give. Repeat offence coudl lead to your account being suspended.\n\n`For details see`https://docs.smartix.uk/terms/fair-use-policy\n\n#### Request\n\n- Method: POST\n    \n- URL: {{passes_url}}/notifyPass/:pass_id\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `pass_id` (string): The ID of the pass.\n        \n- Body\n    \n    - **title** : (string) Notification title\n        \n    - **body** (string) Notification body content\n        \n\n``` json\n{\n    \"title\" : \"New itinerary\",\n    \"body\" : \"We have calculated a new itinerary for your journey. See ticket details.\"\n}\n\n ```\n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - **notifications** : (array) - array of prior and new notifications\n        \n        - **title** : (string) Notification title\n            \n        - **body** : (string) Notification body conents\n            \n        - **timestamp** : (date string) Timestamp of notification (YYYYMMDDhhmmss format)\n            \n\n``` json\n{\n    \"notifications\": [\n        {\n            \"body\": \"We have calculated a new itinerary for your journey. See ticket details.\",\n            \"timestamp\": \"202505161436\",\n            \"title\": \"New itinerary\"\n        }\n    ]\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Notify passes",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "Offline key\n",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"pass_ids\": [\n        \"39JH-XWF6-CGMU-QXQ4\"\n    ],\n    \"notification\": \"Hello World\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/notifyPasses/:template_id",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "notifyPasses",
                ":template_id"
              ],
              "variable": [
                {
                  "key": "template_id",
                  "value": "offer"
                }
              ]
            },
            "description": "# Notify Passes\n\nThis endpoint is used to send a notifiation to a list of passes\n\nSee **notifyPass** for details.\n\nWhere **notifyPass** send notifications immediately, **notifyPasses** add notifications to a queue. That queue is processed in order so that notifications are delivered as quickly as possible. If delivery fails, then a notification remains in the queue and is processed again.\n\nIf you need to notify multiple passes this function is more efficient that **notifyPass** and should be used in preference.\n\nIf you need to notify all issued passes then use **notifyAllPasses** function.\n\n#### Fair use policy\n\nWe expect you to use this feature in a reasonable manner. DO NOT send unsolicited notifications. Frequent notificsations to large numbers of passes will be reviewed an if considered to be ouside of reasonable and fair use then a warning will be give. Repeat offence coudl lead to your account being suspended.\n\n`For details see`[https://docs.smartix.uk/terms/fair-use-policy](https://docs.smartix.uk/terms/fair-use-policy)\n\n#### Request\n\n- Method: POST\n    \n- URL: `{{passes_url}}/notifyPasses/:template_id`\n    \n- Headers:\n    \n- x-api-key : Your API key\n    \n- Path Parameters:\n    \n    - `template_id` (string): The ID of the template.\n        \n- Body\n    \n    - **pass_ids** : (array) Array of pss IDs\n        \n    - **notification** (string) The notification message\n        \n\n``` json\n{\n    \"pass_ids\": [\n        \"LOYALTY_GROUP_7\",\n        \"LOYALTY_GROUP_8\"\n    ],\n    \"notification\": \"Hello World\"\n}\n\n ```\n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - queued : (integer) A confirmation of the number of notifications queued for delivery to passes.\n        \n\n``` json\n{\n    \"ok\": true,\n    \"queued\": 2\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Notify all passes",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "Offline key\n",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"notification\" : \"Testing notify stamps 5\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{passes_url}}/notifyAll/:template_id",
              "host": [
                "{{passes_url}}"
              ],
              "path": [
                "notifyAll",
                ":template_id"
              ],
              "variable": [
                {
                  "key": "template_id",
                  "value": "offer"
                }
              ]
            },
            "description": "# Notify all passes\n\nThis end point send a notification to all issued passes for a given template.\n\nNotifications are queued and will be delivered as quicly as possible.\n\nIf you do not need a notification to go to **all** passes consider **notifyPasses** or **notifyPass** instead.\n\n#### Fair use policy\n\nWe expect you to use this feature in a reasonable manner. DO NOT send unsolicited notifications. Frequent notificsations to large numbers of passes will be reviewed an if considered to be ouside of reasonable and fair use then a warning will be give. Repeat offence coudl lead to your account being suspended.\n\n`For details see`[https://docs.smartix.uk/terms/fair-use-policy](https://docs.smartix.uk/terms/fair-use-policy)\n\n#### Request\n\n- Method: PUT\n    \n- URL: `{{passes_url}}/notifyAll/:template_id/`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `template_id` (string): The ID of the template.\n        \n- Body\n    \n    - **title** : (string) Notification title\n        \n    - **body** (string) Notification body content\n        \n\n``` json\n{\n    \"notification\" : \"Testing notify all\"\n}\n\n ```\n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - **notifications** : (array) - array of prior and new notifications\n        \n        - **class_result** : (object)\n            \n            - **google_result** : (boolean) confirms that update sent to google API\n                \n            - **message_id** :(string) ID assigned by google\n                \n            - **template_id** : (string) Confirmation of the template notification sent to\n                \n        - **queued** : (integer) Number of \\[installed\\] apple passes queued for notification.\n            \n\n``` json\n{\n    \"class_result\": {\n        \"google_result\": true,\n        \"message_id\": \"Q735UYD47YBB\",\n        \"template_id\": \"loyalty_GHL_5K8_YAP_DNX_PNT\"\n    },\n    \"ok\": true,\n    \"queued\": 13\n}\n\n ```"
          },
          "response": []
        }
      ],
      "description": "Functions relating to creating, updating, deleting and quering passes.\n\nAlso funciton for sending notifications."
    },
    {
      "name": "Client API",
      "item": [
        {
          "name": "get Users",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{clients_url}}/getUsers",
              "host": [
                "{{clients_url}}"
              ],
              "path": [
                "getUsers"
              ]
            },
            "description": "# Get users\n\nThis endpoint is used to retrieve a list of users associated with your account.\n\n**NOTE**: You need an API key with client admin permission enabled to use thos function.\n\n#### Request\n\n- Method: GET\n    \n- URL: `{{clients_url}}/getUsers`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body:\n    \n    - **users** : (array)\n        \n        - **client_admin_enabled** : (boolean) 1= user is authorised to mange client data\n            \n        - **email** : (string) Email address\n            \n        - **scanner_enabled** : (boolean) 1= user is authorised to use Smartix Scan App\n            \n        - **studio_enabled** : (boolean) 1 = user is authorised to use Smartix Studio\n            \n        - **user_enabled** : (boolean) 0 = user disabled, All access is restricted\n            \n        - **user_id** : (integer) User ID\n            \n        - **username** : (string) Username\n            \n\n``` json\n{\n    \"ok\": true,\n    \"users\": [\n        {\n            \"client_admin_enabled\": 1,\n            \"email\": \"user1@null.com\",\n            \"scanner_enabled\": 1,\n            \"studio_enabled\": 1,\n            \"user_enabled\": 1,\n            \"user_id\": 1,\n            \"username\": \"User 1\"\n        },\n        {\n            \"client_admin_enabled\": 0,\n            \"email\": \"user2@null.com\",\n            \"scanner_enabled\": 1,\n            \"studio_enabled\": 0,\n            \"user_enabled\": 1,\n            \"user_id\": 38,\n            \"username\": \"User 2\"\n        }\n    ]\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Add User",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"username\" : \"testuser\",\n    \"email\" : \"test@null.com\",\n    \"studio_enabled\" : 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{clients_url}}/addUser",
              "host": [
                "{{clients_url}}"
              ],
              "path": [
                "addUser"
              ]
            },
            "description": "# Add user\n\nThis endpoint is used to add a new user to your account\n\nThe user wil recieve an email inviting them to follow a link to complete the creation of their account.\n\n**NOTE**: You need an API key with client admin permission enabled to use thos function.\n\n#### Request\n\n- Method: PUT\n    \n- URL: `{{clients_url}}/addUser`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Body\n    \n    - **username** : (string) account name for user \\*Required\n        \n    - **email** : (string) email address of used \\*Required\n        \n    - **studio_enabled** : (boolean) 1= User will have permission to access Smartix Studio \\*Default=0\n        \n    - **scanner_enabled** : (boolean) 1= User will have permission to access Smartix Scan App \\*Default=0\n        \n    - **client_admin_enabled** : (boolean) 1= User will have permission to administer your account (manage users, gets, invoices etc.) \\*Default=0\n        \n\n```\n{\n    \"username\" : \"testuser\",\n    \"email\" : \"test@null.com\",\n    \"studio_enabled\" : 1\n}\n\n ```\n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body:\n    \n    - user_id : (string) ID of the newly created user\n        \n\n``` json\n{\n    \"ok\": true,\n    \"user_id\": 63\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Update User",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"user\" : {\n        \"username\" : \"bob\"\n    }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{clients_url}}/saveUser/:user_id",
              "host": [
                "{{clients_url}}"
              ],
              "path": [
                "saveUser",
                ":user_id"
              ],
              "variable": [
                {
                  "key": "user_id",
                  "value": "62"
                }
              ]
            },
            "description": "# Update user\n\nThis endpoint is used to update a user record\n\n**NOTE**: You need an API key with client admin permission enabled to use this function.\n\n#### Request\n\n- Method: PATCH\n    \n- URL: `{{client_url}}/saveUser/:user_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - user_id (string): The ID of the user.\n        \n- Body\n    \n    - user\n        \n        - **username** : (string) new username\n            \n        - **email**: (string) new email\n            \n        - **user_enabled** : (boolean) 1= Enabled, 0=Disabled\n            \n        - **client_admin_enabled**: (boolean) 1= Enabled, 0=Disabled\n            \n        - **studio_enabled**: (boolean) 1= Enabled, 0=Disabled\n            \n        - **scanner_enabled**: (boolean) 1= Enabled, 0=Disabled\n            \n\nAll items are optional. Just specify the items you wish to change. All other items will remain unchanged\n\n```\n{\n    \"user\" : {\n        \"username\" : \"bob\",\n        \"scanner_enabled\" : 1\n    }\n}\n\n ```\n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n\n``` json\n{\n    \"ok\": true\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Toggle API Key Admin Access",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"user\" : {\n        \"username\" : \"bob\"\n    }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{clients_url}}/toggleApiKeyAdminAccess/:key_id",
              "host": [
                "{{clients_url}}"
              ],
              "path": [
                "toggleApiKeyAdminAccess",
                ":key_id"
              ],
              "variable": [
                {
                  "key": "key_id",
                  "value": "62"
                }
              ]
            },
            "description": "# Toggle API Key admin access\n\nThis endpoint is used to update an API Key to enable / disable access to admin functions\n\n**NOTE**: You need an API key with client admin permission enabled to use this function.\n\n#### Request\n\n- Method: PATCH\n    \n- URL: `{{client_url}}/`toggleApiKeyAdminAccess`/:key_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `key_id` (string): The ID of the API key.\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n\n``` json\n{\n    \"ok\": true\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Delete User",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"username\" : \"testuser\",\n    \"email\" : \"test@null.com\",\n    \"studio_enabled\" : 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{clients_url}}/deleteUser/:user_id",
              "host": [
                "{{clients_url}}"
              ],
              "path": [
                "deleteUser",
                ":user_id"
              ],
              "variable": [
                {
                  "key": "user_id",
                  "value": "63"
                }
              ]
            },
            "description": "# Delete user\n\nThis endpoint is used to delete a user forom your account\n\n**NOTE**: You need an API key with client admin permission enabled to use thos function.\n\n#### Request\n\n- Method: DELETE\n    \n- URL: `{{clients_url}}/deleteUser/:user_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `user_id` (string): The ID of the user to be deleted.\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n\n```\n{\n    \"ok\": true\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "get API Keys",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{clients_url}}/getApiKeys",
              "host": [
                "{{clients_url}}"
              ],
              "path": [
                "getApiKeys"
              ]
            },
            "description": "# Get API Keys\n\nThis endpoint is used to retrieve a list of API keys\n\n**NOTE**: You need an API key with client admin permission enabled to use this function.\n\n#### Request\n\n- Method: GET\n    \n- URL:`{{clients_url}}/getApiKeys`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body:\n    \n    - **keys** : (array)\n        \n        - **live_key** : (string) LIVE API Key\n            \n        - **test_key** : (string) TEST API Key\n            \n        - **key_enabled** : (boolean) 0 = Key disabled\n            \n        - **client_admin_enabled** : (boolean) 1=Key can be used to acess clients api.\n            \n        - **key_id** : (integer) Key ID\n            \n        - **key_name** : (string) : Key name\n            \n\n```\n{\n    \"keys\": [\n        {\n            \"client_admin_enabled\": 1,\n            \"key_enabled\": 1,\n            \"key_id\": 36,\n            \"key_name\": \"API-KEY\",\n            \"live_key\": \"KEY\",\n            \"test_key\": \"KEY\"\n        },\n        {\n            \"client_admin_enabled\": 0,\n            \"key_enabled\": 1,\n            \"key_id\": 62,\n            \"key_name\": \"bob\",\n            \"live_key\": \"KEY\",\n            \"test_key\": \"KEY\"\n        }\n    ],\n    \"ok\": true\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Add API Key",
          "request": {
            "method": "PUT",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"key_name\" : \"testkey\",\n    \"admin_enabled\" : 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{clients_url}}/addApiKey",
              "host": [
                "{{clients_url}}"
              ],
              "path": [
                "addApiKey"
              ]
            },
            "description": "# Add API key\n\nThis endpoint is used to create a new API key set\n\nAPI keys are always created in pairs: A **test** key and a **live** key.\n\nUse the test key to create and manage test passes. Use the live key to create and manage live passes.\n\n**NOTE**: You need an API key with client admin permission enabled to use this function.\n\n#### Request\n\n- Method: PUT\n    \n- URL:`{{clients_url}/addApiKey`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Body\n    \n    - **keyName** : (string) a name for this key pair\n        \n    - **admin_enabled** : (boolean) 1=Key can be used to manage client data (users, keys etc.)\n        \n\n```\n{\n    \"key_name\" : \"testkey\",\n    \"admin_enabled\" : 1\n}\n\n ```\n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body\n    \n    - key_id : (integer) ID of the new key pair\n        \n\n``` json\n{\n    \"key_id\": 64,\n    \"ok\": true\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Set API Key Status",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"username\" : \"testuser\",\n    \"email\" : \"test@null.com\",\n    \"studio_enabled\" : 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{clients_url}}/setApiKeyStatus/:key_id/:status/:admin_status",
              "host": [
                "{{clients_url}}"
              ],
              "path": [
                "setApiKeyStatus",
                ":key_id",
                ":status",
                ":admin_status"
              ],
              "variable": [
                {
                  "key": "key_id",
                  "value": "60",
                  "description": "API Key ID"
                },
                {
                  "key": "status",
                  "value": "enabled",
                  "description": "enabled | disabled"
                },
                {
                  "key": "admin_status",
                  "value": "enabled",
                  "description": "enabled | disabled"
                }
              ]
            },
            "description": "# Set API key status\n\nThis endpoint is used to enabled/disable an API key\n\n**NOTE**: You need an API key with client admin permission enabled to use this function.\n\n#### Request\n\n- Method: PATCH\n    \n- URL: `{{client_url}}/setApiKeyStatus.:key_id/:status/:admin_status`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - `key_id` (string): The ID of the key.\n        \n    - `status` (string): status - \"enabled\" or \"disabled\"\n        \n    - `admin_status` (string): status - \"enabled\" or \"disabled\"\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n\n``` json\n{\n    \"ok\": true\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "Delete API Key",
          "request": {
            "method": "DELETE",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "type": "text"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"username\" : \"testuser\",\n    \"email\" : \"test@null.com\",\n    \"studio_enabled\" : 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{clients_url}}/deleteApiKey/:key_id",
              "host": [
                "{{clients_url}}"
              ],
              "path": [
                "deleteApiKey",
                ":key_id"
              ],
              "variable": [
                {
                  "key": "key_id",
                  "value": "65"
                }
              ]
            },
            "description": "# Delete API key\n\nThis endpoint is used to delete an API key\n\n**NOTE**: You need an API key with client admin permission enabled to use thos function.\n\n#### Request\n\n- Method: DELETE\n    \n- URL: `{{clients_url}}/deleteApiKey/:key_id`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n- Path Parameters:\n    \n    - key_id (string): The ID of the key to be deleted.\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n\n``` json\n{\n    \"ok\": true\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "get Client Data",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{clients_url}}/getClientDetails",
              "host": [
                "{{clients_url}}"
              ],
              "path": [
                "getClientDetails"
              ]
            },
            "description": "# Get Client Data\n\nThis endpoint is used to retrieve data relating to your client account\n\n**NOTE**: You need an API key with client admin permission enabled to use this function.\n\n#### Request\n\n- Method: GET\n    \n- URL: `{{clients_url}}/getClientData`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body:\n    \n    - client : (object)\n        \n\n```\n{\n    \"client\": {\n        \"address\": \"Your street\\nYour town\\nPostcode\",\n        \"billing_day_of_month\": 15,\n        \"billing_email\": \"user1@null.com\",\n        \"billing_mode\": \"prepay\",\n        \"billing_period\": 4,\n        \"client_enabled\": 1,\n        \"client_id\": 2,\n        \"company_number\": \"123\",\n        \"creation_date\": \"20251020\",\n        \"deletion_date\": null,\n        \"main_contact_email\": \"user2@null.com\",\n        \"main_contact_name\": \"User Two\",\n        \"main_contact_phone\": \"01234567890\",\n        \"max_active_passes\": 75,\n        \"name\": \"Your client name\",\n        \"next_tariff_tier\": null,\n        \"tariff_name\": \"Standard\",\n        \"tariff_tier\": \"FREE\",\n        \"vat_number\": null\n    },\n    \"ok\": true\n}\n\n ```"
          },
          "response": []
        },
        {
          "name": "get Invoices",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "x-api-key",
                "value": "{{api_key}}",
                "description": "API access key",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{clients_url}}/getInvoices/:start_date",
              "host": [
                "{{clients_url}}"
              ],
              "path": [
                "getInvoices",
                ":start_date"
              ],
              "variable": [
                {
                  "key": "start_date",
                  "value": "20250901"
                }
              ]
            },
            "description": "# Get invoices\n\nThis endpoint is used to retrieve data your past invoices.\n\nPayment for invoices is normally taken automatically either by payment card or direct debit.\n\n**NOTE**: You need an API key with client admin permission enabled to use this function.\n\n#### Request\n\n- Method: GET\n    \n- URL: `{{clients_url}}/getInvoices`\n    \n- Headers:\n    \n    - x-api-key : Your API key\n        \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/json\n    \n- Body:\n    \n    - invoices : (array)\n        \n        - **client_id** : (integer) Your client ID\n            \n        - **accounts_client_id** : (integer) Your alternartive client ID in our accounts system\n            \n        - **clientName** : (string) your name\n            \n        - **clientAddress** : (string) your address\n            \n        - **invoice_date** : (date) :date invoice raised\n            \n        - **date_due** : (satestring) : date payment due\n            \n        - **amount** : (numeric) Total amount (ex VAT)\n            \n        - **vat** : (numeric) VAT amount\n            \n        - **total** : (numeric) VAT inclusive total (amount due)\n            \n        - **payment_error** : (string) If a payment failes this will contain erro rinformation\n            \n        - **details** : (array)\n            \n            - **details** : (string) Item being charged for\n                \n            - **id** : (interger) IS in our accounts system\n                \n            - **amount** : (numeric) amount (ex VAT)\n                \n            - **vat** : (numeric) VAT amount\n                \n    - variables : (object) Our bank details etc.\n        \n\n```\n{\n    \"invoices\": [\n        {\n            \"accounts_client_id\": 4,\n            \"amount\": 12,\n            \"clientAddress\": \"Your address\\nYour town\\nPosrtcode\",\n            \"clientName\": \"Your client name\",\n            \"client_id\": 20,\n            \"date_paid\": \"20250923\",\n            \"details\": [\n                {\n                    \"amount\": 6,\n                    \"details\": \"4000 active passes [1-4000] @ £0.0015\",\n                    \"id\": 51,\n                    \"vat\": 1.2\n                },\n                {\n                    \"amount\": 6,\n                    \"details\": \"6000 active passes [4000-10000] @ £0.001\",\n                    \"id\": 50,\n                    \"vat\": 1.2\n                }\n            ],\n            \"due_date\": \"20250922\",\n            \"invoice_date\": \"2025-09-15\",\n            \"invoice_id\": 21,\n            \"invoicenumber\": \"M250900000021\",\n            \"payment_error\": null,\n            \"total\": 14.4,\n            \"vat\": 2.4\n        }\n    ],\n    \"ok\": true,\n    \"variables\": {\n        \"bankAccountName\": \"Smartix Ltd\",\n        \"companyAddress\": \"93 Guillemot Road\\nPortishead\\nBristol\\nBS20 7PG\",\n        \"companyEmail\": \"admin@smartix.uk\",\n        \"companyName\": \"Smartix Ltd\",\n        \"companyNumber\": \"15903189\",\n        \"invoiceAccountNumber\": \"40494912\",\n        \"invoiceSortCode\": \"60-83-71\",\n        \"invoiceTerms\": \"Payment within 14 days of invoice date\",\n        \"remittanceAddress\": \"At the above address\",\n        \"vatNumber\": \"awaiting registration\"\n    }\n}\n\n ```"
          },
          "response": []
        }
      ],
      "description": "Functions relating to managing users and API keys"
    },
    {
      "name": "Device API",
      "item": [
        {
          "name": "Get apple pass",
          "protocolProfileBehavior": {
            "disabledSystemHeaders": {
              "accept": true
            }
          },
          "request": {
            "auth": {
              "type": "noauth"
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "vnd.apple.pkpass",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{devices_url}}/pkpass/:jwttoken",
              "host": [
                "{{devices_url}}"
              ],
              "path": [
                "pkpass",
                ":jwttoken"
              ],
              "variable": [
                {
                  "key": "jwttoken",
                  "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjIjoyLCJ0IjoiZ2VuZXJpY19BMEdfMEI3Xzc3MF9GTUpfUU5CIiwicCI6IjExVVEtUlg3OS1BVFlRIiwiaWF0IjoxNzY1MDE4NTMyfQ.yx_iDFgi3P5nw8_PIvnjuTnXGL0m3A_xQCBWJzfO-Yg"
                }
              ]
            },
            "description": "# Get Apple pass\n\nWhen you create a pass you receive an apple_url in the response. That url points at this endpoint.\n\nThis endpoint is documente dfor completeness. You should not use this directly to obtain the pk pass to pass onto your users, you shoudl supply them with the url so they can install direfly onto their devices.\n\n#### Request\n\n- Method: GET\n    \n- `URL: {{devices_url}}/pkpass/:jwttoken`\n    \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/pkpass\n    \n- Body : Apple PK Pass data"
          },
          "response": []
        },
        {
          "name": "Get apple passes",
          "protocolProfileBehavior": {
            "disabledSystemHeaders": {
              "accept": true
            }
          },
          "request": {
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "LHNDNRWHQN3WCWQ0",
                  "type": "string"
                }
              ]
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "vnd.apple.pkpass",
                "type": "text"
              },
              {
                "key": "if-modified-since",
                "value": "20250616140000",
                "type": "text"
              }
            ],
            "url": {
              "raw": "{{devices_url}}/pkpasses/:jwttoken",
              "host": [
                "{{devices_url}}"
              ],
              "path": [
                "pkpasses",
                ":jwttoken"
              ],
              "variable": [
                {
                  "key": "jwttoken",
                  "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjIjoyLCJnIjoiOTVYR1lKRUMwMCIsImlhdCI6MTc2NTM2MjgzMn0.b_BkEUCguYXjoAhOu57gqH9zEXyI5pQrEz27kFWtmKo"
                }
              ]
            },
            "description": "# Get Apple passes\n\nWhen you create a group of passes (makePasses) you receive an apple_url in the response. That url points at this endpoint.\n\nThis endpoint is documente dfor completeness. You should not use this directly to obtain the pk pass to pass onto your users, you shoudl supply them with the url so they can install direfly onto their devices.\n\n#### Request\n\n- Method: GET\n    \n- `URL: {{devices_url}}/pkpasses/:jwttoken`\n    \n\n#### Response\n\n- Status: 200\n    \n- Content-Type: application/pkpasses\n    \n- Body : Apple PK Pass data bundle"
          },
          "response": []
        }
      ],
      "description": "End points for installing Apple passes"
    }
  ],
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "packages": {},
        "requests": {},
        "exec": [
          ""
        ]
      }
    },
    {
      "listen": "test",
      "script": {
        "type": "text/javascript",
        "packages": {},
        "requests": {},
        "exec": [
          ""
        ]
      }
    }
  ]
}