Refactor API response descriptors to use resource classes
Build Plugin / build (push) Has been cancelled
Build Plugin / release (push) Has been cancelled

- Updated response descriptors in various endpoints to utilize specific resource classes instead of generic JsonResponse.
- Changed response types for friendship, guild, party, and support issue endpoints to their respective resource classes.
- Incremented version number in manifest.json to 0.5.3 for the new changes.
This commit is contained in:
2026-06-05 09:23:01 -07:00
parent 59330bdf84
commit be35d92b52
57 changed files with 342 additions and 62 deletions
+12
View File
@@ -28,8 +28,15 @@ src/main/java/net/kewwbec/network/generated/api/v1/
ControlPlaneApiV1.java
shared/
announcements/
assets/
audit/
batch/
configs/
entitlements/
gamepermissions/
gameplay/
health/
hub/
infrastructure/
integrations/
moderation/
@@ -39,6 +46,7 @@ src/main/java/net/kewwbec/network/generated/api/v1/
serviceaccounts/
social/
support/
worlds/
```
What that means:
@@ -108,6 +116,8 @@ Start with:
- [Getting Started](docs/wiki/Getting-Started.md)
- [Batched API Calls](docs/wiki/Batched-API-Calls.md)
- [API Response Storage](docs/wiki/API-Response-Storage.md)
- [Control Plane Client](docs/wiki/Control-Plane-Client.md)
- [Generated SDK](docs/wiki/Generated-SDK.md)
## Project structure
@@ -117,6 +127,8 @@ core-network/
src/main/java/
net/kewwbec/network/
network.java
batch/
cache/
generated/api/v1/...
src/main/resources/
manifest.json
+5 -16
View File
@@ -47,21 +47,14 @@ javadoc {
// Adds the Hytale server as a build dependency, allowing you to reference and
// compile against their code without bundling it. When a local install is
// present we compile and run against that jar directly so there is no dependency
// on the Hytale Maven repositories. In CI (no local install) the Maven artifact
// is used together with an explicit Gson dep (bundled in the server at runtime).
// present, we still use its jar for launching the server in IDE run configs.
dependencies {
compileOnly("com.hypixel.hytale:Server:$hytale_build")
if (hasHytaleHome) {
def serverJar = files("$hytaleHome/install/$patchline/package/game/latest/Server/HytaleServer.jar")
compileOnly(serverJar)
runtimeOnly(serverJar)
} else {
compileOnly("com.hypixel.hytale:Server:$hytale_build")
compileOnly("com.google.gson:gson:2.11.0")
runtimeOnly(files("$hytaleHome/install/$patchline/package/game/latest/Server/HytaleServer.jar"))
}
testImplementation("org.junit.jupiter:junit-jupiter:5.11.4")
testImplementation("com.google.code.gson:gson:2.11.0")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
// Your dependencies here
}
repositories {
@@ -107,10 +100,6 @@ tasks.named('build') {
dependsOn 'shadowJar'
}
tasks.named('test') {
useJUnitPlatform()
}
if (hasHytaleHome) {
// Create the working directory to run the server if it does not already exist.
def serverRunDir = file("$projectDir/run")
+55
View File
@@ -72,6 +72,19 @@ CompletableFuture<ServerProfile> profile =
cache.forcePull(serverProfileCall, CacheContext.shared());
```
Invalidate a cached value:
```java
cache.invalidate(serverProfileCall, CacheContext.shared());
```
Prewarm after an event-driven invalidation:
```java
CompletableFuture<ServerProfile> profile =
cache.prewarm(serverProfileCall, CacheContext.shared());
```
## Player Storage
Player storage requires explicit context. Core-network does not infer player identity from the API URI.
@@ -94,6 +107,36 @@ CompletableFuture<PlayerSessionProfile> profile =
`NetworkPlugin.setup()` registers `NetworkApiDataComponent` with the entity store registry.
## Reactive Player Hooks
`ReactivePlayerCacheHooks` gives ECS/event systems a small public surface for cache invalidation and prewarming when control-plane state changes.
Entry point:
```java
ReactivePlayerCacheHooks hooks =
NetworkPlugin.client().reactivePlayerCache();
```
Use it from player lifecycle or control-plane event handlers:
```java
PlayerCacheContext context = new PlayerCacheContext(playerId, playerRef, entityStore);
hooks.onPlayerJoin(context);
hooks.onPermissionChanged(context);
hooks.onSanctionChanged(context);
hooks.onNotificationCreated(context);
```
The hook currently covers:
- `players/{player}/moderation/sanction-snapshot`
- `players/{player}/authorization/permission-snapshot`
- `players/{player}/notifications`
`onPlayerJoin(...)` force-refreshes sanction and permission snapshots and prewarms notifications. The change-specific hooks invalidate the stale player entry and immediately pull the new value.
## Freshness Policies
Auto-refresh when older than max age:
@@ -190,6 +233,11 @@ public final class MyAssetCacheAdapter implements AssetStoreCacheAdapter {
public void write(ApiCacheKey key, ApiCacheEntry entry, CacheContext context) {
// Convert entry payload into concrete asset and load/write through AssetStore.
}
@Override
public void remove(ApiCacheKey key, CacheContext context) {
// Remove or mark the mapped asset entry stale when invalidated.
}
}
```
@@ -207,6 +255,13 @@ CachedApiCall<JsonObject> call = CachedApiCall
.build();
```
The assets domain now exposes typed generated methods that can feed asset-store-backed cache calls, including:
```java
NetworkPlugin.client().assets().getActivePack(packKey);
NetworkPlugin.client().assets().getPackVersionFiles(versionId);
```
## Batching Behavior
When `ControlPlaneClient.batchingEnabled()` is true, cache pulls and pushes use `BatchClient`.
+25 -2
View File
@@ -14,6 +14,7 @@ client.presence(); // PresenceClient
client.players(); // PlayersClient
client.batch(); // BatchClient
client.cache(); // ApiDataCacheClient
client.reactivePlayerCache(); // ReactivePlayerCacheHooks
```
## Handwritten Domain Clients
@@ -35,10 +36,32 @@ client.presence().shutdown(instanceId, "restart");
`PlayersClient`
```java
PlayerSessionProfile profile = client.players().getSessionProfile(playerId);
List<PlayerEntitlement> entitlements = client.players().getEntitlements(playerId);
PlayerSessionProfile profile = client.players().sessionProfile(playerId);
List<PlayerEntitlement> entitlements = client.players().entitlementsIndex(playerId);
```
`AssetsClient`
```java
AssetPackVersion active = client.assets().getActivePack(packKey);
List<AssetPackVersionFile> files = client.assets().getPackVersionFiles(active.id());
```
## Reactive Player Cache
`reactivePlayerCache()` is intended for Hytale ECS/event handlers that know player state changed and need cache freshness now, not after a TTL expires.
```java
PlayerCacheContext context = new PlayerCacheContext(playerId, playerRef, entityStore);
client.reactivePlayerCache().onPlayerJoin(context);
client.reactivePlayerCache().onPermissionChanged(context);
client.reactivePlayerCache().onSanctionChanged(context);
client.reactivePlayerCache().onNotificationCreated(context);
```
These hooks invalidate and prewarm the player-scoped cache entries for permission snapshots, moderation sanction snapshots, and notifications.
## Error Handling
Transport errors use checked `ControlPlaneException` subclasses:
+13
View File
@@ -17,6 +17,7 @@ These files include:
- middleware metadata
- request field descriptors
- response type descriptors
- typed domain clients and DTOs for generated API resources
## Usage
@@ -44,6 +45,18 @@ String uri = PathBuilder.resolve(
);
```
Use generated domain clients for direct typed calls:
```java
PlayerPermissionSnapshot permissions =
NetworkPlugin.client().players().authorizationPermissionSnapshot(playerId);
AssetPackVersion activePack =
NetworkPlugin.client().assets().getActivePack(packKey);
```
Some generated clients include hand-friendly aliases for route-shaped names. For example, the assets domain exposes `getActivePack(...)` and `getPackVersionFiles(...)` over the generated active-pack and version-files endpoints.
## Regeneration
The source of truth is `../core-control-plane`.
+2
View File
@@ -9,6 +9,7 @@ It provides:
- generated API endpoint descriptors from `core-control-plane`
- batched HTTP calls through `/api/v1/batch`
- API response storage policies for runtime, player, and asset-store-backed data
- reactive player cache hooks for ECS/event-driven invalidation and prewarming
## Pages
@@ -40,3 +41,4 @@ net.kewwbec.network
- Treat `core-control-plane` as the API owner.
- Use batching for repeated or concurrent calls that can tolerate async completion.
- Use cache policies when plugin code needs shared ownership of API freshness or push timing.
- Use `reactivePlayerCache()` from ECS/event handlers when player cache state must react immediately to permission, sanction, notification, or join events.
+2 -2
View File
@@ -1,5 +1,5 @@
# The current version of your project. Please use semantic versioning!
version=0.0.2
version=0.5.3
# The group ID used for maven publishing. Usually the same as your package name
# but not the same as your plugin group!
@@ -22,7 +22,7 @@ patchline=release
# The exact Hytale build to compile against. Use the build string from the
# launcher (format YYYY.MM.DD-<hash>) so Gradle pulls the matching server jar
# for your selected patchline.
hytale_build=2026.01.27-734d39026
hytale_build=0.5.3
# Determines if the development server should also load mods from the user's
# standard mods folder. This lets you test mods by installing them where a
+1 -1
View File
@@ -1 +1 @@
rootProject.name = 'ExamplePlugin'
rootProject.name = 'core-network'
@@ -3,6 +3,7 @@ package net.kewwbec.network;
import net.kewwbec.network.auth.ApiToken;
import net.kewwbec.network.batch.BatchClient;
import net.kewwbec.network.cache.ApiDataCacheClient;
import net.kewwbec.network.cache.ReactivePlayerCacheHooks;
import net.kewwbec.network.generated.api.v1.announcements.AnnouncementsClient;
import net.kewwbec.network.generated.api.v1.assets.AssetsClient;
import net.kewwbec.network.generated.api.v1.audit.AuditClient;
@@ -53,6 +54,7 @@ public final class ControlPlaneClient {
private final WorldsClient worlds;
private final BatchClient batch;
private final ApiDataCacheClient cache;
private final ReactivePlayerCacheHooks reactivePlayerCache;
private final boolean batchingEnabled;
private final Duration batchFlushInterval;
private final int maxBatchSize;
@@ -87,6 +89,7 @@ public final class ControlPlaneClient {
this.maxBatchSize = builder.maxBatchSize;
this.batchEndpoint = builder.batchEndpoint;
this.cache = new ApiDataCacheClient(http, batch, this::batchingEnabled);
this.reactivePlayerCache = new ReactivePlayerCacheHooks(cache);
}
public static Builder builder() {
@@ -116,6 +119,7 @@ public final class ControlPlaneClient {
public WorldsClient worlds() { return worlds; }
public BatchClient batch() { return batch; }
public ApiDataCacheClient cache() { return cache; }
public ReactivePlayerCacheHooks reactivePlayerCache() { return reactivePlayerCache; }
public boolean batchingEnabled() { return batchingEnabled; }
public Duration batchFlushInterval() { return batchFlushInterval; }
public int maxBatchSize() { return maxBatchSize; }
@@ -8,5 +8,7 @@ interface ApiCacheStore {
void put(ApiCacheKey key, ApiCacheEntry entry, CacheContext context);
void remove(ApiCacheKey key, CacheContext context);
Collection<StoredCacheEntry> entries();
}
@@ -60,6 +60,26 @@ public final class ApiDataCacheClient {
return pullAndStore(call, context, key, store, store.get(key, context));
}
public <T> CompletableFuture<T> prewarm(CachedApiCall<T> call, CacheContext context) {
return forcePull(call, context);
}
public void invalidate(CachedApiCall<?> call, CacheContext context) {
registerIfNeeded(call);
ApiCacheKey key = key(call, context);
storeFor(call).remove(key, context);
touchedContexts.remove(key);
}
public boolean invalidate(String callId, CacheContext context) {
CachedApiCall<?> call = registeredCalls.get(callId);
if (call == null) {
return false;
}
invalidate(call, context);
return true;
}
public <T> void updateLocal(CachedApiCall<T> call, CacheContext context, T value) {
registerIfNeeded(call);
ApiCacheKey key = key(call, context);
@@ -21,6 +21,11 @@ final class AssetStoreApiCacheStore implements ApiCacheStore {
adapter.write(key, entry, context);
}
@Override
public void remove(ApiCacheKey key, CacheContext context) {
adapter.remove(key, context);
}
@Override
public Collection<StoredCacheEntry> entries() {
return adapter.entries().stream()
@@ -10,6 +10,9 @@ public interface AssetStoreCacheAdapter {
void write(ApiCacheKey key, ApiCacheEntry entry, CacheContext context);
default void remove(ApiCacheKey key, CacheContext context) {
}
default Collection<StoredAssetCacheEntry> entries() {
return java.util.List.of();
}
@@ -48,6 +48,10 @@ public final class NetworkApiDataComponent implements Component<EntityStore> {
entries.put(key, value);
}
public void remove(String key) {
entries.remove(key);
}
@Nonnull
@Override
public Component<EntityStore> clone() {
@@ -27,6 +27,15 @@ final class PlayerApiCacheStore implements ApiCacheStore {
playerContext.store().putComponent(playerContext.ref(), NetworkApiDataComponent.componentType(), component);
}
@Override
public void remove(ApiCacheKey key, CacheContext context) {
PlayerCacheContext playerContext = playerContext(context);
NetworkApiDataComponent component = playerContext.store()
.ensureAndGetComponent(playerContext.ref(), NetworkApiDataComponent.componentType());
component.remove(key.encoded());
playerContext.store().putComponent(playerContext.ref(), NetworkApiDataComponent.componentType(), component);
}
@Override
public Collection<StoredCacheEntry> entries() {
return java.util.List.of();
@@ -0,0 +1,134 @@
package net.kewwbec.network.cache;
import net.kewwbec.network.ControlPlaneClient;
import net.kewwbec.network.generated.api.v1.players.AuthorizationPermissionSnapshotEndpoint;
import net.kewwbec.network.generated.api.v1.players.ModerationSanctionSnapshotEndpoint;
import net.kewwbec.network.generated.api.v1.players.NotificationsIndexEndpoint;
import net.kewwbec.network.generated.api.v1.players.PlayerNotification;
import net.kewwbec.network.generated.api.v1.players.PlayerPermissionSnapshot;
import net.kewwbec.network.generated.api.v1.players.PlayerSanctionSnapshot;
import net.kewwbec.network.http.PathBuilder;
import java.time.Duration;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
public final class ReactivePlayerCacheHooks {
public static final String SANCTION_SNAPSHOT_PREFIX = "players.moderation.sanction-snapshot";
public static final String PERMISSION_SNAPSHOT_PREFIX = "players.authorization.permission-snapshot";
public static final String NOTIFICATIONS_INDEX_PREFIX = "players.notifications.index";
private final ApiDataCacheClient cache;
public ReactivePlayerCacheHooks(ControlPlaneClient client) {
this(Objects.requireNonNull(client, "client must not be null").cache());
}
public ReactivePlayerCacheHooks(ApiDataCacheClient cache) {
this.cache = Objects.requireNonNull(cache, "cache must not be null");
}
public CompletableFuture<Void> onPlayerJoin(PlayerCacheContext context) {
return CompletableFuture.allOf(
refreshSanctionSnapshot(context),
refreshPermissionSnapshot(context),
prewarmNotifications(context)
);
}
public CompletableFuture<PlayerSanctionSnapshot> onSanctionChanged(PlayerCacheContext context) {
return refreshSanctionSnapshot(context);
}
public CompletableFuture<PlayerPermissionSnapshot> onPermissionChanged(PlayerCacheContext context) {
return refreshPermissionSnapshot(context);
}
public CompletableFuture<PlayerNotification[]> onNotificationCreated(PlayerCacheContext context) {
return refreshNotifications(context);
}
public void invalidateSanctionSnapshot(PlayerCacheContext context) {
cache.invalidate(sanctionSnapshotCall(context.contextKey()), context);
}
public void invalidatePermissionSnapshot(PlayerCacheContext context) {
cache.invalidate(permissionSnapshotCall(context.contextKey()), context);
}
public void invalidateNotifications(PlayerCacheContext context) {
cache.invalidate(notificationsIndexCall(context.contextKey()), context);
}
public CompletableFuture<PlayerSanctionSnapshot> refreshSanctionSnapshot(PlayerCacheContext context) {
CachedApiCall<PlayerSanctionSnapshot> call = sanctionSnapshotCall(context.contextKey());
cache.invalidate(call, context);
return cache.prewarm(call, context);
}
public CompletableFuture<PlayerPermissionSnapshot> refreshPermissionSnapshot(PlayerCacheContext context) {
CachedApiCall<PlayerPermissionSnapshot> call = permissionSnapshotCall(context.contextKey());
cache.invalidate(call, context);
return cache.prewarm(call, context);
}
public CompletableFuture<PlayerNotification[]> refreshNotifications(PlayerCacheContext context) {
CachedApiCall<PlayerNotification[]> call = notificationsIndexCall(context.contextKey());
cache.invalidate(call, context);
return cache.prewarm(call, context);
}
public CompletableFuture<PlayerNotification[]> prewarmNotifications(PlayerCacheContext context) {
return cache.getOrPull(notificationsIndexCall(context.contextKey()), context);
}
public static CachedApiCall<PlayerSanctionSnapshot> sanctionSnapshotCall(String playerId) {
String player = requirePlayerId(playerId);
return CachedApiCall.builder(PlayerSanctionSnapshot.class)
.id(callId(SANCTION_SNAPSHOT_PREFIX, player))
.endpoint(ModerationSanctionSnapshotEndpoint.VALUE)
.method("GET")
.uri(() -> PathBuilder.resolve(ModerationSanctionSnapshotEndpoint.VALUE.uri(), "player", player))
.storageTarget(StorageTarget.PLAYER)
.pullPolicy(PullPolicy.maxAge(Duration.ofSeconds(30)))
.manualPushOnly()
.build();
}
public static CachedApiCall<PlayerPermissionSnapshot> permissionSnapshotCall(String playerId) {
String player = requirePlayerId(playerId);
return CachedApiCall.builder(PlayerPermissionSnapshot.class)
.id(callId(PERMISSION_SNAPSHOT_PREFIX, player))
.endpoint(AuthorizationPermissionSnapshotEndpoint.VALUE)
.method("GET")
.uri(() -> PathBuilder.resolve(AuthorizationPermissionSnapshotEndpoint.VALUE.uri(), "player", player))
.storageTarget(StorageTarget.PLAYER)
.pullPolicy(PullPolicy.maxAge(Duration.ofSeconds(30)))
.manualPushOnly()
.build();
}
public static CachedApiCall<PlayerNotification[]> notificationsIndexCall(String playerId) {
String player = requirePlayerId(playerId);
return CachedApiCall.builder(PlayerNotification[].class)
.id(callId(NOTIFICATIONS_INDEX_PREFIX, player))
.endpoint(NotificationsIndexEndpoint.VALUE)
.method("GET")
.uri(() -> PathBuilder.resolve(NotificationsIndexEndpoint.VALUE.uri(), "player", player))
.storageTarget(StorageTarget.PLAYER)
.pullPolicy(PullPolicy.maxAge(Duration.ofSeconds(15)))
.manualPushOnly()
.build();
}
public static String callId(String prefix, String playerId) {
return prefix + ":" + requirePlayerId(playerId);
}
private static String requirePlayerId(String playerId) {
if (playerId == null || playerId.isBlank()) {
throw new IllegalArgumentException("playerId must not be blank");
}
return playerId;
}
}
@@ -17,6 +17,11 @@ final class RuntimeApiCacheStore implements ApiCacheStore {
entries.put(key, entry);
}
@Override
public void remove(ApiCacheKey key, CacheContext context) {
entries.remove(key);
}
@Override
public Collection<StoredCacheEntry> entries() {
return entries.entrySet().stream()
@@ -28,7 +28,7 @@ public final class ControlPlaneApiV1 {
private static final String API_VERSION = "v1";
private static final String BASE_PATH = "/api/v1";
private static final String FINGERPRINT = "38972c4e6c8020ff35de5b63ad1dc0465d9f8a3c6d65736991e77759bd369db2";
private static final String FINGERPRINT = "e918a5e4ab91e8ed17150e80ee593fd4400d2d54a994b28cf7281bef22eacd73";
private static final int DOMAIN_COUNT = 22;
private static final int ENDPOINT_COUNT = 140;
@@ -19,7 +19,7 @@ public final class ServerTemplatesStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:server-templates.write"),
List.of(),
new RequestDescriptor("App\\Domains\\Infrastructure\\Http\\Requests\\StoreServerTemplateRequest", "body", List.of(new RequestField("region_key", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:regions,key"))), new RequestField("key", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:150"), new RuleDescriptor("string", null, "regex:/^[a-z0-9._-]+$/"), new RuleDescriptor("string", null, "unique:server_templates,key"))), new RequestField("name", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:120"))), new RequestField("category", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:100"))), new RequestField("lifecycle_strategy", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"manual\",\"static\",\"elastic\""))), new RequestField("version", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:80"))), new RequestField("max_players", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "integer"), new RuleDescriptor("string", null, "min:0"))), new RequestField("is_active", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "boolean"))), new RequestField("startup_world_key", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:150"), new RuleDescriptor("string", null, "exists:worlds,key"))), new RequestField("asset_pack_keys", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "array"))), new RequestField("asset_pack_keys.*", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "distinct"), new RuleDescriptor("string", null, "exists:asset_packs,key"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Infrastructure\\Resources\\ServerTemplateResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class ServerTemplatesUpdateEndpoint {
List.of("api", "auth:sanctum", "service.abilities:server-templates.write"),
List.of(new RouteParameter("serverTemplate", new TypeDescriptor("App\\Domains\\Infrastructure\\Models\\ServerTemplate", false, false))),
new RequestDescriptor("App\\Domains\\Infrastructure\\Http\\Requests\\UpdateServerTemplateRequest", "body", List.of(new RequestField("region_key", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:regions,key"))), new RequestField("key", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:150"), new RuleDescriptor("string", null, "regex:/^[a-z0-9._-]+$/"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\Unique", "unique:server_templates,key,NULL,id"))), new RequestField("name", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:120"))), new RequestField("category", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:100"))), new RequestField("lifecycle_strategy", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"manual\",\"static\",\"elastic\""))), new RequestField("version", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:80"))), new RequestField("max_players", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "integer"), new RuleDescriptor("string", null, "min:0"))), new RequestField("is_active", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "boolean"))), new RequestField("startup_world_key", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:150"), new RuleDescriptor("string", null, "exists:worlds,key"))), new RequestField("asset_pack_keys", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "array"))), new RequestField("asset_pack_keys.*", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "distinct"), new RuleDescriptor("string", null, "exists:asset_packs,key"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Infrastructure\\Resources\\ServerTemplateResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class StoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:integrations.write"),
List.of(),
new RequestDescriptor("App\\Domains\\Integrations\\Http\\Requests\\StoreIntegrationRequest", "body", List.of(new RequestField("key", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:100"), new RuleDescriptor("string", null, "unique:integrations,key"))), new RequestField("name", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:255"))), new RequestField("driver", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"discord\",\"website\",\"webhook\",\"commerce\",\"analytics\",\"internal_tool\""))), new RequestField("direction", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"inbound\",\"outbound\",\"bidirectional\""))), new RequestField("status", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"active\",\"paused\",\"error\",\"retired\""))), new RequestField("endpoint", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:255"))), new RequestField("secret_reference", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:255"))), new RequestField("last_sync_at", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Integrations\\Resources\\IntegrationResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class UpdateEndpoint {
List.of("api", "auth:sanctum", "service.abilities:integrations.write"),
List.of(new RouteParameter("integration", new TypeDescriptor("App\\Domains\\Integrations\\Models\\Integration", false, false))),
new RequestDescriptor("App\\Domains\\Integrations\\Http\\Requests\\UpdateIntegrationRequest", "body", List.of(new RequestField("name", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:255"))), new RequestField("driver", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"discord\",\"website\",\"webhook\",\"commerce\",\"analytics\",\"internal_tool\""))), new RequestField("direction", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"inbound\",\"outbound\",\"bidirectional\""))), new RequestField("status", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"active\",\"paused\",\"error\",\"retired\""))), new RequestField("endpoint", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:255"))), new RequestField("secret_reference", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:255"))), new RequestField("last_sync_at", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("last_error_at", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("last_error_summary", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Integrations\\Resources\\IntegrationResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class CasesReopenEndpoint {
List.of("api", "auth:sanctum", "service.abilities:moderation.cases.write"),
List.of(new RouteParameter("moderationCase", new TypeDescriptor("App\\Domains\\Moderation\\Models\\ModerationCase", false, false))),
new RequestDescriptor("App\\Domains\\Moderation\\Http\\Requests\\ReopenModerationCaseRequest", "body", List.of(new RequestField("reason", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"))), new RequestField("status", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"open\",\"under_review\""))), new RequestField("summary", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"))), new RequestField("assigned_to_player_id", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("reopened_at", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Moderation\\Resources\\ModerationCaseResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class CasesStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:moderation.cases.write"),
List.of(),
new RequestDescriptor("App\\Domains\\Moderation\\Http\\Requests\\StoreModerationCaseRequest", "body", List.of(new RequestField("case_type", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"report\",\"investigation\",\"appeal\""))), new RequestField("priority", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"low\",\"normal\",\"high\",\"urgent\""))), new RequestField("subject_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("reported_by_player_id", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("assigned_to_player_id", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("title", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:255"))), new RequestField("summary", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"))), new RequestField("incident_occurred_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Moderation\\Resources\\ModerationCaseResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class CasesUpdateEndpoint {
List.of("api", "auth:sanctum", "service.abilities:moderation.cases.write"),
List.of(new RouteParameter("moderationCase", new TypeDescriptor("App\\Domains\\Moderation\\Models\\ModerationCase", false, false))),
new RequestDescriptor("App\\Domains\\Moderation\\Http\\Requests\\UpdateModerationCaseRequest", "body", List.of(new RequestField("status", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"open\",\"under_review\",\"resolved\",\"closed\""))), new RequestField("priority", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"low\",\"normal\",\"high\",\"urgent\""))), new RequestField("assigned_to_player_id", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("summary", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"))), new RequestField("resolution_summary", List.of(new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\RequiredIf", ""), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"))), new RequestField("last_reviewed_at", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("resolved_at", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Moderation\\Resources\\ModerationCaseResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class NotificationsReadEndpoint {
List.of("api", "auth:sanctum", "service.abilities:notifications.write"),
List.of(new RouteParameter("player", new TypeDescriptor("App\\Domains\\Identity\\Models\\Player", false, false)), new RouteParameter("notification", new TypeDescriptor("App\\Domains\\Notifications\\Models\\PlayerNotification", false, false))),
null,
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Notifications\\Resources\\PlayerNotificationResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class NotificationsStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:notifications.write"),
List.of(new RouteParameter("player", new TypeDescriptor("App\\Domains\\Identity\\Models\\Player", false, false))),
new RequestDescriptor("App\\Domains\\Notifications\\Http\\Requests\\StorePlayerNotificationRequest", "body", List.of(new RequestField("type", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:100"))), new RequestField("title", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:255"))), new RequestField("body", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"))), new RequestField("priority", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"low\",\"normal\",\"high\""))), new RequestField("sent_at", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Notifications\\Resources\\PlayerNotificationResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class ConfigVersionsStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:plugins.deploy.write"),
List.of(new RouteParameter("plugin", new TypeDescriptor("App\\Domains\\Plugins\\Models\\Plugin", false, false))),
new RequestDescriptor("App\\Domains\\Plugins\\Http\\Requests\\StorePluginConfigVersionRequest", "body", List.of(new RequestField("version", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:255"))), new RequestField("format", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:100"))), new RequestField("content_driver", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:100"))), new RequestField("content_reference", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:2048"))), new RequestField("checksum", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:255"))), new RequestField("released_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Plugins\\Resources\\PluginConfigVersionResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class DeploymentsRollbackEndpoint {
List.of("api", "auth:sanctum", "service.abilities:plugins.deploy.write"),
List.of(new RouteParameter("pluginDeployment", new TypeDescriptor("App\\Domains\\Plugins\\Models\\PluginDeployment", false, false))),
new RequestDescriptor("App\\Domains\\Plugins\\Http\\Requests\\RollbackPluginDeploymentRequest", "body", List.of(new RequestField("reason", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"))), new RequestField("rolled_back_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Plugins\\Resources\\PluginDeploymentResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class DeploymentsStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:plugins.deploy.write"),
List.of(new RouteParameter("plugin", new TypeDescriptor("App\\Domains\\Plugins\\Models\\Plugin", false, false))),
new RequestDescriptor("App\\Domains\\Plugins\\Http\\Requests\\StorePluginDeploymentRequest", "body", List.of(new RequestField("plugin_version_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:plugin_versions,id"))), new RequestField("plugin_config_version_id", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:plugin_config_versions,id"))), new RequestField("server_template_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:server_templates,id"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Plugins\\Resources\\PluginDeploymentResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class InstancesMatchesResultsStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:matches.result.write", "service.instance:instance"),
List.of(new RouteParameter("instance", new TypeDescriptor("App\\Domains\\Infrastructure\\Models\\ServerInstance", false, false))),
new RequestDescriptor("App\\Domains\\Gameplay\\Http\\Requests\\StoreMatchResultRequest", "body", List.of(new RequestField("match_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:255"))), new RequestField("game_mode", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:100"))), new RequestField("status", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"completed\",\"abandoned\",\"cancelled\""))), new RequestField("started_at", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "date"))), new RequestField("ended_at", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "date"), new RuleDescriptor("string", null, "after_or_equal:started_at"))), new RequestField("replay_driver", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:100"))), new RequestField("replay_reference", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:2048"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))), new RequestField("participants", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "array"), new RuleDescriptor("string", null, "min:1"), new RuleDescriptor("string", null, "max:100"))), new RequestField("participants.*.player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("participants.*.team_key", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:100"))), new RequestField("participants.*.placement", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "integer"), new RuleDescriptor("string", null, "min:1"))), new RequestField("participants.*.outcome", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"win\",\"loss\",\"draw\",\"abandoned\""))), new RequestField("participants.*.score", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "integer"))), new RequestField("participants.*.stats", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Gameplay\\Resources\\MatchSessionResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class FriendshipsAcceptEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("friendship", new TypeDescriptor("App\\Domains\\Social\\Models\\PlayerFriendship", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\AcceptFriendshipRequest", "body", List.of(new RequestField("accepting_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("accepted_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\FriendshipResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class FriendshipsStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\StoreFriendshipRequest", "body", List.of(new RequestField("requester_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("addressee_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "different:requester_player_id"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("requested_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\FriendshipResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class GuildInvitesAcceptEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("guildInvite", new TypeDescriptor("App\\Domains\\Social\\Models\\GuildInvite", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\AcceptGuildInviteRequest", "body", List.of(new RequestField("accepting_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("accepted_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\GuildResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class GuildInvitesCancelEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("guildInvite", new TypeDescriptor("App\\Domains\\Social\\Models\\GuildInvite", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\CancelGuildInviteRequest", "body", List.of(new RequestField("cancelled_by_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("cancelled_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("reason", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:500"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\GuildInviteResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class GuildInvitesDeclineEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("guildInvite", new TypeDescriptor("App\\Domains\\Social\\Models\\GuildInvite", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\DeclineGuildInviteRequest", "body", List.of(new RequestField("declining_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("declined_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("reason", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:500"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\GuildInviteResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class GuildsInvitesStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("guild", new TypeDescriptor("App\\Domains\\Social\\Models\\Guild", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\StoreGuildInviteRequest", "body", List.of(new RequestField("invited_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("invited_by_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("message", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:1000"))), new RequestField("invited_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("expires_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\GuildInviteResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class GuildsKicksStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("guild", new TypeDescriptor("App\\Domains\\Social\\Models\\Guild", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\KickGuildMemberRequest", "body", List.of(new RequestField("acting_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("target_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("kicked_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("reason", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:500"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\GuildResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class GuildsLeaveEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("guild", new TypeDescriptor("App\\Domains\\Social\\Models\\Guild", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\LeaveGuildRequest", "body", List.of(new RequestField("player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("left_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("reason", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:500"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\GuildResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class GuildsMembersStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("guild", new TypeDescriptor("App\\Domains\\Social\\Models\\Guild", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\StoreGuildMemberRequest", "body", List.of(new RequestField("player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("invited_by_player_id", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("role", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"leader\",\"officer\",\"member\""))), new RequestField("joined_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\GuildResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class GuildsOwnershipTransferEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("guild", new TypeDescriptor("App\\Domains\\Social\\Models\\Guild", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\TransferGuildOwnershipRequest", "body", List.of(new RequestField("acting_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("new_owner_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("transferred_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("reason", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:500"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\GuildResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class GuildsStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\StoreGuildRequest", "body", List.of(new RequestField("owner_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("slug", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:80"), new RuleDescriptor("string", null, "regex:/^[a-z0-9-]+$/"), new RuleDescriptor("string", null, "unique:guilds,slug"))), new RequestField("name", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:120"))), new RequestField("tag", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:12"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\Unique", "unique:guilds,tag,NULL,id"))), new RequestField("max_members", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "integer"), new RuleDescriptor("string", null, "between:2,200"))), new RequestField("motd", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:255"))), new RequestField("founded_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\GuildResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class PartiesInvitesStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("party", new TypeDescriptor("App\\Domains\\Social\\Models\\Party", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\StorePartyInviteRequest", "body", List.of(new RequestField("invited_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("invited_by_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("message", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:1000"))), new RequestField("invited_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("expires_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\PartyInviteResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class PartiesKicksStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("party", new TypeDescriptor("App\\Domains\\Social\\Models\\Party", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\KickPartyMemberRequest", "body", List.of(new RequestField("acting_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("target_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("kicked_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("reason", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:500"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\PartyResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class PartiesLeadershipTransferEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("party", new TypeDescriptor("App\\Domains\\Social\\Models\\Party", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\TransferPartyLeadershipRequest", "body", List.of(new RequestField("acting_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("new_leader_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("transferred_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("reason", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:500"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\PartyResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class PartiesLeaveEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("party", new TypeDescriptor("App\\Domains\\Social\\Models\\Party", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\LeavePartyRequest", "body", List.of(new RequestField("player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("left_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("reason", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:500"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\PartyResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class PartiesMembersStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("party", new TypeDescriptor("App\\Domains\\Social\\Models\\Party", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\StorePartyMemberRequest", "body", List.of(new RequestField("player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("invited_by_player_id", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("joined_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\PartyResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class PartiesStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\StorePartyRequest", "body", List.of(new RequestField("leader_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("max_members", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "integer"), new RuleDescriptor("string", null, "between:2,12"))), new RequestField("formed_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\PartyResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class PartyInvitesAcceptEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("partyInvite", new TypeDescriptor("App\\Domains\\Social\\Models\\PartyInvite", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\AcceptPartyInviteRequest", "body", List.of(new RequestField("accepting_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("accepted_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\PartyResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class PartyInvitesCancelEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("partyInvite", new TypeDescriptor("App\\Domains\\Social\\Models\\PartyInvite", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\CancelPartyInviteRequest", "body", List.of(new RequestField("cancelled_by_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("cancelled_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("reason", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:500"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\PartyInviteResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class PartyInvitesDeclineEndpoint {
List.of("api", "auth:sanctum", "service.abilities:social.write"),
List.of(new RouteParameter("partyInvite", new TypeDescriptor("App\\Domains\\Social\\Models\\PartyInvite", false, false))),
new RequestDescriptor("App\\Domains\\Social\\Http\\Requests\\DeclinePartyInviteRequest", "body", List.of(new RequestField("declining_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("declined_at", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("reason", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:500"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Social\\Resources\\PartyInviteResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class IssuesAssignmentsStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:support.issues.write"),
List.of(new RouteParameter("supportIssue", new TypeDescriptor("App\\Domains\\Support\\Models\\SupportIssue", false, false))),
new RequestDescriptor("App\\Domains\\Support\\Http\\Requests\\ChangeSupportIssueAssignmentRequest", "body", List.of(new RequestField("assigned_to_player_id", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("reason", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"))), new RequestField("assigned_at", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Support\\Resources\\SupportIssueResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class IssuesMessagesStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:support.issues.write"),
List.of(new RouteParameter("supportIssue", new TypeDescriptor("App\\Domains\\Support\\Models\\SupportIssue", false, false))),
new RequestDescriptor("App\\Domains\\Support\\Http\\Requests\\StoreSupportIssueMessageRequest", "body", List.of(new RequestField("visibility", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"requester\",\"internal\""))), new RequestField("body", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"))), new RequestField("sent_at", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Support\\Resources\\SupportIssueResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class IssuesReopenEndpoint {
List.of("api", "auth:sanctum", "service.abilities:support.issues.write"),
List.of(new RouteParameter("supportIssue", new TypeDescriptor("App\\Domains\\Support\\Models\\SupportIssue", false, false))),
new RequestDescriptor("App\\Domains\\Support\\Http\\Requests\\ReopenSupportIssueRequest", "body", List.of(new RequestField("reason", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"))), new RequestField("status", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"open\",\"in_progress\",\"waiting_on_player\""))), new RequestField("summary", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"))), new RequestField("assigned_to_player_id", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("reopened_at", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Support\\Resources\\SupportIssueResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class IssuesStoreEndpoint {
List.of("api", "auth:sanctum", "service.abilities:support.issues.write"),
List.of(),
new RequestDescriptor("App\\Domains\\Support\\Http\\Requests\\StoreSupportIssueRequest", "body", List.of(new RequestField("subject_player_id", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("assigned_to_player_id", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("category", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"account\",\"purchase\",\"bug_report\",\"appeal\",\"other\""))), new RequestField("channel", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"player_portal\",\"email\",\"discord\",\"in_game\",\"internal\""))), new RequestField("priority", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"low\",\"normal\",\"high\",\"urgent\""))), new RequestField("title", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "max:255"))), new RequestField("summary", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"))), new RequestField("initial_message", List.of(new RuleDescriptor("string", null, "required"), new RuleDescriptor("string", null, "string"))), new RequestField("message_visibility", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"requester\",\"internal\""))), new RequestField("opened_at", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "array"))), new RequestField("initial_message_metadata", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Support\\Resources\\SupportIssueResource", false, false))
)
;
@@ -19,7 +19,7 @@ public final class IssuesUpdateEndpoint {
List.of("api", "auth:sanctum", "service.abilities:support.issues.write"),
List.of(new RouteParameter("supportIssue", new TypeDescriptor("App\\Domains\\Support\\Models\\SupportIssue", false, false))),
new RequestDescriptor("App\\Domains\\Support\\Http\\Requests\\UpdateSupportIssueRequest", "body", List.of(new RequestField("status", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"open\",\"in_progress\",\"waiting_on_player\",\"resolved\",\"closed\""))), new RequestField("priority", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\In", "in:\"low\",\"normal\",\"high\",\"urgent\""))), new RequestField("assigned_to_player_id", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"), new RuleDescriptor("string", null, "exists:players,id"))), new RequestField("summary", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"))), new RequestField("resolution_summary", List.of(new RuleDescriptor("object", "Illuminate\\Validation\\Rules\\RequiredIf", ""), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "string"))), new RequestField("resolved_at", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "date"))), new RequestField("metadata", List.of(new RuleDescriptor("string", null, "sometimes"), new RuleDescriptor("string", null, "nullable"), new RuleDescriptor("string", null, "array"))))),
new ResponseDescriptor("json_response", new TypeDescriptor("Illuminate\\Http\\JsonResponse", false, false))
new ResponseDescriptor("json_resource", new TypeDescriptor("App\\Domains\\Support\\Resources\\SupportIssueResource", false, false))
)
;
+2 -2
View File
@@ -1,7 +1,7 @@
{
"Group": "net.kewwbec",
"Name": "core-network",
"Version": "0.0.2",
"Version": "0.5.3",
"Description": "KweebecNetwork control-plane SDK for Hytale server plugins",
"Authors": [
{
@@ -9,7 +9,7 @@
}
],
"Website": "https://kewwbec.net",
"ServerVersion": "2026.02.17-255364b8e",
"ServerVersion": "0.5.3",
"Dependencies": {
},