{"id":18877066,"url":"https://github.com/fullcontact/fullcontact-go","last_synced_at":"2025-04-14T18:31:39.155Z","repository":{"id":38361040,"uuid":"277359096","full_name":"fullcontact/fullcontact-go","owner":"fullcontact","description":"Official Go Client for FullContact V3 APIs","archived":false,"fork":false,"pushed_at":"2024-05-03T17:35:25.000Z","size":201,"stargazers_count":4,"open_issues_count":4,"forks_count":5,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-03-28T07:01:54.534Z","etag":null,"topics":["client-library","enrich","fullcontact-api","golang","resolve"],"latest_commit_sha":null,"homepage":"https://www.fullcontact.com/","language":"Go","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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-05T18:19:20.000Z","updated_at":"2024-10-16T17:46:09.000Z","dependencies_parsed_at":"2022-09-26T18:21:34.096Z","dependency_job_id":"dde74cec-73d7-4c25-b988-3e4b1fb4c880","html_url":"https://github.com/fullcontact/fullcontact-go","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullcontact%2Ffullcontact-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullcontact%2Ffullcontact-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullcontact%2Ffullcontact-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fullcontact%2Ffullcontact-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fullcontact","download_url":"https://codeload.github.com/fullcontact/fullcontact-go/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","enrich","fullcontact-api","golang","resolve"],"created_at":"2024-11-08T06:16:42.877Z","updated_at":"2025-04-14T18:31:38.639Z","avatar_url":"https://github.com/fullcontact.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## FullContact Go Client\n[![GoDoc](https://godoc.org/github.com/fullcontact/fullcontact-go/fc?status.svg)](https://godoc.org/github.com/fullcontact/fullcontact-go/fc)\n\n![status](https://github.com/fullcontact/fullcontact-go/actions/workflows/go.yml/badge.svg)\n\nThe official [FullContact](https://www.fullcontact.com/) Golang Client Library for the FullContact V3 APIs.\n\n## Table of contents\n - [Installation](#installation)\n - [Working With FullContact Client](#working-with-fullcontact-client)\n    - [Overview](#quick-overview)\n    - [Supported APIs](#supported-apis)\n- [Authentication](#providing-authentication-to-fullcontact-client)\n- [Making FullContact Client](#making-a-fullcontact-client)\n    - [Retry Handler](#retryhandler)\n- [MultiFieldRequest](#multifieldrequest)\n- [Enrich](#enrich)\n    - [Person Enrich](#making-a-person-enrich-request)\n    - [Company Enrich](#company-enrich-request-and-response)\n- [Resolve](#resolve)\n    - [Resolve Request](#resolve-request)\n    - [Resolve Response](#resolve-response)\n- [Tags](#tagsmetadata)\n    - [Tags Create](#creating-tags)\n    - [Tags Get](#get-tags)\n    - [Tags Delete](#delete-tags)\n- [Audience](#audience)\n    - [Audience Create](#audience-create)\n    - [Audience Download](#audience-download)\n- [Permission](#permission)\n    - [Permission Create](#permission-create)\n    - [Permission Verify](#permission-verify)\n    - [Permission Delete](#permission-delete)\n    - [Permission Find](#permission-find)\n    - [Permission Current](#permission-current)\n- [Verify](#verify)\n    - [Verify Activity](#verify-activity)\n    - [Verify Match](#verify-match)\n    - [Verify Signals](#verify-signals)\n\n## Installation\n\nTo install FullContact Go client, use `go get`:\n```sh\ngo get github.com/fullcontact/fullcontact-go/fc\n```\n\nThen, reference fullcontact-go in a Go program with `import`:\n\n``` go\nimport fc \"github.com/fullcontact/fullcontact-go/fc\"\n```\n\nTo update FullContact Go client to the latest version use:\n```sh\ngo get -u github.com/fullcontact/fullcontact-go/fc\n```\n\n## Working with FullContact Client\nFullContact client supports v3 Enrich and Resolve APIs which are super simplified to easily \nenrich Person and Company data and Resolve fragmented customer data. All the API requests are over HTTPS \nusing POST method with content sent as JSON. This library supports Multi Field Request, \nPerson Enrichment \u0026 Data Packs, Company Enrichment \u0026 Data Packs and Webhooks. Just build a FullContact \nClient with your API Key, make a enrich request and get a response object back.\n\n### Quick Overview\nIf you are not familiar with the Enrich API, complete details can be found \n@[API documentation](https://platform.fullcontact.com/docs/apis/enrich/introduction) \n\n\nFullContact Client provides an object layer to FullContact API communication, \nbut understanding Enrich API, webhooks, request and response parameters, \nand common snags is still important.\n\nOnce you’re on board with the API behavior, FullContact Client library should simplify \nyour integration.\n\n### Supported APIs\n- _[Enrich](https://docs.fullcontact.com/docs/enrich-overview)_\n    - `person.enrich`\n    - `company.enrich`\n\n- Private Identity Cloud\n    - _[Resolve](https://docs.fullcontact.com/docs/resolve-overview)_\n        - `identity.map`\n        - `identity.resolve`\n        - `identity.mapResolve`\n        - `identity.delete`\n    - [Tags](https://docs.fullcontact.com/docs/customer-tags)\n        - `tags.create`\n        - `tags.get`\n        - `tags.delete`\n    - [Audience](https://docs.fullcontact.com/docs/customer-tags#audience-tags)\n        - `audience.create`\n        - `audience.download`\n\n- _[Permission](https://docs.fullcontact.com/docs/permission-overview)_\n    - `permission.create`\n    - `permission.delete`\n    - `permission.find`\n    - `permission.current`\n    - `permission.verify`\n\n- _[Verify](https://docs.fullcontact.com/docs/verify-overview)_\n    - `verify.activity`\n    - `verify.match`\n    - `verify.signals`\n## Providing Authentication to FullContact Client\nFullContact client uses ```CredentialsProvider``` interface for Authentication. Different ways \nto provide authentication:\n\n- __Static API Key provider__: \n```go\ncp, err := fc.NewStaticCredentialsProvider(\"your-api-key\")\n```\n- __Through System Environment Variable__:\n```go\n//API Key is stored as Environment variable FC_API_KEY\ncp, err := fc.NewDefaultCredentialsProvider(\"FC_API_KEY\")\n```\n- If __no__ ```CredentialsProvider``` is specified while making FullContact Client,\nit automatically looks for API key from Environment variable `\"FC_API_KEY\"`\n\n(Don't have an API key? You can pick one up for free [right here.](https://www.fullcontact.com/developer-portal/))\n\n## Making a FullContact Client\nMake your fcClient with:\n\n| Parameters | Description | Default value | isOptional |\n| ---------------- | ----------- | ------------- | ---------- |\n| `WithCredentialsProvider`| Used for Authentication | API Key through Environment variable```\"FC_API_KEY\"``` | No | \n| `WithHeaders` | Any Custom Headers you want to add with every request, can include `Reporting-Key` as well. | No additional header | Yes |\n| `WithTimeout` | Connection timeout in millis for request | 3000ms | Yes |\n| `WithRetryHandler` | type RetryHandler  | `DefaultRetryHandler` | Yes |\n\n \n__Please note that you don't have to provide `Authorization` and `Content-Type` in the \ncustom Headers map as these will be automatically added.__ \nCustom headers provided will remain same and will be sent with every request made with this client. \nIf you wish to change the headers, make a new client with new custom headers.\n\n### RetryHandler\n```go\ntype RetryHandler interface {\n\tShouldRetry(responseCode int) bool\n\tRetryAttempts() int\n\tRetryDelayMillis() int\n}\n```\nIn case of failure, FullContact Client will auto-retry for same request based on certain conditions set in RetryHandler\n- Although optional, a custom Retry handler can be created by implementing `RetryHandler` interface and then be \nused to make FC client. \nBy default, client will use `DefaultRetryHandler` to schedule a retry for same request, with `retryAttempts = 1`, \n`retryDelayMillis = 1000`, and in case of `429`(rate limit error) or `503`(capacity limit error).\n\n- This Client will auto-retry for a maximum of 5 times, even if higher value \nis set in the custom Retry Handler.\n\n```go\nfcClient, err := fc.NewFullContactClient(\n\t\tfc.WithCredentialsProvider(cp),\n\t\tfc.WithHeader(map[string]string{\"Reporting-Key\": \"FC_GoClient_1.0.0\"}),\n\t\tfc.WithTimeout(3000))\n```\n## MultiFieldRequest\nMultiFieldReqiest provides the ability to match on one or many input fields. The more contact data inputs you can provide, the better. By providing more contact inputs, the more accurate and precise we can get with our identity resolution capabilities.\n\nSeveral of FullContact Apis requires `MultifieldRequest` requests, which can be constructed by using `NewMultifieldRequest` and following are it's parameters.\n\n- `Emails`: _[]string_\n- `Phones`: _[]string_\n- `Location`: _*Location_\n    - `AddressLine1`: _string_\n    - `AddressLine2`: _string_\n    - `City`: _string_\n    - `Region`: _string_\n    - `RegionCode`: _string_\n    - `PostalCode`: _string_\n- `Name`: _*PersonName_\n    - `Full`: _string_\n    - `Given`: _string_\n    - `Family`: _string_\n- `Profiles`: _[]*Profile_\n    - `Service`: _string_\n    - `Username`: _string_\n    - `Userid`: _string_\n    - `Url`: _string_\n- `Maids`: _[]string_\n- `RecordId`: _string_\n- `PersonId`: _string_\n- `LiNonId`: _string_\n- `PartnerId`: _string_\n- `Placekey`: _string_\n- `PanoramaId`:_string_\n\n```go\nmultifieldRequest, err := fc.NewMultifieldRequest(\n\t\tfc.WithEmailForMultifieldRequest(\"bart@fullcontact.com\"))\npermissionRequest, err := fc.NewPermissionRequest(\n\t\tfc.WithMultifieldRequestForPermission(multifieldRequest))\n```\n\n## Enrich\n[Enrich API Reference](https://platform.fullcontact.com/docs/apis/enrich/introduction)\n- `person.enrich`\n- `company.enrich`\n#### Making a Person Enrich Request\nOur V3 Person Enrich supports __Multi Field Request:__ ability to match on __one or many__ input fields\n\nYou can build a Person Request using `NewPersonRequest`\nand setting different input parameters that you have. If you want to use Webhook, you can specify\nit in `webhookUrl` field.\nAPI can lookup and enrich individuals by sending any identifiers you may already have, \nsuch as: \n\n- `Emails`: _[]string_\n- `Phones`: _[]string_\n- `Location`: _*Location_\n    - `AddressLine1`: _string_\n    - `AddressLine2`: _string_\n    - `City`: _string_\n    - `Region`: _string_\n    - `RegionCode`: _string_\n    - `PostalCode`: _string_\n- `Name`: _*PersonName_\n    - `Full`: _string_\n    - `Given`: _string_\n    - `Family`: _string_\n- `Profiles`: _[]*Profile_\n    - `Service`: _string_\n    - `Username`: _string_\n    - `Userid`: _string_\n    - `Url`: _string_\n- `DataFilters`: _[]string_\n- `Maids`: _[]string_\n- `Confidence`: _string_\n- `Infer`: _bool_\n- `WebhookUrl`: _string_\n- `RecordId`: _string_\n- `PersonId`: _string_\n- `LiNonId`: _string_\n- `PartnerId`: _string_\n- `Placekey`: _string_\n- `MaxMaids`: _int_\n- `PanoramaId`:_string_\n\n\n```go\nprofile, err := fc.NewProfile(\n\t\tfc.WithUsername(\"bartlorang\"),\n\t\tfc.WithService(\"twitter\"))\nif err != nil {\n    log.Fatalln(err)\n    return\n}\npersonRequest, err := fc.NewPersonRequest(\n    fc.WithEmail(\"bart@fullcontact.com\"),\n    fc.WithEmail(\"bart.lorang@fullcontact.com\"),\n    fc.WithName(\u0026fc.PersonName{Full:\"Bart Lorang\",}),\n    fc.WithLocation(fc.NewLocation(\n        fc.WithAddressLine1(\"123 Main street\"),\n        fc.WithAddressLine1(\"Unit2\"),\n        fc.WithCity(\"Denver\"),\n        fc.WithRegionForLocation(\"Colorado\"))),\n    fc.WithProfile(profile),\n    fc.WithWebhookUrl(\"\"),\n    fc.WithRecordId(\"customer123\"),\n    fc.WithPersonId(\"eYxWc0B-dKRxerTw_uQpxCssM_GyPaLErj0Eu3y2FrU6py1J\"))\n```\n#### Person Enrich Request and Response\nYou can send a request by calling `PersonEnrich` on fcClient and passing `personRequest` \nas a argument. It sends a Asynchronous request and a `channel` of type `APIResponse` \nis returned as response. You can then `receive` response from this channel.\nThere is a flag ```isSuccessful``` on `APIResponse` to check \nif the request was successful or not. If the request was unsuccessful, you can check the status code \nand message to determine the cause. \n```go\n//Sending Person Enrich request which returns a channel of type `APIResponse`\nch := fcClient.PersonEnrich(personRequest)\nresp := \u003c-ch\nfmt.Printf(\"Person Enrich API Response: %v\", resp)\nif resp.IsSuccessful == true {\n    fmt.Printf(\"Person Response: %v\", *resp.PersonResponse)\n    fmt.Println(resp.PersonResponse.FullName)\n}\n```\n\n#### Company Enrich Request and Response\nTo Enrich Company data FullContact library provides the method __Lookup by Company Domain__. \nAll available details of the company is available through the Lookup by Company Domain.\n\n##### Lookup by Company Domain\n- Request:\n```go\ncompanyEnrichRequest, err := fc.NewCompanyRequest(fc.WithDomain(\"fullcontact.com\"))\nif err != nil {\n    log.Fatalln(err)\n    return\n}\n```\n- Response:\n```go\nresp := \u003c-fcClient.CompanyEnrich(companyEnrichRequest)\nfmt.Printf(\"Company Enrich API Response: %v\", resp)\nif resp.IsSuccessful {\n    fmt.Printf(\"Company Name: %v\", resp.CompanyResponse.Name)\n}\n```\n\n## Resolve\n[Resolve API Reference](https://platform.fullcontact.com/docs/apis/resolve/introduction)\n- `identity.map`\n- `identity.resolve`\n- `identity.delete`\n- `identity.mapResolve`\n#### Resolve Request\nResolve uses `ResolveRequest` type for its request which supports\n __Multi Field Request:__ ability to match on __one or many__ input fields\n\nYou can build a Resolve Request by using `NewResolveRequest`\nand setting different input parameters that you have.\n\nNote: For `identity.map` and `identity.mapResolve` any of `email`, `phone`, `profile`, `name \u0026 location` \nmust be present.\n \nAPI can lookup and resolve individuals by sending any identifiers you may already have, \nsuch as: \n\n- `Emails`: _[]string_\n- `Phones`: _[]string_\n- `Location`: _*Location_\n    - `AddressLine1`: _string_\n    - `AddressLine2`: _string_\n    - `City`: _string_\n    - `Region`: _string_\n    - `RegionCode`: _string_\n    - `PostalCode`: _string_\n- `Name`: _*PersonName_\n    - `Full`: _string_\n    - `Given`: _string_\n    - `Family`: _string_\n- `Profiles`: _[]*Profile_\n    - `Service`: _string_\n    - `Username`: _string_\n    - `Userid`: _string_\n    - `Url`: _string_\n- `Maids`: _[]string_\n- `Tags`: _[]*Tag_\n- `RecordId`: _string_\n- `PersonId`: _string_\n- `LiNonId`: _string_\n- `PartnerId`: _string_\n- `Placekey`: _string_\n- `PanoramaId`:_string_\n- `GeneratePid`:_bool_\n\n```go\nresolveRequest, err := fc.NewResolveRequest(\n\t\tfc.WithRecordIdForResolve(\"r1\"),\n\t\tfc.WithEmailForResolve(\"bart@fullcontact.com\"))\n```\n\n#### Resolve Response\nAll resolve methods returns a `channel` of type `APIResponse` from which you can get `ResolveResponse`\n\n```go\nresp := \u003c-fcClient.IdentityMap(resolveRequest)\nfmt.Printf(\"Identity Map API Response: %v\", resp)\nif resp.IsSuccessful {\n    fmt.Printf(\"RecordIds Mapped: %v\", resp.ResolveResponse.RecordIds)\n}\nresp = \u003c-fcClient.IdentityResolve(resolveRequest)\nfmt.Printf(\"Identity Resolve API Response: %v\", resp)\nif resp.IsSuccessful {\n    fmt.Printf(\"PersonIds Mapped: %v\", resp.ResolveResponse.PersonIds)\n}\n\nresp = \u003c-fcClient.IdentityMapResolve(resolveRequest)\nfmt.Printf(\"Identity Map Resolve API Response: %v\", resp)\nif resp.IsSuccessful {\n    fmt.Printf(\"PersonIds Mapped: %v\", resp.ResolveResponse.PersonIds)\n}\n\nresp = \u003c-fcClient.IdentityDelete(resolveRequest)\nfmt.Printf(\"Identity Delete API Response: %v\", resp)\nif resp.IsSuccessful {\n    fmt.Println(\"Record Deleted Successfully!\")\n}\n```\n\n### Tags/Metadata\n\n[Tags API Reference](https://platform.fullcontact.com/docs/apis/resolve/customer-tags)\n- `tags.create`\n- `tags.get`\n- `tags.delete`\n\nFullContact provides the ability to store customer tags/metadata to each record within a customer's Private Identity \nCloud for continuous updates, retrievals and deletes across both 1st party as well as 2nd party data partnerships.\n\n#### Creating Tags\nTags can be added while mapping records using `identity.map` API or later using `tags.create` API. \nOnce a Customer Record ID has been mapped, customer tags can continue to be added to the originally provided Record ID\n\n##### Tags Request\n- Request Parameters:\n    - `RecordId`: _string_\n    - `Tags`: _[]*Tag_\n        - `Key`: _string_\n        - `Value`: _string_\n       \n```go\ntagsRequest, err := fc.NewTagsRequest(fc.WithRecordIdForTags(\"k1\"),\n\t\tfc.WithTag(fc.NewTag(fc.WithTagKey(\"gender\"), fc.WithTagValue(\"male\"))))\nif err != nil {\n\t\tlog.Fatalln(err)\n\t\treturn\n\t}\n\n// Sending Request\nresp := \u003c-fcClient.TagsCreate(tagsRequest)\nfmt.Printf(\"\\n\\nTags Create API Response: %v\", resp.TagsResponse)\n```\n\n#### Get Tags\nThis will return all customer tags that are associated to a mapped record using `recordId`.\n\n```java\nresp := \u003c-fcClient.TagsGet(\"recordId\")\n\tfmt.Printf(\"\\n\\nTags Get API Response: %v\", resp.TagsResponse)\n```\n\n#### Delete Tags\nThis will remove specific or all customer tags that are attached to a mapped record.\n\n```go\ntagsRequest, err := fc.NewTagsRequest(fc.WithRecordIdForTags(\"k1\"),\n\t\tfc.WithTag(fc.NewTag(fc.WithTagKey(\"gender\"), fc.WithTagValue(\"male\"))))\nif err != nil {\n\t\tlog.Fatalln(err)\n\t\treturn\n\t}\n\n// Sending Request\nresp := \u003c-fcClient.TagsDelete(tagsRequest)\n\tfmt.Printf(\"\\n\\nTags Delete API Response: %v\", resp.Status)\n```\n\n### Audience\n- `audience.create`\n- `audience.download`\n\nThis endpoint can be used in order to obtain multiple individuals based upon the key, value \ntag inputs (both are required as input) in order to suppress or take action upon certain audiences \nfor data onboarding or audience analysis.\n\n#### Audience Create\nThe Audience Creation endpoint requires a at least one `Tag` and valid `webhookURL` to be present in order to \nsend a message when the audience creation is complete and ready to be downloaded.\n\n```go\naudienceRequest, err := fc.NewAudienceRequest(fc.WithWebhookUrlForAudience(\"your-webhookUrl\"),\n\t\tfc.WithTagForAudience(fc.NewTag(fc.WithTagKey(\"gender\"), fc.WithTagValue(\"male\"))))\nif err != nil {\n    log.Fatalln(err)\n    return\n}\n\nresp := \u003c-fcClient.AudienceCreate(audienceRequest)\nfmt.Printf(\"\\n\\nAudience Create API Response: %v\", resp.AudienceResponse)\nif resp.IsSuccessful {\n    fmt.Println(resp.AudienceResponse.RequestId)\n}\n```\n\n#### Audience Download\nWhen `audience.create` result is ready, `requestId` from its response can be used to download the audience data.\nA utility method is provided `WriteAudienceBytesToFile(fileName string)` which generates a file in `json.gz` format\nwith audience data bytes.\n```go\nrequestId := \"730000fd-009a-00fc-8008-100e000085f0\"  //From the response of 'AudienceCreate'\nresp := \u003c-fcClient.AudienceDownload(requestId)\nfmt.Printf(\"\\n\\nAudience Download API Response: %v\", resp.AudienceResponse)\nif resp.IsSuccessful {\n    resp.AudienceResponse.WriteAudienceBytesToFile(requestId + \"_audienceFile.json.gz\")\n}\n```\n\n## Permission\n[Permission API Reference](https://platform.fullcontact.com/docs/apis/permission/introduction)\n- `permission.create`\n- `permission.delete`\n- `permission.find`\n- `permission.current`\n- `permission.verify`\n\n#### Permission Request\nPermission uses the following type of parameters for it's requests\n\n`PermissionRequest` for\n- `permission.create`\n- `permission.verify`\n\nand `MultifieldRequest` for\n- `permission.delete`\n- `permission.find`\n- `permission.current`\n\nYou can build a Permission Request by using `NewPermissionRequest`\nand setting different input parameters that you have.\n \n### Permission Request\nAll permission methods returns a `channel` of type `APIResponse` from which you can get corresponding response classes.\n\nThe following are the corresponding response classes\n- `PermissionCreatedResponse` - permission.create\n- `PermissionDeleteResponse` - permission.delete\n- `PermissionVerifyResponse` - permission.verify\n- `PermissionFindResponse` - permission.find\n- `PermissionCurrentResponse` - permission.current\n\n`PermissionCreate` and `PermissionVerify` requires a `ResolveRequest` as parameter while the rest requires `MultifieldRequest` as parameter\n\n### Permission Create\n\n#### Parameters:\nSupported fields in query:\n- `query`: MultifieldRequest - [required]\n- `consentPurposes`: List[ConsentPurposes] - [required]\n- `locale`: string\n- `ipAddress`: string\n- `language`: string\n- `collectionMethod`: string - [required]\n- `collectionLocation`: string - [required]\n- `policyUrl`: string - [required]\n- `termsService`: string - [required]\n- `tcf`: string\n- `timestamp`: int\n\n#### Returns:\nclass: `PermissionCreateResponse`. A basic API response with response code as 202 if successful.\n\n### Permission Verify\n#### Parameters:\nSupported fields in query:\n- `query`: MultifieldRequest - [required]\n- `purposeId`: int - [required]\n- `channel`: string - [required]\n\n#### Returns:\nclass: `PermissionVerifyResponse` with following fields.\n\n- `ttl`: string\n- `enabled`: bool\n- `channel`: string\n- `purposeId`: int\n- `purposeName`: string\n- `timestamp`: int\n\n### Permission Delete\n#### Parameters:\nQuery takes a `MultifieldRequest`\n\n#### Returns:\nclass: `PermissionDeleteResponse`. A basic API response with response code as 202 if successful.\n\n### Permission Find\n#### Parameters:\nQuery takes a `MultifieldRequest`\n\n#### Returns:\nclass: `PermissionFindResponse` with list of Permissions.\n\n### Permission Current\n#### Parameters:\nQuery takes a `MultifieldRequest`\n\n#### Returns:\nclass: `PermissionCurrentResponse` with set of current permissions\n\n```go\nresp := \u003c-fcClient.PermissionCreate(permissionRequest)\nfmt.Printf(\"Permission Create API Response: %v\", resp)\nif resp.IsSuccessful {\n    fmt.Println(\"Permission Created Successfully!\")\n}\nresp = \u003c-fcClient.PermissionVerify(permissionRequest)\nfmt.Printf(\"Permission Verify API Response: %v\", resp)\nif resp.IsSuccessful {\n    fmt.Printf(\"Permissions List: %v\", resp.PermissionVerifyResponse)\n}\n\nresp = \u003c-fcClient.PermissionDelete(multifieldRequest)\nfmt.Printf(\"Permission Delete API Response: %v\", resp)\nif resp.IsSuccessful {\n    fmt.Println(\"Permission Deleted Successfully!\")\n}\n\nresp = \u003c-fcClient.PermissionFind(multifieldRequest)\nfmt.Printf(\"Permission Find API Response: %v\", resp)\nif resp.IsSuccessful {\n    fmt.Printf(\"Permission Find: %v\", resp.PermissionFindResponse)\n}\n\nresp = \u003c-fcClient.PermissionCurrent(multifieldRequest)\nfmt.Printf(\"Permission Current API Response: %v\", resp)\nif resp.IsSuccessful {\n    fmt.Printf(\"Permission Current: %v\", resp.PermissionCurrentResponse)\n}\n```\n\n## Verify\n[Verify API Reference](hhttps://docs.fullcontact.com/reference/activity)\n- `verify.activity`\n- `verify.match`\n- `verify.signals`\n\n### Verify Request\nVerify accepts a `MultifieldRequest` as its input for\n\n- `verify.activity`\n- `verify.match`\n- `verify.signals`\n\nAll verify api methods returns a `channel` of type `APIResponse` from which you can get corresponding response classes.\n\nThe following are the corresponding response classes\n- `VerifyActivityResponse` - verify.activity\n- `VerifyMatchResponse` - verify.match\n- `VerifySignalsResponse` - verify.signals\n\n### Verify Activity\n#### Parameters:\nQuery takes a `MultifieldRequest`\n\n#### Returns:\nclass: `VerifyActivityResponse`. A basic API response with response code as 200 if successful with the following fields\n\n- `Emails`: _float64_\n- `Online`: _float64_\n- `Social`: _float64_\n- `Employment`: _float64_\n\nIf person can be identified then, the `Emails`, `Online`, `Social`, `Employment` field will contain the verify score.\n\n```go\n    multifieldRequest, err := fc.NewMultifieldRequest(\n\t\tfc.WithEmailForMultifieldRequest(\"bart@fullcontact.com\"))\n        \n    resp = \u003c-fcClient.VerifyActivity(multifieldRequest)\n\tif resp.IsSuccessful == true {\n\t\tfmt.Printf(\"Verify Activity API Response: %v\", resp)\n\t}\n```\n\n### Verify Match\n#### Parameters:\nQuery takes a `MultifieldRequest`\n\n#### Returns:\nclass: `VerifyMatchResponse`. A basic API response with response code as 200 if successful with the following fields\n\n- `City`: _bool_\n- `Region`: _bool_\n- `Country`: _bool_\n- `PostalCode`: _bool_\n- `FamilyName`: _bool_\n- `GivenName`: _bool_\n- `Phone`: _bool_\n- `Email`: _bool_\n- `Risk`: _float64_\n\n```go\n    multifieldRequest, err := fc.NewMultifieldRequest(\n\t\tfc.WithEmailForMultifieldRequest(\"bart@fullcontact.com\"))\n\n    resp = \u003c-fcClient.VerifyMatch(multifieldRequest)\n\tif resp.IsSuccessful == true {\n\t\tfmt.Printf(\"Verify Match API Response: %v\", resp)\n\t}\n```\n\n### Verify Signals\n#### Parameters:\nQuery takes a `MultifieldRequest`\n\n#### Returns:\nclass: `VerifySignalsResponse`. A basic API response with response code as 200 if successful with the following fields\n\n- `Emails`: _[]VerifiedEmail_\n    - `Md5` : _string_\n    - `Sha1` : _string_\n    - `Sha256` : _string_\n    - `FirstSeenMs` : _int64_\n    - `LastSeenMs` : _int64_\n    - `Observations` : _int_\n    - `Confidence` : _float64_\n- `PersonIds`: _[]string_\n- `Phones`: _[]VerifiedPhone_\n    - `Label`: _string_\n    - `Type`: _string_\n    - `FirstSeenMs` : _int64_\n    - `LastSeenMs` : _int64_\n    - `Observations` : _int_\n    - `Confidence` : _float64_\n- `Maids`: _[]VerifiedIdentifier_\n    - `Id` : _string_\n    - `Type` : _string_\n    - `FirstSeenMs` : _int64_\n    - `LastSeenMs` : _int64_\n    - `Observations` : _int_\n    - `Confidence` : _float64_\n- `Name`: _VerifiedName_\n    - `GivenName` : _string_\n    - `FamilyName` : _string_\n- `PanoIds`: _[]PanoIds_\n    - `Id` : _string_\n    - `FirstSeenMs` : _int64_\n    - `LastSeenMs` : _int64_\n    - `Observations` : _int_\n    - `Confidence` : _float64_\n- `NonIds`: _[]NonIds_\n    - `Id` : _string_\n    - `FirstSeenMs` : _int64_\n    - `LastSeenMs` : _int64_\n    - `Observations` : _int_\n    - `Confidence` : _float64_\n- `IpAddresses`: _[]IpAddresses_\n    - `Id` : _string_\n    - `FirstSeenMs` : _int64_\n    - `LastSeenMs` : _int64_\n    - `Confidence` : _float64_\n- `SocialProfiles`: _VerifiedSocialProfile_\n    - `TwitterUrl` : _string_\n    - `LinkedInUrl` : _string_\n- `Demographics`: _VerifiedDemographics_\n    - `Age` : _int_\n    - `AgeRange` : _string_\n    - `Gender` : _string_\n    - `LocationFormatted` : _string_\n- `Employment`: _VerifiedEmployment_\n    - `Current` : _bool_\n    - `Company` : _string_\n    - `Title` : _string_\n- `Message`: _string_\n\n```go\n    multifieldRequest, err := fc.NewMultifieldRequest(\n\t\tfc.WithEmailForMultifieldRequest(\"bart@fullcontact.com\"))\n\n    resp = \u003c-fcClient.VerifySignals(multifieldRequest)\n\tif resp.IsSuccessful == true {\n\t\tfmt.Printf(\"Verify Signals API Response: %v\", resp)\n\t}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffullcontact%2Ffullcontact-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffullcontact%2Ffullcontact-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffullcontact%2Ffullcontact-go/lists"}