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