Skip to main content

CommonGrants Python SDK

A Python SDK for interacting with the CommonGrants protocol, providing a type-safe interface for managing grant opportunities.

Table of contents

Installation

# Using pip
pip install common-grants-sdk

# Using Poetry
poetry add common-grants-sdk

Usage

Quick start

from common_grants_sdk.client import Client, Auth
from common_grants_sdk.client.config import Config

# 1. Create a client
config = Config(base_url="https://api.example.org", api_key="YOUR_API_KEY")
client = Client(config=config, auth=Auth.api_key("YOUR_API_KEY"))

# 2. List opportunities
response = client.opportunities.list()
for opp in response.items:
    print(f"{opp.title} ({opp.status.value})")

Kitchen sink example

This example shows how the SDK's modules work together: fetching data with the client, validating it with schemas, and accessing typed custom fields via extensions.

from common_grants_sdk.client import Client, Auth
from common_grants_sdk.client.config import Config
from common_grants_sdk.schemas.pydantic import (
    OpportunityBase,
    OppStatusOptions,
    CustomFieldType,
)
from common_grants_sdk.extensions.specs import CustomFieldSpec

# Extend the base schema with custom fields
CustomOpportunity = OpportunityBase.with_custom_fields(
    custom_fields={
        "programArea": CustomFieldSpec(
            field_type=CustomFieldType.STRING,
            description="Grant program area",
        ),
        "legacyId": CustomFieldSpec(
            field_type=CustomFieldType.INTEGER,
            description="Legacy system ID",
        ),
    },
    model_name="CustomOpportunity",
)

# Create a client
config = Config(base_url="https://api.example.org", api_key="YOUR_API_KEY")
client = Client(config=config, auth=Auth.api_key("YOUR_API_KEY"))

# Fetch opportunities using the extended schema
response = client.opportunities.list(schema=CustomOpportunity)
for opp in response.items:
    print(f"{opp.title} ({opp.status.value})")

    # Access typed custom fields
    if opp.status.value == OppStatusOptions.OPEN:
        program = opp.get_custom_field_value("programArea", str)
        print(f"  Program area: {program}")

# Validate standalone data directly against the schema
raw = {
    "id": "ac201443-5480-4e36-9799-a39765225153",
    "title": "Community Health Grant",
    "description": "A grant supporting community health initiatives.",
    "status": {"value": "open"},
    "createdAt": "2025-01-01T00:00:00Z",
    "lastModifiedAt": "2025-01-01T00:00:00Z",
}
validated_opp = OpportunityBase.model_validate(raw)
print(validated_opp.title)

Modules

The SDK is organized into modules, each with its own documentation:

Module Description
Client HTTP client with auth, pagination, and low-level HTTP methods
Schemas Pydantic models, validation, and generic response schemas
Extensions Custom fields and plugin framework

API Client

HTTP client with built-in authentication, auto-pagination, and environment variable configuration. See the Client guide for setup, authentication, and usage examples.

Schemas and Validation

Pydantic v2 models for validating and parsing CommonGrants data, along with type-safe enum constants. See the Schemas guide for validation examples, type safety patterns, and the full API reference.

Extensions and Plugins

Extension framework for adding typed custom fields to CommonGrants schemas, either ad hoc or as reusable plugins. See the Extensions guide for the full guide.

License

See LICENSE

Download files

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

Source Distribution

common_grants_sdk-0.8.0.tar.gz (59.1 kB view details)

Uploaded Source

Built Distribution

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

common_grants_sdk-0.8.0-py3-none-any.whl (83.5 kB view details)

Uploaded Python 3

File details

Details for the file common_grants_sdk-0.8.0.tar.gz.

File metadata

  • Download URL: common_grants_sdk-0.8.0.tar.gz
  • Upload date:
  • Size: 59.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.11.15 Linux/6.17.0-1020-azure

File hashes

Hashes for common_grants_sdk-0.8.0.tar.gz
Algorithm Hash digest
SHA256 8cb1e9010511cd43f18fb18e645094a2c706c9c167940c6966ee1b01db51ed6c
MD5 2e2ccb604716c534b0be1f4c1eb9e0ab
BLAKE2b-256 51bd1b0df14f72bcab03b5cca1f78cf8a61c43ae7f357bfedb4f338745d88586

See more details on using hashes here.

File details

Details for the file common_grants_sdk-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: common_grants_sdk-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 83.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.4.1 CPython/3.11.15 Linux/6.17.0-1020-azure

File hashes

Hashes for common_grants_sdk-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 64887c563161132af2f9dac2e6521793a7844e5cfefba7e58253dca62c993f7a
MD5 0c016549534de35d0ee78735cc696342
BLAKE2b-256 d8fe57fe4d10574dc8f0bb9ce8c393209c57b66475d569ea808bc8b0a11c1849

See more details on using hashes here.

Release history Release notifications | RSS feed

0.8.1

2 files

This release

0.8.0 This release

2 files

0.7.0

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.1

2 files

0.4.0

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page