{"info":{"_postman_id":"b62c0a19-7847-4425-a959-063c09a4ba3f","name":"Mithras Vault API","description":"<html><head></head><body><h2 id=\"overview\">Overview</h2>\n<p>Remus Vault is a secure API for storing, tokenizing, and proxying sensitive payment card data.</p>\n<ul>\n<li><p>Data at rest is stored securely and only retrievable with proper authentication.</p>\n</li>\n<li><p>Proxy endpoints support capture from third parties and sending card data to authorized destinations.</p>\n</li>\n<li><p>All sensitive operations require valid credentials and organization-level onboarding.</p>\n</li>\n</ul>\n<h2 id=\"getting-started\">Getting Started</h2>\n<ol>\n<li><p>Contact Mithras Support to request onboarding, development environment and credentials:</p>\n<ul>\n<li><p>Email: <a href=\"https://mailto:support@mithras.cloud\">support@mithras.cloud</a></p>\n</li>\n<li><p>Include your organization details and intended use (storage, capture, send).</p>\n</li>\n</ul>\n</li>\n<li><p>Receive from Mithras:</p>\n<ul>\n<li><p>Base API URL (referred to here as <code>https://vault_endpoint</code>)</p>\n</li>\n<li><p>API credentials (X-API-Key, X-User-Token)</p>\n</li>\n<li><p>Any scope- or environment-specific guidance</p>\n</li>\n</ul>\n</li>\n<li><p>(Optional, for Send Card) Request target endpoint authorization:</p>\n<ul>\n<li><p>Provide exact HTTPS URL prefix(es) and allowed HTTP method(s) to be whitelisted.</p>\n</li>\n<li><p>Requests to destinations not explicitly authorized will be rejected.</p>\n</li>\n</ul>\n</li>\n</ol>\n<h2 id=\"authentication\">Authentication</h2>\n<p>All API requests must include the following headers:</p>\n<ul>\n<li><p><code>X-API-Key: </code></p>\n</li>\n<li><p><code>X-User-Token: </code></p>\n</li>\n</ul>\n<p>Notes:</p>\n<ul>\n<li><p>Credentials are issued by Mithras (request via <a href=\"https://mailto:support@mithras.cloud\">support@mithras.cloud</a>).</p>\n</li>\n<li><p>Additional authorization headers may be required for specific partner flows and will be provided during onboarding if applicable.</p>\n</li>\n</ul>\n<h2 id=\"tokens--access\">Tokens &amp; Access</h2>\n<ul>\n<li><p>When storing a card, you receive:</p>\n<ul>\n<li><p><code>vault_locker</code> (public token identifying the stored item)</p>\n</li>\n<li><p><code>vault_locker_key</code> (secret key used to unlock/decrypt when permitted)</p>\n</li>\n</ul>\n</li>\n<li><p>Treat tokens as secrets. Do not log full values.</p>\n</li>\n<li><p>Viewing unmasked data or CVV may be limited and is auditable; CVV retrieval is explicitly user-driven and can count as a view.</p>\n</li>\n<li><p>Send Card replaces placeholders (e.g. <code>%CARD_NUMBER%</code>) in your request body with real data server-side and forwards to authorized destinations.</p>\n</li>\n</ul>\n<h2 id=\"card-data-retrieval\">Card Data Retrieval</h2>\n<p><em><strong>If you need to access or retrieve the stored card data, please contact</strong></em> <a href=\"https://mailto:support@mithras.cloud\"><i><b>support@mithras.cloud</b></i></a> <em><strong>and we will provide you with the relevant documentation and access procedures.</strong></em></p>\n<h2 id=\"tokenisation-profiles\">Tokenisation Profiles</h2>\n<p>Tokenisation Profiles define how card data is located and masked in third-party responses (e.g., booking payloads). Profiles are provisioned by Mithras upon request (no charge). Current commonly available profiles include: <code>channex</code>, <code>channex_entity</code>, and <code>roomcloud</code>.</p>\n<p>Profile structure (simplified):</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"json\",\n  \"schema\": {\n    \"message_node\": { \"selector\": \"$.data\" },\n    \"card_node\": { \"selector\": \"ccData.attributes\" }\n  },\n  \"card_token_placement\": {\n    \"type\": \"card_node\",\n    \"card_token_node\": \"token\"\n  },\n  \"card_node\": {\n    \"card_number\": { \"selector\": \"ccNumber\" },\n    \"cardholder_name\": { \"selector\": \"ccHolder\" },\n    \"expiration_month\": { \"selector\": \"ccExpireDate\", \"transformation\": \"substring:0,2\" },\n    \"expiration_year\": { \"selector\": \"ccExpireDate\", \"transformation\": \"substring:3,7\" },\n    \"service_code\": { \"selector\": \"ccCode\" }\n  }\n}\n\n</code></pre>\n<p>Notes:</p>\n<ul>\n<li><p>Use of selectors (e.g., JSONPath) is implementation detail; you only need to specify the profile name provided during onboarding.</p>\n</li>\n<li><p>Ask <a href=\"https://mailto:support@mithras.cloud\">support@mithras.cloud</a> to add or adjust profiles for your integrations.</p>\n</li>\n</ul>\n<h3 id=\"example-profiles-provisioned-by-mithras\">Example Profiles (provisioned by Mithras)</h3>\n<p>Channex:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"json\",\n  \"schema\": {\n    \"message_node\": { \"selector\": \"$.data\" },\n    \"card_node\": { \"selector\": \"attributes.guarantee\" }\n  },\n  \"card_token_placement\": {\n    \"type\": \"card_node\",\n    \"card_token_node\": \"token\",\n    \"error_node\": \"error\"\n  },\n  \"card_node\": {\n    \"card_number\": { \"selector\": \"card_number\" },\n    \"card_type\": { \"selector\": \"card_type\" },\n    \"cardholder_name\": { \"selector\": \"cardholder_name\" },\n    \"expiration_month\": { \"selector\": \"expiration_date\", \"transformation\": \"substring:0,2\" },\n    \"expiration_year\": { \"selector\": \"expiration_date\", \"transformation\": \"substring:3,7\" },\n    \"service_code\": { \"selector\": \"cvv\" }\n  }\n}\n\n</code></pre>\n<p>RoomCloud:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"json\",\n  \"schema\": {\n    \"message_node\": { \"selector\": \"$\" },\n    \"card_node\": { \"selector\": \"ccData.attributes\" }\n  },\n  \"card_token_placement\": {\n    \"type\": \"card_node\",\n    \"card_token_node\": \"token\",\n    \"error_node\": \"error\"\n  },\n  \"card_node\": {\n    \"card_number\": { \"selector\": \"ccNumber\" },\n    \"cardholder_name\": { \"selector\": \"ccHolder\" },\n    \"expiration_month\": { \"selector\": \"ccExpireDate\", \"transformation\": \"substring:0,2\" },\n    \"expiration_year\": { \"selector\": \"ccExpireDate\", \"transformation\": \"substring:3,7\" },\n    \"service_code\": { \"selector\": \"ccCode\" }\n  }\n}\n\n</code></pre>\n<p>Contact <a href=\"https://mailto:support@mithras.cloud\">support@mithras.cloud</a> to enable or customize profiles for your integration.</p>\n<h2 id=\"special-requirements\">Special Requirements</h2>\n<ul>\n<li><p>Send Card Proxy requires prior authorization (whitelisting) of the destination HTTPS endpoint. Submit a request to <a href=\"https://mailto:support@mithras.cloud\">support@mithras.cloud</a> with the full URL prefix and allowed HTTP methods.</p>\n</li>\n<li><p>Production traffic must use HTTPS exclusively.</p>\n</li>\n</ul>\n<h2 id=\"conventions\">Conventions</h2>\n<ul>\n<li><p><code>https://vault_endpoint</code> is a placeholder for your assigned base URL.</p>\n</li>\n<li><p>Example requests include realistic payloads and query parameters; adapt as needed for your integration.</p>\n</li>\n</ul>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"9471013","collectionId":"b62c0a19-7847-4425-a959-063c09a4ba3f","publishedId":"2sB3HnJecX","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"252525","highlight":"0059db"},"publishDate":"2025-09-08T21:09:25.000Z"},"item":[{"name":"Credit Card Management","item":[{"name":"Create Credit Card","id":"8d2a2093-ba57-4c1f-a86e-729cd1484ba7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-API-Key","value":"","type":"text"},{"key":"X-User-Token","value":"","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"card\": {\n    \"card_number\": \"4111111111111111\",\n    \"card_type\": \"visa\",\n    \"cardholder_name\": \"John Doe\",\n    \"expiration_month\": 12,\n    \"expiration_year\": 2027,\n    \"cvv\": \"123\"\n  }\n}"},"url":"https://vault_endpoint/api/v1/vault/credit-cards","description":"<p>Stores a new credit card securely. The response returns masked card data and a token (‘vault_locker’) for future access.</p>\n","urlObject":{"path":["api","v1","vault","credit-cards"],"host":["https://vault_endpoint"],"query":[],"variable":[]}},"response":[],"_postman_id":"8d2a2093-ba57-4c1f-a86e-729cd1484ba7"},{"name":"Patch Credit Card","id":"036a6633-97d1-4a19-9287-d843686184f9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"X-API-Key","value":"","type":"text"},{"key":"X-User-Token","value":"","type":"text"}],"url":"https://vault_endpoint/api/v1/vault/credit-cards/:vault_locker?vault_locker_key=<locker_key>","description":"<p>Refreshes encryption and metadata for a stored card.</p>\n","urlObject":{"path":["api","v1","vault","credit-cards",":vault_locker"],"host":["https://vault_endpoint"],"query":[{"key":"vault_locker_key","value":"<locker_key>"}],"variable":[{"id":"d3485224-3e53-4066-a184-76bde258114a","type":"any","value":"VAULT_...","key":"vault_locker"}]}},"response":[],"_postman_id":"036a6633-97d1-4a19-9287-d843686184f9"},{"name":"Delete Credit Card","id":"49661d8b-6631-412e-975c-26ff270d8b50","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[{"key":"X-API-Key","value":"","type":"text"},{"key":"X-User-Token","value":"","type":"text"}],"url":"https://vault_endpoint/api/v1/vault/credit-cards/:vault_locker","description":"<p>Deletes a stored card and its metadata.</p>\n","urlObject":{"path":["api","v1","vault","credit-cards",":vault_locker"],"host":["https://vault_endpoint"],"query":[],"variable":[{"id":"cf5bed2a-6846-4a1e-a6b9-9331f1dce2c2","type":"any","value":"VAULT_...","key":"vault_locker"}]}},"response":[],"_postman_id":"49661d8b-6631-412e-975c-26ff270d8b50"}],"id":"3b45f863-fbfe-48e6-b591-f6a922f3005b","description":"<p>Create, retrieve, update, and delete stored cards. All examples use the <code>https://vault_endpoint</code> placeholder.</p>\n","_postman_id":"3b45f863-fbfe-48e6-b591-f6a922f3005b"},{"name":"Capture Proxy","item":[{"name":"Capture from Third Party","id":"9d559f12-1e78-415f-bcf7-900828229fee","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-API-Key","value":"","type":"text"},{"key":"X-User-Token","value":"","type":"text"}],"url":"https://vault_endpoint/api/v1/vault/capture?api_key=<3rd_party_key>&method=get&url=https://third.party.example/api/bookings&profile=channex","description":"<p>HTTPS only. The <code>profile</code> defines how card data is extracted and masked.</p>\n","urlObject":{"path":["api","v1","vault","capture"],"host":["https://vault_endpoint"],"query":[{"key":"api_key","value":"<3rd_party_key>"},{"key":"method","value":"get"},{"key":"url","value":"https://third.party.example/api/bookings"},{"key":"profile","value":"channex"}],"variable":[]}},"response":[],"_postman_id":"9d559f12-1e78-415f-bcf7-900828229fee"}],"id":"64d2757f-651a-487b-a265-c8a425f97e8a","description":"<p>Forward a request to a third-party HTTPS API, extract card data using a configured profile, store it, and return masked data with tokens.</p>\n","_postman_id":"64d2757f-651a-487b-a265-c8a425f97e8a"},{"name":"Send Card Proxy","item":[{"name":"Send Stored Card to Authorized Endpoint","id":"dd0615da-288f-41ec-918a-4051b6bd1c21","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"X-API-Key","value":"","type":"text"},{"key":"X-User-Token","value":"","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"card\": {\n    \"number\": \"%CARD_NUMBER%\",\n    \"holder\": \"%CARDHOLDER_NAME%\",\n    \"cvv\": \"%SERVICE_CODE%\",\n    \"exp_month\": \"%EXPIRATION_MM%\",\n    \"exp_year\": \"%EXPIRATION_YYYY%\"\n  },\n  \"amount\": 1000,\n  \"currency\": \"usd\"\n}"},"url":"https://vault_endpoint/api/v1/vault/cards/:vault_locker/send?api_key=<target_api_key>&method=post&url=https://api.stripe.com/v1/charges&vault_locker_key=<locker_key>","description":"<p>Requires prior authorization of the destination URL. Placeholders are replaced with actual card data at send time.</p>\n<p>The following placeholders can be used in request bodies and will be replaced with actual card data:<br />- `%CARD_NUMBER%` - The full credit card number (e.g., \"4111111111111111\")<br />- `%CARDHOLDER_NAME%` - The name on the card (e.g., \"John Doe\")<br />- `%SERVICE_CODE%` - The CVV/CVC security code (e.g., \"123\")<br />- `%EXPIRATION_MM%` - The expiration month as zero-padded 2 digits (e.g., \"03\")<br />- `%EXPIRATION_YYYY%` - The expiration year as 4 digits (e.g., \"2025\")<br />- `%EXPIRATION_YY%` - The expiration year as 2 digits (e.g., \"25\")</p>\n","urlObject":{"path":["api","v1","vault","cards",":vault_locker","send"],"host":["https://vault_endpoint"],"query":[{"description":{"content":"<p>Optional API key for the destination service</p>\n","type":"text/plain"},"key":"api_key","value":"<target_api_key>"},{"key":"method","value":"post"},{"key":"url","value":"https://api.stripe.com/v1/charges"},{"key":"vault_locker_key","value":"<locker_key>"}],"variable":[{"type":"any","value":"VAULT_...","key":"vault_locker"}]}},"response":[],"_postman_id":"dd0615da-288f-41ec-918a-4051b6bd1c21"}],"id":"dcad4c47-6bd1-4ed9-a752-597705ad404f","description":"<p>Send previously stored card data to an authorized HTTPS endpoint. Destination must be pre-approved (whitelisted) by Mithras before use.</p>\n<p>Headers guidance:</p>\n<ul>\n<li>Provide target credentials in <code>Authorization</code> (e.g., Bearer/Basic); forwarded as-is.</li>\n<li>Optional <code>api_key</code> query param adds <code>X-API-Key</code> to the outbound request unless you already set an <code>X-API-Key</code> header.</li>\n<li>Set <code>Content-Type</code> required by the target (application/json, application/x-www-form-urlencoded, etc.).</li>\n<li>Idempotency and custom headers are forwarded unchanged.</li>\n</ul>\n<p>Body placeholders (applied to body only): <code>%CARD_NUMBER%</code>, <code>%CARDHOLDER_NAME%</code>, <code>%SERVICE_CODE%</code>, <code>%EXPIRATION_MM%</code>, <code>%EXPIRATION_YYYY%</code>.</p>\n<p>Note: Send Card counts as a visualization/unmask operation and increments the card’s access counter (default max: 3). Upon reaching the maximum, the card is automatically deleted.</p>\n","_postman_id":"dcad4c47-6bd1-4ed9-a752-597705ad404f"},{"name":"Forms (optional)","item":[{"name":"Capture Card (iframe)","id":"4a3806f5-870a-418f-b2f6-a4d185cbf623","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://vault_endpoint/api/v1/forms/capture-form?session-token=<session_token>","description":"<p>Embed the hosted card capture form as an iframe. Example:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-html\">&lt;/div&gt;&lt;div&gt;  id=\\\"cardCaptureIframe\\\"\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;  height=\\\"320\\\"\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;  scrolling=\\\"no\\\"\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;  style=\\\"border:0; width:100%; max-width:420px;\\\"\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;  src=\\\"https://vault_endpoint/api/v1/forms/capture-form?session-token=SESSION_...\\\"&gt;\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;/iframe&amp;gt;\n&lt;br&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p &gt;PostMessage API:&lt;/p&gt;&lt;ul &gt;&lt;li &gt;&lt;div&gt;Submit form:&lt;/div&gt;&lt;pre class=javascript&gt;&lt;code&gt;&lt;div&gt;const iframe = document.getElementById(&amp;#x27;cardCaptureIframe&amp;#x27;);\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;iframe.contentWindow.postMessage(&amp;#x27;submit&amp;#x27;, &amp;#x27;https://vault_endpoint&amp;#x27;);\n&lt;br&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li &gt;&lt;div&gt;Validate form (returns validity state):&lt;/div&gt;&lt;pre class=javascript&gt;&lt;code&gt;&lt;div&gt;const iframe = document.getElementById(&amp;#x27;cardCaptureIframe&amp;#x27;);\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;iframe.contentWindow.postMessage(&amp;#x27;validate&amp;#x27;, &amp;#x27;https://vault_endpoint&amp;#x27;);\n&lt;br&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li &gt;&lt;div&gt;Handle responses:&lt;/div&gt;&lt;pre class=javascript&gt;&lt;code&gt;&lt;div&gt;const PCI_PROXY_DOMAIN = &amp;#x27;https://vault_endpoint&amp;#x27;;\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;const listener = (event) =&gt; {\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;if (event.origin !== PCI_PROXY_DOMAIN) return;\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;if (event.data.valid !== undefined) {\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;  console.log(&amp;#x27;card valid:&amp;#x27;, event.data.valid);\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;}\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;if (event.data.success) {\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;  console.log(&amp;#x27;submit result:&amp;#x27;, event.data);\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;}\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;};\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;window.addEventListener(&amp;#x27;message&amp;#x27;, listener);\n&lt;br&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p &gt;Response examples:&lt;/p&gt;&lt;ul &gt;&lt;li &gt;&lt;div&gt;Validate&lt;/div&gt;&lt;pre class=json&gt;&lt;code&gt;&lt;div&gt;{ \n&lt;br&gt;&lt;/div&gt;&lt;div&gt;\\\"event_type\\\": \\\"validate\\\",\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;\\\"valid\\\": true\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;}\n&lt;br&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li &gt;&lt;div&gt;Submit&lt;/div&gt;&lt;pre class=json&gt;&lt;code&gt;&lt;div&gt;{\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;\\\"event_type\\\": \\\"submit\\\",\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;\\\"success\\\": true,\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;\\\"card\\\": {\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;  \\\"card_number\\\": \\\"411111******1111\\\",\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;  \\&amp;quot;card_token\\&amp;quot;: \\&amp;quot;&amp;lt;token&amp;gt;\\&amp;quot;,\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;  \\\"cardholder_name\\\": \\\"JOHN DOE\\\",\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;  \\\"expiration_month\\\": \\\"11\\\",\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;  \\\"expiration_year\\\": \\\"2027\\\",\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;  \\\"service_code\\\": \\\"***\\\",\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;  \\\"card_type\\\": \\\"visa\\\"\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;}\n&lt;br&gt;&lt;/div&gt;&lt;div&gt;}\n&lt;br&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p &gt;Optional query params (availability by onboarding):&lt;/p&gt;&lt;ul &gt;&lt;li &gt;&lt;div&gt;&lt;code &gt;only&lt;/code&gt; or &lt;code &gt;except&lt;/code&gt;: comma-separated card brands (e.g., visa, mastercard).&lt;/div&gt;&lt;/li&gt;&lt;li &gt;&lt;div&gt;&lt;code &gt;lang&lt;/code&gt;: localized language code (e.g., en, es, it).&lt;/div&gt;&lt;/li&gt;&lt;li &gt;&lt;div&gt;&lt;code &gt;style&lt;/code&gt;: custom style name.&lt;/div&gt;&lt;/li&gt;&lt;li &gt;&lt;div&gt;&lt;code &gt;service_code_optional&lt;/code&gt;: &lt;code &gt;true|false&lt;/code&gt;.&lt;/div&gt;&lt;/li&gt;&lt;li &gt;&lt;div&gt;&lt;code &gt;service_code_visible&lt;/code&gt;: &lt;code &gt;true|false&lt;/code&gt;.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p &gt;Notes:&lt;/p&gt;&lt;ul &gt;&lt;li &gt;&lt;div&gt;Use a one-off session token for capture scope as provided during onboarding.&lt;/div&gt;&lt;/li&gt;&lt;li &gt;&lt;div&gt;Do not render or proxy the iframe server-side.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p &gt;&lt;/p&gt;&lt;/x-turndown&gt;\n</code></pre>\n","urlObject":{"path":["api","v1","forms","capture-form"],"host":["https://vault_endpoint"],"query":[{"key":"session-token","value":"<session_token>"},{"disabled":true,"key":"only","value":"<optional_csv>"},{"disabled":true,"key":"except","value":"<optional_csv>"},{"disabled":true,"key":"lang","value":"<optional_lang>"},{"disabled":true,"key":"style","value":"<optional_style>"},{"disabled":true,"key":"service_code_optional","value":"<true_or_false>"},{"disabled":true,"key":"service_code_visible","value":"<true_or_false>"}],"variable":[]}},"response":[],"_postman_id":"4a3806f5-870a-418f-b2f6-a4d185cbf623"},{"name":"Show Card (iframe)","id":"a127c1bf-1641-4be8-a1e3-79e0cafe7920","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"https://vault_endpoint/api/v1/forms/show-card?x-vault-locker=<vault_locker>&x-vault-locker-key=<vault_locker_key>&x-session-token=<session_token>&x-cvv-session-token=<cvv_session_token_optional>","description":"<p>Embed in your UI as an iframe to display masked card details. Example iframe HTML (replace placeholders):</p>\n<p>Notes:</p>\n<ul>\n<li><p>Provide <code>x-cvv-session-token</code> to enable a user-driven button that reveals the service code (CVV) once and immediately revokes it.</p>\n</li>\n<li><p>Load on the client side only; never render server-side.</p>\n</li>\n<li><p>Implement 2FA for viewing.</p>\n</li>\n<li><p>Log each view (user, time, card, IP, location).</p>\n</li>\n</ul>\n","urlObject":{"path":["api","v1","forms","show-card"],"host":["https://vault_endpoint"],"query":[{"key":"x-vault-locker","value":"<vault_locker>"},{"key":"x-vault-locker-key","value":"<vault_locker_key>"},{"key":"x-session-token","value":"<session_token>"},{"key":"x-cvv-session-token","value":"<cvv_session_token_optional>"}],"variable":[]}},"response":[],"_postman_id":"a127c1bf-1641-4be8-a1e3-79e0cafe7920"}],"id":"848727e7-ce63-4048-94a9-3b30e0163826","description":"<p>Hosted display and capture flows for embedding in your application.</p>\n<h3 id=\"iframe-security-requirements\">Iframe Security Requirements</h3>\n<ul>\n<li>The iframe URL must be loaded on the client-side in the user's browser (do not render server-side).</li>\n<li>Implement 2FA for login into your system or specifically for viewing card details.</li>\n<li>Log all view requests on your side (user, timestamp, card, IP, location).</li>\n<li>Suspicious activity may result in temporary suspension of view functionality pending investigation.</li>\n</ul>\n<h3 id=\"access-limits--auto-deletion\">Access Limits &amp; Auto-Deletion</h3>\n<ul>\n<li>Cards are subject to a maximum access count (default: 3).</li>\n<li>Viewing sensitive data (for example, revealing CVV via the iframe button or sending a card to a third party) increments the access count.</li>\n<li>Masked display in the Show Card iframe does not increment the access count.</li>\n<li>Once the maximum is reached, the card is automatically deleted. You can also delete a card at any time using the Management API (Delete Credit Card).</li>\n</ul>\n","_postman_id":"848727e7-ce63-4048-94a9-3b30e0163826"}],"variable":[{"key":"vault_endpoint","value":"https://vault_endpoint","type":"string"},{"key":"api_key","value":"","type":"string"},{"key":"user_token","value":"","type":"string"}]}