README.md•8.32 kB
# pieces-medullar
Library of [Activepieces](https://www.activepieces.com/) for [Medullar Solutions](https://www.medullar.com)
## Overview
`pieces-medullar` is a library designed to integrate Medullar Solutions with the Activepieces framework, enabling seamless automation and extensibility.
## Features
- **Extensibility**: Easily integrate with other services.
- **Type-Safe**: Built with TypeScript for robust type checking.
- **Community-Driven**: Contributions are welcome to enhance its capabilities.
## Contributing
We welcome contributions! Please refer to the [Contributing Guide](https://www.activepieces.com/docs/contributing/overview) for more details.
## License
This library is released under the [MIT License](https://opensource.org/licenses/MIT).
## API Documentation
### Base URL
`https://api.medullar.com`
### Authentication
All endpoints require authentication. Include a valid access token in the `Authorization` header:
`Authorization: Bearer <your_token_here>`
### Endpoints
#### Get User Details
**GET** `/auth/v1/users/me/`
Retrieve details about the currently authenticated user.
* URL: `/auth/v1/users/me/`
* Method: GET
* Auth required: Yes
* Example Response
```json
{
"id": 360,
"uuid": "7e282906-b487-46d3-9e43-8a4fe5b27407",
"username": "marc@medullar.com",
"email": "marc@medullar.com",
"first_name": "Marc",
"last_name": "Llopart",
"language": "en",
"role": "super_admin",
"status": "active",
"onboarding_status": "completed",
"other_data": {},
"salesforce_metadata": {},
"is_active": true,
"date_joined": "2025-03-06T13:49:50Z",
"last_login": "2025-05-08T08:19:43.969447Z",
"created_at": "2025-03-06T13:49:50.011260Z",
"updated_at": "2025-04-02T16:23:57.557045Z",
"devices": null,
"company": {
"id": 26567447,
"uuid": "3d49382e-19cb-431b-90a0-dc8f617436f5",
"name": "Medullar Solutions",
"stripe_promotion_code": ""
},
"num_days_until_trial_expiration_date": -1
}
```
#### Get User Medullar Spaces
**GET** `/explorator/v1/spaces/?user={user_uuid}&limit=1000&offset=0`
Retrieve a list of Medullar spaces associated with a specific user.
* URL: `/explorator/v1/spaces/`
* Method: GET
* Query Parameters:
* user: UUID of the user
* limit: Number of results to return
* offset: Pagination offset
* Auth required: Yes
* Example Response
```json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 496,
"uuid": "4d6a15d0-246f-447a-b53e-5dd9101d53c6",
"name": "Internal Strategy",
"is_my_space": true,
"context": "Quarterly strategy space including roadmap planning and executive updates.",
"questions": [],
"expiration_date": "9999-12-31T00:00:00Z",
"created_at": "2025-05-05T09:18:28.087134Z",
"updated_at": "2025-05-05T09:18:28.087145Z",
"records": null,
"users": null,
"record_count": 0,
"company": {
"id": 47,
"uuid": "3d49382e-19cb-431b-90a0-dc8f617436f5",
"name": "Medullar Solutions",
"created_at": "2024-02-01T14:05:20.245119Z",
"updated_at": "2025-05-07T15:51:56.077837Z"
},
"role": "owner"
}
]
}
```
#### Get Chats in a Space
**GET** `/explorator/v1/chats/?space={spaceId}&limit=1000&offset=0`
Get a list of chats within a given Medullar space.
* URL: `/explorator/v1/chats/`
* Method: GET
* Query Parameters:
* space: ID of the space
* limit, offset: Pagination controls
* Auth required: Yes
* Example response
```json
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 676,
"uuid": "7904e660-ed82-47f1-a8cb-635458c0c0aa",
"name": "automated",
"description": "",
"created_at": "2025-05-07T08:39:35.156881Z",
"updated_at": "2025-05-07T08:39:35.484367Z",
"space": {
"uuid": "1fdda622-c253-4325-bb82-95efd47051fb",
"name": "hello"
}
}
]
}
```
#### Create a new record in a Space
**POST** `/explorator/v1/records/`
Add a new record to a Medullar space.
* URL: `/explorator/v1/records/`
* Method: POST
* Auth required: Yes
* Body Parameters (JSON):
```json
{
"user": {
"uuid": "7e282906-b487-46d3-9e43-8a4fe5b27407"
},
"spaces": [
{
"uuid": "1fdda622-c253-4325-bb82-95efd47051fb"
}
],
"data": {
"content": "let's add text to a space",
"url": ""
},
"source": "text",
"company": {
"uuid": "3d49382e-19cb-431b-90a0-dc8f617436f5"
}
}
```
source can be `text` `url` `file` `image`
* Example response
```json
{
"id": 2859,
"uuid": "e50e8d79-02e8-483f-a516-3f93a9f665e9",
"name": "let's add text to a space...",
"source": "text",
"data": {
"content": "let's add text to a space",
"url": ""
},
"content_type": "text",
"action": "add_to_space",
"hash_string": "8664fdeef5dd7b78166f72d2dada6d375a5baebeffe75",
"status": "pending",
"summary": "",
"started_at": null,
"finished_at": null,
"processing_time": null,
"num_retries": 0,
"worker_task_id": "",
"created_at": "2025-05-08T08:33:25.224377Z",
"updated_at": "2025-05-08T08:33:25.228917Z",
"company": {
"id": 47,
"uuid": "3d49382e-19cb-431b-90a0-dc8f617436f5",
"name": "Medullar Solutions",
"created_at": "2024-02-01T14:05:20.245119Z",
"updated_at": "2025-05-07T15:51:56.077837Z"
},
"user": {
"uuid": "7e282906-b487-46d3-9e43-8a4fe5b27407"
}
}
```
#### Create a New Chat in a Space
**POST** `/explorator/v1/chats/`
Create a new chat thread within a Medullar space.
* URL: `/explorator/v1/chats/`
* Method: POST
* Auth required: Yes
* Body Parameters (JSON):
```json
{
"space": {
"uuid": "1fdda622-c253-4325-bb82-95efd47051fb"
},
"name": "New Chat"
}
```
* Example response
```json
{
"id": 698,
"uuid": "9d5eec19-1e1f-4f7a-90ae-415077a8ae63",
"name": "New Chat",
"description": "",
"created_at": "2025-05-08T08:38:26.426639Z",
"updated_at": "2025-05-08T08:38:26.426649Z",
"space": {
"uuid": "1fdda622-c253-4325-bb82-95efd47051fb",
"name": "hello"
}
}
```
#### Post a Message in a Chat
**POST** `/explorator/v1/messages/?chat={chatId}`
Post a new message to an existing chat in a Medullar space.
* URL: /explorator/v1/messages/
* Query Parameter: chat - ID of the chat
* Method: POST
* Auth required: Yes
* Body Parameters (JSON):
```json
{
"chat": {
"uuid": "9d5eec19-1e1f-4f7a-90ae-415077a8ae63"
},
"text": "@medullar new chat",
"user_email": "marc@medullar.com",
"user_uuid": "7e282906-b487-46d3-9e43-8a4fe5b27407",
"is_bot": false,
"created_at": "2025-05-08T08:38:26.504Z",
"is_reasoning_selected": false,
"selected_mode": "single_agent",
"user_name": "marc"
}
```
* Example response
```
{
"id": 2319,
"uuid": "68fafef2-949a-409c-b7cd-21445f5a241b",
"text": "@medullar new chat",
"user_uuid": "7e282906-b487-46d3-9e43-8a4fe5b27407",
"user_email": "marc@medullar.com",
"user_first_name": "Marc",
"user_last_name": "Llopart",
"is_bot": false,
"created_at": "2025-05-08T08:38:26.713567Z",
"updated_at": "2025-05-08T08:38:26.713577Z",
"is_reasoning_selected": false,
"selected_mode": "single_agent",
"source": "external_api",
"chat": {
"uuid": "9d5eec19-1e1f-4f7a-90ae-415077a8ae63",
"name": "New Chat"
}
}
```
source should be `external_api` if you want to get the response in the API call, `internal_api` will return the response in a websocket.
#### Create a New Space
**POST** `/explorator/v1/spaces/`
Create a new Medullar space.
* URL: `/explorator/v1/spaces/`
* Method: POST
* Auth required: Yes
* Body Parameters (JSON):
```json
{
"name": "test space",
"company": {
"uuid": "3d49382e-19cb-431b-90a0-dc8f617436f5"
}
}
```
* Example response
```json
{
"id": 501,
"uuid": "415ab840-19b8-49dc-9aa0-d13a84ac5858",
"name": "test space",
"is_my_space": false,
"context": "",
"questions": [],
"expiration_date": "9999-12-31T00:00:00Z",
"created_at": "2025-05-08T08:41:35.786369Z",
"updated_at": "2025-05-08T08:41:35.786379Z",
"records": null,
"users": null,
"company": {
"id": 47,
"uuid": "3d49382e-19cb-431b-90a0-dc8f617436f5",
"name": "Medullar Solutions",
"created_at": "2024-02-01T14:05:20.245119Z",
"updated_at": "2025-05-07T15:51:56.077837Z"
},
"role": "owner"
}
```