amay-key-vault-sdk


Nameamay-key-vault-sdk JSON
Version 1.0.2 PyPI version JSON
download
home_pagehttps://github.com/amaykorade/key-vault
SummaryPython SDK for accessing Key Vault API keys and values
upload_time2025-08-06 19:12:13
maintainerNone
docs_urlNone
authorAmay Korade
requires_python>=3.7
licenseNone
keywords keyvault sdk secrets api vault python
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Key Vault Python SDK

A Python SDK for securely accessing your Key Vault API keys and secrets.

## Installation

```bash
pip install amay-key-vault-sdk
```

## Quick Start

```python
from key_vault_sdk import KeyVault

# Initialize the SDK
kv = KeyVault(
    api_url="https://yourdomain.com/api",
    token="your-api-token"
)

# Get a key by name
api_key = kv.get_key_by_name("folder-id", "stripe-secret-key")
print(f"API Key: {api_key}")

# List all keys in a folder
result = kv.list_keys(folder_id="folder-id", limit=50)
print(f"Found {len(result['keys'])} keys")

# Get multiple keys at once
keys = kv.get_multiple_keys(
    folder_id="folder-id",
    key_names=["stripe-key", "database-password", "api-secret"]
)
print(f"Retrieved {len(keys)} keys")
```

## Features

- 🔐 **Secure Access**: All keys are encrypted and securely transmitted
- 📁 **Folder Support**: Organize keys in hierarchical folders
- 🔍 **Search & Filter**: Find keys by name, type, or tags
- 📊 **Statistics**: Get usage statistics and folder information
- 🔄 **Auto Refresh**: Automatic token refresh handling
- 🛡️ **Error Handling**: Comprehensive error handling with specific exceptions

## API Reference

### Authentication

```python
from key_vault_sdk import KeyVault

kv = KeyVault(
    api_url="https://yourdomain.com/api",
    token="your-api-token",
    timeout=30  # Optional: request timeout in seconds
)
```

### Key Operations

#### Get Key by Name
```python
# Get a key's value by name (convenience method)
api_key = kv.get_key_by_name("folder-id", "stripe-secret-key")
```

#### Get Key by ID
```python
# Get key metadata only
key = kv.get_key("key-id")

# Get key with decrypted value
key_with_value = kv.get_key("key-id", include_value=True)
print(f"Key: {key_with_value['name']}, Value: {key_with_value['value']}")
```

#### List Keys
```python
# List keys in a folder with pagination
result = kv.list_keys(
    folder_id="folder-id",
    limit=20,  # Number of keys to return
    offset=0   # Number of keys to skip
)

print(f"Found {result['total']} keys")
for key in result['keys']:
    print(f"- {key['name']} ({key['type']})")
```

#### Get Multiple Keys
```python
# Get multiple keys by name
keys = kv.get_multiple_keys(
    folder_id="folder-id",
    key_names=["stripe-key", "database-password", "api-secret"]
)

for name, value in keys.items():
    if value:
        print(f"{name}: {value}")
    else:
        print(f"{name}: Not found")
```

### Folder Operations

#### List Folders
```python
# List all folders with hierarchical structure
folders = kv.list_folders()
print(f"Found {len(folders['folders'])} root folders")

# List folders within a specific project
project_folders = kv.list_folders(project_id="project-id")
```

#### List Projects
```python
# List only root folders (projects)
projects = kv.list_projects()
for project in projects:
    print(f"Project: {project['name']} (ID: {project['id']})")
```

#### Get Folder Details
```python
# Get a specific folder with its contents
folder_data = kv.get_folder("folder-id")
print(f"Folder: {folder_data['folder']['name']}")
print(f"Contains {len(folder_data['keys'])} keys")
```

### Search Operations

#### Search Keys
```python
# Search for keys across all folders
results = kv.search_keys(
    search="database",
    key_type="PASSWORD",
    favorite=True,
    limit=20
)

print(f"Found {len(results['keys'])} database passwords")
```

### Utility Methods

#### Test Connection
```python
# Test the connection to the Key Vault API
if kv.test_connection():
    print("Connection successful!")
else:
    print("Connection failed!")
```

#### Get Statistics
```python
# Get folder and key statistics
stats = kv.get_stats()
print(f"Total keys: {stats['totalKeys']}")
print(f"Total folders: {stats['folders']}")
```

## Error Handling

The SDK provides specific exception types for different error scenarios:

```python
from key_vault_sdk import KeyVaultError, KeyVaultAuthError, KeyVaultNotFoundError

try:
    key = kv.get_key("key-id")
except KeyVaultAuthError:
    print("Authentication failed - check your token")
except KeyVaultNotFoundError:
    print("Key not found")
except KeyVaultError as e:
    print(f"API error: {e}")
```

## Examples

### Complete Example
```python
from key_vault_sdk import KeyVault

def main():
    # Initialize SDK
    kv = KeyVault(
        api_url="https://yourdomain.com/api",
        token="your-api-token"
    )
    
    try:
        # Test connection
        if not kv.test_connection():
            print("Failed to connect to Key Vault")
            return
        
        # List projects
        projects = kv.list_projects()
        print(f"Available projects: {len(projects)}")
        
        # Get keys from first project
        if projects:
            project_id = projects[0]['id']
            result = kv.list_keys(folder_id=project_id, limit=10)
            
            print(f"Keys in {projects[0]['name']}:")
            for key in result['keys']:
                print(f"- {key['name']} ({key['type']})")
                
                # Get key value if needed
                if key['type'] == 'API_KEY':
                    key_with_value = kv.get_key(key['id'], include_value=True)
                    print(f"  Value: {key_with_value['value']}")
    
    except Exception as e:
        print(f"Error: {e}")

if __name__ == "__main__":
    main()
```

## Development

### Local Testing
For local development, use the local server URL:

```python
kv = KeyVault(
    api_url="http://localhost:3000/api",
    token="your-local-token"
)
```

### Running Tests
```bash
cd python-sdk
python -m pytest tests/
```

## License

MIT License - see LICENSE file for details.

## Support

- GitHub Issues: https://github.com/amaykorade/key-vault/issues
- Documentation: https://github.com/amaykorade/key-vault#readme 

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/amaykorade/key-vault",
    "name": "amay-key-vault-sdk",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "keyvault, sdk, secrets, api, vault, python",
    "author": "Amay Korade",
    "author_email": "amaykorade5@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/f5/eb/75fb31edfbb5d79ac59d78a2c7424fd602d3bf303ecaf9451945c1962c51/amay_key_vault_sdk-1.0.2.tar.gz",
    "platform": null,
    "description": "# Key Vault Python SDK\n\nA Python SDK for securely accessing your Key Vault API keys and secrets.\n\n## Installation\n\n```bash\npip install amay-key-vault-sdk\n```\n\n## Quick Start\n\n```python\nfrom key_vault_sdk import KeyVault\n\n# Initialize the SDK\nkv = KeyVault(\n    api_url=\"https://yourdomain.com/api\",\n    token=\"your-api-token\"\n)\n\n# Get a key by name\napi_key = kv.get_key_by_name(\"folder-id\", \"stripe-secret-key\")\nprint(f\"API Key: {api_key}\")\n\n# List all keys in a folder\nresult = kv.list_keys(folder_id=\"folder-id\", limit=50)\nprint(f\"Found {len(result['keys'])} keys\")\n\n# Get multiple keys at once\nkeys = kv.get_multiple_keys(\n    folder_id=\"folder-id\",\n    key_names=[\"stripe-key\", \"database-password\", \"api-secret\"]\n)\nprint(f\"Retrieved {len(keys)} keys\")\n```\n\n## Features\n\n- \ud83d\udd10 **Secure Access**: All keys are encrypted and securely transmitted\n- \ud83d\udcc1 **Folder Support**: Organize keys in hierarchical folders\n- \ud83d\udd0d **Search & Filter**: Find keys by name, type, or tags\n- \ud83d\udcca **Statistics**: Get usage statistics and folder information\n- \ud83d\udd04 **Auto Refresh**: Automatic token refresh handling\n- \ud83d\udee1\ufe0f **Error Handling**: Comprehensive error handling with specific exceptions\n\n## API Reference\n\n### Authentication\n\n```python\nfrom key_vault_sdk import KeyVault\n\nkv = KeyVault(\n    api_url=\"https://yourdomain.com/api\",\n    token=\"your-api-token\",\n    timeout=30  # Optional: request timeout in seconds\n)\n```\n\n### Key Operations\n\n#### Get Key by Name\n```python\n# Get a key's value by name (convenience method)\napi_key = kv.get_key_by_name(\"folder-id\", \"stripe-secret-key\")\n```\n\n#### Get Key by ID\n```python\n# Get key metadata only\nkey = kv.get_key(\"key-id\")\n\n# Get key with decrypted value\nkey_with_value = kv.get_key(\"key-id\", include_value=True)\nprint(f\"Key: {key_with_value['name']}, Value: {key_with_value['value']}\")\n```\n\n#### List Keys\n```python\n# List keys in a folder with pagination\nresult = kv.list_keys(\n    folder_id=\"folder-id\",\n    limit=20,  # Number of keys to return\n    offset=0   # Number of keys to skip\n)\n\nprint(f\"Found {result['total']} keys\")\nfor key in result['keys']:\n    print(f\"- {key['name']} ({key['type']})\")\n```\n\n#### Get Multiple Keys\n```python\n# Get multiple keys by name\nkeys = kv.get_multiple_keys(\n    folder_id=\"folder-id\",\n    key_names=[\"stripe-key\", \"database-password\", \"api-secret\"]\n)\n\nfor name, value in keys.items():\n    if value:\n        print(f\"{name}: {value}\")\n    else:\n        print(f\"{name}: Not found\")\n```\n\n### Folder Operations\n\n#### List Folders\n```python\n# List all folders with hierarchical structure\nfolders = kv.list_folders()\nprint(f\"Found {len(folders['folders'])} root folders\")\n\n# List folders within a specific project\nproject_folders = kv.list_folders(project_id=\"project-id\")\n```\n\n#### List Projects\n```python\n# List only root folders (projects)\nprojects = kv.list_projects()\nfor project in projects:\n    print(f\"Project: {project['name']} (ID: {project['id']})\")\n```\n\n#### Get Folder Details\n```python\n# Get a specific folder with its contents\nfolder_data = kv.get_folder(\"folder-id\")\nprint(f\"Folder: {folder_data['folder']['name']}\")\nprint(f\"Contains {len(folder_data['keys'])} keys\")\n```\n\n### Search Operations\n\n#### Search Keys\n```python\n# Search for keys across all folders\nresults = kv.search_keys(\n    search=\"database\",\n    key_type=\"PASSWORD\",\n    favorite=True,\n    limit=20\n)\n\nprint(f\"Found {len(results['keys'])} database passwords\")\n```\n\n### Utility Methods\n\n#### Test Connection\n```python\n# Test the connection to the Key Vault API\nif kv.test_connection():\n    print(\"Connection successful!\")\nelse:\n    print(\"Connection failed!\")\n```\n\n#### Get Statistics\n```python\n# Get folder and key statistics\nstats = kv.get_stats()\nprint(f\"Total keys: {stats['totalKeys']}\")\nprint(f\"Total folders: {stats['folders']}\")\n```\n\n## Error Handling\n\nThe SDK provides specific exception types for different error scenarios:\n\n```python\nfrom key_vault_sdk import KeyVaultError, KeyVaultAuthError, KeyVaultNotFoundError\n\ntry:\n    key = kv.get_key(\"key-id\")\nexcept KeyVaultAuthError:\n    print(\"Authentication failed - check your token\")\nexcept KeyVaultNotFoundError:\n    print(\"Key not found\")\nexcept KeyVaultError as e:\n    print(f\"API error: {e}\")\n```\n\n## Examples\n\n### Complete Example\n```python\nfrom key_vault_sdk import KeyVault\n\ndef main():\n    # Initialize SDK\n    kv = KeyVault(\n        api_url=\"https://yourdomain.com/api\",\n        token=\"your-api-token\"\n    )\n    \n    try:\n        # Test connection\n        if not kv.test_connection():\n            print(\"Failed to connect to Key Vault\")\n            return\n        \n        # List projects\n        projects = kv.list_projects()\n        print(f\"Available projects: {len(projects)}\")\n        \n        # Get keys from first project\n        if projects:\n            project_id = projects[0]['id']\n            result = kv.list_keys(folder_id=project_id, limit=10)\n            \n            print(f\"Keys in {projects[0]['name']}:\")\n            for key in result['keys']:\n                print(f\"- {key['name']} ({key['type']})\")\n                \n                # Get key value if needed\n                if key['type'] == 'API_KEY':\n                    key_with_value = kv.get_key(key['id'], include_value=True)\n                    print(f\"  Value: {key_with_value['value']}\")\n    \n    except Exception as e:\n        print(f\"Error: {e}\")\n\nif __name__ == \"__main__\":\n    main()\n```\n\n## Development\n\n### Local Testing\nFor local development, use the local server URL:\n\n```python\nkv = KeyVault(\n    api_url=\"http://localhost:3000/api\",\n    token=\"your-local-token\"\n)\n```\n\n### Running Tests\n```bash\ncd python-sdk\npython -m pytest tests/\n```\n\n## License\n\nMIT License - see LICENSE file for details.\n\n## Support\n\n- GitHub Issues: https://github.com/amaykorade/key-vault/issues\n- Documentation: https://github.com/amaykorade/key-vault#readme \n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Python SDK for accessing Key Vault API keys and values",
    "version": "1.0.2",
    "project_urls": {
        "Bug Reports": "https://github.com/amaykorade/key-vault/issues",
        "Documentation": "https://github.com/amaykorade/key-vault#readme",
        "Homepage": "https://github.com/amaykorade/key-vault",
        "Source": "https://github.com/amaykorade/key-vault"
    },
    "split_keywords": [
        "keyvault",
        " sdk",
        " secrets",
        " api",
        " vault",
        " python"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f794633f3a89044a734075f29743c03821064cf9f01c2e71b7d26e18639adb4d",
                "md5": "987730cc427175b49ab57c9bddd877e5",
                "sha256": "71cf9a97246e1e4da65727525015ebd3da0c0c1d0a7990759afed1b0f5cc162e"
            },
            "downloads": -1,
            "filename": "amay_key_vault_sdk-1.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "987730cc427175b49ab57c9bddd877e5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 8644,
            "upload_time": "2025-08-06T19:12:11",
            "upload_time_iso_8601": "2025-08-06T19:12:11.864715Z",
            "url": "https://files.pythonhosted.org/packages/f7/94/633f3a89044a734075f29743c03821064cf9f01c2e71b7d26e18639adb4d/amay_key_vault_sdk-1.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f5eb75fb31edfbb5d79ac59d78a2c7424fd602d3bf303ecaf9451945c1962c51",
                "md5": "776a8cf07ee09194ea6cd1c5e1d0ad48",
                "sha256": "bd8e7cee77605756996c8fa8dfdb8f3affd208e46effe7433268987156632890"
            },
            "downloads": -1,
            "filename": "amay_key_vault_sdk-1.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "776a8cf07ee09194ea6cd1c5e1d0ad48",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 8018,
            "upload_time": "2025-08-06T19:12:13",
            "upload_time_iso_8601": "2025-08-06T19:12:13.284552Z",
            "url": "https://files.pythonhosted.org/packages/f5/eb/75fb31edfbb5d79ac59d78a2c7424fd602d3bf303ecaf9451945c1962c51/amay_key_vault_sdk-1.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-06 19:12:13",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "amaykorade",
    "github_project": "key-vault",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "amay-key-vault-sdk"
}
        
Elapsed time: 1.17830s