@page "/admin/api" @using MoonCore.Attributes @using MoonCore.Helpers @using MoonCore.Models @using Moonlight.Shared.Http.Requests.Admin.ApiKeys @using Moonlight.Shared.Http.Responses.Admin.ApiKeys @attribute [RequirePermission("admin.apikeys.read")] @inject HttpApiClient HttpApiClient @inject AlertService AlertService

API Documentation

Open

Learn about the api usage

Open

Open API Specification

Open
@code { private void OnConfigure(CrudOptions crudOptions) { crudOptions.ItemName = "API Key"; crudOptions.ItemLoader = async (page, pageSize) => await HttpApiClient.GetJson>($"api/admin/apikeys?page={page}&pageSize={pageSize}"); crudOptions.SingleItemLoader = async id => await HttpApiClient.GetJson($"api/admin/apikeys/{id}"); crudOptions.QueryIdentifier = response => response.Id.ToString(); crudOptions.OnCreate = async request => { var response = await HttpApiClient.PostJson("api/admin/apikeys", request); await AlertService.Success( "API Key successfully created", $"Copy the following secret. It wont be shown again. '{response.Secret}'" ); }; crudOptions.OnUpdate = async (item, request) => await HttpApiClient.Patch($"api/admin/apikeys/{item.Id}", request); crudOptions.OnDelete = async item => await HttpApiClient.Delete($"api/admin/apikeys/{item.Id}"); crudOptions.OnConfigureCreate = configuration => { configuration.WithField(x => x.Description); configuration.WithField(x => x.PermissionsJson); configuration.WithField(x => x.ExpiresAt, fieldConfiguration => { fieldConfiguration.DefaultValue = DateTime.UtcNow.AddMonths(1); }); }; crudOptions.OnConfigureUpdate = (_, configuration) => { configuration.WithField(x => x.Description); configuration.WithField(x => x.PermissionsJson); configuration.WithField(x => x.ExpiresAt); }; } }