Skip to main content
Loss of provenance

A previous release had provenance metadata, but this release does not. View details.

Confluence Assistant Skills Library

PyPI version Python versions License

Python library for Confluence Cloud REST API - shared utilities for the Confluence Assistant Skills project.

Features

  • ConfluenceClient - HTTP client with retry logic, pagination, and file uploads
  • ConfigManager - Multi-source configuration (env vars, JSON files)
  • Error Handling - Exception hierarchy and decorators for clean error handling
  • Validators - Input validation for page IDs, space keys, CQL queries, etc.
  • Formatters - Output formatting for pages, spaces, tables, JSON, CSV
  • ADF Helper - Atlassian Document Format conversion (Markdown ↔ ADF)
  • XHTML Helper - Legacy storage format conversion
  • Cache - File-based response caching with TTL

Installation

pip install confluence-assistant-skills-lib

Note: This is the library package. For the CLI tool, install confluence-assistant-skills instead:

pip install confluence-assistant-skills  # CLI with 'confluence' command

Quick Start

from confluence_assistant_skills import (
    get_confluence_client,
    validate_page_id,
    format_page,
    markdown_to_adf,
)

# Set environment variables:
# CONFLUENCE_SITE_URL=https://your-site.atlassian.net
# CONFLUENCE_EMAIL=your-email@example.com
# CONFLUENCE_API_TOKEN=your-api-token

# Get a configured client
client = get_confluence_client()

# Get a page
page_id = validate_page_id("12345")
page = client.get(f"/api/v2/pages/{page_id}")
print(format_page(page))

# Create content from Markdown
content = markdown_to_adf("# Hello\n\nThis is **bold** text.")

Direct Client Usage

from confluence_assistant_skills import ConfluenceClient

client = ConfluenceClient(
    base_url="https://your-site.atlassian.net",
    email="your-email@example.com",
    api_token="your-api-token",
    timeout=30,
    max_retries=3,
)

# GET request
page = client.get("/api/v2/pages/12345")

# POST request
new_page = client.post("/api/v2/pages", json_data={
    "spaceId": "123456",
    "title": "New Page",
    "body": {"representation": "atlas_doc_format", "value": "..."}
})

# Pagination
for page in client.paginate("/api/v2/pages", params={"space-id": "123456"}):
    print(page["title"])

# File upload
result = client.upload_file(
    "/api/v2/attachments",
    file_path="/path/to/file.pdf",
    additional_data={"pageId": "12345"}
)

Configuration

Environment Variables

export CONFLUENCE_SITE_URL="https://your-site.atlassian.net"
export CONFLUENCE_EMAIL="your-email@example.com"
export CONFLUENCE_API_TOKEN="your-api-token"

Error Handling

from confluence_assistant_skills import (
    handle_errors,
    ConfluenceError,
    AuthenticationError,
    NotFoundError,
    ValidationError,
)

@handle_errors
def main():
    # Validation errors
    page_id = validate_page_id(user_input)  # Raises ValidationError if invalid

    # API errors are caught and formatted
    page = client.get(f"/api/v2/pages/{page_id}")

if __name__ == "__main__":
    main()  # Errors are caught, formatted, and exit with appropriate code

Validators

from confluence_assistant_skills import (
    validate_page_id,      # Numeric string validation
    validate_space_key,    # Space key format
    validate_cql,          # CQL query syntax
    validate_content_type, # page, blogpost, etc.
    validate_url,          # URL format
    validate_email,        # Email format
    validate_title,        # Page title constraints
    validate_label,        # Label format
    validate_limit,        # Pagination limit
)

page_id = validate_page_id("12345")         # Returns "12345"
space_key = validate_space_key("docs")       # Returns "DOCS" (normalized)
cql = validate_cql('space = "DOCS"')         # Validates syntax

ADF Conversion

from confluence_assistant_skills import (
    markdown_to_adf,
    adf_to_markdown,
    text_to_adf,
    adf_to_text,
    create_heading,
    create_paragraph,
    create_bullet_list,
)

# Convert Markdown to ADF
adf = markdown_to_adf("""
# My Document

This is a **bold** paragraph.

- Item 1
- Item 2

```python
print("Hello")

""")

Convert ADF back to Markdown

markdown = adf_to_markdown(adf)

Build ADF programmatically

from confluence_assistant_skills import create_adf_doc doc = create_adf_doc([ create_heading("Title", level=1), create_paragraph(text="Hello, World!"), create_bullet_list(["Item 1", "Item 2", "Item 3"]), ])


## Caching

```python
from confluence_assistant_skills import Cache, cached

# Direct cache usage
cache = Cache(default_ttl=300)  # 5 minutes
cache.set("key", {"data": "value"})
value = cache.get("key")

# Decorator usage
@cached(ttl=300)
def get_page(page_id):
    return client.get(f"/api/v2/pages/{page_id}")

# First call hits API, subsequent calls use cache
page = get_page("12345")

API Reference

Client

  • ConfluenceClient - HTTP client class
  • create_client() - Factory function
  • get_confluence_client() - Get configured client from environment variables

Config

  • ConfigManager - Configuration management class

Errors

  • ConfluenceError - Base exception
  • AuthenticationError - 401 errors
  • PermissionError - 403 errors
  • ValidationError - 400 errors
  • NotFoundError - 404 errors
  • RateLimitError - 429 errors
  • ConflictError - 409 errors
  • ServerError - 5xx errors

Formatters

  • format_page(), format_space(), format_comment()
  • format_table() - ASCII table formatting
  • format_json() - JSON formatting
  • export_csv() - CSV export
  • print_success(), print_warning(), print_info()

ADF Helper

  • markdown_to_adf(), adf_to_markdown()
  • text_to_adf(), adf_to_text()
  • create_*() - Node creation functions
  • validate_adf() - Validate ADF structure

XHTML Helper

  • xhtml_to_markdown(), markdown_to_xhtml()
  • xhtml_to_adf(), adf_to_xhtml()
  • validate_xhtml() - Validate XHTML structure

Cache

  • Cache - File-based cache class
  • cached() - Caching decorator
  • get_cache() - Get global cache instance

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make changes with tests
  4. Submit a pull request
# Install development dependencies
pip install -e ".[dev]"

# Install pre-commit hooks (recommended)
pre-commit install

# Run tests
pytest

# Run with coverage
pytest --cov=src/confluence_assistant_skills

# Code quality checks (run automatically on commit with pre-commit)
ruff check src/ tests/      # Linting
ruff format src/ tests/     # Formatting
mypy src/                   # Type checking
bandit -r src/ -q           # Security scanning

License

MIT License - see LICENSE for details.

Metadata

Release files for confluence-assistant-skills-lib 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Loss of provenance

These files do not have provenance metadata, despite files in a prior release including this data.

We recommend further investigation before installing these files. View details.

Source distribution (sdist)

Source distribution for confluence-assistant-skills-lib 0.4.1
File Size Uploaded Provenance Actions
confluence_assistant_skills_lib-0.4.1.tar.gz 96.1 kB Without provenance Details for confluence_assistant_skills_lib-0.4.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for confluence-assistant-skills-lib 0.4.1
File Interpreter ABI Platform Actions
confluence_assistant_skills_lib-0.4.1-py3-none-any.whl Python 3 none any Details for confluence_assistant_skills_lib-0.4.1-py3-none-any.whl

Total release size: 219.0 kB

Release files / confluence_assistant_skills_lib-0.4.1.tar.gz

Loss of provenance

This file belongs to a release without provenance metadata, despite a prior release including this data.

We recommend further investigation before installing this file. View details.

Download URL confluence_assistant_skills_lib-0.4.1.tar.gz
Size 96.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1146ec028f4b0d7cc2bf573b0c50c1a6a5401366c6ce99205612bbbb9c0d2de8
BLAKE2b-256 checksum
How to use checksums
b54b1f9817f0a346440c5291c111945258951b580eeba1de22ea899f439e9f17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / confluence_assistant_skills_lib-0.4.1-py3-none-any.whl

Loss of provenance

This file belongs to a release without provenance metadata, despite a prior release including this data.

We recommend further investigation before installing this file. View details.

Download URL confluence_assistant_skills_lib-0.4.1-py3-none-any.whl
Size 122.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c421f7c44e10fe68abb7e3d96050e5692069304e7939db728f1787ba45aa6870
BLAKE2b-256 checksum
How to use checksums
7810752df10678b5d6e3a6423581b5cb57322c90816d686b150874293ca0d0d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Security for confluence-assistant-skills-lib 0.4.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Loss of provenance

A previous release of these files had provenance metadata, but this release does not.

While this could reflect a routine change by the project maintainers, it may also indicate that the release files have been compromised.

Release comparison

  • Removed 0.3.1 2 files With provenance
  • Added 0.4.1 2 files Without provenance

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page