diff --git a/extra/admin-api/Spacebar.UApi/Controllers/Applications/ApplicationRpcController.cs b/extra/admin-api/Spacebar.UApi/Controllers/Applications/ApplicationRpcController.cs
new file mode 100644
index 00000000..fdb020f4
--- /dev/null
+++ b/extra/admin-api/Spacebar.UApi/Controllers/Applications/ApplicationRpcController.cs
@@ -0,0 +1,84 @@
+using System.Text.Json.Serialization;
+using ArcaneLibs.Collections;
+using Microsoft.AspNetCore.Mvc;
+
+namespace Spacebar.UApi.Controllers.Applications;
+
+[ApiController]
+[Route("/api/v{_}/applications/{applicationId}/")]
+public class ApplicationRpcController : ControllerBase {
+ private static LruCache<object> _rpcInfoCache = new(10000);
+ // [HttpGet]
+ // public async Task<object> GetApplicationRpcInfo(string applicationId) {
+ //
+ // }
+
+ [HttpGet("disclosures")]
+ public ApplicationDisclosures GetApplicationDisclosures(string applicationId) {
+ return new ApplicationDisclosures {
+ Disclosures = [],
+ AckedDisclosures = [],
+ AllAcked = true
+ };
+ }
+
+ [HttpPost("disclosures")]
+ public ApplicationDisclosures AckApplicationDisclosures(string applicationId) {
+ // TODO: type is wrong, normally only `disclosures` is returned
+ return new ApplicationDisclosures {
+ Disclosures = [],
+ AckedDisclosures = [],
+ AllAcked = true
+ };
+ }
+}
+
+public class ApplicationDisclosures {
+ [JsonPropertyName("disclosures")]
+ public List<ApplicationDisclosures.Type> Disclosures { get; set; }
+
+ [JsonPropertyName("acked_disclosures")]
+ public List<ApplicationDisclosures.Type> AckedDisclosures { get; set; }
+
+ [JsonPropertyName("all_acked")]
+ public bool AllAcked { get; set; }
+
+ public enum Type {
+ UnspecifiedDisclosure = 0,
+ IpLocation = 1,
+ DisplaysAdvertisements = 2,
+ PartnerSdkDataSharingMessage = 3
+ }
+}
+
+public class RpcApplicationInfo {
+ [JsonPropertyName("id")]
+ public string Id { get; set; }
+
+ [JsonPropertyName("name")]
+ public string Name { get; set; }
+
+ [JsonPropertyName("icon")]
+ public string Icon { get; set; }
+
+ [JsonPropertyName("description")]
+ public string Description { get; set; }
+
+ [JsonPropertyName("summary")]
+ public string Summary { get; set; }
+
+ [JsonPropertyName("type")]
+ public ApplicationType? Type { get; set; } // what is this?
+
+ [JsonPropertyName("verify_key")]
+ public string VerifyKey { get; set; }
+}
+
+[Flags]
+public enum ApplicationType {
+ DeprecatedGame,
+ Music,
+ TicketedEvents,
+ CreatorMonetization,
+ Game
+}
\ No newline at end of file
diff --git a/extra/admin-api/Spacebar.UApi/Controllers/GuildMembersController.cs b/extra/admin-api/Spacebar.UApi/Controllers/GuildMembersController.cs
index ac8c1d40..9f18624e 100644
--- a/extra/admin-api/Spacebar.UApi/Controllers/GuildMembersController.cs
+++ b/extra/admin-api/Spacebar.UApi/Controllers/GuildMembersController.cs
@@ -8,6 +8,7 @@ using Spacebar.Models.Generic;
namespace Spacebar.UApi.Controllers;
[Route("/api/v{_}/guilds/{guildId}/members/")]
+[ApiController]
public class GuildMembersController(ILogger<GuildMembersController> logger, SpacebarDbContext db, SpacebarAspNetAuthenticationService authService) : ControllerBase {
/// <summary>
/// Get a guild member by ID
diff --git a/extra/admin-api/Spacebar.UApi/Program.cs b/extra/admin-api/Spacebar.UApi/Program.cs
index 326d0a9c..f6ce9829 100644
--- a/extra/admin-api/Spacebar.UApi/Program.cs
+++ b/extra/admin-api/Spacebar.UApi/Program.cs
@@ -112,6 +112,7 @@ app.Map("/", async context => {
foreach (var header in responseMessage.Headers) context.Response.Headers[header.Key] = header.Value.ToArray();
foreach (var header in responseMessage.Content.Headers) context.Response.Headers[header.Key] = header.Value.ToArray();
+ context.Response.Headers["X-SB-UApi-Status"] = "MISSING";
// await responseMessage.Content.CopyToAsync(context.Response.Body);
var txt = await responseMessage.Content.ReadAsStringAsync();
|