Skip to main content

Python SDK for Bloom Growth API

Project description

Bloomy - Python SDK for Bloom Growth API

Python Version Deploy Documentation

A Python SDK for interacting with the Bloom Growth API, providing easy access to users, meetings, todos, goals, scorecards, issues, and headlines.

Installation

pip install bloomy-python

Quick Start

from bloomy import Client

# Initialize the client with your API key
client = Client(api_key="your-api-key-here")

# Or use environment variable BG_API_KEY
client = Client()

# Or configure API key with username and password
from bloomy import Configuration

config = Configuration()
config.configure_api_key("username", "password", store_key=True)
client = Client()

Features

Users

# Get current user details
user = client.user.details()

# Get user with direct reports and positions
user = client.user.details(user_id=123, all=True)

# Search users
results = client.user.search("john")

# Get all users
users = client.user.all()

Meetings

# List meetings
meetings = client.meeting.list()

# Get meeting details
meeting = client.meeting.details(meeting_id=123)

# Create a meeting
new_meeting = client.meeting.create(
    title="Weekly Team Meeting",
    attendees=[456, 789]
)

# Delete a meeting
client.meeting.delete(meeting_id=123)

Todos

# List todos for current user
todos = client.todo.list()

# Create a todo
new_todo = client.todo.create(
    title="Complete project proposal",
    meeting_id=123,
    due_date="2024-12-31"
)

# Complete a todo
client.todo.complete(todo_id=456)

# Update a todo
client.todo.update(
    todo_id=456,
    title="Updated title",
    due_date="2024-12-25"
)

Goals (Rocks)

# List goals
goals = client.goal.list()

# Create a goal
new_goal = client.goal.create(
    title="Increase sales by 20%",
    meeting_id=123,
    user_id=456
)

# Update goal status
client.goal.update(goal_id=789, status="on")  # on, off, or complete

# Archive a goal
client.goal.archive(goal_id=789)

Scorecard

# Get current week
week = client.scorecard.current_week()

# List scorecard items
scorecards = client.scorecard.list(meeting_id=123)

# Update a score
client.scorecard.score(measurable_id=456, score=95.5)

Issues

# List issues
issues = client.issue.list()

# Create an issue
new_issue = client.issue.create(
    meeting_id=123,
    title="Server performance degradation"
)

# Solve an issue
client.issue.solve(issue_id=456)

Headlines

# List headlines
headlines = client.headline.list(meeting_id=123)

# Create a headline
new_headline = client.headline.create(
    meeting_id=123,
    title="Product launch successful",
    notes="Exceeded targets by 15%"
)

# Update a headline
client.headline.update(headline_id=456, title="Updated headline")

# Delete a headline
client.headline.delete(headline_id=456)

Configuration

The SDK supports multiple ways to provide your API key:

  1. Direct initialization: Pass the API key when creating the client
  2. Environment variable: Set BG_API_KEY in your environment
  3. Configuration file: Store the API key in ~/.bloomy/config.yaml
  4. Dynamic configuration: Use username/password to fetch and store the API key
# Using configuration file
config = Configuration()
config.configure_api_key("username", "password", store_key=True)

Error Handling

The SDK raises specific exceptions for different error scenarios:

from bloomy.exceptions import BloomyError, ConfigurationError, AuthenticationError, APIError

try:
    client.user.details()
except AuthenticationError:
    print("Invalid API key")
except APIError as e:
    print(f"API error: {e.message}, Status: {e.status_code}")
except BloomyError as e:
    print(f"General error: {e}")

Development

This SDK uses:

  • uv for package management
  • ruff for formatting and linting
  • pyright for type checking
  • pytest for testing

To set up the development environment:

# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install dependencies
uv sync --all-extras

# Run tests
uv run pytest

# Format code
uv run ruff format .

# Run linting
uv run ruff check . --fix

# Type checking
uv run pyright

Requirements

  • Python 3.12+
  • httpx
  • pyyaml
  • pydantic

License

This project is licensed under the MIT License.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

bloomy_python-0.12.1-py3-none-any.whl (26.7 kB view details)

Uploaded Python 3

File details

Details for the file bloomy_python-0.12.1-py3-none-any.whl.

File metadata

File hashes

Hashes for bloomy_python-0.12.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4f507f3d862feddb0475828787f807811b1acb3ec31c9b91e1fe8e40a039b9ef
MD5 4f82bf33619596f99c04d153eb51b58b
BLAKE2b-256 b7c681955ec73c43055817c232d8aa15c2fb4011755a5f0be817cb8b66eba6a8

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