Metadata-Version: 2.4
Name: MagicFeedback
Version: 1.0.16
Summary: SDK for MagicFeedback API
Home-page: https://github.com/MagicFeedback/magicfeedback_python_sdk
Author: Francisco Arias
Author-email: Francisco Arias <farias@magicfeedback.io>
Project-URL: Homepage, https://github.com/MagicFeedback/magicfeedback_python_sdk
Project-URL: Issues, https://github.com/MagicFeedback/magicfeedback_python_sdk/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENCE
Dynamic: author
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

# MagicFeedback Python SDK

Python SDK for the MagicFeedback API.

## Installation

```bash
pip install MagicFeedback
```

> Note: the distribution name on PyPI is `MagicFeedback`, but the import name is `magicfeedback_sdk`.

## Usage

```python
from magicfeedback_sdk import MagicFeedback

client = MagicFeedback("email", "password")
```


## API Reference

### `client.feedbacks`
- `create(feedback)` — creates a new feedback item. Required fields: `name`, `type`, `identity`, `integrationId`, `companyId`, `productId`.
- `get(filter=None)` — lists feedback items.
- `get_id(feedback_id, filter=None)` — retrieves a specific feedback item.
- `update(feedback_id, feedback)` — updates a feedback item.
- `delete(feedback_id)` — deletes a feedback item.
- `upload_attachment(feedback_id, file_path, filename=None, extra_data=None)` — uploads a file and attaches it to a feedback.

### `client.contacts`
- `create(contact)`, `get(filter=None)`, `update(contact_id, contact)`, `delete(contact_id)`

### `client.campaigns`
- `create(campaign)`, `get(filter=None)`
- `create_session(campaign_id, session)`, `get_sessions(campaign_id, filter=None)`, `get_sessions_feedbacks(campaign_id, filter=None)`

### `client.metrics`
- `get(filter=None)`

### `client.products`
- `get(filter=None)`

### `client.companies`
- `get(filter=None)`, `get_id(id, filter=None)`

### `client.integrations_questions`
- `get(integration_id, filter=None)`

### `client.reports`
- `get(filter=None)`, `get_newsletter(filter=None)`, `update(report_id, report)`

### `client.requests`
- `get(filter=None)`, `get_id(request_id, filter=None)`, `update(request_id, request)`

## Examples

```python
# Create a feedback
client.feedbacks.create({
    "name": "Test Feedback",
    "type": "APP",
    "identity": "MAGICFORM",
    "integrationId": "your-integration-id",
    "companyId": "YOUR_COMPANY",
    "productId": "YOUR_PRODUCT",
    "answers": [
        {"key": "score", "value": "4"},
        {"key": "comment", "value": "Great service!"},
    ],
})

# Get a feedback with its attachments
client.feedbacks.get_id(
    "<feedback_id>",
    filter={"include": [{"relation": "feedbackAttachments"}]}
)

# Upload a file attachment
client.feedbacks.upload_attachment(
    "<feedback_id>",
    file_path="/path/to/file.pdf",
    filename="report.pdf",          # optional, defaults to file name
    extra_data={"source": "crm"}    # optional, any JSON-serialisable dict
)
```

## Logging

```python
import logging
client.set_logging(logging.DEBUG)
```

## License

MIT

## Contact

farias@magicfeedback.io
