From 5215789a0c1c47ec9b3442a87ee1092e1623030c Mon Sep 17 00:00:00 2001
From: Pierpaolo Coletta
Date: Fri, 31 Oct 2025 17:51:39 +0100
Subject: [PATCH] add context to /user/{id}/meta
---
.../extension/rest/controller/UserController.java | 13 ++++++++++++-
src/main/resources/luckperms-openapi.yml | 7 +++++++
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/main/java/me/lucko/luckperms/extension/rest/controller/UserController.java b/src/main/java/me/lucko/luckperms/extension/rest/controller/UserController.java
index e1cfc53..3372855 100644
--- a/src/main/java/me/lucko/luckperms/extension/rest/controller/UserController.java
+++ b/src/main/java/me/lucko/luckperms/extension/rest/controller/UserController.java
@@ -49,6 +49,7 @@
import net.luckperms.api.model.user.UserManager;
import net.luckperms.api.node.Node;
import net.luckperms.api.node.matcher.NodeMatcher;
+import net.luckperms.api.query.QueryMode;
import net.luckperms.api.query.QueryOptions;
import net.luckperms.api.track.DemotionResult;
import net.luckperms.api.track.PromotionResult;
@@ -305,8 +306,18 @@ public void nodesSet(Context ctx) throws JsonProcessingException {
@Override
public void metaGet(Context ctx) throws JsonProcessingException {
UUID uniqueId = pathParamAsUuid(ctx);
+
+ String contextJson = ctx.queryParam("context");
+ ContextSet contextSet = contextJson != null ? this.objectMapper.readValue(contextJson, ContextSet.class) : null;
+
CompletableFuture future = loadUserCached(uniqueId)
- .thenApply(user -> user.getCachedData().getMetaData());
+ .thenApply(user -> {
+ if (contextSet != null) {
+ return user.getCachedData().getMetaData(QueryOptions.builder(QueryMode.CONTEXTUAL).context(contextSet).build());
+ }
+
+ return user.getCachedData().getMetaData();
+ });
ctx.future(future);
}
diff --git a/src/main/resources/luckperms-openapi.yml b/src/main/resources/luckperms-openapi.yml
index f500c05..e0a56c0 100644
--- a/src/main/resources/luckperms-openapi.yml
+++ b/src/main/resources/luckperms-openapi.yml
@@ -491,6 +491,13 @@ paths:
summary: Get a users metadata
tags:
- Users
+ parameters:
+ - schema:
+ $ref: '#/components/schemas/ContextSet'
+ in: query
+ name: context
+ description: The context to filter the metadata by
+ required: false
responses:
'200':
description: OK