============================
Atlassian Python API wrapper
============================
|Build Status| |PyPI version| |PyPI - Downloads| |License| |Codacy Badge| |Docs| |Discord|
What is it?
___________
The **atlassian-python-api** library provides a **simple** and convenient way to interact with Atlassian products
(such as Jira Service management, Jira Software, Confluence, Bitbucket and apps Insight, X-Ray) using Python.
It is based on the official REST APIs of these products, as well as additional private methods and protocols
(such as xml+rpc and raw HTTP requests).
This library can be used to automate tasks, integrate with other tools and systems,
and build custom applications that interact with Atlassian products.
It supports a wide range of Atlassian products, including Jira, Confluence, Bitbucket, StatusPage and others,
and is compatible with both Atlassian Server and Cloud instances.
Overall, the **atlassian-python-api** is a useful tool for Python developers who want to work with Atlassian products.
It is well-documented and actively maintained, and provides a convenient way to access the full range of
functionality offered by the Atlassian REST APIs and made with love for Atlassian.
Documentation
_____________
`Documentation`_
.. _Documentation: https://atlassian-python-api.readthedocs.io
How to Install?
_______________
From PyPI
.. code-block:: console
$ pip install atlassian-python-api
From Source
- Git clone repository
- Use :code:`pip install -r requirements.txt` to install the required packages
- or :code:`pipenv install && pipenv install --dev`
Examples
________
More **examples** in :code:`examples/` directory.
Here's a short example of how to create a Confluence page:
.. code-block:: python
from atlassian import Confluence
import requests
# If you want to use a session, you can create it like this:
session = requests.Session()
# and pass it to the Confluence constructor
confluence = Confluence(
url='http://localhost:8090',
username='admin',
password='admin',
session=session,)
status = confluence.create_page(
space='DEMO',
title='This is the title',
body='This is the body. You can use <strong>HTML tags</strong>!')
print(status)
Please, note Confluence Cloud need to be used via token parameter.
And here's another example of how to get issues from Jira using JQL Query:
.. code-block:: python
from atlassian import Jira
import requests
session = requests.Session()
jira = Jira(
url='http://localhost:8080',
username='admin',
password='admin',
session=session) # Optional: use a session for persistent connections
JQL = 'project = DEMO AND status IN ("To Do", "In Progress") ORDER BY issuekey'
data = jira.jql(JQL)
print(data)
The traditional jql method is deprecated for Jira Cloud users, as Atlassian has transitioned to a nextPageToken-based pagination approach instead of startAt. Use enhanced_jql for improved performance and future compatibility.
.. code-block:: python
from atlassian import Jira
import requests
session = requests.Session()
jira = Jira(
url='https://your-jira-instance.atlassian.net',
username='your-email@example.com',
password='your-api-token',
cloud=True, # Ensure this is set to True for Jira Cloud
session=session # Optional: use a session for persistent connections
)
JQL = 'project = DEMO AND status IN ("To Do", "In Progress") ORDER BY issuekey'
# Fetch issues using the new enhanced_jql method
data = jira.enhanced_jql(JQL)
print(data)
Also, you can use the Bitbucket module e.g. for getting project list
.. code-block:: python
from atlassian import Bitbucket
import requests
session= requests.Session()
bitbucket = Bitbucket(
url='http://localhost:7990',
username='admin',
password='admin',
session=session)
data = bitbucket.project_list()
print(data)
Now you can use the Jira Service Desk module. See docs.
Example to get your requests:
.. code-block:: python
from atlassian import ServiceDesk
import requests
sd = ServiceDesk(
url='http://localhost:7990',
username='admin',
password='admin',
session=requests.Session())
data = sd.get_my_customer_requests()
print(data)
Using Insight (CMDB Tool for Jira):
.. code-block:: python
from atlassian import Insight
import requests
session = requests.Session()
insight = Insight(
url='http://localhost:7990',
username='admin',
password='admin',
session=session)
data = insight.get_object(88)
print(data)
Using Xray (Test Management tool for Jira):
.. code-block:: python
from atlassian import Xray
import requests
session = requests.Session()
xr = Xray(
url='http://localhost:7990',
username='admin',
password='admin',
session=session)
data = xr.get_tests('TEST-001')
print(data)
Using Bamboo:
.. code-block:: python
from atlassian import Bamboo
import requests
session = requests.Session()
bamboo = Bamboo(
url='http://localhost:6990/bamboo/',
token="<TOKEN>",
session=session)
data = bamboo.get_elastic_configurations()
print(data)
If you want to see the response in pretty print format JSON. Feel free for use construction like:
.. code-block:: python
from pprint import pprint
# you code here
# and then print using pprint(result) instead of print(result)
pprint(response)
How to contribute?
__________________
First of all, I am happy for any PR requests.
Let's fork and provide your changes :)
See the `Contribution Guidelines for this project`_ for details on how to make changes to this library.
.. _Contribution Guidelines for this project: CONTRIBUTING.rst
.. |Build Status| image:: https://github.com/atlassian-api/atlassian-python-api/workflows/Test/badge.svg?branch=master
:target: https://github.com/atlassian-api/atlassian-python-api/actions?query=workflow%3ATest+branch%3Amaster
:alt: Build status
.. |PyPI version| image:: https://badge.fury.io/py/atlassian-python-api.svg
:target: https://badge.fury.io/py/atlassian-python-api
:alt: PyPI version
.. |License| image:: https://img.shields.io/pypi/l/atlassian-python-api.svg
:target: https://pypi.python.org/pypi/atlassian-python-api
:alt: License
.. |Codacy Badge| image:: https://app.codacy.com/project/badge/Grade/2cca43995cf041b8b181e2b2ff04cee6
:target: https://app.codacy.com/gh/atlassian-api/atlassian-python-api/dashboard
:alt: Codacy Badge
.. |PyPI - Downloads| image:: https://static.pepy.tech/badge/atlassian-python-api/month
:alt: PyPI - Downloads
.. |Docs| image:: https://readthedocs.org/projects/atlassian-python-api/badge/?version=latest
:target: https://atlassian-python-api.readthedocs.io/?badge=latest
:alt: Documentation Status
.. |Discord| image:: https://img.shields.io/discord/756142204761669743.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2
:alt: Discord Chat
:target: https://discord.gg/FCJsvqh
Credits
_______
In addition to all the contributors we would like to thank these vendors:
* Atlassian_ for developing such a powerful ecosystem.
* JetBrains_ for providing us with free licenses of PyCharm_
* Microsoft_ for providing us with free licenses of VSCode_
* GitHub_ for hosting our repository and continuous integration
.. _Atlassian: https://www.atlassian.com/
.. _JetBrains: http://www.jetbrains.com
.. _PyCharm: http://www.jetbrains.com/pycharm/
.. _GitHub: https://github.com/
.. _Microsoft: https://github.com/Microsoft/vscode/
.. _VSCode: https://code.visualstudio.com/
Raw data
{
"_id": null,
"home_page": "https://github.com/atlassian-api/atlassian-python-api",
"name": "atlassian-python-api",
"maintainer": "Gonchik Tsymzhitov",
"docs_url": null,
"requires_python": null,
"maintainer_email": "gonchik.tsymzhitov@gmail.com",
"keywords": "atlassian jira core software confluence bitbucket bamboo crowd portfolio tempo servicedesk assets api",
"author": "Matt Harasymczuk",
"author_email": "matt@astrotech.io",
"download_url": "https://files.pythonhosted.org/packages/40/e8/f23b7273e410c6fe9f98f9db25268c6736572f22a9566d1dc9ed3614bb68/atlassian_python_api-4.0.7.tar.gz",
"platform": "Platform Independent",
"description": "============================\nAtlassian Python API wrapper\n============================\n|Build Status| |PyPI version| |PyPI - Downloads| |License| |Codacy Badge| |Docs| |Discord|\n\nWhat is it?\n___________\nThe **atlassian-python-api** library provides a **simple** and convenient way to interact with Atlassian products\n(such as Jira Service management, Jira Software, Confluence, Bitbucket and apps Insight, X-Ray) using Python.\nIt is based on the official REST APIs of these products, as well as additional private methods and protocols\n(such as xml+rpc and raw HTTP requests).\nThis library can be used to automate tasks, integrate with other tools and systems,\nand build custom applications that interact with Atlassian products.\nIt supports a wide range of Atlassian products, including Jira, Confluence, Bitbucket, StatusPage and others,\nand is compatible with both Atlassian Server and Cloud instances.\n\nOverall, the **atlassian-python-api** is a useful tool for Python developers who want to work with Atlassian products.\nIt is well-documented and actively maintained, and provides a convenient way to access the full range of\nfunctionality offered by the Atlassian REST APIs and made with love for Atlassian.\n\n\nDocumentation\n_____________\n\n`Documentation`_\n\n.. _Documentation: https://atlassian-python-api.readthedocs.io\n\nHow to Install?\n_______________\n\nFrom PyPI\n\n.. code-block:: console\n\n $ pip install atlassian-python-api\n\nFrom Source\n\n- Git clone repository\n- Use :code:`pip install -r requirements.txt` to install the required packages\n- or :code:`pipenv install && pipenv install --dev`\n\nExamples\n________\nMore **examples** in :code:`examples/` directory.\n\nHere's a short example of how to create a Confluence page:\n\n.. code-block:: python\n\n from atlassian import Confluence\n import requests\n # If you want to use a session, you can create it like this:\n session = requests.Session()\n # and pass it to the Confluence constructor\n confluence = Confluence(\n url='http://localhost:8090',\n username='admin',\n password='admin',\n session=session,)\n\n status = confluence.create_page(\n space='DEMO',\n title='This is the title',\n body='This is the body. You can use <strong>HTML tags</strong>!')\n\n print(status)\n\nPlease, note Confluence Cloud need to be used via token parameter.\nAnd here's another example of how to get issues from Jira using JQL Query:\n\n.. code-block:: python\n\n from atlassian import Jira\n import requests\n\n session = requests.Session()\n jira = Jira(\n url='http://localhost:8080',\n username='admin',\n password='admin',\n session=session) # Optional: use a session for persistent connections\n JQL = 'project = DEMO AND status IN (\"To Do\", \"In Progress\") ORDER BY issuekey'\n data = jira.jql(JQL)\n print(data)\n\nThe traditional jql method is deprecated for Jira Cloud users, as Atlassian has transitioned to a nextPageToken-based pagination approach instead of startAt. Use enhanced_jql for improved performance and future compatibility.\n\n.. code-block:: python\n\n from atlassian import Jira\n import requests\n session = requests.Session()\n jira = Jira(\n url='https://your-jira-instance.atlassian.net',\n username='your-email@example.com',\n password='your-api-token',\n cloud=True, # Ensure this is set to True for Jira Cloud\n session=session # Optional: use a session for persistent connections\n )\n JQL = 'project = DEMO AND status IN (\"To Do\", \"In Progress\") ORDER BY issuekey'\n # Fetch issues using the new enhanced_jql method\n data = jira.enhanced_jql(JQL)\n print(data)\n\nAlso, you can use the Bitbucket module e.g. for getting project list\n\n.. code-block:: python\n\n from atlassian import Bitbucket\n import requests\n\n session= requests.Session()\n bitbucket = Bitbucket(\n url='http://localhost:7990',\n username='admin',\n password='admin',\n session=session)\n\n data = bitbucket.project_list()\n print(data)\n\nNow you can use the Jira Service Desk module. See docs.\nExample to get your requests:\n\n.. code-block:: python\n\n from atlassian import ServiceDesk\n import requests\n sd = ServiceDesk(\n url='http://localhost:7990',\n username='admin',\n password='admin',\n session=requests.Session())\n\n data = sd.get_my_customer_requests()\n print(data)\n\nUsing Insight (CMDB Tool for Jira):\n\n.. code-block:: python\n\n from atlassian import Insight\n import requests\n\n session = requests.Session()\n insight = Insight(\n url='http://localhost:7990',\n username='admin',\n password='admin',\n session=session)\n\n data = insight.get_object(88)\n print(data)\n\n\nUsing Xray (Test Management tool for Jira):\n\n.. code-block:: python\n\n from atlassian import Xray\n import requests\n\n session = requests.Session()\n xr = Xray(\n url='http://localhost:7990',\n username='admin',\n password='admin',\n session=session)\n\n data = xr.get_tests('TEST-001')\n print(data)\n\nUsing Bamboo:\n\n.. code-block:: python\n\n from atlassian import Bamboo\n import requests\n\n session = requests.Session()\n bamboo = Bamboo(\n url='http://localhost:6990/bamboo/',\n token=\"<TOKEN>\",\n session=session)\n\n data = bamboo.get_elastic_configurations()\n print(data)\n\nIf you want to see the response in pretty print format JSON. Feel free for use construction like:\n\n.. code-block:: python\n\n from pprint import pprint\n # you code here\n # and then print using pprint(result) instead of print(result)\n pprint(response)\n\nHow to contribute?\n__________________\nFirst of all, I am happy for any PR requests.\nLet's fork and provide your changes :)\nSee the `Contribution Guidelines for this project`_ for details on how to make changes to this library.\n\n.. _Contribution Guidelines for this project: CONTRIBUTING.rst\n.. |Build Status| image:: https://github.com/atlassian-api/atlassian-python-api/workflows/Test/badge.svg?branch=master\n :target: https://github.com/atlassian-api/atlassian-python-api/actions?query=workflow%3ATest+branch%3Amaster\n :alt: Build status\n.. |PyPI version| image:: https://badge.fury.io/py/atlassian-python-api.svg\n :target: https://badge.fury.io/py/atlassian-python-api\n :alt: PyPI version\n.. |License| image:: https://img.shields.io/pypi/l/atlassian-python-api.svg\n :target: https://pypi.python.org/pypi/atlassian-python-api\n :alt: License\n.. |Codacy Badge| image:: https://app.codacy.com/project/badge/Grade/2cca43995cf041b8b181e2b2ff04cee6\n :target: https://app.codacy.com/gh/atlassian-api/atlassian-python-api/dashboard\n :alt: Codacy Badge\n.. |PyPI - Downloads| image:: https://static.pepy.tech/badge/atlassian-python-api/month\n :alt: PyPI - Downloads\n.. |Docs| image:: https://readthedocs.org/projects/atlassian-python-api/badge/?version=latest\n :target: https://atlassian-python-api.readthedocs.io/?badge=latest\n :alt: Documentation Status\n.. |Discord| image:: https://img.shields.io/discord/756142204761669743.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2\n :alt: Discord Chat\n :target: https://discord.gg/FCJsvqh\n\n\nCredits\n_______\nIn addition to all the contributors we would like to thank these vendors:\n\n* Atlassian_ for developing such a powerful ecosystem.\n* JetBrains_ for providing us with free licenses of PyCharm_\n* Microsoft_ for providing us with free licenses of VSCode_\n* GitHub_ for hosting our repository and continuous integration\n\n.. _Atlassian: https://www.atlassian.com/\n.. _JetBrains: http://www.jetbrains.com\n.. _PyCharm: http://www.jetbrains.com/pycharm/\n.. _GitHub: https://github.com/\n.. _Microsoft: https://github.com/Microsoft/vscode/\n.. _VSCode: https://code.visualstudio.com/\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Python Atlassian REST API Wrapper",
"version": "4.0.7",
"project_urls": {
"Download": "https://github.com/atlassian-api/atlassian-python-api",
"Homepage": "https://github.com/atlassian-api/atlassian-python-api"
},
"split_keywords": [
"atlassian",
"jira",
"core",
"software",
"confluence",
"bitbucket",
"bamboo",
"crowd",
"portfolio",
"tempo",
"servicedesk",
"assets",
"api"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "1d83e4f9976ce3c933a079b8931325e7a9c0a8bba7030a2cb85764c0048f3479",
"md5": "4c160e4b908e1465f63f2d8cce2279b5",
"sha256": "46a70cb29eaab87c0a1697fccd3e25df1aa477e6aa4fb9ba936a9d46b425933c"
},
"downloads": -1,
"filename": "atlassian_python_api-4.0.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4c160e4b908e1465f63f2d8cce2279b5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 197746,
"upload_time": "2025-08-21T13:19:39",
"upload_time_iso_8601": "2025-08-21T13:19:39.044086Z",
"url": "https://files.pythonhosted.org/packages/1d/83/e4f9976ce3c933a079b8931325e7a9c0a8bba7030a2cb85764c0048f3479/atlassian_python_api-4.0.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "40e8f23b7273e410c6fe9f98f9db25268c6736572f22a9566d1dc9ed3614bb68",
"md5": "02f50a1c00b19d3d751309ad6dd7f78c",
"sha256": "8d9cc6068b1d2a48eb434e22e57f6bbd918a47fac9e46b95b7a3cefb00fceacb"
},
"downloads": -1,
"filename": "atlassian_python_api-4.0.7.tar.gz",
"has_sig": false,
"md5_digest": "02f50a1c00b19d3d751309ad6dd7f78c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 271149,
"upload_time": "2025-08-21T13:19:40",
"upload_time_iso_8601": "2025-08-21T13:19:40.746284Z",
"url": "https://files.pythonhosted.org/packages/40/e8/f23b7273e410c6fe9f98f9db25268c6736572f22a9566d1dc9ed3614bb68/atlassian_python_api-4.0.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-21 13:19:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "atlassian-api",
"github_project": "atlassian-python-api",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "Deprecated",
"specs": []
},
{
"name": "requests",
"specs": [
[
">=",
"2.8.1"
]
]
},
{
"name": "oauthlib",
"specs": []
},
{
"name": "requests-oauthlib",
"specs": []
},
{
"name": "requests-kerberos",
"specs": [
[
"==",
"0.14.0"
]
]
},
{
"name": "typing-extensions",
"specs": []
},
{
"name": "jmespath",
"specs": []
},
{
"name": "beautifulsoup4",
"specs": []
},
{
"name": "urllib3",
"specs": []
}
],
"tox": true,
"lcname": "atlassian-python-api"
}