---
# System prepended metadata

title: PEOPL API (Baileys API)

---

# PEOPL APIs

This documentation provides an overview of the system's APIs and its architecture. It explains how each component interacts to deliver core functionalities.

![image](https://hackmd.io/_uploads/rykZ5KRgJg.png)

---

## Restart Server (USE WITH CAUTION)

#### Remove Scheduled Messages
1. Log in to [MongoDB](https://account.mongodb.com/account/login) with contacto account. 
2. Find cluster0 and collections tab
3. Select the collection of your server (peopl, peopl_sales, peopl_assitant).
4. Delete the table scheduledMessages in the selected collection.

#### Deploy the server
1. Log in to [Heroku](https://id.heroku.com/login) with contacto account. 
2. Find the application of your server (peopl, peopl_sales, peopl_assitant).
3. Go to the deploy tab.
4. Find manual deploy and execute the deploy in the default branch.

---

## Base URLs

- **PEOPL API:** `https://peopl-660c92ba0c89.herokuapp.com`
- **PEOPL Sales API:** `https://peopl-sales-7c6128fcf4b5.herokuapp.com`
- **PEOPL Assistant API:** `https://peopl-assistant-5c83f6850119.herokuapp.com`
- **URUS API:** `https://urus.peopl.health`
- **SIENNA API:** `https://sienna.peopl.health`

---

## Message Management

### Send Messages
```bash
URL = "{Base URL}/send-message"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      'code': [CODE],
      'message': [MESSAGE],
      (optional) 'hidePreview': true | false, # the default is false
      (optional) 'fileType': "document" | "image",
      (optional) 'fileUrl': [URL],
      (optional) 'sendTime': [TIME], # e.g. "2024-09-06 15:05"
      (optional) 'timeZone': [TIMEZONE], 
      # e.g. "America/Lima", "America/Mexico_City"
      (optional) 'delayed': false # e.g.true | false, default. false
    })
}
```

##### How to get an API KEY?
Ask the owner of the service to give a key

##### Which is my code?
It depends:

- To send a message to an specific number: 
```bash
    CODE = "[country code][phone number]@s.whatsapp.net"
    Example = "51989898989@s.whatsapp.net"
```
- To send a message to a group look into Group table inside General base (Airtable):
```bash
    CODE = "[group_id]"
    Example = "12351989898989@g.us
```

##### What kinf of text can go inside the message?
Anything that can be written with ascii, including special characters and emojis.

##### Can I send media?
Only images (png) and documents (pdf)

##### Which is the format for timezones?
Only [IANA - TZ identifier](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) format is accepted.

---

### Send Bulk Messages

#### Option 1: Send a generic message to a set of codes (individual/group)
```bash
URL = "{Base URL}/send-bulk-message"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      'codes': [CODE1, CODE2, ...],
      'message': [MESSAGE],
      (optional) 'hidePreview': true | false, # the default is false
      (optional) 'fileType': "document" | "image",
      (optional) 'fileUrl': [URL],
      (optional) 'sendTime': [TIME], # e.g. "2024-09-06 15:05"
      (optional) 'timeZone': [TIMEZONE], # e.g. "America/Lima"
      (optional) 'delayed': false # e.g.true | false, default. false
    })
}
```
#### Option 2: Send a custom message to a set of individuals based on information in Airtable
```bash
URL = "{Base URL}/send-bulk-message-airtable"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      'message': [MESSAGE],
      (optional) 'hidePreview': true | false, # the default is false
      (optional) 'fileType': "document" | "image",
      (optional) 'fileUrl': [URL],
      'baseId': [BASEID],
      'tableName': [TABLENAME],
      'columnPhone': [COLUMNPHONE],
      (optional) 'condition': [CONDITION],
      (optional) 'sendTime': [TIME], # e.g. "2024-09-06 15:05"
      (optional) 'timeZone': [TIMEZONE], # e.g. "America/Lima"
      (optional) 'delayed': false # e.g.true | false, default. false
    })
}
```

---

## Poll Management

### Create Polls
```bash
URL = "{Base URL}/create-poll"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      'code': [CODE], # e.g. "51989898989@s.whatsapp.net"
      'question': [QUESTION], # e.g. "Que opción eliges?"
      'options': [OPTION1, OPTION2, ...], # e.g. ["A", "B", "C"]
      'multipleAnswers': true | false
    })
}
```

---

## Group Management

### Create Groups
```bash
URL = "{Base URL}/create-group"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "name": [NAME],
      "description": [DESCRIPTION] (can be empty),
      "message": [MESSAGE] (optional),
      "admins": [CODE1, CODE2, ...],
      "members": [CODE1, CODE2, ...]
    })
}
```


### Get Group Members
```bash
URL = "{Base URL}/get-group-members"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "groupIds": [GROUP_ID_1, GROUP_ID_2, ...]
    })
}
```


### Remove Group Members
```bash
URL = "{Base URL}/remove-members"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "groupId": [GROUP_ID], # e.g. "120363317425615032@g.us"
      "codes": [CODE1, CODE2, ...], # e.g. [51949614195@s.whatsapp.net", ...]
    })
}
```


---

## Calendar Management


### Delete Calendar Event [USE WITH CAUTION]

```bash
URL = "{Base URL}/delete-event"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "eventId": [EVENTID] # e.g. "14msi6l3hpsvmkv97gde0fgr97"
      "userEmail": [USEREMAIL] # e.g. "contacto@peopl.health"
    })
}
```


---

# PEOPL Sales 

## Messages

### Get Last Interaction
```bash
URL = "{Base URL}/get-last-interaction"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "code": CODE, # e.g. "51949614195@s.whatsapp.net"
    })
}
```

## Groups

### Verify code
```bash
URL = "{Base URL}/verify-code"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "code": CODE, # e.g. "51949614195@s.whatsapp.net"
    })
}
RESPONSE = {
    status: true,
    response: "5215592261426@s.whatsapp.net" # e.g. null
}
```

## Assistant Management

### Create Assistant
```bash
URL = "{Base URL}/create-assistant"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "assistant_id": ASSISTANT_ID,
      "codes": [CODE1, CODE2, ...], # e.g. [51949614195@s.whatsapp.net", ...]
      "instrucciones": [INSTRUCTION1, INSTRUCTION2, ...], 
      "messages": [MESSAGE1, MESSAGE2, ...], 
    })
}
```


### Add a Message to an Assistant
```bash
URL = "{Base URL}/add-msg-assistant"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "assistant_id": ASSISTANT_ID,
      "codes": [CODE1, CODE2, ...], # e.g. [51949614195@s.whatsapp.net", ...] 
      "messages": [MESSAGE1, MESSAGE2, ...], 
    })
}
```


### Change active status of an Assistant
```bash
URL = "{Base URL}/active-assistant"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "assistant_id": ASSISTANT_ID,
      "code": CODE, # e.g. "51949614195@s.whatsapp.net"
      "active": false | true, 
    })
}
```


---

# PEOPL Assistant

## Assistant Management

### Send Assistant

```bash
URL = "{Base URL}/create-assistant"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "codes": [CODE1, CODE2, ...] # e.g. ["120363317425615032@g.us"]
      "instrucciones": [INSTRUCTION1, INSTRUCTION2, ...], 
      "messages": [MESSAGE1, MESSAGE2, ...], 
    })
}
```


### Add a Message to an Assistant
```bash
URL = "{Base URL}/add-msg-assistant"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "code": CODE, # e.g. "120363317425615032@g.us"
      "messages": [MESSAGE1, MESSAGE2, ...], 
      (optional) "reply": true | false, # the default is false
    })
}
```


### Add a Instruction to an Assistant
```bash
URL = "{Base URL}/add-instruction-assistant"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "code": CODE, # e.g. "120363317425615032@g.us"
      "instruction": INSTRUCTION # "Envia un saludo al paciente"
    })
}
```


### Change active status of an Assistant
```bash
URL = "{Base URL}/active-assistant"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "code": CODE, # e.g. "51949614195@s.whatsapp.net"
      "active": false | true, 
    })
}
```


### Change stop status of an Assistant
```bash
URL = "{Base URL}/stop-assistant"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "code": CODE, # e.g. "51949614195@s.whatsapp.net"
      "stop": false | true, 
    })
}
```


### Switch an Assistant 
```bash
URL = "{Base URL}/switch-assistant"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "code": CODE, # e.g. "120363317425615032@g.us"
      "assistant_id": ASSISTANT_ID, 
    })
}
```


## Meeting bot (SIENNA)

### Record a video
```bash
URL = "{Base URL}/record-meeting"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "eventId": EVENTID,
    })
}
```

### Process video from drive
```bash
URL = "{Base URL}/process-recording-calendar"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "eventId": EVENTID,
    })
}
```


## LLMs processing (URUS)

### Process images
```bash
URL = "{Base URL}/process-analysis"
JSON = {
    method: "POST",
    headers: {
      'Content-Type': 'application/json',
      'x-api-key': [API KEY]
      },
    body: JSON.stringify({
      "url": [URL], # e.g. public URL
      "table": [TABLE], # e.g. estudios
      "nameCol": [NAME], # e.g. name
      "dateCol": [DATE], # e.g. date
      "descripCol": [DESCRIPTION], # e.g. description
      "recordId": [RECORD_ID] # e.g. rech5ZbIOZl9IfT4Y
    })
}
```

