Skip to content

Commit

Permalink
docs: added README.md.
Browse files Browse the repository at this point in the history
  • Loading branch information
rodyherrera committed Feb 28, 2024
1 parent 63df7b0 commit 83f6737
Showing 1 changed file with 125 additions and 0 deletions.
125 changes: 125 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
## node-mailu
This client library provides a convenient way to interact with a Mailu API instance. It encapsulates the necessary details for authentication and interaction with various Mailu services.

**Reference:** Mailu's official RestAPI documentation.: [https://mailu.io/master/api.html](https://mailu.io/master/api.html)

### Installation
You can install node-mailu via npm:
```bash
npm install node-mailu
```

### Usage
```javascript
const axios = require('axios');
const MailuClient = require('node-mailu');

// Replace with your Mailu instance's endpoint and API key
const endpoint = 'https://mailu.yourdomain.com/api/v1';
const apiKey = 'YOUR_API_KEY';

const mailuClient = new MailuClient(endpoint, apiKey);

// Example: Creating a new user
(async () => {
try{
const user = await mailuClient.userService.createUser({
email: '[email protected]',
raw_password: 'yourpassword',
comment: 'New user account'
});
console.log('User created:', user.data);
}catch(error){
console.error('Error creating user:', error);
}
})();

```
[Your API key](https://mailu.io/master/api.html) is stored within the mailu directory on your system, contained within the .env environment file.

## Sections
* **MailuClient**
* **Constructor**
* **useAxios**
* **Services**
* **AliasService**
* **AlternativeService**
* **DomainService**
* **RelayService**
* **UserService**

## MailuClient
The core client for interacting with the Mailu API.
### Constructor
```javascript
constructor(endpoint, apiKey)
```
* **endpoint** (string): The base URL of your Mailu API instance.
* **apiKey** (string): An authorization key to access the Mailu API.

### useAxios
A utility method to handle API requests using Axios.
```javascript
useAxios(method, path, data)
```
* **method** (string): The HTTP method to use ('get', 'post', etc.).
* **path** (string): The endpoint path relative to the base URL.
* **data** (object, optional): Data to send in the request body.

**Returns:** A Promise resolving with the API response data, or rejecting with an error.

## Services
Each service represents a domain of functionality within the Mailu API.

### AliasService
Methods for managing email aliases in Mailu.

* **getAliases()** - Retrieves all aliases.
* **createAlias(body)** - Creates a new alias.
* **getAliasesFromDomain(domain)** - Retrieves aliases for a specific domain.
* **updateAlias(alias, body)** - Updates an existing alias.
* **getAlias(alias)** - Retrieves a single alias.
* **deleteAlias(alias)** - Deletes an alias.

### AlternativeService
Methods for managing alternative addresses (additional emails for receiving to a user's inbox).

* **getAlternatives()** - Retrieves all alternative addresses.
* **createAlternative(body)** - Creates a new alternative address.
* **getAlternative(alt)** - Retrieves details of an alternative address.
* **deleteAlternative(alt)** - Deletes an alternative address.

### DomainService
Methods for managing domains in Mailu.

* **getDomains()** - Lists all domains.
* **createDomain(body)** - Creates a new domain.
* **updateDomain(domain, body)** - Updates a domain.
* **getDomain(domain)** - Retrieves details of a domain.
* **deleteDomain(domain)** - Deletes a domain.
* **generateDomainKeys(domain)** - Generates DKIM keys for a domain.
* **getDomainManagers(domain)** - Lists managers for a domain.
* **createDomainManager(domain, body)** - Adds a new domain manager.
* **deleteDomainManager(domain, email)** - Removes a domain manager.
* **getDomainManager(domain, email)** - Retrieves details of a domain manager.
* **getUsersFromDomain(domain)** - Lists users of a domain.

### RelayService

Methods for managing email relays.

* **getRelays()** - Lists all relays.
* **createRelay(body)** - Creates a new relay.
* **updateRelay(name, body)** - Updates a relay.
* **getRelay(name)** - Gets details of a relay.
* **deleteRelay(name)** - Deletes a relay.

### UserService

Methods for managing Mailu users.

* **getUsers()** - Lists all users.
* **createUser(body)** - Creates a new user.
* **updateUser(email, body)** - Updates a user.
* **getUser(email)** - Retrieves details of a user.
* **deleteUser(email)** - Deletes a user.

0 comments on commit 83f6737

Please sign in to comment.