Skip to main content

A Python client library for the Vhi API, handling authentication, MFA callbacks, claims retrieval, and document downloads.

Project description

Vhi Python Client

A Python client library for interacting dynamically with the Vhi API. Provides automated handling of Session state, Multi-Factor Authentication (MFA) callbacks, Claims Retrieval, and memory-efficient Document Downloads.

Installation

You can install the library directly from source (or via pip once published):

pip install vhi-python

Alternatively, to install it locally for development:

git clone https://github.com/agent/vhi-python.git
cd vhi-python
pip install -e .

Quick Start Example

This example demonstrates how to use the library to log in, handle an MFA callback (simulated via CLI input), retrieve claims, and download a claim PDF.

import os
from vhi.client import VhiClient
from vhi.exceptions import VhiAuthenticationError, VhiApiError

def my_cli_mfa_callback() -> str:
    """
    A simple callback function that pauses execution
    and waits for the user to input the 2FA code sent to their phone/email.
    """
    return input("Vhi 2FA Code Required. Enter OTP: ").strip()

def main():
    # 1. Initialize the client
    # Replace with your actual credentials
    username = os.getenv("VHI_USERNAME", "your_email@example.com")
    password = os.getenv("VHI_PASSWORD", "your_password")
    
    # We pass our callback function so the client can automatically 
    # pause and invoke it if the server demands MFA.
    client = VhiClient(
        username=username, 
        password=password, 
        mfa_callback=my_cli_mfa_callback
    )

    try:
        # 2. Login
        print("Logging in...")
        client.login()
        print("Login successful!")

        # 3. Retrieve Claims
        print("\nRetrieving claims...")
        statements = client.get_claims()
        
        if not statements:
            print("No claim statements found.")
            return

        for claim in statements:
            print(f"- Claim {claim.claim_id} | Date: {claim.date_of_service} | Status: {claim.status}")

        # 4. Download a Document
        # We will download the first available document as an example
        first_claim = statements[0]
        if first_claim.document_id:
            download_path = f"{first_claim.claim_id}.pdf"
            print(f"\nDownloading document {first_claim.document_id} to {download_path}...")
            client.download_document(first_claim.document_id, download_path)
            print("Download complete!")

    except VhiAuthenticationError as e:
        print(f"Authentication failed: {e}")
    except VhiApiError as e:
        print(f"API Error occurred: {e}")

if __name__ == "__main__":
    main()

Error Handling

The library provides structural custom exceptions:

  • VhiAuthenticationError: Raised when login fails due to invalid credentials.
  • VhiMfaRequiredError: Raised when the server requests MFA but you didn't provide a callback, or when the callback returns an invalid OTP.
  • VhiApiError: Raised for any other 4xx or 5xx API errors. Contains standard HTTP status codes for debugging.

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

vhi_python-0.1.6.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

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

vhi_python-0.1.6-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file vhi_python-0.1.6.tar.gz.

File metadata

  • Download URL: vhi_python-0.1.6.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vhi_python-0.1.6.tar.gz
Algorithm Hash digest
SHA256 cc1714b73b59e78505c0050b153b6e0b0c5876d7944ac3b572d4d361df19fe2e
MD5 bfd1087a742ace27354a5a1eafb13dda
BLAKE2b-256 15d33c0480fb81a818f3f42f1dc0496e5fdb11d60ee23e80fccaa9c4e7e498ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for vhi_python-0.1.6.tar.gz:

Publisher: publish.yml on Irishsmurf/vhi-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vhi_python-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: vhi_python-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vhi_python-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 83e1e4b33d1768796b81da820ecdaf024ad76caa65e49641a907d296207071a0
MD5 984401a94d9fa7feb7c847426085b42b
BLAKE2b-256 8efeed10b0a7591a37c5083cbadd81ceb73fa56a53920975a7d00a1806530342

See more details on using hashes here.

Provenance

The following attestation bundles were made for vhi_python-0.1.6-py3-none-any.whl:

Publisher: publish.yml on Irishsmurf/vhi-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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