Skip to main content
Version: 1.1 (Latest)

License Management Guide

Scope​

This document describes how to generate fingerprints, install and replace licenses, and diagnose common licensing issues for the Raptor SDK and the Raptor Server.

Concepts​

  • License file
    A file distributed by Vantor that grants the right to use the SDK or server on a specific machine or set of machines. Depending on the license, different features may be enabled.
  • Fingerprint
    A device identifier generated on the target machine and sent to Vantor when requesting a license. It is represented as an opaque string; its internal structure is private and may change between versions. Treat it only as a token.

Generating a fingerprint​

C++ Raptor SDK​

To generate a fingerprint directly from the SDK, call:

  • raptor::Context::generateFingerprint()

Notes:

  • Returns std::optional<std::string>.
  • On success, the string identifies the current machine for licensing purposes.
    • The value is opaque; do not parse, modify, or validate it yourself.
    • If the SDK cannot determine a valid machine identifier on this platform, the function returns std::nullopt.

Recommended workflow

  1. Build a small provisioning tool that calls raptor::Context::generateFingerprint().
  2. Run it on the target system and capture the returned string.
  3. Provide that string to Vantor when requesting a license.
  4. Store the license file you receive at a stable location on the target system.

Raptor Server​

When using the Raptor Server, the server can expose the fingerprint through its status API:

  • The GetStatusResponse message includes a fingerprint_b64 field that, when present, contains the server's fingerprint.
  • Use this value in the same way as the C++ SDK fingerprint when requesting a license for the server.

Installing and replacing a license​

Place the license file at a stable, readable path on the target machine and point the application at it:

  • C++ SDK — set raptor::Config::licensePath before constructing raptor::Context, or set the licensePath field in the JSON consumed by raptor::parseConfigFromJson().
  • Raptor Server — set the license field in the server's deployment configuration.

To replace an existing license (renewal, added features, machine change), overwrite the file at the configured path — or update the path — and then restart the consumer:

  • C++ applications: destroy existing raptor::Context instances and construct new ones, or restart the process.
  • Raptor Server: restart the server process.

If the license was reissued for a different fingerprint, request a new license against the current machine's fingerprint first (see Generating a fingerprint).

Troubleshooting​

Initialization errors​

If you encounter an exception related to licensing, the message typically indicates the cause. Common messages and actions:

  • "License file not found or invalid path"
    • Check that the path in licensePath exists and is readable by the application.
  • "Invalid license"
    • The file is present but not a valid Raptor Guide license. Verify that the correct file was installed.
  • "Expired license"
    • The license has passed its expiration date. Request an updated license.
  • "License ApplicationId does not match Raptor Guide"
    • The license targets a different product. Install a license specifically issued for Raptor Guide.
  • Fingerprint-related messages (for example, fingerprint mismatch or invalid fingerprint data)
    • Ensure that the license was issued for the fingerprint of the current machine.
    • Regenerate the fingerprint on this machine and request a new license if necessary.

Runtime "ExpiredLicense" / "InvalidLicense" results​

If updatePose() or updatePosition() returns PoseEstimationError::ExpiredLicense, the license has passed its expiration date; request an updated license.

If they return PoseEstimationError::InvalidLicense, the license is otherwise invalid or missing a required feature; check the licensed feature set and request an updated license if needed.

For detailed integration steps and configuration examples, see: