Metadata-Version: 2.4
Name: apilinker
Version: 0.6.1
Summary: A universal bridge to connect, map, and automate data transfer between any two REST APIs
Home-page: https://github.com/kkartas/APILinker
Author: K. Kartas
Author-email: "K. Kartas" <kkartas@users.noreply.github.com>
License: MIT
Project-URL: Homepage, https://github.com/kkartas/APILinker
Project-URL: Bug Tracker, https://github.com/kkartas/APILinker/issues
Project-URL: Documentation, https://apilinker.readthedocs.io/
Keywords: api,integration,connector,data transfer,rest
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx>=0.23.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: typer>=0.7.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: croniter>=1.3.8
Requires-Dist: rich>=12.6.0
Requires-Dist: cryptography>=41.0.0
Requires-Dist: jsonschema>=4.18.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: flake8>=6.0.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"
Requires-Dist: types-croniter; extra == "dev"
Requires-Dist: types-PyYAML; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: bump-my-version>=0.18.0; extra == "dev"
Provides-Extra: mq
Requires-Dist: pika>=1.3.0; extra == "mq"
Requires-Dist: redis>=5.0.0; extra == "mq"
Requires-Dist: boto3>=1.28.0; extra == "mq"
Requires-Dist: kafka-python>=2.0.2; extra == "mq"
Provides-Extra: docs
Requires-Dist: mkdocs>=1.5.0; extra == "docs"
Requires-Dist: mkdocs-material>=9.5.0; extra == "docs"
Requires-Dist: mkdocstrings[python]>=0.24.0; extra == "docs"
Requires-Dist: mkdocs-minify-plugin>=0.7.0; extra == "docs"
Requires-Dist: mkdocs-git-revision-date-localized-plugin>=1.2.0; extra == "docs"
Provides-Extra: webhooks
Requires-Dist: fastapi>=0.100.0; extra == "webhooks"
Requires-Dist: uvicorn>=0.23.0; extra == "webhooks"
Requires-Dist: pyjwt>=2.8.0; extra == "webhooks"
Dynamic: author
Dynamic: home-page
Dynamic: license-file

# ApiLinker

[![PyPI version](https://badge.fury.io/py/apilinker.svg)](https://badge.fury.io/py/apilinker)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/kkartas/APILinker/HEAD?labpath=examples%2FApiLinker_Research_Tutorial.ipynb)
[![Documentation](https://img.shields.io/badge/docs-mkdocs-blue)](https://kkartas.github.io/APILinker/)

**A universal bridge to connect, map, and automate data transfer between any two REST APIs.**

---

## 📚 Documentation

Full documentation is available at **[https://kkartas.github.io/APILinker/](https://kkartas.github.io/APILinker/)**.

## 🚀 Quick Install

```bash
pip install apilinker
```

## ⭐ Message Queue Connectors

Message-queue connectors are optional.

```bash
pip install apilinker[mq]
```

Minimal example (worker loop):

```python
from apilinker.core.error_handling import DeadLetterQueue
from apilinker.core.message_queue import MessagePipeline, MessageWorker
from apilinker.core.message_queue_connectors import RabbitMQConnectorPlugin

consumer = RabbitMQConnectorPlugin()
producer = RabbitMQConnectorPlugin()

consumer_conn = consumer.connect(host="localhost")
producer_conn = producer.connect(host="localhost")

pipeline = MessagePipeline(
    consumer=consumer,
    producer=producer,
    dlq=DeadLetterQueue("./dlq"),
)

worker = MessageWorker(
    pipeline,
    consumer_connection=consumer_conn,
    producer_connection=producer_conn,
    source="input_queue",
    default_destination="output_queue",
)

worker.run()
```

## 🌟 Features

- 🔄 **Universal Connectivity** - Connect any two REST APIs.
- 🗺️ **Powerful Mapping** - Transform data with ease.
- ⭐ **Event-Driven Pipelines** - Optional message queue connectors (RabbitMQ, Redis Pub/Sub, AWS SQS, Kafka).
- 🔒 **Secure** - Enterprise secret management (Vault, AWS, Azure, GCP).
- 🧬 **Scientific Connectors** - Built-in support for NCBI, arXiv, and more.

## 🤝 Contributing

We welcome contributions! Please see our [Contributing Guide](docs/developer-guide/contributing.md) for details.

## 📄 License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
