Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/fingerprintjs/fingerprint-pro-server-api-go-sdk/v7

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/fingerprintjs/fingerprint-pro-server-api-go-sdk/v7

  • v7.0.0
  • Source
  • Go
  • Socket score

Version published
Created
Source

Fingerprint logo

CI badge CI badge CI badge Discord server

Fingerprint Pro Server Go SDK

Fingerprint is a device intelligence platform offering 99.5% accurate visitor identification. Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device.

This Go package is automatically generated by the Swagger Codegen project:

  • API version: 3
  • Package version: 7.0.0
  • Build package: io.swagger.codegen.v3.generators.go.GoClientCodegen

Requirements

Go Lang 1.21 or higher

We keep the Go support policy and support the last two major versions of Go.

Installation & Usage

  1. Get the package from GitHub:
go get github.com/fingerprintjs/fingerprint-pro-server-api-go-sdk/v7/sdk
  1. Import and use the library:
package main

import (
	"context"
	"fmt"
	"github.com/fingerprintjs/fingerprint-pro-server-api-go-sdk/v7/sdk"
	"log"
)

func main() {
	cfg := sdk.NewConfiguration()
	client := sdk.NewAPIClient(cfg)

	// You can also use sdk.RegionUS or sdk.RegionAsia. Default one is sdk.RegionUS
	//cfg.ChangeRegion(sdk.RegionEU)

	// Configure authorization, in our case with API Key
	auth := context.WithValue(context.Background(), sdk.ContextAPIKey, sdk.APIKey{
		Key: "SECRET_API_KEY",
	})
	// Usually this data will come from your frontend app
	visitorId := "<VISITOR_ID>"
	requestId := "<REQUEST_ID>"
	opts := sdk.FingerprintApiGetVisitsOpts{
		RequestId: requestId,
	}
	visits, httpRes, err := client.FingerprintApi.GetVisits(auth, visitorId, &opts)
	fmt.Printf("%+v\n", httpRes)

	if err != nil {
		var tooManyRequestsError *sdk.TooManyRequestsError

		if errors.As(err, &tooManyRequestsError) {
			log.Fatalf("Too many requests, retry after %d seconds", tooManyRequestsError.RetryAfter())
		} else {
			// You can also use err.Model() and err.Body() to get more details about the error
			log.Printf("Error %s: %v", err.Code(), err)
			log.Fatal(err)
		}
	}

	fmt.Printf("Got response with visitorId: %s", visits.VisitorId)

	event, httpRes, err := client.FingerprintApi.GetEvent(auth, requestId)
	if err != nil {
		// You can also use err.Model() and err.Body() to get more details about the error
		log.Printf("Error %s: %v", err.Code(), err)
		log.Fatal(err)
        }

	if event.Products.Identification != nil {
		fmt.Printf("Got response with Identification: %v", event.Products.Identification)
	}
}

Note You can also check examples located in example directory. To run the examples:

cd example && FINGERPRINT_API_KEY=SECRET_API_KEY VISITOR_ID=VISITOR_ID_EXAMPLE go run getVisits.go

Alternatively, you can define your environment variables inside example/.env file and run the examples without passing them as arguments. If your subscription region is not the “Global/US” region, use REGION=eu or REGION=ap in the line above or in your local .env file.

Region

If your subscription is in region other than US, you need to change the region in the configuration:


import (
    "github.com/fingerprintjs/fingerprint-pro-server-api-go-sdk/v7/sdk"
)

func main() {
    cfg := sdk.NewConfiguration()

    cfg.ChangeRegion(sdk.RegionEU) // or sdk.RegionAsia
}

Sealed results

This SDK provides utility methods for decoding sealed results. Install the sealed results dependency as below:

go get github.com/fingerprintjs/fingerprint-pro-server-api-go-sdk/v7/sdk/sealed

Then you can use below code to unseal results:

package main

import (
	"encoding/base64"
	"fmt"
	"github.com/fingerprintjs/fingerprint-pro-server-api-go-sdk/v7/sdk/sealed"
	"os"
)

// Utility function to decode base64 string
func base64Decode(input string) []byte {
	output, err := base64.StdEncoding.DecodeString(input)
	if err != nil {
		panic(err)
	}
	return output
}

func main() {
	// Sealed result from the frontend.
	sealedResult := base64Decode(os.Getenv("BASE64_SEALED_RESULT"))
	// Base64 encoded key generated in the dashboard.
	key := base64Decode(os.Getenv("BASE64_SEALED_RESULT_KEY"))

	keys := []sealed.DecryptionKey{
		// You can provide more than one key to support key rotation. The SDK will try to decrypt the result with each key.
		{
			Key:       key,
			Algorithm: sealed.AlgorithmAES256GCM,
		},
	}
	unsealedResponse, err := sealed.UnsealEventsResponse(sealedResult, keys)

	if err != nil {
		panic(err)
	}

	// Do something with unsealed response, e.g: send it back to the frontend.
	fmt.Println(unsealedResponse)
}

Webhook signing

This SDK provides utility method for verifing the HMAC signature of the incoming webhook request. Install the webhook dependency as below:

go get github.com/fingerprintjs/fingerprint-pro-server-api-go-sdk/v7/sdk/webhook

Then you can use below code to verify signature:

package main

import (
	"github.com/fingerprintjs/fingerprint-pro-server-api-go-sdk/v7/sdk/webhook"
)

func main() {
    // Your webhook signing secret.
    secret := "secret"

    // Request data. In real life scenario this will be the body of incoming request
    data := []byte("data")

    // Value of the "fpjs-event-signature" header.
    header := "v1=1b2c16b75bd2a870c114153ccda5bcfca63314bc722fa160d690de133ccbb9db"

    isValid := webhook.IsValidWebhookSignature(header, data, secret)

    if !isValid {
        panic("Invalid signature")
    }
}

To learn more, refer to example located in example/sealedResults.go.

Documentation for API Endpoints

All URIs are relative to https://api.fpjs.io

ClassMethodHTTP requestDescription
FingerprintApiDeleteVisitorDataDelete /visitors/{visitor_id}Delete data by visitor ID
FingerprintApiGetEventGet /events/{request_id}Get event by request ID
FingerprintApiGetRelatedVisitorsGet /related-visitorsGet Related Visitors
FingerprintApiGetVisitsGet /visitors/{visitor_id}Get visits by visitor ID
FingerprintApiUpdateEventPut /events/{request_id}Update an event with a given request ID

Documentation For Models

Documentation For Authorization

ApiKeyHeader

  • Type: API key
  • API key parameter name: Auth-API-Key
  • Location: HTTP header

ApiKeyQuery

  • Type: API key
  • API key parameter name: api_key
  • Location: URL query string

Documentation for sealed results

Documentation for webhooks

Author

support@fingerprint.com

Support and feedback

To report problems, ask questions, or provide feedback, please use Issues. If you need private support, you can email us at oss-support@fingerprint.com.

License

This project is licensed under the MIT license.

FAQs

Package last updated on 21 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc