{"id":18877053,"url":"https://github.com/fullcontact/fullcontact-python-client","last_synced_at":"2025-04-14T18:31:39.369Z","repository":{"id":38830822,"uuid":"252490821","full_name":"fullcontact/fullcontact-python-client","owner":"fullcontact","description":"Official python client library for the fullcontact Enrich and Resolve APIs","archived":false,"fork":false,"pushed_at":"2022-08-25T17:33:38.000Z","size":164,"stargazers_count":8,"open_issues_count":3,"forks_count":8,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-03-28T07:01:57.643Z","etag":null,"topics":["client-library","enrichment","fullcontact","fullcontact-api","python","resolve"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fullcontact.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-02T15:15:53.000Z","updated_at":"2024-10-15T23:53:41.000Z","dependencies_parsed_at":"2022-09-04T10:31:59.557Z","dependency_job_id":null,"html_url":"https://github.com/fullcontact/fullcontact-python-client","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullcontact%2Ffullcontact-python-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullcontact%2Ffullcontact-python-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullcontact%2Ffullcontact-python-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullcontact%2Ffullcontact-python-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fullcontact","download_url":"https://codeload.github.com/fullcontact/fullcontact-python-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248936695,"owners_count":21186088,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client-library","enrichment","fullcontact","fullcontact-api","python","resolve"],"created_at":"2024-11-08T06:16:40.589Z","updated_at":"2025-04-14T18:31:38.956Z","avatar_url":"https://github.com/fullcontact.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FullContact Client\n\n[![PyPI](https://img.shields.io/pypi/v/python-fullcontact?label=PyPi)](https://pypi.org/project/python-fullcontact/)\n![flake8](https://github.com/fullcontact/fullcontact-python-client/workflows/flake8/badge.svg)\n![pytest](https://github.com/fullcontact/fullcontact-python-client/workflows/pytest/badge.svg)\n\nThe official python client library for FullContact V3 API. This client provides an interface to interact with Enrich,\nResolve, Tags, Audience, Verify and Permission APIs. FullContact API Documentation is available\nat: https://platform.fullcontact.com/docs\n\n# Table of contents\n\n* [Requirements](#requirements)\n* [Adding To Your Project](#adding-to-your-project)\n* [Installation](#installation)\n* [Migrating from FullContact Client V1.0.0](#migrating-from-fullcontact-client-v100)\n* [Usage](#usage)\n    * [Importing the client](#importing-the-client)\n    * [Basic Usage](#basic-usage)\n    * [Client Configuration](#client-configuration)\n    * [Person API](#person-api)\n        * [enrich()](#fullcontactclientpersonenrich)\n        * [enrich_async()](#fullcontactclientpersonenrich_async)\n    * [Company API](#company-api)\n        * [enrich()](#fullcontactclientcompanyenrich)\n        * [enrich_async](#fullcontactclientcompanyenrich_async)\n    * [Resolve API](#resolve-api)\n        * [map()](#fullcontactclientidentitymap)\n        * [map_async()](#fullcontactclientidentitymap_async)\n        * [resolve()](#fullcontactclientidentityresolve)\n        * [resolve_async()](#fullcontactclientidentityresolve_async)\n        * [mapResolve()](#fullcontactclientidentitymapresolve)\n        * [mapResolve_async()](#fullcontactclientidentitymapresolve_async)\n        * [delete()](#fullcontactclientidentitydelete)\n        * [delete_async()](#fullcontactclientidentitydelete_async)\n    * [Tags API](#tags-api)\n        * [get()](fullcontactclienttagsget)\n        * [get_async()](fullcontactclienttagsget_async)\n        * [create()](fullcontactclienttagscreate)\n        * [create_async()](fullcontactclienttagscreate_async)\n        * [delete()](fullcontactclienttagsdelete)\n        * [delete_async()](fullcontactclienttagsdelete_async)\n    * [Audience](#audience-api)\n        * [create()](fullcontactclientaudiencecreate)\n        * [create_async()](fullcontactclientaudiencecreate_async)\n        * [download()](fullcontactclientaudiencedownload)\n        * [download_async()](fullcontactclientaudiencedownload_async)\n    * [Permission](#permission-api)\n        * [create](#fullcontactclientpermissioncreate)\n        * [delete](#fullcontactclientpermissiondelete)\n        * [find](#fullcontactclientpermissionfind)\n        * [current](#fullcontactclientpermissioncurrent)\n        * [verify](#fullcontactclientpermissionverify)\n        * [permission-async](#permission-apis-asynchronous-methods)\n    * [Verify](#verify-api)\n        * [match](#fullcontactclientverifymatch)\n        * [match_async](#fullcontactclientverifymatch_async)\n        * [signals](#fullcontactclientverifysignals)\n        * [signals_async](#fullcontactclientverifysignals_async)\n        * [activity](#fullcontactclientverifyactivity)\n        * [activity_async](#fullcontactclientverifyactivity_async)\n\n# Requirements\n\nThis library requires Python 3.5 or above.\n\n# Adding To Your Project\n\nTo add FullContact Python Client library to your project, add the below line to your `requirements.txt` file, or as a\nrequirement in the `setup.py` file.\n\n```\npython-fullcontact==4.0.0\n```\n\n# Installation\n\nIt is recommended to install the FullContact python client library from [PyPi](https://pypi.org/) using the below\ncommand.\n\n```\npip install python-fullcontact\n```\n\nIf you'd like to install the development version (with `pytest`), run instead:\n\n```shell\npip install 'python-fullcontact[develop]'\n```\n\nIt is also possible to install the package from this repo, by running the below commands.\n\n```\npip install git+https://github.com/fullcontact/fullcontact-python-client.git\n```\n\n# Migrating from FullContact Client V1.0.0\n\nThis version of FullContact Client (V2.0.0) has significant changes in terms of design and features. Hence, it is not\nbackward compatible with V1.0.0 library. However, migrating from the V1.0.0 client is very easy. In V1.0.0, there used\nto be different clients for different APIs (PersonClient, CompanyClient). However with V2.0.0, we have only 1 client,\nwith different methods.\n\n#### V1.0.0\n\n```python\nfrom fullcontact import PersonClient, CompanyClient\n\nperson_client = PersonClient(\"\u003cyour_api_key\u003e\")\ncompany_client = CompanyClient(\"\u003cyour_api_key\u003e\")\nperson_client.enrich(**query)\ncompany_client.enrich(**query)\n```\n\nThis would be changed as below in V2.0.0\n\n#### V2.0.0\n\n```python\nfrom fullcontact import FullContactClient\n\nfullcontact_client = FullContactClient(\"\u003cyour_api_key\u003e\")\nfullcontact_client.person.enrich(**query)\nfullcontact_client.company.enrich(**query)\n```\n\n# Usage\n\n## Importing the client\n\nThe client is available straight out of the package `fullcontact`.\n\n```python\nfrom fullcontact import FullContactClient\n```\n\n## Basic Usage\n\nTo use the client library, you need to initialize the client using the API KEY that you have generated\nfrom [FullContact Platform](https://platform.fullcontact.com/developers/api-keys). Once initialized, the client provides\nthe `Enrich` and `Resolve` capabilities of the V3 FullContact API.\n\n```python\nfrom fullcontact import FullContactClient\n\nfullcontact_client = FullContactClient(\"\u003cyour_api_key\u003e\")\n\n# Person Enrich\nperson_enrich_result = fullcontact_client.person.enrich(email=\"marquitaross006@gmail.com\")\n\n# Company Enrich\ncompany_enrich_result = fullcontact_client.company.enrich(domain=\"fullcontact.com\")\n\n# Identity Map\nidentity_map_result = fullcontact_client.identity.map(email=\"marquitaross006@gmail.com\", recordId=\"customer123\")\n\n# Identity Resolve\nidentity_resolve_result = fullcontact_client.identity.resolve(recordId=\"customer123\")\n\n# Identity Map Resolve\nidentity_mapResolve_result = fullcontact_client.identity.mapResolve(email=\"marquitaross006@gmail.com\", recordId=\"customer123\", generatePid=True)\n\n# Identity Delete\nidentity_delete_result = fullcontact_client.identity.delete(recordId=\"customer123\")\n\n# Tags Get\ntags_get_result = fullcontact_client.tags.get(recordId=\"customer123\")\n\n# Tags Create\ntags_create_result = fullcontact_client.tags.create(recordId=\"customer123\",\n                                                    tags={\"tag1\": \"value1\", \"tag2\": [\"value2\", \"value3\"]})\n\n# Tags Delete\ntags_delete_result = fullcontact_client.tags.create(recordId=\"customer123\",\n                                                    tags={\"tag2\": \"value2\"})\n\n# Audience Create\naudience_create_result = fullcontact_client.audience.create(webhookUrl=\"http://your_webhook_url/\",\n                                                            tags={\"tag1\": \"value1\", \"tag2\": \"value2\"})\n\n# Audience Download\naudience_download_result = fullcontact_client.audience.download(requestId=\"\u003cyour_requestId\u003e\")\naudience_download_result.write_to_file(\"\u003coutput_file_path\u003e\")\n\n# Permission Create\npermission_create_result = fullcontact_client.permission.create(\n                                            query={\"email\": \"marquitaross006@gmail.com\"},\n                                            consentPurposes=[\n                                                {\n                                                    \"purposeId\": 2,\n                                                    \"channel\": [\"web\",\"phone\",\"mobile\",\"offline\",\"email\"],\n                                                    \"ttl\": 1095,\n                                                    \"enabled\": True\n                                                }\n                                            ],\n                                            locale=\"US\",\n                                            language=\"en\",\n                                            collectionMethod=\"cookie\",\n                                            collectionLocation=\"US\",\n                                            policyUrl=\"https://www.fullcontact-test.com/services-privacy-policy/\",\n                                            termsService=\"https://www.fullcontact-test.com/content-policy/\")  \n\n# Permission Delete\npermission_delete_result = fullcontact_client.permission.delete({\"email\": \"marquitaross006@gmail.com\"})\n# Permission Find\npermission_find_result = fullcontact_client.permission.find(email=\"marquitaross006@gmail.com\")\n\n# Permission Current\npermission_current_result = fullcontact_client.permission.current(email=\"marquitaross006@gmail.com\")\n\n# Permission Verify\npermission_verify_result = fullcontact_client.permission.verify(query={\"email\": \"marquitaross006@gmail.com\"},\n                                                                purposeId=6, \n                                                                channel=\"web\")\n# Verify Match\nverify_match_result = fullcontact_client.verify.match(email=\"marquitaross006@gmail.com\")\n\n# Verify Signals\nverify_signals_result = fullcontact_client.verify.signals(email=\"marquitaross006@gmail.com\")\n\n# Verify Activity\nverify_activity_result = fullcontact_client.verify.activity(email=\"marquitaross006@gmail.com\")\n\n```\n\n## Client Configuration\n\nThe FullContact Client allows the configuration of additional headers and retry related values, through init parameters.\n\n#### API Key\n\nAPI Key is required to Authorize with FullContact API and hence, is a required parameter. This is set using\nthe `api_key` init parameter for [FullContactClient](#fullcontactclient).\n\n```python\nfullcontact_client = FullContactClient(\"\u003cyour_api_key\u003e\")\n```\n\n#### Headers\n\nThe headers `Authorization`, `Content-Type` and `User-Agent` are added automatically and cannot be overridden. Hence,\nheaders needs to be added only if any additional header needs to be passed to the API. One useful situation for this is\nwhen you need to pass your `Reporting-Key`. The headers can be added by setting the `headers` init parameter\nfor [FullContactClient](#fullcontactclient).\n\n```python\nadditional_headers = {\"Reporting-Key\": \"clientXYZ\"}\nfullcontact_client = FullContactClient(api_key=\"\u003cyour_api_key\u003e\", headers=additional_headers)\n```\n\n#### Retry\n\nBy default, the client retries a request if it receives a `429` or `503` status code. The default retry count is 1 and\nthe backoff factor (base delay) for exponential backoff is 1 second. Retry can by configured by setting\nthe `max_retry_count`, `retry_status_codes` and `base_delay` init parameters for [FullContactClient](#fullcontactclient)\n. If the value provided for `max_retry_count` is greater than 5, it will be set to 5.\n\n```python\nfullcontact_client = FullContactClient(api_key=\"\u003cyour_api_key\u003e\", max_retry_count=3, retry_status_codes=(429, 503, 413),\n                                       base_delay=2.5)\n```\n\n### MultiFieldRequest\nAbility to match on one or many input fields. The more contact data inputs you can provide, the better. \nBy providing more contact inputs, the more accurate and precise we can get with our identity resolution capabilities.\n* `email`: _str_\n* `emails`: _List[str]_\n* `phone`: _str_\n* `phones`: _List[str]_\n* `placekey`: _str_\n* `location`: _dict_\n    * `addressLine1`: _str_\n    * `addressLine2`: _str_\n    * `city`: _str_\n    * `region`: _str_\n    * `regionCode`: _str_\n    * `postalCode`: _str_\n* `name`: _dict_\n    * `full`: _str_\n    * `given`: _str_\n    * `family`: _str_\n* `profiles`: _List[dict]_\n    * `service`: _str_\n    * `username`: _str_\n    * `userid`: _str_\n    * `url`: _str_\n* `maids`: _List[str]_\n* `recordId`: _str_\n* `personId`: _str_\n* `li_nonid`: _str_\n* `partnerId`: _str_\n* `panoramaId`: _str_\n\n\n### FullContactClient\n\nclass: _fullcontact.FullContactClient_\n\n#### Init parameters:\n\n* `api_key`: _str_ - (required)\n* `headers`: _dict_ - [optional]\n* `max_retry_count`: _int_ _[default=5]_ - [optional]\n* `retry_status_codes`: _List[int]_ _[default=(429, 503)]_ - [optional]\n* `base_delay`: _float_ _[default=1.0]_ - [optional]\n\n## Person API\n\nThe client library provides methods to interact with V3 Person Enrich API through `FullContactClient.person` object. The\nV3 Person Enrich API can be called synchronously using [enrich()](#fullcontactclientpersonenrich) and asynchronously\nusing [enrich_async()](#fullcontactclientpersonenrich_async). Additional headers can be set on a per-request basis by\nsetting the parameter `headers` while calling [enrich()](#fullcontactclientpersonenrich)\nor [enrich_async()](#fullcontactclientpersonenrich_async). Being a request level parameter, this can be used to override\nany header that has been set on the client level.\n\u003e Person Enrichment API Documentation: https://platform.fullcontact.com/docs/apis/enrich/multi-field-request\n\n```python\n# Synchronous execution\nenrich_response = fullcontact_client.person.enrich(email=\"marquitaross006@gmail.com\")\nprint(enrich_response.get_name())\n# Output: {'given': 'Marquita', 'family': 'Ross', 'full': 'Marquita H Ross'}\n\n# Asynchronous execution\nenrich_async_response = fullcontact_client.person.enrich_async(email=\"marquitaross006@gmail.com\")\nenrich_result = enrich_async_response.result()\nprint(enrich_result.get_name())\n\n\n# Output: {'given': 'Marquita', 'family': 'Ross', 'full': 'Marquita H Ross'}\n\n# Asynchronous execution using callback\ndef print_name_from_result(result: concurrent.Futures.Future):\n    enrich_result = result.result()\n    print(enrich_result.get_name())\n\n\nfullcontact_client.person.enrich_async(email=\"marquitaross006@gmail.com\").add_done_callback(print_name_from_result)\n# Output: {'given': 'Marquita', 'family': 'Ross', 'full': 'Marquita H Ross'}\n```\n\n### FullContactClient.person.enrich()\n\nclass: _fullcontact.api.person_api.PersonApi_\n\n#### Parameters:\n\n* `**query`: _kwargs_ - (required)\n* `headers`: _dict_ - [optional]\n\n`query` takes in [MultiFieldReq](#multifieldrequest). Other supported fields for query:\n\n* `webhookUrl`: _str_\n* `confidence`: _str_\n* `dataFilter`: _List[str]_\n* `infer`: _bool_\n* `maxMaids`: _int_\n\n#### Returns:\n\n#### PersonEnrichResponse\n\nclass: _fullcontact.response.person_response.PersonEnrichResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n* `get_summary()`: _dict_ - Summary from Person Enrich Response\n* `get_details()`: _dict_ - Details from Person Enrich Response\n* `get_name()`: _dict_ - Name from Person Enrich Response\n* `get_age()`: _dict_ - Age from Person Enrich Response\n* `get_gender()`: _str_ - Gender from Person Enrich Response\n* `get_demographics()`: _dict_ - Demographics from Person Enrich Response\n* `get_emails()`: _List[str]_ - Emails from Person Enrich Response\n* `get_phones()`: _List[str]_ - Phones from Person Enrich Response\n* `get_profiles()`: _List[dict]_ - Profiles from Person Enrich Response\n* `get_locations()`: _List[dict]_ - Locations from Person Enrich Response\n* `get_employment()`: _List[dict]_ - Employments from Person Enrich Response\n* `get_photos()`: _List[dict]_ - Photos from Person Enrich Response\n* `get_education()`: _List[dict]_ - Education\n* `get_urls()`: _List[dict]_ - URLs from Person Enrich Response\n* `get_interests()`: _List[dict]_ - Interests from Person Enrich Response\n* `get_household()`: _dict_ - Household details from Person Enrich Response\n* `get_finance()`: _dict_ - Finance details from Person Enrich Response\n* `get_census()`: _dict_ - Census details from Person Enrich Response\n* `get_identifiers()`: _dict_ - Identifiers from Person Enrich Response\n* `get_extended()`: _dict_ - All Extended data\n\n### FullContactClient.person.enrich_async()\n\nclass: _fullcontact.api.person_api.PersonApi_\nSame as that of [FullContactClient.person.enrich()](#fullcontactclientpersonenrich)\n\n#### Returns:\n\n#### Future[PersonEnrichResponse]\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n#### Useful Methods:\n\n* `result()`: _PersonEnrichResponse_ - [PersonEnrichResponse](#personenrichresponse) object received once execution is\n  completed\n* `add_done_callback(fn)`: _None_ - Add a callback function to be executed on successful execution.\n\n## Company API\n\nThe client library provides methods to interact with V3 Company Enrich API\nthrough `FullContactClient.company` object. The V3 Company Enrich API can be called synchronously\nusing [enrich()](#fullcontactclientcompanyenrich) and asynchronously\nusing [enrich_async()](#fullcontactclientcompanyenrich_async).\nAdditional headers can be set on a per-request basis by\nsetting the parameter `headers` while calling [enrich()](#fullcontactclientcompanyenrich))\n\nBeing a request level parameter, this can be used to override any header that has been set on the client level.\n\u003e Company Enrichment API Documentation: https://platform.fullcontact.com/docs/apis/enrich/company-enrichment\n\n```python\n# Synchronous enrich execution\nenrich_response = fullcontact_client.company.enrich(domain=\"fullcontact.com\")\nprint(enrich_response.get_summary())\n\"\"\" Output: {'name': 'FullContact Inc',\n 'location': '1755 Blake Street Suite 450 Denver CO, 80202 USA',\n 'twitter': 'https://twitter.com/fullcontact',\n 'linkedin': 'https://www.linkedin.com/company/fullcontact-inc-',\n 'facebook': None,\n 'bio': \"Solving the world's contact information problem!\",\n 'logo': 'https://img.fullcontact.com/static/7329d91237b7970b984d56c2497c80c0_7abd96cd75e5587b39b9f15dce07d7ebe8dc31accecf1b0f2a617ada34498633',\n 'website': 'https://www.fullcontact.com',\n 'founded': 2010,\n 'employees': 300,\n 'locale': 'en',\n 'category': 'Other',\n 'updated': '2020-05-31'} \"\"\"\n\n# Asynchronous enrich execution\nenrich_async_response = fullcontact_client.company.enrich_async(domain=\"fullcontact.com\")\nenrich_result = enrich_async_response.result()\nprint(enrich_result.get_summary())\n```\n\n### FullContactClient.company.enrich()\n\nclass: _fullcontact.api.company_api.CompanyApi_\n\n#### Parameters:\n\n* `**query`: _kwargs_ - (required)\n* `headers`: _dict_ - [optional]\n\nSupported fields for query:\n\n* `domain`: _str_\n* `webhookUrl`: _str_\n\n#### Returns:\n\n#### CompanyEnrichResponse\n\nclass: _fullcontact.response.company_response.CompanyEnrichResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n* `get_summary()`: _dict_ - Summary from Company Enrich Response\n* `get_details()`: _dict_ - Details from Company Enrich Response\n\n### FullContactClient.company.enrich_async()\n\nclass: _fullcontact.api.company_api.CompanyClient_\n\n#### Parameters:\n\nSame as that of [FullContactClient.company.enrich()](#fullcontactclientcompanyenrich)\n\n#### Returns:\n\n#### Future[CompanyEnrichResponse]\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n#### Useful Methods:\n\n* `result()`: _CompanyEnrichResponse_ - [CompanyEnrichResponse](#companyenrichresponse) object received once execution\n  is completed\n* `add_done_callback(fn)`: _None_ - Add a callback function to be executed on successful execution.\n\n## Resolve API\n\nThe client library provides methods to interact with V3 Resolve API (`identity.map`, `identity.resolve`, `identity.mapResolve`,\nand `identity.delete` endpoints) through `FullContactClient.identity` object. The V3 Resolve API can be accessed using\nthe methods [map()](#fullcontactclientidentitymap), [resolve()](#fullcontactclientidentityresolve), [mapResolve()](#fullcontactclientidentitymapresolve),\nand [delete()](#fullcontactclientidentitydelete), respectively. These APIs can be accessed using the async version these\nfunctions, [map_async()](#fullcontactclientidentitymap_async)\n, [resolve_async()](#fullcontactclientidentityresolve_async), [mapResolve_async()](#fullcontactclientidentitymapresolve_async),\nand [delete_async()](#fullcontactclientidentitydelete_async). Additional headers can be set on a per-request basis by\nsetting the parameter `headers` while calling these methods.     \nBeing a request level parameter, this can be used to override any header that has been set on the client level.\n\u003e Resolve API Documentation: https://platform.fullcontact.com/docs/apis/resolve/multi-field-request\n\n```python\n# Synchronous map execution\nmap_response = fullcontact_client.identity.map(email=\"marquitaross006@gmail.com\", recordId=\"customer123\")\nprint(map_response.get_recordIds())\n# Output: ['customer123']\n\n# Synchronous resolve execution\nresolve_response = fullcontact_client.identity.resolve(email=\"marquitaross006@gmail.com\")\nprint(resolve_response.get_recordIds())\n# Output: ['customer123']\n\n# Synchronous mapResolve execution\nmapResolve_response = fullcontact_client.identity.mapResolve(email=\"marquitaross006@gmail.com\", recordId=\"customer123\")\nprint(mapResolve_response.get_recordIds())\nprint(mapResolve_response.get_personIds())\n# Output: \n# ['customer123']\n# ['OdcKOTonyt5diGjjf-CXHrn84Zr_PcPGmqj1NYSiCR_U-J7v']\n\n# Synchronous delete execution\ndelete_response = fullcontact_client.identity.delete(recordId=\"customer123\")\nprint(delete_response.is_successful)\n# Output: True\n\n# Asynchronous map execution\nmap_async_response = fullcontact_client.identity.map_async(email=\"marquitaross006@gmail.com\", recordId=\"customer123\")\nmap_response = map_async_response.result()\nprint(map_response.get_recordIds())\n# Output: ['customer123']\n\n# Asynchronous resolve execution\nresolve_async_response = fullcontact_client.identity.resolve_async(email=\"marquitaross006@gmail.com\")\nresolve_response = resolve_async_response.result()\nprint(resolve_response.get_recordIds())\n# Output: ['customer123']\n\n# Asynchronous mapResolve execution\nmapResolve_async_response = fullcontact_client.identity.mapResolve_async(email=\"marquitaross006@gmail.com\", recordId=\"customer123\")\nmapResolve_response = mapResolve_async_response.result()\nprint(mapResolve_response.get_recordIds())\n# Output: ['customer123']\n\n# Asynchronous delete execution\ndelete_async_response = fullcontact_client.identity.delete_async(recordId=\"customer123\")\ndelete_response = delete_async_response.result()\nprint(delete_response.is_successful)\n# Output: True\n```\n\n### FullContactClient.identity.map()\n\nclass: _fullcontact.api.resolve_api.ResolveClient_\n\n#### Parameters:\n\n* `**fields`: _kwargs_ - (required)\n* `headers`: _dict_ - [optional]\n\n`fields` takes in [MultiFieldReq](#multifieldrequest). Other supported fields for mapping:\n\n* `tags`: _List[str]_\n* `generatePid`: bool\n\n#### Returns:\n\n#### IdentityMapResponse\n\nclass: _fullcontact.response.resolve_response.IdentityMapResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n* `get_recordIds()`: _List[str]_ - List of recordIds from Map response\n\n### FullContactClient.identity.map_async()\n\nclass: _fullcontact.api.resolve_api.ResolveClient_\n\n#### Parameters:\n\nSame as that of [FullContactClient.identity.map()](#fullcontactclientidentitymap)\n\n#### Returns:\n\n#### Future[IdentityMapResponse]\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n#### Useful Methods:\n\n* `result()`: _IdentityMapResponse_ - [IdentityMapResponse](#identitymapresponse) object received once execution is\n  completed\n* `add_done_callback(fn)`: _None_ - Add a callback function to be executed on successful execution.\n\n### FullContactClient.identity.resolve()\n\nclass: _fullcontact.api.resolve_api.ResolveApi_\n\n#### Parameters:\n\n* `**fields`: _kwargs_ - (required)\n* `include_tags`: `_bool_ - [optional]\n  \u003e If `include_tags` is set to True, the response will include tags in the response.\n* `headers`: _dict_ - [optional]\n\nSupported fields for mapping:\nSame as that of [FullContactClient.identity.map()](#fullcontactclientidentitymap), but with one more extra field\n\n* `personId`: _str_\n\n\u003e Note: recordId and personId cannot be used together to resolve. Only one of these fields can be used in a request.\n\n#### Returns:\n\n#### IdentityResolveResponse\n\nclass: _fullcontact.response.resolve_response.IdentityResolveResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n* `get_recordIds()`: _List[str]_ - List of recordIds from Resolve response\n* `get_personIds()`: _List[str]_ - List of personIds from Resolve response\n* `get_partnerIds()`: _List[str]_ - List of partnerIds from Resolve response\n* `get_tags()`: _Dict_ - A dict of tags, if `include_tags` was set to True in the request\n\n### FullContactClient.identity.resolve_async()\n\nclass: _fullcontact.api.resolve_api.ResolveApi_\n\n#### Parameters:\n\nSame as that of [FullContactClient.identity.resolve()](#fullcontactclientidentityresolve)\n\n#### Returns:\n\n#### Future[IdentityResolveResponse]\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n#### Useful Methods:\n\n* `result()`: _IdentityResolveResponse_ - [IdentityResolveResponse](#identityresolveresponse) object received once\n  execution is completed\n* `add_done_callback(fn)`: _None_ - Add a callback function to be executed on successful execution.\n\n\n### FullContactClient.identity.mapResolve()\n\nclass: _fullcontact.api.resolve_api.ResolveClient_\n\n#### Parameters:\n\n* `**fields`: _kwargs_ - (required)\n* `headers`: _dict_ - [optional]\n\n`fields` takes in [MultiFieldReq](#multifieldrequest). Other supported fields for mapping:\n\n* `tags`: _List[str]_\n* `generatePid`: bool\n\n#### Returns:\n\n#### IdentityResolveResponse\n\nclass: _fullcontact.response.resolve_response.IdentityResolveResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n* `get_recordIds()`: _List[str]_ - List of recordIds from Map response\n\n### FullContactClient.identity.mapResolve_async()\n\nclass: _fullcontact.api.resolve_api.ResolveClient_\n\n#### Parameters:\n\nSame as that of [FullContactClient.identity.mapResolve()](#fullcontactclientidentitymapresolve)\n\n#### Returns:\n\n#### Future[IdentityResolveResponse]\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n#### Useful Methods:\n\n* `result()`: _IdentityResolveResponse_ - [IdentityResolveResponse](#identityresolveresponse) object received once execution is\n  completed\n* `add_done_callback(fn)`: _None_ - Add a callback function to be executed on successful execution.\n\n### FullContactClient.identity.delete()\n\nclass: _fullcontact.api.resolve_api.ResolveApi_\n\n#### Parameters:\n\n* `recordId`: _str_ - (required)\n* `headers`: _dict_ - [optional]\n\n#### Returns:\n\n#### IdentityDeleteResponse\n\nclass: _fullcontact.response.resolve_response.IdentityDeleteResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict. Empty dict will be returned on successful delete.\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n\n### FullContactClient.identity.delete_async()\n\nclass: _fullcontact.api.resolve_api.ResolveApi_\n\n#### Parameters:\n\nSame as that of [FullContactClient.identity.delete()](#fullcontactclientidentitydelete)\n\n#### Returns:\n\n#### Future[IdentityDeleteResponse]\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n#### Useful Methods:\n\n* `result()`: _IdentityDeleteResponse_ - [IdentityDeleteResponse](#identitydeleteresponse) object received once\n  execution is completed\n* `add_done_callback(fn)`: _None_ - Add a callback function to be executed on successful execution.\n\n## Tags API\n\nThe client library provides methods to interact with Customer Tags API (`tags.get`, `tags.create` and `tags.delete`\nendpoints) through `FullContactClient.tags` object. The Tags API can be accessed using the\nmethods [get()](#fullcontactclienttagsget), [create()](#fullcontactclienttagscreate)\nand [delete()](#fullcontactclienttagsdelete), respectively. These APIs can be accessed using the async version these\nfunctions, [get_async()](#fullcontactclienttagsget_async), [create_async()](#fullcontactclienttagscreate_async)\nand [delete_async()](#fullcontactclienttagsdelete_async). Additional headers can be set on a per-request basis by\nsetting the parameter `headers` while calling these methods.     \nBeing a request level parameter, this can be used to override any header that has been set on the client level.\n\u003e Tags API Documentation: https://platform.fullcontact.com/docs/apis/resolve/customer-tags\n\n```python\n# Synchronous create execution\ncreate_response = fullcontact_client.tags.create(recordId=\"customer123\",\n                                                 tags={\"segment\": \"highspender\"})\nprint(create_response.json())\n# Output: {'recordId': 'customer123', 'tags': [{'key': 'segment', 'value': 'highspender'}]}\n\n# Synchronous get execution\nget_response = fullcontact_client.tags.get(recordId=\"customer123\")\nprint(get_response.get_tags())\n# Output: {'segment': ['highspender']}\n\n# Synchronous delete execution\ndelete_response = fullcontact_client.tags.delete(recordId=\"customer123\",\n                                                 tags={\"segment\": \"highspender\"})\nprint(delete_response.get_status_code())\n# Output: 204\n\n# Asynchronous create execution\ncreate_async_response = fullcontact_client.tags.create_async(recordId=\"customer123\",\n                                                             tags={\"segment\": \"highspender\"})\ncreate_response = create_async_response.result()\nprint(create_response.json())\n# Output: {'recordId': 'customer123', 'tags': [{'key': 'segment', 'value': 'highspender'}]}\n\n# Asynchronous get execution\nget_async_response = fullcontact_client.tags.get_async(recordId=\"customer123\")\nget_response = get_async_response.result()\nprint(get_response.get_tags())\n# Output: {'segment': ['highspender']}\n\n# Asynchronous delete execution\ndelete_async_response = fullcontact_client.tags.delete_async(recordId=\"customer123\",\n                                                             tags={\"segment\": \"highspender\"})\ndelete_response = delete_async_response.result()\nprint(delete_response.get_status_code())\n# Output: 204\n```\n\n### FullContactClient.tags.create()\n\nclass: _fullcontact.api.tags_api.TagsApi_\n\n#### Parameters:\n\n* `recordId`: _str_ - (required)\n* `tags`: _dict_ - (required)\n  \u003e Tags dict has to be in the format {tag1_key: tag1_value, tag2_key: [tag2_value1, tag2_value2], ...}. Tag value can be a string or a list of strings to support multiple values.\n* `headers`: _dict_ - [optional]\n\n#### Returns:\n\n#### TagsCreateResponse\n\nclass: _fullcontact.response.tags_response.TagsCreateResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n\n### FullContactClient.tags.create_async()\n\nclass: _fullcontact.api.tags_api.TagsApi_\n\n#### Parameters:\n\nSame as that of [FullContactClient.tags.create()](#fullcontactclienttagscreate)\n\n#### Returns:\n\n#### Future[TagsCreateResponse]\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n#### Useful Methods:\n\n* `result()`: _TagsCreateResponse_ - [TagsCreateResponse](#tagecreateresponse) object received once execution is\n  completed\n* `add_done_callback(fn)`: _None_ - Add a callback function to be executed on successful execution.\n\n### FullContactClient.tags.get()\n\nclass: _fullcontact.api.tags_api.TagsApi_\n\n#### Parameters:\n\n* `**identifiers`: _kwargs_ - (required)\n* `headers`: _dict_ - [optional]\n\nSupported `identifiers` to get tags:\n\n* `recordId`: _str_\n* `partnerId`: _str_\n\n#### Returns:\n\n#### TagsGetResponse\n\nclass: _fullcontact.response.tags_response.TagsGetResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n* `get_tags()`: _dict_ - Tags from the response in format _{tag1_key: tag1_value, tag2_key, tag2_value, ...}_\n* `get_recordId()`: _str_ - `recordId` from the response\n* `get_partnerId()`: _str_ - `partnerId` from the response\n\n### FullContactClient.tags.get_async()\n\nclass: _fullcontact.api.tags_api.TagsApi_\n\n#### Parameters:\n\nSame as that of [FullContactClient.tags.get()](#fullcontactclienttagsget)\n\n#### Returns:\n\n#### Future[TagsGetResponse]\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n#### Useful Methods:\n\n* `result()`: _TagsGetResponse_ - [TagsGetResponse](#tagsgetresponse) object received once execution is completed\n* `add_done_callback(fn)`: _None_ - Add a callback function to be executed on successful execution.\n\n### FullContactClient.tags.delete()\n\nclass: _fullcontact.api.tags_api.TagsApi_\n\n#### Parameters:\n\n* `recordId`: _str_ - (required)\n* `tags`: _dict_ - (required)\n  \u003e Tags dict has to be in the format {tag1_key: tag1_value, tag2_key: tag2_value, ...}\n* `headers`: _dict_ - [optional]\n\n#### Returns:\n\n#### TagsDeleteResponse\n\nclass: _fullcontact.response.tags_response.TagsDeleteResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict. Empty dict will be returned on successful delete.\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n\n### FullContactClient.tags.delete_async()\n\nclass: _fullcontact.api.tags_api.TagsApi_\n\n#### Parameters:\n\nSame as that of [FullContactClient.tags.delete()](#fullcontactclienttagsdelete)\n\n#### Returns:\n\n#### Future[TagsDeleteResponse]\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n#### Useful Methods:\n\n* `result()`: _TagsDeleteResponse_ - [TagsDeleteResponse](#tagsdeleteresponse) object received once execution is\n  completed\n* `add_done_callback(fn)`: _None_ - Add a callback function to be executed on successful execution.\n\n## Audience API\n\nThe client library provides methods to interact with Audience Tags API (`audience.create` and `audience.download`\nendpoints) through `FullContactClient.audience` object. The Audience API can be accessed using the\nmethods [create()](#fullcontactclientaudiencecreate) and [download()](#fullcontactclientaudiencedownload), respectively.\nThese APIs can be accessed using the async version these\nfunctions, [create_async()](#fullcontactclientaudiencecreate_create)\nand [download_async()](#fullcontactclientaudiencedownload_async). Additional headers can be set on a per-request basis\nby setting the parameter `headers` while calling these methods.     \nBeing a request level parameter, this can be used to override any header that has been set on the client level.\n\u003e Tags API Documentation: https://platform.fullcontact.com/docs/apis/resolve/customer-tags\n\n```python\n# Synchronous create execution\ncreate_response = fullcontact_client.audience.create(webhookUrl=\"http://your_webhookUrl/\",\n                                                     tags={\"segment\": \"highspender\"})\nprint(create_response.json())\n# Output: {'requestId': 'c7273de7-e717-4cab-9fe0-213ab3796636'}\n\n# Synchronous download execution\ndownload_response = fullcontact_client.audience.download(requestId=\"c7273de7-e717-4cab-9fe0-213ab3796636\")\ndownload_response.write_to_file(\"/path/to/output_file.json.gz\")\nprint(download_response.get_status_code())\n# Output: 200\n\n# Asynchronous create execution\ncreate_async_response = fullcontact_client.audience.create(webhookUrl=\"http://your_webhookUrl/\",\n                                                           tags={\"segment\": \"highspender\"})\ncreate_response = create_async_response.result()\nprint(create_response.json())\n# Output: {'requestId': 'c7273de7-e717-4cab-9fe0-213ab3796636'}\n\n# Asynchronous download execution\ndownload_async_response = fullcontact_client.audience.download_async(requestId=\"c7273de7-e717-4cab-9fe0-213ab3796636\")\ndownload_response = download_async_response.result()\ndownload_response.write_to_file(\"/path/to/output_file.json.gz\")\nprint(download_response.get_status_code())\n# Output: 200\n```\n\n### FullContactClient.audience.create()\n\nclass: _fullcontact.api.tags_api.AudienceApi_\n\n#### Parameters:\n\n* `webhookUrl`: _str_ - (required)\n* `tags`: _dict_ - (required)\n  \u003e Tags dict has to be in the format {tag1_key: tag1_value, tag2_key: tag2_value, ...}\n* `headers`: _dict_ - [optional]\n\n#### Returns:\n\n#### AudienceCreateResponse\n\nclass: _fullcontact.response.audience_response.AudienceCreateResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n* `get_requestId()`: _str_ - `requestId` created for the request\n\n### FullContactClient.audience.create_async()\n\nclass: _fullcontact.api.audience_api.AudienceApi_\n\n#### Parameters:\n\nSame as that of [FullContactClient.audience.create()](#fullcontactclientaudiencecreate)\n\n#### Returns:\n\n#### Future[AudienceCreateResponse]\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n#### Useful Methods:\n\n* `result()`: _AudienceCreateResponse_ - [AudienceCreateResponse](#audiencecreateresponse) object received once\n  execution is completed\n* `add_done_callback(fn)`: _None_ - Add a callback function to be executed on successful execution.\n\n### FullContactClient.audience.download()\n\nclass: _fullcontact.api.audience_api.AudienceApi_\n\n#### Parameters:\n\n* `requestId`: _str_ - (required)\n* `headers`: _dict_ - [optional]\n\n#### Returns:\n\n#### AudienceDownloadResponse\n\nclass: _fullcontact.response.audience_response.AudienceDownloadResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n* `write_to_file(file)`: _bool_ - Writes the downloaded file contents to the input file/fileObj\n    * Param `file` : _str_/_FileObject_ - It can the path to a file as string or a bytes writable file object. The file\n      will be of format `.json.gz` if the download was successful. This can be confirmed using the `is_successful` flag.\n  \u003e An easy way to create a bytes writable file object is by using io.BytesIO\n\n### FullContactClient.audience.download_async()\n\nclass: _fullcontact.api.audience_api.AudienceApi_\n\n#### Parameters:\n\nSame as that of [FullContactClient.audience.download()](#fullcontactclientaudiencedownload)\n\n#### Returns:\n\n#### Future[AudienceDownloadResponse]\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n#### Useful Methods:\n\n* `result()`: _AudienceDownloadResponse_ - [AudienceDownloadResponse](#audiencedownloadresponse) object received once\n  execution is completed\n* `add_done_callback(fn)`: _None_ - Add a callback function to be executed on successful execution.\n\n## Permission API\n\nThe client library provides methods to interact with Permission\nthrough `FullContactClient.permission` object. Additional headers can be set on a per-request basis\nby setting the parameter `headers` while calling these methods.     \nBeing a request level parameter, this can be used to override any header that has been set on the client level.\n\u003e Permission APIs Documentation: https://platform.fullcontact.com/docs/apis/permission/introduction\n\nclass: _fullcontact.api.permission_api.PermissionApi_\n\n```python\n# Synchronous create execution\npermission_create_response = fullcontact_client.permission.create(\n                            query={\"email\": \"cutomer1@fullcontact.com\"},\n                            consentPurposes=[\n                                {\n                                    \"purposeId\": 2,\n                                    \"channel\": [\"web\",\"phone\",\"mobile\",\"offline\",\"email\"],\n                                    \"ttl\": 1095,\n                                    \"enabled\": True\n                                },\n                                {\n                                    \"purposeId\": 5,\n                                    \"channel\": [\"web\",\"phone\",\"mobile\",\"offline\",\"email\"],\n                                    \"ttl\": 1095,\n                                    \"enabled\": True\n                                }\n                            ],\n                            locale=\"US\",\n                            language=\"en\",\n                            collectionMethod=\"cookie\",\n                            collectionLocation=\"US\",\n                            policyUrl=\"https://www.fullcontact-test.com/services-privacy-policy/\",\n                            termsService=\"https://www.fullcontact-test.com/content-policy/\"\n                            )\nprint(permission_create_response.get_status_code())\n# Output: 202\n\n# Synchronous delete execution\npermission_delete_response = fullcontact_client.permission.delete(query={\"email\": \"cutomer1@fullcontact.com\"})\nprint(permission_delete_response.get_status_code())\n# Output: 202\n\n# Synchronous find execution\npermission_find_response = fullcontact_client.permission.find(query={\"email\": \"cutomer1@fullcontact.com\"})\nprint(permission_find_response.json())\n'''\nOutput:\n[\n    {\n        \"permissionType\": \"create\",\n        \"permissionId\": \"0089ced6-eaa8-4ac4-a6b2-de9d16928461\",\n        \"consentPurposes\": [\n            {\n                \"ttl\": null,\n                \"enabled\": True,\n                \"channel\": \"web\",\n                \"purposeId\": 6,\n                \"purposeName\": \"Content selection, delivery \u0026 reporting\",\n                \"timestamp\": 1614855618604\n            }\n        ],\n        \"locale\": \"US\",\n        \"ipAddress\": \"127.0.0.1\",\n        \"language\": \"en\",\n        \"collectionMethod\": \"cookie\",\n        \"collectionLocation\": \"ae\",\n        \"policyUrl\": \"https://www.fullcontact-test.com/services-privacy-policy/\",\n        \"termsService\": \"https://www.fullcontact-test.com/content-policy/\",\n        \"timestamp\": None,\n        \"created\": 1614855618604\n    },\n    {\n        \"permissionType\": \"delete\",\n        \"permissionId\": \"0089ced6-eaa8-4ac4-a6b2-de9d169284rt4\",\n        \"consentPurposes\": [\n            {\n                \"ttl\": null,\n                \"enabled\": True,\n                \"channel\": \"web\",\n                \"purposeId\": 2,\n                \"purposeName\": \"Content selection, delivery \u0026 reporting\",\n                \"timestamp\": 1614855618607\n            }\n        ],\n        \"locale\": \"US\",\n        \"ipAddress\": \"127.0.0.1\",\n        \"language\": \"en\",\n        \"collectionMethod\": \"cookie\",\n        \"collectionLocation\": \"ae\",\n        \"policyUrl\": \"https://www.fullcontact-test.com/services-privacy-policy/\",\n        \"termsService\": \"https://www.fullcontact-test.com/content-policy/\",\n        \"timestamp\": None,\n        \"created\": 1614855618607\n    }\n]\n'''\n# Synchronous Current execution\npermission_current_response = fullcontact_client.permission.current(query={\"email\": \"cutomer1@fullcontact.com\"})\nprint(permission_current_response.json())\n'''\nOutput:\n{\n    \"3\": {\n        \"offline\": {\n            \"ttl\": 1095,\n            \"enabled\": True,\n            \"channel\": \"offline\",\n            \"purposeId\": 3,\n            \"purposeName\": \"Personalized Content Profile\",\n            \"timestamp\": 1614837134541\n        },\n        \"phone\": {\n            \"ttl\": 1095,\n            \"enabled\": True,\n            \"channel\": \"phone\",\n            \"purposeId\": 3,\n            \"purposeName\": \"Personalized Content Profile\",\n            \"timestamp\": 1614837134541\n        },\n        \"mobile\": {\n            \"ttl\": 1095,\n            \"enabled\": True,\n            \"channel\": \"mobile\",\n            \"purposeId\": 3,\n            \"purposeName\": \"Personalized Content Profile\",\n            \"timestamp\": 1614837134541\n        },\n        \"email\": {\n            \"ttl\": 1095,\n            \"enabled\": True,\n            \"channel\": \"email\",\n            \"purposeId\": 3,\n            \"purposeName\": \"Personalized Content Profile\",\n            \"timestamp\": 1614837134541\n        }\n    },\n    \"6\": {\n        \"web\": {\n            \"ttl\": null,\n            \"enabled\": True,\n            \"channel\": \"web\",\n            \"purposeId\": 6,\n            \"purposeName\": \"Content selection, delivery \u0026 reporting\",\n            \"timestamp\": 1614856047618\n        }\n    }\n}\n'''\n# Synchronous Verify execution\npermission_verify_response = fullcontact_client.permission.verify(query={\"email\": \"cutomer1@fullcontact.com\"},\n                                                                purposeId=6, \n                                                                channel=\"web\")\nprint(permission_verify_response.json())\n'''\nOutput:\n{\n    \"ttl\": 1024,\n    \"enabled\": true,\n    \"channel\": \"web\",\n    \"purposeId\": 6,\n    \"purposeName\": \"Content selection, delivery \u0026 reporting\",\n    \"timestamp\": 1614856047613\n}\n'''\n```\n\n### FullContactClient.permission.create()\n\nclass: _fullcontact.schema.permission_schema.PermissionCreateRequestSchema_\n\n#### Parameters:\n\n* `**query`: _kwargs_ - [required]\n* `headers`: _dict_ - [optional]\n\nSupported fields in `query`:\n- `query`: [MultifieldReq](#multifieldrequest) - [required]\n- `consentPurposes`: List[PurposeRequestSchema] - [required]\n- `locale`: str\n- `ipAddress`: str\n- `language`: str\n- `collectionMethod`: str - [required]\n- `collectionLocation`: str - [required]\n- `policyUrl`: str - [required]\n- `termsService`: str - [required]\n- `tcf`: str\n- `timestamp`: int\n\n#### PurposeRequestSchema\n\n- `purposeId`: int - [required]\n- `channel`: List[str]\n- `ttl`: int\n- `enabled`: bool  - [required]\n\n#### Returns:\n\nclass: _fullcontact.response.permission_response.PermissionCreateResponse_\n\nA basic API response with response code as `202` if successful.\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n\n### FullContactClient.permission.delete()\n\nclass: _fullcontact.schema.permission_schema.PermissionDeleteRequestSchema_\n\n#### Parameters:\n\n* `**query`: _kwargs_ - [required]\n* `headers`: _dict_ - [optional]\n\n`query` takes a [MultiFieldReq](#multifieldrequest)\n\n#### Returns:\n\nclass: _fullcontact.response.permission_response.PermissionDeleteResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n\n### FullContactClient.permission.find()\n\nclass: _fullcontact.schema.permission_schema.PermissionFindRequestSchema_\n\n#### Parameters:\n\n* `**query`: _kwargs_ - [required]\n* `headers`: _dict_ - [optional]\n\n`query` takes a [MultiFieldReq](#multifieldrequest)\n\n#### Returns:\n\nclass: _fullcontact.response.permission_response.PermissionFindResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n\n### FullContactClient.permission.current()\n\nclass: _fullcontact.schema.permission_schema.PermissionCurrentRequestSchema_\n\n#### Parameters:\n\nsame as that of [FullContactClient.permission.find()](#fullcontactclientpermissionfind)\n\n#### Returns:\n\nclass: _fullcontact.response.permission_response.PermissionCurrentResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n* `get_consent_for_purposeId(self, purposeId: int)`: _dict_ - of Consent set for the purposeId\n\n### FullContactClient.permission.verify()\n\nclass: _fullcontact.schema.permission_schema.PermissionVerifyRequestSchema_\n\n#### Parameters:\n\n* `**query`: _kwargs_ - [required]\n* `headers`: _dict_ - [optional]\n\nSupported fields in `query`:\n- `query`: [MultifieldReq](#multifieldrequest) - [required]\n- `purposeId`: int - [required]\n- `channel`: str - [required]\n\n#### Returns:\n\nclass: _fullcontact.response.permission_response.PermissionVerifyResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n\n### Permission APIs Asynchronous methods\nClient Library also support corresponding async methods for Permission APIs such as:\n- `permission.create_async()`\n- `permission.delete_async()`\n- `permission.find_async()`\n- `permission.current_async()`\n- `permission.verify_async()`\n\nAll these takes same parameters as their synchronous counterparts but return a `Future` instead.\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n## Verify API\n\nThe client library provides methods to interact with V3 Verfiy API (`verify.match`, `verify.signals` and `verify.activity` \nendpoints) through `FullContactClient.verify` object. The V3 Verify API can be accessed using\nthe methods [match()](#fullcontactclientverifymatch), [signals()](#fullcontactclientverifysignals) and \n[activity()](#fullcontactclientverifyactivity), respectively. These APIs can be accessed using the async version these\nfunctions, [match_async()](#fullcontactclientverifymatch_async), [signals_async()](#fullcontactclientverifysignals_async) and\n[activity_async()](#fullcontactclientverifyactivity_async). Additional headers can be set on a per-request basis by\nsetting the parameter `headers` while calling these methods.     \nBeing a request level parameter, this can be used to override any header that has been set on the client level.\n\u003e Verify API Documentation: https://docs.fullcontact.com/docs/verify-overview\n\n```python\n# Synchronous match execution\nmatch_response = fullcontact_client.verify.match(email=\"bart.lorang@fullcontact.com\")\nprint(match_response.json())\n# Output: {'email': True}\n\n# Synchronous signals execution\nsignals_response = fullcontact_client.verify.signals(email=\"marquitaross006@gmail.com\")\nprint(signals_response.json())\n'''\nOutput: \n{ 'personIds': ['L0yG2Mp8Z4TVHxJK92GAxjWsTX6lrSfMBsQKvRsy5NzKnTm6'], \n  'maids': [{'id': '0N3ZIUBF-RPCI-GO59-O29M-S3I3U0A8I9WUN', 'type': 'idfa', 'firstSeenMs': 0, 'lastSeenMs': 0, 'observations': 1, 'confidence': 1.0}], \n  'name': {'givenName': 'Marquita', 'familyName': 'Ross'}, \n  'nonIds': [{'id': '0C-83f57c786a0b_-4a39efab23731c7EBC', 'firstSeenMs': 0, 'lastSeenMs': 0, 'observations': 1, 'confidence': 1.0}], \n  'socialProfiles': {'twitterUrl': 'https://twitter.com/marqross91', 'linkedInUrl': 'https://www.linkedin.com/in/marquita-ross-5b6b72192'}, \n  'demographics': {'age': 42, 'ageRange': '40-49', 'gender': 'Female'}, \n  'employment': {'current': True, 'company': 'Mostow Co.', 'title': 'Senior Petroleum Manager'}\n}\n'''\n\n# Synchronous activity execution\nactivity_response = fullcontact_client.verify.activity(email=\"bart.lorang@fullcontact.com\")\nprint(activity_response.json())\n# Output: {'emails': 0.03}\n\n# Asynchronous match execution\nmatch_async_response = fullcontact_client.verify.match_async(email=\"bart.lorang@fullcontact.com\")\nmatch_response = match_async_response.result()\nprint(match_response.json())\n# Output: {'email': True}\n\n# Asynchronous signals execution\nsignals_async_response = fullcontact_client.verify.signals_async(email=\"marquitaross006@gmail.com\")\nsignals_response = signals_async_response.result()\nprint(signals_response.json())\n'''\nOutput: \n{ 'personIds': ['L0yG2Mp8Z4TVHxJK92GAxjWsTX6lrSfMBsQKvRsy5NzKnTm6'], \n  'maids': [{'id': '0N3ZIUBF-RPCI-GO59-O29M-S3I3U0A8I9WUN', 'type': 'idfa', 'firstSeenMs': 0, 'lastSeenMs': 0, 'observations': 1, 'confidence': 1.0}], \n  'name': {'givenName': 'Marquita', 'familyName': 'Ross'}, \n  'nonIds': [{'id': '0C-83f57c786a0b_-4a39efab23731c7EBC', 'firstSeenMs': 0, 'lastSeenMs': 0, 'observations': 1, 'confidence': 1.0}], \n  'socialProfiles': {'twitterUrl': 'https://twitter.com/marqross91', 'linkedInUrl': 'https://www.linkedin.com/in/marquita-ross-5b6b72192'}, \n  'demographics': {'age': 42, 'ageRange': '40-49', 'gender': 'Female'}, \n  'employment': {'current': True, 'company': 'Mostow Co.', 'title': 'Senior Petroleum Manager'}\n}\n'''\n\n# Asynchronous activity execution\nactivity_async_response = fullcontact_client.verify.activity_async(email=\"bart.lorang@fullcontact.com\")\nactivity_response = activity_async_response.result()\nprint(activity_response.json())\n# Output: {'emails': 0.03}\n\n```\n\n### FullContactClient.verify.match()\n\nclass: _fullcontact.api.verify_api.VerifyClient_\n\n#### Parameters:\n\n* `**query`: _kwargs_ - (required)\n* `headers`: _dict_ - [optional]\n\n`query` takes in [MultiFieldReq](#multifieldrequest).\n\n#### Returns:\n\n#### VerifyMatchResponse\n\nclass: _fullcontact.response.verify_response.MatchResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n* `get_city()`: _bool_ - city flag from Verify Match Response\n* `get_region()`: _bool_ - region flag from Verify Match Response\n* `get_country()`: _bool_ - country flag from Verify Match Response\n* `get_continent()`: _bool_ - continent flag from Verify Match Response\n* `get_postalCode()`: _bool_ - postalCode flag from Verify Match Response\n* `get_familyName()`: _bool_ - familyName flag from Verify Match Response\n* `get_givenName()`: _bool_ - givenName flag from Verify Match Response\n* `get_phone()`: _bool_ - phone flag from Verify Match Response\n* `get_maid()`: _bool_ - maid flag from Verify Match Response\n* `get_email()`: _bool_ - email flag from Verify Match Response\n* `get_social()`: _bool_ - social flag from Verify Match Response\n* `get_nonId()`: _bool_ - nonId flag from Verify Match Response\n\n### FullContactClient.verify.match_async()\n\nclass: _fullcontact.api.verify_api.VerifyClient_\n\n#### Parameters:\n\nSame as that of [FullContactClient.verify.match()](#fullcontactclientverifymatch)\n\n#### Returns:\n\n#### Future[VerifyMatchResponse]\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n#### Useful Methods:\n\n* `result()`: _VerifyMatchResponse_ - [VerifyMatchResponse](#verifymatchresponse) object received once execution is\n  completed\n* `add_done_callback(fn)`: _None_ - Add a callback function to be executed on successful execution.\n\n### FullContactClient.verify.signals()\n\nclass: _fullcontact.api.verify_api.VerifyClient_\n\n#### Parameters:\n\n* `**query`: _kwargs_ - (required)\n* `headers`: _dict_ - [optional]\n\n`query` takes in [MultiFieldReq](#multifieldrequest).\n\n#### Returns:\n\n#### VerifySignalsResponse\n\nclass: _fullcontact.response.verify_response.VerifySignalResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n* `get_personIds()`: List[str] - List of personIds from Signals response\n* `get_name()`: _dict_ - Name from Verify Signals response\n* `get_emails()`: List[_dict_] - List of email objects from Verify Signals response\n* `get_phones()`: List[_dict_] - List of phone objects from Verify Signals response\n* `get_maids()`: List[_dict_] - List of maids objects from Verify Signals response\n* `get_nonIds()`: List[_dict_] - List of nonIds objects from Verify Signals response\n* `get_panoIds()`: List[_dict_] - List of panoIds objects from Verify Signals response\n* `get_ipAddresses()`: List[_dict_] - List of ipAddress objects from Verify Signals response\n* `get_socialProfiles()`: List[str] - List of Social Profiles from Verify Signals response\n* `get_demographics()`: _dict_ - Demographics from Verify Signals response\n* `get_employment()`: _dict_ - Employment from Verify Signals response\n* `get_locations()`: List[_dict_] - List of location object from Verify Signals response\n\n### FullContactClient.verify.signals_async()\n\nclass: _fullcontact.api.verify_api.VerifyClient_\n\n#### Parameters:\n\nSame as that of [FullContactClient.verify.signals()](#fullcontactclientverifysignals)\n\n#### Returns:\n\n#### Future[VerifySignalsResponse]\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n#### Useful Methods:\n\n* `result()`: _VerifySignalsResponse_ - [VerifySignalsResponse](#verifysignalsresponse) object received once\n  execution is completed\n* `add_done_callback(fn)`: _None_ - Add a callback function to be executed on successful execution.\n\n\n### FullContactClient.verify.activity()\n\nclass: _fullcontact.api.verify_api.VerifyClient_\n\n#### Parameters:\n\n* `**query`: _kwargs_ - (required)\n* `headers`: _dict_ - [optional]\n\n`query` takes in [MultiFieldReq](#multifieldrequest).\n\n#### Returns:\n\n#### VerifyActivityResponse\n\nclass: _fullcontact.response.verify_response.VerifyActivityResponse_\n\n#### Instance variables\n\n* `is_successful`: _bool_ - Success flag\n* `response`: _requests.Response_ - Raw _requests.Response_ object\n\n#### Methods:\n\n* `json()`: _dict_ - Response JSON as dict\n* `get_message()`: _str_ - Response message or HTTP status message\n* `get_headers()`: _dict_ - Response headers\n* `get_emails()`: _float_ - email activity score from Verify Activity Response\n\n### FullContactClient.verify.activity_async()\n\nclass: _fullcontact.api.verify_api.VerifyClient_\n\n#### Parameters:\n\nSame as that of [FullContactClient.verify.activity()](#fullcontactclientverifyactivity)\n\n#### Returns:\n\n#### Future[VerifyActivityResponse]\n\nclass: _concurrent.Futures.Future_\n\u003e More on _concurrent.Futures.Future_: https://docs.python.org/3/library/concurrent.futures.html#future-objects\n\n#### Useful Methods:\n\n* `result()`: _VerifyActivityResponse_ - [VerifyActivityResponse](#verifyactivityresponse) object received once execution is\n  completed\n* `add_done_callback(fn)`: _None_ - Add a callback function to be executed on successful execution.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffullcontact%2Ffullcontact-python-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffullcontact%2Ffullcontact-python-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffullcontact%2Ffullcontact-python-client/lists"}