npm package: @inverter-network/api
Description: Inverter Network API SDK
Latest version: 1.0.0-alpha.0

<div align="center">

[![license](https://img.shields.io/badge/License-MIT-blue)](/LICENSE.md)
[![npm latest package](https://img.shields.io/npm/v/@inverter-network/api/latest.svg)](https://www.npmjs.com/package/@inverter-network/api)
[![npm downloads](https://img.shields.io/npm/dm/@inverter-network/api.svg)](https://www.npmjs.com/package/@inverter-network/api)
[![Follow on Twitter](https://img.shields.io/twitter/follow/InverterNetwork.svg?label=follow+InverterNetwork)](https://twitter.com/InverterNetwork)

</div>

## Inverter Network / API TS SDK

OpenAPI + TypeScript + Type Safe API

## Summary

This package provides a type-safe SDK for interacting with the Inverter Network API. The main feature is a strongly typed API client generated using OpenAPI 3 specs.

Check out the [Changelog](./CHANGELOG.md) to see what changed in the latest releases.

**Important Note**: This SDK only Support ESM (ECMAScript Modules).

## Quick Start

### Install the SDK

You can install the Inverter Network SDK using Bun:

```bash
bun add @inverter-network/api
```

### Use the SDK

Here's an example of how to use the SDK:

```typescript
import { getStatus, setInverterAPIConfig } from '@inverter-network/api'

// Set the config for the client with the Base URL and API key
setInverterAPIConfig({
  baseUrl: 'https://api.inverter.network',
  // Replace with your API key / if you have one
  headers: {
    Authorization: `Bearer ${process.env.INVERTER_API_KEY}`,
  },
})

// Use the internal method to call the API
const response = await getStatus()

// Log the response
console.log('API response data:', response.data)
```

## Install dependencies for Contributions

### Prerequisites

Before running the SDK, ensure you have the following dependencies installed:

- **Bun** (optional, but recommended): Used for runtime and testing.

You can install the required dependencies as follows:

#### Install Bun (for testing primitives, not required for the SDK itself)

```bash
# Supported on macOS, Linux, and WSL
curl -fsSL https://bun.sh/install | bash

# Upgrade Bun occasionally
bun upgrade
```

## Compile API Client

To generate the TypeScript client from the OpenAPI spec, run the following commands:

```bash
# Step 1: Install dependencies
bun install

# Step 2: Compile the API client
bun run compile:api
```

The `compile:api` command performs the following steps:

- Uses the @hey-api/openapi-ts Generator CLI to generate the TypeScript API client from the OpenAPI 3 spec.
- Formats the generated code using Prettier.

## How to make a release

**For the Maintainer**: Add `NPM_TOKEN` to the GitHub Secrets.

1. Open a Pull Request with your changes.
2. Merge the PR into the `main` branch.
3. Checkout the `main` branch locally:
   ```bash
   git checkout main
   ```
4. Pull the latest changes:
   ```bash
   git pull
   ```
5. Run the release command:
   ```bash
   bun release: '' | alpha | beta -- --release-as minor | major
   ```
6. Verify everything looks good (e.g., in `CHANGELOG.md`).
7. Follow the instructions provided by the release log.
8. Done!

## Summary

This SDK provides a type-safe interface for interacting with the [Inverter Network API](https://github.com/mguleryuz/geckoterm). It uses OpenAPI to generate a fully typed API client, making it easier to work with the API in TypeScript.

Check out the [GitHub repository](https://github.com/mguleryuz/geckoterm) for more information.