{"info":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","description":"<html><head></head><body><p>Our vision at Mesh is to be the easiest and most trusted business identity provider on the internet.</p>\n<p>These developer documents are designed to make it as easy as possible for you to get started working with our APIs. We recommend starting with our one-hour <a href=\"#7f67e0be-e86b-4643-a15b-aabfc124aae9\">Quick Start Guide</a> that will take you through the core Mesh concepts you'll need to understand.</p>\n<p>If you have any questions, please reach out to us at <a href=\"https://support@mesh.id\">support@mesh.id</a>. We're here to help.</p>\n<h1 id=\"mesh-the-short-version\">Mesh - The Short Version</h1>\n<p>Although the Mesh API is powerful, the fundamental concept is simple. As a Mesh customer, you will submit a <strong>Verification Order Workflow</strong> (<code>vow</code>) describing the number and type of verifications Mesh needs to perform for a single <strong>Professional</strong> entity (the business, sole proprietor, or professional that Mesh will verify). The API is primarily concerned with submitting and retrieving the results of Verification Order Workflows.</p>\n<p>Jump to the <a href=\"#7f67e0be-e86b-4643-a15b-aabfc124aae9\">Quick Start Guide</a> for a worked example of a professional license verification <code>vow</code>.</p>\n<h2 id=\"authentication\">Authentication</h2>\n<p>All requests require an active API key. Please contact <a href=\"https://support@mesh.id\">support@mesh.id</a> to receive an active API key.</p>\n<p>An API key should be passed as an <code>Authorization</code> header of an HTTP Request in the following manner:</p>\n<h3 id=\"post-graphql-http11\">POST /graphql HTTP/1.1</h3>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-bash\">Authorization: &lt;MESH_API_KEY&gt;\nHost: https://app.mesh.id/graphql\n\n</code></pre>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"Mesh - The Short Version","slug":"mesh-the-short-version"}],"owner":"30295545","collectionId":"31de4fda-3698-44fc-b51f-a1765ce7f509","publishedId":"2s9YRDzAaB","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2023-10-24T19:16:36.000Z"},"item":[{"name":"Quick Start Guide - Professional License Verification","item":[{"name":"Step 1 - Testing the API Key (5 mins)","item":[{"name":"TestApiKey","id":"82f6c045-0174-486d-9c6f-5f1c55d9d0e9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"query TestAPIKey{\r\n    whoami{\r\n        # Get some basic information about the Mesh user account\r\n        userId\r\n        status\r\n        # Get some basic information about the Mesh customer account\r\n        customer{\r\n            customerName\r\n            customerId\r\n            status\r\n            # We'll talk about VOWs in Step 2!\r\n            vows{\r\n                vowId\r\n                vowConfigId\r\n            }\r\n        }\r\n    }\r\n}","variables":""}},"url":"https://app.mesh.id/graphql","description":"<p>This query tells us a lot about our Mesh user account through which we are calling the API:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>userId</code></td>\n<td>The unique user ID that created the API key. All calls Circle makes with this API key will belong to the same user ID.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>The status of the user account. This should be <code>ACTIVE</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>The <code>customer</code> block in the response also tells us a bit more about the Mesh customer account belonging to Circle:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>customerName</code></td>\n<td>The customer's business name, or <em>Circle Home</em> in our example.</td>\n</tr>\n<tr>\n<td><code>customerId</code></td>\n<td>The unique identifier for Circle's customer account. All Circle's calls with any API key will belong to this customer ID.</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>The status of Circle's customer account. This should be <code>ACTIVE</code>.</td>\n</tr>\n</tbody>\n</table>\n</div><p>You will also notice that we have something called <code>vows</code> in our response. Let's explore those in more detail in the next step.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}},"urlObject":{"protocol":"https","path":["graphql"],"host":["app","mesh","id"],"query":[],"variable":[]}},"response":[{"id":"b2cd2748-850f-4938-baf6-b7f4c12ce9de","name":"Success","originalRequest":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"query TestAPIKey{\r\n    whoami{\r\n        # Get some basic information about our Mesh user account\r\n        userId\r\n        status\r\n        # Get some basic information about our Mesh customer account\r\n        customer{\r\n            customerName\r\n            customerId\r\n            status\r\n            vows{\r\n                vowId\r\n                vowConfigId\r\n            }\r\n        }\r\n    }\r\n}","variables":""}},"url":"https://app.mesh.id/graphql"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"310"},{"key":"Connection","value":"keep-alive"},{"key":"Date","value":"Tue, 24 Oct 2023 02:30:28 GMT"},{"key":"x-amzn-RequestId","value":"ad3de923-9bbd-4636-bbed-8a57d1bc0598"},{"key":"x-amzn-appsync-TokensConsumed","value":"16"},{"key":"Via","value":"1.1 cd70e8654a3d1e664579c68192c0146c.cloudfront.net (CloudFront), 1.1 f6fac6150e74e246a088cfa5c1ab6452.cloudfront.net (CloudFront)"},{"key":"X-Amz-Cf-Pop","value":"SFO5-C3"},{"key":"X-Amz-Cf-Pop","value":"SFO5-P2"},{"key":"X-Cache","value":"Miss from cloudfront"},{"key":"X-Amz-Cf-Id","value":"XC_klT_M59I0mkTFNs2oH801WzX4s11DPz4cNOZBoVt0S9MRNaOiAA=="}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"whoami\": {\n            \"userId\": \"96cbb50d-8a15-46f8-a9d4-19e93610cbe2\",\n            \"status\": \"ACTIVE\",\n            \"role\": \"ADMIN\",\n            \"customer\": {\n                \"customerName\": \"Circle Home\",\n                \"customerId\": \"76a9defa-3036-48c8-837e-8f60fe46257d\",\n                \"status\": \"ACTIVE\",\n                \"vows\": [\n                    {\n                        \"vowId\": \"86506334-46ff-4933-85de-4b858c126ab1\",\n                        \"vowConfigId\": \"vow-pro-licensing@1.0\"\n                    }\n                ]\n            }\n        }\n    }\n}"}],"_postman_id":"82f6c045-0174-486d-9c6f-5f1c55d9d0e9"}],"id":"7c9f90bd-7d1e-4d89-b96b-1aae877e6336","description":"<p>The first thing our Circle developer needs to do is check that their Mesh API key is working as expected. We'll use a basic <code>whoami</code> query to learn about the Circle Mesh account.</p>\n","_postman_id":"7c9f90bd-7d1e-4d89-b96b-1aae877e6336","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}}},{"name":"Step 2 - Exploring the VOW (15 mins)","item":[{"name":"ListVowConfigs","id":"2bca3e93-6bb5-493f-be3e-316111ed2913","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"query ListVowConfigs {\r\n    listVowConfigs {\r\n        vowId\r\n        vowConfigId\r\n        description\r\n    }\r\n}","variables":""}},"url":"https://app.mesh.id/graphql","description":"<p>Let's use the <code>listVowConfigs</code> query to see what <code>vow</code> configurations are available to Circle Home. We can also get this information from <code>whoami</code>.</p>\n<p>In this quick start professional license verification example, Mesh has configured Circle Home with only one <code>vow</code> configuration, <code>vow-pro-licensing@1.0</code>. This is Mesh's standard professional license verification <code>vow</code> configuration.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>vowId</code></td>\n<td>A unique ID representing the <code>vow</code>, used when submitting orders to tell Mesh what verifications to perform, and the policy Mesh will apply to the results.</td>\n</tr>\n<tr>\n<td><code>vowConfigId</code></td>\n<td>A unique string providing a more meaningful description of the <code>vow</code>. In our example, Circle is using Mesh's standard <code>vow-pro-licensing@1.0</code> verification order workflow.</td>\n</tr>\n<tr>\n<td><code>description</code></td>\n<td>Additional information about the <code>vow</code>.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}},"urlObject":{"protocol":"https","path":["graphql"],"host":["app","mesh","id"],"query":[],"variable":[]}},"response":[{"id":"c8b0a588-2c55-498d-94a4-92f63c8b5e62","name":"Success","originalRequest":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"query ListVowConfigs {\r\n    listVowConfigs {\r\n        vowId\r\n        vowConfigId\r\n        description\r\n    }\r\n}","variables":""}},"url":"https://app.mesh.id/graphql"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"165"},{"key":"Connection","value":"keep-alive"},{"key":"Date","value":"Tue, 24 Oct 2023 16:51:15 GMT"},{"key":"x-amzn-RequestId","value":"d28aee98-c8f6-476e-8da0-e41c106a72bc"},{"key":"x-amzn-appsync-TokensConsumed","value":"13"},{"key":"Via","value":"1.1 45fb7111a175c6978b1378f5881fcaee.cloudfront.net (CloudFront), 1.1 c07670802688417c8b871124c547eb0a.cloudfront.net (CloudFront)"},{"key":"X-Amz-Cf-Pop","value":"SFO5-C3"},{"key":"X-Amz-Cf-Pop","value":"SFO5-P2"},{"key":"X-Cache","value":"Miss from cloudfront"},{"key":"X-Amz-Cf-Id","value":"3ncgONg_S3G7w6SB_4-SvztzPIeonJAWmoHol2YPRLNsOUBhtohneA=="}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"listVowConfigs\": [\n            {\n                \"vowId\": \"86506334-46ff-4933-85de-4b858c126ab1\",\n                \"vowConfigId\": \"vow-pro-licensing@1.0\",\n                \"description\": \"VOW Config created from a script\"\n            }\n        ]\n    }\n}"}],"_postman_id":"2bca3e93-6bb5-493f-be3e-316111ed2913"},{"name":"GetVowConfig","id":"cf7f3398-ddec-474c-8f24-d44f0ef7aaca","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"query GetVowConfig($vowId: String!){\r\n    getVowConfig(vowId: $vowId){\r\n        # A vow is like a shopping cart. It describes the verifications to be performed.\r\n        vowId\r\n        vowConfigId\r\n        description\r\n        # The shopping cart contains items, or vskus, each of which is an individual        verification\r\n        items{\r\n            vskuId\r\n            vspecId\r\n            isRepeatable\r\n            isRequired\r\n        }\r\n    }\r\n}","variables":"{\r\n    \"vowId\": \"86506334-46ff-4933-85de-4b858c126ab1\"\r\n}"}},"url":"https://app.mesh.id/graphql","description":"<p>You can get information about a specific <code>vow</code> configuration using the <code>getVowConfig</code> query. The same information is also available from <code>listVowConfigs</code> and <code>whoami</code>. Let's drill further into the structure of a <code>vow</code>.</p>\n<p>Following the shopping cart analogy, you can see that the <code>vow</code> specifies the <em>items</em>, or <code>vskus</code>, that are accepted by the <code>vow</code>. The Mesh standard professional license <code>vow</code> accepts only one <code>vsku</code> with the identifier <code>v-pro-license@1.0</code>, which is Mesh's standard professional license verification item.</p>\n<p>We'll go into <code>vsku</code> structure in more detail in the following example.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}},"urlObject":{"protocol":"https","path":["graphql"],"host":["app","mesh","id"],"query":[],"variable":[]}},"response":[{"id":"231bc43c-74f2-4759-86b9-9c2c20fd41c9","name":"Success","originalRequest":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"query GetVowConfig($vowId: String!){\r\n    getVowConfig(vowId: $vowId){\r\n        # A vow is like a shopping cart. It describes the verifications to be performed.\r\n        vowId\r\n        vowConfigId\r\n        description\r\n        # The shopping cart contains items, or vskus, each of which is an individual        verification\r\n        items{\r\n            vskuId\r\n            vspecId\r\n            isRepeatable\r\n            isRequired\r\n        }\r\n    }\r\n}","variables":"{\r\n    \"vowId\": \"86506334-46ff-4933-85de-4b858c126ab1\"\r\n}"}},"url":"https://app.mesh.id/graphql"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"289"},{"key":"Connection","value":"keep-alive"},{"key":"Date","value":"Tue, 24 Oct 2023 16:50:56 GMT"},{"key":"x-amzn-RequestId","value":"443cf3fd-53aa-4348-8d45-e40d368dc67e"},{"key":"x-amzn-appsync-TokensConsumed","value":"17"},{"key":"Via","value":"1.1 ce238b40dbac59c6528c9d275e9d96f6.cloudfront.net (CloudFront), 1.1 0dc4feb22bb4657ce2bb95fd05ec7122.cloudfront.net (CloudFront)"},{"key":"X-Amz-Cf-Pop","value":"SFO5-C3"},{"key":"X-Amz-Cf-Pop","value":"SFO5-P2"},{"key":"X-Cache","value":"Miss from cloudfront"},{"key":"X-Amz-Cf-Id","value":"O2bMVS6x7ZuY7_0Qc3HGpLzv_ZKa5xOmdGrHi_E3chd7rDo5h66I0g=="}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"getVowConfig\": {\n            \"vowId\": \"86506334-46ff-4933-85de-4b858c126ab1\",\n            \"vowConfigId\": \"vow-pro-licensing@1.0\",\n            \"description\": \"VOW Config created from a script\",\n            \"items\": [\n                {\n                    \"vskuId\": \"v-pro-license@1.0\",\n                    \"vspecId\": \"11fb7baf-7027-4a74-9ff5-f3576e539703\",\n                    \"isRepeatable\": true,\n                    \"isRequired\": true\n                }\n            ]\n        }\n    }\n}"}],"_postman_id":"cf7f3398-ddec-474c-8f24-d44f0ef7aaca"},{"name":"GetVskus","id":"edd4f9de-1ffa-4d04-8d34-0b48ffb47b69","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"query GetVowConfig($vowId: String!){\r\n    getVowConfig(vowId: $vowId){\r\n        vowId\r\n        items{\r\n            vskuId\r\n            vspecId\r\n            isRepeatable\r\n            isRequired\r\n            vsku{\r\n                inputClaims\r\n                outputResults\r\n            }\r\n        }\r\n    }\r\n}","variables":"{\r\n    \"vowId\": \"86506334-46ff-4933-85de-4b858c126ab1\"\r\n}"}},"url":"https://app.mesh.id/graphql","description":"<p>So now we understand a bit more about <code>vows</code>. Let's dig a bit more into <code>vskus</code> and what they contain.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>vskuId</code></td>\n<td>A unique descriptive identifier for the <code>vsku</code> design. For instance, Mesh's standard professional license verification, the <code>vskuId</code> is <code>v-pro-license@1.0</code>.</td>\n</tr>\n<tr>\n<td><code>vspecId</code></td>\n<td>A unique identifier for this item in the <code>vow</code> configuration.  <br />In complex <code>vow</code> configurations, it is possible for the same <code>vskuId</code> to appear more than once. Each appearance of the vksuId has a different <code>vspecId</code>.</td>\n</tr>\n<tr>\n<td><code>isRepeatable</code></td>\n<td>If <code>true</code> the <code>vow</code> will accept multiple instances of the <code>vsku</code>. This means the Circle developer can include more than one professional license in the same <code>vow</code>, which is useful where Mesh verifies a business with more than one professional license.  <br />If <code>false</code> the <code>vow</code> will accept only one instance of the <code>vsku</code>.</td>\n</tr>\n<tr>\n<td><code>isRequired</code></td>\n<td>If <code>true</code> the <code>vow</code> must contain at least one instance of this <code>vsku</code>. If <code>false</code>, the <code>vsku</code> is optional.  <br />In our example, the Circle developer must include at least one professional license <code>vsku</code>.</td>\n</tr>\n<tr>\n<td><code>inputClaims</code></td>\n<td>The input fields for the <code>vsku</code>, or to put it another way, the information that the business <em>claims</em> to be true.  <br />When submitting a <code>vsku</code> for verification, you will populate these fields. For instance, in our professional license verification example, <code>inputClaims</code> will include the <code>licenseNumber</code> the business claims to have.</td>\n</tr>\n<tr>\n<td><code>outputResults</code></td>\n<td>The output fields that Mesh will return when the verification is completed, or the <em>results</em> of this individual verification.  <br />For instance, in our professional license verification example, <code>outputResults</code> will include the verified license information found in authoritative government records.</td>\n</tr>\n</tbody>\n</table>\n</div><p>The details of the <code>inputClaims</code> and <code>outputResults</code> vary from <code>vsku</code> to <code>vsku</code>. Let's look at the specific example of the professional license verification <code>vsku</code>. First, the input claims that must be provided with the <code>vsku</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>inputClaim</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>licenseIdentifier</code></td>\n<td>The license number or identifier assigned to the professional license to be verified.</td>\n</tr>\n<tr>\n<td><code>licenseeName</code></td>\n<td>The name of the person or business to whom the license was issued.</td>\n</tr>\n<tr>\n<td><code>licenseType</code></td>\n<td>The top-level category of license Mesh will verify, for example <code>homeServices</code>. To understand permissible <code>licenseType</code> values, work with your customer success representative.</td>\n</tr>\n<tr>\n<td><code>licenseSubType</code></td>\n<td>The specific license type Mesh will verify, such as <code>electrician</code>. To understand permissible <code>licenseSubType</code> values, work with your customer success representative.</td>\n</tr>\n<tr>\n<td><code>jurisdiction</code></td>\n<td>A two-character standard State abbreviation for the administrative area that issued the license. Mesh supports professional license verification in all 50 US states, Puerto Rico and the District of Columbia.</td>\n</tr>\n</tbody>\n</table>\n</div><p>When Mesh has completed the verification, Mesh will return the specific <code>outputResults</code> for each <code>vsku</code>. For our standard professional license <code>vsku</code>, these are:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>outputResult</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>licenseIdentifier</code></td>\n<td>The verified license number or identifier assigned to the professional license Mesh has verified. The result may be different to the claim.</td>\n</tr>\n<tr>\n<td><code>licenseeName</code></td>\n<td>The verified name of the person or business to whom the license was issued. The result may be different to the claim.</td>\n</tr>\n<tr>\n<td><code>licenseType</code></td>\n<td>The top-level category of license that Mesh verified, for example <code>homeServices</code>. The result will be the same as the claim.</td>\n</tr>\n<tr>\n<td><code>licenseTypeAsIs</code></td>\n<td>The specific license type that Mesh found on the verified license, using the particular terminology of the licensing authority, which will vary from jurisdiction to jurisdiction.</td>\n</tr>\n<tr>\n<td><code>licenseStatus</code></td>\n<td>A normalized value across all license types and jurisdictions. Either <code>ACTIVE</code> if the license is valid or <code>INACTIVE</code> if the license is expired or in some other negative status.</td>\n</tr>\n<tr>\n<td><code>licenseStatusAsIs</code></td>\n<td>The specific status found on the license according to the licensing authority's terminology.</td>\n</tr>\n<tr>\n<td><code>licenceExpirationDate</code></td>\n<td>The date on which the license expires.</td>\n</tr>\n<tr>\n<td><code>licenseIssuedDate</code></td>\n<td>If available, the date on which the licensing authority issued the license. Not all licensing authorities maintain this data.</td>\n</tr>\n<tr>\n<td><code>jurisdiction</code></td>\n<td>The administrative area in which the license is issued. This will be the same as the claim.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}},"urlObject":{"protocol":"https","path":["graphql"],"host":["app","mesh","id"],"query":[],"variable":[]}},"response":[{"id":"24bcd59f-f577-460e-af56-a474bbdaca98","name":"Success","originalRequest":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"query GetVowConfig($vowId: String!){\r\n    getVowConfig(vowId: $vowId){\r\n        vowId\r\n        items{\r\n            vskuId\r\n            vspecId\r\n            isRepeatable\r\n            isRequired\r\n            vsku{\r\n                inputClaims\r\n                outputResults\r\n            }\r\n        }\r\n    }\r\n}","variables":"{\r\n    \"vowId\": \"86506334-46ff-4933-85de-4b858c126ab1\"\r\n}"}},"url":"https://app.mesh.id/graphql"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"488"},{"key":"Connection","value":"keep-alive"},{"key":"Date","value":"Tue, 24 Oct 2023 17:00:53 GMT"},{"key":"x-amzn-RequestId","value":"72a3a314-5323-4c4d-aba5-555f1949cc62"},{"key":"x-amzn-appsync-TokensConsumed","value":"2"},{"key":"Via","value":"1.1 2594ddbb44fb290013da3027d16ab10a.cloudfront.net (CloudFront), 1.1 74aa91fe819001bcedd882694f52b436.cloudfront.net (CloudFront)"},{"key":"X-Amz-Cf-Pop","value":"SFO5-C3"},{"key":"X-Amz-Cf-Pop","value":"SFO5-P2"},{"key":"X-Cache","value":"Miss from cloudfront"},{"key":"X-Amz-Cf-Id","value":"gYBHAXGxrTXldyoQjnqAcPS-otVrMCiH_dlfkzxJl18MPPsxTcBmOA=="}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"getVowConfig\": {\n            \"vowId\": \"86506334-46ff-4933-85de-4b858c126ab1\",\n            \"items\": [\n                {\n                    \"vskuId\": \"v-pro-license@1.0\",\n                    \"vspecId\": \"11fb7baf-7027-4a74-9ff5-f3576e539703\",\n                    \"isRepeatable\": true,\n                    \"isRequired\": true,\n                    \"vsku\": {\n                        \"inputClaims\": [\n                            \"licenseIdentifier\",\n                            \"jurisdiction\",\n                            \"licenseeName\",\n                            \"licenseCategory\",\n                            \"licenseType\"\n                        ],\n                        \"outputResults\": [\n                            \"licenseIdentifier\",\n                            \"jurisdiction\",\n                            \"licenseeName\",\n                            \"licenseCategory\",\n                            \"licenseTypeAsIs\",\n                            \"licenseStatus\",\n                            \"licenseStatusAsIs\",\n                            \"licenseExpirationDate\",\n                            \"licenseIssuedDate\"\n                        ]\n                    }\n                }\n            ]\n        }\n    }\n}"}],"_postman_id":"edd4f9de-1ffa-4d04-8d34-0b48ffb47b69"}],"id":"f7429508-14f5-4187-ab92-eac4199b9ae9","description":"<p>In <a href=\"#82f6c045-0174-486d-9c6f-5f1c55d9d0e9\">Step 1</a>, our Circle developer confirmed that their API key is working and obtained some basic information about their account. In the response, we saw that the customer account refers to a <code>vow</code> or <strong>Verification Order Workflow</strong>.</p>\n<p>The Verification Order Workflow, or <code>vow</code>, is the most important concept to understand when working with Mesh. A <code>vow</code> specifies the <em>type</em> and <em>number</em> of verifications Mesh will run on a business. Each <code>vow</code> also has a <em>policy</em>, which describes the business decisions that Mesh will determine based on the combined results of all verifications in the <code>vow</code>.</p>\n<p>You can think of a <code>vow</code> like a shopping cart on an e-commerce website. A shopping cart (<code>vow</code>) contains many items you wish to purchase. Each item in the shopping cart is an individual verification. In keeping with the online shopping paradigm, we call these items a <strong>Verification Store Keeping Unit</strong>, or <code>vsku</code>. An example of a <code>vsku</code> is a single professional license verification. You will explore these in more detail in the following steps.</p>\n<p>To verify a business, we create (check out) a <code>vow</code> (shopping cart) containing the <code>vskus</code> (items) that represent the verifications you wish to purchase about the business. Mesh will <em>fulfill</em> the <code>vow</code> and return (ship) the business decision to you.</p>\n<blockquote>\n<p>Note: <code>vows</code> currently must be configured by Mesh. Work with your customer success representative to understand the <code>vows</code> available to you or to have a new <code>vow</code> configured. </p>\n</blockquote>\n<p>Let's look at the <code>vow</code> configurations that Circle Home has access to.</p>\n","_postman_id":"f7429508-14f5-4187-ab92-eac4199b9ae9","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}}},{"name":"Step 3 - Create Business (5 mins)","item":[{"name":"CreateBusiness","id":"be49d381-c1b9-4caf-ae5e-45f5fac5fe12","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"mutation RequestBusiness($input: RequestBusinessInput!) {\r\n    requestBusiness(input: $input){\r\n         businessId\r\n    }\r\n}","variables":"{\r\n    \"input\": {\r\n        \"emailAddress\": \"bob@builders.com\",\r\n        \"preverifiedEmail\": false \r\n    }\r\n}"}},"url":"https://app.mesh.id/graphql","description":"<p>Each <strong>Professional</strong> is identified by an email address that is also used to send notifications. The inputs to the Create Professional step are:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>emailAddress</code></td>\n<td><strong>Required</strong>. The email address used by the Professional for authentication and notifications.</td>\n</tr>\n<tr>\n<td><code>preverifiedEmail</code></td>\n<td><strong>Required</strong>. Tells Mesh that you have verified that the Professional possesses the email address. If <code>true</code>, Mesh will skip email verification. If <code>false</code>, Mesh will send a one-time passcode (OTP) to the Professional's email to verify possession.  <br />If the Professional has pre-existing data in Mesh systems, due to being verified previously by Mesh, we will always ask for a one-time passcode regardless of this setting, to prevent unauthorized access to sensitive data.</td>\n</tr>\n</tbody>\n</table>\n</div><blockquote>\n<p><strong>IMPORTANT: You must only set the</strong> <strong><code>preverifiedEmail</code></strong> <strong>flag to</strong> <strong><code>true</code></strong> <strong>if you can guarantee that the user is in possession of the email address.</strong> Anyone with the correct URL can imitate an end user and submit a verification fraudulently if email verification is skipped. </p>\n</blockquote>\n<p>The response contains the <code>businessId</code> that uniquely identifies the Business in the Mesh network. You will need to use this when creating the <code>vow</code>.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}},"urlObject":{"protocol":"https","path":["graphql"],"host":["app","mesh","id"],"query":[],"variable":[]}},"response":[{"id":"c9a0643a-85f2-4eef-b4fd-6aa48910b47a","name":"Success","originalRequest":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"mutation RequestBusiness($input: RequestBusinessInput!) {\r\n    requestBusiness(input: $input){\r\n         businessId\r\n    }\r\n}","variables":"{\r\n    \"input\": {\r\n        \"emailAddress\": \"bob@builders.com\",\r\n        \"preverifiedEmail\": false \r\n    }\r\n}"}},"url":"https://app.mesh.id/graphql"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"90"},{"key":"Connection","value":"keep-alive"},{"key":"Date","value":"Tue, 24 Oct 2023 06:00:15 GMT"},{"key":"x-amzn-RequestId","value":"74aaf506-0271-4d78-9d58-132227b78ded"},{"key":"x-amzn-appsync-TokensConsumed","value":"1"},{"key":"Via","value":"1.1 4cb8a7f3f7a5d9d545889e0d3926b9c2.cloudfront.net (CloudFront), 1.1 2241406ac19fffc8f35d6ddef8e22f56.cloudfront.net (CloudFront)"},{"key":"X-Amz-Cf-Pop","value":"SEA900-P1"},{"key":"X-Amz-Cf-Pop","value":"SEA19-C1"},{"key":"X-Cache","value":"Miss from cloudfront"},{"key":"X-Amz-Cf-Id","value":"3JrCXqBhZxOoY_CUzYnXrNnuNvTsri1PV_-rK2b8akGFYwSRrmrw7A=="}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"requestBusiness\": {\n            \"businessId\": \"24ecf72d-bee7-4c78-a94e-0b6709fd3ee5\"\n        }\n    }\n}"}],"_postman_id":"be49d381-c1b9-4caf-ae5e-45f5fac5fe12"}],"id":"b9e53a64-5cd2-4003-824d-351643f5bc87","description":"<p>Now that we know the <code>vow</code> and <code>vsku</code> concepts, we can begin preparing to submit a verification.</p>\n<p>When you submit a <code>vow</code>, you must first declare the entity that Mesh will verify. We call this the Business Entity rather than a <em>business</em> because not every subject of a Mesh verification is actually a business. For example, many electricians and plumbers that Circle Home must verify are sole proprietors carrying licenses in their own name.</p>\n<p>Let's take a look at the CreateBusiness step.</p>\n","_postman_id":"b9e53a64-5cd2-4003-824d-351643f5bc87","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}}},{"name":"Step 4 - Register Webhook (5 mins)","item":[{"name":"UpdateNotifications","id":"37a5fde1-f772-4394-9b73-ac2288bdbb51","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"mutation UpdateNotification($input: NotificationInput!) {\r\n    updateNotification(input: $input) {\r\n        notifications {\r\n            notificationTypes\r\n            emailAddress\r\n            hookUrl\r\n            secret\r\n        }\r\n        timezone\r\n    }\r\n}","variables":"{\r\n    \"input\": {\r\n            \"notifications\": [\r\n                {\r\n                    \"emailAddress\": \"circle+home@mesh.id\",\r\n                    \"notificationChannel\": \"EMAIL\",\r\n                    \"notificationTypes\": \"verificationResultsUpdated\"    \r\n                },\r\n                {\r\n                    \"notificationChannel\": \"WEBHOOK\",\r\n                    \"notificationTypes\": \"verificationResultsUpdated\",\r\n                    \"hookUrl\": \"my-webhook-endpoint.circle.com\"\r\n\r\n                }\r\n            ],\r\n            \"timezone\": \"America/Los_Angeles\"\r\n    }\r\n}"}},"url":"https://app.mesh.id/graphql","description":"<p>Our Circle developer uses <code>updateNotifications</code> to modify their notifications. Every use of <code>updateNotifications</code> will overwrite any previous settings configuration.</p>\n<p>Our example configures two notification channels, one for email and one for webhooks. The API also supports Slack and SMS.</p>\n<p>Let's examine the <code>$input</code> parameters:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>notificationChannel</code></td>\n<td><strong>Required</strong>. An enum value for the channel, one of <code>EMAIL</code>, <code>SLACK</code>, <code>SMS</code>, or <code>WEBHOOK</code>.</td>\n</tr>\n<tr>\n<td><code>notificationTypes</code></td>\n<td><strong>Required</strong>. A list of enum values for all of the notification types that will be sent to this channel. The example specifies just one type for both channels, <code>verificationResultsUpdated</code>, which is generated every time any change is registered for a <code>vow</code>.  <br />Work with your customer success representative to understand notification types in more detail.</td>\n</tr>\n<tr>\n<td><code>emailAddress</code></td>\n<td><strong>For email notifications only.</strong> The email address that will receive the notification.</td>\n</tr>\n<tr>\n<td><code>hookUrl</code></td>\n<td><strong>For webhooks only.</strong> The URL to which Mesh should send a webhook notification.</td>\n</tr>\n<tr>\n<td><code>secret</code></td>\n<td><strong>Optional, for webhooks only.</strong> A secret that you can provide to help prevent DDOS attacks on your webhook endpoint.</td>\n</tr>\n<tr>\n<td><code>timezone</code></td>\n<td><strong>Required</strong>. The timezone that Mesh will use for any time stamps in the notifications.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}},"urlObject":{"protocol":"https","path":["graphql"],"host":["app","mesh","id"],"query":[],"variable":[]}},"response":[{"id":"9f4bbbe1-2c14-4fe3-8f4c-ab399e4b4b2b","name":"Success","originalRequest":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"mutation UpdateNotification($input: NotificationInput!) {\r\n    updateNotification(input: $input) {\r\n        notifications {\r\n            notificationTypes\r\n            emailAddress\r\n            hookUrl\r\n            secret\r\n        }\r\n        timezone\r\n    }\r\n}","variables":"{\r\n    \"input\": {\r\n            \"notifications\": [\r\n                {\r\n                    \"emailAddress\": \"circle+home@mesh.id\",\r\n                    \"notificationChannel\": \"EMAIL\",\r\n                    \"notificationTypes\": \"verificationResultsUpdated\"    \r\n                },\r\n                {\r\n                    \"notificationChannel\": \"WEBHOOK\",\r\n                    \"notificationTypes\": \"verificationResultsUpdated\",\r\n                    \"hookUrl\": \"my-webhook-endpoint.circle.com\"\r\n\r\n                }\r\n            ],\r\n            \"timezone\": \"America/Los_Angeles\"\r\n    }\r\n}"}},"url":"https://app.mesh.id/graphql"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"333"},{"key":"Connection","value":"keep-alive"},{"key":"Date","value":"Tue, 24 Oct 2023 21:38:38 GMT"},{"key":"x-amzn-RequestId","value":"8de7bae8-dedf-41ae-9e21-de8e6be94d4c"},{"key":"x-amzn-appsync-TokensConsumed","value":"7"},{"key":"Via","value":"1.1 5d1052cca98b3bf996fd05529bc2e070.cloudfront.net (CloudFront), 1.1 34f8ef0e4c880df0650a814412a26ea6.cloudfront.net (CloudFront)"},{"key":"X-Amz-Cf-Pop","value":"SEA900-P1"},{"key":"X-Amz-Cf-Pop","value":"SEA19-C1"},{"key":"X-Cache","value":"Miss from cloudfront"},{"key":"X-Amz-Cf-Id","value":"nC6fc8mWfV9SJR9uaTcnU7svChMpzdbL7VP3LpWsIfYu2K1EHtVI6A=="}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"updateNotification\": {\n            \"notifications\": [\n                {\n                    \"notificationTypes\": [\n                        \"verificationResultsUpdated\"\n                    ],\n                    \"emailAddress\": \"circle+home@mesh.id\",\n                    \"hookUrl\": null,\n                    \"secret\": null\n                },\n                {\n                    \"notificationTypes\": [\n                        \"verificationResultsUpdated\"\n                    ],\n                    \"emailAddress\": null,\n                    \"hookUrl\": \"my-webhook-endpoint.circle.com\",\n                    \"secret\": null\n                }\n            ],\n            \"timezone\": \"America/Los_Angeles\"\n        }\n    }\n}"}],"_postman_id":"37a5fde1-f772-4394-9b73-ac2288bdbb51"}],"id":"79dd12f6-5145-4203-82e6-b05022bfd099","description":"<p>Mesh supports many channels for customers to receive updates about their verification orders. You can configure Mesh to send updates by email, Slack, SMS, and webhook.</p>\n<p>You can configure each channel to receive only certain notification types. For example, you might configure the webhook channel to receive all notifications but configure an email channel to receive only negative outcome notifications, such as a business failing validation.</p>\n<p>For our quick-start example, the Circle Home developer will configure two channels: (1) an email notification channel and (2) a webhook channel for programmatic updates. The webhook will receive notifications when Mesh completes a verification order workflow and when Mesh detects a change in status through continuous monitoring, such as a license expiring.</p>\n","_postman_id":"79dd12f6-5145-4203-82e6-b05022bfd099","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}}},{"name":"Step 5a - Initiate the Mesh One-Click Verify User Interface (5 mins)","item":[],"id":"4c4cbe1f-1d65-441d-bff1-308e49a9b8a3","description":"<p>Let's recap where our Circle developer is:</p>\n<ul>\n<li><p>They now know about the <code>vow</code> configurations and <code>vsku</code> requirements available to them.</p>\n</li>\n<li><p>They have created a <code>businessId</code> for the Business they wish to verify.</p>\n</li>\n<li><p>They have registered email and webhook notifications ready to receive updates as Mesh fulfills the <code>vow</code>.</p>\n</li>\n</ul>\n<p>They are now ready to create a verification order workflow.</p>\n<h2 id=\"using-meshs-one-click-user-interface\">Using Mesh's One-Click User Interface</h2>\n<p><strong>The recommended method to create a</strong> <strong><code>vow</code></strong> <strong>is to use Mesh's One-Click Verify user interface.</strong> If you wish to use your own user interface, please skip to Step 5b.</p>\n<p>The Mesh One-Click Verify user interface is optimized for conversion and accuracy, is mobile-ready and internationalized. The user interface is dynamically generated based on the <code>vow</code> configuration, and the result of careful user interaction monitoring from every verification flow ever performed across all of Mesh's customer base.</p>\n<p>You can launch the One-Click Verify user interface from the desired location in your online experience with the following Javascript:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">// TBD\n\n</code></pre>\n<h2 id=\"mesh-hosted-solution\">Mesh Hosted Solution</h2>\n<p>We also support a hosted version of our One-Click Verify form. Mesh will create a customer-friendly URL, including your company's brand and logo, and host your verification workflow for you. The URL will be of the form:</p>\n<p><a href=\"https://verify-ui.mesh.id/a/%7Byour-company-name%7D/%7Bany\"><code>https://verify-ui.mesh.id/a/{your-company-name}/{any-desired-alias}</code></a></p>\n<p>Each URL represents a different verification flow, auto-generated from the <code>vow</code> configuration behind it. You can have as many hosted workflows as you wish. Direct your end-users to the URL, and Mesh will take care of the rest.</p>\n<p>You can create your own hosted URLs using the <code>createVowAlias</code> mutation.</p>\n<h2 id=\"after-launching-the-user-interface\">After Launching the User Interface</h2>\n<p>Your Business end-user will complete the verification workflow using Mesh's dynamic user interface, submitting the <code>vow</code> to Mesh with no work on your part.</p>\n<p>Skip to <a href=\"#28f42645-b4ea-4240-8788-c85e1d3e1d60\">Step 6</a> to listen for Webhook updates and retrieve <code>vow</code> results.</p>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"826764a4-4806-480d-98fa-8970917d82f7","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"5253ee04-cd4e-4355-948f-6a687fa0386e","type":"text/javascript","exec":[""]}}],"_postman_id":"4c4cbe1f-1d65-441d-bff1-308e49a9b8a3"},{"name":"Step 5b - Create VOW (10 mins)","item":[{"name":"CreateOrder","id":"6de38e49-095d-4b5e-9828-0b4610c47903","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"mutation CreateOrder($input: WorkflowVerificationInput) {\r\n    submitWorkflowVerification(input: $input) {\r\n        errorMessages\r\n        successful\r\n        order {\r\n            orderId\r\n            orderStatus\r\n        }\r\n    }\r\n}\r\n","variables":"{\r\n    \"input\": {\r\n        \"vowId\": \"86506334-46ff-4933-85de-4b858c126ab1\",\r\n        \"businessId\": \"24ecf72d-bee7-4c78-a94e-0b6709fd3ee5\",\r\n        \"items\": [\r\n            {\r\n                \"vspecId\": \"11fb7baf-7027-4a74-9ff5-f3576e539703\",\r\n                \"claims\": [\r\n                    {\r\n                        \"name\": \"licenseType\",\r\n                        \"value\": \"plumbers\"\r\n                    },\r\n                    {\r\n                        \"name\": \"licenseeName\",\r\n                        \"value\": \"Bob's Builders\"\r\n                    },\r\n                    {\r\n                        \"name\": \"jurisdiction\",\r\n                        \"value\": \"IA\"\r\n                    },\r\n                    {\r\n                        \"name\": \"licenseIdentifier\",\r\n                        \"value\": \"123456\"\r\n                    }\r\n                ],\r\n                \"jurisdiction\": \"IA\"\r\n            }\r\n        ]\r\n    }\r\n}"}},"url":"https://app.mesh.id/graphql","description":"<p>Our Circle developer is now ready to create a <code>vow</code>.</p>\n<p>The Create Order request utilizes the identifiers we retrieved and examined in the previous steps. It also includes the specific claims the Professional asserts that Mesh will verify.</p>\n<p>In the example provided, the Professional has submitted only one professional license <code>vsku</code>.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>vowId</code></td>\n<td><strong>Required</strong>. Specifies the Verification Order Workflow Configuration to use for the order. We obtained this value in <a href=\"#cf7f3398-ddec-474c-8f24-d44f0ef7aaca\">Step 2</a> for Circle Home. Work with your customer success representative to understand the Verification Order Workflow configurations available.</td>\n</tr>\n<tr>\n<td><code>businessId</code></td>\n<td><strong>Required</strong>. Specifies the Business entity obtained in <a href=\"#be49d381-c1b9-4caf-ae5e-45f5fac5fe12\">Step 3</a> that is the subject of the Verification Order Workflow.</td>\n</tr>\n<tr>\n<td><code>items</code></td>\n<td><strong>Required</strong>: An array containing individual <code>vsku</code> verification objects. In our Circle Home example, the professional license <code>vow</code> only allows one or more professional license verification <code>vsku</code> items.</td>\n</tr>\n</tbody>\n</table>\n</div><p>Each item in the array is specified as follows:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>vspecId</code></td>\n<td><strong>Required</strong>. The identifier for the specific <code>vsku</code> you are requesting. Again, in the Circle Home example, the <code>vow</code> allows only one or more standard professional license <code>vsku</code> items.  <br />Other <code>vow</code> designs allow different <code>vsku</code> definitons.</td>\n</tr>\n<tr>\n<td><code>claims</code></td>\n<td><strong>Required.</strong> Refers to the claims we explored in <a href=\"#edd4f9de-1ffa-4d04-8d34-0b48ffb47b69\">Step 2</a>. The Circle developer will populate the claims provided by the professional here.</td>\n</tr>\n<tr>\n<td><code>jurisdication</code></td>\n<td><strong>Required</strong>. The administrative area that applies to the license. Currently, Mesh only supports US state-level verification (including Puerto Rico and the District of Columbia).</td>\n</tr>\n</tbody>\n</table>\n</div><p>The Mesh API returns the following:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>errorMessages</code></td>\n<td>Any error messages relevant to a failed submission.</td>\n</tr>\n<tr>\n<td><code>successful</code></td>\n<td>If <code>true</code>, the verification order has been submitted successfully and is being processed.</td>\n</tr>\n<tr>\n<td><code>order</code></td>\n<td>Contains information about the order itself after submission.</td>\n</tr>\n</tbody>\n</table>\n</div><p>The order information includes the following:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>orderId</code></td>\n<td>A unique identifier for the order. We will need this later to retrieve order updates when we receive a webhook notification. Note that the webhook notification will tell you which <code>orderId</code> Mesh has updated so there is no need to persist this value other than for your logging and audit purposes.</td>\n</tr>\n<tr>\n<td><code>orderStatus</code></td>\n<td>The status of the order. On initial successful creation, the order will most likely be in <code>awaitingInventory</code> status. We explore status codes below in Get Order.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}},"urlObject":{"protocol":"https","path":["graphql"],"host":["app","mesh","id"],"query":[],"variable":[]}},"response":[{"id":"1bda09e1-5b2b-41ee-8482-8e038a7a0bf7","name":"Success","originalRequest":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"mutation CreateOrder($input: WorkflowVerificationInput) {\r\n    submitWorkflowVerification(input: $input) {\r\n        errorMessages\r\n        successful\r\n        order {\r\n            orderId\r\n            orderStatus\r\n        }\r\n    }\r\n}\r\n","variables":"{\r\n    \"input\": {\r\n        \"vowId\": \"86506334-46ff-4933-85de-4b858c126ab1\",\r\n        \"professionalId\": \"24ecf72d-bee7-4c78-a94e-0b6709fd3ee5\",\r\n        \"items\": [\r\n            {\r\n                \"vspecId\": \"11fb7baf-7027-4a74-9ff5-f3576e539703\",\r\n                \"claims\": [\r\n                    {\r\n                        \"name\": \"licenseSubtype\",\r\n                        \"value\": \"plumbers\"\r\n                    },\r\n                    {\r\n                        \"name\": \"licenseeName\",\r\n                        \"value\": \"Bob's Builders\"\r\n                    },\r\n                    {\r\n                        \"name\": \"jurisdiction\",\r\n                        \"value\": \"IA\"\r\n                    },\r\n                    {\r\n                        \"name\": \"licenseIdentifier\",\r\n                        \"value\": \"123456\"\r\n                    }\r\n                ],\r\n                \"jurisdiction\": \"IA\"\r\n            }\r\n        ]\r\n    }\r\n}"}},"url":"https://app.mesh.id/graphql"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Content-Length","value":"171"},{"key":"Connection","value":"keep-alive"},{"key":"Date","value":"Tue, 24 Oct 2023 06:13:01 GMT"},{"key":"x-amzn-RequestId","value":"f8515cc8-2704-4cd3-86a2-fec1b309fd7f"},{"key":"x-amzn-appsync-TokensConsumed","value":"73"},{"key":"Via","value":"1.1 2ac6b2644462a8466362b046856a127e.cloudfront.net (CloudFront), 1.1 94be61e339880d0097634de6934f7710.cloudfront.net (CloudFront)"},{"key":"X-Amz-Cf-Pop","value":"SFO5-C3"},{"key":"X-Amz-Cf-Pop","value":"SFO5-P2"},{"key":"X-Cache","value":"Miss from cloudfront"},{"key":"X-Amz-Cf-Id","value":"p3woAQ7nSgwM2uCcdxNTTaln2RHHCEP7wd9mOKDl-NSRdo0xrtd41Q=="}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"submitWorkflowVerification\": {\n            \"errorMessages\": [],\n            \"successful\": true,\n            \"order\": {\n                \"orderId\": \"f245337f-420a-4407-aa8d-336e4d019a8b\",\n                \"orderStatus\": \"awaitingInventory\"\n            }\n        }\n    }\n}"}],"_postman_id":"6de38e49-095d-4b5e-9828-0b4610c47903"}],"id":"11ad4a52-f61c-4324-9a04-f269b592632f","description":"<p>Let's recap where our Circle developer is:</p>\n<ul>\n<li><p>We now know about the <code>vow</code> configurations and <code>vsku</code> requirements available to us.</p>\n</li>\n<li><p>We have created a <code>businessId</code> for the Business we wish to verify.</p>\n</li>\n<li><p>We have registered email and webhook notifications ready to receive updates as Mesh fulfills the <code>vow</code>.</p>\n</li>\n</ul>\n<p>We are now ready to create a verification order workflow.</p>\n<p>We recommend using Mesh's One-Click Verify user interface (see Step 5a). However, you can also build your own user interface and create your <code>vow</code> with our API.</p>\n<h2 id=\"pre-requisite-assert-consent-using-the-consent-widget\">Pre-Requisite: Assert Consent using the Consent Widget</h2>\n<blockquote>\n<p>Launching December 2023 - Please be aware of this requirement when implementing Mesh through our API. </p>\n</blockquote>\n<p>Mesh's One-Click Verify user interface contains contractually mandated consent language to ensure that Mesh can fulfill verification orders where contact with the Business is required.</p>\n<p>If you wish to build your own user interface, you must include a minimal Consent Widget in your user interface. The widget is embedded in your flow in the same manner as the One-Click Verify user interface using the following Javascript:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">// TBD\n\n</code></pre>\n<p>This minimal widget displays contractually required language and links to Mesh's privacy policy and terms of use. The widget returns a <code>consentId</code> that you must include when creating a <code>vow</code>, providing traceability of the terms and conditions your end user accepts.</p>\n","_postman_id":"11ad4a52-f61c-4324-9a04-f269b592632f","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}}},{"name":"Step 6 - Listen for Webhooks and Get Results (10 mins)","item":[{"name":"Get Order","id":"0d9f21e7-b953-4a2e-9626-8626759aadec","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"query GetOrder($orderId: ID!) {\r\n    getWorkflowVerification(orderId: $orderId) {\r\n        orderId\r\n        orderStatus\r\n        labels\r\n        orderCreationTime\r\n        businessId\r\n        items {\r\n            itemStatus\r\n            jurisdiction\r\n            labels\r\n            vsku\r\n            vspecId\r\n            results {\r\n                name\r\n                value\r\n            }\r\n            claims {\r\n                name\r\n                value\r\n            }\r\n        }\r\n    }\r\n}\r\n","variables":"{\r\n    \"orderId\": \"f245337f-420a-4407-aa8d-336e4d019a8b\"\r\n}"}},"url":"https://app.mesh.id/graphql","description":"<p>You can retrieve the details of a Verification Order Workflow at any point after creation. You will typically do this in response to a webhook notification.</p>\n<h2 id=\"status-codes\">Status Codes</h2>\n<p>An order may not be complete depending on the time required to perform a validation. The following status codes describe the state of the Verification Order Workflow:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Status</th>\n<th>Definition</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>awaitingInventory</code></td>\n<td>Newly created orders are <code>awaitingInventory</code>. <em>Inventory</em> is Mesh's term for factual data, records, and other assets that Mesh retrieves to perform verifications. Mesh needs more factual data for the system to begin the verification process.</td>\n</tr>\n<tr>\n<td><code>awaitingAdjudication</code></td>\n<td>Mesh has sourced all required factual data, and the order verification process has started.</td>\n</tr>\n<tr>\n<td><code>complete</code></td>\n<td>The Verification Order Workflow is complete.</td>\n</tr>\n<tr>\n<td><code>monitoring</code></td>\n<td>If you have specified ongoing monitoring, a completed Verification Order Workflow will enter this status after being completed.</td>\n</tr>\n</tbody>\n</table>\n</div><h2 id=\"completed-orders\">Completed Orders</h2>\n<h3 id=\"vow-results\">VOW Results</h3>\n<p>The top-level information in the Get Order response contains information about the <code>vow</code> itself:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>orderId</code></td>\n<td>The unique identifier representing the <code>vow</code> that we used to retrieve the status.</td>\n</tr>\n<tr>\n<td><code>orderStatus</code></td>\n<td>See above.</td>\n</tr>\n<tr>\n<td><code>labels</code></td>\n<td>These represent the business outcome determined by the <code>vow</code> policy.  <br />The standard professional license verification <code>vow</code> policy requires that all professional licenses have a normalized <code>ACTIVE</code> status and have no name or license number mismatches.  <br />In the example, we see the policy applied a label <code>approved</code>. All of this Professional's licenses have passed validation.</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"vsku-results\">VSKU Results</h3>\n<p>Each <code>vsku</code> item in the <code>vow</code> also contains (1) the result fields we explored in Step 2, and (2) labels that apply to the <code>vsku</code> itself.</p>\n<p>In the example, the professional license <code>vsku</code> returned with the label <code>professional_license_verified</code>, indicating that the license is valid and can be trusted.</p>\n","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}},"urlObject":{"protocol":"https","path":["graphql"],"host":["app","mesh","id"],"query":[],"variable":[]}},"response":[{"id":"ba94651c-b940-4c26-89e3-84d8b496824f","name":"Successful Response","originalRequest":{"method":"POST","header":[],"body":{"mode":"graphql","graphql":{"query":"query GetOrder($orderId: ID!) {\r\n    getWorkflowVerification(orderId: $orderId) {\r\n        orderId\r\n        orderStatus\r\n        labels\r\n        orderCreationTime\r\n        businessId\r\n        items {\r\n            itemStatus\r\n            jurisdiction\r\n            labels\r\n            vsku\r\n            vspecId\r\n            results {\r\n                name\r\n                value\r\n            }\r\n            claims {\r\n                name\r\n                value\r\n            }\r\n        }\r\n    }\r\n}\r\n","variables":"{\"orderId\": \"f245337f-420a-4407-aa8d-336e4d019a8b\"}"}},"url":"https://app.mesh.id/graphql"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json;charset=UTF-8"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Connection","value":"keep-alive"},{"key":"Vary","value":"Accept-Encoding"},{"key":"Date","value":"Mon, 25 Sep 2023 12:14:15 GMT"},{"key":"x-amzn-RequestId","value":"eb7ee5a4-be24-4f90-8618-c87346d38cb2"},{"key":"x-amzn-appsync-TokensConsumed","value":"15"},{"key":"Content-Encoding","value":"gzip"},{"key":"X-Cache","value":"Miss from cloudfront"},{"key":"Via","value":"1.1 80d49a4446f5bfe8ba1faee2f764f150.cloudfront.net (CloudFront)"},{"key":"X-Amz-Cf-Pop","value":"MCI50-P2"},{"key":"X-Amz-Cf-Id","value":"wgEMLH_pS64U_3RBMuEe7heNMBxDeEvC4Zm964aXtONWIE4Z7d0X_A=="}],"cookie":[],"responseTime":null,"body":"{\n    \"data\": {\n        \"getWorkflowVerification\": {\n            \"orderId\": \"f245337f-420a-4407-aa8d-336e4d019a8b\",\n            \"orderStatus\": \"complete\",\n            \"labels\": [\n                \"approved\"\n            ],\n            \"vowId\": \"15ac183c-9e64-4329-8a2c-ca3a84a6dbbe\",\n            \"userId\": \"4bf48e80-0d18-4929-b3f0-38107c8661f2\",\n            \"customerProfessionalId\": null,\n            \"items\": [\n                {\n                    \"itemStatus\": \"requested\",\n                    \"jurisdiction\": \"IA\",\n                    \"labels\": [\n                        \"professional_license_verified\"\n                    ],\n                    \"vsku\": \"v-pro-license-sandbox@1.0\",\n                    \"vspecId\": \"41b88699-8f06-4091-bd02-0fb34c3aa016\",\n                    \"results\": [\n                        {\n                            \"name\": \"licenseeName\",\n                            \"value\": \"Joes Plumbing\"\n                        },\n                        {\n                            \"name\": \"licenseIdentifier\",\n                            \"value\": \"123456\"\n                        },\n                        {\n                            \"name\": \"licenseCategory\",\n                            \"value\": \"homeServices\"\n                        },\n                        {\n                            \"name\": \"licenseTypeAsIs\",\n                            \"value\": \"Plumber\"\n                        },\n                        {\n                            \"name\": \"jurisdiction\",\n                            \"value\": \"IA\"\n                        },\n                        {\n                            \"name\": \"licenseStatus\",\n                            \"value\": \"Active\"\n                        },\n                        {\n                            \"name\": \"licenseStatusAsIs\",\n                            \"value\": \"Active\"\n                        },\n                        {\n                            \"name\": \"licenseExpirationDate\",\n                            \"value\": \"1698117758517\"\n                        },\n                        {\n                            \"name\": \"licenseIssuedDate\",\n                            \"value\": \"1692933758517\"\n                        }\n                    ],\n                    \"claims\": [\n                        {\n                            \"name\": \"licenseType\",\n                            \"value\": \"plumbers\"\n                        },\n                        {\n                            \"name\": \"licenseeName\",\n                            \"value\": \"Joes Plumbing\"\n                        },\n                        {\n                            \"name\": \"jurisdiction\",\n                            \"value\": \"IA\"\n                        },\n                        {\n                            \"name\": \"licenseIdentifier\",\n                            \"value\": \"123456\"\n                        },\n                        {\n                            \"name\": \"licenseCategory\",\n                            \"value\": \"homeServices\"\n                        }\n                    ]\n                }\n            ]\n        }\n    }\n}"}],"_postman_id":"0d9f21e7-b953-4a2e-9626-8626759aadec"}],"id":"28f42645-b4ea-4240-8788-c85e1d3e1d60","description":"<p>Now that the <code>vow</code> has been created and submitted, Mesh will begin to fulfill the order.</p>\n<p>Our Circle Home developer created webhook registrations in <a href=\"#37a5fde1-f772-4394-9b73-ac2288bdbb51\">Step 4</a>, and their system is waiting for updates.</p>\n<p>As a security precaution, the webhook payload contains no useable data about the verification. When you receive the webhook notification, use the <code>targetId</code> contained to retrieve the current status of the <code>vow</code> as follows.</p>\n","_postman_id":"28f42645-b4ea-4240-8788-c85e1d3e1d60","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}}},{"name":"Conclusion (2 mins)","item":[],"id":"880c29e0-8572-450b-8912-8c386220620d","description":"<p>This quick start guide has introduced you to the key concepts you need to understand, and the corresponding API calls needed to work with them. We have discussed:</p>\n<ul>\n<li><p><strong>Verification Order Workflows</strong> (<code>vow</code>)- the core concept behind Mesh that describes the number and type of verifications to be performed for a singel Professional</p>\n</li>\n<li><p><strong>Verification Store Keeping Unit</strong> (<code>vsku</code>) - an individual verification that is part of a <code>vow</code>.</p>\n</li>\n<li><p><strong>Professional</strong> - the business or individual that Mesh will verify, and will be the subject of a <code>vow</code>.</p>\n</li>\n<li><p>How to <strong>create a</strong> <strong><code>vow</code></strong> using Mesh's One-Click Verify user interface (recommended), or through a customer-built user interface and using Mesh's API.</p>\n</li>\n<li><p>How to <strong>subscribe to webhook updates</strong>, and call Mesh to get <code>vow</code> updates.</p>\n</li>\n</ul>\n<p>That's all you need to know! Everything else is a variation on the theme. Your required <code>vow</code> configuration might have different <code>vsku</code> items, with different policies, and different notifications, but the principles are the same.</p>\n<p>As always <a href=\"https://mailto:support@mesh.id\">support@mesh.id</a> is here to help you.</p>\n","_postman_id":"880c29e0-8572-450b-8912-8c386220620d","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}}}],"id":"7f67e0be-e86b-4643-a15b-aabfc124aae9","description":"<p>Approximate time needed - 1 hour</p>\n<h2 id=\"about-this-guide-1-min\">About This Guide (1 min)</h2>\n<p>This guide will show you how to use the Mesh API for a simple professional license verification use case.</p>\n<p>The example uses a fictitious company called <em>Circle Home</em>. <em>Circle</em> is an online marketplace where consumers (homeowners) can find service providers such as architects, general contractors, electricians, and plumbers. The example will show how a <em>Circle</em> developer uses the Mesh API to perform professional license verification.</p>\n<h2 id=\"what-we-will-cover\">What We Will Cover</h2>\n<ul>\n<li><p><a href=\"#7c9f90bd-7d1e-4d89-b96b-1aae877e6336\">Step 1 - Testing the API Key (5 mins)</a>: Make sure that our Mesh account is working, and begin exploring the API.</p>\n</li>\n<li><p><a href=\"#f7429508-14f5-4187-ab92-eac4199b9ae9\">Step 2 - Exploring the VOW (15 mins)</a><strong>:</strong> A quick tour of the core concept in Mesh verifications, the Verification Order Workflow.</p>\n</li>\n<li><p><a href=\"#b9e53a64-5cd2-4003-824d-351643f5bc87\">Step 3 - Create Business (5 mins)</a><strong>:</strong> Before we can perform a verification, we must tell Mesh who is being verified.</p>\n</li>\n<li><p><a href=\"#79dd12f6-5145-4203-82e6-b05022bfd099\">Step 4 - Register Webhook (5 mins)</a><strong>:</strong> We will need some way for Mesh to notify us that a verification order workflow has completed.</p>\n</li>\n<li><p>Step 5 - Initiating a Verification Order workflow will follow one of two paths, depending on your desired integration pattern:</p>\n<ul>\n<li><p><a href=\"#4c4cbe1f-1d65-441d-bff1-308e49a9b8a3\">Step 5a - Initiate the Mesh One Click User Interface (5 mins)</a><strong>:</strong> Use our pre-built, optimized user interface for the fastest and most accurate results.</p>\n</li>\n<li><p><a href=\"#11ad4a52-f61c-4324-9a04-f269b592632f\">Step 5b - Create VOW (10 mins)</a><strong>:</strong> Build your own user interface, and call our API to initiate the VOW.</p>\n</li>\n</ul>\n</li>\n<li><p><a href=\"#28f42645-b4ea-4240-8788-c85e1d3e1d60\">Step 6 - Listen for Webhook Notifications and Get Results (10 mins)</a><strong>:</strong> Wait for Mesh to complete the verification, and retrieve the results.</p>\n</li>\n</ul>\n<h2 id=\"pre-requisites\">Pre-Requisites</h2>\n<p>Contact your Mesh customer success representative to create your Mesh account and get access to our sandbox so you can follow along with this quick-start guide using a sample verification workflow.</p>\n","event":[{"listen":"prerequest","script":{"id":"15c5638a-74cd-4c6c-ac56-6f9f0bb50e4d","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"16702932-6cb4-46dc-8035-191d0ebf50b9","type":"text/javascript","exec":[""]}}],"_postman_id":"7f67e0be-e86b-4643-a15b-aabfc124aae9","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}}},{"name":"Concepts","item":[{"name":"Verification Order Workflow (VOW)","item":[],"id":"98274e1c-ae15-41d6-a997-52e038893812","description":"<h2 id=\"what-is-a-verification-order-workflow\">What is a Verification Order Workflow?</h2>\n<p>The most important concept to understand when working with Mesh is the Verification Order Workflow (VOW). When you need to verify a business, you will place a Verification Order Workflow specifying what type and number of verifications need to be applied to that business, and the decisions that will be made based on the results. Mesh will then fulfill the order by performing the verifications requested, and make the results available to you.</p>\n<h2 id=\"creating-a-verification-order-workflow\">Creating a Verification Order Workflow</h2>\n<p>The recommended way for you to create a Verification Order Workflow is through Mesh's verification user interface, which is designed to maximize accuracy and conversion rates (successful form submissions). This can be embedded in and launched from your application or website as a popup, or you can let Mesh create a no-code instance and manage this for you. Talk to your customer success representative about the right integration path for you.</p>\n<p>Verification Order Workflows can also be created through the API, if you need total control of the user experience. We generally recommend this approach only for enterprise customers that are able to implement the same form validations and logic that comes out of the box with Mesh's user interface.</p>\n<h2 id=\"specifying-the-verification-order-workflow-configuration\">Specifying the Verification Order Workflow Configuration</h2>\n<p>The specification of what verifications will be performed, and the business decisions to be made, is defined in a Verification Order Workflow Configuration. You can use prebuilt Verification Order Workflow Configurations provided by Mesh, or specify your own. Designing your own VOW Configuration is not currently a self-service feature. Work with your customer success representative to understand the prebuilt VOW configurations or to design one to suit your needs.</p>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"8bc80837-27f3-46ed-a6cd-be115cfa2c47","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"d5c3a8fd-c2d5-41e8-8473-36ce0762e334","type":"text/javascript","exec":[""]}}],"_postman_id":"98274e1c-ae15-41d6-a997-52e038893812"},{"name":"Business Entity","item":[],"id":"060821b2-613d-4f4f-8108-a0b81f3b6b03","description":"<h2 id=\"what-is-a-business-entity\">What is a Business Entity?</h2>\n<p>A Business Entity is the subject of a Verification Order Workflow, in other words, the business being verified. We use the term Business Entity rather than \"business\" because Mesh supports verifications for individuals such as professional beauticians, or electricians.</p>\n<p>Each Verification Order Workflow is concerned with the verification of exactly one Business Entity. However, a Business Entity can be the subject of more than one Verification Order Workflow.</p>\n<h2 id=\"business-user\">Business User</h2>\n<p>A Business Entity may represent a business with many employees and officers. Each individual representing a Business Entity is a Business User, such that many Business Users may be associated with a single Business Entity.</p>\n","_postman_id":"060821b2-613d-4f4f-8108-a0b81f3b6b03","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"6eac8365-c5ab-4f88-bab5-0a415445f795","id":"6eac8365-c5ab-4f88-bab5-0a415445f795","name":"Concepts","type":"folder"}}}],"id":"6eac8365-c5ab-4f88-bab5-0a415445f795","description":"<p>Let's explore some key concepts to know when working with Mesh.</p>\n<p>You can also skip ahead to the Quick Start Guide that will explain these concepts with a worked example for professional license verification.</p>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"912b7257-5b9b-4b82-8921-335765beb198","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"6469a339-c582-490e-9344-8265d1d2cd01","type":"text/javascript","exec":[""]}}],"_postman_id":"6eac8365-c5ab-4f88-bab5-0a415445f795"},{"name":"Glossary","item":[],"id":"5c3e6c22-ff95-43e2-b599-fc9dbea246b1","description":"<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Term</th>\n<th>Definition</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>API Key</td>\n<td>A secure token that is required as authorization to perform various actions in the Mesh system using http requests - for example Making a <em><strong>profile</strong></em>.</td>\n</tr>\n<tr>\n<td>Customer</td>\n<td>A <em><strong>Customer</strong></em> is an entity that has created an account with mesh.id to create <em><strong>VOWs</strong></em>. A <em><strong>customer</strong></em> contains one or more <em><strong>users</strong></em> in which data is shared. All <em><strong>VOWs</strong></em> placed by any user within a <em><strong>customer</strong></em> are viewable to all <em><strong>users</strong></em> within that <em><strong>customer</strong></em>.</td>\n</tr>\n<tr>\n<td>Notifications</td>\n<td>Notifications within the context of a <em><strong>VOW</strong></em> represent updated results from ongoing validation of <em><strong>professionals</strong></em>.</td>\n</tr>\n<tr>\n<td>Professional</td>\n<td>Within the context of a VOW, An entity (individual or business) that has one or more <em><strong>Credentials</strong></em> that need to be verified.</td>\n</tr>\n<tr>\n<td>User</td>\n<td>A user is an entity within a <em><strong>customer</strong></em> that can perform actions using mesh's services.</td>\n</tr>\n<tr>\n<td>VOW</td>\n<td>Verification Order Workflow. A <em><strong>VOW</strong></em> placed with Mesh to perform validation of a <em><strong>Credential</strong></em> owned by a <em><strong>Professional</strong></em>. VOWs are mapped to a <strong>Profile</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"5c3e6c22-ff95-43e2-b599-fc9dbea246b1","auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]},"isInherited":true,"source":{"_postman_id":"31de4fda-3698-44fc-b51f-a1765ce7f509","id":"31de4fda-3698-44fc-b51f-a1765ce7f509","name":"Mesh API Documentation","type":"collection"}}}],"auth":{"type":"apikey","apikey":{"basicConfig":[{"key":"key","value":"Authorization"},{"key":"value","value":"{{MESH_API_KEY}}"}]}},"event":[{"listen":"prerequest","script":{"id":"bfa0048b-b3bc-42a7-ab63-6cff55ff2283","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"341c55d8-f77e-41c5-98f0-11a066056dd4","type":"text/javascript","exec":[""]}}]}