{"id":5683,"date":"2022-11-14T23:24:46","date_gmt":"2022-11-14T23:24:46","guid":{"rendered":"https:\/\/serviceobjects.wpaladdin.com\/?page_id=5683"},"modified":"2025-09-26T08:53:26","modified_gmt":"2025-09-26T15:53:26","slug":"nv2-soap","status":"publish","type":"page","link":"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/","title":{"rendered":"NV2 &#8211; SOAP"},"content":{"rendered":"\n<div class=\"wp-block-create-block-tabs\"><ul class=\"tab-labels\" role=\"tablist\" aria-label=\"tabbed content\"><li class=\"tab-label active\" role=\"tab\" aria-selected=\"true\" aria-controls=\"C#\" tabindex=\"0\">C#<\/li><li class=\"tab-label\" role=\"tab\" aria-selected=\"false\" aria-controls=\"Python\" tabindex=\"0\">Python<\/li><li class=\"tab-label\" role=\"tab\" aria-selected=\"false\" aria-controls=\"NodeJS\" tabindex=\"0\">NodeJS<\/li><\/ul><div class=\"tab-content\">\n<div class=\"wp-block-create-block-tab tab-panel\" role=\"tabpanel\" tabindex=\"0\">\n<p><strong><strong><strong>Name Validation 2 C# Code Snippet<\/strong><\/strong><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\ufeffusing NV2Reference;\n\nnamespace name_validation_2_dot_net.SOAP\n{\n    \/\/\/ &lt;summary>\n    \/\/\/ Provides functionality to call the ServiceObjects DOTS Name Validation 2 SOAP service's ValidateNameV2 operation,\n    \/\/\/ retrieving name validation information (e.g., name parsing, gender, scores) with fallback to a backup endpoint\n    \/\/\/ for reliability in live mode.\n    \/\/\/ &lt;\/summary>\n    public class NameInfoV2Validation\n    {\n        private const string LiveBaseUrl = \"https:\/\/sws.serviceobjects.com\/NV2\/api.svc\/soap\";\n        private const string BackupBaseUrl = \"https:\/\/swsbackup.serviceobjects.com\/NV2\/api.svc\/soap\";\n        private const string TrialBaseUrl = \"https:\/\/trial.serviceobjects.com\/NV2\/api.svc\/soap\";\n\n        private readonly string _primaryUrl;\n        private readonly string _backupUrl;\n        private readonly int _timeoutMs;\n        private readonly bool _isLive;\n\n        \/\/\/ &lt;summary>\n        \/\/\/ Initializes URLs\/timeout\/IsLive.\n        \/\/\/ &lt;\/summary>\n        public NameInfoV2Validation(bool isLive)\n        {\n            _timeoutMs = 10000; \n            _isLive = isLive;\n\n            _primaryUrl = isLive ? LiveBaseUrl : TrialBaseUrl;\n            _backupUrl = isLive ? BackupBaseUrl : TrialBaseUrl;\n\n            if (string.IsNullOrWhiteSpace(_primaryUrl))\n                throw new InvalidOperationException(\"Primary URL not set.\");\n            if (string.IsNullOrWhiteSpace(_backupUrl))\n                throw new InvalidOperationException(\"Backup URL not set.\");\n        }\n\n        \/\/\/ &lt;summary>\n        \/\/\/ This is the primary operation for validating and parsing a name. Given a name and optional parameters,\n        \/\/\/ &lt;\/summary>\n        \/\/\/ &lt;param name=\"Name\">The name to validate (required).&lt;\/param>\n        \/\/\/ &lt;param name=\"Option\">Comma-separated list of options for additional processing (optional).&lt;\/param>\n        \/\/\/ &lt;param name=\"LicenseKey\">Your license key to use the service.&lt;\/param>\n        \/\/\/ &lt;returns>A &lt;see cref=\"Task{NameInfoV2Response}\"\/> containing an &lt;see cref=\"NameInfoV2Response\"\/> object with name validation details or an error.&lt;\/returns>\n        \/\/\/ &lt;exception cref=\"Exception\">Thrown if both primary and backup endpoints fail.&lt;\/exception>\n        public async Task&lt;NameInfoV2Response> ValidateNameV2(string Name, string Option, string LicenseKey)\n        {\n            NV2LibraryClient clientPrimary = null;\n            NV2LibraryClient clientBackup = null;\n\n            try\n            {\n                \/\/ Attempt primary endpoint\n                clientPrimary = new NV2LibraryClient();\n                clientPrimary.Endpoint.Address = new System.ServiceModel.EndpointAddress(_primaryUrl);\n                clientPrimary.InnerChannel.OperationTimeout = TimeSpan.FromMilliseconds(_timeoutMs);\n\n                NameInfoV2Response response = await clientPrimary.ValidateNameV2Async(\n                    Name, Option, LicenseKey).ConfigureAwait(false);\n\n                if (_isLive &amp;&amp; !IsValid(response))\n                {\n                    throw new InvalidOperationException(\"Primary endpoint returned null or a fatal TypeCode=3 error for ValidateNameV2\");\n                }\n                return response;\n            }\n            catch (Exception primaryEx)\n            {\n                try\n                {\n                    clientBackup = new NV2LibraryClient();\n                    clientBackup.Endpoint.Address = new System.ServiceModel.EndpointAddress(_backupUrl);\n                    clientBackup.InnerChannel.OperationTimeout = TimeSpan.FromMilliseconds(_timeoutMs);\n\n                    return await clientBackup.ValidateNameV2Async(\n                        Name, Option, LicenseKey).ConfigureAwait(false);\n                }\n                catch (Exception backupEx)\n                {\n                    throw new Exception(\n                        $\"Both primary and backup endpoints failed.\\n\" +\n                        $\"Primary error: {primaryEx.Message}\\n\" +\n                        $\"Backup error: {backupEx.Message}\");\n                }\n                finally\n                {\n                    clientBackup?.Close();\n                }\n            }\n            finally\n            {\n                clientPrimary?.Close();\n            }\n        }\n\n        private static bool IsValid(NameInfoV2Response response) =>\n            response?.Error == null || response.Error.TypeCode != \"3\";\n    }\n}<\/pre>\n<\/div>\n\n\n\n<div class=\"wp-block-create-block-tab tab-panel\" role=\"tabpanel\" tabindex=\"0\">\n<p><strong><strong><strong>Name Validation 2 Python Code Snippet<\/strong><\/strong><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from suds.client import Client\nfrom suds import WebFault\nfrom suds.sudsobject import Object\n\nclass NameInfoV2Soap:\n\n    def __init__(self, license_key: str, is_live: bool, timeout_ms: int = 10000):\n        \"\"\"\n        license_key: Service Objects NV2 license key.\n        is_live: Whether to use live or trial endpoints\n        timeout_ms: SOAP call timeout in milliseconds\n        \"\"\"\n\n        self._timeout_s = timeout_ms \/ 1000.0\n        self._is_live = is_live\n        self.license_key = license_key\n\n        # WSDL URLs for primary and backup endpoints\n        self._primary_wsdl = (\n            \"https:\/\/sws.serviceobjects.com\/NV2\/api.svc?wsdl\"\n            if is_live else\n            \"https:\/\/trial.serviceobjects.com\/NV2\/api.svc?wsdl\"\n        )\n        self._backup_wsdl = (\n            \"https:\/\/swsbackup.serviceobjects.com\/NV2\/api.svc?wsdl\"\n            if is_live else\n            \"https:\/\/trial.serviceobjects.com\/NV2\/api.svc?wsdl\"\n        )\n\n    def get_name_info(self, name: str, option: str) -> Object:\n        \"\"\"\n        Calls the Name Validation 2 ValidateNameV2 SOAP API to retrieve name validation information.\n\n        Parameters:\n        name (str): The name to validate.\n        option (str): Comma-separated list of options for additional processing (optional).\n        license_key: Service Objects Name Validation license key.\n        is_live: Whether to use live or trial endpoints\n        timeout_ms: SOAP call timeout in milliseconds\n\n        Returns:\n            Object: Raw SOAP response with name information or error details.\n        \"\"\"\n\n        # Common kwargs for both calls\n        call_kwargs = dict(\n            Name=name,\n            Option=option,\n            LicenseKey=self.license_key\n        )\n\n        # Attempt primary\n        try:\n            client = Client(self._primary_wsdl, timeout=self._timeout_s)\n            # Override endpoint URL if needed:\n            # client.set_options(location=self._primary_wsdl.replace('?wsdl', '\/soap'))\n            response = client.service.ValidateNameV2(**call_kwargs)\n\n            # If response is None or fatal error code, trigger fallback\n            if response is None or (hasattr(response, 'Error') and response.Error and response.Error.TypeCode == '3'):\n                raise ValueError(\"Primary returned no result or fatal Error.TypeCode=3\")\n\n            return response\n\n        except (WebFault, ValueError, Exception) as primary_ex:\n            try:\n                client = Client(self._backup_wsdl, timeout=self._timeout_s)\n                response = client.service.ValidateNameV2(**call_kwargs)\n\n                if response is None:\n                    raise ValueError(\"Backup returned no result\")\n\n                return response\n\n            except (WebFault, Exception) as backup_ex:\n                # Raise a combined error if both attempts fail\n                msg = (\n                    \"Both primary and backup endpoints failed.\\n\"\n                    f\"Primary error: {str(primary_ex)}\\n\"\n                    f\"Backup error: {str(backup_ex)}\"\n                )\n                raise RuntimeError(msg)<\/pre>\n<\/div>\n\n\n\n<div class=\"wp-block-create-block-tab tab-panel\" role=\"tabpanel\" tabindex=\"0\">\n<p><strong><strong><strong>Name Validation 2 NodeJS<\/strong><\/strong><\/strong> <strong><strong><strong>Code Snippet<\/strong><\/strong><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import { soap } from 'strong-soap';\nimport { NameInfoV2Response } from '.\/nv2_response.js';\n\n\/**\n * &lt;summary>\n * A class that provides functionality to call the ServiceObjects Name Validation 2 SOAP service's NameInfoV2 endpoint,\n * retrieving name validation information with fallback to a backup endpoint for reliability in live mode.\n * &lt;\/summary>\n *\/\nclass NameInfoV2Soap {\n    \/**\n     * &lt;summary>\n     * Initializes a new instance of the NameInfoV2Soap class with the provided input parameters,\n     * setting up primary and backup WSDL URLs based on the live\/trial mode.\n     * &lt;\/summary>\n     * @param {string} Name - The name to validate.\n     * @param {string} Option - Comma-separated list of options for additional processing (optional).\n     * @param {string} LicenseKey - Your license key to use the service.\n     * @param {boolean} isLive - Value to determine whether to use the live or trial servers.\n     * @param {number} timeoutSeconds - Timeout, in seconds, for the call to the service.\n     * @throws {Error} Thrown if LicenseKey is empty or null.\n     *\/\n    constructor(Name, Option = '', LicenseKey, isLive = true, timeoutSeconds = 15) {\n        if (!LicenseKey) {\n            throw new Error(\"LicenseKey is required and cannot be empty or null.\");\n        }\n\n        this.args = {\n            Name,\n            Option,\n            LicenseKey\n        };\n\n        this.isLive = isLive;\n        this.timeoutSeconds = timeoutSeconds;\n\n        this.LiveBaseUrl = \"https:\/\/sws.serviceobjects.com\/NV2\/api.svc?wsdl\";\n        this.BackupBaseUrl = \"https:\/\/swsbackup.serviceobjects.com\/NV2\/api.svc?wsdl\";\n        this.TrialBaseUrl = \"https:\/\/trial.serviceobjects.com\/NV2\/api.svc?wsdl\";\n\n        this._primaryWsdl = this.isLive ? this.LiveBaseUrl : this.TrialBaseUrl;\n        this._backupWsdl = this.isLive ? this.BackupBaseUrl : this.TrialBaseUrl;\n    }\n\n    \/**\n     * &lt;summary>\n     * Asynchronously calls the NameInfoV2 SOAP endpoint, attempting the primary endpoint\n     * first and falling back to the backup if the response is invalid (Error.TypeCode == '3') in live mode\n     * or if the primary call fails.\n     * &lt;\/summary>\n     * &lt;returns type=\"Promise&lt;NameInfoV2Response>\">A promise that resolves to a NameInfoV2Response object containing name validation details or an error.&lt;\/returns>\n     * &lt;exception cref=\"Error\">Thrown if both primary and backup calls fail, with detailed error messages.&lt;\/exception>\n     *\/\n    async getNameInfo() {\n        try {\n            const primaryResult = await this._callSoap(this._primaryWsdl, this.args);\n\n            if (this.isLive &amp;&amp; !this._isValid(primaryResult)) {\n                console.warn(\"Primary returned Error.TypeCode == '3', falling back to backup...\");\n                const backupResult = await this._callSoap(this._backupWsdl, this.args);\n                return backupResult;\n            }\n\n            return primaryResult;\n        } catch (primaryErr) {\n            try {\n                const backupResult = await this._callSoap(this._backupWsdl, this.args);\n                return backupResult;\n            } catch (backupErr) {\n                throw new Error(`Both primary and backup calls failed:\\nPrimary: ${primaryErr.message}\\nBackup: ${backupErr.message}`);\n            }\n        }\n    }\n\n    \/**\n     * &lt;summary>\n     * Performs a SOAP service call to the specified WSDL URL with the given arguments,\n     * creating a client and processing the response into a NameInfoV2Response object.\n     * &lt;\/summary>\n     * &lt;param name=\"wsdlUrl\" type=\"string\">The WSDL URL of the SOAP service endpoint (primary or backup).&lt;\/param>\n     * &lt;param name=\"args\" type=\"Object\">The arguments to pass to the NameInfoV2 method.&lt;\/param>\n     * &lt;returns type=\"Promise&lt;NameInfoV2Response>\">A promise that resolves to a NameInfoV2Response object containing the SOAP response data.&lt;\/returns>\n     * &lt;exception cref=\"Error\">Thrown if the SOAP client creation fails, the service call fails, or the response cannot be parsed.&lt;\/exception>\n     *\/\n    _callSoap(wsdlUrl, args) {\n        return new Promise((resolve, reject) => {\n            soap.createClient(wsdlUrl, { timeout: this.timeoutSeconds * 1000 }, (err, client) => {\n                if (err) return reject(err);\n\n                client.ValidateNameV2(args, (err, result) => {\n                    const rawData = result?.ValidateNameV2Result;\n                    try {\n                        if (!rawData) {\n                            return reject(new Error(\"SOAP response is empty or undefined.\"));\n                        }\n                        const parsed = new NameInfoV2Response(rawData);\n                        resolve(parsed);\n                    } catch (parseErr) {\n                        reject(new Error(`Failed to parse SOAP response: ${parseErr.message}`));\n                    }\n                });\n            });\n        });\n    }\n\n    \/**\n     * &lt;summary>\n     * Checks if a SOAP response is valid by verifying that it exists and either has no Error object\n     * or the Error.TypeCode is not equal to '3'.\n     * &lt;\/summary>\n     * &lt;param name=\"response\" type=\"NameInfoV2Response\">The NameInfoV2Response object to validate.&lt;\/param>\n     * &lt;returns type=\"boolean\">True if the response is valid, false otherwise.&lt;\/returns>\n     *\/\n    _isValid(response) {\n        return response &amp;&amp; (!response.Error || response.Error.TypeCode !== \"3\");\n    }\n}\n\nexport { NameInfoV2Soap };\n\n\nclass BestGuessName {\n    constructor(data = {}) {\n        this.Prefix = data.Prefix || null;\n        this.FirstName = data.FirstName || null;\n        this.MiddleName = data.MiddleName || null;\n        this.LastName = data.LastName || null;\n        this.Suffix = data.Suffix || null;\n    }\n\n    toString() {\n        return `{Prefix: ${this.Prefix}\\n` +\n               `FirstName: ${this.FirstName}\\n` +\n               `MiddleName: ${this.MiddleName}\\n` +\n               `LastName: ${this.LastName}\\n` +\n               `Suffix: ${this.Suffix}}`;\n    }\n}\n\nclass NameInfoV2 {\n    constructor(data = {}) {\n        this.BestGuessName = data.BestGuessName ? new BestGuessName(data.BestGuessName) : null;\n        this.NameIn = data.NameIn || null;\n        this.NameClassification = data.NameClassification || null;\n        this.Prefix = data.Prefix || null;\n        this.FirstName = data.FirstName || null;\n        this.MiddleName = data.MiddleName || null;\n        this.LastName = data.LastName || null;\n        this.Suffix = data.Suffix || null;\n        this.FirstNameFound = data.FirstNameFound || null;\n        this.IsCommonFirstName = data.IsCommonFirstName || null;\n        this.FirstNameOrigin = data.FirstNameOrigin || null;\n        this.FirstNameSimilar = data.FirstNameSimilar || null;\n        this.LastNameFound = data.LastNameFound || null;\n        this.IsCommonLastName = data.IsCommonLastName || null;\n        this.LastNameOrigin = data.LastNameOrigin || null;\n        this.LastNameSimilar = data.LastNameSimilar || null;\n        this.Gender = data.Gender || null;\n        this.FirstNameAlt = data.FirstNameAlt || null;\n        this.MiddleNameAlt = data.MiddleNameAlt || null;\n        this.LastNameAlt = data.LastNameAlt || null;\n        this.FirstNameAltFound = data.FirstNameAltFound || null;\n        this.LastNameAltFound = data.LastNameAltFound || null;\n        this.GenderAlt = data.GenderAlt || null;\n        this.RelatedNames = data.RelatedNames || null;\n        this.IsCorrectedName = data.IsCorrectedName || null;\n        this.IsBusinessName = data.IsBusinessName || null;\n        this.BusinessName = data.BusinessName || null;\n        this.VulgarityScore = data.VulgarityScore || null;\n        this.CelebrityScore = data.CelebrityScore || null;\n        this.BogusScore = data.BogusScore || null;\n        this.GarbageScore = data.GarbageScore || null;\n        this.FirstNameDictionaryScore = data.FirstNameDictionaryScore || null;\n        this.MiddleNameDictionaryScore = data.MiddleNameDictionaryScore || null;\n        this.LastNameDictionaryScore = data.LastNameDictionaryScore || null;\n        this.OverallNameScore = data.OverallNameScore || null;\n        this.IsNameGood = data.IsNameGood || null;\n        this.StatusCodes = data.StatusCodes || null;\n        this.Status = data.Status || null;\n    }\n\n    toString() {\n        return `{BestGuessName: ${this.BestGuessName ? this.BestGuessName.toString() : 'null'}\\n` +\n               `NameIn: ${this.NameIn}\\n` +\n               `NameClassification: ${this.NameClassification}\\n` +\n               `Prefix: ${this.Prefix}\\n` +\n               `FirstName: ${this.FirstName}\\n` +\n               `MiddleName: ${this.MiddleName}\\n` +\n               `LastName: ${this.LastName}\\n` +\n               `Suffix: ${this.Suffix}\\n` +\n               `FirstNameFound: ${this.FirstNameFound}\\n` +\n               `IsCommonFirstName: ${this.IsCommonFirstName}\\n` +\n               `FirstNameOrigin: ${this.FirstNameOrigin}\\n` +\n               `FirstNameSimilar: ${this.FirstNameSimilar}\\n` +\n               `LastNameFound: ${this.LastNameFound}\\n` +\n               `IsCommonLastName: ${this.IsCommonLastName}\\n` +\n               `LastNameOrigin: ${this.LastNameOrigin}\\n` +\n               `LastNameSimilar: ${this.LastNameSimilar}\\n` +\n               `Gender: ${this.Gender}\\n` +\n               `FirstNameAlt: ${this.FirstNameAlt}\\n` +\n               `MiddleNameAlt: ${this.MiddleNameAlt}\\n` +\n               `LastNameAlt: ${this.LastNameAlt}\\n` +\n               `FirstNameAltFound: ${this.FirstNameAltFound}\\n` +\n               `LastNameAltFound: ${this.LastNameAltFound}\\n` +\n               `GenderAlt: ${this.GenderAlt}\\n` +\n               `RelatedNames: ${this.RelatedNames}\\n` +\n               `IsCorrectedName: ${this.IsCorrectedName}\\n` +\n               `IsBusinessName: ${this.IsBusinessName}\\n` +\n               `BusinessName: ${this.BusinessName}\\n` +\n               `VulgarityScore: ${this.VulgarityScore}\\n` +\n               `CelebrityScore: ${this.CelebrityScore}\\n` +\n               `BogusScore: ${this.BogusScore}\\n` +\n               `GarbageScore: ${this.GarbageScore}\\n` +\n               `FirstNameDictionaryScore: ${this.FirstNameDictionaryScore}\\n` +\n               `MiddleNameDictionaryScore: ${this.MiddleNameDictionaryScore}\\n` +\n               `LastNameDictionaryScore: ${this.LastNameDictionaryScore}\\n` +\n               `OverallNameScore: ${this.OverallNameScore}\\n` +\n               `IsNameGood: ${this.IsNameGood}\\n` +\n               `StatusCodes: ${this.StatusCodes}\\n` +\n               `Status: ${this.Status}\\n`;\n    }\n}\n\nclass Error {\n    constructor(data = {}) {\n        this.Type = data.Type || null;\n        this.TypeCode = data.TypeCode || null;\n        this.Desc = data.Desc || null;\n        this.DescCode = data.DescCode || null;\n    }\n\n    toString() {\n        return `Type: ${this.Type}\\n` +\n               `TypeCode: ${this.TypeCode}\\n` +\n               `Desc: ${this.Desc}\\n` +\n               `DescCode: ${this.DescCode} `;\n    }\n}\n\nclass NameInfoV2Response {\n    constructor(data = {}) {\n        this.NameInfoV2 = data.NameInfoV2 ? new NameInfoV2(data.NameInfoV2) : null;\n        this.Error = data.Error ? new Error(data.Error) : null;\n    }\n\n    toString() {\n        return `NameInfoV2: ${(this.NameInfoV2 ? this.NameInfoV2.toString() : 'null')}\\n` +\n               `Error: ${this.Error ? this.Error.toString() : 'null'}`;\n    }\n}\n\nexport{ NameInfoV2Response };<\/pre>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":5669,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-5683","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>NV2 - SOAP<\/title>\n<meta name=\"description\" content=\"C#PythonNodeJS Name Validation 2 C# Code Snippet \ufeffusing NV2Reference; namespace name_validation_2_dot_net.SOAP { \/\/\/ &lt;summary&gt; \/\/\/ Provides\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NV2 - SOAP\" \/>\n<meta property=\"og:description\" content=\"C#PythonNodeJS Name Validation 2 C# Code Snippet \ufeffusing NV2Reference; namespace name_validation_2_dot_net.SOAP { \/\/\/ &lt;summary&gt; \/\/\/ Provides\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Objects | Contact, Phone, Email Verification | Data Quality Services\" \/>\n<meta property=\"article:modified_time\" content=\"2025-09-26T15:53:26+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/\",\"url\":\"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/\",\"name\":\"NV2 - SOAP\",\"isPartOf\":{\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/#website\"},\"datePublished\":\"2022-11-14T23:24:46+00:00\",\"dateModified\":\"2025-09-26T15:53:26+00:00\",\"description\":\"C#PythonNodeJS Name Validation 2 C# Code Snippet \ufeffusing NV2Reference; namespace name_validation_2_dot_net.SOAP { \/\/\/ &lt;summary> \/\/\/ Provides\",\"breadcrumb\":{\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.serviceobjects.com\/docs\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DOTS Name Validation 2\",\"item\":\"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"NV2 &#8211; Code Snippets and Sample Code\",\"item\":\"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"NV2 &#8211; SOAP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/#website\",\"url\":\"https:\/\/www.serviceobjects.com\/docs\/\",\"name\":\"Service Objects | Contact, Phone, Email Verification | Data Quality Services\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.serviceobjects.com\/docs\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/#organization\",\"name\":\"Service Objects | Contact, Phone, Email Verification | Data Quality Services\",\"url\":\"https:\/\/www.serviceobjects.com\/docs\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.serviceobjects.com\/docs\/wp-content\/uploads\/2022\/08\/SO-logo-2560px-transparent.png\",\"contentUrl\":\"https:\/\/www.serviceobjects.com\/docs\/wp-content\/uploads\/2022\/08\/SO-logo-2560px-transparent.png\",\"width\":2560,\"height\":1440,\"caption\":\"Service Objects | Contact, Phone, Email Verification | Data Quality Services\"},\"image\":{\"@id\":\"https:\/\/www.serviceobjects.com\/docs\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"NV2 - SOAP","description":"C#PythonNodeJS Name Validation 2 C# Code Snippet \ufeffusing NV2Reference; namespace name_validation_2_dot_net.SOAP { \/\/\/ &lt;summary> \/\/\/ Provides","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/","og_locale":"en_US","og_type":"article","og_title":"NV2 - SOAP","og_description":"C#PythonNodeJS Name Validation 2 C# Code Snippet \ufeffusing NV2Reference; namespace name_validation_2_dot_net.SOAP { \/\/\/ &lt;summary> \/\/\/ Provides","og_url":"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/","og_site_name":"Service Objects | Contact, Phone, Email Verification | Data Quality Services","article_modified_time":"2025-09-26T15:53:26+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/","url":"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/","name":"NV2 - SOAP","isPartOf":{"@id":"https:\/\/www.serviceobjects.com\/docs\/#website"},"datePublished":"2022-11-14T23:24:46+00:00","dateModified":"2025-09-26T15:53:26+00:00","description":"C#PythonNodeJS Name Validation 2 C# Code Snippet \ufeffusing NV2Reference; namespace name_validation_2_dot_net.SOAP { \/\/\/ &lt;summary> \/\/\/ Provides","breadcrumb":{"@id":"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/nv2-soap\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.serviceobjects.com\/docs\/"},{"@type":"ListItem","position":2,"name":"DOTS Name Validation 2","item":"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/"},{"@type":"ListItem","position":3,"name":"NV2 &#8211; Code Snippets and Sample Code","item":"https:\/\/www.serviceobjects.com\/docs\/dots-name-validation-2\/nv2-code-snippets-and-sample-code\/"},{"@type":"ListItem","position":4,"name":"NV2 &#8211; SOAP"}]},{"@type":"WebSite","@id":"https:\/\/www.serviceobjects.com\/docs\/#website","url":"https:\/\/www.serviceobjects.com\/docs\/","name":"Service Objects | Contact, Phone, Email Verification | Data Quality Services","description":"","publisher":{"@id":"https:\/\/www.serviceobjects.com\/docs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.serviceobjects.com\/docs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.serviceobjects.com\/docs\/#organization","name":"Service Objects | Contact, Phone, Email Verification | Data Quality Services","url":"https:\/\/www.serviceobjects.com\/docs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.serviceobjects.com\/docs\/#\/schema\/logo\/image\/","url":"https:\/\/www.serviceobjects.com\/docs\/wp-content\/uploads\/2022\/08\/SO-logo-2560px-transparent.png","contentUrl":"https:\/\/www.serviceobjects.com\/docs\/wp-content\/uploads\/2022\/08\/SO-logo-2560px-transparent.png","width":2560,"height":1440,"caption":"Service Objects | Contact, Phone, Email Verification | Data Quality Services"},"image":{"@id":"https:\/\/www.serviceobjects.com\/docs\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/pages\/5683","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/comments?post=5683"}],"version-history":[{"count":10,"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/pages\/5683\/revisions"}],"predecessor-version":[{"id":12302,"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/pages\/5683\/revisions\/12302"}],"up":[{"embeddable":true,"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/pages\/5669"}],"wp:attachment":[{"href":"https:\/\/www.serviceobjects.com\/docs\/wp-json\/wp\/v2\/media?parent=5683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}