{"info":{"_postman_id":"aa6328ce-adc3-43c4-979e-a04d1676141c","name":"Account Management API","description":"<html><head></head><body><h1 id=\"account-management-api\">Account Management API</h1>\n<p>Magensa's Account Management API allows Resellers to manage their merchants' account. The goal is to provide an API that parallels our current Reseller Portal UI.</p>\n<h2 id=\"version-history\">Version History</h2>\n<p>In this version, we are testing additional <code>GET</code> methods, including lookups and resources. We welcome feedback with your experience.</p>\n<h4 id=\"changelog\">Changelog</h4>\n<p>When a parameter for any method expects a specific range or type of value (enum) - a lookup method is exposed to support populating these specific parameters (i.e. <code>transactionTypeFilter</code>). In the previous version, the lookup methods for available options had the schema <code>{ name: \"\", description: \"\", value: 0 }</code>. However, some parameters expected the <code>int</code> value, while others expected the <code>string</code> name. This has been corrected to a consistent <code>{ value: \"\" }</code> and (if needed) <code>description</code>. Eliminating the <code>int</code> values provides a more consistent experience, wherein a <code>string</code> is always expected for these specific (enum) parameters.</p>\n<h2 id=\"auth-header\">Auth Header</h2>\n<p>Basic Authorization header targets \"Reseller API Users\". You may continue to use Reseller Portal credentials to login to the UI. The API AuthHeader will represent program access, similar to an API Key. Authenticate all methods with <code>Authorization</code> <code>Basic</code> header.</p>\n<h2 id=\"notes\">Notes</h2>\n<p>The methods included in this release have examples included in this collection. Each sample request has a brief write-up for what the method is, as well as optional parameters (if applicable).</p>\n<p><code>/api/lookup</code> methods are included to support parameters that expect specific enum values.</p>\n<p>StartFragment</p>\n<h1 id=\"account-management\">Account Management</h1>\n<p>Endpoints in this folder support <strong>reseller merchant account discovery and transaction reporting</strong>.</p>\n<p>Use these requests to:</p>\n<ul>\n<li><p><strong>Find merchants</strong> under a reseller</p>\n</li>\n<li><p><strong>Retrieve merchant configuration</strong> details</p>\n</li>\n<li><p><strong>List and summarize transactions</strong> for a merchant over a date range</p>\n</li>\n<li><p><strong>Fetch detail for a specific transaction</strong></p>\n</li>\n</ul>\n<h2 id=\"requests-included\">Requests included</h2>\n<ul>\n<li><p>AccountManagement:</p>\n<ul>\n<li><p><strong>merchants (List Merchants)</strong> — List all merchants for the reseller, with optional filters (e.g., by customer code or company name) and paging/sorting.</p>\n</li>\n<li><p><strong>merchantInfo</strong> — Get merchant configuration information for a given <code>customerCode</code> (merchant + user-level config for MPPG scope).</p>\n</li>\n<li><p><strong>merchantTransactions</strong> — List transactions for a merchant (<code>customerCode</code>) within a <code>startDateTime</code> / <code>endDateTime</code> range, with optional filters and paging/sorting.</p>\n</li>\n<li><p><strong>merchantSummary (transaction summary for merchant)</strong> — Get an aggregated transaction summary for a merchant over an optional date range.</p>\n</li>\n<li><p><strong>transactionDetail</strong> — Retrieve full details for a specific transaction for a merchant (by <code>customerCode</code> and <code>transactionMagTranId</code>).</p>\n</li>\n</ul>\n</li>\n<li><p>Lookup:</p>\n<ul>\n<li><p><strong>merchantSortByOptions</strong> — values for the optional <code>sortBy</code> parameter in the 'merchants' method (list merchants).</p>\n</li>\n<li><p><strong>transactionSortByOptions</strong> — values for the optional <code>sortBy</code> parameter in the 'merchantTransactions' method.</p>\n</li>\n<li><p><strong>transactionTypes</strong> — MPPG transaction types. Can be used for various purposes. One of which is 'merchantTransactions' <code>transactionTypeFilter</code> optional parameter.</p>\n</li>\n<li><p>processorNames — List of processors supported by MPPG. Due to the various formats, and naming conventions; these values are url encoded. Processor names are used for merchant configuration (create and update), and can also be used to query processorProperties (or components).</p>\n</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"common-variables\">Common variables</h2>\n<p>These requests commonly rely on the following collection/environment variables:</p>\n<ul>\n<li><p><code>baseUrl</code>: <code>https://reseller.magensa.net</code></p>\n</li>\n<li><p><code>merchantCustomerCode</code>: <code>abc123</code>(target merchant's customer code)</p>\n</li>\n<li><p><code>startDateTime</code>: <code>2026-01-01T12:00:00</code>(start transaction range)</p>\n</li>\n<li><p><code>endDateTime</code>: <code>2026-03-03T12:00:00</code>(end transaction range)</p>\n</li>\n<li><p><code>magTranId</code>: <code>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</code></p>\n</li>\n<li><p><code>accountPath</code>: <code>accountManagement</code></p>\n</li>\n<li><p><code>lookupPath</code>: <code>lookup</code></p>\n</li>\n</ul>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Account Management API","slug":"account-management-api"},{"content":"Account Management","slug":"account-management"}],"owner":"33729815","collectionId":"aa6328ce-adc3-43c4-979e-a04d1676141c","publishedId":"2sBYHNWNS4","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-10-01T17:25:58.000Z"},"item":[{"name":"Account Management","item":[{"name":"transactionDetail","event":[{"listen":"test","script":{"exec":["const transactionSchema = {\r","    type: \"object\",\r","    properties: {\r","        amount: { type: \"number\" },\r","        deviceMake: { type: \"string\" },\r","        magMessage: { type: \"string\" },\r","        magOperation: { type: \"string\" },\r","        magStatus: { type: \"string\" },\r","        panLast4: { type: \"string\" },\r","        processor: { type: \"string\" },\r","        processorTransactionId: { type: \"string\" },\r","        processorTransactionMessage: { type: \"string\" },\r","        transactionSourceDescription: { type: \"string\" },\r","        transactionSourceId: { type: \"number\" },\r","        transactionStatus: { type: \"string\" },\r","        transactionType: { type: \"string\" },\r","        transactionUtcTimestamp: { type: \"string\" }\r","    }\r","};\r","\r","const trxListSchema = {\r","    type: \"object\",\r","    properties: {\r","        maxPageSize: { type: \"integer\" },\r","        totalRowCount: { type: \"integer\" },\r","        transactionUtcTimestamp: { type: \"string\" },\r","        magTranId: { type: \"string\" },\r","        customerTransactionID: { type: \"string\" },\r","        status: { type: \"integer\" },\r","        message: { type: \"string\" }\r","    }\r","}\r","\r","pm.test(\"Success Status Code\", () => {\r","    pm.expect(pm.response.code).to.equal(200);\r","    pm.expect(pm.response.status).to.equal(\"OK\");\r","});\r","\r","pm.test(\"Response Schema matches Swagger\", () => {\r","    pm.response.to.have.jsonBody();\r","    pm.response.to.have.jsonSchema(trxListSchema);\r","\r","    const parsedResp = pm.response.json();\r","    console.log(parsedResp.transactions)\r","    if (parsedResp.transactions) {\r","        for (const transaction of parsedResp.transactions)\r","            pm.expect(transaction).to.be.jsonSchema(transactionSchema);\r","    }\r","});\r",""],"type":"text/javascript","packages":{},"requests":{},"id":"d213f98a-e433-4081-991c-f14008d87174"}}],"id":"52fe6361-705d-4c0b-8ea0-a1363a8bd17a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic"}],"url":"//merchant//transactionDetail/","description":"<h1 id=\"transaction-detail\">Transaction Detail</h1>\n<p>Transaction detail for a specific merchant transaction, specified by <code>customerCode</code>and <code>magTranId</code> for the target transaction.</p>\n<h3 id=\"optional-parameters\">Optional Parameters</h3>\n<p><code>customerTransactionId</code>: Can be used for customer trace reference. If one is not supplied - a traceId will be generated and returned in the response.</p>\n","urlObject":{"path":["","merchant","","transactionDetail",""],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"52fe6361-705d-4c0b-8ea0-a1363a8bd17a"},{"name":"merchantTransactions","event":[{"listen":"test","script":{"exec":["const transactionSchema = {\r","    type: \"object\",\r","    properties: {\r","        amount: { type: \"number\" },\r","        deviceMake: { type: \"string\" },\r","        magOperation: { type: \"string\" },\r","        magStatus: { type: \"string\" },\r","        panLast4: { type: \"string\" },\r","        processor: { type: \"string\" },\r","        processorTransactionId: { type: \"string\" },\r","        processorTransactionMessage: { type: \"string\" },\r","        transactionSourceDescription: { type: \"string\" },\r","        transactionSourceId: { type: \"number\" },\r","        transactionStatus: { type: \"string\" },\r","        transactionType: { type: \"string\" },\r","        transactionUtcTimestamp: { type: \"string\" }\r","    }\r","};\r","\r","const trxListSchema = {\r","    type: \"object\",\r","    properties: {\r","        maxPageSize: { type: \"integer\" },\r","        totalRowCount: { type: \"integer\" },\r","        transactionUtcTimestamp: { type: \"string\" },\r","        magTranId: { type: \"string\" },\r","        customerTransactionID: { type: \"string\" },\r","        status: { type: \"integer\" },\r","        message: { type: \"string\" }\r","    }\r","}\r","\r","pm.test(\"Success Status Code\", () => {\r","    pm.expect(pm.response.code).to.equal(200);\r","    pm.expect(pm.response.status).to.equal(\"OK\");\r","});\r","\r","pm.test(\"Response Schema matches Swagger\", () => {\r","    pm.response.to.have.jsonBody();\r","    pm.response.to.have.jsonSchema(trxListSchema);\r","\r","    const parsedResp = pm.response.json();\r","    console.log(parsedResp.transactions)\r","    if (parsedResp.transactions) {\r","        for (const transaction of parsedResp.transactions)\r","            pm.expect(transaction).to.be.jsonSchema(transactionSchema);\r","    }\r","});\r",""],"type":"text/javascript","packages":{},"requests":{},"id":"2afe9c6c-6b1f-4ebe-889b-ff73c8ec1d57"}}],"id":"8ac8cfed-4668-455e-9fcf-dffe77e9eb8b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic"}],"url":"//merchantTransactions/","description":"<h1 id=\"merchant-transactions\">Merchant Transactions</h1>\n<p>List transactions for merchant, specified by <code>customerCode</code></p>\n<h2 id=\"optional-parameters\">Optional Parameters</h2>\n<p><code>pageSize</code>: Valid range is 0 - 1000. If not provided, default is <code>0</code>(no limit)</p>\n<p><code>pageNumber</code>: Must be greater than zero, or omitted. If not provided, default is <code>1</code>.</p>\n<p><code>customerTransactionId</code>: Can be used for customer trace reference. If one is not supplied -- a traceId will be generated and returned in the response.</p>\n<p><code>transactionTypeFilter</code>: String name to filter by transaction type. There is a lookup method that exposes all names: <code>api/lookup/transactionTypes</code></p>\n<p><code>sortyBy</code>: Enum value. Valid range is 21 - 47. There is a lookup method that exposes all values: <code>api/lookup/TransactionSortByOptions</code></p>\n<p><code>amountFromFilter</code>: Filter transactions by specifying an amount 'floor'</p>\n<p><code>amountToFilter</code>: Filter transactions by specifying an amount 'ceiling'</p>\n<p><code>customerTransactionIdFilter</code>: Filter by customerTransactionId</p>\n<p><code>deviceSerialNumberFilter</code>: Filter by device serial number</p>\n<p><code>magTranIdFilter</code>: Filter by MagTranID</p>\n<p><code>panLastFourFilter</code>: Filter by Last 4 of PAN</p>\n","urlObject":{"path":["","merchantTransactions",""],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"8ac8cfed-4668-455e-9fcf-dffe77e9eb8b"},{"name":"merchantSummary (transaction summary for merchant)","event":[{"listen":"test","script":{"exec":["const trxHistorySchema = {\r","    type: \"object\",\r","    properties: {\r","        transactionSummaries: {\r","            type: \"array\",\r","            items: {\r","                type: \"object\",\r","                properties: {\r","                    authorizeCount: { type: \"integer\" },\r","                    authorizeTotal: { type: \"number\" },\r","                    captureCount: { type: \"integer\" },\r","                    captureTotal: { type: \"number\" },\r","                    emvRejectCount: { type: \"integer\" },\r","                    emvRejectTotal: { type: \"number\" },\r","                    forceCount: { type: \"integer\" },\r","                    forceTotal: { type: \"number\" },\r","                    refundCount: { type: \"integer\" },\r","                    refundTotal: { type: \"number\" },\r","                    salesCount: { type: \"integer\" },\r","                    tokenCount: { type: \"integer\" },\r","                    tokenTotal: { type: \"number\" },\r","                    voidCount: { type: \"integer\" }\r","                }\r","            }\r","        },\r","        magTranId: { type: \"string\" },\r","        customerTransactionID: { type: \"string\" },\r","        status: { type: \"integer\" },\r","        message: { type: \"string\" }\r","    }\r","}\r","\r","pm.test(\"Success Status Code\", () => {\r","    pm.expect(pm.response.code).to.equal(200);\r","    pm.expect(pm.response.status).to.equal(\"OK\");\r","});\r","\r","pm.test(\"Response Schema matches Swagger\", () => {\r","    pm.response.to.have.jsonBody();\r","    pm.response.to.have.jsonSchema(trxHistorySchema);\r","});\r",""],"type":"text/javascript","packages":{},"requests":{},"id":"fafcc6bb-5e5a-422a-b324-87f739d121d4"}}],"id":"18ceff47-3964-4d95-8f28-ac26b7d0532c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic"}],"url":"//merchantSummary/","description":"<h1 id=\"merchant-summaries\">Merchant Summaries</h1>\n<p>Transaction summaries for a given merchant (specified by <code>customerCode</code> provided in path).</p>\n<h2 id=\"optional-parameters\">Optional Parameters</h2>\n<ul>\n<li><p><code>startDateTime</code> and <code>endDateTime</code> are optional filters to limit summary range.</p>\n<ul>\n<li><p>If not provided - default is past 90 days.</p>\n</li>\n<li><p>Range cannot exceed 120 days</p>\n</li>\n</ul>\n</li>\n<li><p><code>customerTransactionId</code>: Can be used for customer trace reference. If one is not supplied - a traceId will be generated and returned in the response.</p>\n</li>\n</ul>\n","urlObject":{"path":["","merchantSummary",""],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"18ceff47-3964-4d95-8f28-ac26b7d0532c"},{"name":"merchantInfo","event":[{"listen":"test","script":{"exec":["const successfulSchema = {\r","    type: \"object\",\r","    properties: {\r","        customerTransactionID: { type: \"string\" },\r","        status: { type: \"number\" },\r","        message: { type: \"string\" },\r","        merchant: {\r","            type: \"object\",\r","            properties: {\r","                address: {  type: \"string\" },\r","                zip: { type: \"string\" },\r","                city: { type: \"string\" },\r","                state: { type: \"string\" },\r","                companyName: { type: \"string\" },\r","                contactName: { type: \"string\" },\r","                merchantId: { type: \"number\" },\r","                email: { type: \"string\" },\r","                customerCode: { type: \"string\" },\r","                status: { type: \"number\" },\r","                statusName: { type: \"string\" },\r","            }\r","        },\r","        user: {\r","            type: \"object\",\r","            properties: {\r","                username: { type: \"string\" },\r","                userId: { type: \"number\" },\r","                blocked: { type: \"boolean\" },\r","                status: { type: \"number\" },\r","                statusName: { type: \"string\" },\r","                teconnect: {\r","                    type: \"object\",\r","                    properties: {\r","                        manualEntry: { type: \"boolean\" }\r","                    }\r","                }\r","            }\r","        }\r","    }\r","}\r","\r","\r","pm.test(\"Succcess Status Code\", () => {\r","    pm.response.to.have.status(200);\r","});\r","\r","pm.test(\"Response Schema Matches Swagger\", () => {\r","    pm.response.to.have.jsonBody();\r","    pm.response.to.have.jsonSchema(successfulSchema);\r","});\r",""],"type":"text/javascript","packages":{},"requests":{},"id":"023b7d13-2ffa-4d7e-b357-a1fe4b5e2e15"}},{"listen":"prerequest","script":{"exec":[""],"type":"text/javascript","packages":{},"requests":{},"id":"af5f2b54-fae4-41ad-9904-7b31c0193cb1"}}],"id":"7dfc3069-9aa4-462f-8e9d-783122eb9e99","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic"}],"url":"//merchantInfo/","description":"<h1 id=\"merchantinfo\">MerchantInfo</h1>\n<p>Merchant configuration info (specified by <code>customerCode</code> provided in path).</p>\n<p><code>merchantInfo</code> is a combination of merchant-level and user-level configuration. Scope of this call is limited to MPPG Service.</p>\n<h2 id=\"optional-parameters\">Optional Parameters</h2>\n<p><code>customerTransactionId</code>: Can be used for customer trace reference. If one is not supplied -- a traceId will be generated and returned in the response.</p>\n<h2 id=\"features-in-scope\">Features In Scope</h2>\n<ol>\n<li><p>TEConnect (Manual Entry)</p>\n</li>\n<li><p>TEConnect ApplePay</p>\n</li>\n<li><p>MPOC (Apple's Tap to Pay by iPhone)</p>\n</li>\n<li><p>DishOut (MPMP)</p>\n</li>\n<li><p>TEConnect 3DS (Paay)</p>\n</li>\n<li><p>Payment Request</p>\n</li>\n</ol>\n","urlObject":{"path":["","merchantInfo",""],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"7dfc3069-9aa4-462f-8e9d-783122eb9e99"},{"name":"listResellers (Master Reseller Only)","id":"db6b2ec3-69b4-47f4-9a52-9803bebee74f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic ","type":"text"}],"url":"//reseller/list","description":"<h2 id=\"list-resellers\">List Resellers</h2>\n<p>This method is for Master Reseller accounts only. It lists the sub-resellers associated with their account. Master Reseller API Users are supported with all methods the API offers. However, there are some methods that require the Master account to target a sub-reseller. This is specified in the request by <code>\"targetResellerCode\"</code>.</p>\n<p>The list returned from this method provides the resellerCodes needed to target a sub-reseller for any method that requires it.</p>\n","urlObject":{"path":["","reseller","list"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"db6b2ec3-69b4-47f4-9a52-9803bebee74f"},{"name":"merchants (List Merchants)","event":[{"listen":"test","script":{"exec":["const successfulMerchantsSchema = {\r","    type: \"object\",\r","    properties: {\r","        merchants: { type: \"array\" },\r","        customerTransactionID: { type: \"string\" },\r","        status: { type: \"integer\" },\r","        message: { type: \"string\" }\r","    }\r","}\r","\r","pm.test(\"Success Status Code\", () => {\r","    pm.expect(pm.response.code).to.equal(200);\r","    pm.expect(pm.response.status).to.equal(\"OK\");\r","});\r","\r","pm.test(\"Response Schema matches Swagger\", () => {\r","    pm.response.to.have.jsonBody();\r","    pm.response.to.have.jsonSchema(successfulMerchantsSchema);\r","});\r","\r","pm.test(\"Merchant List Schema matches Swagger\", () => {\r","    const parsedResponse = pm.response.json();\r","    for (const merchant of parsedResponse.merchants) {\r","        console.log(merchant);\r","        pm.expect(merchant).to.have.property(\"companyName\");\r","        pm.expect(merchant.companyName).to.be.a(\"string\");\r","\r","        pm.expect(merchant).to.have.property(\"customerCode\");\r","        pm.expect(merchant.customerCode).to.be.a(\"string\");\r","\r","        pm.expect(merchant).to.have.property(\"id\");\r","        pm.expect(merchant.id).to.be.a(\"number\");\r","\r","        pm.expect(merchant).to.have.property(\"status\");\r","        pm.expect(merchant.status).to.be.a(\"string\");\r","    }\r","});\r",""],"type":"text/javascript","packages":{},"requests":{},"id":"b43df039-33e3-45bc-a08c-f4cb002cba9c"}}],"id":"cc316cfb-c733-4369-8f3c-83c2abd0253d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic "}],"url":"//merchants","description":"<h1 id=\"list-merchants\">List Merchants</h1>\n<p>List all reseller's merchants.</p>\n<h3 id=\"optional-parameters\">Optional Parameters</h3>\n<p><code>customerCodeFilter</code>: Filter results by <code>customerCode</code> - this can be a partial or full match. For example <code>\"x\"</code>will match all (case insensative) <code>customerCodes</code> that contain a <code>\"x\"</code> or <code>\"X\"</code>.</p>\n<p><code>nameFilter</code>: Filter results by <code>companyName</code> - this can be a partial or full match (case-insensative).</p>\n<p><code>pageSize</code>: Must be between 0 - 1000. If not provided, default is <code>0</code>(no limit)</p>\n<p><code>pageNumber</code>: default is <code>1</code></p>\n<p><code>sortBy</code>: sortBy options are exposed in the lookup method <code>/api/lookup/merchantSortByOptions</code>, this is an enum value. Current options are <code>Name</code>,(company name) <code>customerCode</code> and <code>customerId</code></p>\n<p><code>customerTransactionId</code>: Can be used for customer trace reference. If one is not supplied -- a traceId will be generated and returned in the response.</p>\n<p><code>targetResellerCode</code>: Master Reseller account must specify a sub-reseller for a merchant list. This value is ignored for Resellers that are not Master accounts.</p>\n","urlObject":{"path":["","merchants"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"cc316cfb-c733-4369-8f3c-83c2abd0253d"},{"name":"allMerchantTransactions","event":[{"listen":"test","script":{"exec":["const transactionSchema = {","    type: \"object\",","    properties: {","        amount: { type: \"number\" },","        deviceMake: { type: \"string\" },","        magMessage: { type: \"string\" },","        magOperation: { type: \"string\" },","        magStatus: { type: \"string\" },","        panLast4: { type: \"string\" },","        processor: { type: \"string\" },","        processorTransactionId: { type: \"string\" },","        processorTransactionMessage: { type: \"string\" },","        transactionSourceDescription: { type: \"string\" },","        transactionSourceId: { type: \"number\" },","        transactionStatus: { type: \"string\" },","        transactionType: { type: \"string\" },","        transactionUtcTimestamp: { type: \"string\" }","    }","};","","const trxListSchema = {","    type: \"object\",","    properties: {","        maxPageSize: { type: \"integer\" },","        totalRowCount: { type: \"integer\" },","        transactionUtcTimestamp: { type: \"string\" },","        magTranId: { type: \"string\" },","        customerTransactionID: { type: \"string\" },","        status: { type: \"integer\" },","        message: { type: \"string\" }","    }","}","","pm.test(\"Success Status Code\", () => {","    pm.expect(pm.response.code).to.equal(200);","    pm.expect(pm.response.status).to.equal(\"OK\");","});","","pm.test(\"Response Schema matches Swagger\", () => {","    pm.response.to.have.jsonBody();","    pm.response.to.have.jsonSchema(trxListSchema);","","    const parsedResp = pm.response.json();","    console.log(parsedResp.transactions)","    if (parsedResp.transactions) {","        for (const transaction of parsedResp.transactions)","            pm.expect(transaction).to.be.jsonSchema(transactionSchema);","    }","});",""],"type":"text/javascript","packages":{},"requests":{},"id":"6026dde0-0613-4c23-85d9-84187b7d499e"}}],"id":"9feedcfc-953d-40b3-9f43-eaae7c6cf715","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic "}],"url":"//merchants/transactions?startDateTime=2025-08-05T12:00:00&endDateTime=2025-11-05T12:00:00","description":"<h1 id=\"merchant-transactions\">Merchant Transactions</h1>\n<p>List transactions for all merchants under a given reseller. The given reseller is assumed from the AuthHeader. If this is a Master Reseller Account - <code>\"targetResellerCode\"</code> must be supplied to target a sub-reseller (Master Accounts do not directly have merchants)</p>\n<h2 id=\"successful-test-case\">Successful Test Case</h2>\n<p>Use a valid AuthHeader (Reseller API User or Master Reseller API User)</p>\n<p><code>startDateTime</code> is a required query parameter. ISO format (yyyy-MM-ddTHH:mm:ss)</p>\n<p><code>endDateTime</code> is a required query parameter. ISO format (yyyy-MM-ddTHH:mm:ss)</p>\n<h2 id=\"optional-parameters\">Optional Parameters</h2>\n<p><code>pageSize</code>: Valid range is 0 - 1000.</p>\n<p><code>pageNumber</code>: Must be greater than zero, or omitted.</p>\n<p><code>customerTransactionId</code>: Can be used for customer trace reference. If one is not supplied - a traceId will be generated and returned in the response.</p>\n<p><code>transactionTypeFilter</code>: Enum value. Valid range is 1-9. There is a lookup method that exposes all values: <code>api/lookup/transactionTypes</code></p>\n<p><code>sortyBy</code>: Enum value. Valid range is 21 - 47. There is a lookup method that exposes all valid values: <code>api/lookup/TransactionSortByOptions</code></p>\n<p><code>amountFromFilter</code>: Filter transactions by specifying an amount 'floor'</p>\n<p><code>amountToFilter</code>: Filter transactions by specifying an amount 'ceiling'</p>\n<p><code>customerTransactionIdFilter</code>: Filter by customerTransactionId</p>\n<p><code>deviceSerialNumberFilter</code></p>\n<p><code>magTranIdFilter</code>: Filter by MagTranID</p>\n<p><code>panLastFourFilter</code>: Filter by Last 4 of PAN</p>\n<p><code>targetResellerCode</code>: Master Reseller Only. Target a sub-reseller to list all merchant's transactions for a given reseller. This is ignored for resellers that are not Master Accounts. This is mandatory for Master Reseller Accounts.</p>\n<h2 id=\"considerations\">Considerations</h2>\n<p>If the merchant does not have transactions, there will not be a <code>\"transactions\"</code> property in the response. This is by design. Instead of <code>{ \"transactions\": null }</code>, <code>\"transactions\"</code> is omitted from the JSON response.</p>\n","urlObject":{"path":["","merchants","transactions"],"host":[""],"query":[{"key":"startDateTime","value":"2025-08-05T12:00:00"},{"key":"endDateTime","value":"2025-11-05T12:00:00"}],"variable":[]}},"response":[],"_postman_id":"9feedcfc-953d-40b3-9f43-eaae7c6cf715"},{"name":"createMppgMerchant","event":[{"listen":"test","script":{"exec":["const createMerchantSuccessSchema = {\r","    type: \"object\",\r","    properties: {\r","        transactionUTCTimestamp: { type: \"string\" },\r","        customerTransactionID: { type: \"string\" },\r","        status: { type: \"integer\" },\r","        message: { type: \"string\" },\r","        merchantCustomerCode: { type: \"string\" },\r","        merchantUserName: { type: \"string\" }\r","    }\r","}\r","\r","pm.test(\"Success Status Code\", () => {\r","    pm.expect(pm.response.code).to.equal(200);\r","    pm.expect(pm.response.status).to.equal(\"OK\");\r","});\r","\r","pm.test(\"Response Schema matches Swagger\", () => {\r","    pm.response.to.have.jsonBody();\r","    pm.response.to.have.jsonSchema(createMerchantSuccessSchema);\r","});\r",""],"type":"text/javascript","packages":{},"requests":{},"id":"78e07182-9f6b-4784-a642-ac0d7218112e"}}],"id":"9a6ab1a5-f8bd-4711-9eb7-ae08039ad89c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Authorization","value":"Basic ","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"companyName\": \"string\",\r\n    \"address\": \"string\",\r\n    \"city\": \"string\",\r\n    \"state\": \"string\",\r\n    \"zip\": \"string\",\r\n    \"contactName\": \"string\", /* ContactName for merchant */\r\n    \"merchantEmail\": \"string\", /* Merchant's email */\r\n    \"resellerEmail\": \"string\", /* Merchant credential email is sent here */\r\n    \"notificationEmailList\": [ \"string\" ], /* Merchant credential email is also sent to address(es) included here. */\r\n    \"processorName\": \"string\",\r\n    \"processorDetails\": [ { \"key\": \"string\", \"value\": \"string\" } ]\r\n}","options":{"raw":{"language":"json"}}},"url":"//createMppgMerchant","description":"<h1 id=\"create-mppg-merchant\">Create MPPG Merchant</h1>\n<p>Create a new MPPG Merchant, as well as the initial user with processor configuration. Typically, merchants have one user with processor configuration (User credentials to call APIs/Services), and may optionally have more users that log in to \"Merchant Portal\" (Portal Users).</p>\n<p>This method supports optional features that the caller can choose to opt-in for the merchant (and user) creation.</p>\n<h2 id=\"request-body\">Request Body</h2>\n<p>The sample request included is required parameters only. Additional features are available to opt-in for both the create, and update methods.</p>\n<h2 id=\"optional-features\">Optional Features</h2>\n<ul>\n<li><p>Apple Tap to Pay by iPhone</p>\n</li>\n<li><p>DishOut (MPMP merchant creation)</p>\n</li>\n<li><p>TEConnect 3DS (Paay)</p>\n</li>\n<li><p>TEConnect Manual Entry</p>\n</li>\n<li><p>TEConnect ApplePay</p>\n</li>\n<li><p>GooglePay</p>\n</li>\n<li><p>Payment Request</p>\n</li>\n</ul>\n<h2 id=\"feature-opt-in\">Feature Opt-In</h2>\n<p>To opt-in for an additional feature, include the corresponding block in your request. For example, to opt-in for Apple's Tap to Pay by iPhone, include the <code>\"appleTapToPay\"</code> block, with additional properties specific for the target feature:</p>\n<p>In this example, the additional properties being <code>\"appleTapToPay\":{ \"merchantCategoryCode\": \"5411\", \"merchantBannerName\": \"Example BannerName\" }</code></p>\n<p>Some features have external dependencies (i.e. TEConnect ApplePay requires a validation file hosted at your registered domain) - which may fail if the dependencies are not met. For both create, and update; if a call is successful, but one or many optional features failed -- an <code>errorList</code> is included in the response, specifying which feature failed, and a message for the reason.</p>\n<h2 id=\"considerations\">Considerations</h2>\n<p>DishOut and Paay don't allow duplicate names. For all third-party cases -- the <code>\"companyName\"</code> value is used to on-board newly created merchants to DishOut and/or Paay. If two different merchants are created with the same <code>\"companyName\"</code> - only one will successfully integrate with DishOut and/or Paay.</p>\n<p>Master Resellers must specify a <code>\"targetResellerCode\"</code> to on-board a merchant. Master accounts don't directly house merchants.</p>\n","urlObject":{"path":["","createMppgMerchant"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"9a6ab1a5-f8bd-4711-9eb7-ae08039ad89c"},{"name":"updateMppgMerchant","event":[{"listen":"test","script":{"exec":["const allFeaturesUpdateResponseSchema = {\r","    type: \"object\",\r","    properties: {\r","        teConnectApplePayMerchantId: { type: \"string\" },\r","        status: { type: \"integer\" },\r","        message: { type: \"string\" },\r","        customerTransactionId: { type: \"string\" },\r","        appleTapToPay: {\r","            type: \"object\",\r","            properties: {\r","                merchantBannerName: { type: \"string\" },\r","                merchantCategoryCode: { type: \"string\" }\r","            }\r","        },\r","        dishOut: {\r","            type: \"object\",\r","            properties: {\r","                dishOutMerchantId: { type: \"integer\" },\r","                dishOutMerchantName: { type: \"string\" },\r","                dishOutMerchantDbaName: { type: \"string\" },\r","                dishOutResellerName: { type: \"string\" }\r","            }\r","        },\r","        teConnect3DS: {\r","            type: \"object\",\r","            properties: {\r","                paayMerchantId: { type: \"string\" },\r","                paayMerchantName: { type: \"string\" },\r","                teConnect3dsApiKey: { type: \"string\" }\r","            }\r","        },\r","        teConnectApplePayMerchantId: { type: \"string\" },\r","        googleGatewayMerchantId: { type: \"string\" }\r","    }\r","}\r","\r","pm.test(\"Success Status Code\", () => {\r","    pm.expect(pm.response.code).to.equal(200);\r","    pm.expect(pm.response.status).to.equal(\"OK\");\r","});\r","\r","pm.test(\"All Features Successful Response\", () => {\r","    pm.response.to.have.jsonBody();\r","    pm.response.to.have.jsonSchema(allFeaturesUpdateResponseSchema);\r","});\r",""],"type":"text/javascript","packages":{},"requests":{},"id":"bda8be3d-9a13-4110-9668-47de48c39a26"}}],"id":"133e785d-debc-4a3e-bf05-577bce45de23","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"PUT","header":[{"key":"Authorization","value":"Basic ","type":"text"}],"body":{"mode":"raw","raw":"{\r\n    \"merchantContactInfo\": {\r\n        \"companyName\": \"string\",\r\n        \"address\": \"string\",\r\n        \"city\": \"string\",\r\n        \"state\": \"string\",\r\n        \"zip\": \"string\",\r\n        \"phone\": \"string\",\r\n        \"contactName\": \"string\",\r\n        \"merchantEmail\": \"string\"\r\n    },\r\n    \"processor\": {\r\n        \"processorName\": \"string\",\r\n        \"processorDetails\": [\r\n            { \"key\": \"string\", \"value\": \"string\" }\r\n        ],\r\n        \"defaultProcessor\": true\r\n    },\r\n    \"teConnectManualEntry\": true,\r\n    \"teConnectApplePay\": {\r\n        \"domains\": [\"example.github.io\"]\r\n    },\r\n    \"appleTapToPay\": {\r\n        \"merchantBannerName\": \"string\",\r\n        \"merchantCategoryCode\": \"string\"\r\n    },\r\n     \"teConnect3DS\": {\r\n        \"domains\": [ \"example.github.io\" ],\r\n        \"merchantCategoryCode\": \"5411\",\r\n        \"amexAcquirerBankCountry\": \"United States\",\r\n        \"amexBin\": \"string\",\r\n        \"discoverBin\": \"string\",\r\n        \"discoverBinCountry\": \"United States\",\r\n        \"discoverMid\": \"string\",\r\n        \"mastercardAcquirer\": \"string\",\r\n        \"mastercardBin\": \"string\",\r\n        \"mastercardBinCountry\": \"United States\",\r\n        \"mastercardMid\": \"string\",\r\n        \"visaBin\": \"string\",\r\n        \"visaBinCountry\": \"United States\",\r\n        \"visaMid\": \"string\"\r\n    },\r\n    \"dishOut\": {\r\n        \"dishOutResellerId\": \"string\"\r\n    },\r\n    \"enableGooglePay\": true,\r\n    \"paymentRequest\": {\r\n        \"active\": true,\r\n        \"logoUrl\": \"logo_URL\",\r\n        \"companyNameFontColor\": \"#000000\",\r\n        \"primaryColor\": \"#FF4433\",\r\n        \"secondaryColor\": \"#FFFF00\"\r\n    }\r\n}","options":{"raw":{"language":"json"}}},"url":"//mppgMerchant/","description":"<h1 id=\"update-mppg-merchant\">Update MPPG Merchant</h1>\n<p>Updates a target MPPG merchant. The request structure is broken up by \"feature blocks\". For example, supplying a <code>\"merchantContactInfo\"</code> block will update the merchant's contact info (Magensa DB). If this block is not supplied in the request, the API will skip updating contct info, and move on to the next block in the request.</p>\n<p>Each feature block is optional. The example request body has all feature blocks (as a template), but typically an update request will only include the data points you wish to update.</p>\n<p>Each feature is inspected, validated, and updated independently. In the case that one or more features fails to update -- an <code>\"errorList\"</code> will be included with a <code>\"featureId\"</code> (string name) and a <code>\"message\"</code>, indicating which feature failed to update, and why.</p>\n<h3 id=\"features\">Features</h3>\n<ul>\n<li><p>Magensa Contact Info. <code>\"merchantContactInfo\"</code></p>\n</li>\n<li><p><code>\"processor\"</code> info.</p>\n</li>\n<li><p><code>\"appleTapToPay\"</code> MPOC info.</p>\n</li>\n<li><p><code>\"dishOut\"</code> MPMP merchant info.</p>\n</li>\n<li><p><code>\"teConnectManualEntry\"</code> pilot or production.</p>\n</li>\n<li><p><code>\"teConnect3DS\"</code> Paay merchant profile.</p>\n</li>\n<li><p><code>\"teConnectApplePay\"</code> domains</p>\n</li>\n<li><p><code>\"enableGooglePay\"</code> flag.</p>\n</li>\n<li><p><code>\"paymentRequest\"</code> info.</p>\n</li>\n</ul>\n","urlObject":{"path":["","mppgMerchant",""],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"133e785d-debc-4a3e-bf05-577bce45de23"},{"name":"generateTSYSTransactionKey","id":"46dd9b8e-c95e-4cd3-8c18-4600e4f4e3e1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"mid\": \"string\",\r\n    \"userId\": \"string\",\r\n    \"password\": \"string\"\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"//generateTSYSTransactionKey","description":"<h1 id=\"generatetsystransactionkey\">GenerateTSYSTransactionKey</h1>\n<p>Generate a TSYS <code>transactionKey</code>, with provided TSYS credentials. This is a pass-through method, which calls TSYS directly.</p>\n<h2 id=\"considerations\">Considerations</h2>\n<p>This is a standalone utility method. This method may be used to call <code>createMppgMerchant</code> (targeting TSYS processor) with <code>transactionKey</code>, <code>deviceIdProfile</code> and <code>developerID</code>.</p>\n<p>Alternately, <code>createMppgMerchant</code> can be called directly with a <code>mid</code>, <code>userId</code>, <code>password</code>, <code>deviceIdProfile</code>, and <code>developerID</code>.</p>\n<p><code>createMppgMerchant</code> method will call this method, and attempt to generate a <code>transactionKey</code>, before proceeding to create the MPPG merchant.</p>\n","urlObject":{"path":["","generateTSYSTransactionKey"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"46dd9b8e-c95e-4cd3-8c18-4600e4f4e3e1"},{"name":"linkPaayReseller","id":"eebe8f2b-52ff-4275-a292-07b7775fd553","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Authorization","value":"Basic ","type":"text"}],"body":{"mode":"raw","raw":"{\r\n  \"paayResellerId\": \"14943\",\r\n  \"paayResellerName\": \"DEV Magensa Merchant\",\r\n  \"paayResellerToken\": \"53036c54c24bd6fd31c0c0a8179c3adcb7c09519a78d4ca2faaa92685c1c6dd3\",\r\n  \"targetResellerCode\": \"TempTestResellerCode4\"\r\n}\r\n","options":{"raw":{"language":"json"}}},"url":"//linkPaayResellerAccount","description":"<h2 id=\"link-paay-reseller-account\">Link Paay Reseller Account</h2>\n<p>This method allows a Reseller account to be linked to their Paay account. This method may also be used by Master Resellers - but in this case the <code>\"targetResellerCode\"</code> becomes mandatory in request body.</p>\n<h2 id=\"considerations\">Considerations</h2>\n<p>This method is not validated. Meaning the Reseller (or Master Reseller, on-behalf of one of their sub-resellers) has an existing Paay account. They are populating the values in this request from their Paay portal. This method links their Magensa Reseller Account with a mapping to their Paay account.</p>\n<p>The response we receive from Paay's API determines success or failure.</p>\n<p>This method may be called one or many times. This allows for either adding a mapping entry - or updating an existing. Again - no validation. It is assumed that if an update is needed - the initial entry was inaccurate.</p>\n<p>Both Magensa and Paay only allow merchants under a given reseller - so Master Resellers must target a sub-reseller for adding/updating a mapping entry.</p>\n","urlObject":{"path":["","linkPaayResellerAccount"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"eebe8f2b-52ff-4275-a292-07b7775fd553"}],"id":"94692d58-2a31-4e6f-8354-8054926fabd6","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"type":"text/javascript","packages":{},"requests":{},"exec":[""],"id":"326d3500-1fc1-4a81-8674-08cde555578c"}},{"listen":"test","script":{"type":"text/javascript","packages":{},"requests":{},"exec":[""],"id":"37fa1b79-f9e1-452e-9ed4-883ad43cf4a0"}}],"_postman_id":"94692d58-2a31-4e6f-8354-8054926fabd6","description":""},{"name":"Lookups","item":[{"name":"merchantSortByOptions","id":"465688b1-23d5-412c-8052-03938365f491","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic"}],"url":"//merchantSortByOptions","description":"<h1 id=\"merchant-sortby-options\">Merchant <code>sortBy</code> Options</h1>\n<p>Lookup method to expose values used to populate the optional <code>sortBy</code> parameter in the <code>/api/accountmanagement/merchants</code> method.</p>\n<p><code>name</code> and <code>description</code> are helpers for what the <code>value</code> corresponds to.</p>\n<p>Use the <code>value</code> to populate the merchant <code>sortBy</code> parameter. i.e: <code>sortBy=23</code> corresponds to \"sort merchant list by CustomerCode.\".</p>\n","urlObject":{"path":["","merchantSortByOptions"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"465688b1-23d5-412c-8052-03938365f491"},{"name":"transactionSortByOptions","event":[{"listen":"test","script":{"exec":["const sortBySchema = {\r","    type: \"object\",\r","    properties: {\r","        value: { type: \"string\" },\r","        description: { type: \"string\" }\r","    }\r","}\r","const trxSortByTypesSchema = {\r","    type: \"object\",\r","    properties: {\r","        sortByTypes: { type: \"array\" },\r","        status: { type: \"integer\" },\r","        message: { type: \"string\" }\r","    }\r","}\r","\r","pm.test(\"Success Status Code\", () => {\r","    pm.expect(pm.response.code).to.equal(200);\r","    pm.expect(pm.response.status).to.equal(\"OK\");\r","});\r","\r","pm.test(\"Response Schema Matches Swagger\", () => {\r","    pm.response.to.have.jsonBody();\r","    pm.response.to.have.jsonSchema(trxSortByTypesSchema);\r","\r","    const parsedResp = pm.response.json();\r","    pm.expect(parsedResp.sortByTypes).to.be.an(\"array\");\r","\r","    for (const sortByType of parsedResp.sortByTypes)\r","        pm.expect(sortByType).to.have.jsonSchema(sortBySchema);\r","})\r",""],"type":"text/javascript","packages":{},"requests":{},"id":"8c936ed3-9ece-46d7-a23e-51774c2652b2"}}],"id":"ca0e99d7-24da-4f7a-b807-de8b74161367","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic"}],"url":"//transactionSortByOptions","description":"<h1 id=\"transaction-sortby-options\">Transaction <code>sortBy</code> Options</h1>\n<p>Lookup method to expose values used to populate the optional <code>sortBy</code> parameter in the <code>/api/AccountManagement/MerchantTransactions/{customerCode}</code> method.</p>\n<p><code>name</code> and <code>description</code> are helpers for what the <code>value</code> corresponds to.</p>\n<p>Use the <code>value</code> to populate the transaction <code>sortBy</code> parameter. i.e: <code>sortBy=3</code> corresponds to \"sort transaction list by transactionType\".</p>\n","urlObject":{"path":["","transactionSortByOptions"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"ca0e99d7-24da-4f7a-b807-de8b74161367"},{"name":"transactionTypes","event":[{"listen":"test","script":{"exec":["const trxTypesSchema = {\r","    type: \"object\",\r","    properties: {\r","        transactionTypes: { type: \"array\" },\r","        magTranId: { type: \"string\" },\r","        customerTransactionID: { type: \"string\" },\r","        status: { type: \"integer\" },\r","        message: { type: \"string\" }\r","    }\r","}\r","\r","pm.test(\"Success Status Code\", () => {\r","    pm.expect(pm.response.code).to.equal(200);\r","    pm.expect(pm.response.status).to.equal(\"OK\");\r","});\r","\r","pm.test(\"Response Schema Matches Swagger\", () => {\r","    pm.response.to.have.jsonBody();\r","    pm.response.to.have.jsonSchema(trxTypesSchema);\r","    const parsedResp = pm.response.json();\r","    pm.expect(parsedResp.transactionTypes).to.be.an(\"array\");\r","})\r",""],"type":"text/javascript","packages":{},"requests":{},"id":"56c2a7c7-0fa7-4bd0-ba88-045639a9a107"}}],"id":"9740acbb-03bf-4c59-abf1-784b4e925b60","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic"}],"url":"//transactionTypes","description":"<h1 id=\"transaction-types\">Transaction Types</h1>\n<p>Lookup method for valid <code>transactionTypeFilter</code> options. These filter options may be applied to methods such as <code>merchantTransactions</code>.</p>\n<p>For example: <code>/api/AccountManagement/merchantTransactions/{customerCode}?transactionTypeFilter=\"SALE\"</code> will filter result set by <code>\"SALE\"</code> transactions.</p>\n","urlObject":{"path":["","transactionTypes"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"9740acbb-03bf-4c59-abf1-784b4e925b60"},{"name":"processorNames","event":[{"listen":"test","script":{"exec":["pm.test(\"Success Status Code\", () => {\r","    pm.expect(pm.response.code).to.equal(200);\r","    pm.expect(pm.response.status).to.equal(\"OK\");\r","});\r",""],"type":"text/javascript","packages":{},"requests":{},"id":"936eafc8-f66c-4382-99f1-e2eb6319f6f1"}}],"id":"b270eea5-b8e3-4eba-a19e-62894c8fc4e9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic ","type":"text"}],"url":"//ProcessorNames","description":"<h1 id=\"processor-names\">Processor Names</h1>\n<p>Lookup method to expose <code>\"processorName\"</code>(s). When creating, or updating a MPPG merchant -- use this method to lookup your target <code>\"processorName\"</code>. The values are url encoded to support multiple naming conventions.</p>\n<p>When creating, or updating a MPPG merchant - use this method to target a processor. Use the <code>/api/lookup/processorProperties/{processorName}</code> method to lookup what properties (processor authentication/configuration) your processor expects.</p>\n<p>Processor configuration, for a merchant, allows MPPG to process transactions for the merchant as a gateway.</p>\n","urlObject":{"path":["","ProcessorNames"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"b270eea5-b8e3-4eba-a19e-62894c8fc4e9"},{"name":"processorProperties","id":"8f08860f-c4c0-4314-a690-6aa53f514791","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic ","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"","value":"","type":"text","uuid":"9ebbc044-81d2-4a6d-abe7-8dafa40e999e","disabled":true}]},"url":"//processorProperties/","description":"<h1 id=\"processor-properties\">Processor Properties</h1>\n<p>Lookup method to list the properties of a given processor name. These are also referred to as \"Processor Details\" or \"Processor Configuration\". These are the key names for key value pairs the given processor expects, when on-boarding (or updating) a MPPG merchant. Processor properties will vary, based on target processor.</p>\n<p>These properties will be stored, with a merchant's MPPG account, to facilitate processing transactions for a merchant.</p>\n","urlObject":{"path":["","processorProperties",""],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"8f08860f-c4c0-4314-a690-6aa53f514791"},{"name":"merchantCategoryCodes","id":"83f1ccdf-adb0-4e33-af10-dc388bc8f4d5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic ","type":"text"}],"url":"//merchantCategoryCodes","description":"<h1 id=\"merchant-category-codes\">Merchant Category Codes</h1>\n<p>Lookup method to expose <code>\"merchantCategoryCode\"</code>s. Helpful to populate the parameter for both <code>\"appleTapToPay\"</code> and <code>\"teConnect3DS\"</code>, for merchant create and update methods.</p>\n","urlObject":{"path":["","merchantCategoryCodes"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"83f1ccdf-adb0-4e33-af10-dc388bc8f4d5"},{"name":"appleDomainVerificationFile","event":[{"listen":"test","script":{"exec":["const domainFileSchema = {\r","    type: \"object\",\r","    properties: {\r","        fileName: { type: \"string\" },\r","        instructions: { type: \"string\" },\r","        notes: { type: \"string\" },\r","        fileContent: { type: \"string\" }\r","    }\r","};\r","\r","pm.test(\"Success Status Code\", () => {\r","    pm.expect(pm.response.code).equals(200);\r","    pm.expect(pm.response.status).equals(\"OK\");\r","});\r","\r","pm.test(\"Response Schema matches Swagger\", () => {\r","    pm.response.to.have.jsonBody();\r","    pm.response.to.have.jsonSchema(domainFileSchema);\r","});\r",""],"type":"text/javascript","packages":{},"requests":{},"id":"99366293-157c-4a5b-be0f-6401b8d5af65"}}],"id":"71963cd4-d9c1-4708-bd7e-40d738456bbe","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Authorization","value":"Basic ","type":"text"}],"url":"/resource/AppleDomainVerificationFile","description":"<h1 id=\"apple-domain-verification-file\">Apple Domain Verification File</h1>\n<p>This method provides caller with Magensa's Apple Domain Verification File for ApplePay \"on the web\" (TEConnect ApplePay) in Base64 format. Additionally, it provides instructions on how to host the file, expected path, and expected <code>fileName</code>.</p>\n<p>This is an on-boarding specification from Apple. Both <code>createMppgMerchant</code> and <code>mppgMerchant</code> (update) methods expose the ability to on-board a merchant to TEConnect ApplePay. However, there is an external dependency (from Apple) that Magensa's domain verification file must be hosted at a particular path on all the <code>\"domains\"</code> the caller provides. This method contains the <code>fileContent</code> (File in Base64 string format), <code>fileName</code> (name of the file, once decoded), <code>instructions</code> on how to host the file, and <code>notes</code> : tips and common questions answered.</p>\n","urlObject":{"path":["resource","AppleDomainVerificationFile"],"host":[""],"query":[],"variable":[]}},"response":[],"_postman_id":"71963cd4-d9c1-4708-bd7e-40d738456bbe"}],"id":"4167b83b-0929-46b7-bd18-40ebb4af2660","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"type":"text/javascript","packages":{},"requests":{},"exec":[""],"id":"e0bd85ba-faf2-4115-8506-ba19c80993ef"}},{"listen":"test","script":{"type":"text/javascript","packages":{},"requests":{},"exec":[""],"id":"8f178b8c-a93e-4fed-b822-e923f360fa2d"}}],"_postman_id":"4167b83b-0929-46b7-bd18-40ebb4af2660","description":""}],"event":[{"listen":"prerequest","script":{"type":"text/javascript","requests":{},"exec":["","// Set baseUrl collection variable if not already set","if (!pm.collectionVariables.get(\"baseUrl\")) {","    pm.collectionVariables.set(\"baseUrl\", \"https://reseller.magensa.net/AccountManagement/api\");","}",""],"id":"7d0cdc5a-4114-4b5f-b1be-acfe1cec3252"}},{"listen":"test","script":{"type":"text/javascript","packages":{},"requests":{},"exec":[""],"id":"f2895fd6-520d-455c-a16b-a91a8cceddc4"}}],"variable":[{"key":"customerCode","value":""},{"key":"baseUrl","value":""},{"key":"accountPath","value":""},{"key":"lookupPath","value":""},{"key":"magTranId","value":""},{"key":"processorName","value":""},{"key":"merchantCustomerCode","value":""}]}