TypeScript SDK
SDK Officiel
Ce SDK est officiel et maintenu par l'équipe Remnawave.
Le TypeScript SDK de Remnawave est une bibliothèque pour interagir commodément avec les types de la RestAPI.
Il ne contient pas de client HTTP, vous devez donc l'implémenter vous-même.
Ce SDK peut être utilisé en backend et en frontend.
Installation
npm install @remnawave/backend-contract
attention
Choisissez et épinglez toujours la version correcte du SDK pour correspondre à la version du backend Remnawave.
| Version du contrat | Version du panel Remnawave |
|---|---|
| 2.7.2 | 2.7.3 – 2.7.4 |
| 2.7.0 | 2.7.0 – 2.7.2 |
| 2.6.20 | 2.6.4 |
| 2.6.19 | 2.6.3 |
| 2.6.16 | 2.6.2 |
| 2.6.1 | 2.6.1 |
| 2.6.0 | 2.6.0 |
| 2.5.20 | 2.5.7 |
| 2.5.13 | 2.5.4 - 2.5.6 |
| 2.5.9 | 2.5.0 - 2.5.3 |
| 2.4.1 | 2.4.3 - 2.4.4 |
| 2.4.0 | 2.4.0 - 2.4.2 |
| 2.3.38 | 2.3.2 |
| 2.3.35 | 2.3.0,2.3.1 |
| 2.2.34 | 2.2.6 |
| 2.2.32 | 2.2.4,2.2.5 |
| 2.2.26 | 2.2.1,2.2.2,2.2.3 |
| 2.2.24 | 2.2.0 |
| 2.1.70 | 2.1.19 |
| 2.1.68 | 2.1.18 |
| 2.1.64 | 2.1.16 |
| 2.1.62 | 2.1.15 |
| 2.1.57 | 2.1.14 |
| 2.1.41 | 2.1.13 |
| 2.1.39 | 2.1.12 |
| 2.1.33 | 2.1.8, 2.1.9, 2.1.10, 2.1.11 |
| 2.1.26 | 2.1.7 |
| 2.1.25 | 2.1.4, 2.1.5, 2.1.6 |
| 2.1.14 | 2.1.1, 2.1.2, 2.1.3 |
| 2.1.12 | 2.1.0 |
| 2.0.2 | 2.0.6, 2.0.7, 2.0.8 |
| 2.0.0 | 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5 |
| 0.7.26 | 1.6.14, 1.6.15, 1.6.16 |
| 0.7.21 | 1.6.13 |
| 0.7.19 | 1.6.12 |
| 0.7.16 | 1.6.6, 1.6.7, 1.6.8, 1.6.9, 1.6.10, 1.6.11 |
| 0.7.13 | 1.6.3, 1.6.4, 1.6.5 |
| 0.7.1 | 1.6.1, 1.6.2 |
| 0.7.0 | 1.6.0 |
| 0.4.5 | 1.5.7 |
| 0.3.71 | 1.5.0 |
Utilisation
Exemple de service backend utilisant Axios et NestJS
import axios from 'axios'
import { Injectable, Logger } from '@nestjs/common'
import { ConfigService } from '@nestjs/config'
import { GetUserByUsernameCommand } from '@remnawave/backend-contract'
import { ICommandResponse } from '../types/command-response.type'
@Injectable()
export class AxiosService {
public axiosInstance: AxiosInstance
private readonly logger = new Logger(AxiosService.name)
constructor(private readonly configService: ConfigService) {
this.axiosInstance = axios.create({
baseURL: this.configService.getOrThrow('REMNAWAVE_PANEL_URL'),
timeout: 45_000,
headers: {
'x-forwarded-for': '127.0.0.1', // utilisez cet en-tête pour contourner les restrictions du proxy inverse du panel. Vous pouvez ainsi accéder au panel depuis les réseaux bridge : http://remnawave:3000
'x-forwarded-proto': 'https', // utilisez cet en-tête pour contourner les restrictions du proxy inverse du panel. Vous pouvez ainsi accéder au panel depuis les réseaux bridge : http://remnawave:3000
Authorization: `Bearer ${this.configService.get('REMNAWAVE_API_TOKEN')}`
}
})
const caddyAuthApiToken = this.configService.get('CADDY_AUTH_API_TOKEN')
if (caddyAuthApiToken) {
this.axiosInstance.defaults.headers.common['X-Api-Key'] = caddyAuthApiToken
}
}
public async getUserByUsername(
username: string
): Promise<ICommandResponse<GetUserByUsernameCommand.Response>> {
try {
const response = await this.axiosInstance.request<GetUserByUsernameCommand.Response>({
method: GetUserByUsernameCommand.endpointDetails.REQUEST_METHOD,
url: GetUserByUsernameCommand.url(username)
})
return {
isOk: true,
response: response.data
}
} catch (error) {
if (error instanceof AxiosError) {
this.logger.error('Erreur dans la requête Axios GetUserByUsername :', error.message)
return {
isOk: false
}
} else {
this.logger.error('Erreur dans la requête GetUserByUsername :', error)
return {
isOk: false
}
}
}
}
}
Exemples complets
Vous pouvez trouver des exemples complets dans le dépôt Remnawave Frontend et dans le dépôt Remnawave Subscription page.