@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api NamSor API v2
@base https://v2.namsor.com/NamSorAPIv2
@version 2.1.4
@auth ApiKey X-API-KEY in header
@endpoints 115
@hint download_for_search
@toc api2(115)

@endpoint GET /api2/json/disable/{source}/{disabled}
@desc Activate/deactivate an API Key.
@required {source: str # The API Key to set as enabled/disabled., disabled: bool}
@returns(200) Disabled the API Key.
@errors {401: Missing or incorrect API Key, 429: Too Many Requests}

@endpoint GET /api2/json/country/{personalNameFull}
@desc [USES 10 UNITS PER NAME] Infer the likely country of residence of a personal full name, or one surname. Assumes names as they are in the country of residence OR the country of origin.
@required {personalNameFull: str}
@returns(200) {script: str, id: str, explanation: str, name: str, score: num(double), country: str, countryAlt: str, region: str, topRegion: str, subRegion: str, countriesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]} # A origined name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/origin/{firstName}/{lastName}
@desc [USES 10 UNITS PER NAME] Infer the likely country of origin of a personal name. Assumes names as they are in the country of origin. For US, CA, AU, NZ and other melting-pots : use 'diaspora' instead.
@required {firstName: str, lastName: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, countryOrigin: str, countryOriginAlt: str, countriesOriginTop: [str], score: num(double), regionOrigin: str, topRegionOrigin: str, subRegionOrigin: str, probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]} # A origined name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/nameType/{properNoun}
@desc Infer the likely type of a proper noun (personal name, brand name, place name etc.)
@required {properNoun: str}
@returns(200) {script: str, id: str, explanation: str, name: str, commonType: str, commonTypeAlt: str, score: num(double)} # A typed name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/parseName/{nameFull}
@desc Infer the likely first/last name structure of a name, ex. John Smith or SMITH, John or SMITH; John.
@required {nameFull: str}
@returns(200) {script: str, id: str, explanation: str, name: str, nameParserType: str, nameParserTypeAlt: str, firstLastName: map{script: str, id: str, explanation: str, firstName: str, lastName: str}, score: num(double)} # A origined name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/regions
@desc Print basic source statistics.
@returns(200) {countriesAndRegions: [map]} # List of countries and regions.
@errors {401: Missing or incorrect API Key}

@endpoint GET /api2/json/genderstatv3/{enabled}
@desc Activate/deactivate genderstatv3.
@required {enabled: bool}
@returns(200) Enabled/disabled genderstatv3.
@errors {401: Missing or incorrect API Key, 429: Too Many Requests}

@endpoint GET /api2/json/softwareVersion
@desc Get the current software version
@returns(200) {softwareNameAndVersion: str, softwareVersion: [int(int32)]} # The current software version
@errors {401: Missing or incorrect token}

@endpoint GET /api2/json/apiStatus
@desc Prints the current status of the classifiers. A classifier name in apiStatus corresponds to a service name in apiServices.
@returns(200) {softwareVersion: map{softwareNameAndVersion: str, softwareVersion: [int(int32)]}, classifiers: [map]} # Available classifiers and status
@errors {401: Missing or incorrect token}

@endpoint GET /api2/json/apiServices
@desc List of classification services and usage cost in Units per classification (default is 1=ONE Unit). Some API endpoints (ex. Corridor) combine multiple classifiers.
@returns(200) {apiServices: [map]} # Available services
@errors {401: Missing or incorrect token}

@endpoint GET /api2/json/taxonomyClasses/{classifierName}
@desc Print the taxonomy classes valid for the given classifier.
@required {classifierName: str}
@returns(200) {classifierName: str, taxonomyClasses: [str], classifyingScripts: [str]} # Available plans
@errors {401: Missing or incorrect token}

@endpoint GET /api2/json/apiUsage
@desc Print current API usage.
@returns(200) {subscription: map{apiKey: str, planStarted: int(int64), taxRate: num(double), planName: str, planBaseFeesKey: str, planQuota: int(int64), price: num(double), planDiscountInPercent: num(double), priceOverage: num(double), overageDiscountInPercent: num(double), currency: str, currencyFactor: num(double), stripeCustomerId: str, stripeStatus: str, stripeSubscription: str, userId: str}, billingPeriod: map{subscriptionStarted: int(int64), periodStarted: int(int64), periodEnded: int(int64), usage: int(int64), softLimit: int(int64), hardLimit: int(int64)}, overageExclTax: num(double), overageInclTax: num(double), overageCurrency: str, overageQuantity: int(int64)} # Print current API usage.
@errors {401: Missing or incorrect API Key, 429: Too Many Requests}

@endpoint GET /api2/json/learnable/{source}/{learnable}
@desc Activate/deactivate learning from a source.
@required {source: str # The API Key to set as learnable/non learnable., learnable: bool}
@returns(200) Set learning from source.
@errors {401: Missing or incorrect API Key, 429: Too Many Requests}

@endpoint GET /api2/json/learnable/{source}/{learnable}/{token}
@desc Activate/deactivate learning from a source.
@required {source: str # The API Key to set as learnable/non learnable., learnable: bool, token: str}
@returns(200) {apiKey: str, userId: str, admin: bool, vetted: bool, learnable: bool, anonymized: bool, partner: bool, striped: bool, corporate: bool, disabled: bool, explainable: bool, duplicateNamesRatio: int(int32), ipAddress: str, communityEngageOption: map{genderFilter: [str], ethnicityFilter: [str], countryOutFilter: [str], usRaceEthnicityFilter: [str]}} # Set learning from source.
@errors {401: Missing or incorrect API Key, 429: Too Many Requests}

@endpoint GET /api2/json/apiKeyInfo
@desc Read API Key info.
@returns(200) {apiKey: str, userId: str, admin: bool, vetted: bool, learnable: bool, anonymized: bool, partner: bool, striped: bool, corporate: bool, disabled: bool, explainable: bool, duplicateNamesRatio: int(int32), ipAddress: str, communityEngageOption: map{genderFilter: [str], ethnicityFilter: [str], countryOutFilter: [str], usRaceEthnicityFilter: [str]}} # Read API Key (uncached, i.e. DB read)
@errors {401: Missing or incorrect API Key, 429: Too Many Requests}

@endpoint GET /api2/json/anonymize/{source}/{anonymized}/{token}
@desc Activate/deactivate anonymization for a source.
@required {source: str, anonymized: bool, token: str}
@returns(200) {apiKey: str, userId: str, admin: bool, vetted: bool, learnable: bool, anonymized: bool, partner: bool, striped: bool, corporate: bool, disabled: bool, explainable: bool, duplicateNamesRatio: int(int32), ipAddress: str, communityEngageOption: map{genderFilter: [str], ethnicityFilter: [str], countryOutFilter: [str], usRaceEthnicityFilter: [str]}} # Anonymization of a source.
@errors {401: Missing or incorrect API Key, 429: Too Many Requests}

@endpoint GET /api2/json/anonymize/{source}/{anonymized}
@desc Activate/deactivate anonymization for a source.
@required {source: str, anonymized: bool}
@returns(200) Anonymization of a source.
@errors {401: Missing or incorrect API Key, 429: Too Many Requests}

@endpoint GET /api2/json/nameTypeGeo/{properNoun}/{countryIso2}
@desc Infer the likely type of a proper noun (personal name, brand name, place name etc.)
@required {properNoun: str, countryIso2: str}
@returns(200) {script: str, id: str, explanation: str, name: str, commonType: str, commonTypeAlt: str, score: num(double)} # A typed name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/nameTypeBatch
@desc Infer the likely common type of up to 100 proper nouns (personal name, brand name, place name etc.)
@optional {properNouns: [map{id: str, name: str}]}
@returns(200) {properNouns: [map]} # A list of commonTypeized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/nameTypeGeoBatch
@desc Infer the likely common type of up to 100 proper nouns (personal name, brand name, place name etc.)
@optional {properNouns: [map{id: str, name: str, countryIso2: str}]}
@returns(200) {properNouns: [map]} # A list of commonTypeized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/corridor/{countryIso2From}/{firstNameFrom}/{lastNameFrom}/{countryIso2To}/{firstNameTo}/{lastNameTo}
@desc [USES 50 UNITS PER NAME COUPLE] Infer several classifications for a cross border interaction between names (ex. remit, travel, intl com)
@required {countryIso2From: str, firstNameFrom: str, lastNameFrom: str, countryIso2To: str, firstNameTo: str, lastNameTo: str}
@returns(200) {id: str, FirstLastNameGenderedOut: map{script: str, id: str, explanation: str, firstName: str, lastName: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)}, FirstLastNameOriginedOut: map{script: str, id: str, explanation: str, firstName: str, lastName: str, countryOrigin: str, countryOriginAlt: str, countriesOriginTop: [str], score: num(double), regionOrigin: str, topRegionOrigin: str, subRegionOrigin: str, probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]}, FirstLastNameGeoOut: map{script: str, id: str, explanation: str, firstName: str, lastName: str, score: num(double), country: str, countryAlt: str, region: str, topRegion: str, subRegion: str, countriesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]}, FirstLastNameDiasporaedOut: map{script: str, id: str, explanation: str, firstName: str, lastName: str, score: num(double), ethnicityAlt: str, ethnicity: str, lifted: bool, countryIso2: str, ethnicitiesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]}, script: str} # Two classified names.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/corridorBatch
@desc [USES 50 UNITS PER NAME PAIR] Infer several classifications for up to 100 cross border interaction between names (ex. remit, travel, intl com)
@optional {corridorFromTo: [map{id: str, personalNameGeoFrom: map, personalNameGeoTo: map}]}
@returns(200) {corridorFromTo: [map]} # A list of classified name pairs.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/gender/{firstName}
@desc Infer the likely gender of a just a fiven name, assuming default 'US' local context. Please use preferably full names and local geographic context for better accuracy.
@required {firstName: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)} # A genderized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/gender/{firstName}/{lastName}
@desc Infer the likely gender of a name.
@required {firstName: str, lastName: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)} # A genderized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/genderGeo/{firstName}/{lastName}/{countryIso2}
@desc Infer the likely gender of a name, given a local context (ISO2 country code).
@required {firstName: str, lastName: str, countryIso2: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)} # A genderized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/genderGeoBatch
@desc Infer the likely gender of up to 100 names, each given a local context (ISO2 country code).
@optional {personalNames: [map{id: str, firstName: str, lastName: str, countryIso2: str}]}
@returns(200) {personalNames: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/genderBatch
@desc Infer the likely gender of up to 100 names, detecting automatically the cultural context.
@optional {personalNames: [map{id: str, firstName: str, lastName: str}]}
@returns(200) {personalNames: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/genderFullGeo/{fullName}/{countryIso2}
@desc Infer the likely gender of a full name, given a local context (ISO2 country code).
@required {fullName: str, countryIso2: str}
@returns(200) {script: str, id: str, explanation: str, name: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)} # A genderized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/genderFull/{fullName}
@desc Infer the likely gender of a full name, ex. John H. Smith
@required {fullName: str}
@returns(200) {script: str, id: str, explanation: str, name: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)} # A genderized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/genderFullBatch
@desc Infer the likely gender of up to 100 full names, detecting automatically the cultural context.
@optional {personalNames: [map{id: str, name: str}]}
@returns(200) {personalNames: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/genderFullGeoBatch
@desc Infer the likely gender of up to 100 full names, with a given cultural context (country ISO2 code).
@optional {personalNames: [map{id: str, name: str, countryIso2: str}]}
@returns(200) {personalNames: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/originBatch
@desc [USES 10 UNITS PER NAME] Infer the likely country of origin of up to 100 names, detecting automatically the cultural context.
@optional {personalNames: [map{id: str, firstName: str, lastName: str}]}
@returns(200) {personalNames: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/originFull/{personalNameFull}
@desc [USES 10 UNITS PER NAME] Infer the likely country of origin of a personal name. Assumes names as they are in the country of origin. For US, CA, AU, NZ and other melting-pots : use 'diaspora' instead.
@required {personalNameFull: str}
@returns(200) {script: str, id: str, explanation: str, name: str, countryOrigin: str, countryOriginAlt: str, countriesOriginTop: [str], score: num(double), regionOrigin: str, topRegionOrigin: str, subRegionOrigin: str, probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map], religionStatsSynthetic: [map]} # A origined name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/originFullBatch
@desc [USES 10 UNITS PER NAME] Infer the likely country of origin of up to 100 names, detecting automatically the cultural context.
@optional {personalNames: [map{id: str, name: str}]}
@returns(200) {personalNames: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/subclassificationIndian/{firstName}/{lastName}
@desc [USES 10 UNITS PER NAME] Infer the likely Indian state of Union territory according to ISO 3166-2:IN based on the name.
@required {firstName: str, lastName: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, countryIso2: str, subClassification: str, subClassificationAlt: str, subclassificationTop: [str], score: num(double), probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)} # A classified name at a sub-country level.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/subclassificationIndianFull/{fullName}
@desc [USES 10 UNITS PER NAME] Infer the likely Indian state of Union territory according to ISO 3166-2:IN based on the name.
@required {fullName: str}
@returns(200) {script: str, id: str, explanation: str, name: str, countryIso2: str, subClassification: str, subClassificationAlt: str, subclassificationTop: [str], score: num(double), probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)} # A classified name at a sub-country level.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/subclassification/{countryIso2}/{firstName}/{lastName}
@desc [USES 10 UNITS PER NAME] Infer the likely origin of a name at a country subclassification level (state or regeion). Initially, this is only supported for India (ISO2 code 'IN').
@required {countryIso2: str, firstName: str, lastName: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, countryIso2: str, subClassification: str, subClassificationAlt: str, subclassificationTop: [str], score: num(double), probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)} # A classified name at a sub-country level.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/subclassificationFull/{countryIso2}/{fullName}
@desc [USES 10 UNITS PER NAME] Infer the likely origin of a name at a country subclassification level (state or regeion). Initially, this is only supported for India (ISO2 code 'IN').
@required {countryIso2: str, fullName: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, countryIso2: str, subClassification: str, subClassificationAlt: str, subclassificationTop: [str], score: num(double), probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)} # A classified name at a sub-country level.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/subclassificationBatch
@desc [USES 10 UNITS PER NAME] Infer the likely origin of a list of up to 100 names at a country subclassification level (state or regeion). Initially, this is only supported for India (ISO2 code 'IN').
@optional {personalNames: [map{id: str, firstName: str, lastName: str, countryIso2: str}]}
@returns(200) {personalNames: [map]} # A list of classified names at a sub-country level.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/subclassificationFullBatch
@desc [USES 10 UNITS PER NAME] Infer the likely origin of a list of up to 100 names at a country subclassification level (state or regeion). Initially, this is only supported for India (ISO2 code 'IN').
@optional {personalNames: [map{id: str, name: str, countryIso2: str}]}
@returns(200) {personalNames: [map]} # A list of classified names at a sub-country level.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/subclassificationIndianBatch
@desc [USES 10 UNITS PER NAME] Infer the likely Indian state of Union territory according to ISO 3166-2:IN based on a list of up to 100 names.
@optional {personalNames: [map{id: str, firstName: str, lastName: str, countryIso2: str}]}
@returns(200) {personalNames: [map]} # A list of classified names at a subcountry level.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/subclassificationIndianFullBatch
@desc [USES 10 UNITS PER NAME] Infer the likely Indian state of Union territory according to ISO 3166-2:IN based on a list of up to 100 names.
@optional {personalNames: [map{id: str, name: str, countryIso2: str}]}
@returns(200) {personalNames: [map]} # A list of classified names at a subcountry level.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/religionIndian/{subDivisionIso31662}/{firstName}/{lastName}
@desc [USES 10 UNITS PER NAME] Infer the likely religion of a personal Indian first/last name, provided the Indian state or Union territory (NB/ this can be inferred using the subclassification endpoint).
@required {subDivisionIso31662: str, firstName: str, lastName: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, religion: str, religionAlt: str, religionsTop: [str], score: num(double), probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)} # A religion-coded name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/religion/{countryIso2}/{subDivisionIso31662}/{firstName}/{lastName}
@desc [USES 10 UNITS PER NAME] Infer the likely religion of a personal first/last name. NB: only for INDIA (as of current version).
@required {countryIso2: str, subDivisionIso31662: str, firstName: str, lastName: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, religion: str, religionAlt: str, religionsTop: [str], score: num(double), probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)} # A religion-coded name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/religionIndianFull/{subDivisionIso31662}/{personalNameFull}
@desc [USES 10 UNITS PER NAME] Infer the likely religion of a personal Indian full name, provided the Indian state or Union territory (NB/ this can be inferred using the subclassification endpoint).
@required {subDivisionIso31662: str, personalNameFull: str}
@returns(200) {script: str, id: str, explanation: str, name: str, score: num(double), religion: str, religionAlt: str, religionsTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)} # A religion-coded name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/religionFull/{countryIso2}/{subDivisionIso31662}/{personalNameFull}
@desc [USES 10 UNITS PER NAME] Infer the likely religion of a personal full name. NB: only for INDIA (as of current version).
@required {countryIso2: str, subDivisionIso31662: str, personalNameFull: str}
@returns(200) {script: str, id: str, explanation: str, name: str, score: num(double), religion: str, religionAlt: str, religionsTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)} # A religion-coded name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/religionFullBatch
@desc [USES 10 UNITS PER NAME] Infer the likely religion of up to 100 personal full names. NB: only for India as of currently.
@optional {personalNames: [map{id: str, name: str, countryIso2: str, subdivisionIso: str}]}
@returns(200) {personalNames: [map]} # A list of religion-coded names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/religionIndianFullBatch
@desc [USES 10 UNITS PER NAME] Infer the likely religion of up to 100 personal full Indian names, provided the subclassification at State or Union territory level (NB/ can be inferred using the subclassification endpoint).
@optional {personalNames: [map{id: str, name: str, subdivisionIso: str}]}
@returns(200) {personalNames: [map]} # A list of religion-coded names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/religionBatch
@desc [USES 10 UNITS PER NAME] Infer the likely religion of up to 100 personal first/last names. NB: only for India as of currently.
@optional {personalNames: [map{id: str, firstName: str, lastName: str, countryIso2: str, subdivisionIso: str}]}
@returns(200) {personalNames: [map]} # A list of religion-coded names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/religionIndianBatch
@desc [USES 10 UNITS PER NAME] Infer the likely religion of up to 100 personal first/last Indian names, provided the subclassification at State or Union territory level (NB/ can be inferred using the subclassification endpoint).
@optional {personalNames: [map{id: str, firstName: str, lastName: str, subdivisionIso: str}]}
@returns(200) {personalNames: [map]} # A list of religion-coded names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/castegroupIndianFull/{subDivisionIso31662}/{personalNameFull}
@desc [USES 10 UNITS PER NAME] Infer the likely Indian name castegroup of a personal full name.
@required {subDivisionIso31662: str, personalNameFull: str}
@returns(200) {script: str, id: str, explanation: str, name: str, score: num(double), castegroup: str, castegroupAlt: str, castegroupTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)} # A castegroup-coded name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/castegroupIndianFullBatch
@desc [USES 10 UNITS PER NAME] Infer the likely Indian name castegroup of up to 100 personal full names.
@optional {personalNames: [map{id: str, name: str, subdivisionIso: str}]}
@returns(200) {personalNames: [map]} # A list of castegroup-coded names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/castegroupIndian/{subDivisionIso31662}/{firstName}/{lastName}
@desc [USES 10 UNITS PER NAME] Infer the likely Indian name castegroup of a first / last name.
@required {subDivisionIso31662: str, firstName: str, lastName: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, castegroup: str, castegroupAlt: str, castegroupTop: [str], score: num(double), probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)} # A castegroup-coded name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/castegroupIndianBatch
@desc [USES 10 UNITS PER NAME] Infer the likely Indian name castegroup of up to 100 personal first / last names.
@optional {personalNames: [map{id: str, firstName: str, lastName: str, subdivisionIso: str}]}
@returns(200) {personalNames: [map]} # A list of castegroup-coded names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/casteIndian/{subDivisionIso31662}/{firstName}/{lastName}
@desc [USES 10 UNITS PER NAME] Infer the likely Indian name caste of a personal Hindu name.
@required {subDivisionIso31662: str, firstName: str, lastName: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, caste: str, casteAlt: str, casteTop: [str], score: num(double), probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)} # A caste-coded name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/casteIndianBatch
@desc [USES 10 UNITS PER NAME] Infer the likely Indian name caste of up to 100 personal Indian Hindu names.
@optional {personalNames: [map{id: str, firstName: str, lastName: str, countryIso2: str, subdivisionIso: str}]}
@returns(200) {personalNames: [map]} # A list of castegroup-coded names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/corridorFull/{countryIso2From}/{personalNameFrom}/{countryIso2To}/{personalNameTo}
@desc [USES 50 UNITS PER NAME COUPLE] Infer several classifications for a cross border interaction between names (ex. remit, travel, intl com)
@required {countryIso2From: str, personalNameFrom: str, countryIso2To: str, personalNameTo: str}
@returns(200) {id: str, personalNameGeoFromGender: map{script: str, id: str, explanation: str, name: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)}, personalNameGeoToGender: map{script: str, id: str, explanation: str, name: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)}, PersonalNameOriginedOut: map{script: str, id: str, explanation: str, name: str, countryOrigin: str, countryOriginAlt: str, countriesOriginTop: [str], score: num(double), regionOrigin: str, topRegionOrigin: str, subRegionOrigin: str, probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map], religionStatsSynthetic: [map]}, personalNameGeoFromCountry: map{script: str, id: str, explanation: str, name: str, score: num(double), country: str, countryAlt: str, region: str, topRegion: str, subRegion: str, countriesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]}, personalNameGeoToCountry: map{script: str, id: str, explanation: str, name: str, score: num(double), country: str, countryAlt: str, region: str, topRegion: str, subRegion: str, countriesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]}, PersonalNameDiasporaedOut: map{script: str, id: str, explanation: str, name: str, score: num(double), ethnicityAlt: str, ethnicity: str, lifted: bool, countryIso2: str, ethnicitiesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]}, script: str, firstLastNameGeoFromCountry: map{script: str, id: str, explanation: str, name: str, score: num(double), country: str, countryAlt: str, region: str, topRegion: str, subRegion: str, countriesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]}, firstLastNameGeoFromGender: map{script: str, id: str, explanation: str, name: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)}, firstLastNameGeoToGender: map{script: str, id: str, explanation: str, name: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)}, firstLastNameGeoToCountry: map{script: str, id: str, explanation: str, name: str, score: num(double), country: str, countryAlt: str, region: str, topRegion: str, subRegion: str, countriesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]}} # Two classified names.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/corridorFullBatch
@desc [USES 50 UNITS PER NAME PAIR] Infer several classifications for up to 100 cross border interaction between names (ex. remit, travel, intl com)
@optional {corridorFromTo: [map{id: str, personalNameGeoFrom: map, personalNameGeoTo: map}]}
@returns(200) {corridorFromTo: [map]} # A list of classified name pairs.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/countryBatch
@desc [USES 10 UNITS PER NAME] Infer the likely country of residence of up to 100 personal full names, or surnames. Assumes names as they are in the country of residence OR the country of origin.
@optional {personalNames: [map{id: str, name: str}]}
@returns(200) {personalNames: [map]} # A list of origined names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/countryFnLn/{firstName}/{lastName}
@desc [USES 10 UNITS PER NAME] Infer the likely country of residence of a personal first / last name, or one surname. Assumes names as they are in the country of residence OR the country of origin.
@required {firstName: str, lastName: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, countryOrigin: str, countryOriginAlt: str, countriesOriginTop: [str], score: num(double), regionOrigin: str, topRegionOrigin: str, subRegionOrigin: str, probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]} # A origined name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/countryFnLnBatch
@desc [USES 10 UNITS PER NAME] Infer the likely country of residence of up to 100 personal first / last names, or surnames. Assumes names as they are in the country of residence OR the country of origin.
@optional {personalNames: [map{id: str, firstName: str, lastName: str}]}
@returns(200) {personalNames: [map]} # A list of origined names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/usRaceEthnicity/{firstName}/{lastName}
@desc [USES 10 UNITS PER NAME] Infer a US resident's likely race/ethnicity according to US Census taxonomy W_NL (white, non latino), HL (hispano latino),  A (asian, non latino), B_NL (black, non latino). Optionally add header X-OPTION-USRACEETHNICITY-TAXONOMY: USRACEETHNICITY-6CLASSES for two additional classes, AI_AN (American Indian or Alaskan Native) and PI (Pacific Islander).
@required {firstName: str, lastName: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, raceEthnicityAlt: str, raceEthnicity: str, score: num(double), raceEthnicitiesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)} # a US resident's likely race/ethnicity : W_NL (white, non latino), HL (hispano latino),  A (asian, non latino), B_NL (black, non latino), AI_AN (American Indian or Alaskan Native*) and PI (Pacific Islander*). *optionally
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/usRaceEthnicityZIP5/{firstName}/{lastName}/{zip5Code}
@desc [USES 10 UNITS PER NAME] Infer a US resident's likely race/ethnicity according to US Census taxonomy, using (optional) ZIP5 code info. Output is W_NL (white, non latino), HL (hispano latino),  A (asian, non latino), B_NL (black, non latino). Optionally add header X-OPTION-USRACEETHNICITY-TAXONOMY: USRACEETHNICITY-6CLASSES for two additional classes, AI_AN (American Indian or Alaskan Native) and PI (Pacific Islander).
@required {firstName: str, lastName: str, zip5Code: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, raceEthnicityAlt: str, raceEthnicity: str, score: num(double), raceEthnicitiesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)} # a US resident's likely race/ethnicity : W_NL (white, non latino), HL (hispano latino),  A (asian, non latino), B_NL (black, non latino), AI_AN (American Indian or Alaskan Native*) and PI (Pacific Islander*). *optionally
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/usRaceEthnicityBatch
@desc [USES 10 UNITS PER NAME] Infer up-to 100 US resident's likely race/ethnicity according to US Census taxonomy. Output is W_NL (white, non latino), HL (hispano latino),  A (asian, non latino), B_NL (black, non latino). Optionally add header X-OPTION-USRACEETHNICITY-TAXONOMY: USRACEETHNICITY-6CLASSES for two additional classes, AI_AN (American Indian or Alaskan Native) and PI (Pacific Islander).
@optional {personalNames: [map{id: str, firstName: str, lastName: str, countryIso2: str}]}
@returns(200) {personalNames: [map]} # A list of US resident's likely race/ethnicity. W_NL (white, non latino), HL (hispano latino),  A (asian, non latino), B_NL (black, non latino), AI_AN (American Indian or Alaskan Native*) and PI (Pacific Islander*). *optionally
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/usZipRaceEthnicityBatch
@desc [USES 10 UNITS PER NAME] Infer up-to 100 US resident's likely race/ethnicity according to US Census taxonomy, with (optional) ZIP code. Output is W_NL (white, non latino), HL (hispano latino),  A (asian, non latino), B_NL (black, non latino). Optionally add header X-OPTION-USRACEETHNICITY-TAXONOMY: USRACEETHNICITY-6CLASSES for two additional classes, AI_AN (American Indian or Alaskan Native) and PI (Pacific Islander).
@optional {personalNames: [map{id: str, firstName: str, lastName: str, countryIso2: str, zipCode: str}]}
@returns(200) {personalNames: [map]} # A list of US resident's likely race/ethnicity. W_NL (white, non latino), HL (hispano latino),  A (asian, non latino), B_NL (black, non latino), AI_AN (American Indian or Alaskan Native*) and PI (Pacific Islander*). *optionally
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/usRaceEthnicityFull/{personalNameFull}
@desc [USES 10 UNITS PER NAME] Infer a US resident's likely race/ethnicity according to US Census taxonomy W_NL (white, non latino), HL (hispano latino),  A (asian, non latino), B_NL (black, non latino). Optionally add header X-OPTION-USRACEETHNICITY-TAXONOMY: USRACEETHNICITY-6CLASSES for two additional classes, AI_AN (American Indian or Alaskan Native) and PI (Pacific Islander).
@required {personalNameFull: str}
@returns(200) {script: str, id: str, explanation: str, name: str, raceEthnicityAlt: str, raceEthnicity: str, score: num(double), raceEthnicitiesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)} # a US resident's likely race/ethnicity : W_NL (white, non latino), HL (hispano latino),  A (asian, non latino), B_NL (black, non latino), AI_AN (American Indian or Alaskan Native*) and PI (Pacific Islander*). *optionally
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/usRaceEthnicityFullBatch
@desc [USES 10 UNITS PER NAME] Infer up-to 100 US resident's likely race/ethnicity according to US Census taxonomy. Output is W_NL (white, non latino), HL (hispano latino),  A (asian, non latino), B_NL (black, non latino). Optionally add header X-OPTION-USRACEETHNICITY-TAXONOMY: USRACEETHNICITY-6CLASSES for two additional classes, AI_AN (American Indian or Alaskan Native) and PI (Pacific Islander).
@optional {personalNames: [map{id: str, name: str, countryIso2: str}]}
@returns(200) {personalNames: [map]} # A list of US resident's likely race/ethnicity. W_NL (white, non latino), HL (hispano latino),  A (asian, non latino), B_NL (black, non latino), AI_AN (American Indian or Alaskan Native*) and PI (Pacific Islander*). *optionally
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/diaspora/{countryIso2}/{firstName}/{lastName}
@desc [USES 20 UNITS PER NAME] Infer the likely ethnicity/diaspora of a personal name, given a country of residence ISO2 code (ex. US, CA, AU, NZ etc.)
@required {countryIso2: str, firstName: str, lastName: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, score: num(double), ethnicityAlt: str, ethnicity: str, lifted: bool, countryIso2: str, ethnicitiesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]} # A diaspora / ethnicity for given name and geography.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/diasporaBatch
@desc [USES 20 UNITS PER NAME] Infer the likely ethnicity/diaspora of up to 100 personal names, given a country of residence ISO2 code (ex. US, CA, AU, NZ etc.)
@optional {personalNames: [map{id: str, firstName: str, lastName: str, countryIso2: str}]}
@returns(200) {personalNames: [map]} # A list of diaspora / ethnicity given a name and residency.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/diasporaFull/{countryIso2}/{personalNameFull}
@desc [USES 20 UNITS PER NAME] Infer the likely ethnicity/diaspora of a personal name, given a country of residence ISO2 code (ex. US, CA, AU, NZ etc.)
@required {countryIso2: str, personalNameFull: str}
@returns(200) {script: str, id: str, explanation: str, name: str, score: num(double), ethnicityAlt: str, ethnicity: str, lifted: bool, countryIso2: str, ethnicitiesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]} # A diaspora / ethnicity for given name and geography.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/diasporaFullBatch
@desc [USES 20 UNITS PER NAME] Infer the likely ethnicity/diaspora of up to 100 personal names, given a country of residence ISO2 code (ex. US, CA, AU, NZ etc.)
@optional {personalNames: [map{id: str, name: str, countryIso2: str}]}
@returns(200) {personalNames: [map]} # A list of diaspora / ethnicity given a name and residency.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/communityEngage/{countryIso2}/{firstName}/{lastName}
@desc [USES 20 UNITS PER NAME] Infer the likely ethnicity/diaspora, country, gender of a personal name, given a country of residence ISO2 code (ex. US, CA, AU, NZ etc.) for community engagement (require special module/pricing)
@required {countryIso2: str, firstName: str, lastName: str}
@returns(200) {id: str, PersonalNameDiasporaedOut: map{script: str, id: str, explanation: str, name: str, score: num(double), ethnicityAlt: str, ethnicity: str, lifted: bool, countryIso2: str, ethnicitiesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]}, PersonalNameOriginedOut: map{script: str, id: str, explanation: str, name: str, countryOrigin: str, countryOriginAlt: str, countriesOriginTop: [str], score: num(double), regionOrigin: str, topRegionOrigin: str, subRegionOrigin: str, probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map], religionStatsSynthetic: [map]}, country: map{script: str, id: str, explanation: str, name: str, score: num(double), country: str, countryAlt: str, region: str, topRegion: str, subRegion: str, countriesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]}, gender: map{script: str, id: str, explanation: str, name: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)}, PersonalNameUSRaceEthnicityOut: map{script: str, id: str, explanation: str, name: str, raceEthnicityAlt: str, raceEthnicity: str, score: num(double), raceEthnicitiesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)}, prime: bool, scoped: bool, script: str} # A community engagement candidate.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/communityEngageBatch
@desc Infer the likely ethnicity/diaspora, country, gender of up to 100 personal names, given a country of residence ISO2 code (ex. US, CA, AU, NZ etc.) for community engagement (require special module/pricing)
@optional {personalNames: [map{id: str, firstName: str, lastName: str, countryIso2: str}]}
@returns(200) {engagementCandidates: [map]} # A list of diaspora / ethnicity given a name and residency.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/communityEngageFull/{countryIso2}/{personalNameFull}
@desc [USES 20 UNITS PER NAME] Infer the likely ethnicity/diaspora, country, gender of a personal name, given a country of residence ISO2 code (ex. US, CA, AU, NZ etc.) for community engagement (require special module/pricing)
@required {countryIso2: str, personalNameFull: str}
@returns(200) {id: str, PersonalNameDiasporaedOut: map{script: str, id: str, explanation: str, name: str, score: num(double), ethnicityAlt: str, ethnicity: str, lifted: bool, countryIso2: str, ethnicitiesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]}, PersonalNameOriginedOut: map{script: str, id: str, explanation: str, name: str, countryOrigin: str, countryOriginAlt: str, countriesOriginTop: [str], score: num(double), regionOrigin: str, topRegionOrigin: str, subRegionOrigin: str, probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map], religionStatsSynthetic: [map]}, country: map{script: str, id: str, explanation: str, name: str, score: num(double), country: str, countryAlt: str, region: str, topRegion: str, subRegion: str, countriesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double), religionStats: [map], religionStatsAlt: [map]}, gender: map{script: str, id: str, explanation: str, name: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)}, PersonalNameUSRaceEthnicityOut: map{script: str, id: str, explanation: str, name: str, raceEthnicityAlt: str, raceEthnicity: str, score: num(double), raceEthnicitiesTop: [str], probabilityCalibrated: num(double), probabilityAltCalibrated: num(double)}, prime: bool, scoped: bool, script: str} # A community engagement candidate.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/communityEngageFullBatch
@desc Infer the likely ethnicity/diaspora, country, gender of up to 100 personal names, given a country of residence ISO2 code (ex. US, CA, AU, NZ etc.) for community engagement (require special module/pricing)
@optional {personalNames: [map{id: str, name: str, countryIso2: str}]}
@returns(200) {engagementCandidates: [map]} # A list cummunity engagement candidates.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/parseName/{nameFull}/{countryIso2}
@desc Infer the likely first/last name structure of a name, ex. John Smith or SMITH, John or SMITH; John. For better accuracy, provide a geographic context.
@required {nameFull: str, countryIso2: str}
@returns(200) {script: str, id: str, explanation: str, name: str, nameParserType: str, nameParserTypeAlt: str, firstLastName: map{script: str, id: str, explanation: str, firstName: str, lastName: str}, score: num(double)} # A origined name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/parseNameBatch
@desc Infer the likely first/last name structure of a name, ex. John Smith or SMITH, John or SMITH; John.
@optional {personalNames: [map{id: str, name: str}]}
@returns(200) {personalNames: [map]} # A list of parsed names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/parseNameGeoBatch
@desc Infer the likely first/last name structure of a name, ex. John Smith or SMITH, John or SMITH; John. Giving a local context improves precision.
@optional {personalNames: [map{id: str, name: str, countryIso2: str}]}
@returns(200) {personalNames: [map]} # A list of parsed names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/parseChineseName/{chineseName}
@desc Infer the likely first/last name structure of a name, ex. 王晓明 -> 王(surname) 晓明(given name)
@required {chineseName: str}
@returns(200) {script: str, id: str, explanation: str, name: str, nameParserType: str, nameParserTypeAlt: str, firstLastName: map{script: str, id: str, explanation: str, firstName: str, lastName: str}, score: num(double)} # A origined name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/parseChineseNameBatch
@desc Infer the likely first/last name structure of a name, ex. 王晓明 -> 王(surname) 晓明(given name).
@optional {personalNames: [map{id: str, name: str}]}
@returns(200) {personalNames: [map]} # A list of parsed names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/pinyinChineseName/{chineseName}
@desc Romanize the Chinese name to Pinyin, ex. 王晓明 -> Wang (surname) Xiaoming (given name)
@required {chineseName: str}
@returns(200) {script: str, id: str, explanation: str, name: str, nameParserType: str, nameParserTypeAlt: str, firstLastName: map{script: str, id: str, explanation: str, firstName: str, lastName: str}, score: num(double)} # A pinyin name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/pinyinChineseNameBatch
@desc Romanize a list of Chinese name to Pinyin, ex. 王晓明 -> Wang (surname) Xiaoming (given name).
@optional {personalNames: [map{id: str, name: str}]}
@returns(200) {personalNames: [map]} # A list of Pinyin names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/chineseNameMatch/{chineseSurnameLatin}/{chineseGivenNameLatin}/{chineseName}
@desc Return a score for matching Chinese name ex. 王晓明 with a romanized name ex. Wang Xiaoming
@required {chineseSurnameLatin: str, chineseGivenNameLatin: str, chineseName: str}
@returns(200) {script: str, id: str, explanation: str, matchStatus: str, score: num(double)} # A romanized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/chineseNameMatchBatch
@desc Identify Chinese name candidates, based on the romanized name (firstName = chineseGivenName; lastName=chineseSurname), ex. Wang Xiaoming
@optional {personalNames: [map{id: str, name1: map, name2: map}]}
@returns(200) {matchedNames: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/genderChineseNamePinyin/{chineseSurnameLatin}/{chineseGivenNameLatin}
@desc Infer the likely gender of a Chinese name in LATIN (Pinyin).
@required {chineseSurnameLatin: str, chineseGivenNameLatin: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)} # A genderized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/genderChineseNamePinyinBatch
@desc Infer the likely gender of up to 100 Chinese names in LATIN (Pinyin).
@optional {personalNames: [map{id: str, firstName: str, lastName: str}]}
@returns(200) {personalNames: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/genderChineseName/{chineseName}
@desc Infer the likely gender of a Chinese full name ex. 王晓明
@required {chineseName: str}
@returns(200) {script: str, id: str, explanation: str, name: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)} # A genderized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/genderChineseNameBatch
@desc Infer the likely gender of up to 100 full names ex. 王晓明
@optional {personalNames: [map{id: str, name: str}]}
@returns(200) {personalNames: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/chineseNameCandidates/{chineseSurnameLatin}/{chineseGivenNameLatin}
@desc Identify Chinese name candidates, based on the romanized name ex. Wang Xiaoming
@required {chineseSurnameLatin: str, chineseGivenNameLatin: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, orderOption: str, matchCandidates: [map]} # A romanized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/chineseNameCandidatesBatch
@desc Identify Chinese name candidates, based on the romanized name (firstName = chineseGivenName; lastName=chineseSurname), ex. Wang Xiaoming
@optional {personalNames: [map{id: str, firstName: str, lastName: str}]}
@returns(200) {namesAndMatchCandidates: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/chineseNameGenderCandidates/{chineseSurnameLatin}/{chineseGivenNameLatin}/{knownGender}
@desc Identify Chinese name candidates, based on the romanized name ex. Wang Xiaoming - having a known gender ('male' or 'female')
@required {chineseSurnameLatin: str, chineseGivenNameLatin: str, knownGender: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, orderOption: str, matchCandidates: [map]} # A romanized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/chineseNameCandidatesGenderBatch
@desc Identify Chinese name candidates, based on the romanized name (firstName = chineseGivenName; lastName=chineseSurname) ex. Wang Xiaoming.
@optional {personalNames: [map{id: str, firstName: str, lastName: str, gender: str}]}
@returns(200) {namesAndMatchCandidates: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/parseJapaneseName/{japaneseName}
@desc Infer the likely first/last name structure of a name, ex. 山本 早苗 or Yamamoto Sanae
@required {japaneseName: str}
@returns(200) {script: str, id: str, explanation: str, name: str, nameParserType: str, nameParserTypeAlt: str, firstLastName: map{script: str, id: str, explanation: str, firstName: str, lastName: str}, score: num(double)} # A origined name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/parseJapaneseNameBatch
@desc Infer the likely first/last name structure of a name, ex. 山本 早苗 or Yamamoto Sanae
@optional {personalNames: [map{id: str, name: str}]}
@returns(200) {personalNames: [map]} # A list of parsed names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/japaneseNameKanjiCandidates/{japaneseSurnameLatin}/{japaneseGivenNameLatin}
@desc Identify japanese name candidates in KANJI, based on the romanized name ex. Yamamoto Sanae
@required {japaneseSurnameLatin: str, japaneseGivenNameLatin: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, orderOption: str, matchCandidates: [map]} # A romanized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/japaneseNameKanjiCandidates/{japaneseSurnameLatin}/{japaneseGivenNameLatin}/{knownGender}
@desc Identify japanese name candidates in KANJI, based on the romanized name ex. Yamamoto Sanae - and a known gender.
@required {japaneseSurnameLatin: str, japaneseGivenNameLatin: str, knownGender: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, orderOption: str, matchCandidates: [map]} # A romanized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/japaneseNameLatinCandidates/{japaneseSurnameKanji}/{japaneseGivenNameKanji}
@desc Romanize japanese name, based on the name in Kanji.
@required {japaneseSurnameKanji: str, japaneseGivenNameKanji: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, orderOption: str, matchCandidates: [map]} # A romanized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/japaneseNameKanjiCandidatesBatch
@desc Identify japanese name candidates in KANJI, based on the romanized name (firstName = japaneseGivenName; lastName=japaneseSurname), ex. Yamamoto Sanae
@optional {personalNames: [map{id: str, firstName: str, lastName: str}]}
@returns(200) {namesAndMatchCandidates: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/japaneseNameGenderKanjiCandidatesBatch
@desc Identify japanese name candidates in KANJI, based on the romanized name (firstName = japaneseGivenName; lastName=japaneseSurname) with KNOWN gender, ex. Yamamoto Sanae
@optional {personalNames: [map{id: str, firstName: str, lastName: str, gender: str}]}
@returns(200) {namesAndMatchCandidates: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/japaneseNameLatinCandidatesBatch
@desc Romanize japanese names, based on the name in KANJI
@optional {personalNames: [map{id: str, firstName: str, lastName: str}]}
@returns(200) {namesAndMatchCandidates: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/japaneseNameMatch/{japaneseSurnameLatin}/{japaneseGivenNameLatin}/{japaneseName}
@desc Return a score for matching Japanese name in KANJI ex. 山本 早苗 with a romanized name ex. Yamamoto Sanae
@required {japaneseSurnameLatin: str, japaneseGivenNameLatin: str, japaneseName: str}
@returns(200) {script: str, id: str, explanation: str, matchStatus: str, score: num(double)} # A romanized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/japaneseNameMatchFeedbackLoop/{japaneseSurnameLatin}/{japaneseGivenNameLatin}/{japaneseName}
@desc [CREDITS 1 UNIT] Feedback loop to better perform matching Japanese name in KANJI ex. 山本 早苗 with a romanized name ex. Yamamoto Sanae
@required {japaneseSurnameLatin: str, japaneseGivenNameLatin: str, japaneseName: str}
@returns(200) {feedbackCredits: int(int64)} # A romanized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/japaneseNameMatchBatch
@desc Return a score for matching a list of Japanese names in KANJI ex. 山本 早苗 with romanized names ex. Yamamoto Sanae
@optional {personalNames: [map{id: str, name1: map, name2: map}]}
@returns(200) {matchedNames: [map]} # A list of matched names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/genderJapaneseName/{japaneseSurname}/{japaneseGivenName}
@desc Infer the likely gender of a Japanese name in LATIN (Pinyin).
@required {japaneseSurname: str, japaneseGivenName: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)} # A genderized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/genderJapaneseNameBatch
@desc Infer the likely gender of up to 100 Japanese names in LATIN (Pinyin).
@optional {personalNames: [map{id: str, firstName: str, lastName: str}]}
@returns(200) {personalNames: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/genderJapaneseNameFull/{japaneseName}
@desc Infer the likely gender of a Japanese full name ex. 王晓明
@required {japaneseName: str}
@returns(200) {script: str, id: str, explanation: str, name: str, likelyGender: str, genderScale: num(double), score: num(double), probabilityCalibrated: num(double)} # A genderized name.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/genderJapaneseNameFullBatch
@desc Infer the likely gender of up to 100 full names
@optional {personalNames: [map{id: str, name: str}]}
@returns(200) {personalNames: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/phoneCode/{firstName}/{lastName}/{phoneNumber}
@desc [USES 11 UNITS PER NAME] Infer the likely country and phone prefix, given a personal name and formatted / unformatted phone number.
@required {firstName: str, lastName: str, phoneNumber: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, internationalPhoneNumberVerified: str, phoneCountryIso2Verified: str, phoneCountryCode: int(int32), phoneCountryCodeAlt: int(int32), phoneCountryIso2: str, phoneCountryIso2Alt: str, originCountryIso2: str, originCountryIso2Alt: str, phoneNumber: str, verified: bool, score: num(double), countryIso2: str} # A name with country and phone code.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/phoneCodeGeo/{firstName}/{lastName}/{phoneNumber}/{countryIso2}
@desc [USES 11 UNITS PER NAME] Infer the likely phone prefix, given a personal name and formatted / unformatted phone number, with a local context (ISO2 country of residence).
@required {firstName: str, lastName: str, phoneNumber: str, countryIso2: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, internationalPhoneNumberVerified: str, phoneCountryIso2Verified: str, phoneCountryCode: int(int32), phoneCountryCodeAlt: int(int32), phoneCountryIso2: str, phoneCountryIso2Alt: str, originCountryIso2: str, originCountryIso2Alt: str, phoneNumber: str, verified: bool, score: num(double), countryIso2: str} # A name with country and phone code.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint GET /api2/json/phoneCodeGeoFeedbackLoop/{firstName}/{lastName}/{phoneNumber}/{phoneNumberE164}/{countryIso2}
@desc [CREDITS 1 UNIT] Feedback loop to better infer the likely phone prefix, given a personal name and formatted / unformatted phone number, with a local context (ISO2 country of residence).
@required {firstName: str, lastName: str, phoneNumber: str, phoneNumberE164: str, countryIso2: str}
@returns(200) {script: str, id: str, explanation: str, firstName: str, lastName: str, internationalPhoneNumberVerified: str, phoneCountryIso2Verified: str, phoneCountryCode: int(int32), phoneCountryCodeAlt: int(int32), phoneCountryIso2: str, phoneCountryIso2Alt: str, originCountryIso2: str, originCountryIso2Alt: str, phoneNumber: str, verified: bool, score: num(double), countryIso2: str} # A name with country and phone code.
@errors {401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/phoneCodeBatch
@desc [USES 11 UNITS PER NAME] Infer the likely country and phone prefix, of up to 100 personal names, detecting automatically the local context given a name and formatted / unformatted phone number.
@optional {personalNamesWithPhoneNumbers: [map{id: str, firstName: str, lastName: str, phoneNumber: str}]}
@returns(200) {personalNamesWithPhoneNumbers: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/phoneCodeGeoBatch
@desc [USES 11 UNITS PER NAME] Infer the likely country and phone prefix, of up to 100 personal names, with a local context (ISO2 country of residence).
@optional {personalNamesWithPhoneNumbers: [map{id: str, firstName: str, lastName: str, phoneNumber: str, countryIso2: str, countryIso2Alt: str}]}
@returns(200) {personalNamesWithPhoneNumbers: [map]} # A list of genderized names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/translateFullBatch
@desc Translate up to 100 full names, from one source language to a target language.
@optional {sourceLangIso3: str, targetLangIso3: str, personalNames: [map{id: str, name: str}]}
@returns(200) {personalNames: [map]} # A list of translated names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/searchFullBatch
@desc Search up to 100 full names, in an indexed dataset - using fuzzy name maching.
@optional {datasetName: str, personalNames: [map{id: str, name: str}]}
@returns(200) {personalNames: [map]} # A list of translated names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@endpoint POST /api2/json/compareFullBatch
@desc Compare up to 100 full name pairs, using fuzzy name maching.
@optional {personalNames: [map{id: str, name1: map, name2: map}]}
@returns(200) {personalNames: [map]} # A list of compared names.
@errors {400: Bad request (ex. too many names), 401: Missing or incorrect API Key, 403: Email not Verified, or API Limit Reached, or API Key Disabled, 429: Too Many Requests}

@end
