Skip to main content

License validation SDK for Bim Plugins applications via local license server

Project description

BimPlugins Licensing SDK

A secure Python SDK for validating licenses with the BIM Plugins Local License Server.

Overview

The BimPlugins Licensing SDK provides a simple interface for applications to check license validity through a local license server. The SDK handles secure communication via Windows named pipes, including cryptographic handshake and AES-256 encryption.

Requirements

  • Python: 3.10 or higher
  • Operating System: Windows only (uses Windows named pipes and registry)
  • Dependencies:
    • pycryptodome - Cryptographic operations
    • netifaces-plus - Network interface information

Installation

Install via pip:

pip install bimplugins-licensing-sdk-sds2

Quick Start

from bimplugins.LicenseManager import LicenseManager
from bimplugins.Models import ResponseStatus

# Check license for your application
response = LicenseManager.CheckForLicense("your-application-id")

# Check the response status
if response.status == ResponseStatus.Success:
    print(f"License valid until: {response.license_expires_at}")
elif response.status == ResponseStatus.Expiring:
    print(f"License is expiring soon! Expires: {response.license_expires_at}")
else:
    print(f"License check failed: {response.error_message} \t status: {response.status}")

API Reference

LicenseManager

The main entry point for license validation.

Methods

CheckForLicense(application_id: str) -> LicenseCheckResponse

Checks for a valid license for the specified application ID.

  • Parameters:

    • application_id (str): The ID of the application to check
  • Returns: LicenseCheckResponse object containing license information and status

LicenseCheckResponse

Response object containing license validation results.

Properties

  • request_id (str): Unique identifier for this request
  • status (ResponseStatus): Status code indicating the result
  • license_expires_at (datetime): Expiration date/time of the license (if valid)
  • error_message (str): Error description (if applicable)
  • is_trial (bool): Whether this is a trial license
  • trial_ends_at (datetime | None): Trial expiration date (if trial license)

ResponseStatus Enum

Status Value Description
Success 200 License is valid and active
Expiring 201 License is valid but expiring within 7 days
BadRequest 400 Invalid request format
LicenseExpired 401 License has expired
LicenseNotFound 404 No license found for application
InternalError 500 Internal server error
LicenseNotAssigned 503 License exists but not assigned
ServerNotAvailable 504 License server is not running
CheckoutExpired 505 License checkout has expired
TrialExpired 506 Trial license has expired

LicenseCheckRequest

Request object for license validation (typically used internally).

Properties

  • request_id (str): Unique identifier (auto-generated)
  • request_time (datetime): Request timestamp (auto-generated)
  • application_id (str): The application ID to validate

Error Handling

The SDK communicates with a local license server via named pipe. Common failure scenarios:

from bimplugins.LicenseManager import LicenseManager
from bimplugins.Models import ResponseStatus

response = LicenseManager.CheckForLicense("my-app-id")

if response.status == ResponseStatus.ServerNotAvailable:
    print("License server is not running. Please start the BIM Plugins Local License Server.")
elif response.status == ResponseStatus.LicenseNotFound:
    print("No license found for this application.")
elif response.status == ResponseStatus.LicenseExpired:
    print("Your license has expired. Please renew your subscription.")
elif response.status == ResponseStatus.TrialExpired:
    print(f"Your trial has ended (expired {response.trial_ends_at}). Please purchase a license.")
elif response.status == ResponseStatus.CheckoutExpired:
    print("License checkout has expired. Please reconnect to the license server.")
elif response.status == ResponseStatus.Expiring:
    print(f"License valid but expiring soon on {response.license_expires_at}.")
    if response.is_trial:
        print(f"Trial ends: {response.trial_ends_at}")
elif response.status == ResponseStatus.Success:
    print("License validated successfully!")

Platform Requirements

This SDK is designed exclusively for Windows platforms and requires:

  • The BIM Plugins Local License Server to be installed and running
  • Valid Windows registry entries for machine identification
  • Named pipe access (\\.\pipe\BimPlugins)

Security

All communications between the SDK and the local license server are encrypted using AES-256-CBC encryption with a machine-specific key derivation. The SDK source code is obfuscated to protect the licensing implementation.

Support

For support, documentation, or to purchase licenses, visit https://bim-plugins.com

License

Proprietary License - Copyright © 2026 BIM Plugins. All rights reserved.

You may use this SDK to build and distribute applications, but you may NOT modify or redistribute the SDK itself. See the LICENSE file for complete terms and conditions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bimplugins_licensing_sdk_sds2-1.0.0rc2.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file bimplugins_licensing_sdk_sds2-1.0.0rc2.tar.gz.

File metadata

File hashes

Hashes for bimplugins_licensing_sdk_sds2-1.0.0rc2.tar.gz
Algorithm Hash digest
SHA256 0644aad50968fe2687e6b2eb516c722fc262f00252f8918839a0528c03628163
MD5 3105bc4c4d91e30609bd91ab465a8fb2
BLAKE2b-256 d015211a981de1bc75edbb730afe0a95c08ac5cfb86a3bf125fc7045bf290f6d

See more details on using hashes here.

File details

Details for the file bimplugins_licensing_sdk_sds2-1.0.0rc2-py3-none-any.whl.

File metadata

File hashes

Hashes for bimplugins_licensing_sdk_sds2-1.0.0rc2-py3-none-any.whl
Algorithm Hash digest
SHA256 a27e31f94c7b4f626a2a0c63267308629027a5b580ed8485fe3429139c86df9d
MD5 650b84395e2bc4230a7de25ee8fd469c
BLAKE2b-256 3254d7dbc05b73571379234ee909a90de4058de397ac796608f7717d761e6703

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page