# Atlassian Async Client
A modern, async Python client for Atlassian products (Jira and Confluence) with comprehensive API coverage, type safety, and Pydantic models.
## โจ Features
- ๐ **Full Async Support**: Built with `httpx` for modern async/await operations
- ๐ **Type Safety**: Complete type hints and mypy strict mode compliance
- ๐ฆ **Modern Packaging**: Uses `pyproject.toml` and modern Python packaging standards
- ๐๏ธ **Pydantic Models**: Robust data validation and serialization
- ๐ **Comprehensive Coverage**: Support for both Jira and Confluence APIs
- โ๏ธ **Flexible Authentication**: Supports both Cloud and Server/Data Center deployments
- ๐ **Content Processing**: Built-in preprocessing for Jira and Confluence content
- ๐ **Rich Text Support**: Markdown to Confluence conversion utilities
## ๐ ๏ธ Installation
```bash
# Using pip
pip install atlassian-async-client
# Using uv (recommended)
uv pip install atlassian-async-client
```
For development:
```bash
uv pip install -e ".[dev]"
```
## ๐ Quick Start
### Basic Usage
```python
import asyncio
from atlassian_client import AtlassianClient
async def main():
async with AtlassianClient(
base_url="https://your-domain.atlassian.net",
username="your-email@example.com",
api_token="your-api-token"
) as client:
# Your API calls here
pass
if __name__ == "__main__":
asyncio.run(main())
```
### Environment Configuration
Set up your environment variables:
```bash
# For Cloud deployment
export JIRA_URL="https://your-domain.atlassian.net"
export JIRA_USERNAME="your-email@example.com"
export JIRA_API_TOKEN="your-api-token"
# For Server/Data Center
export JIRA_URL="https://jira.your-company.com"
export JIRA_PERSONAL_TOKEN="your-personal-access-token"
```
Similar configuration for Confluence:
```bash
export CONFLUENCE_URL="https://your-domain.atlassian.net"
export CONFLUENCE_USERNAME="your-email@example.com"
export CONFLUENCE_API_TOKEN="your-api-token"
```
## ๐ Documentation
### Jira Client
```python
from atlassian_client import JiraClient
from atlassian_client.models.jira import JiraIssue
async with JiraClient() as jira:
# Create issue
issue = await jira.create_issue(
project_key="PROJ",
summary="Test Issue",
description="Description"
)
```
### Confluence Client
```python
from atlassian_client import ConfluenceClient
from atlassian_client.models.confluence import ConfluencePage
async with ConfluenceClient() as confluence:
# Create page
page = await confluence.create_page(
space_key="SPACE",
title="Page Title",
body="Content"
)
```
## ๐งช Development
1. Clone the repository:
```bash
git clone https://github.com/khanhct/atlassian-async-client.git
cd atlassian-async-client
```
2. Create virtual environment and install dependencies:
```bash
uv venv
uv pip install -e ".[dev]"
```
3. Run tests:
```bash
pytest
```
4. Code quality:
```bash
# Format code
black .
isort .
# Type checking
mypy .
# Linting
ruff .
```
## ๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## ๐ License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## ๐ Acknowledgments
- Built on top of the [atlassian-python-api](https://github.com/atlassian-api/atlassian-python-api) package
- Uses [Pydantic](https://docs.pydantic.dev/) for data validation
- Powered by [httpx](https://www.python-httpx.org/) for async HTTP requests
Raw data
{
"_id": null,
"home_page": null,
"name": "atlassian-client",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "api, async, atlassian, confluence, jira",
"author": null,
"author_email": "KhanhChu <trongkhanh.chu@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/93/6f/4a63e3d2dad468fb02a68a38f9aa54d14f34feb731dd3888201d1fd1a7ed/atlassian_client-0.1.0.tar.gz",
"platform": null,
"description": "# Atlassian Async Client\n\nA modern, async Python client for Atlassian products (Jira and Confluence) with comprehensive API coverage, type safety, and Pydantic models.\n\n## \u2728 Features\n\n- \ud83d\ude80 **Full Async Support**: Built with `httpx` for modern async/await operations\n- \ud83d\udd12 **Type Safety**: Complete type hints and mypy strict mode compliance\n- \ud83d\udce6 **Modern Packaging**: Uses `pyproject.toml` and modern Python packaging standards\n- \ud83c\udfd7\ufe0f **Pydantic Models**: Robust data validation and serialization\n- \ud83d\udd0d **Comprehensive Coverage**: Support for both Jira and Confluence APIs\n- \u2601\ufe0f **Flexible Authentication**: Supports both Cloud and Server/Data Center deployments\n- \ud83d\udd04 **Content Processing**: Built-in preprocessing for Jira and Confluence content\n- \ud83d\udcdd **Rich Text Support**: Markdown to Confluence conversion utilities\n\n## \ud83d\udee0\ufe0f Installation\n\n```bash\n# Using pip\npip install atlassian-async-client\n\n# Using uv (recommended)\nuv pip install atlassian-async-client\n```\n\nFor development:\n```bash\nuv pip install -e \".[dev]\"\n```\n\n## \ud83d\ude80 Quick Start\n\n### Basic Usage\n\n```python\nimport asyncio\nfrom atlassian_client import AtlassianClient\n\nasync def main():\n async with AtlassianClient(\n base_url=\"https://your-domain.atlassian.net\",\n username=\"your-email@example.com\",\n api_token=\"your-api-token\"\n ) as client:\n # Your API calls here\n pass\n\nif __name__ == \"__main__\":\n asyncio.run(main())\n```\n\n### Environment Configuration\n\nSet up your environment variables:\n```bash\n# For Cloud deployment\nexport JIRA_URL=\"https://your-domain.atlassian.net\"\nexport JIRA_USERNAME=\"your-email@example.com\"\nexport JIRA_API_TOKEN=\"your-api-token\"\n\n# For Server/Data Center\nexport JIRA_URL=\"https://jira.your-company.com\"\nexport JIRA_PERSONAL_TOKEN=\"your-personal-access-token\"\n```\n\nSimilar configuration for Confluence:\n```bash\nexport CONFLUENCE_URL=\"https://your-domain.atlassian.net\"\nexport CONFLUENCE_USERNAME=\"your-email@example.com\"\nexport CONFLUENCE_API_TOKEN=\"your-api-token\"\n```\n\n## \ud83d\udcda Documentation\n\n### Jira Client\n\n```python\nfrom atlassian_client import JiraClient\nfrom atlassian_client.models.jira import JiraIssue\n\nasync with JiraClient() as jira:\n # Create issue\n issue = await jira.create_issue(\n project_key=\"PROJ\",\n summary=\"Test Issue\",\n description=\"Description\"\n )\n```\n\n### Confluence Client\n\n```python\nfrom atlassian_client import ConfluenceClient\nfrom atlassian_client.models.confluence import ConfluencePage\n\nasync with ConfluenceClient() as confluence:\n # Create page\n page = await confluence.create_page(\n space_key=\"SPACE\",\n title=\"Page Title\",\n body=\"Content\"\n )\n```\n\n## \ud83e\uddea Development\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/khanhct/atlassian-async-client.git\ncd atlassian-async-client\n```\n\n2. Create virtual environment and install dependencies:\n```bash\nuv venv\nuv pip install -e \".[dev]\"\n```\n\n3. Run tests:\n```bash\npytest\n```\n\n4. Code quality:\n```bash\n# Format code\nblack .\nisort .\n\n# Type checking\nmypy .\n\n# Linting\nruff .\n```\n\n## \ud83e\udd1d Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## \ud83d\udcdd License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## \ud83d\ude4f Acknowledgments\n\n- Built on top of the [atlassian-python-api](https://github.com/atlassian-api/atlassian-python-api) package\n- Uses [Pydantic](https://docs.pydantic.dev/) for data validation\n- Powered by [httpx](https://www.python-httpx.org/) for async HTTP requests",
"bugtrack_url": null,
"license": "MIT",
"summary": "Async Python client for Atlassian products",
"version": "0.1.0",
"project_urls": {
"Documentation": "https://github.com/khanhct/atlassian",
"Homepage": "https://github.com/khanhct/atlassian",
"Issues": "https://github.com/khanhct/atlassian"
},
"split_keywords": [
"api",
" async",
" atlassian",
" confluence",
" jira"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a8b62c201386fb9ba715678d784f6407cb741cc5096c49ba254e2dfddc3a1097",
"md5": "9d653fc94dcd63bff5c4e4da80bd1da1",
"sha256": "3751a669dfee84f721a9b022f8731a44cd00710e3fe0d416884f04c8cf91eb14"
},
"downloads": -1,
"filename": "atlassian_client-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9d653fc94dcd63bff5c4e4da80bd1da1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 75988,
"upload_time": "2025-03-19T05:52:43",
"upload_time_iso_8601": "2025-03-19T05:52:43.201838Z",
"url": "https://files.pythonhosted.org/packages/a8/b6/2c201386fb9ba715678d784f6407cb741cc5096c49ba254e2dfddc3a1097/atlassian_client-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "936f4a63e3d2dad468fb02a68a38f9aa54d14f34feb731dd3888201d1fd1a7ed",
"md5": "109064159ce417b8d7e0fea36ec8cb36",
"sha256": "b899a59d3ec556bd33237246320516bc7d9cc132c5bedc41853f9d0988989a3c"
},
"downloads": -1,
"filename": "atlassian_client-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "109064159ce417b8d7e0fea36ec8cb36",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 166299,
"upload_time": "2025-03-19T05:52:44",
"upload_time_iso_8601": "2025-03-19T05:52:44.803371Z",
"url": "https://files.pythonhosted.org/packages/93/6f/4a63e3d2dad468fb02a68a38f9aa54d14f34feb731dd3888201d1fd1a7ed/atlassian_client-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-03-19 05:52:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "khanhct",
"github_project": "atlassian",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "atlassian-client"
}