import { Controller, Post, Body, Param } from '@nestjs/common'; import { ApiTags, ApiBearerAuth, ApiOperation } from '@nestjs/swagger'; import { CurrentTenant } from '../../common/decorators/current-tenant.decorator'; import { RequirePermission } from '../../common/decorators/require-permission.decorator'; import { InstancesService, LifecycleFunc } from './instances.service'; @ApiTags('instances') @ApiBearerAuth() @Controller('instances') export class InstancesController { constructor(private readonly instances: InstancesService) {} @Post(':id/lifecycle') @RequirePermission('server.manage') @ApiOperation({ summary: 'Send a lifecycle command to a game instance (start/stop/restart/status/steam_update)' }) async lifecycle( @CurrentTenant() licenseId: string, @Param('id') id: string, @Body() body: { action: LifecycleFunc }, ) { return this.instances.lifecycle(licenseId, id, body.action); } @Post(':id/rcon') @RequirePermission('server.console') @ApiOperation({ summary: 'Send an RCON/console command to a game instance' }) async rcon( @CurrentTenant() licenseId: string, @Param('id') id: string, @Body() body: { command: string }, ) { return this.instances.rcon(licenseId, id, body.command); } }