{
	"info": {
		"_postman_id": "0385e5d2-dfac-4fd1-b212-ab83ea147857",
		"name": "LPR Parking API latest",
		"description": "API collection for License Plate Recognition (LPR) Parking System",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
		"_exporter_id": "43743629",
		"_collection_link": "https://visa-7951258.postman.co/workspace/VISA's-Workspace~66bf7bae-db78-4e69-8190-9f92f4572cc1/collection/43743629-0385e5d2-dfac-4fd1-b212-ab83ea147857?action=share&source=collection_link&creator=43743629"
	},
	"item": [
		{
			"name": "2. Authentication",
			"item": [
				{
					"name": "Login and Generate RSA Keys",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"var jsonData = pm.response.json();",
									"",
									"if (jsonData.status === \"SUCCESS\") {",
									"    // Save session token and public key",
									"    pm.environment.set(\"session_token\", jsonData.sessionToken);",
									"    pm.environment.set(\"public_key\", jsonData.publicKey);",
									"    ",
									"    pm.test(\"Login successful and RSA keys generated\", function () {",
									"        pm.expect(jsonData.status).to.eql(\"SUCCESS\");",
									"        pm.expect(jsonData.sessionToken).to.not.be.empty;",
									"        pm.expect(jsonData.publicKey).to.not.be.empty;",
									"    });",
									"} else {",
									"    pm.test(\"Login failed\", function () {",
									"        pm.expect(jsonData.status).to.eql(\"SUCCESS\");",
									"    });",
									"}"
								],
								"type": "text/javascript",
								"packages": {}
							}
						},
						{
							"listen": "prerequest",
							"script": {
								"packages": {},
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"partner_id\": \"{{partner_id}}\",\n    \"partner_master_key\": \"{{partner_master_key}}\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/api/v1/auth/login",
							"host": [
								"{{base_url}}"
							],
							"path": [
								"api",
								"v1",
								"auth",
								"login"
							]
						},
						"description": "Login with partner credentials and generate RSA key pair"
					},
					"response": []
				},
				{
					"name": "Refresh RSA Keys",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"var jsonData = pm.response.json();",
									"",
									"if (jsonData.status === \"SUCCESS\") {",
									"    // Update public key",
									"    pm.environment.set(\"public_key\", jsonData.publicKey);",
									"    ",
									"    pm.test(\"Keys refreshed successfully\", function () {",
									"        pm.expect(jsonData.status).to.eql(\"SUCCESS\");",
									"        pm.expect(jsonData.publicKey).to.not.be.empty;",
									"    });",
									"} else {",
									"    pm.test(\"Key refresh failed\", function () {",
									"        pm.expect(jsonData.status).to.eql(\"SUCCESS\");",
									"    });",
									"}"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"partner_id\": \"{{partner_id}}\",\n    \"session_token\": \"{{session_token}}\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/api/v1/auth/refresh-keys",
							"host": [
								"{{base_url}}"
							],
							"path": [
								"api",
								"v1",
								"auth",
								"refresh-keys"
							]
						},
						"description": "Refresh RSA keys for a partner session"
					},
					"response": []
				},
				{
					"name": "Logout",
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"partner_id\": \"{{partner_id}}\",\n    \"session_token\": \"{{session_token}}\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/api/v1/auth/logout",
							"host": [
								"{{base_url}}"
							],
							"path": [
								"api",
								"v1",
								"auth",
								"logout"
							]
						},
						"description": "Invalidate the partner session"
					},
					"response": []
				}
			],
			"description": "Authentication endpoints for the LPR Parking API"
		},
		{
			"name": "3. Utility",
			"item": [
				{
					"name": "Debug CRC",
					"event": [
						{
							"listen": "prerequest",
							"script": {
								"exec": [
									"// Generate Sales_id",
									"const salesId = 'SALE' + Date.now();",
									"pm.environment.set('Sales_id', salesId);",
									"",
									"// Generate timestamp",
									"const timestamp = new Date().toISOString().slice(0, 19).replace('T', ' ');",
									"pm.environment.set('LPR_entry_datetime', timestamp);",
									"",
									"// Prepare parameters for CRC calculation",
									"const params = {",
									"    partner_id: pm.environment.get('partner_id'),",
									"    MID: pm.environment.get('MID'),",
									"    TID: pm.environment.get('TID'),",
									"    lpNumber: pm.environment.get('LPR_number'),",
									"    salesID: salesId,",
									"    siteID: pm.environment.get('LPR_site_code'),",
									"    laneID: pm.environment.get('LPR_entry_lane_code'),",
									"    timestamp: timestamp,",
									"    min_bal: pm.environment.get('min_bal')",
									"};",
									"",
									"// Calculate CRC (improved crc32b implementation to match PHP's hash('crc32b'))",
									"function calculateCrc32b(str) {",
									"    const table = [];",
									"    let c;",
									"    for (let n = 0; n < 256; n++) {",
									"        c = n;",
									"        for (let k = 0; k < 8; k++) {",
									"            c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));",
									"        }",
									"        table[n] = c;",
									"    }",
									"",
									"    let crc = 0xFFFFFFFF;",
									"    for (let i = 0; i < str.length; i++) {",
									"        crc = (crc >>> 8) ^ table[(crc ^ str.charCodeAt(i)) & 0xFF];",
									"    }",
									"    ",
									"    // Final XOR value",
									"    crc = crc ^ 0xFFFFFFFF;",
									"    ",
									"    // Convert to hex string (8 chars with leading zeros)",
									"    return (crc >>> 0).toString(16).padStart(8, '0');",
									"}",
									"",
									"// Sort parameters by key (case-sensitive sort)",
									"const sortedKeys = Object.keys(params).sort();",
									"let paramString = '';",
									"",
									"// Build parameter string - Exactly match PHP's implementation",
									"for (const key of sortedKeys) {",
									"    if (key !== 'crc' && params[key] !== null && params[key] !== '') {",
									"        let value = params[key];",
									"        // Format numeric values consistently",
									"        if (!isNaN(value) && value !== '') {",
									"            // Remove trailing zeros and decimal point if applicable",
									"            value = Number(value).toString();",
									"            if (value.includes('.')) {",
									"                value = value.replace(/\\.?0+$/, '');",
									"            }",
									"        }",
									"        paramString += key + '=' + value + '&';",
									"    }",
									"}",
									"",
									"// Remove trailing ampersand",
									"paramString = paramString.slice(0, -1);",
									"",
									"// Calculate CRC",
									"const crc = calculateCrc32b(paramString);",
									"pm.environment.set('crc', crc);",
									"",
									"// Log values for debugging",
									"console.log('Parameters:', params);",
									"console.log('Parameter string:', paramString);",
									"console.log('CRC:', crc);"
								],
								"type": "text/javascript",
								"packages": {}
							}
						}
					],
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"partner_id\": \"{{partner_id}}\",\n    \"partner_master_key\": \"{{partner_master_key}}\",\n    \"MID\": \"{{MID}}\",\n    \"TID\": \"{{TID}}\",\n    \"lpNumber\": \"{{LPR_number}}\",\n    \"salesID\": \"{{Sales_id}}\",\n    \"siteID\": \"{{LPR_site_code}}\",\n    \"laneID\": \"{{LPR_entry_lane_code}}\",\n    \"timestamp\": \"{{LPR_entry_datetime}}\",\n    \"min_bal\": {{min_bal}},\n    \"crc\": \"{{crc}}\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/api/v1/debug/crc",
							"host": [
								"{{base_url}}"
							],
							"path": [
								"api",
								"v1",
								"debug",
								"crc"
							]
						},
						"description": "Debug CRC calculation (development only)"
					},
					"response": []
				}
			],
			"description": "Utility endpoints for the LPR Parking API"
		},
		{
			"name": "4. Transactions",
			"item": [
				{
					"name": "Open Transaction",
					"event": [
						{
							"listen": "prerequest",
							"script": {
								"exec": [
									"// Generate Sales_id",
									"const salesId = 'SALE' + Date.now();",
									"pm.environment.set('Sales_id', salesId);",
									"",
									"// Generate timestamp",
									"const timestamp = new Date().toISOString().slice(0, 19).replace('T', ' ');",
									"pm.environment.set('LPR_entry_datetime', timestamp);",
									"",
									"// Prepare parameters for CRC calculation",
									"const params = {",
									"    partner_id: pm.environment.get('partner_id'),",
									"    MID: pm.environment.get('MID'),",
									"    TID: pm.environment.get('TID'),",
									"    lpNumber: pm.environment.get('LPR_number'),",
									"    salesID: salesId,",
									"    siteID: pm.environment.get('LPR_site_code'),",
									"    laneID: pm.environment.get('LPR_entry_lane_code'),",
									"    timestamp: timestamp,",
									"    min_bal: pm.environment.get('min_bal')",
									"};",
									"",
									"// Calculate CRC (improved crc32b implementation to match PHP's hash('crc32b'))",
									"function calculateCrc32b(str) {",
									"    const table = [];",
									"    let c;",
									"    for (let n = 0; n < 256; n++) {",
									"        c = n;",
									"        for (let k = 0; k < 8; k++) {",
									"            c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));",
									"        }",
									"        table[n] = c;",
									"    }",
									"",
									"    let crc = 0xFFFFFFFF;",
									"    for (let i = 0; i < str.length; i++) {",
									"        crc = (crc >>> 8) ^ table[(crc ^ str.charCodeAt(i)) & 0xFF];",
									"    }",
									"    ",
									"    // Final XOR value",
									"    crc = crc ^ 0xFFFFFFFF;",
									"    ",
									"    // Convert to hex string (8 chars with leading zeros)",
									"    return (crc >>> 0).toString(16).padStart(8, '0');",
									"}",
									"",
									"// Sort parameters by key (case-sensitive sort)",
									"const sortedKeys = Object.keys(params).sort();",
									"let paramString = '';",
									"",
									"// Build parameter string - Exactly match PHP's implementation",
									"for (const key of sortedKeys) {",
									"    if (key !== 'crc' && params[key] !== null && params[key] !== '') {",
									"        let value = params[key];",
									"        // Format numeric values consistently",
									"        if (!isNaN(value) && value !== '') {",
									"            // Remove trailing zeros and decimal point if applicable",
									"            value = Number(value).toString();",
									"            if (value.includes('.')) {",
									"                value = value.replace(/\\.?0+$/, '');",
									"            }",
									"        }",
									"        paramString += key + '=' + value + '&';",
									"    }",
									"}",
									"",
									"// Remove trailing ampersand",
									"paramString = paramString.slice(0, -1);",
									"",
									"// Calculate CRC",
									"const crc = calculateCrc32b(paramString);",
									"pm.environment.set('crc', crc);",
									"",
									"// Generate signature",
									"function hexToBase64(hexstring) {",
									"    return btoa(hexstring.match(/\\w{2}/g).map(function(a) {",
									"        return String.fromCharCode(parseInt(a, 16));",
									"    }).join(\"\"));",
									"}",
									"",
									"// Note: In a real implementation, you would sign with a proper RSA library",
									"// This is a placeholder for the signature logic",
									"const dataToSign = timestamp + paramString;",
									"const mockSignature = calculateCrc32b(dataToSign); // In real life, use RSA signing",
									"pm.environment.set('signature', mockSignature);",
									"",
									"// Log values for debugging",
									"console.log('Parameters:', params);",
									"console.log('Parameter string:', paramString);",
									"console.log('CRC:', crc);",
									"console.log('Signature:', mockSignature);"
								],
								"type": "text/javascript",
								"packages": {}
							}
						},
						{
							"listen": "test",
							"script": {
								"exec": [
									"var jsonData = pm.response.json();",
									"",
									"pm.test(\"Status code is 200\", function () {",
									"    pm.response.to.have.status(200);",
									"});",
									"",
									"pm.test(\"Response structure is correct\", function () {",
									"    pm.expect(jsonData).to.have.property('status');",
									"    pm.expect(jsonData).to.have.property('responseMessage');",
									"    pm.expect(jsonData).to.have.property('salesID');",
									"    pm.expect(jsonData).to.have.property('siteID');",
									"    pm.expect(jsonData).to.have.property('laneID');",
									"    pm.expect(jsonData).to.have.property('lpNumber');",
									"    pm.expect(jsonData).to.have.property('timestamp');",
									"});"
								],
								"type": "text/javascript",
								"packages": {}
							}
						}
					],
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "X-Session-Token",
								"value": "{{session_token}}",
								"type": "text"
							},
							{
								"key": "X-Signature",
								"value": "{{signature}}",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"partner_id\": \"{{partner_id}}\",\n    \"partner_master_key\": \"{{partner_master_key}}\",\n    \"MID\": \"{{MID}}\",\n    \"TID\": \"{{TID}}\",\n    \"lpNumber\": \"{{LPR_number}}\",\n    \"salesID\": \"{{Sales_id}}\",\n    \"siteID\": \"{{LPR_site_code}}\",\n    \"laneID\": \"{{LPR_entry_lane_code}}\",\n    \"timestamp\": \"{{LPR_entry_datetime}}\",\n    \"min_bal\": {{min_bal}},\n    \"crc\": \"{{crc}}\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/api/v1/transaction/open",
							"host": [
								"{{base_url}}"
							],
							"path": [
								"api",
								"v1",
								"transaction",
								"open"
							]
						},
						"description": "Open a transaction for a vehicle entry"
					},
					"response": []
				},
				{
					"name": "Close Transaction",
					"event": [
						{
							"listen": "prerequest",
							"script": {
								"exec": [
									"// Generate timestamps",
									"const exitTimestamp = new Date().toISOString().slice(0, 19).replace('T', ' ');",
									"pm.environment.set('LPR_exit_datetime', exitTimestamp);",
									"",
									"// Prepare parameters for CRC calculation",
									"const params = {",
									"    partner_id: pm.environment.get('partner_id'),",
									"    MID: pm.environment.get('MID'),",
									"    TID: pm.environment.get('TID'),",
									"    lpNumber: pm.environment.get('LPR_number'),",
									"    salesID: pm.environment.get('Sales_id'),",
									"    laneID: pm.environment.get('LPR_exit_lane_code'),",
									"    timeIN: pm.environment.get('LPR_entry_datetime'),",
									"    timeOUT: exitTimestamp,",
									"    fees_amount: pm.environment.get('fees_amount')",
									"};",
									"",
									"// Calculate CRC (improved crc32b implementation to match PHP's hash('crc32b'))",
									"function calculateCrc32b(str) {",
									"    const table = [];",
									"    let c;",
									"    for (let n = 0; n < 256; n++) {",
									"        c = n;",
									"        for (let k = 0; k < 8; k++) {",
									"            c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));",
									"        }",
									"        table[n] = c;",
									"    }",
									"",
									"    let crc = 0xFFFFFFFF;",
									"    for (let i = 0; i < str.length; i++) {",
									"        crc = (crc >>> 8) ^ table[(crc ^ str.charCodeAt(i)) & 0xFF];",
									"    }",
									"    ",
									"    // Final XOR value",
									"    crc = crc ^ 0xFFFFFFFF;",
									"    ",
									"    // Convert to hex string (8 chars with leading zeros)",
									"    return (crc >>> 0).toString(16).padStart(8, '0');",
									"}",
									"",
									"// Sort parameters by key (case-sensitive sort)",
									"const sortedKeys = Object.keys(params).sort();",
									"let paramString = '';",
									"",
									"// Build parameter string - Exactly match PHP's implementation",
									"for (const key of sortedKeys) {",
									"    if (key !== 'crc' && params[key] !== null && params[key] !== '') {",
									"        let value = params[key];",
									"        // Format numeric values consistently",
									"        if (!isNaN(value) && value !== '') {",
									"            // Remove trailing zeros and decimal point if applicable",
									"            value = Number(value).toString();",
									"            if (value.includes('.')) {",
									"                value = value.replace(/\\.?0+$/, '');",
									"            }",
									"        }",
									"        paramString += key + '=' + value + '&';",
									"    }",
									"}",
									"",
									"// Remove trailing ampersand",
									"paramString = paramString.slice(0, -1);",
									"",
									"// Calculate CRC",
									"const crc = calculateCrc32b(paramString);",
									"pm.environment.set('crc', crc);",
									"",
									"// Generate signature",
									"// Note: In a real implementation, you would sign with a proper RSA library",
									"// This is a placeholder for the signature logic",
									"const dataToSign = exitTimestamp + paramString;",
									"const mockSignature = calculateCrc32b(dataToSign); // In real life, use RSA signing",
									"pm.environment.set('signature', mockSignature);",
									"",
									"// Log values for debugging",
									"console.log('Parameters:', params);",
									"console.log('Parameter string:', paramString);",
									"console.log('CRC:', crc);",
									"console.log('Signature:', mockSignature);"
								],
								"type": "text/javascript",
								"packages": {}
							}
						},
						{
							"listen": "test",
							"script": {
								"exec": [
									"var jsonData = pm.response.json();",
									"",
									"pm.test(\"Status code is 200\", function () {",
									"    pm.response.to.have.status(200);",
									"});",
									"",
									"pm.test(\"Response structure is correct\", function () {",
									"    pm.expect(jsonData).to.have.property('status');",
									"    pm.expect(jsonData).to.have.property('responseMessage');",
									"    pm.expect(jsonData).to.have.property('salesID');",
									"    pm.expect(jsonData).to.have.property('siteID');",
									"    pm.expect(jsonData).to.have.property('laneID');",
									"    pm.expect(jsonData).to.have.property('lpNumber');",
									"    pm.expect(jsonData).to.have.property('timeIN');",
									"    pm.expect(jsonData).to.have.property('timeOUT');",
									"    pm.expect(jsonData).to.have.property('fees_amount');",
									"    ",
									"    if (jsonData.status === 'SUCCESS') {",
									"        pm.expect(jsonData).to.have.property('approval_code');",
									"        pm.expect(jsonData).to.have.property('uan_I6');",
									"        pm.expect(jsonData).to.have.property('uan_L4');",
									"    }",
									"});"
								],
								"type": "text/javascript",
								"packages": {}
							}
						}
					],
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "X-Session-Token",
								"value": "{{session_token}}",
								"type": "text"
							},
							{
								"key": "X-Signature",
								"value": "{{signature}}",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"partner_id\": \"{{partner_id}}\",\n    \"partner_master_key\": \"{{partner_master_key}}\",\n    \"MID\": \"{{MID}}\",\n    \"TID\": \"{{TID}}\",\n    \"lpNumber\": \"{{LPR_number}}\",\n    \"salesID\": \"{{Sales_id}}\",\n    \"laneID\": \"{{LPR_exit_lane_code}}\",\n    \"timeIN\": \"{{LPR_entry_datetime}}\",\n    \"timeOUT\": \"{{LPR_exit_datetime}}\",\n    \"fees_amount\": {{fees_amount}},\n    \"crc\": \"{{crc}}\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/api/v1/transaction/close",
							"host": [
								"{{base_url}}"
							],
							"path": [
								"api",
								"v1",
								"transaction",
								"close"
							]
						},
						"description": "Close a transaction for a vehicle exit"
					},
					"response": []
				},
				{
					"name": "Transaction Status",
					"event": [
						{
							"listen": "prerequest",
							"script": {
								"exec": [
									"// Prepare parameters for CRC calculation",
									"const params = {",
									"    partner_id: pm.environment.get('partner_id'),",
									"    salesID: pm.environment.get('Sales_id')",
									"};",
									"",
									"// Calculate CRC (improved crc32b implementation to match PHP's hash('crc32b'))",
									"function calculateCrc32b(str) {",
									"    const table = [];",
									"    let c;",
									"    for (let n = 0; n < 256; n++) {",
									"        c = n;",
									"        for (let k = 0; k < 8; k++) {",
									"            c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));",
									"        }",
									"        table[n] = c;",
									"    }",
									"",
									"    let crc = 0xFFFFFFFF;",
									"    for (let i = 0; i < str.length; i++) {",
									"        crc = (crc >>> 8) ^ table[(crc ^ str.charCodeAt(i)) & 0xFF];",
									"    }",
									"    ",
									"    // Final XOR value",
									"    crc = crc ^ 0xFFFFFFFF;",
									"    ",
									"    // Convert to hex string (8 chars with leading zeros)",
									"    return (crc >>> 0).toString(16).padStart(8, '0');",
									"}",
									"",
									"// Sort parameters by key (case-sensitive sort)",
									"const sortedKeys = Object.keys(params).sort();",
									"let paramString = '';",
									"",
									"// Build parameter string - Exactly match PHP's implementation",
									"for (const key of sortedKeys) {",
									"    if (key !== 'crc' && params[key] !== null && params[key] !== '') {",
									"        let value = params[key];",
									"        // Format numeric values consistently",
									"        if (!isNaN(value) && value !== '') {",
									"            // Remove trailing zeros and decimal point if applicable",
									"            value = Number(value).toString();",
									"            if (value.includes('.')) {",
									"                value = value.replace(/\\.?0+$/, '');",
									"            }",
									"        }",
									"        paramString += key + '=' + value + '&';",
									"    }",
									"}",
									"",
									"// Remove trailing ampersand",
									"paramString = paramString.slice(0, -1);",
									"",
									"// Calculate CRC",
									"const crc = calculateCrc32b(paramString);",
									"pm.environment.set('crc', crc);",
									"",
									"// Generate signature",
									"// Note: In a real implementation, you would sign with a proper RSA library",
									"// This is a placeholder for the signature logic",
									"const timestamp = new Date().toISOString();",
									"const dataToSign = timestamp + paramString;",
									"const mockSignature = calculateCrc32b(dataToSign); // In real life, use RSA signing",
									"pm.environment.set('signature', mockSignature);",
									"",
									"// Log values for debugging",
									"console.log('Parameters:', params);",
									"console.log('Parameter string:', paramString);",
									"console.log('CRC:', crc);",
									"console.log('Signature:', mockSignature);"
								],
								"type": "text/javascript"
							}
						},
						{
							"listen": "test",
							"script": {
								"exec": [
									"var jsonData = pm.response.json();",
									"",
									"pm.test(\"Status code is 200\", function () {",
									"    pm.response.to.have.status(200);",
									"});",
									"",
									"pm.test(\"Response contains transaction details\", function () {",
									"    pm.expect(jsonData).to.have.property('status');",
									"    pm.expect(jsonData).to.have.property('responseMessage');",
									"    pm.expect(jsonData).to.have.property('salesID');",
									"});"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "text"
							},
							{
								"key": "X-Session-Token",
								"value": "{{session_token}}",
								"type": "text"
							},
							{
								"key": "X-Signature",
								"value": "{{signature}}",
								"type": "text"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"partner_id\": \"{{partner_id}}\",\n    \"salesID\": \"{{Sales_id}}\",\n    \"crc\": \"{{crc}}\"\n}"
						},
						"url": {
							"raw": "{{base_url}}/api/v1/transaction/status",
							"host": [
								"{{base_url}}"
							],
							"path": [
								"api",
								"v1",
								"transaction",
								"status"
							]
						},
						"description": "Get the status of a transaction"
					},
					"response": []
				}
			],
			"description": "Transaction endpoints for the LPR Parking API"
		},
		{
			"name": "1. Health Check",
			"request": {
				"method": "GET",
				"header": [],
				"url": {
					"raw": "{{base_url}}/api/v1/health",
					"host": [
						"{{base_url}}"
					],
					"path": [
						"api",
						"v1",
						"health"
					]
				},
				"description": "Check if the API is up and running"
			},
			"response": []
		}
	],
	"event": [
		{
			"listen": "prerequest",
			"script": {
				"type": "text/javascript",
				"exec": [
					""
				]
			}
		},
		{
			"listen": "test",
			"script": {
				"type": "text/javascript",
				"exec": [
					""
				]
			}
		}
	]
}