{"info":{"_postman_id":"fc8c1c08-e120-48ee-acb0-a97aadf52d58","name":"XCOM-HUB Client API","description":"<html><head></head><body><p>Complete API collection for XCOM-HUB Carrier Operations platform.<br>Generated from actual handler source code analysis.</p>\n<p>Base URL Production/Staging: <a href=\"https://api.x-com.co.il\">https://api.x-com.co.il</a></p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"54801024","collectionId":"fc8c1c08-e120-48ee-acb0-a97aadf52d58","publishedId":"2sBXwnts1e","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-05-31T19:53:18.000Z"},"item":[{"name":"0. Testing & Sandbox Guide","item":[],"id":"5e14b377-0611-4c5b-87c1-a922c56f3a87","description":"<h1 id=\"xcom-hub-developer-sandbox-integration--testing-guide\">XCOM-HUB Developer Sandbox Integration &amp; Testing Guide</h1>\n<p>Welcome to the XCOM-HUB Sandbox testing guide. The sandbox is designed to simulate full-cycle telecom carrier and SIM operations in a <strong>completely safe, isolated environment</strong>.</p>\n<hr />\n<h2 id=\"1-the-sandbox-paradigm\">1. The Sandbox Paradigm</h2>\n<p>To streamline your development workflow, XCOM-HUB utilizes a <strong>Single Endpoint</strong> architecture. There is no separate sandbox hostname. </p>\n<p>Environment routing is controlled dynamically via your <strong>API Key prefix</strong>:</p>\n<ul>\n<li><strong>Sandbox Key (<code>gw_test_*</code>):</strong> Routes requests to the Simulator. Bypasses real carrier links, creates no real billing/ledger records, and does not charge money.</li>\n<li><strong>Live Key (<code>gw_live_*</code>):</strong> Routes requests to production billing and carrier networks. Executing requests here will result in real financial transactions.</li>\n</ul>\n<p>Simply swap your <code>gw_test_</code> key for a <code>gw_live_</code> key in your environment variables to go live. <strong>No code changes are required.</strong></p>\n<hr />\n<h2 id=\"2-safety--data-isolation-invariants\">2. Safety &amp; Data Isolation Invariants</h2>\n<ul>\n<li><strong>Decoupled Logic:</strong> The simulator contains zero connections to real carrier networks.</li>\n<li><strong>Database Isolation:</strong> Sandbox requests read/write exclusively to the <code>sandbox_operations</code> table. They never insert records into live <code>operations</code>, <code>ledger</code>, <code>products</code>, or supplier balance stores.</li>\n<li><strong>No Stock Consumption:</strong> The sandbox does not consume live eSIM profiles or allocate real telephone numbers.</li>\n</ul>\n<hr />\n<h2 id=\"3-magic-parameters-reference-table\">3. Magic Parameters Reference Table</h2>\n<p>To trigger specific edge cases (such as carrier timeouts, failures, or stockouts), utilize the following magic parameters in your sandbox API calls:</p>\n<h3 id=\"prepaid-charge-scenarios\">Prepaid Charge Scenarios</h3>\n<p>Triggered by passing specific values in the <code>phone_number</code> field during <code>POST /api/v1/charge</code>:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Phone Number</th>\n<th>Simulated Scenario</th>\n<th>Expected HTTP</th>\n<th>Expected Operation Status</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>0500000001</code></td>\n<td>Success (Completed)</td>\n<td><code>200 OK</code></td>\n<td><code>completed</code></td>\n<td>Normal successful prepaid top-up simulation.</td>\n</tr>\n<tr>\n<td><code>0500000002</code></td>\n<td>Carrier Rejected</td>\n<td><code>422 Unprocessable</code></td>\n<td><code>failed</code></td>\n<td>Simulates a rejection response from the carrier.</td>\n</tr>\n<tr>\n<td><code>0500000003</code></td>\n<td>Carrier Timeout (Permanent)</td>\n<td><code>202 Accepted</code></td>\n<td><code>needs_review</code></td>\n<td>Simulates a permanent request timeout (stays pending).</td>\n</tr>\n<tr>\n<td><code>0500000004</code></td>\n<td>Provider Offline</td>\n<td><code>422 Unprocessable</code></td>\n<td><code>failed</code></td>\n<td>Simulates a carrier API endpoint outage.</td>\n</tr>\n<tr>\n<td><code>0500000005</code></td>\n<td>Async Pending $\\rightarrow$ Success</td>\n<td><code>202 Accepted</code></td>\n<td><code>needs_review</code> $</td>\n<td></td>\n</tr>\n<tr>\n<td>ightarrow$ <code>completed</code></td>\n<td>Initially pending. Resolves to completed <strong>5 seconds</strong> after creation.</td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><code>0500000006</code></td>\n<td>Async Pending $\\rightarrow$ Failure</td>\n<td><code>202 Accepted</code></td>\n<td><code>needs_review</code> $</td>\n<td></td>\n</tr>\n<tr>\n<td>ightarrow$ <code>failed</code></td>\n<td>Initially pending. Resolves to failed <strong>5 seconds</strong> after creation.</td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"esim-provisioning-scenarios\">eSIM Provisioning Scenarios</h3>\n<p>Triggered by prefixing your <code>external_order_id</code> in eSIM provisioning requests:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Prefix</th>\n<th>Simulated Scenario</th>\n<th>Expected HTTP</th>\n<th>Expected Session Status</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>FAIL-*</code></td>\n<td>Provisioning Failed</td>\n<td><code>422 Unprocessable</code></td>\n<td><code>failed</code></td>\n<td>Simulates an eSIM profile creation error at the carrier.</td>\n</tr>\n<tr>\n<td><code>PENDING-*</code></td>\n<td>Async Provisioning</td>\n<td><code>202 Accepted</code></td>\n<td><code>pending</code> $\\rightarrow$ <code>completed</code></td>\n<td>Returns pending; resolves to completed on your next status check.</td>\n</tr>\n<tr>\n<td><code>STOCKOUT-*</code></td>\n<td>Hub Inventory Empty</td>\n<td><code>422 Conflict</code></td>\n<td><code>failed</code></td>\n<td>No eSIM stock available (valid for <code>hub</code> inventory mode).</td>\n</tr>\n<tr>\n<td><code>CHARGEFAIL-*</code></td>\n<td>Partial Success</td>\n<td><code>422 Unprocessable</code></td>\n<td><code>partial</code></td>\n<td>eSIM profile is created, but plan charging fails.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"rent-line-activation-scenarios\">Rent Line Activation Scenarios</h3>\n<p>Triggered by prefixing your <code>client_reference</code> in Rent Line activation requests:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Prefix</th>\n<th>Simulated Scenario</th>\n<th>Expected HTTP</th>\n<th>Expected Line Status</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>FAIL-*</code></td>\n<td>Activation Pending (No Confirmation)</td>\n<td><code>202 Accepted</code></td>\n<td><code>pending_activation</code></td>\n<td>Activation request accepted but not finalized.</td>\n</tr>\n<tr>\n<td><code>NONUMS-*</code></td>\n<td>No Numbers Available</td>\n<td><code>422 Unprocessable</code></td>\n<td><code>failed</code></td>\n<td>Simulates provider running out of rental phone numbers.</td>\n</tr>\n<tr>\n<td><code>PENDING-*</code></td>\n<td>Async Activation</td>\n<td><code>202 Accepted</code></td>\n<td><code>pending_activation</code> $</td>\n<td></td>\n</tr>\n<tr>\n<td>ightarrow$ <code>active</code></td>\n<td>Resolves to active on your next status poll.</td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td><code>RFAIL-*</code></td>\n<td>Renewal Failure Trigger</td>\n<td><code>201 Created</code></td>\n<td><code>active</code></td>\n<td>Activation succeeds, but subsequent <code>/renew</code> calls fail.</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h2 id=\"4-testing-your-implementation-workflow-examples\">4. Testing Your Implementation (Workflow Examples)</h2>\n<h3 id=\"scenario-a-testing-asynchronous-status-polling\">Scenario A: Testing Asynchronous Status Polling</h3>\n<p>Prepaid charges may occasionally result in delayed carrier confirmations. To test your polling logic:</p>\n<ol>\n<li>Send <code>POST /api/v1/charge</code> with <code>phone_number: \"0500000005\"</code>.</li>\n<li>Verify the response is <code>202 Accepted</code>, with <code>status: \"needs_review\"</code> and <code>error.code: \"CHARGE_PENDING\"</code>.</li>\n<li>Make your application poll <code>GET /api/v1/status/{operation_id}</code>.</li>\n<li>For the first 5 seconds, the status remains <code>needs_review</code>.</li>\n<li>After 5 seconds, the status shifts to <code>completed</code> and the <code>completed_at</code> timestamp is populated. Your backend must detect this and complete your internal order.</li>\n</ol>\n<h3 id=\"scenario-b-testing-esim-partial-failures\">Scenario B: Testing eSIM Partial Failures</h3>\n<p>When calling eSIM Provision-and-Charge, it is possible for the profile to generate successfully but the plan charge to fail. To test your error handling:</p>\n<ol>\n<li>Send <code>POST /api/v1/esim/provision-and-charge</code> with <code>external_order_id: \"CHARGEFAIL-999\"</code>.</li>\n<li>Verify the response is <code>422 Unprocessable Entity</code> with <code>error.code: \"ESIM_CHARGE_FAILED_AFTER_PROVISION\"</code>.</li>\n<li>Note that the profile is still delivered in <code>data.qr_code</code>. Your system must handle this partial state (e.g., notify support, log the profile, and schedule a retry for the charge step).</li>\n</ol>\n","_postman_id":"5e14b377-0611-4c5b-87c1-a922c56f3a87"},{"name":"1. Infrastructure","item":[{"name":"Health Check","id":"e2c32cbd-9700-4874-9136-8b840badf16d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.x-com.co.il/health","description":"<p>Returns basic service liveness. Used by load balancers. No auth required.</p>\n","urlObject":{"path":["health"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"4726c755-594d-481c-adfe-83974e82f204","name":"Health - Success","originalRequest":{"method":"GET","header":[],"url":"https://api.x-com.co.il/health","description":"Returns basic service liveness. Used by load balancers. No auth required."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"healthy\",\n  \"service\": \"xcom-hub\"\n}"}],"_postman_id":"e2c32cbd-9700-4874-9136-8b840badf16d"},{"name":"Readiness Check","id":"5ec026f6-5110-46c4-8bb4-1ab020487771","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.x-com.co.il/ready","description":"<p>Checks PostgreSQL and Redis connectivity. Used by orchestrators.</p>\n","urlObject":{"path":["ready"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"3b59855c-eb75-4add-adf7-09f9a529c1ee","name":"Ready - All OK","originalRequest":{"method":"GET","header":[],"url":"https://api.x-com.co.il/ready","description":"Checks PostgreSQL and Redis connectivity. Used by orchestrators."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"ready\",\n  \"checks\": {\n    \"postgres\": \"connected\",\n    \"redis\": \"connected\"\n  }\n}"},{"id":"56efb26e-6f23-4f75-a6d9-abc3a2d2048f","name":"Ready - DB Down","originalRequest":{"method":"GET","header":[],"url":"https://api.x-com.co.il/ready","description":"Checks PostgreSQL and Redis connectivity. Used by orchestrators."},"status":"Service Unavailable","code":503,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"status\": \"not_ready\",\n  \"checks\": {\n    \"postgres\": \"unreachable\",\n    \"redis\": \"connected\"\n  }\n}"}],"_postman_id":"5ec026f6-5110-46c4-8bb4-1ab020487771"}],"id":"b31bf52a-a901-40b3-b828-1740c1710af5","description":"<p>Health and readiness checks. No authentication required.</p>\n","_postman_id":"b31bf52a-a901-40b3-b828-1740c1710af5"},{"name":"2. Auth & Security","item":[{"name":"Auth - No Header","id":"20bd0077-ca71-4d65-8dcb-b35740384bc2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://api.x-com.co.il/api/v1/products","description":"<p>Tests missing Authorization header.</p>\n","urlObject":{"path":["api","v1","products"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"4cc8aac1-2410-4a24-95eb-2514d9ca61dc","name":"Missing Auth Header","originalRequest":{"method":"GET","header":[],"url":"https://api.x-com.co.il/api/v1/products","description":"Tests missing Authorization header."},"status":"Unauthorized","code":401,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"UNAUTHORIZED\",\n    \"message\": \"Authorization header is required\"\n  }\n}"}],"_postman_id":"20bd0077-ca71-4d65-8dcb-b35740384bc2"},{"name":"Auth - Invalid Format","id":"9896742f-2e19-48b8-ae80-ae02d9881f15","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Basic abc123"}],"url":"https://api.x-com.co.il/api/v1/products","description":"<p>Tests wrong auth scheme (Basic instead of Bearer).</p>\n","urlObject":{"path":["api","v1","products"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"0d098e5a-110b-4c5b-a588-6385370dc918","name":"Wrong Auth Scheme","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Basic abc123"}],"url":"https://api.x-com.co.il/api/v1/products","description":"Tests wrong auth scheme (Basic instead of Bearer)."},"status":"Unauthorized","code":401,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"UNAUTHORIZED\",\n    \"message\": \"Authorization header must be: Bearer <api_key>\"\n  }\n}"}],"_postman_id":"9896742f-2e19-48b8-ae80-ae02d9881f15"},{"name":"Auth - Invalid API Key","id":"338ddbae-5180-48d9-9b29-662028291392","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_invalid_key_12345"}],"url":"https://api.x-com.co.il/api/v1/products","description":"<p>Key is SHA-256 hashed and looked up in DB.</p>\n","urlObject":{"path":["api","v1","products"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"a8966ee3-2ed7-47c2-8202-4cd3fc0f832e","name":"Invalid Key","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_invalid_key_12345"}],"url":"https://api.x-com.co.il/api/v1/products","description":"Key is SHA-256 hashed and looked up in DB."},"status":"Unauthorized","code":401,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"UNAUTHORIZED\",\n    \"message\": \"Invalid API key\"\n  }\n}"}],"_postman_id":"338ddbae-5180-48d9-9b29-662028291392"}],"id":"a42ba6e0-0d50-4024-b3e6-dd719e0e3bda","description":"<p>Authentication error scenarios. All /api/v1/* endpoints require Bearer token.</p>\n","_postman_id":"a42ba6e0-0d50-4024-b3e6-dd719e0e3bda"},{"name":"3. Products","item":[{"name":"Products - List All","id":"920e8c47-1c46-4b1e-97a8-f7510903831e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"url":"https://api.x-com.co.il/api/v1/products","description":"<p>Returns all active+mapped products visible to this API key. Max 500 results. Requires 'products' permission.</p>\n","urlObject":{"path":["api","v1","products"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"5af6fd74-e165-4c14-bc91-2cb77138fb1c","name":"Products - Success","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"url":"https://api.x-com.co.il/api/v1/products","description":"Returns all active+mapped products visible to this API key. Max 500 results. Requires 'products' permission."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": [\n    {\n      \"sku\": 1001,\n      \"id\": \"b269be1d-302f-4d08-9def-be01443c122e\",\n      \"name\": \"Pelephone 50₪ Top-up\",\n      \"description\": \"Prepaid credit\",\n      \"category\": \"topup\",\n      \"provider_code\": \"ish7nly\",\n      \"provider_name\": \"Ish7nly\",\n      \"telecom_company_code\": \"pelephone\",\n      \"telecom_company_name\": \"Pelephone\",\n      \"face_value\": 5000,\n      \"currency\": \"ILS\"\n    },\n    {\n      \"sku\": 1002,\n      \"id\": \"c370cf2e-413g-5e19-0efg-cf12554d233f\",\n      \"name\": \"Hot Mobile 100₪ Bundle\",\n      \"description\": \"Monthly unlimited calls + 50GB\",\n      \"category\": \"bundle\",\n      \"provider_code\": \"ish7nly\",\n      \"provider_name\": \"Ish7nly\",\n      \"telecom_company_code\": \"hot\",\n      \"telecom_company_name\": \"Hot Mobile\",\n      \"face_value\": 10000,\n      \"currency\": \"ILS\"\n    }\n  ]\n}"}],"_postman_id":"920e8c47-1c46-4b1e-97a8-f7510903831e"},{"name":"Products - Filter by Category","id":"cc3eef9e-3cc9-4981-92fc-ab490ab26796","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/products?category=topup","description":"<p>Valid categories: topup, bundle, esim, addon.</p>\n","urlObject":{"path":["api","v1","products"],"host":["https://api.x-com.co.il"],"query":[{"key":"category","value":"topup"}],"variable":[]}},"response":[{"id":"6a32117f-808b-4c79-bc8f-f2067de53613","name":"Filtered by Category","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":{"raw":"https://api.x-com.co.il/api/v1/products?category=topup","host":["https://api.x-com.co.il"],"path":["api","v1","products"],"query":[{"key":"category","value":"topup"}]},"description":"Valid categories: topup, bundle, esim, addon."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": [\n    {\n      \"sku\": 1001,\n      \"id\": \"b269be1d-302f-4d08-9def-be01443c122e\",\n      \"name\": \"Pelephone 50₪ Top-up\",\n      \"description\": \"Prepaid credit\",\n      \"category\": \"topup\",\n      \"provider_code\": \"ish7nly\",\n      \"provider_name\": \"Ish7nly\",\n      \"telecom_company_code\": \"pelephone\",\n      \"telecom_company_name\": \"Pelephone\",\n      \"face_value\": 5000,\n      \"currency\": \"ILS\"\n    }\n  ]\n}"}],"_postman_id":"cc3eef9e-3cc9-4981-92fc-ab490ab26796"}],"id":"6ef95281-47ea-45f4-88d9-28e8f7276b07","description":"<p>Product catalog. Only returns active + mapped products. Filtered by API key's allowed_carriers. Each product includes provider (API supplier) and telecom company (end operator brand) identification.</p>\n","_postman_id":"6ef95281-47ea-45f4-88d9-28e8f7276b07"},{"name":"4. Charge","item":[{"name":"Charge - Success (SKU)","event":[{"listen":"test","script":{"exec":["var jsonData = pm.response.json();","if (jsonData.success && jsonData.data) {","    pm.collectionVariables.set('operation_id', jsonData.data.operation_id);","}"],"type":"text/javascript","id":"f651d21c-577b-4b6a-8211-c63b55e44073"}}],"id":"b21d0723-1f47-41b0-a326-3541aaa9c85a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"product_id\": \"1001\",\n  \"phone_number\": \"0501234567\",\n  \"client_reference\": \"order-2026-04-001\"\n}"},"url":"https://api.x-com.co.il/api/v1/charge","description":"<p>Resolves product by SKU -&gt; carrier -&gt; face_value. Creates operation, calls carrier, creates ledger entry.</p>\n<h3 id=\"🧪-sandbox-testing-magic-numbers\">🧪 Sandbox Testing Magic Numbers</h3>\n<p>Use the following values in the <code>phone_number</code> field to trigger specific simulator behaviors:</p>\n<ul>\n<li><strong><code>0500000001</code></strong> - Success (completed)</li>\n<li><strong><code>0500000002</code></strong> - Rejection (failed, code: <code>CHARGE_FAILED</code>)</li>\n<li><strong><code>0500000003</code></strong> - Timeout (needs review, permanent timeout)</li>\n<li><strong><code>0500000004</code></strong> - Offline carrier (failed, code: <code>CHARGE_FAILED</code>)</li>\n<li><strong><code>0500000005</code></strong> - Pending -&gt; Resolves to Success after 5s (polling test)</li>\n<li><strong><code>0500000006</code></strong> - Pending -&gt; Resolves to Failure after 5s (polling test)</li>\n</ul>\n","urlObject":{"path":["api","v1","charge"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"c03a4fb1-d25b-4b7f-905b-3dd7a0931322","name":"Charge - Success","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"product_id\": \"1001\",\n  \"phone_number\": \"0501234567\",\n  \"client_reference\": \"order-2026-04-001\"\n}"},"url":"https://api.x-com.co.il/api/v1/charge","description":"Resolves product by SKU -> carrier -> face_value. Creates operation, calls carrier, creates ledger entry.\n\n### 🧪 Sandbox Testing Magic Numbers\nUse the following values in the `phone_number` field to trigger specific simulator behaviors:\n* **`0500000001`** - Success (completed)\n* **`0500000002`** - Rejection (failed, code: `CHARGE_FAILED`)\n* **`0500000003`** - Timeout (needs review, permanent timeout)\n* **`0500000004`** - Offline carrier (failed, code: `CHARGE_FAILED`)\n* **`0500000005`** - Pending -> Resolves to Success after 5s (polling test)\n* **`0500000006`** - Pending -> Resolves to Failure after 5s (polling test)"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"operation_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n    \"status\": \"completed\",\n    \"idempotent\": false\n  }\n}"},{"id":"83157bdd-3021-4e36-8316-98bcdde35fb8","name":"Charge - Failed (carrier rejected)","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"product_id\": \"1001\",\n  \"phone_number\": \"0501234567\",\n  \"client_reference\": \"order-2026-04-001\"\n}"},"url":"https://api.x-com.co.il/api/v1/charge","description":"Resolves product by SKU -> carrier -> face_value. Creates operation, calls carrier, creates ledger entry.\n\n### 🧪 Sandbox Testing Magic Numbers\nUse the following values in the `phone_number` field to trigger specific simulator behaviors:\n* **`0500000001`** - Success (completed)\n* **`0500000002`** - Rejection (failed, code: `CHARGE_FAILED`)\n* **`0500000003`** - Timeout (needs review, permanent timeout)\n* **`0500000004`** - Offline carrier (failed, code: `CHARGE_FAILED`)\n* **`0500000005`** - Pending -> Resolves to Success after 5s (polling test)\n* **`0500000006`** - Pending -> Resolves to Failure after 5s (polling test)"},"status":"Unprocessable Entity","code":422,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"data\": {\n    \"operation_id\": \"f5e6d7c8-a9b0-1234-cdef-567890abcdef\",\n    \"status\": \"failed\",\n    \"idempotent\": false\n  },\n  \"error\": {\n    \"code\": \"CHARGE_FAILED\",\n    \"message\": \"The charge could not be completed by the carrier\"\n  }\n}"}],"_postman_id":"b21d0723-1f47-41b0-a326-3541aaa9c85a"},{"name":"Charge - Idempotent (duplicate client_reference)","id":"de74b9f2-d368-4a52-abb9-0137d4a9f96b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"product_id\": \"1001\",\n  \"phone_number\": \"0501234567\",\n  \"client_reference\": \"order-2026-04-001\"\n}"},"url":"https://api.x-com.co.il/api/v1/charge","description":"<p>Same client_reference returns original result with idempotent=true. Idempotency key is scoped per client.</p>\n","urlObject":{"path":["api","v1","charge"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"b7c76be2-f27c-426a-b5aa-d5e0e59f4f58","name":"Idempotent Response","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"product_id\": \"1001\",\n  \"phone_number\": \"0501234567\",\n  \"client_reference\": \"order-2026-04-001\"\n}"},"url":"https://api.x-com.co.il/api/v1/charge","description":"Same client_reference returns original result with idempotent=true. Idempotency key is scoped per client."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"operation_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n    \"status\": \"completed\",\n    \"idempotent\": true\n  }\n}"}],"_postman_id":"de74b9f2-d368-4a52-abb9-0137d4a9f96b"}],"id":"74c1c425-a4ec-4b4b-b915-575c4499180a","description":"<p>Execute product charges. Amount resolved from product face_value (never from client). Supports SKU (numeric) and UUID (legacy) for product_id.</p>\n","_postman_id":"74c1c425-a4ec-4b4b-b915-575c4499180a"},{"name":"5. Status","item":[{"name":"Status - Get by ID","id":"b54a56e3-0110-4688-a57f-11e82da690d8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/status/a1b2c3d4-e5f6-7890-abcd-ef1234567890","description":"<p>Requires 'status' permission. Returns client-safe fields only.</p>\n<p>Use this endpoint to poll for async simulator transitions when charging the timeout numbers (<code>0500000005</code> or <code>0500000006</code>).</p>\n","urlObject":{"path":["api","v1","status","a1b2c3d4-e5f6-7890-abcd-ef1234567890"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"3cb47e32-eb70-4d03-baed-4e0598a83a35","name":"Status - Completed","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/status/a1b2c3d4-e5f6-7890-abcd-ef1234567890","description":"Requires 'status' permission. Returns client-safe fields only.\n\nUse this endpoint to poll for async simulator transitions when charging the timeout numbers (`0500000005` or `0500000006`)."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"operation_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n    \"type\": \"charge\",\n    \"status\": \"completed\",\n    \"phone_number\": \"0501234567\",\n    \"amount\": 5000,\n    \"client_reference\": \"order-2026-04-001\",\n    \"created_at\": \"2026-04-03T15:30:00Z\",\n    \"completed_at\": \"2026-04-03T15:30:02Z\"\n  }\n}"}],"_postman_id":"b54a56e3-0110-4688-a57f-11e82da690d8"}],"id":"1966bd7e-31c0-4eef-b666-bd1c224d4df2","description":"<p>Check operation status. Enforces ownership — returns 404 for other client's operations (never 403) to prevent details leaking.</p>\n","_postman_id":"1966bd7e-31c0-4eef-b666-bd1c224d4df2"},{"name":"6. Cancel","item":[{"name":"Cancel - Request Cancellation","event":[{"listen":"test","script":{"exec":["var jsonData = pm.response.json();","if (jsonData.success && jsonData.data) {","    pm.collectionVariables.set('cancel_operation_id', jsonData.data.cancel_operation_id);","}"],"type":"text/javascript","id":"5ec4ed64-954a-4a6d-9083-50b1f2a88b5d"}}],"id":"00c80bbb-f379-4c96-a327-90dbf9f3154f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"operation_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n}"},"url":"https://api.x-com.co.il/api/v1/cancel","description":"<p>Requires 'cancel' permission. Verifies ownership and cancel window (typically 24 hours) before execution.</p>\n","urlObject":{"path":["api","v1","cancel"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"6e0060a0-bf65-44ec-9dea-1e5cbc0b8819","name":"Cancel - Success","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"operation_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n}"},"url":"https://api.x-com.co.il/api/v1/cancel","description":"Requires 'cancel' permission. Verifies ownership and cancel window (typically 24 hours) before execution."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"cancel_operation_id\": \"f5e6d7c8-a9b0-1234-cdef-567890abcdef\",\n    \"original_operation_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n    \"status\": \"completed\"\n  }\n}"}],"_postman_id":"00c80bbb-f379-4c96-a327-90dbf9f3154f"}],"id":"34dfe01c-63ac-43e3-bb54-feee2bca1d07","description":"<p>Cancel a completed charge. Reverses the transaction with the carrier and issues a refund on XCOM-HUB.</p>\n","_postman_id":"34dfe01c-63ac-43e3-bb54-feee2bca1d07"},{"name":"7. eSIM API","item":[{"name":"eSIM - Catalog","id":"17074364-af2a-4055-bf8a-b46e5fe250f7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/esim/catalog","description":"<p>Returns available eSIM operators and their allowed prepaid charge product SKUs. Enforces client/API key restrictions.</p>\n","urlObject":{"path":["api","v1","esim","catalog"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"de23828a-29d2-42b2-970d-6b81e9ed213d","name":"eSIM Catalog - Success","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/esim/catalog","description":"Returns available eSIM operators and their allowed prepaid charge product SKUs. Enforces client/API key restrictions."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": [\n    {\n      \"telecom_company\": \"pelephone\",\n      \"telecom_company_name\": \"Pelephone\",\n      \"supports_provision_only\": true,\n      \"supports_provision_and_charge\": true,\n      \"inventory_modes\": [\"hub\", \"client\"],\n      \"charge_products\": [\n        {\n          \"sku\": 1048,\n          \"name\": \"חופשי 30 יום\",\n          \"face_value\": 6990,\n          \"currency\": \"ILS\"\n        }\n      ]\n    }\n  ]\n}"}],"_postman_id":"17074364-af2a-4055-bf8a-b46e5fe250f7"},{"name":"eSIM - Provision Only","event":[{"listen":"test","script":{"exec":["var jsonData = pm.response.json();","if (jsonData.success && jsonData.data) {","    pm.collectionVariables.set('session_id', jsonData.data.session_id);","}"],"type":"text/javascript","id":"325dc97c-aed2-4eba-979b-1cfd71f7923b"}}],"id":"9073b78d-9aaa-4bd7-a7d2-1b4d273fde6e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"telecom_company\": \"pelephone\",\n  \"inventory_source\": \"hub\",\n  \"external_order_id\": \"ORD-2026-001\"\n}"},"url":"https://api.x-com.co.il/api/v1/esim/provision","description":"<p>Provisions a new eSIM line without charging. Returns the QR Code and eSIM LPA string.</p>\n<h3 id=\"🧪-sandbox-testing-external_order_id-prefixes\">🧪 Sandbox testing external_order_id Prefixes:</h3>\n<p>Prefix your <code>external_order_id</code> to test simulated carrier states:</p>\n<ul>\n<li><strong><code>FAIL-*</code></strong> - Simulates provisioning failure (<code>PROVISION_FAILED</code> / 422)</li>\n<li><strong><code>PENDING-*</code></strong> - Simulates async pending activation (<code>pending</code> / 202; resolves to completed on status poll)</li>\n<li><strong><code>STOCKOUT-*</code></strong> - Simulates zero eSIM inventory stock (<code>HUB_STOCK_UNAVAILABLE</code> / 422; valid for source=hub)</li>\n<li><strong><code>CHARGEFAIL-*</code></strong> - Simulates plan charge failure after provision (session status: <code>partial</code>, charge_status: <code>failed</code> / 422)</li>\n</ul>\n","urlObject":{"path":["api","v1","esim","provision"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"d24eccd9-5b81-475a-bf04-165a8d6c2a9f","name":"eSIM Provision - Success","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"telecom_company\": \"pelephone\",\n  \"inventory_source\": \"hub\",\n  \"external_order_id\": \"ORD-2026-001\"\n}"},"url":"https://api.x-com.co.il/api/v1/esim/provision","description":"Provisions a new eSIM line without charging. Returns the QR Code and eSIM LPA string.\n\n### 🧪 Sandbox testing external_order_id Prefixes:\nPrefix your `external_order_id` to test simulated carrier states:\n* **`FAIL-*`** - Simulates provisioning failure (`PROVISION_FAILED` / 422)\n* **`PENDING-*`** - Simulates async pending activation (`pending` / 202; resolves to completed on status poll)\n* **`STOCKOUT-*`** - Simulates zero eSIM inventory stock (`HUB_STOCK_UNAVAILABLE` / 422; valid for source=hub)\n* **`CHARGEFAIL-*`** - Simulates plan charge failure after provision (session status: `partial`, charge_status: `failed` / 422)"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"session_id\": \"b2c3d4e5-f6a7-8901-bcde-f12345678901\",\n    \"status\": \"completed\",\n    \"assigned_phone_number\": \"0500000099\",\n    \"qr_code\": \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...\"\n  }\n}"}],"_postman_id":"9073b78d-9aaa-4bd7-a7d2-1b4d273fde6e"},{"name":"eSIM - Provision and Charge","id":"68ffd420-eacb-4ad8-993e-cf3d65eca39d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"telecom_company\": \"pelephone\",\n  \"inventory_source\": \"hub\",\n  \"external_order_id\": \"ORD-2026-002\",\n  \"charge_product_id\": 1048\n}"},"url":"https://api.x-com.co.il/api/v1/esim/provision-and-charge","description":"<p>Provisions the eSIM and automatically charges it with the specified plan SKU. Returns bonus details if eligible.</p>\n<h3 id=\"🧪-sandbox-testing-external_order_id-prefixes\">🧪 Sandbox testing external_order_id Prefixes:</h3>\n<p>Use prefixes in <code>external_order_id</code> to mock specific flows:</p>\n<ul>\n<li><strong><code>CHARGEFAIL-*</code></strong> - eSIM profile is generated but the charge product fails to load (HTTP 422, status: <code>partial</code>, charge_status: <code>failed</code>).</li>\n</ul>\n","urlObject":{"path":["api","v1","esim","provision-and-charge"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"92e7ddf3-db16-4d0b-9b15-7afedb84b0f1","name":"eSIM Provision and Charge - Success","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"telecom_company\": \"pelephone\",\n  \"inventory_source\": \"hub\",\n  \"external_order_id\": \"ORD-2026-002\",\n  \"charge_product_id\": 1048\n}"},"url":"https://api.x-com.co.il/api/v1/esim/provision-and-charge","description":"Provisions the eSIM and automatically charges it with the specified plan SKU. Returns bonus details if eligible.\n\n### 🧪 Sandbox testing external_order_id Prefixes:\nUse prefixes in `external_order_id` to mock specific flows:\n* **`CHARGEFAIL-*`** - eSIM profile is generated but the charge product fails to load (HTTP 422, status: `partial`, charge_status: `failed`)."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"session_id\": \"b2c3d4e5-f6a7-8901-bcde-f12345678901\",\n    \"status\": \"completed\",\n    \"assigned_phone_number\": \"0500000099\",\n    \"qr_code\": \"data:image/png;base64,iVBORw0KGgoAAA...\",\n    \"charge_status\": \"completed\",\n    \"bonus_eligible\": true,\n    \"bonus_estimated_amount\": 69.9,\n    \"bonus_eligible_month\": \"2026-05\"\n  }\n}"},{"id":"29127650-dcdd-406a-a34a-450a16cdb752","name":"Partial Success (SIM OK, Charge Failed)","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"telecom_company\": \"pelephone\",\n  \"inventory_source\": \"hub\",\n  \"external_order_id\": \"ORD-2026-002\",\n  \"charge_product_id\": 1048\n}"},"url":"https://api.x-com.co.il/api/v1/esim/provision-and-charge","description":"Provisions the eSIM and automatically charges it with the specified plan SKU. Returns bonus details if eligible.\n\n### 🧪 Sandbox testing external_order_id Prefixes:\nUse prefixes in `external_order_id` to mock specific flows:\n* **`CHARGEFAIL-*`** - eSIM profile is generated but the charge product fails to load (HTTP 422, status: `partial`, charge_status: `failed`)."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"session_id\": \"b2c3d4e5-f6a7-8901-bcde-f12345678901\",\n    \"status\": \"partial\",\n    \"assigned_phone_number\": \"0500000099\",\n    \"qr_code\": \"data:image/png;base64,iVBORw...\",\n    \"charge_status\": \"failed\"\n  }\n}"}],"_postman_id":"68ffd420-eacb-4ad8-993e-cf3d65eca39d"}],"id":"acb5ffb3-cb57-41fd-99f6-d027c0b4915a","description":"<p>Provisions new eSIM lines. Allows either XCOM-managed stock allocation (hub source) or client-managed details integration.</p>\n","_postman_id":"acb5ffb3-cb57-41fd-99f6-d027c0b4915a"},{"name":"8. Rent Line API","item":[{"name":"Offerings - List Active","id":"ca299ff5-8115-4d1b-a8a6-9868435c2429","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/rent-lines/offerings","description":"<p>List active offerings for rent lines with client-specific pricing details resolved. Skips offerings without configured client pricing.</p>\n","urlObject":{"path":["api","v1","rent-lines","offerings"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"b0ffabac-eccc-48bf-bedb-6696e146edd4","name":"Rent Offerings - Success","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/rent-lines/offerings","description":"List active offerings for rent lines with client-specific pricing details resolved. Skips offerings without configured client pricing."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"offerings\": [\n      {\n        \"offering_id\": \"d4e5f6a7-b8c9-0123-d5e6-123456789012\",\n        \"name\": \"Pelephone Rent-a-Line 30 Days\",\n        \"description\": \"Physical SIM rental line\",\n        \"telecom_company\": \"Pelephone\",\n        \"sim_type\": \"physical\",\n        \"number_type\": \"mobile\",\n        \"duration_days\": 30,\n        \"status\": \"active\",\n        \"activation_price\": 1500,\n        \"renewal_price\": 1200,\n        \"total_activation_cost\": 1500,\n        \"currency\": \"ILS\",\n        \"ready\": true,\n        \"supported_actions\": [\"activate\", \"renew\"]\n      }\n    ],\n    \"total\": 1\n  }\n}"}],"_postman_id":"ca299ff5-8115-4d1b-a8a6-9868435c2429"},{"name":"Offerings - Get Detail","id":"fe607bb9-dea8-490d-ad39-492e0fff94ae","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/rent-lines/offerings/d4e5f6a7-b8c9-0123-d5e6-123456789012","description":"<p>Returns offering detail with client-specific sell prices.</p>\n","urlObject":{"path":["api","v1","rent-lines","offerings","d4e5f6a7-b8c9-0123-d5e6-123456789012"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"29706f54-0f45-4acb-8067-3f98eec64aec","name":"Get Offering Detail - Success","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/rent-lines/offerings/d4e5f6a7-b8c9-0123-d5e6-123456789012","description":"Returns offering detail with client-specific sell prices."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"offering_id\": \"d4e5f6a7-b8c9-0123-d5e6-123456789012\",\n    \"name\": \"Pelephone Rent-a-Line 30 Days\",\n    \"description\": \"Physical SIM rental line\",\n    \"telecom_company\": \"Pelephone\",\n    \"sim_type\": \"physical\",\n    \"number_type\": \"mobile\",\n    \"duration_days\": 30,\n    \"status\": \"active\",\n    \"activation_price\": 1500,\n    \"renewal_price\": 1200,\n    \"total_activation_cost\": 1500,\n    \"currency\": \"ILS\",\n    \"ready\": true,\n    \"supported_actions\": [\"activate\", \"renew\"]\n  }\n}"}],"_postman_id":"fe607bb9-dea8-490d-ad39-492e0fff94ae"},{"name":"Available Numbers - Fetch","id":"7835a6c0-b1e6-4d01-8d07-9c3366877ac4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"offering_id\": \"d4e5f6a7-b8c9-0123-d5e6-123456789012\"\n}"},"url":"https://api.x-com.co.il/api/v1/rent-lines/available-numbers","description":"<p>Queries carrier for available numbers. Reservations are held for 10 minutes.</p>\n<p>In sandbox, this endpoint always returns a list of 5 deterministic phone numbers (<code>0501000001</code> - <code>0501000005</code>) with a 600s TTL.</p>\n","urlObject":{"path":["api","v1","rent-lines","available-numbers"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"ea2370f5-89de-4072-85fc-dad64d9920e5","name":"Available Numbers - Success","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"offering_id\": \"d4e5f6a7-b8c9-0123-d5e6-123456789012\"\n}"},"url":"https://api.x-com.co.il/api/v1/rent-lines/available-numbers","description":"Queries carrier for available numbers. Reservations are held for 10 minutes.\n\nIn sandbox, this endpoint always returns a list of 5 deterministic phone numbers (`0501000001` - `0501000005`) with a 600s TTL."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"numbers\": [\"0501000001\", \"0501000002\"],\n    \"offering_id\": \"d4e5f6a7-b8c9-0123-d5e6-123456789012\",\n    \"expires_in_seconds\": 600,\n    \"count\": 2\n  }\n}"}],"_postman_id":"7835a6c0-b1e6-4d01-8d07-9c3366877ac4"},{"name":"Rent Line - Activate","event":[{"listen":"test","script":{"exec":["var jsonData = pm.response.json();","if (jsonData.success && jsonData.data) {","    pm.collectionVariables.set('rent_line_id', jsonData.data.rent_line_id);","}"],"type":"text/javascript","id":"27c2798e-584f-4e54-a572-d10a6b43bcf3"}}],"id":"6e1c58b3-c0a6-4737-a9bd-71d1fa5e7eb0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"offering_id\": \"d4e5f6a7-b8c9-0123-d5e6-123456789012\",\n  \"client_reference\": \"rent-ref-001\",\n  \"assignment_mode\": \"auto\"\n}"},"url":"https://api.x-com.co.il/api/v1/rent-lines","description":"<p>Activates a rent line. If assignment_mode=manual, phone_number must be sent (from the available-numbers endpoint).</p>\n<h3 id=\"🧪-sandbox-testing-client_reference-prefixes\">🧪 Sandbox testing client_reference Prefixes:</h3>\n<p>Use specific prefixes in your <code>client_reference</code> to test simulated states:</p>\n<ul>\n<li><strong><code>FAIL-*</code></strong> - Activates in pending state (<code>ACTIVATION_PENDING</code> / 202)</li>\n<li><strong><code>NONUMS-*</code></strong> - Fails due to no numbers available (<code>NO_NUMBERS_AVAILABLE</code> / 422)</li>\n<li><strong><code>PENDING-*</code></strong> - Async pending activation (resolves to active on next status check)</li>\n<li><strong><code>RFAIL-*</code></strong> - Activation succeeds, but subsequent <code>/renew</code> attempts fail with a timeout error.</li>\n</ul>\n","urlObject":{"path":["api","v1","rent-lines"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"2556c872-3e9a-47af-a6a1-0518f25447c4","name":"Rent Line - Success","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"offering_id\": \"d4e5f6a7-b8c9-0123-d5e6-123456789012\",\n  \"client_reference\": \"rent-ref-001\",\n  \"assignment_mode\": \"auto\"\n}"},"url":"https://api.x-com.co.il/api/v1/rent-lines","description":"Activates a rent line. If assignment_mode=manual, phone_number must be sent (from the available-numbers endpoint).\n\n### 🧪 Sandbox testing client_reference Prefixes:\nUse specific prefixes in your `client_reference` to test simulated states:\n* **`FAIL-*`** - Activates in pending state (`ACTIVATION_PENDING` / 202)\n* **`NONUMS-*`** - Fails due to no numbers available (`NO_NUMBERS_AVAILABLE` / 422)\n* **`PENDING-*`** - Async pending activation (resolves to active on next status check)\n* **`RFAIL-*`** - Activation succeeds, but subsequent `/renew` attempts fail with a timeout error."},"status":"Created","code":201,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"rent_line_id\": \"c3d4e5f6-a7b8-9012-cdef-012345678902\",\n    \"status\": \"active\",\n    \"phone_number\": \"0502223344\",\n    \"is_esim\": false,\n    \"idempotent\": false\n  }\n}"}],"_postman_id":"6e1c58b3-c0a6-4737-a9bd-71d1fa5e7eb0"},{"name":"Rent Line - List My Lines","id":"1beb6ee0-2a06-4993-a039-33dbf33991cf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/rent-lines?status=active","description":"<p>Lists client rent lines with filters. Default limit: 50.</p>\n","urlObject":{"path":["api","v1","rent-lines"],"host":["https://api.x-com.co.il"],"query":[{"key":"status","value":"active"}],"variable":[]}},"response":[{"id":"ad5b83be-b000-4a4c-b2ec-f47e744a7dc2","name":"List Rent Lines - Success","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":{"raw":"https://api.x-com.co.il/api/v1/rent-lines?status=active","host":["https://api.x-com.co.il"],"path":["api","v1","rent-lines"],"query":[{"key":"status","value":"active"}]},"description":"Lists client rent lines with filters. Default limit: 50."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": [\n    {\n      \"id\": \"c3d4e5f6-a7b8-9012-cdef-012345678902\",\n      \"status\": \"active\",\n      \"phone_number\": \"0502223344\",\n      \"is_esim\": false,\n      \"provider_company_code\": \"pelephone\",\n      \"activated_at\": \"2026-05-31T17:00:00Z\",\n      \"expires_at\": \"2026-06-30T17:00:00Z\",\n      \"renewal_count\": 0,\n      \"created_at\": \"2026-05-31T16:59:00Z\"\n    }\n  ],\n  \"meta\": {\n    \"total\": 1,\n    \"limit\": 50,\n    \"offset\": 0\n  }\n}"}],"_postman_id":"1beb6ee0-2a06-4993-a039-33dbf33991cf"},{"name":"Rent Line - Detail","id":"d1c4207f-8c7e-4b92-b6c8-82a5ad21abf7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/rent-lines/c3d4e5f6-a7b8-9012-cdef-012345678902","description":"<p>Returns full details of a specific rent line. Enforces client ownership.</p>\n","urlObject":{"path":["api","v1","rent-lines","c3d4e5f6-a7b8-9012-cdef-012345678902"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"1d930f57-56ca-467d-8c43-30a1763e5317","name":"Get Rent Line Detail - Success","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/rent-lines/c3d4e5f6-a7b8-9012-cdef-012345678902","description":"Returns full details of a specific rent line. Enforces client ownership."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"id\": \"c3d4e5f6-a7b8-9012-cdef-012345678902\",\n    \"status\": \"active\",\n    \"phone_number\": \"0502223344\",\n    \"sim_number\": \"8997200000012345678\",\n    \"is_esim\": false,\n    \"provider_company_code\": \"pelephone\",\n    \"offering_id\": \"d4e5f6a7-b8c9-0123-d5e6-123456789012\",\n    \"activated_at\": \"2026-05-31T17:00:00Z\",\n    \"expires_at\": \"2026-06-30T17:00:00Z\",\n    \"renewal_count\": 0,\n    \"client_reference\": \"rent-ref-001\",\n    \"created_at\": \"2026-05-31T16:59:00Z\"\n  }\n}"}],"_postman_id":"d1c4207f-8c7e-4b92-b6c8-82a5ad21abf7"},{"name":"Rent Line - Status Check","id":"026d3845-43bc-4b47-ae41-b31f797cc0ec","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/rent-lines/c3d4e5f6-a7b8-9012-cdef-012345678902/status","description":"<p>Returns cached status and expiration date of the rent line.</p>\n","urlObject":{"path":["api","v1","rent-lines","c3d4e5f6-a7b8-9012-cdef-012345678902","status"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"858ad4f2-ab00-478a-85d1-de3db95b1337","name":"Get Rent Line Status - Success","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/rent-lines/c3d4e5f6-a7b8-9012-cdef-012345678902/status","description":"Returns cached status and expiration date of the rent line."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"rent_line_id\": \"c3d4e5f6-a7b8-9012-cdef-012345678902\",\n    \"status\": \"active\",\n    \"phone_number\": \"0502223344\",\n    \"expires_at\": \"2026-06-30T17:00:00Z\"\n  }\n}"}],"_postman_id":"026d3845-43bc-4b47-ae41-b31f797cc0ec"},{"name":"Rent Line - Refresh Status Live","id":"11a1399a-7733-4da7-841d-70ee71f50de3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/rent-lines/c3d4e5f6-a7b8-9012-cdef-012345678902/refresh-status","description":"<p>Triggers a live status call to the provider API, updates the database, and returns the current provider status and sync flag.</p>\n","urlObject":{"path":["api","v1","rent-lines","c3d4e5f6-a7b8-9012-cdef-012345678902","refresh-status"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"59b6c2f9-e444-4d11-9e8b-5132e00b6bd3","name":"Refresh Status - Success","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/rent-lines/c3d4e5f6-a7b8-9012-cdef-012345678902/refresh-status","description":"Triggers a live status call to the provider API, updates the database, and returns the current provider status and sync flag."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"rent_line_id\": \"c3d4e5f6-a7b8-9012-cdef-012345678902\",\n    \"status\": \"active\",\n    \"previous_status\": \"active\",\n    \"phone_number\": \"0502223344\",\n    \"expires_at\": \"2026-06-30T17:00:00Z\",\n    \"provider_status\": \"active_sync\",\n    \"refreshed\": true,\n    \"status_changed\": false\n  }\n}"}],"_postman_id":"11a1399a-7733-4da7-841d-70ee71f50de3"},{"name":"Rent Line - Renew","id":"01521ede-2935-4b32-86de-b0db6750049f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"renew_count\": 1\n}"},"url":"https://api.x-com.co.il/api/v1/rent-lines/c3d4e5f6-a7b8-9012-cdef-012345678902/renew","description":"<p>Extends the expiration date of a rent line by renewing with the provider.</p>\n<p>In sandbox, if the line was originally activated with client_reference prefix <code>RFAIL-</code>, this call will fail (timeout simulated).</p>\n","urlObject":{"path":["api","v1","rent-lines","c3d4e5f6-a7b8-9012-cdef-012345678902","renew"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"340b9d37-78c1-4c97-ae12-d61da99239d6","name":"Renew - Success","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"renew_count\": 1\n}"},"url":"https://api.x-com.co.il/api/v1/rent-lines/c3d4e5f6-a7b8-9012-cdef-012345678902/renew","description":"Extends the expiration date of a rent line by renewing with the provider.\n\nIn sandbox, if the line was originally activated with client_reference prefix `RFAIL-`, this call will fail (timeout simulated)."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"rent_line_id\": \"c3d4e5f6-a7b8-9012-cdef-012345678902\",\n    \"status\": \"active\",\n    \"renewal_count\": 1\n  }\n}"}],"_postman_id":"01521ede-2935-4b32-86de-b0db6750049f"},{"name":"Rent Line - Change SIM","id":"bf961189-03fe-4a78-8271-d2ac269b7845","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"sim_number\": \"8997200000098765432\"\n}"},"url":"https://api.x-com.co.il/api/v1/rent-lines/c3d4e5f6-a7b8-9012-cdef-012345678902/change-sim","description":"<p>Changes the physical SIM ICCID associated with this rental line.</p>\n","urlObject":{"path":["api","v1","rent-lines","c3d4e5f6-a7b8-9012-cdef-012345678902","change-sim"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"255fa719-2537-49e8-957d-16ca42e97405","name":"Change SIM - Success","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"sim_number\": \"8997200000098765432\"\n}"},"url":"https://api.x-com.co.il/api/v1/rent-lines/c3d4e5f6-a7b8-9012-cdef-012345678902/change-sim","description":"Changes the physical SIM ICCID associated with this rental line."},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"rent_line_id\": \"c3d4e5f6-a7b8-9012-cdef-012345678902\",\n    \"status\": \"active\",\n    \"sim_number\": \"8997200000098765432\"\n  }\n}"}],"_postman_id":"bf961189-03fe-4a78-8271-d2ac269b7845"}],"id":"a60f9e78-7f7e-49cf-bdd8-e9c21531ad08","description":"<p>Manage renting mobile numbers. All operations require rent_line permission domain.</p>\n","_postman_id":"a60f9e78-7f7e-49cf-bdd8-e9c21531ad08"},{"name":"9. Balance","item":[{"name":"Balance - Not Implemented","id":"65993b6d-8866-44a9-a892-45d768d8c0f1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/balance","description":"<p>⚠️ PLACEHOLDER — NOT IMPLEMENTED. Returns 501. Endpoint exists in router but uses placeholderHandler().</p>\n","urlObject":{"path":["api","v1","balance"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"f5b37a33-5dce-4436-ba8e-aabec7bccfa3","name":"Not Implemented","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"}],"url":"https://api.x-com.co.il/api/v1/balance","description":"⚠️ PLACEHOLDER — NOT IMPLEMENTED. Returns 501. Endpoint exists in router but uses placeholderHandler()."},"status":"Not Implemented","code":501,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"NOT_IMPLEMENTED\",\n    \"message\": \"balance endpoint is not yet implemented\"\n  }\n}"}],"_postman_id":"65993b6d-8866-44a9-a892-45d768d8c0f1"}],"id":"3c64f742-20e5-4b33-bf2c-17602aadcacf","description":"<p>Check account balance. PLACEHOLDER — NOT IMPLEMENTED.</p>\n","_postman_id":"3c64f742-20e5-4b33-bf2c-17602aadcacf"},{"name":"10. Edge Cases","item":[{"name":"Charge - UUID product_id (legacy)","id":"1cc84d03-d657-4504-83c6-943a14158856","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"product_id\": \"b269be1d-302f-4d08-9def-be01443c122e\",\n  \"phone_number\": \"0501234567\",\n  \"client_reference\": \"test-uuid-001\"\n}"},"url":"https://api.x-com.co.il/api/v1/charge","description":"<p>Tries numeric SKU first, falls back to UUID parse. Both paths functional.</p>\n","urlObject":{"path":["api","v1","charge"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[],"_postman_id":"1cc84d03-d657-4504-83c6-943a14158856"},{"name":"Charge - Invalid product_id format","id":"52a714c0-9037-485b-95ba-4c22d299c5fc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"product_id\": \"abc-not-sku-not-uuid\",\n  \"phone_number\": \"0501234567\",\n  \"client_reference\": \"test-invalid-id-001\"\n}"},"url":"https://api.x-com.co.il/api/v1/charge","description":"<p>Not numeric and not valid UUID -&gt; 404.</p>\n","urlObject":{"path":["api","v1","charge"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"847b7ba5-5a61-4226-b417-3cc4174a2b09","name":"Invalid product_id","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"product_id\": \"abc-not-sku-not-uuid\",\n  \"phone_number\": \"0501234567\",\n  \"client_reference\": \"test-invalid-id-001\"\n}"},"url":"https://api.x-com.co.il/api/v1/charge","description":"Not numeric and not valid UUID -> 404."},"status":"Not Found","code":404,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"NOT_FOUND\",\n    \"message\": \"Product not found\"\n  }\n}"}],"_postman_id":"52a714c0-9037-485b-95ba-4c22d299c5fc"},{"name":"Cancel - Invalid UUID operation_id","id":"43c4f4e4-09a3-4029-b2f2-49bf6f4ea5ed","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"operation_id\": \"not-a-valid-uuid\"\n}"},"url":"https://api.x-com.co.il/api/v1/cancel","description":"<p>operation_id must be valid UUID.</p>\n","urlObject":{"path":["api","v1","cancel"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"0a51c1bd-e67b-4185-bc13-7e128ed041c1","name":"Invalid UUID","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"operation_id\": \"not-a-valid-uuid\"\n}"},"url":"https://api.x-com.co.il/api/v1/cancel","description":"operation_id must be valid UUID."},"status":"Bad Request","code":400,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"VALIDATION_ERROR\",\n    \"message\": \"operation_id must be a valid UUID\"\n  }\n}"}],"_postman_id":"43c4f4e4-09a3-4029-b2f2-49bf6f4ea5ed"},{"name":"Charge - Empty Body","id":"b211776c-b32e-4477-ae74-17c1924bad31","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":""},"url":"https://api.x-com.co.il/api/v1/charge","description":"<p>Edge case: completely empty body.</p>\n","urlObject":{"path":["api","v1","charge"],"host":["https://api.x-com.co.il"],"query":[],"variable":[]}},"response":[{"id":"68c88ebb-7e84-4ae2-ba3d-616a5721ef2b","name":"Empty Body","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer gw_test_example_key_abc123"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":""},"url":"https://api.x-com.co.il/api/v1/charge","description":"Edge case: completely empty body."},"status":"Bad Request","code":400,"_postman_previewlanguage":"Text","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"VALIDATION_ERROR\",\n    \"message\": \"Invalid JSON in request body\"\n  }\n}"}],"_postman_id":"b211776c-b32e-4477-ae74-17c1924bad31"}],"id":"5de1237a-60f2-467c-a922-88431712db08","description":"<p>Edge case scenarios for comprehensive testing.</p>\n","_postman_id":"5de1237a-60f2-467c-a922-88431712db08"}],"variable":[{"key":"base_url","value":"https://api.x-com.co.il"},{"key":"api_key","value":"gw_test_example_key_abc123"},{"key":"operation_id","value":"a1b2c3d4-e5f6-7890-abcd-ef1234567890"},{"key":"cancel_operation_id","value":"f5e6d7c8-a9b0-1234-cdef-567890abcdef"},{"key":"session_id","value":"b2c3d4e5-f6a7-8901-bcde-f12345678901"},{"key":"rent_line_id","value":"c3d4e5f6-a7b8-9012-cdef-012345678902"},{"key":"offering_id","value":"d4e5f6a7-b8c9-0123-d5e6-123456789012"}]}