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 operationsnetifaces-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:
LicenseCheckResponseobject containing license information and status
LicenseCheckResponse
Response object containing license validation results.
Properties
request_id(str): Unique identifier for this requeststatus(ResponseStatus): Status code indicating the resultlicense_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 licensetrial_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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bimplugins_licensing_sdk_sds2-1.0.0rc2.tar.gz.
File metadata
- Download URL: bimplugins_licensing_sdk_sds2-1.0.0rc2.tar.gz
- Upload date:
- Size: 17.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0644aad50968fe2687e6b2eb516c722fc262f00252f8918839a0528c03628163
|
|
| MD5 |
3105bc4c4d91e30609bd91ab465a8fb2
|
|
| BLAKE2b-256 |
d015211a981de1bc75edbb730afe0a95c08ac5cfb86a3bf125fc7045bf290f6d
|
File details
Details for the file bimplugins_licensing_sdk_sds2-1.0.0rc2-py3-none-any.whl.
File metadata
- Download URL: bimplugins_licensing_sdk_sds2-1.0.0rc2-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a27e31f94c7b4f626a2a0c63267308629027a5b580ed8485fe3429139c86df9d
|
|
| MD5 |
650b84395e2bc4230a7de25ee8fd469c
|
|
| BLAKE2b-256 |
3254d7dbc05b73571379234ee909a90de4058de397ac796608f7717d761e6703
|