Metadata-Version: 2.4
Name: pycti
Version: 6.9.16
Summary: Python API client for OpenCTI.
Home-page: https://github.com/OpenCTI-Platform/opencti/client-python
Author: Filigran
Author-email: contact@filigran.io
Maintainer: Filigran
License: Apache
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Natural Language :: English
Classifier: Natural Language :: French
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Security
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: boto3~=1.38.27
Requires-Dist: datefinder~=0.7.3
Requires-Dist: pika~=1.3.0
Requires-Dist: pydantic<3,>=2.8.2
Requires-Dist: python-magic~=0.4.27; sys_platform == "linux" or sys_platform == "darwin"
Requires-Dist: python-magic-bin~=0.4.14; sys_platform == "win32"
Requires-Dist: python_json_logger~=3.3.0
Requires-Dist: PyYAML~=6.0
Requires-Dist: requests<3,>=2.32.0
Requires-Dist: setuptools~=80.9.0
Requires-Dist: cachetools~=5.5.2
Requires-Dist: prometheus-client~=0.22.1
Requires-Dist: opentelemetry-api~=1.35.0
Requires-Dist: opentelemetry-sdk~=1.35.0
Requires-Dist: deprecation~=2.1.0
Requires-Dist: fastapi<0.125.0,>=0.124.0
Requires-Dist: uvicorn[standard]<0.36.0,>=0.34.0
Requires-Dist: filigran-sseclient>=1.0.2
Requires-Dist: stix2~=3.0.1
Provides-Extra: dev
Requires-Dist: black~=25.11.0; extra == "dev"
Requires-Dist: build~=1.4.0; extra == "dev"
Requires-Dist: isort~=6.0.0; extra == "dev"
Requires-Dist: types-pytz~=2025.2.0.20250326; extra == "dev"
Requires-Dist: pre-commit~=4.5.0; extra == "dev"
Requires-Dist: pytest-cases~=3.9.1; extra == "dev"
Requires-Dist: pytest-cov~=7.0.0; extra == "dev"
Requires-Dist: pytest_randomly~=4.0.1; extra == "dev"
Requires-Dist: pytest~=8.4.1; extra == "dev"
Requires-Dist: types-python-dateutil~=2.9.0; extra == "dev"
Requires-Dist: wheel~=0.45.1; extra == "dev"
Provides-Extra: doc
Requires-Dist: sphinx-autoapi>=3.0.0; extra == "doc"
Requires-Dist: sphinx<9,>=8.2; extra == "doc"
Requires-Dist: sphinx-autodoc-typehints>=3.0.0; extra == "doc"
Requires-Dist: sphinx-rtd-theme>=3.0.0; extra == "doc"

# OpenCTI client for Python

[![Website](https://img.shields.io/badge/website-opencti.io-blue.svg)](https://opencti.io)
[![readthedocs](https://readthedocs.org/projects/opencti-python-client/badge/?style=flat)](https://opencti-python-client.readthedocs.io/en/latest/)
[![Number of PyPI downloads](https://img.shields.io/pypi/dm/pycti.svg)](https://pypi.python.org/pypi/pycti/)
[![Slack Status](https://img.shields.io/badge/slack-3K%2B%20members-4A154B)](https://community.filigran.io)

The official OpenCTI Python client helps developers to use the OpenCTI API by providing easy to use methods and utils.
This client is also used by some OpenCTI components.

## Install

To install the latest Python client library, please use `pip`:

```bash
$ pip3 install pycti
```

## Local development

```bash
# Fork the current repository, then clone your fork
$ git clone https://github.com/YOUR-USERNAME/opencti.git
$ cd client-python
$ git remote add upstream https://github.com/OpenCTI-Platform/opencti.git
# Create a branch for your feature/fix
$ git checkout -b [branch-name]
# Create a virtualenv
$ cd client-python
$ python3 -m venv .venv
$ source .venv/bin/activate
# Install the client-python and dependencies for the development and the documentation
$ python3 -m pip install -e .[dev,doc]
# Set up the git hook scripts
$ pre-commit install
# Create your feature/fix
# Create tests for your changes
$ pytest
# Push you feature/fix on Github
$ git add [file(s)]
$ git commit -m "[descriptive message]"
$ git push origin [branch-name]
# Open a pull request
```

### Install the package locally

```bash
$ pip install -e .
```

## Documentation

### Client usage

To learn about how to use the OpenCTI Python client and read some examples and cases, refer to [the client documentation](https://opencti-python-client.readthedocs.io/en/latest/client_usage/getting_started.html).

### API reference

To learn about the methods available for executing queries and retrieving their answers, refer to [the client API Reference](https://opencti-python-client.readthedocs.io/en/latest/pycti/pycti.html).

## Tests

### Install dependencies

```bash
$ pip install -r ./test-requirements.txt
```

[pytest](https://docs.pytest.org/en/7.2.x/) is used to launch the tests.

### Launch tests

#### Prerequisite

Your OpenCTI API should be running.
Your conftest.py should be configured with your API url, your token, and if applicable, your mTLS cert/key.

#### Launching

Unit tests
```bash
$ pytest ./tests/01-unit/
```

Integration testing
```bash
$ pytest ./tests/02-integration/
```

Example testing:

> OpenCTI must be running

```bash
cd examples
# Configure with you local instance of OpenCTI
export OPENCTI_API_URL="http://localhost:4000"
export OPENCTI_API_TOKEN="xxxxxxxxxxxxxxxxxxxxxx"

#Run one example file
python get_indicators_of_malware.py
```

## About

OpenCTI is a product designed and developed by the company [Filigran](https://filigran.io).

<a href="https://filigran.io" alt="Filigran"><img src="https://github.com/OpenCTI-Platform/opencti/raw/master/.github/img/logo_filigran.png" width="300" /></a>
