Skip to main content

Python SDK for FormBridge — async and sync HTTP client

Project description

formbridge-sdk

Python SDK for FormBridge — async and sync HTTP client for managing form submissions.

Installation

This SDK is not yet published to PyPI. Install it from source:

git clone https://github.com/agentkitai/formbridge.git
pip install ./formbridge/sdk/python

Quick Start (Async)

import asyncio
from formbridge import FormBridgeClient, Actor

async def main():
    async with FormBridgeClient(
        url="http://localhost:3000",
        api_key="your-api-key",
    ) as client:
        # Create a submission with initial fields
        sub = await client.create_submission(
            "vendor-onboarding",
            fields={"company_name": "Acme Corp"},
            actor=Actor(kind="agent", id="agent-1", name="Onboarding Bot"),
        )
        print(f"Created: {sub.submission_id}, state={sub.state}")
        print(f"Missing fields: {sub.missing_fields}")

        # Add more fields (resume_token rotates on each call)
        result = await client.set_fields(
            sub.intake_id,
            sub.submission_id,
            sub.resume_token,
            {"contact_email": "alice@acme.com", "phone": "+1-555-0100"},
        )
        print(f"Updated: state={result.state}, missing={result.missing_fields}")

        # Submit when all fields are filled
        final = await client.submit(
            sub.intake_id,
            sub.submission_id,
            result.resume_token,
        )
        print(f"Submitted: state={final.state}")

        # Retrieve a submission
        fetched = await client.get_submission(sub.intake_id, sub.submission_id)
        print(f"Fields: {fetched.fields}")

asyncio.run(main())

Quick Start (Sync)

from formbridge import FormBridgeClientSync, Actor

with FormBridgeClientSync(api_key="your-api-key") as client:
    sub = client.create_submission(
        "vendor-onboarding",
        fields={"company_name": "Acme Corp"},
        actor=Actor(kind="agent", id="agent-1"),
    )
    print(f"Created: {sub.submission_id}")

Configuration

Parameter Env Var Default
url FORMBRIDGE_URL http://localhost:3000
api_key FORMBRIDGE_API_KEY
timeout FORMBRIDGE_TIMEOUT 10 (seconds)

Error Handling

from formbridge import FormBridgeClient, FormBridgeError

async with FormBridgeClient() as client:
    try:
        sub = await client.get_submission("intake-1", "sub-123")
    except FormBridgeError as e:
        if e.is_connectivity_error:
            print("Server unreachable — degrade gracefully")
        elif e.status_code == 404:
            print("Not found")
        else:
            print(f"API error: {e.error_type}{e}")

Retry Behavior

  • Retries on: 429 (rate limited), 500, 502, 503, 504
  • Does NOT retry on: 400, 401, 403, 404 (client errors)
  • Backoff: 0.5s → 1.0s → 2.0s (exponential)
  • Max retries: 3 (configurable via max_retries)

License

MIT

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

formbridge_sdk-0.1.0.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

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

formbridge_sdk-0.1.0-py3-none-any.whl (7.3 kB view details)

Uploaded Python 3

File details

Details for the file formbridge_sdk-0.1.0.tar.gz.

File metadata

  • Download URL: formbridge_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for formbridge_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2a6df13dccb0925da085c31913a6d0f2c86375b60ad21133aa5d5a19ce512880
MD5 123125f580c1196a36d323682a2fff90
BLAKE2b-256 36f63ecd53bc6e252a24fbadc567a770f8671add87dfbdb668b8572e966c70c2

See more details on using hashes here.

File details

Details for the file formbridge_sdk-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: formbridge_sdk-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for formbridge_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2e002bfd674e420180725c4d0d5bfe0a76480fa4d37c9f883a57b1e94e03154b
MD5 04dbcbfdebe42aa20d6ec37cb236aab2
BLAKE2b-256 357ea106d9fd75a095654876b1d1fc61969202eb9c7c225133903287b237c164

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