From 0e010252f93f67018f4b189c282483c7ab3833e1 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Mon, 26 Aug 2024 12:39:19 -0400 Subject: [PATCH 001/130] add some basic logging to database seeding --- database/seeders/DatabaseSeeder.php | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 1cfedfb..28d487b 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -10,6 +10,8 @@ use App\Models\SptVersion; use App\Models\User; use App\Models\UserRole; use Illuminate\Database\Seeder; +use Symfony\Component\Console\Helper\ProgressBar; +use Symfony\Component\Console\Output\ConsoleOutput; class DatabaseSeeder extends Seeder { @@ -29,6 +31,16 @@ class DatabaseSeeder extends Seeder User::factory()->for($administrator, 'role')->create([ 'email' => 'test@example.com', ]); + + $this->command->outputComponents()->info('test account created: test@example.com'); + + $progress = $this->command->getOutput()->createProgressBar(5); + $progress->setFormat("%message%\n %current%/%max% [%bar%] %percent:3s%%"); + $progress->setMessage("starting ..."); + + $progress->start(); + + $progress->setMessage('adding users ...'); User::factory(4)->for($administrator, 'role')->create(); // Add 10 moderators. @@ -37,19 +49,27 @@ class DatabaseSeeder extends Seeder // Add 100 users. $users = User::factory(100)->create(); + $progress->advance(); + + // Add 300 mods, assigning them to the users we just created. + $progress->setMessage('adding mods ...'); $allUsers = $users->merge([$administrator, $moderator]); $mods = Mod::factory(300)->recycle([$licenses])->create(); foreach ($mods as $mod) { $userIds = $allUsers->random(rand(1, 3))->pluck('id')->toArray(); $mod->users()->attach($userIds); } + $progress->advance(); // Add 3000 mod versions, assigning them to the mods we just created. + $progress->setMessage('adding mod versions ...'); $modVersions = ModVersion::factory(3000)->recycle([$mods, $spt_versions])->create(); + $progress->advance(); // Add ModDependencies to a subset of ModVersions. + $progress->setMessage('adding mod dependencies ...'); foreach ($modVersions as $modVersion) { $hasDependencies = rand(0, 100) < 30; // 30% chance to have dependencies if ($hasDependencies) { @@ -59,5 +79,9 @@ class DatabaseSeeder extends Seeder } } } + $progress->advance(); + $progress->finish(); + $this->command->info(''); + $this->command->outputComponents()->success('Database seeded'); } } From 5d5d94eaeee455e2e4059ef427c4c715f6085629 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Tue, 27 Aug 2024 16:41:30 -0400 Subject: [PATCH 002/130] WIP --- resources/views/user/show.blade.php | 37 +++++++++++++++++++---------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/resources/views/user/show.blade.php b/resources/views/user/show.blade.php index 8e2874c..74ded89 100644 --- a/resources/views/user/show.blade.php +++ b/resources/views/user/show.blade.php @@ -2,32 +2,43 @@
- {{ $user->name }} + profile cover photo of {{ $user->name }}
- {{ $user->name }} + profile photo of {{ $user->name }}

{{ $user->name }}

+

{{__("Member Since")}} {{ $user->created_at->format("M d, h:m a") }}

- {{-- -
- -
- --}} + + @if(\Illuminate\Support\Facades\Auth::check()) +
+ +
+
+ +
+ @endif
From 681ef3ac914256e7619919f21f3322a83751b97e Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Wed, 28 Aug 2024 13:00:23 -0400 Subject: [PATCH 003/130] add full progress to seeder --- database/seeders/DatabaseSeeder.php | 83 ++++++++++++++++++----------- 1 file changed, 51 insertions(+), 32 deletions(-) diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 28d487b..33d7d28 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -10,8 +10,8 @@ use App\Models\SptVersion; use App\Models\User; use App\Models\UserRole; use Illuminate\Database\Seeder; -use Symfony\Component\Console\Helper\ProgressBar; -use Symfony\Component\Console\Output\ConsoleOutput; + +use function Laravel\Prompts\progress; class DatabaseSeeder extends Seeder { @@ -20,6 +20,11 @@ class DatabaseSeeder extends Seeder */ public function run(): void { + // how many of each "thing" to make during seeding + $userCount = 100; + $modCount = 300; + $modVersionCount = 500; + // Create a few SPT versions. $spt_versions = SptVersion::factory(30)->create(); @@ -34,13 +39,6 @@ class DatabaseSeeder extends Seeder $this->command->outputComponents()->info('test account created: test@example.com'); - $progress = $this->command->getOutput()->createProgressBar(5); - $progress->setFormat("%message%\n %current%/%max% [%bar%] %percent:3s%%"); - $progress->setMessage("starting ..."); - - $progress->start(); - - $progress->setMessage('adding users ...'); User::factory(4)->for($administrator, 'role')->create(); // Add 10 moderators. @@ -48,40 +46,61 @@ class DatabaseSeeder extends Seeder User::factory(5)->for($moderator, 'role')->create(); // Add 100 users. - $users = User::factory(100)->create(); - $progress->advance(); + $users = progress( + label: 'adding users...', + steps: $userCount, + callback: fn () => User::factory()->create() + ); + // dd($users); + $users = collect($users); // Add 300 mods, assigning them to the users we just created. - $progress->setMessage('adding mods ...'); $allUsers = $users->merge([$administrator, $moderator]); - $mods = Mod::factory(300)->recycle([$licenses])->create(); - foreach ($mods as $mod) { - $userIds = $allUsers->random(rand(1, 3))->pluck('id')->toArray(); - $mod->users()->attach($userIds); - } - $progress->advance(); + + $mods = progress( + label: 'adding mods...', + steps: $modCount, + callback: fn () => Mod::factory()->recycle([$licenses])->create() + ); + + $mods = collect($mods); + + progress( + label: 'attaching mod users ...', + steps: $mods, + callback: function ($mod) use ($allUsers) { + $userIds = $allUsers->random(rand(1, 3))->pluck('id')->toArray(); + $mod->users()->attach($userIds); + } + ); // Add 3000 mod versions, assigning them to the mods we just created. - $progress->setMessage('adding mod versions ...'); - $modVersions = ModVersion::factory(3000)->recycle([$mods, $spt_versions])->create(); - $progress->advance(); + $modVersions = progress( + label: 'adding mods versions ...', + steps: $modVersionCount, + callback: fn () => ModVersion::factory()->recycle([$mods, $spt_versions])->create() + ); + + $modVersions = collect($modVersions); // Add ModDependencies to a subset of ModVersions. - $progress->setMessage('adding mod dependencies ...'); - foreach ($modVersions as $modVersion) { - $hasDependencies = rand(0, 100) < 30; // 30% chance to have dependencies - if ($hasDependencies) { - $dependencyMods = $mods->random(rand(1, 3)); // 1 to 3 dependencies - foreach ($dependencyMods as $dependencyMod) { - ModDependency::factory()->recycle([$modVersion, $dependencyMod])->create(); + + progress( + label: 'adding mods dependencies ...', + steps: $modVersions, + callback: function ($modVersion) use ($mods) { + $hasDependencies = rand(0, 100) < 30; // 30% chance to have dependencies + if ($hasDependencies) { + $dependencyMods = $mods->random(rand(1, 3)); // 1 to 3 dependencies + foreach ($dependencyMods as $dependencyMod) { + ModDependency::factory()->recycle([$modVersion, $dependencyMod])->create(); + } } } - } - $progress->advance(); - $progress->finish(); - $this->command->info(''); + ); + $this->command->outputComponents()->success('Database seeded'); } } From dbcbbc4d14ccc51ea2ffd807aa9e988d974b1b0e Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Wed, 28 Aug 2024 13:07:00 -0400 Subject: [PATCH 004/130] cleanup seeder --- database/seeders/DatabaseSeeder.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 33d7d28..768d1bd 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -52,8 +52,6 @@ class DatabaseSeeder extends Seeder callback: fn () => User::factory()->create() ); - // dd($users); - $users = collect($users); // Add 300 mods, assigning them to the users we just created. @@ -67,6 +65,7 @@ class DatabaseSeeder extends Seeder $mods = collect($mods); + // attach users to mods progress( label: 'attaching mod users ...', steps: $mods, @@ -86,7 +85,6 @@ class DatabaseSeeder extends Seeder $modVersions = collect($modVersions); // Add ModDependencies to a subset of ModVersions. - progress( label: 'adding mods dependencies ...', steps: $modVersions, From 71a336ecabfb7f0df8285dfe540ce190ba3148df Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Wed, 28 Aug 2024 14:03:33 -0400 Subject: [PATCH 005/130] collect progress when needed --- database/seeders/DatabaseSeeder.php | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 768d1bd..ae97eca 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -46,24 +46,20 @@ class DatabaseSeeder extends Seeder User::factory(5)->for($moderator, 'role')->create(); // Add 100 users. - $users = progress( + $users = collect(progress( label: 'adding users...', steps: $userCount, callback: fn () => User::factory()->create() - ); - - $users = collect($users); + )); // Add 300 mods, assigning them to the users we just created. $allUsers = $users->merge([$administrator, $moderator]); - $mods = progress( + $mods = collect(progress( label: 'adding mods...', steps: $modCount, callback: fn () => Mod::factory()->recycle([$licenses])->create() - ); - - $mods = collect($mods); + )); // attach users to mods progress( @@ -76,13 +72,11 @@ class DatabaseSeeder extends Seeder ); // Add 3000 mod versions, assigning them to the mods we just created. - $modVersions = progress( + $modVersions = collect(progress( label: 'adding mods versions ...', steps: $modVersionCount, callback: fn () => ModVersion::factory()->recycle([$mods, $spt_versions])->create() - ); - - $modVersions = collect($modVersions); + )); // Add ModDependencies to a subset of ModVersions. progress( From a7cd60a164566497b627b8ea7a1388d502cbf00f Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Wed, 28 Aug 2024 16:59:28 -0400 Subject: [PATCH 006/130] add user follows --- app/Http/Controllers/UserController.php | 5 ++ app/Models/User.php | 16 +++++++ .../2024_08_28_141058_user_follows.php | 31 ++++++++++++ database/seeders/DatabaseSeeder.php | 47 +++++++++++++------ 4 files changed, 85 insertions(+), 14 deletions(-) create mode 100644 database/migrations/2024_08_28_141058_user_follows.php diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index a8e86d5..e8cc71a 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -20,6 +20,11 @@ class UserController extends Controller abort(403); } + // not sure if this is optimal. Some way to do $user->with(...) ??? + $user = User::where('id', $user->id) + ->with(['followers', 'following']) + ->firstOrFail(); + return view('user.show', compact('user')); } } diff --git a/app/Models/User.php b/app/Models/User.php index 157248b..f8f22c9 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -50,6 +50,22 @@ class User extends Authenticatable implements MustVerifyEmail return $this->belongsToMany(Mod::class); } + /** + * The relationship between a user and users they follow + */ + public function following(): BelongsToMany + { + return $this->belongsToMany(User::class, 'user_follows', 'follower_id', 'following_id'); + } + + /** + * The relationship between a user and users that follow them + */ + public function followers(): BelongsToMany + { + return $this->belongsToMany(User::class, 'user_follows', 'following_id', 'follower_id'); + } + /** * The data that is searchable by Scout. */ diff --git a/database/migrations/2024_08_28_141058_user_follows.php b/database/migrations/2024_08_28_141058_user_follows.php new file mode 100644 index 0000000..7b7fca3 --- /dev/null +++ b/database/migrations/2024_08_28_141058_user_follows.php @@ -0,0 +1,31 @@ +id(); + $table->unsignedBigInteger('follower_id'); + $table->unsignedBigInteger('following_id'); + $table->foreign('follower_id')->references('id')->on('users')->cascadeOnDelete()->cascadeOnUpdate(); + $table->foreign('following_id')->references('id')->on('users')->cascadeOnDelete()->cascadeOnUpdate(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('user_follows'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index ae97eca..04b1591 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -31,29 +31,48 @@ class DatabaseSeeder extends Seeder // Create some code licenses. $licenses = License::factory(10)->create(); - // Add 5 administrators. - $administrator = UserRole::factory()->administrator()->create(); - User::factory()->for($administrator, 'role')->create([ + // Add administrators. + $administratorRole = UserRole::factory()->administrator()->create(); + $testAccount = User::factory()->for($administratorRole, 'role')->create([ 'email' => 'test@example.com', ]); - $this->command->outputComponents()->info('test account created: test@example.com'); + $this->command->outputComponents()->info("test account created: $testAccount->email"); - User::factory(4)->for($administrator, 'role')->create(); + User::factory(4)->for($administratorRole, 'role')->create(); - // Add 10 moderators. - $moderator = UserRole::factory()->moderator()->create(); - User::factory(5)->for($moderator, 'role')->create(); + // Add moderators. + $moderatorRole = UserRole::factory()->moderator()->create(); + User::factory(5)->for($moderatorRole, 'role')->create(); - // Add 100 users. - $users = collect(progress( + // Add users + progress( label: 'adding users...', steps: $userCount, callback: fn () => User::factory()->create() - )); + ); - // Add 300 mods, assigning them to the users we just created. - $allUsers = $users->merge([$administrator, $moderator]); + // get all users + $allUsers = User::all(); + + // Add user follows + progress( + label: 'adding user follows ...', + steps: $allUsers, + callback: function ($user) use ($allUsers) { + $hasFollowers = rand(0, 100) < 70; // 70% chance to have followers + $isFollowing = rand(0, 100) < 70; // 70% chance to be following other users + + if ($hasFollowers) { + $followers = $allUsers->random(rand(1, 10))->pluck('id')->toArray(); + $user->followers()->attach($followers); + } + + if ($isFollowing) { + $following = $allUsers->random(rand(1, 10))->pluck('id')->toArray(); + $user->following()->attach($following); + } + }); $mods = collect(progress( label: 'adding mods...', @@ -71,7 +90,7 @@ class DatabaseSeeder extends Seeder } ); - // Add 3000 mod versions, assigning them to the mods we just created. + // Add mod versions, assigning them to the mods we just created. $modVersions = collect(progress( label: 'adding mods versions ...', steps: $modVersionCount, From f4ae428bdc32c577091c5ba7ea7b02dcfc2ab327 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Wed, 28 Aug 2024 18:41:35 -0400 Subject: [PATCH 007/130] add followers and following info WIP I'm too lazy to finish this today --- resources/views/user/show.blade.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/resources/views/user/show.blade.php b/resources/views/user/show.blade.php index 74ded89..19e1e40 100644 --- a/resources/views/user/show.blade.php +++ b/resources/views/user/show.blade.php @@ -16,6 +16,7 @@ @if(\Illuminate\Support\Facades\Auth::check()) + @if(\Illuminate\Support\Facades\Auth::id() != $user->id)
+ @endif
+
+
+

Followers:

+ @foreach($user->followers as $follower) +

{{$follower->name}}

+ @endforeach +
+
+

Following:

+ @foreach($user->following as $following) +

{{$following->name}}

+ @endforeach +
+
From 05f2dfc2582057dc79f38a5fc0ea5f6d57071a4e Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Thu, 29 Aug 2024 16:25:55 -0400 Subject: [PATCH 008/130] work dump WIP --- app/Livewire/UserStack.php | 19 ++++++ resources/views/livewire/user-stack.blade.php | 47 ++++++++++++++ resources/views/user/show.blade.php | 62 +++++++++++-------- 3 files changed, 102 insertions(+), 26 deletions(-) create mode 100644 app/Livewire/UserStack.php create mode 100644 resources/views/livewire/user-stack.blade.php diff --git a/app/Livewire/UserStack.php b/app/Livewire/UserStack.php new file mode 100644 index 0000000..2f0ea0c --- /dev/null +++ b/app/Livewire/UserStack.php @@ -0,0 +1,19 @@ + +
+

{{$label}}

+
+
+ @foreach($users->slice(0, $limit) as $user) +
+ + {{$user->name[0]}} + +
+ {{$user->name}} +
+
+ @endforeach + @if($users->count() > $limit) +
+ +{{$users->count()-$limit}} +
+ {{$users->count()}} total +
+
+ @endif +
+ @if($users->count() > $limit) +
+ +
+ @endif + + + +

testing

+
+ +

no u

+
+ + + + {{__('Close')}} + + + +
+ diff --git a/resources/views/user/show.blade.php b/resources/views/user/show.blade.php index 19e1e40..4df26d4 100644 --- a/resources/views/user/show.blade.php +++ b/resources/views/user/show.blade.php @@ -2,12 +2,14 @@
- profile cover photo of {{ $user->name }} + profile cover photo of {{ $user->name }}
- profile photo of {{ $user->name }} + profile photo of {{ $user->name }}
@@ -17,20 +19,28 @@ @if(\Illuminate\Support\Facades\Auth::check()) @if(\Illuminate\Support\Facades\Auth::id() != $user->id) -
- -
+
+ +
@endif
- @@ -43,20 +53,20 @@

{{__("Member Since")}} {{ $user->created_at->format("M d, h:m a") }}

-
-
-

Followers:

- @foreach($user->followers as $follower) -

{{$follower->name}}

- @endforeach +
+
+ {{-- column 1 placeholder --}}
-
-

Following:

- @foreach($user->following as $following) -

{{$following->name}}

- @endforeach +
+
+ @livewire('user-stack', ['label' => 'Followers', 'users' => $user->followers]); +{{-- --}} +
+
+ @livewire('user-stack', ['label' => 'Following', 'users' => $user->following]); +{{-- --}} +
- From 239b10ca9dc4843eb949ca535e317f8d663c35f9 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Thu, 29 Aug 2024 21:50:59 -0400 Subject: [PATCH 009/130] user stack and follows WIP --- app/Livewire/UserStack.php | 13 +++++ app/Models/User.php | 18 +++++++ resources/views/livewire/user-stack.blade.php | 40 ++++++++++---- resources/views/user/show.blade.php | 53 ++++++++++++------- 4 files changed, 95 insertions(+), 29 deletions(-) diff --git a/app/Livewire/UserStack.php b/app/Livewire/UserStack.php index 2f0ea0c..e0b8b46 100644 --- a/app/Livewire/UserStack.php +++ b/app/Livewire/UserStack.php @@ -2,6 +2,7 @@ namespace App\Livewire; +use Illuminate\Support\Facades\Auth; use Livewire\Component; class UserStack extends Component @@ -12,8 +13,20 @@ class UserStack extends Component public int $limit = 5; + public bool $viewAll = false; + public function render() { return view('livewire.user-stack'); } + + public function toggleViewAll() + { + $this->viewAll = ! $this->viewAll; + } + + public function followUser($user) + { + $user->followers->syncWithoutDetaching(Auth::id()); + } } diff --git a/app/Models/User.php b/app/Models/User.php index f8f22c9..a48cd1a 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -66,6 +66,24 @@ class User extends Authenticatable implements MustVerifyEmail return $this->belongsToMany(User::class, 'user_follows', 'following_id', 'follower_id'); } + public function isFollowing(User|int $user): bool + { + $userId = $user instanceof User ? $user->id : $user; + return $this->following()->where('following_id', $userId)->exists(); + } + + public function follow(User|int $user): void + { + $userId = $user instanceof User ? $user->id : $user; + $this->following()->syncWithoutDetaching($userId); + } + + public function unfollow(User|int $user): void + { + $userId = $user instanceof User ? $user->id : $user; + $this->following()->detach($userId); + } + /** * The data that is searchable by Scout. */ diff --git a/resources/views/livewire/user-stack.blade.php b/resources/views/livewire/user-stack.blade.php index 5796e44..0bff890 100644 --- a/resources/views/livewire/user-stack.blade.php +++ b/resources/views/livewire/user-stack.blade.php @@ -2,22 +2,26 @@

{{$label}}

-
+
@foreach($users->slice(0, $limit) as $user)
- + {{$user->name[0]}} -
+
{{$user->name}}
@endforeach @if($users->count() > $limit)
- +{{$users->count()-$limit}} -
+ +{{$users->count()-$limit}} +
{{$users->count()}} total
@@ -25,20 +29,38 @@
@if($users->count() > $limit)
- +
@endif -

testing

+

{{$user->name}}'s {{$label}}

-

no u

+
+ @foreach($users as $user) + {{-- user tile --}} +
+ {{$user->name}} +
+ {{$user->name}} + {{__("Member Since")}} {{ $user->created_at->format("M d, h:m a") }} +
+ +
+ @endforeach +
- + {{__('Close')}} diff --git a/resources/views/user/show.blade.php b/resources/views/user/show.blade.php index 4df26d4..8233df5 100644 --- a/resources/views/user/show.blade.php +++ b/resources/views/user/show.blade.php @@ -17,20 +17,35 @@

{{__("Member Since")}} {{ $user->created_at->format("M d, h:m a") }}

- @if(\Illuminate\Support\Facades\Auth::check()) - @if(\Illuminate\Support\Facades\Auth::id() != $user->id) -
- -
+ @if(auth()->check()) + @if(auth()->id() != $user->id) + @if(auth()->user()->isFollowing($user)) +
+ +
+ @else +
+ +
+ @endif @endif
+ + @if(auth()->id() != $user->id) + @if(auth()->user()->isFollowing($user)) + {{-- following button --}} + + @else + {{-- follow button --}} + + @endif + @else + {{-- 'you' card for auth user in list --}} + + @endif
@endforeach
diff --git a/resources/views/livewire/user/profile.blade.php b/resources/views/livewire/user/profile.blade.php new file mode 100644 index 0000000..2d4f4e7 --- /dev/null +++ b/resources/views/livewire/user/profile.blade.php @@ -0,0 +1,81 @@ +
+
+ profile cover photo of {{ $user->name }} +
+
+
+
+ profile photo of {{ $user->name }} +
+
+
+

{{ $user->name }}

+

{{__("Member Since")}} {{ $user->created_at->format("M d, h:m a") }}

+
+ + @if(auth()->check()) + @if(auth()->id() != $user->id) + @if(auth()->user()->isFollowing($user)) +
+ +
+ @else +
+ +
+ @endif + @endif +
+ +
+ @endif +
+
+ +
+
+
+ {{-- column 1 placeholder --}} +
+
+
+ +
+
+ +
+
+
+
diff --git a/resources/views/user/show.blade.php b/resources/views/user/show.blade.php index 8233df5..99917e8 100644 --- a/resources/views/user/show.blade.php +++ b/resources/views/user/show.blade.php @@ -1,85 +1,3 @@ - -
-
- profile cover photo of {{ $user->name }} -
-
-
-
- profile photo of {{ $user->name }} -
-
-
-

{{ $user->name }}

-

{{__("Member Since")}} {{ $user->created_at->format("M d, h:m a") }}

-
- - @if(auth()->check()) - @if(auth()->id() != $user->id) - @if(auth()->user()->isFollowing($user)) -
- -
- @else -
- -
- @endif - @endif -
- -
- @endif -
-
- -
-
-
- {{-- column 1 placeholder --}} -
-
-
- @livewire('user-stack', ['label' => 'Followers', 'users' => $user->followers]) -
-
- @livewire('user-stack', ['label' => 'Following', 'users' => $user->following]) -
-
-
-
+ @livewire('user.profile', ['user' => $user])
From aabf5a1b444de4fc3b419cb66b4b025fc6e0338b Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Sat, 31 Aug 2024 22:40:36 -0400 Subject: [PATCH 011/130] improve user stack auth user following checks and some UI tweaks --- app/Livewire/User/Profile.php | 14 +++++++++++ app/Livewire/UserStack.php | 23 +++++++++++++++++ resources/views/livewire/user-stack.blade.php | 25 +++++++++++++------ .../views/livewire/user/profile.blade.php | 6 ++--- 4 files changed, 57 insertions(+), 11 deletions(-) diff --git a/app/Livewire/User/Profile.php b/app/Livewire/User/Profile.php index 648ef7c..d3a294c 100644 --- a/app/Livewire/User/Profile.php +++ b/app/Livewire/User/Profile.php @@ -9,11 +9,25 @@ class Profile extends Component { public User $user; + public $followers; + + public $following; + + protected $listeners = ['refreshNeeded' => 'render']; + public function render() { + $this->followers = $this->user->followers; + $this->following = $this->user->following; + return view('livewire.user.profile'); } + public function message() + { + $this->render(); + } + public function followUser(User $user) { auth()->user()->follow($user); diff --git a/app/Livewire/UserStack.php b/app/Livewire/UserStack.php index 2dbebd0..a003273 100644 --- a/app/Livewire/UserStack.php +++ b/app/Livewire/UserStack.php @@ -4,20 +4,31 @@ namespace App\Livewire; use App\Models\User; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Log; +use Livewire\Attributes\Reactive; use Livewire\Component; class UserStack extends Component { + #[Reactive] public $users; + public $authFollowingIds = []; + public string $label = 'Users'; public int $limit = 5; public bool $viewAll = false; + public bool $refreshNeeded = false; + public function render() { + if (Auth::check()) { + $this->authFollowingIds = Auth::user()->following()->pluck('following_id')->toArray(); + } + return view('livewire.user-stack'); } @@ -26,13 +37,25 @@ class UserStack extends Component $this->viewAll = ! $this->viewAll; } + public function closeDialog() + { + if ($this->refreshNeeded) + { + $this->dispatch('refreshNeeded'); + } + + $this->toggleViewAll(); + } + public function followUser(User $user) { Auth::user()->follow($user); + $this->refreshNeeded = true; } public function unfollowUser(User $user) { Auth::user()->unfollow($user); + $this->refreshNeeded = true; } } diff --git a/resources/views/livewire/user-stack.blade.php b/resources/views/livewire/user-stack.blade.php index 7f4a834..8bbb0c0 100644 --- a/resources/views/livewire/user-stack.blade.php +++ b/resources/views/livewire/user-stack.blade.php @@ -53,20 +53,29 @@
@if(auth()->id() != $user->id) - @if(auth()->user()->isFollowing($user)) + @if(count($authFollowingIds) !== 0 && in_array($user->id, $authFollowingIds)) {{-- following button --}} @else {{-- follow button --}} @endif @@ -82,7 +91,7 @@ - + {{__('Close')}} diff --git a/resources/views/livewire/user/profile.blade.php b/resources/views/livewire/user/profile.blade.php index 2d4f4e7..5c204f8 100644 --- a/resources/views/livewire/user/profile.blade.php +++ b/resources/views/livewire/user/profile.blade.php @@ -45,7 +45,7 @@ @endif @endif
-
- +
- +
From 4ba181900ebe57b3a3f2fe807ceea0d2e7705701 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Sun, 1 Sep 2024 23:42:44 -0400 Subject: [PATCH 012/130] add test --- app/Models/User.php | 12 +++- tests/Feature/User/FollowTest.php | 100 ++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 tests/Feature/User/FollowTest.php diff --git a/app/Models/User.php b/app/Models/User.php index 2401b3a..35d6fc3 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -76,13 +76,23 @@ class User extends Authenticatable implements MustVerifyEmail public function follow(User|int $user): void { $userId = $user instanceof User ? $user->id : $user; + + if ($this->id === $userId) { + // don't allow following yourself + return; + } + $this->following()->syncWithoutDetaching($userId); } public function unfollow(User|int $user): void { $userId = $user instanceof User ? $user->id : $user; - $this->following()->detach($userId); + + // make sure the user is being followed before trying to detach + if ($this->isFollowing($userId)) { + $this->following()->detach($userId); + } } /** diff --git a/tests/Feature/User/FollowTest.php b/tests/Feature/User/FollowTest.php new file mode 100644 index 0000000..c983d00 --- /dev/null +++ b/tests/Feature/User/FollowTest.php @@ -0,0 +1,100 @@ +create(); + + $user->follow($user); + + $this->assertEmpty($user->follwers); + $this->assertEmpty($user->following); +}); + +test('confirm a user can follow and unfollow another user', function () { + $user1 = User::factory()->create(); + $user2 = User::factory()->create(); + + $user1->follow($user2); + + $this->assertTrue($user1->isFollowing($user2)); + + $user1->unfollow($user2); + + $this->assertFalse($user1->isFollowing($user2)); +}); + +test('confirm following a user cannot be done twice', function () { + $user1 = User::factory()->create(); + $user2 = User::factory()->create(); + + $user1->follow($user2); + $user1->follow($user2); + + + $this->assertCount(1, $user1->following); + $this->assertCount(1, $user2->followers); +}); + +test('confirm unfollowing a user that isnt being followed doesnt throw', function () { + $user1 = User::factory()->create(); + $user2 = User::factory()->create(); + + $user1->unfollow($user2); + + $this->assertEmpty($user1->following); + $this->assertEmpty($user2->followers); +}); + +test('confirm unfollowing random number doesnt perform detach all', function () { + $user1 = User::factory()->create(); + $user2 = User::factory()->create(); + $user3 = User::factory()->create(); + + $user1->follow($user2); + $user1->follow($user3); + + $this->assertTrue($user1->isFollowing($user2)); + $this->assertTrue($user1->isFollowing($user3)); + + $this->assertCount(2, $user1->following); + $this->assertCount(1, $user2->followers); + $this->assertCount(1, $user3->followers); + + $user1->unfollow(111112222233333); + + $this->assertTrue($user1->isFollowing($user2)); + $this->assertTrue($user1->isFollowing($user3)); +}); + +test('confirm null follow input fails', function () { + $this->expectException(TypeError::class); + + $user = User::factory()->create(); + + $user->follow(null); +}); + +test('confirm empty follow input fails', function () { + $this->expectException(ArgumentCountError::class); + + $user = User::factory()->create(); + + $user->follow(); +}); + +test('confirm null unfollow input fails', function () { + $this->expectException(TypeError::class); + + $user = User::factory()->create(); + + $user->unfollow(null); +}); + +test('confirm empty unfollow input fails', function () { + $this->expectException(ArgumentCountError::class); + + $user = User::factory()->create(); + + $user->unfollow(); +}); From f150f2a37148cac8eecd214f2ae73e06cb8da47a Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Tue, 3 Sep 2024 10:59:17 -0400 Subject: [PATCH 013/130] combine auth check shouldn't show follow or message if user isn't logged in or is viewing their own profile --- resources/views/livewire/user/profile.blade.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/resources/views/livewire/user/profile.blade.php b/resources/views/livewire/user/profile.blade.php index 5c204f8..c6445e2 100644 --- a/resources/views/livewire/user/profile.blade.php +++ b/resources/views/livewire/user/profile.blade.php @@ -15,9 +15,9 @@

{{__("Member Since")}} {{ $user->created_at->format("M d, h:m a") }}

- @if(auth()->check()) - @if(auth()->id() != $user->id) + @if(auth()->check() && auth()->id() != $user->id) @if(auth()->user()->isFollowing($user)) + {{-- Following button --}}
@else + {{-- Follow button --}}
- @endif @endif + {{-- Message button --}}
From 1ce5c86751fd866dce1c79a35286e64315b2708f Mon Sep 17 00:00:00 2001 From: Schrader Date: Fri, 6 Sep 2024 13:51:10 +0200 Subject: [PATCH 015/130] Update README.md with correct wiki URLs --- .github/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/README.md b/.github/README.md index 518895e..12b6fcb 100644 --- a/.github/README.md +++ b/.github/README.md @@ -12,7 +12,7 @@ The Forge is a Laravel-based web application that provides a platform for the Si ## Development Environment Setup -We use [Laravel Sail](https://laravel.com/docs/11.x/sail) to mirror the services that are used in our production server in a local development environment. You can see detailed instructions on how to configure the [full development environment](https://github.com/sp-tarkov/forge/wiki/Full-Windows-Dev-Env) or a [lightweight development environment](https://github.com/sp-tarkov/forge/wiki/Light-Windows-Dev-Env) on the project wiki. The full development environment is recommended. +We use [Laravel Sail](https://laravel.com/docs/11.x/sail) to mirror the services that are used in our production server in a local development environment. You can see detailed instructions on how to configure the [full development environment](https://dev.sp-tarkov.com/SPT/forge/wiki/Full-Windows-Dev-Env) or a [lightweight development environment](https://dev.sp-tarkov.com/SPT/forge/wiki/Light-Windows-Dev-Env) on the project wiki. The full development environment is recommended. ### Available Services: From 552ecf3ac20ad3f4e4669ad8118b4eecc2d7f054 Mon Sep 17 00:00:00 2001 From: Refringe Date: Sun, 8 Sep 2024 19:05:20 -0400 Subject: [PATCH 016/130] Removed mention of Github Discussions We moved to Gitea and there's no discussions implementation. Discord #website-general FTW! Resovles #47 --- .github/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/README.md b/.github/README.md index 12b6fcb..50f0715 100644 --- a/.github/README.md +++ b/.github/README.md @@ -25,13 +25,13 @@ We use [Laravel Sail](https://laravel.com/docs/11.x/sail) to mirror the services ### Notable Routes -| Service | Authentication | Access Via Host | -|----------------------------------|----------------|-----------------------------| +| Service | Authentication | Access Via Host | +|----------------------------------|----------------|----------------------------| | Laravel Filament Admin Panel | Via User Role | | | Redis Queue Management (Horizon) | Via User Role | | | Website Status (Pulse) | Via User Role | | -| Meilisearch WebUI | Local Only | | -| Mailpit WebUI | Local Only | | +| Meilisearch WebUI | Local Only | | +| Mailpit WebUI | Local Only | | Most of these connection settings should already be configured in the `.env.full` or `.env.light` example files. Simply save one of these (depending on your environment) as `.env` and adjust settings as needed. @@ -80,12 +80,12 @@ For more information on Laravel development, please refer to the [official docum ## Development Discussion -*__Please note__, we are very early in development and will likely not accept work that is not discussed beforehand through the following channels...* - -You may propose new features or improvements of existing Forge behavior in [the repository's GitHub discussion board](https://github.com/sp-tarkov/forge/discussions). If you propose a new feature, please be willing to implement at least some of the code that would be needed to complete the feature. +*__Please note__, we are very early in development and will likely not accept work that is not discussed beforehand.* Informal discussion regarding bugs, new features, and implementation of existing features takes place in the `#website-general` channel of the [Single Player Tarkov Discord server](https://discord.com/invite/Xn9msqQZan). Refringe, the maintainer of Forge, is typically present in the channel on weekdays from 9am-5pm Eastern Time (ET), and sporadically present in the channel at other times. +If you propose a new feature, please be willing to implement at least some of the code that would be needed to complete the feature. + ## Which Branch? The `main` branch is the default branch for Forge. This branch is used for the latest stable release of the site. The `develop` branch is used for the latest development changes. All feature branches should be based on the `develop` branch. All pull requests should target the `develop` branch. From ffd511702803f013277c074314d919499f1a052b Mon Sep 17 00:00:00 2001 From: Refringe Date: Sun, 8 Sep 2024 22:00:26 -0400 Subject: [PATCH 017/130] Renames $availableSptVersions to $activeSptVersions in Mod Listing --- app/Livewire/Mod/Index.php | 6 +++--- resources/views/livewire/mod/index.blade.php | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/Livewire/Mod/Index.php b/app/Livewire/Mod/Index.php index 5760c14..f8d8b58 100644 --- a/app/Livewire/Mod/Index.php +++ b/app/Livewire/Mod/Index.php @@ -48,14 +48,14 @@ class Index extends Component /** * The available SPT versions. */ - public Collection $availableSptVersions; + public Collection $activeSptVersions; /** * The component mount method, run only once when the component is mounted. */ public function mount(): void { - $this->availableSptVersions = $this->availableSptVersions ?? Cache::remember('available-spt-versions', 60 * 60, function () { + $this->activeSptVersions = $this->activeSptVersions ?? Cache::remember('active-spt-versions', 60 * 60, function () { return SptVersion::getVersionsForLastThreeMinors(); }); @@ -67,7 +67,7 @@ class Index extends Component */ public function getLatestMinorVersions(): Collection { - return $this->availableSptVersions->filter(function (SptVersion $sptVersion) { + return $this->activeSptVersions->filter(function (SptVersion $sptVersion) { return $sptVersion->isLatestMinor(); }); } diff --git a/resources/views/livewire/mod/index.blade.php b/resources/views/livewire/mod/index.blade.php index 1761406..b8167e4 100644 --- a/resources/views/livewire/mod/index.blade.php +++ b/resources/views/livewire/mod/index.blade.php @@ -53,13 +53,13 @@
@php - $totalVersions = count($availableSptVersions); + $totalVersions = count($activeSptVersions); $half = ceil($totalVersions / 2); @endphp
{{ __('SPT Versions') }}
- @foreach ($availableSptVersions as $index => $version) + @foreach ($activeSptVersions as $index => $version) @if ($index < $half) {{ $version->version }} @endif @@ -69,7 +69,7 @@
 
- @foreach ($availableSptVersions as $index => $version) + @foreach ($activeSptVersions as $index => $version) @if ($index >= $half) {{ $version->version }} @endif From 164a649cd46db3a9b6f60c471ee39eacc5532fa1 Mon Sep 17 00:00:00 2001 From: Refringe Date: Sun, 8 Sep 2024 22:06:52 -0400 Subject: [PATCH 018/130] Removes old SPT versions from search results The global search results are now limited to mods tagged with the last three minor SPT versions, like the mod listing filters. I'm not 100% sure about this change. Open to suggestions and revisiting this in the future. Resolves #26 --- app/Models/Mod.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/Models/Mod.php b/app/Models/Mod.php index 030c7db..84d6e22 100644 --- a/app/Models/Mod.php +++ b/app/Models/Mod.php @@ -14,6 +14,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; use Laravel\Scout\Searchable; @@ -144,6 +145,14 @@ class Mod extends Model return false; } + // Ensure the latest SPT version is within the last three minor versions. + $activeSptVersions = Cache::remember('active-spt-versions', 60 * 60, function () { + return SptVersion::getVersionsForLastThreeMinors(); + }); + if (! in_array($latestVersion->latestSptVersion()->first()->version, $activeSptVersions->pluck('version')->toArray())) { + return false; + } + // All conditions are met; the mod should be searchable. return true; } From cb1fb7c90e0f42816aaeec4ebe07d6723eb76ccf Mon Sep 17 00:00:00 2001 From: Refringe Date: Sun, 8 Sep 2024 22:51:26 -0400 Subject: [PATCH 019/130] Updates deps --- composer.json | 1 - composer.lock | 300 +++++++++++++++++----------------------------- package-lock.json | 64 +++++----- 3 files changed, 145 insertions(+), 220 deletions(-) diff --git a/composer.json b/composer.json index 714d954..ebef945 100644 --- a/composer.json +++ b/composer.json @@ -36,7 +36,6 @@ "mockery/mockery": "^1.6", "nunomaduro/collision": "^8.1", "pestphp/pest": "^2.34", - "pestphp/pest-plugin-stressless": "^2.2", "spatie/laravel-ignition": "^2.8" }, "autoload": { diff --git a/composer.lock b/composer.lock index e20bcda..d5feac9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "920d8caa63c8b0da280a78c05d5983a8", + "content-hash": "aef706ee9aa7b671ca81c5ced4a7bfb7", "packages": [ { "name": "anourvalar/eloquent-serialize", - "version": "1.2.23", + "version": "1.2.24", "source": { "type": "git", "url": "https://github.com/AnourValar/eloquent-serialize.git", - "reference": "fd7bc1dc2c98fe705647ab4b81d13ea3d599ea1f" + "reference": "77e3fc7da44fa96b6148a1613dd76fe954a5f279" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/fd7bc1dc2c98fe705647ab4b81d13ea3d599ea1f", - "reference": "fd7bc1dc2c98fe705647ab4b81d13ea3d599ea1f", + "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/77e3fc7da44fa96b6148a1613dd76fe954a5f279", + "reference": "77e3fc7da44fa96b6148a1613dd76fe954a5f279", "shasum": "" }, "require": { @@ -68,9 +68,9 @@ ], "support": { "issues": "https://github.com/AnourValar/eloquent-serialize/issues", - "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.2.23" + "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.2.24" }, - "time": "2024-07-12T10:52:26+00:00" + "time": "2024-09-08T15:57:08+00:00" }, { "name": "aws/aws-crt-php", @@ -128,16 +128,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.321.2", + "version": "3.321.6", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "c04f8f30891cee8480c132778cd4cc486467e77a" + "reference": "3dc53a79677dd1f0e682dfc05f9815901ec7bf58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/c04f8f30891cee8480c132778cd4cc486467e77a", - "reference": "c04f8f30891cee8480c132778cd4cc486467e77a", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/3dc53a79677dd1f0e682dfc05f9815901ec7bf58", + "reference": "3dc53a79677dd1f0e682dfc05f9815901ec7bf58", "shasum": "" }, "require": { @@ -220,9 +220,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.321.2" + "source": "https://github.com/aws/aws-sdk-php/tree/3.321.6" }, - "time": "2024-08-30T18:14:40+00:00" + "time": "2024-09-06T18:06:38+00:00" }, { "name": "bacon/bacon-qr-code", @@ -870,16 +870,16 @@ }, { "name": "doctrine/dbal", - "version": "4.1.0", + "version": "4.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "2377cd41609aa51bee822c8d207317a3f363a558" + "reference": "7a8252418689feb860ea8dfeab66d64a56a64df8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/2377cd41609aa51bee822c8d207317a3f363a558", - "reference": "2377cd41609aa51bee822c8d207317a3f363a558", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/7a8252418689feb860ea8dfeab66d64a56a64df8", + "reference": "7a8252418689feb860ea8dfeab66d64a56a64df8", "shasum": "" }, "require": { @@ -892,16 +892,16 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.2", - "phpstan/phpstan": "1.11.7", + "phpstan/phpstan": "1.12.0", "phpstan/phpstan-phpunit": "1.4.0", "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "10.5.28", + "phpunit/phpunit": "10.5.30", "psalm/plugin-phpunit": "0.19.0", "slevomat/coding-standard": "8.13.1", "squizlabs/php_codesniffer": "3.10.2", "symfony/cache": "^6.3.8|^7.0", "symfony/console": "^5.4|^6.3|^7.0", - "vimeo/psalm": "5.24.0" + "vimeo/psalm": "5.25.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -958,7 +958,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.1.0" + "source": "https://github.com/doctrine/dbal/tree/4.1.1" }, "funding": [ { @@ -974,7 +974,7 @@ "type": "tidelift" } ], - "time": "2024-08-15T07:37:07+00:00" + "time": "2024-09-03T08:58:39+00:00" }, { "name": "doctrine/deprecations", @@ -2618,16 +2618,16 @@ }, { "name": "laravel/fortify", - "version": "v1.24.0", + "version": "v1.24.1", "source": { "type": "git", "url": "https://github.com/laravel/fortify.git", - "reference": "fbe67f018c1fe26d00913de56a6d60589b4be9b2" + "reference": "8158ba0960bb5f4aae509d01d74a95e16e30de20" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/fortify/zipball/fbe67f018c1fe26d00913de56a6d60589b4be9b2", - "reference": "fbe67f018c1fe26d00913de56a6d60589b4be9b2", + "url": "https://api.github.com/repos/laravel/fortify/zipball/8158ba0960bb5f4aae509d01d74a95e16e30de20", + "reference": "8158ba0960bb5f4aae509d01d74a95e16e30de20", "shasum": "" }, "require": { @@ -2679,20 +2679,20 @@ "issues": "https://github.com/laravel/fortify/issues", "source": "https://github.com/laravel/fortify" }, - "time": "2024-08-20T14:43:56+00:00" + "time": "2024-09-03T10:02:14+00:00" }, { "name": "laravel/framework", - "version": "v11.21.0", + "version": "v11.22.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "9d9d36708d56665b12185493f684abce38ad2d30" + "reference": "868c75beacc47d0f361b919bbc155c0b619bf3d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/9d9d36708d56665b12185493f684abce38ad2d30", - "reference": "9d9d36708d56665b12185493f684abce38ad2d30", + "url": "https://api.github.com/repos/laravel/framework/zipball/868c75beacc47d0f361b919bbc155c0b619bf3d5", + "reference": "868c75beacc47d0f361b919bbc155c0b619bf3d5", "shasum": "" }, "require": { @@ -2885,20 +2885,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-08-20T15:00:52+00:00" + "time": "2024-09-03T15:27:15+00:00" }, { "name": "laravel/horizon", - "version": "v5.27.1", + "version": "v5.28.1", "source": { "type": "git", "url": "https://github.com/laravel/horizon.git", - "reference": "184449be3eb296ab16c13a69ce22049f32d0fc2c" + "reference": "9d2c4eaeb11408384401f8a7d1b0ea4c76554f3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/horizon/zipball/184449be3eb296ab16c13a69ce22049f32d0fc2c", - "reference": "184449be3eb296ab16c13a69ce22049f32d0fc2c", + "url": "https://api.github.com/repos/laravel/horizon/zipball/9d2c4eaeb11408384401f8a7d1b0ea4c76554f3f", + "reference": "9d2c4eaeb11408384401f8a7d1b0ea4c76554f3f", "shasum": "" }, "require": { @@ -2962,9 +2962,9 @@ ], "support": { "issues": "https://github.com/laravel/horizon/issues", - "source": "https://github.com/laravel/horizon/tree/v5.27.1" + "source": "https://github.com/laravel/horizon/tree/v5.28.1" }, - "time": "2024-08-05T14:23:30+00:00" + "time": "2024-09-04T14:06:50+00:00" }, { "name": "laravel/jetstream", @@ -3183,20 +3183,20 @@ }, { "name": "laravel/pulse", - "version": "v1.2.4", + "version": "v1.2.5", "source": { "type": "git", "url": "https://github.com/laravel/pulse.git", - "reference": "2e7699a602e13bada4c64e3bc7c148ddcaec81bc" + "reference": "0c0c91fd05acc537f6324b271709670ffc201e59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pulse/zipball/2e7699a602e13bada4c64e3bc7c148ddcaec81bc", - "reference": "2e7699a602e13bada4c64e3bc7c148ddcaec81bc", + "url": "https://api.github.com/repos/laravel/pulse/zipball/0c0c91fd05acc537f6324b271709670ffc201e59", + "reference": "0c0c91fd05acc537f6324b271709670ffc201e59", "shasum": "" }, "require": { - "doctrine/sql-formatter": "^1.2", + "doctrine/sql-formatter": "^1.4.1", "guzzlehttp/promises": "^1.0|^2.0", "illuminate/auth": "^10.48.4|^11.0.8", "illuminate/cache": "^10.48.4|^11.0.8", @@ -3266,7 +3266,7 @@ "issues": "https://github.com/laravel/pulse/issues", "source": "https://github.com/laravel/pulse" }, - "time": "2024-07-08T15:09:50+00:00" + "time": "2024-09-03T09:21:52+00:00" }, { "name": "laravel/sanctum", @@ -3334,16 +3334,16 @@ }, { "name": "laravel/scout", - "version": "v10.11.1", + "version": "v10.11.2", "source": { "type": "git", "url": "https://github.com/laravel/scout.git", - "reference": "b31056d49ae0540a475947391d7ea8617d779aee" + "reference": "74f007d0f5b78f589014899094f7ddb4855b771d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/scout/zipball/b31056d49ae0540a475947391d7ea8617d779aee", - "reference": "b31056d49ae0540a475947391d7ea8617d779aee", + "url": "https://api.github.com/repos/laravel/scout/zipball/74f007d0f5b78f589014899094f7ddb4855b771d", + "reference": "74f007d0f5b78f589014899094f7ddb4855b771d", "shasum": "" }, "require": { @@ -3408,7 +3408,7 @@ "issues": "https://github.com/laravel/scout/issues", "source": "https://github.com/laravel/scout" }, - "time": "2024-08-06T15:13:57+00:00" + "time": "2024-09-03T15:30:25+00:00" }, { "name": "laravel/serializable-closure", @@ -4764,16 +4764,16 @@ }, { "name": "mtdowling/jmespath.php", - "version": "2.7.0", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/jmespath/jmespath.php.git", - "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b" + "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/bbb69a935c2cbb0c03d7f481a238027430f6440b", - "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/a2a865e05d5f420b50cc2f85bb78d565db12a6bc", + "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc", "shasum": "" }, "require": { @@ -4790,7 +4790,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "2.8-dev" } }, "autoload": { @@ -4824,9 +4824,9 @@ ], "support": { "issues": "https://github.com/jmespath/jmespath.php/issues", - "source": "https://github.com/jmespath/jmespath.php/tree/2.7.0" + "source": "https://github.com/jmespath/jmespath.php/tree/2.8.0" }, - "time": "2023-08-25T10:54:48+00:00" + "time": "2024-09-04T18:46:31+00:00" }, { "name": "nesbot/carbon", @@ -5142,16 +5142,16 @@ }, { "name": "nunomaduro/termwind", - "version": "v2.0.1", + "version": "v2.1.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a" + "reference": "e5f21eade88689536c0cdad4c3cd75f3ed26e01a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/58c4c58cf23df7f498daeb97092e34f5259feb6a", - "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/e5f21eade88689536c0cdad4c3cd75f3ed26e01a", + "reference": "e5f21eade88689536c0cdad4c3cd75f3ed26e01a", "shasum": "" }, "require": { @@ -5161,11 +5161,11 @@ }, "require-dev": { "ergebnis/phpstan-rules": "^2.2.0", - "illuminate/console": "^11.0.0", - "laravel/pint": "^1.14.0", - "mockery/mockery": "^1.6.7", - "pestphp/pest": "^2.34.1", - "phpstan/phpstan": "^1.10.59", + "illuminate/console": "^11.1.1", + "laravel/pint": "^1.15.0", + "mockery/mockery": "^1.6.11", + "pestphp/pest": "^2.34.6", + "phpstan/phpstan": "^1.10.66", "phpstan/phpstan-strict-rules": "^1.5.2", "symfony/var-dumper": "^7.0.4", "thecodingmachine/phpstan-strict-rules": "^1.0.0" @@ -5210,7 +5210,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v2.0.1" + "source": "https://github.com/nunomaduro/termwind/tree/v2.1.0" }, "funding": [ { @@ -5226,7 +5226,7 @@ "type": "github" } ], - "time": "2024-03-06T16:17:14+00:00" + "time": "2024-09-05T15:25:50+00:00" }, { "name": "openspout/openspout", @@ -5323,24 +5323,24 @@ }, { "name": "paragonie/constant_time_encoding", - "version": "v2.7.0", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "52a0d99e69f56b9ec27ace92ba56897fe6993105" + "reference": "df1e7fde177501eee2037dd159cf04f5f301a512" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/52a0d99e69f56b9ec27ace92ba56897fe6993105", - "reference": "52a0d99e69f56b9ec27ace92ba56897fe6993105", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/df1e7fde177501eee2037dd159cf04f5f301a512", + "reference": "df1e7fde177501eee2037dd159cf04f5f301a512", "shasum": "" }, "require": { - "php": "^7|^8" + "php": "^8" }, "require-dev": { - "phpunit/phpunit": "^6|^7|^8|^9", - "vimeo/psalm": "^1|^2|^3|^4" + "phpunit/phpunit": "^9", + "vimeo/psalm": "^4|^5" }, "type": "library", "autoload": { @@ -5386,7 +5386,7 @@ "issues": "https://github.com/paragonie/constant_time_encoding/issues", "source": "https://github.com/paragonie/constant_time_encoding" }, - "time": "2024-05-08T12:18:48+00:00" + "time": "2024-05-08T12:36:18+00:00" }, { "name": "php-http/discovery", @@ -5544,24 +5544,24 @@ }, { "name": "pragmarx/google2fa", - "version": "v8.0.1", + "version": "v8.0.3", "source": { "type": "git", "url": "https://github.com/antonioribeiro/google2fa.git", - "reference": "80c3d801b31fe165f8fe99ea085e0a37834e1be3" + "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/80c3d801b31fe165f8fe99ea085e0a37834e1be3", - "reference": "80c3d801b31fe165f8fe99ea085e0a37834e1be3", + "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad", + "reference": "6f8d87ebd5afbf7790bde1ffc7579c7c705e0fad", "shasum": "" }, "require": { - "paragonie/constant_time_encoding": "^1.0|^2.0", + "paragonie/constant_time_encoding": "^1.0|^2.0|^3.0", "php": "^7.1|^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.18", + "phpstan/phpstan": "^1.9", "phpunit/phpunit": "^7.5.15|^8.5|^9.0" }, "type": "library", @@ -5590,9 +5590,9 @@ ], "support": { "issues": "https://github.com/antonioribeiro/google2fa/issues", - "source": "https://github.com/antonioribeiro/google2fa/tree/v8.0.1" + "source": "https://github.com/antonioribeiro/google2fa/tree/v8.0.3" }, - "time": "2022-06-13T21:57:56+00:00" + "time": "2024-09-05T11:56:40+00:00" }, { "name": "psr/cache", @@ -9991,16 +9991,16 @@ }, { "name": "laravel/pint", - "version": "v1.17.2", + "version": "v1.17.3", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "e8a88130a25e3f9d4d5785e6a1afca98268ab110" + "reference": "9d77be916e145864f10788bb94531d03e1f7b482" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/e8a88130a25e3f9d4d5785e6a1afca98268ab110", - "reference": "e8a88130a25e3f9d4d5785e6a1afca98268ab110", + "url": "https://api.github.com/repos/laravel/pint/zipball/9d77be916e145864f10788bb94531d03e1f7b482", + "reference": "9d77be916e145864f10788bb94531d03e1f7b482", "shasum": "" }, "require": { @@ -10011,13 +10011,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.61.1", - "illuminate/view": "^10.48.18", + "friendsofphp/php-cs-fixer": "^3.64.0", + "illuminate/view": "^10.48.20", "larastan/larastan": "^2.9.8", "laravel-zero/framework": "^10.4.0", "mockery/mockery": "^1.6.12", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.35.0" + "pestphp/pest": "^2.35.1" }, "bin": [ "builds/pint" @@ -10053,20 +10053,20 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2024-08-06T15:11:54+00:00" + "time": "2024-09-03T15:00:28+00:00" }, { "name": "laravel/sail", - "version": "v1.31.1", + "version": "v1.31.3", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "3d06dd18cee8059baa7b388af00ba47f6d96bd85" + "reference": "0a7e2891a85eba2d448a9ffc6fc5ce367e924bc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/3d06dd18cee8059baa7b388af00ba47f6d96bd85", - "reference": "3d06dd18cee8059baa7b388af00ba47f6d96bd85", + "url": "https://api.github.com/repos/laravel/sail/zipball/0a7e2891a85eba2d448a9ffc6fc5ce367e924bc1", + "reference": "0a7e2891a85eba2d448a9ffc6fc5ce367e924bc1", "shasum": "" }, "require": { @@ -10116,20 +10116,20 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2024-08-02T07:45:47+00:00" + "time": "2024-09-03T20:05:33+00:00" }, { "name": "maximebf/debugbar", - "version": "v1.22.3", + "version": "v1.22.4", "source": { "type": "git", "url": "https://github.com/maximebf/php-debugbar.git", - "reference": "7aa9a27a0b1158ed5ad4e7175e8d3aee9a818b96" + "reference": "ec4979077ff5ddf987eb2457055ee343f466c250" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/7aa9a27a0b1158ed5ad4e7175e8d3aee9a818b96", - "reference": "7aa9a27a0b1158ed5ad4e7175e8d3aee9a818b96", + "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/ec4979077ff5ddf987eb2457055ee343f466c250", + "reference": "ec4979077ff5ddf987eb2457055ee343f466c250", "shasum": "" }, "require": { @@ -10182,9 +10182,9 @@ ], "support": { "issues": "https://github.com/maximebf/php-debugbar/issues", - "source": "https://github.com/maximebf/php-debugbar/tree/v1.22.3" + "source": "https://github.com/maximebf/php-debugbar/tree/v1.22.4" }, - "time": "2024-04-03T19:39:26+00:00" + "time": "2024-09-06T17:37:59+00:00" }, { "name": "mockery/mockery", @@ -10675,80 +10675,6 @@ ], "time": "2024-01-26T09:46:42+00:00" }, - { - "name": "pestphp/pest-plugin-stressless", - "version": "v2.2.0", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest-plugin-stressless.git", - "reference": "7494c7d9fab9649a0f85f9f04a179f20f1405501" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-stressless/zipball/7494c7d9fab9649a0f85f9f04a179f20f1405501", - "reference": "7494c7d9fab9649a0f85f9f04a179f20f1405501", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-zip": "*", - "pestphp/pest": "^2.28", - "pestphp/pest-plugin": "^2.1.1", - "php": "^8.2" - }, - "require-dev": { - "pestphp/pest-dev-tools": "^2.16" - }, - "type": "library", - "extra": { - "pest": { - "plugins": [ - "Pest\\Stressless\\Plugin" - ] - } - }, - "autoload": { - "files": [ - "src/Autoload.php" - ], - "psr-4": { - "Pest\\Stressless\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Stressless plugin for Pest", - "keywords": [ - "framework", - "pest", - "php", - "plugin", - "test", - "testing", - "unit" - ], - "support": { - "issues": "https://github.com/pestphp/pest-plugin-stressless/issues", - "source": "https://github.com/pestphp/pest-plugin-stressless/tree/v2.2.0" - }, - "funding": [ - { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2023-12-06T14:33:21+00:00" - }, { "name": "phar-io/manifest", "version": "2.0.4", @@ -11131,16 +11057,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.30.0", + "version": "1.30.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "5ceb0e384997db59f38774bf79c2a6134252c08f" + "reference": "51b95ec8670af41009e2b2b56873bad96682413e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/5ceb0e384997db59f38774bf79c2a6134252c08f", - "reference": "5ceb0e384997db59f38774bf79c2a6134252c08f", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/51b95ec8670af41009e2b2b56873bad96682413e", + "reference": "51b95ec8670af41009e2b2b56873bad96682413e", "shasum": "" }, "require": { @@ -11172,22 +11098,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.30.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.30.1" }, - "time": "2024-08-29T09:54:52+00:00" + "time": "2024-09-07T20:13:05+00:00" }, { "name": "phpstan/phpstan", - "version": "1.12.0", + "version": "1.12.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "384af967d35b2162f69526c7276acadce534d0e1" + "reference": "0ca1c7bb55fca8fe6448f16fff0f311ccec960a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/384af967d35b2162f69526c7276acadce534d0e1", - "reference": "384af967d35b2162f69526c7276acadce534d0e1", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0ca1c7bb55fca8fe6448f16fff0f311ccec960a1", + "reference": "0ca1c7bb55fca8fe6448f16fff0f311ccec960a1", "shasum": "" }, "require": { @@ -11232,7 +11158,7 @@ "type": "github" } ], - "time": "2024-08-27T09:18:05+00:00" + "time": "2024-09-05T16:09:28+00:00" }, { "name": "phpunit/php-code-coverage", diff --git a/package-lock.json b/package-lock.json index f9cb11c..e7fbced 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "html", + "name": "forge", "lockfileVersion": 3, "requires": true, "packages": { @@ -780,9 +780,9 @@ ] }, "node_modules/@tailwindcss/forms": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.8.tgz", - "integrity": "sha512-DJs7B7NPD0JH7BVvdHWNviWmunlFhuEkz7FyFxE4japOWYMLl9b1D6+Z9mivJJPWr6AEbmlPqgiFRyLwFB1SgQ==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.9.tgz", + "integrity": "sha512-tM4XVr2+UVTxXJzey9Twx48c1gcxFStqn1pQz0tRsX8o3DvxhN5oY5pvyAbUx7VTaZxpej4Zzvc6h+1RJBzpIg==", "dev": true, "license": "MIT", "dependencies": { @@ -915,9 +915,9 @@ } }, "node_modules/axios": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.6.tgz", - "integrity": "sha512-Ekur6XDwhnJ5RgOCaxFnXyqlPALI3rVeukZMwOdfghW7/wGz784BYKiQq+QD8NPcr91KRo30KfHOchyijwWw7g==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1013,9 +1013,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001655", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz", - "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==", + "version": "1.0.30001658", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001658.tgz", + "integrity": "sha512-N2YVqWbJELVdrnsW5p+apoQyYt51aBMSsBZki1XZEfeBCexcM/sf4xiAHcXQBkuOwJBXtWF7aW1sYX6tKebPHw==", "dev": true, "funding": [ { @@ -1161,9 +1161,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.13", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", - "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", + "version": "1.5.18", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.18.tgz", + "integrity": "sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==", "dev": true, "license": "ISC" }, @@ -1273,9 +1273,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, "funding": [ { @@ -1784,9 +1784,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "dev": true, "license": "ISC" }, @@ -1824,9 +1824,9 @@ } }, "node_modules/postcss": { - "version": "8.4.41", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", - "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", "dev": true, "funding": [ { @@ -2272,9 +2272,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -2574,14 +2574,14 @@ "license": "MIT" }, "node_modules/vite": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz", - "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==", + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.3.tgz", + "integrity": "sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.41", + "postcss": "^8.4.43", "rollup": "^4.20.0" }, "bin": { @@ -2759,9 +2759,9 @@ } }, "node_modules/yaml": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", - "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", "dev": true, "license": "ISC", "bin": { From 0a271ff03e53680a3a8a03950ddfb19c14ed257f Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Mon, 9 Sep 2024 16:20:54 -0400 Subject: [PATCH 020/130] add link to sections --- app/View/Components/ModListSection.php | 3 +++ resources/views/components/mod-list-section-partial.blade.php | 4 ++-- resources/views/components/mod-list-section.blade.php | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/View/Components/ModListSection.php b/app/View/Components/ModListSection.php index d08350e..f9c257c 100644 --- a/app/View/Components/ModListSection.php +++ b/app/View/Components/ModListSection.php @@ -88,16 +88,19 @@ class ModListSection extends Component 'title' => __('Featured Mods'), 'mods' => $this->modsFeatured, 'versionScope' => 'latestVersion', + 'link' => '/mods?featured=only', ], [ 'title' => __('Newest Mods'), 'mods' => $this->modsLatest, 'versionScope' => 'latestVersion', + 'link' => '/mods', ], [ 'title' => __('Recently Updated Mods'), 'mods' => $this->modsUpdated, 'versionScope' => 'lastUpdatedVersion', + 'link' => '/mods?order=updated', ], ]; } diff --git a/resources/views/components/mod-list-section-partial.blade.php b/resources/views/components/mod-list-section-partial.blade.php index efbbc7a..79c68c9 100644 --- a/resources/views/components/mod-list-section-partial.blade.php +++ b/resources/views/components/mod-list-section-partial.blade.php @@ -1,10 +1,10 @@ -@props(['mods', 'versionScope', 'title']) +@props(['mods', 'versionScope', 'title', 'link'])
{{-- TODO: The button-link should be dynamic based on the versionScope. Eg. Featured `View All` button should take the user to the mods page with the `featured` query parameter set. --}} - +
diff --git a/resources/views/components/mod-list-section.blade.php b/resources/views/components/mod-list-section.blade.php index a7528cd..15a0daa 100644 --- a/resources/views/components/mod-list-section.blade.php +++ b/resources/views/components/mod-list-section.blade.php @@ -3,5 +3,6 @@ 'title' => $section['title'], 'mods' => $section['mods'], 'versionScope' => $section['versionScope'], + 'link' => $section['link'] ]) @endforeach From 75ebc827dc1976b65ae64eb764bba0366a74b8e2 Mon Sep 17 00:00:00 2001 From: Refringe Date: Mon, 9 Sep 2024 23:07:57 -0400 Subject: [PATCH 021/130] Carbon `dynamicFormat` macro Adds a dynamicFormat macro/method on the Carbon facade to handle the logic of conditionally formatting the dates based on the difference to the current time. Logic pulled from #48 (Thanks Waffle!) Issue #45 --- app/Providers/AppServiceProvider.php | 52 +++- bootstrap/app.php | 3 +- composer.lock | 234 ++++++------------ config/app.php | 17 ++ .../views/components/mod-list-stats.blade.php | 9 +- resources/views/mod/show.blade.php | 4 +- 6 files changed, 150 insertions(+), 169 deletions(-) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 5bac452..f1f3d51 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -11,8 +11,8 @@ use App\Observers\ModDependencyObserver; use App\Observers\ModObserver; use App\Observers\ModVersionObserver; use App\Observers\SptVersionObserver; -use App\Services\LatestSptVersionService; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Gate; use Illuminate\Support\Number; use Illuminate\Support\ServiceProvider; @@ -24,9 +24,7 @@ class AppServiceProvider extends ServiceProvider */ public function register(): void { - $this->app->singleton(LatestSptVersionService::class, function ($app) { - return new LatestSptVersionService; - }); + // } /** @@ -37,18 +35,34 @@ class AppServiceProvider extends ServiceProvider // Allow mass assignment for all models. Be careful! Model::unguard(); - // Register observers. - Mod::observe(ModObserver::class); - ModVersion::observe(ModVersionObserver::class); - ModDependency::observe(ModDependencyObserver::class); - SptVersion::observe(SptVersionObserver::class); + $this->registerObservers(); + + $this->registerNumberMacros(); + $this->registerCarbonMacros(); // This gate determines who can access the Pulse dashboard. Gate::define('viewPulse', function (User $user) { return $user->isAdmin(); }); + } - // Register a number macro to format download numbers. + /** + * Register model observers. + */ + private function registerObservers(): void + { + Mod::observe(ModObserver::class); + ModVersion::observe(ModVersionObserver::class); + ModDependency::observe(ModDependencyObserver::class); + SptVersion::observe(SptVersionObserver::class); + } + + /** + * Register custom number macros. + */ + private function registerNumberMacros(): void + { + // Format download numbers. Number::macro('downloads', function (int|float $number) { return Number::forHumans( $number, @@ -58,4 +72,22 @@ class AppServiceProvider extends ServiceProvider ); }); } + + /** + * Register custom Carbon macros. + */ + private function registerCarbonMacros(): void + { + // Format dates dynamically based on the time passed. + Carbon::macro('dynamicFormat', function (Carbon $date) { + if ($date->diff(now())->m > 1) { + return $date->format('M jS, Y'); + } + if ($date->diff(now())->d === 0) { + return $date->diffForHumans(); + } + + return $date->format('M jS, g:i A'); + }); + } } diff --git a/bootstrap/app.php b/bootstrap/app.php index 9c47482..58f289c 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -24,4 +24,5 @@ return Application::configure(basePath: dirname(__DIR__)) }) ->withExceptions(function (Exceptions $exceptions) { // - })->create(); + }) + ->create(); diff --git a/composer.lock b/composer.lock index d5feac9..a2094ed 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "aef706ee9aa7b671ca81c5ced4a7bfb7", + "content-hash": "f28826efd68d2b2d99e0a748de6da8b7", "packages": [ { "name": "anourvalar/eloquent-serialize", @@ -128,16 +128,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.321.6", + "version": "3.321.7", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "3dc53a79677dd1f0e682dfc05f9815901ec7bf58" + "reference": "c64ee32d80ec2ab5d8d6a0b77297c2d69602ef3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/3dc53a79677dd1f0e682dfc05f9815901ec7bf58", - "reference": "3dc53a79677dd1f0e682dfc05f9815901ec7bf58", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/c64ee32d80ec2ab5d8d6a0b77297c2d69602ef3b", + "reference": "c64ee32d80ec2ab5d8d6a0b77297c2d69602ef3b", "shasum": "" }, "require": { @@ -220,9 +220,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.321.6" + "source": "https://github.com/aws/aws-sdk-php/tree/3.321.7" }, - "time": "2024-09-06T18:06:38+00:00" + "time": "2024-09-09T18:09:23+00:00" }, { "name": "bacon/bacon-qr-code", @@ -2968,16 +2968,16 @@ }, { "name": "laravel/jetstream", - "version": "v5.1.5", + "version": "v5.2.0", "source": { "type": "git", "url": "https://github.com/laravel/jetstream.git", - "reference": "653a422fe65278c1c4f319e99d5cb700c4117ea0" + "reference": "8093245d850c215e47df1c5fc081f545afd7f0c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/jetstream/zipball/653a422fe65278c1c4f319e99d5cb700c4117ea0", - "reference": "653a422fe65278c1c4f319e99d5cb700c4117ea0", + "url": "https://api.github.com/repos/laravel/jetstream/zipball/8093245d850c215e47df1c5fc081f545afd7f0c5", + "reference": "8093245d850c215e47df1c5fc081f545afd7f0c5", "shasum": "" }, "require": { @@ -3031,7 +3031,7 @@ "issues": "https://github.com/laravel/jetstream/issues", "source": "https://github.com/laravel/jetstream" }, - "time": "2024-08-08T13:28:23+00:00" + "time": "2024-09-09T13:52:03+00:00" }, { "name": "laravel/octane", @@ -7701,20 +7701,20 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "0424dff1c58f028c451efff2045f5d92410bd540" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", - "reference": "0424dff1c58f028c451efff2045f5d92410bd540", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -7760,7 +7760,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" }, "funding": [ { @@ -7776,24 +7776,24 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -7838,7 +7838,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" }, "funding": [ { @@ -7854,26 +7854,25 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c" + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a6e83bdeb3c84391d1dfe16f42e40727ce524a5c", - "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" }, "suggest": { "ext-intl": "For best performance" @@ -7922,7 +7921,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" }, "funding": [ { @@ -7938,24 +7937,24 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -8003,7 +8002,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -8019,24 +8018,24 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -8083,7 +8082,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -8099,97 +8098,24 @@ "type": "tidelift" } ], - "time": "2024-06-19T12:30:46+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.30.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "10112722600777e02d2745716b70c5db4ca70442" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/10112722600777e02d2745716b70c5db4ca70442", - "reference": "10112722600777e02d2745716b70c5db4ca70442", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.30.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-06-19T12:30:46+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "77fa7995ac1b21ab60769b7323d600a991a90433" + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433", - "reference": "77fa7995ac1b21ab60769b7323d600a991a90433", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { @@ -8236,7 +8162,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" }, "funding": [ { @@ -8252,24 +8178,24 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9" + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9", - "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { @@ -8312,7 +8238,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" }, "funding": [ { @@ -8328,24 +8254,24 @@ "type": "tidelift" } ], - "time": "2024-06-19T12:35:24+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "2ba1f33797470debcda07fe9dce20a0003df18e9" + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/2ba1f33797470debcda07fe9dce20a0003df18e9", - "reference": "2ba1f33797470debcda07fe9dce20a0003df18e9", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-uuid": "*" @@ -8391,7 +8317,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0" }, "funding": [ { @@ -8407,7 +8333,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/process", @@ -10120,16 +10046,16 @@ }, { "name": "maximebf/debugbar", - "version": "v1.22.4", + "version": "v1.22.5", "source": { "type": "git", "url": "https://github.com/maximebf/php-debugbar.git", - "reference": "ec4979077ff5ddf987eb2457055ee343f466c250" + "reference": "1b5cabe0ce013134cf595bfa427bbf2f6abcd989" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/ec4979077ff5ddf987eb2457055ee343f466c250", - "reference": "ec4979077ff5ddf987eb2457055ee343f466c250", + "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/1b5cabe0ce013134cf595bfa427bbf2f6abcd989", + "reference": "1b5cabe0ce013134cf595bfa427bbf2f6abcd989", "shasum": "" }, "require": { @@ -10182,9 +10108,9 @@ ], "support": { "issues": "https://github.com/maximebf/php-debugbar/issues", - "source": "https://github.com/maximebf/php-debugbar/tree/v1.22.4" + "source": "https://github.com/maximebf/php-debugbar/tree/v1.22.5" }, - "time": "2024-09-06T17:37:59+00:00" + "time": "2024-09-09T08:05:55+00:00" }, { "name": "mockery/mockery", @@ -11104,16 +11030,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.12.2", + "version": "1.12.3", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "0ca1c7bb55fca8fe6448f16fff0f311ccec960a1" + "reference": "0fcbf194ab63d8159bb70d9aa3e1350051632009" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0ca1c7bb55fca8fe6448f16fff0f311ccec960a1", - "reference": "0ca1c7bb55fca8fe6448f16fff0f311ccec960a1", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/0fcbf194ab63d8159bb70d9aa3e1350051632009", + "reference": "0fcbf194ab63d8159bb70d9aa3e1350051632009", "shasum": "" }, "require": { @@ -11158,7 +11084,7 @@ "type": "github" } ], - "time": "2024-09-05T16:09:28+00:00" + "time": "2024-09-09T08:10:35+00:00" }, { "name": "phpunit/php-code-coverage", diff --git a/config/app.php b/config/app.php index f467267..b253ab2 100644 --- a/config/app.php +++ b/config/app.php @@ -1,5 +1,7 @@ env('APP_MAINTENANCE_STORE', 'database'), ], + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => Facade::defaultAliases()->merge([ + 'Carbon' => \Carbon\Carbon::class, + ])->toArray(), + ]; diff --git a/resources/views/components/mod-list-stats.blade.php b/resources/views/components/mod-list-stats.blade.php index 286fb3b..0c954e9 100644 --- a/resources/views/components/mod-list-stats.blade.php +++ b/resources/views/components/mod-list-stats.blade.php @@ -4,10 +4,15 @@ — Created @elseif(!is_null($modVersion->updated_at)) - — Updated {{ $modVersion->updated_at->diffForHumans() }} + + — Updated + + @endif

diff --git a/resources/views/mod/show.blade.php b/resources/views/mod/show.blade.php index 9ad2f8f..42833be 100644 --- a/resources/views/mod/show.blade.php +++ b/resources/views/mod/show.blade.php @@ -114,8 +114,8 @@
{{__('Virus Total Results')}}
- {{ __('Created') }} {{ $version->created_at->format("M d, h:m a") }} - {{ __('Updated') }} {{ $version->updated_at->format("M d, h:m a") }} + {{ __('Created') }} {{ Carbon::dynamicFormat($version->created_at) }} + {{ __('Updated') }} {{ Carbon::dynamicFormat($version->updated_at) }}
{{-- Display latest resolved dependencies --}} From ed2091fb23647487808b9419dc29f23992cd9355 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Tue, 10 Sep 2024 09:10:16 -0400 Subject: [PATCH 022/130] remove session properties --- app/Livewire/Mod/Index.php | 5 ----- .../views/components/mod-list-section-partial.blade.php | 4 ---- 2 files changed, 9 deletions(-) diff --git a/app/Livewire/Mod/Index.php b/app/Livewire/Mod/Index.php index 5760c14..602a0d6 100644 --- a/app/Livewire/Mod/Index.php +++ b/app/Livewire/Mod/Index.php @@ -8,7 +8,6 @@ use Illuminate\Contracts\View\View; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\Cache; use Livewire\Attributes\Computed; -use Livewire\Attributes\Session; use Livewire\Attributes\Url; use Livewire\Component; use Livewire\WithPagination; @@ -21,28 +20,24 @@ class Index extends Component * The search query value. */ #[Url] - #[Session] public string $query = ''; /** * The sort order value. */ #[Url] - #[Session] public string $order = 'created'; /** * The SPT versions filter value. */ #[Url] - #[Session] public array $sptVersions = []; /** * The featured filter value. */ #[Url] - #[Session] public string $featured = 'include'; /** diff --git a/resources/views/components/mod-list-section-partial.blade.php b/resources/views/components/mod-list-section-partial.blade.php index 79c68c9..21dc3f9 100644 --- a/resources/views/components/mod-list-section-partial.blade.php +++ b/resources/views/components/mod-list-section-partial.blade.php @@ -1,10 +1,6 @@ @props(['mods', 'versionScope', 'title', 'link'])
- {{-- - TODO: The button-link should be dynamic based on the versionScope. Eg. Featured `View All` button should take - the user to the mods page with the `featured` query parameter set. - --}}
From 8211731c324c3d8ead148e1ddda42c34d7b18f4f Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Tue, 10 Sep 2024 09:20:53 -0400 Subject: [PATCH 023/130] remove clear filters call --- app/Livewire/Mod/Index.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/Livewire/Mod/Index.php b/app/Livewire/Mod/Index.php index 602a0d6..1e0a7ad 100644 --- a/app/Livewire/Mod/Index.php +++ b/app/Livewire/Mod/Index.php @@ -97,9 +97,6 @@ class Index extends Component $this->query = ''; $this->sptVersions = $this->getLatestMinorVersions()->pluck('version')->toArray(); $this->featured = 'include'; - - // Clear local storage - $this->dispatch('clear-filters'); } /** From 5d152f0c511d2caf4bc86f3a8c2e301ad9ab1493 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Tue, 10 Sep 2024 13:31:14 -0400 Subject: [PATCH 024/130] add about to user objects --- database/factories/UserFactory.php | 3 +++ database/migrations/0001_01_01_000000_create_users_table.php | 1 + 2 files changed, 4 insertions(+) diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 75f3298..770667b 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -5,6 +5,7 @@ namespace Database\Factories; use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; +use Random\RandomException; class UserFactory extends Factory { @@ -15,6 +16,7 @@ class UserFactory extends Factory /** * Define the user's default state. + * @throws RandomException */ public function definition(): array { @@ -23,6 +25,7 @@ class UserFactory extends Factory 'email' => fake()->unique()->safeEmail(), 'email_verified_at' => now(), 'password' => static::$password ??= Hash::make('password'), + 'about' => fake()->paragraphs(random_int(1, 10), true), 'two_factor_secret' => null, 'two_factor_recovery_codes' => null, 'remember_token' => Str::random(10), diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php index 5d26cb2..1e03166 100644 --- a/database/migrations/0001_01_01_000000_create_users_table.php +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -22,6 +22,7 @@ return new class extends Migration $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); + $table->longText('about'); $table->foreignIdFor(UserRole::class) ->nullable() ->default(null) From affb0d11f7245b9000c05559593ab14a8d0d4291 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Tue, 10 Sep 2024 13:31:59 -0400 Subject: [PATCH 025/130] add sections bar to profile page mods and about sections WIP. Also adjusted user-stack tooltip position slightly --- app/Livewire/User/Profile.php | 10 +++- resources/views/livewire/user-stack.blade.php | 5 +- .../views/livewire/user/profile.blade.php | 55 ++++++++++++++++++- 3 files changed, 66 insertions(+), 4 deletions(-) diff --git a/app/Livewire/User/Profile.php b/app/Livewire/User/Profile.php index d3a294c..96cf616 100644 --- a/app/Livewire/User/Profile.php +++ b/app/Livewire/User/Profile.php @@ -3,12 +3,16 @@ namespace App\Livewire\User; use App\Models\User; +use Livewire\Attributes\Url; use Livewire\Component; class Profile extends Component { public User $user; + #[Url] + public string $section = 'wall'; + public $followers; public $following; @@ -23,9 +27,13 @@ class Profile extends Component return view('livewire.user.profile'); } + public function setSection(string $name) { + $this->section = $name; + } + public function message() { - $this->render(); + // todo: not implemented yet } public function followUser(User $user) diff --git a/resources/views/livewire/user-stack.blade.php b/resources/views/livewire/user-stack.blade.php index 8bbb0c0..5c17e47 100644 --- a/resources/views/livewire/user-stack.blade.php +++ b/resources/views/livewire/user-stack.blade.php @@ -10,8 +10,9 @@ {{$user->name[0]}} + {{-- tooltip --}}
+ class="absolute bottom-full -ml-3 left-1/2 transform -translate-x-1/2 mb-2 w-max px-2 py-1 text-sm text-white bg-gray-700 rounded shadow-lg opacity-0 group-hover:opacity-100"> {{$user->name}}
@@ -21,7 +22,7 @@ +{{$users->count()-$limit}}
+ class="absolute bottom-full -ml-3 left-1/2 transform -translate-x-1/2 mb-2 w-max px-2 py-1 text-sm text-white bg-gray-700 rounded shadow-lg opacity-0 group-hover:opacity-100"> {{$users->count()}} total
diff --git a/resources/views/livewire/user/profile.blade.php b/resources/views/livewire/user/profile.blade.php index c6445e2..f4779e8 100644 --- a/resources/views/livewire/user/profile.blade.php +++ b/resources/views/livewire/user/profile.blade.php @@ -68,7 +68,60 @@
- {{-- column 1 placeholder --}} +
+ {{-- Mobile Dropdown --}} +
+ + +
+ + {{-- Desktop Tabs --}} + +
+
+ @switch($section) + @case('wall') +

This is the wall. I don't think this can be implemented yet? requires comments or something

+ @break + @case('mods') +
+ @foreach($user->mods as $mod) + + @endforeach +
+ @break + @case('recentActivity') +

This is the recent activity. Probably need to implement some kind of activity tracking for this?

+ @break + @case('aboutMe') +

{{$user->about}}

+ @break + @endswitch +
From 90aeecc6d8db54899db6361ee171b019121e0293 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Wed, 11 Sep 2024 09:24:43 -0400 Subject: [PATCH 026/130] fix user-stack showing wrong name in dialog title --- app/Livewire/UserStack.php | 2 ++ resources/views/livewire/user-stack.blade.php | 2 +- resources/views/livewire/user/profile.blade.php | 6 +++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/Livewire/UserStack.php b/app/Livewire/UserStack.php index a003273..050ba81 100644 --- a/app/Livewire/UserStack.php +++ b/app/Livewire/UserStack.php @@ -13,6 +13,8 @@ class UserStack extends Component #[Reactive] public $users; + public string $parentUserName; + public $authFollowingIds = []; public string $label = 'Users'; diff --git a/resources/views/livewire/user-stack.blade.php b/resources/views/livewire/user-stack.blade.php index 5c17e47..fd3058e 100644 --- a/resources/views/livewire/user-stack.blade.php +++ b/resources/views/livewire/user-stack.blade.php @@ -37,7 +37,7 @@ {{-- view all dialog --}} -

{{$user->name}}'s {{$label}}

+

{{$parentUserName}}'s {{$label}}

diff --git a/resources/views/livewire/user/profile.blade.php b/resources/views/livewire/user/profile.blade.php index f4779e8..6faed79 100644 --- a/resources/views/livewire/user/profile.blade.php +++ b/resources/views/livewire/user/profile.blade.php @@ -123,12 +123,12 @@ @endswitch
-
+
- +
- +
From f4433647217bc63f678b3550ed964628d007d6f1 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Wed, 11 Sep 2024 09:25:02 -0400 Subject: [PATCH 027/130] paginate mods --- app/Livewire/User/Profile.php | 7 ++++++- resources/views/livewire/user/profile.blade.php | 5 ++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/Livewire/User/Profile.php b/app/Livewire/User/Profile.php index 96cf616..82c4675 100644 --- a/app/Livewire/User/Profile.php +++ b/app/Livewire/User/Profile.php @@ -5,9 +5,12 @@ namespace App\Livewire\User; use App\Models\User; use Livewire\Attributes\Url; use Livewire\Component; +use Livewire\WithPagination; class Profile extends Component { + use WithPagination; + public User $user; #[Url] @@ -24,7 +27,9 @@ class Profile extends Component $this->followers = $this->user->followers; $this->following = $this->user->following; - return view('livewire.user.profile'); + $mods = $this->user->mods()->paginate(6); + + return view('livewire.user.profile', compact('mods')); } public function setSection(string $name) { diff --git a/resources/views/livewire/user/profile.blade.php b/resources/views/livewire/user/profile.blade.php index 6faed79..8d856f8 100644 --- a/resources/views/livewire/user/profile.blade.php +++ b/resources/views/livewire/user/profile.blade.php @@ -108,8 +108,11 @@

This is the wall. I don't think this can be implemented yet? requires comments or something

@break @case('mods') +
+ {{ $mods->links() }} +
- @foreach($user->mods as $mod) + @foreach($mods as $mod) @endforeach
From f16b3fe4970fe84218a9c320b5a11ba4f62f7536 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Wed, 11 Sep 2024 14:15:13 -0400 Subject: [PATCH 028/130] pint and some mod data changes --- app/Livewire/User/Profile.php | 5 +++-- app/Livewire/UserStack.php | 4 +--- database/factories/UserFactory.php | 1 + resources/views/livewire/user/profile.blade.php | 2 +- tests/Feature/User/FollowTest.php | 1 - 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/Livewire/User/Profile.php b/app/Livewire/User/Profile.php index 82c4675..f6336db 100644 --- a/app/Livewire/User/Profile.php +++ b/app/Livewire/User/Profile.php @@ -27,12 +27,13 @@ class Profile extends Component $this->followers = $this->user->followers; $this->following = $this->user->following; - $mods = $this->user->mods()->paginate(6); + $mods = $this->user->mods()->withWhereHas('latestVersion')->paginate(6); return view('livewire.user.profile', compact('mods')); } - public function setSection(string $name) { + public function setSection(string $name) + { $this->section = $name; } diff --git a/app/Livewire/UserStack.php b/app/Livewire/UserStack.php index 050ba81..874fff1 100644 --- a/app/Livewire/UserStack.php +++ b/app/Livewire/UserStack.php @@ -4,7 +4,6 @@ namespace App\Livewire; use App\Models\User; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\Log; use Livewire\Attributes\Reactive; use Livewire\Component; @@ -41,8 +40,7 @@ class UserStack extends Component public function closeDialog() { - if ($this->refreshNeeded) - { + if ($this->refreshNeeded) { $this->dispatch('refreshNeeded'); } diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 770667b..c4bfe9a 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -16,6 +16,7 @@ class UserFactory extends Factory /** * Define the user's default state. + * * @throws RandomException */ public function definition(): array diff --git a/resources/views/livewire/user/profile.blade.php b/resources/views/livewire/user/profile.blade.php index 8d856f8..115cc6d 100644 --- a/resources/views/livewire/user/profile.blade.php +++ b/resources/views/livewire/user/profile.blade.php @@ -113,7 +113,7 @@
@foreach($mods as $mod) - + @endforeach
@break diff --git a/tests/Feature/User/FollowTest.php b/tests/Feature/User/FollowTest.php index c983d00..d86275c 100644 --- a/tests/Feature/User/FollowTest.php +++ b/tests/Feature/User/FollowTest.php @@ -31,7 +31,6 @@ test('confirm following a user cannot be done twice', function () { $user1->follow($user2); $user1->follow($user2); - $this->assertCount(1, $user1->following); $this->assertCount(1, $user2->followers); }); From b5516d3a7ee52b014c534cc247804dc37bbe0fb3 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Wed, 11 Sep 2024 14:20:39 -0400 Subject: [PATCH 029/130] update list stats --- .../views/components/mod-list-stats.blade.php | 41 ++++++++++++++----- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/resources/views/components/mod-list-stats.blade.php b/resources/views/components/mod-list-stats.blade.php index 286fb3b..ab2cdd2 100644 --- a/resources/views/components/mod-list-stats.blade.php +++ b/resources/views/components/mod-list-stats.blade.php @@ -1,13 +1,32 @@

class(['text-slate-700 dark:text-gray-300 text-sm']) }}> - {{ Number::downloads($mod->downloads) }} downloads - @if(!is_null($mod->created_at)) - - — Created - - - @elseif(!is_null($modVersion->updated_at)) - — Updated {{ $modVersion->updated_at->diffForHumans() }} - @endif +

+
+
+ + + + + @if(!is_null($mod->updated_at)) + + @elseif(!is_null($mod->created_at)) + + @else + N/A + @endif + +
+
+
+ + {{ Number::downloads($mod->downloads) }} + + + + +
+

From 1874dab621732513c0235509ef101fb33ef3e2df Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Wed, 11 Sep 2024 14:41:31 -0400 Subject: [PATCH 030/130] display seeder progress --- database/seeders/DatabaseSeeder.php | 104 +++++++++++++++++++++------- 1 file changed, 79 insertions(+), 25 deletions(-) diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 1cfedfb..6becca0 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -11,6 +11,8 @@ use App\Models\User; use App\Models\UserRole; use Illuminate\Database\Seeder; +use function Laravel\Prompts\progress; + class DatabaseSeeder extends Seeder { /** @@ -18,46 +20,98 @@ class DatabaseSeeder extends Seeder */ public function run(): void { + // how many of each "thing" to make during seeding + $userCount = 100; + $modCount = 300; + $modVersionCount = 3000; + // Create a few SPT versions. $spt_versions = SptVersion::factory(30)->create(); // Create some code licenses. $licenses = License::factory(10)->create(); - // Add 5 administrators. - $administrator = UserRole::factory()->administrator()->create(); - User::factory()->for($administrator, 'role')->create([ + // Add administrators. + $administratorRole = UserRole::factory()->administrator()->create(); + $testAccount = User::factory()->for($administratorRole, 'role')->create([ 'email' => 'test@example.com', ]); - User::factory(4)->for($administrator, 'role')->create(); - // Add 10 moderators. - $moderator = UserRole::factory()->moderator()->create(); - User::factory(5)->for($moderator, 'role')->create(); + $this->command->outputComponents()->info("test account created: $testAccount->email"); - // Add 100 users. - $users = User::factory(100)->create(); + User::factory(4)->for($administratorRole, 'role')->create(); - // Add 300 mods, assigning them to the users we just created. - $allUsers = $users->merge([$administrator, $moderator]); - $mods = Mod::factory(300)->recycle([$licenses])->create(); - foreach ($mods as $mod) { - $userIds = $allUsers->random(rand(1, 3))->pluck('id')->toArray(); - $mod->users()->attach($userIds); - } + // Add moderators. + $moderatorRole = UserRole::factory()->moderator()->create(); + User::factory(5)->for($moderatorRole, 'role')->create(); - // Add 3000 mod versions, assigning them to the mods we just created. - $modVersions = ModVersion::factory(3000)->recycle([$mods, $spt_versions])->create(); + // Add users + progress( + label: 'adding users...', + steps: $userCount, + callback: fn () => User::factory()->create() + ); + + // get all users + $allUsers = User::all(); + + // Add user follows + progress( + label: 'adding user follows ...', + steps: $allUsers, + callback: function ($user) use ($allUsers) { + $hasFollowers = rand(0, 100) < 70; // 70% chance to have followers + $isFollowing = rand(0, 100) < 70; // 70% chance to be following other users + + if ($hasFollowers) { + $followers = $allUsers->random(rand(1, 10))->pluck('id')->toArray(); + $user->followers()->attach($followers); + } + + if ($isFollowing) { + $following = $allUsers->random(rand(1, 10))->pluck('id')->toArray(); + $user->following()->attach($following); + } + }); + + $mods = collect(progress( + label: 'adding mods...', + steps: $modCount, + callback: fn () => Mod::factory()->recycle([$licenses])->create() + )); + + // attach users to mods + progress( + label: 'attaching mod users ...', + steps: $mods, + callback: function ($mod) use ($allUsers) { + $userIds = $allUsers->random(rand(1, 3))->pluck('id')->toArray(); + $mod->users()->attach($userIds); + } + ); + + // Add mod versions, assigning them to the mods we just created. + $modVersions = collect(progress( + label: 'adding mods versions ...', + steps: $modVersionCount, + callback: fn () => ModVersion::factory()->recycle([$mods, $spt_versions])->create() + )); // Add ModDependencies to a subset of ModVersions. - foreach ($modVersions as $modVersion) { - $hasDependencies = rand(0, 100) < 30; // 30% chance to have dependencies - if ($hasDependencies) { - $dependencyMods = $mods->random(rand(1, 3)); // 1 to 3 dependencies - foreach ($dependencyMods as $dependencyMod) { - ModDependency::factory()->recycle([$modVersion, $dependencyMod])->create(); + progress( + label: 'adding mods dependencies ...', + steps: $modVersions, + callback: function ($modVersion) use ($mods) { + $hasDependencies = rand(0, 100) < 30; // 30% chance to have dependencies + if ($hasDependencies) { + $dependencyMods = $mods->random(rand(1, 3)); // 1 to 3 dependencies + foreach ($dependencyMods as $dependencyMod) { + ModDependency::factory()->recycle([$modVersion, $dependencyMod])->create(); + } } } - } + ); + + $this->command->outputComponents()->success('Database seeded'); } } From aaf8ee4249f28ead4a39bcee84f0a8b5428f5729 Mon Sep 17 00:00:00 2001 From: Refringe Date: Wed, 11 Sep 2024 15:09:27 -0400 Subject: [PATCH 031/130] Chaperone Add chaperone calls to all of the relationships that support it. --- app/Models/License.php | 3 ++- app/Models/Mod.php | 9 ++++++--- app/Models/ModDependency.php | 3 ++- app/Models/ModVersion.php | 3 ++- app/Models/UserRole.php | 3 ++- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app/Models/License.php b/app/Models/License.php index c678a35..7c3118b 100644 --- a/app/Models/License.php +++ b/app/Models/License.php @@ -16,6 +16,7 @@ class License extends Model */ public function mods(): HasMany { - return $this->hasMany(Mod::class); + return $this->hasMany(Mod::class) + ->chaperone(); } } diff --git a/app/Models/Mod.php b/app/Models/Mod.php index 84d6e22..7d81d9d 100644 --- a/app/Models/Mod.php +++ b/app/Models/Mod.php @@ -72,7 +72,8 @@ class Mod extends Model { return $this->hasMany(ModVersion::class) ->whereHas('latestSptVersion') - ->orderByDesc('version'); + ->orderByDesc('version') + ->chaperone(); } /** @@ -82,7 +83,8 @@ class Mod extends Model { return $this->hasOne(ModVersion::class) ->whereHas('latestSptVersion') - ->orderByDesc('updated_at'); + ->orderByDesc('updated_at') + ->chaperone(); } /** @@ -114,7 +116,8 @@ class Mod extends Model ->whereHas('sptVersions') ->orderByDesc('version') ->orderByDesc('updated_at') - ->take(1); + ->take(1) + ->chaperone(); } /** diff --git a/app/Models/ModDependency.php b/app/Models/ModDependency.php index e147196..1a0ec75 100644 --- a/app/Models/ModDependency.php +++ b/app/Models/ModDependency.php @@ -31,7 +31,8 @@ class ModDependency extends Model */ public function resolvedDependencies(): HasMany { - return $this->hasMany(ModResolvedDependency::class, 'dependency_id'); + return $this->hasMany(ModResolvedDependency::class, 'dependency_id') + ->chaperone(); } /** diff --git a/app/Models/ModVersion.php b/app/Models/ModVersion.php index c834a41..3221173 100644 --- a/app/Models/ModVersion.php +++ b/app/Models/ModVersion.php @@ -42,7 +42,8 @@ class ModVersion extends Model */ public function dependencies(): HasMany { - return $this->hasMany(ModDependency::class); + return $this->hasMany(ModDependency::class) + ->chaperone(); } /** diff --git a/app/Models/UserRole.php b/app/Models/UserRole.php index e27e57f..bcd2146 100644 --- a/app/Models/UserRole.php +++ b/app/Models/UserRole.php @@ -15,6 +15,7 @@ class UserRole extends Model */ public function users(): HasMany { - return $this->hasMany(User::class); + return $this->hasMany(User::class) + ->chaperone(); } } From df013666976fa0216785adac9e74416ecf225bfd Mon Sep 17 00:00:00 2001 From: Refringe Date: Wed, 11 Sep 2024 16:01:07 -0400 Subject: [PATCH 032/130] Possible Gitea Action Fix Changes MySQL host to `mysql`. --- .env.ci | 4 +-- {.github => .gitea}/README.md | 0 {.github => .gitea}/logo.spt.png | Bin {.github => .gitea}/workflows/quality.yaml | 13 +++++++ {.github => .gitea}/workflows/tests.yaml | 14 ++++++++ .github/dependabot.yml | 40 --------------------- 6 files changed, 29 insertions(+), 42 deletions(-) rename {.github => .gitea}/README.md (100%) rename {.github => .gitea}/logo.spt.png (100%) rename {.github => .gitea}/workflows/quality.yaml (99%) rename {.github => .gitea}/workflows/tests.yaml (99%) delete mode 100644 .github/dependabot.yml diff --git a/.env.ci b/.env.ci index 08b91e4..4138eee 100644 --- a/.env.ci +++ b/.env.ci @@ -9,13 +9,13 @@ LOG_DEPRECATIONS_CHANNEL=null LOG_LEVEL=debug DB_CONNECTION=mysql -DB_HOST=127.0.0.1 +DB_HOST=mysql DB_PORT=33306 DB_DATABASE=testing DB_USERNAME=user DB_PASSWORD=password -SCOUT_DRIVER=null +SCOUT_DRIVER=collection FILESYSTEM_DISK=local QUEUE_CONNECTION=sync CACHE_STORE=array diff --git a/.github/README.md b/.gitea/README.md similarity index 100% rename from .github/README.md rename to .gitea/README.md diff --git a/.github/logo.spt.png b/.gitea/logo.spt.png similarity index 100% rename from .github/logo.spt.png rename to .gitea/logo.spt.png diff --git a/.github/workflows/quality.yaml b/.gitea/workflows/quality.yaml similarity index 99% rename from .github/workflows/quality.yaml rename to .gitea/workflows/quality.yaml index 739f925..a755f95 100644 --- a/.github/workflows/quality.yaml +++ b/.gitea/workflows/quality.yaml @@ -16,28 +16,34 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.3' extensions: mbstring, dom, fileinfo coverage: none + - name: Get Composer Cache Directory id: composer-cache run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + - name: Cache composer dependencies uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: ${{ runner.os }}-composer- + - name: Install Composer Dependencies run: composer install --no-progress --prefer-dist --optimize-autoloader + - name: Prepare Laravel Environment run: | php -r "file_exists('.env') || copy('.env.ci', '.env');" php artisan key:generate php artisan optimize + - name: Execute Code Static Analysis with Larastan run: ./vendor/bin/phpstan analyse -c ./phpstan.neon --no-progress --error-format=github @@ -48,30 +54,37 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.3' extensions: mbstring, dom, fileinfo coverage: none + - name: Get Composer Cache Directory id: composer-cache run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + - name: Cache composer dependencies uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: ${{ runner.os }}-composer- + - name: Install Composer Dependencies run: composer install --no-progress --prefer-dist --optimize-autoloader + - name: Prepare Laravel Environment run: | php -r "file_exists('.env') || copy('.env.ci', '.env');" php artisan key:generate php artisan optimize + - name: Run Pint Code Style Fixer run: ./vendor/bin/pint + - uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: Pint PHP Style Fixes [no ci] diff --git a/.github/workflows/tests.yaml b/.gitea/workflows/tests.yaml similarity index 99% rename from .github/workflows/tests.yaml rename to .gitea/workflows/tests.yaml index fc8bf60..2fa2410 100644 --- a/.github/workflows/tests.yaml +++ b/.gitea/workflows/tests.yaml @@ -16,50 +16,64 @@ jobs: ports: - 33306:3306 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 + steps: - name: Checkout uses: actions/checkout@v4 + - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: '8.3' extensions: mbstring, dom, fileinfo coverage: none + - name: Get Composer Cache Directory id: composer-cache run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + - name: Cache composer dependencies uses: actions/cache@v4 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} restore-keys: ${{ runner.os }}-composer- + - name: Install Composer Dependencies run: composer install --no-progress --prefer-dist --optimize-autoloader + - name: Get NPM Cache Directory id: npm-cache run: echo "NPM_CACHE_DIR=$(npm config get cache)" >> $GITHUB_ENV + - name: Cache NPM Dependencies uses: actions/cache@v4 with: path: ${{ env.NPM_CACHE_DIR }} key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: ${{ runner.os }}-node- + - name: Install npm dependencies run: npm ci + - name: Build Front-end Assets run: npm run build + - name: Prepare Laravel Environment run: | php -r "file_exists('.env') || copy('.env.ci', '.env');" php artisan key:generate php artisan optimize + - name: Run Database Migrations run: php artisan migrate + - name: Link Storage run: php artisan storage:link + - name: Run Tests run: php artisan test + - name: Display Laravel Log if: failure() run: cat storage/logs/laravel.log diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 4f8bc32..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,40 +0,0 @@ -version: 2 -updates: - # Composer dependencies (PHP) - - package-ecosystem: "composer" - directory: "/" - schedule: - interval: "daily" - time: "15:00" # 10am EST - open-pull-requests-limit: 10 - target-branch: "develop" - labels: - - "dependencies" - assignees: - - "Refringe" - - # GitHub Actions - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "daily" - time: "15:00" # 10am EST - open-pull-requests-limit: 10 - target-branch: "develop" - labels: - - "dependencies" - assignees: - - "Refringe" - - # npm modules (JavaScript) - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "daily" - time: "15:00" # 10am EST - open-pull-requests-limit: 10 - target-branch: "develop" - labels: - - "dependencies" - assignees: - - "Refringe" From 1c25b3eddeb99705cc81e088346afb694008e89f Mon Sep 17 00:00:00 2001 From: Refringe Date: Wed, 11 Sep 2024 16:37:08 -0400 Subject: [PATCH 033/130] Workflow: Test MySQL Connection Step --- .gitea/workflows/tests.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitea/workflows/tests.yaml b/.gitea/workflows/tests.yaml index 2fa2410..27a845d 100644 --- a/.gitea/workflows/tests.yaml +++ b/.gitea/workflows/tests.yaml @@ -18,6 +18,11 @@ jobs: options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 steps: + - name: Verify MySQL connection + run: | + mysql --version + mysql --host mysql --port 33306 -uuser -ppassword -e "SHOW DATABASES" + - name: Checkout uses: actions/checkout@v4 From 290db63093b6770f6195b7f9ce9e28fe2639bb26 Mon Sep 17 00:00:00 2001 From: Refringe Date: Wed, 11 Sep 2024 16:40:05 -0400 Subject: [PATCH 034/130] Workflow: Install MySQL Client --- .gitea/workflows/tests.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/tests.yaml b/.gitea/workflows/tests.yaml index 27a845d..5cd870d 100644 --- a/.gitea/workflows/tests.yaml +++ b/.gitea/workflows/tests.yaml @@ -20,8 +20,9 @@ jobs: steps: - name: Verify MySQL connection run: | + sudo apt-get install -y mysql-client mysql --version - mysql --host mysql --port 33306 -uuser -ppassword -e "SHOW DATABASES" + mysql --host 127.0.0.1 --port 3306 -uuser -ppassword -e "SHOW DATABASES" - name: Checkout uses: actions/checkout@v4 From c7114df136fdb612e0c647974c0fb7c240b71953 Mon Sep 17 00:00:00 2001 From: Refringe Date: Wed, 11 Sep 2024 16:41:02 -0400 Subject: [PATCH 035/130] Workflow: Remove Sudo Call --- .gitea/workflows/tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/tests.yaml b/.gitea/workflows/tests.yaml index 5cd870d..4adf958 100644 --- a/.gitea/workflows/tests.yaml +++ b/.gitea/workflows/tests.yaml @@ -20,7 +20,7 @@ jobs: steps: - name: Verify MySQL connection run: | - sudo apt-get install -y mysql-client + apt-get install -y mysql-client mysql --version mysql --host 127.0.0.1 --port 3306 -uuser -ppassword -e "SHOW DATABASES" From 30f7d60cc454f1d3c2bc227a67f0e4248dcb6f80 Mon Sep 17 00:00:00 2001 From: Refringe Date: Wed, 11 Sep 2024 16:43:53 -0400 Subject: [PATCH 036/130] Workflow: Use Latest Ubuntu Also, apt update before install. --- .gitea/workflows/quality.yaml | 6 +++--- .gitea/workflows/tests.yaml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/quality.yaml b/.gitea/workflows/quality.yaml index a755f95..4c24ed5 100644 --- a/.gitea/workflows/quality.yaml +++ b/.gitea/workflows/quality.yaml @@ -4,7 +4,7 @@ on: [ push, pull_request ] jobs: security-checker: - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 @@ -12,7 +12,7 @@ jobs: uses: symfonycorp/security-checker-action@v5 larastan: - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 @@ -48,7 +48,7 @@ jobs: run: ./vendor/bin/phpstan analyse -c ./phpstan.neon --no-progress --error-format=github pint-fixer: - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest permissions: contents: write steps: diff --git a/.gitea/workflows/tests.yaml b/.gitea/workflows/tests.yaml index 4adf958..76dde6c 100644 --- a/.gitea/workflows/tests.yaml +++ b/.gitea/workflows/tests.yaml @@ -4,7 +4,7 @@ on: [ push, pull_request ] jobs: laravel-tests: - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest services: mysql: image: mysql:8.3 @@ -20,7 +20,7 @@ jobs: steps: - name: Verify MySQL connection run: | - apt-get install -y mysql-client + apt-get update && apt-get install -y mysql-client mysql --version mysql --host 127.0.0.1 --port 3306 -uuser -ppassword -e "SHOW DATABASES" From 001039b6fc46265367d12b4aeba1925354f91c39 Mon Sep 17 00:00:00 2001 From: Refringe Date: Wed, 11 Sep 2024 16:48:08 -0400 Subject: [PATCH 037/130] Workflow: Updated MySQL Package Name --- .gitea/workflows/tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/tests.yaml b/.gitea/workflows/tests.yaml index 76dde6c..a0202d6 100644 --- a/.gitea/workflows/tests.yaml +++ b/.gitea/workflows/tests.yaml @@ -20,7 +20,7 @@ jobs: steps: - name: Verify MySQL connection run: | - apt-get update && apt-get install -y mysql-client + apt-get update && apt-get install -qy git curl libmcrypt-dev default-mysql-client mysql --version mysql --host 127.0.0.1 --port 3306 -uuser -ppassword -e "SHOW DATABASES" From 711650fa348bb2d87300fa62b0e3d1691cd6d27e Mon Sep 17 00:00:00 2001 From: Refringe Date: Wed, 11 Sep 2024 16:49:41 -0400 Subject: [PATCH 038/130] Workflow: Updates test mysql connection information --- .gitea/workflows/tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/tests.yaml b/.gitea/workflows/tests.yaml index a0202d6..9d574b8 100644 --- a/.gitea/workflows/tests.yaml +++ b/.gitea/workflows/tests.yaml @@ -22,7 +22,7 @@ jobs: run: | apt-get update && apt-get install -qy git curl libmcrypt-dev default-mysql-client mysql --version - mysql --host 127.0.0.1 --port 3306 -uuser -ppassword -e "SHOW DATABASES" + mysql --host mysql --port 33306 -uuser -ppassword -e "SHOW DATABASES" - name: Checkout uses: actions/checkout@v4 From d4c62817f1e2e92c3146701121883da7732fc669 Mon Sep 17 00:00:00 2001 From: Refringe Date: Wed, 11 Sep 2024 16:57:12 -0400 Subject: [PATCH 039/130] Workflow: Change Port & Dump HealthCMD --- .gitea/workflows/tests.yaml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/tests.yaml b/.gitea/workflows/tests.yaml index 9d574b8..18d4bc6 100644 --- a/.gitea/workflows/tests.yaml +++ b/.gitea/workflows/tests.yaml @@ -14,15 +14,14 @@ jobs: MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password ports: - - 33306:3306 - options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 + - 3306:3306 steps: - - name: Verify MySQL connection + - name: Ready MySQL connection run: | - apt-get update && apt-get install -qy git curl libmcrypt-dev default-mysql-client + apt-get update && apt-get install -qy libmcrypt-dev default-mysql-client mysql --version - mysql --host mysql --port 33306 -uuser -ppassword -e "SHOW DATABASES" + mysql --host mysql --port 3306 -uuser -ppassword -e "SHOW DATABASES" - name: Checkout uses: actions/checkout@v4 From 945062d6f163d8e9a60f64fca1db34bd1be7e16d Mon Sep 17 00:00:00 2001 From: Refringe Date: Wed, 11 Sep 2024 17:00:28 -0400 Subject: [PATCH 040/130] Workflow: Change MySQL Port --- .gitea/workflows/tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/tests.yaml b/.gitea/workflows/tests.yaml index 18d4bc6..a812ed0 100644 --- a/.gitea/workflows/tests.yaml +++ b/.gitea/workflows/tests.yaml @@ -14,7 +14,7 @@ jobs: MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password ports: - - 3306:3306 + - 33306:3306 steps: - name: Ready MySQL connection From 1bce328db5cfb9172130f30a1f4a60c80eb97f5b Mon Sep 17 00:00:00 2001 From: Refringe Date: Wed, 11 Sep 2024 17:10:26 -0400 Subject: [PATCH 041/130] Workflow: Removes Port Map & Adds HealthCMD --- .gitea/workflows/tests.yaml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.gitea/workflows/tests.yaml b/.gitea/workflows/tests.yaml index a812ed0..7803c49 100644 --- a/.gitea/workflows/tests.yaml +++ b/.gitea/workflows/tests.yaml @@ -13,16 +13,9 @@ jobs: MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password - ports: - - 33306:3306 + options: --health-cmd="mysql -u user -D testing -ppassword -h mysql -e ''" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - - name: Ready MySQL connection - run: | - apt-get update && apt-get install -qy libmcrypt-dev default-mysql-client - mysql --version - mysql --host mysql --port 3306 -uuser -ppassword -e "SHOW DATABASES" - - name: Checkout uses: actions/checkout@v4 From 0dc21378ab1ed68de47c00045f68d58f29f0c228 Mon Sep 17 00:00:00 2001 From: Refringe Date: Wed, 11 Sep 2024 17:13:38 -0400 Subject: [PATCH 042/130] Workflow: Updates MySQL CI Port --- .env.ci | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.ci b/.env.ci index 4138eee..857f7af 100644 --- a/.env.ci +++ b/.env.ci @@ -10,7 +10,7 @@ LOG_LEVEL=debug DB_CONNECTION=mysql DB_HOST=mysql -DB_PORT=33306 +DB_PORT=3306 DB_DATABASE=testing DB_USERNAME=user DB_PASSWORD=password From bd2d38b4e486773f37ca2247a418fed63acf9ba6 Mon Sep 17 00:00:00 2001 From: Refringe Date: Wed, 11 Sep 2024 23:07:45 -0400 Subject: [PATCH 043/130] Seeder Updaes - Commented out the follower seeding function as it's not yet merged. - SPT Versions are now being generated through the ModVersionFactory. - After initial data has been generated, jobs are called to get the site to a 'ready' state. - Clears cache --- database/seeders/DatabaseSeeder.php | 97 +++++++++++++++++------------ 1 file changed, 58 insertions(+), 39 deletions(-) diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 6becca0..e2fda8a 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -6,10 +6,11 @@ use App\Models\License; use App\Models\Mod; use App\Models\ModDependency; use App\Models\ModVersion; -use App\Models\SptVersion; use App\Models\User; use App\Models\UserRole; use Illuminate\Database\Seeder; +use Illuminate\Support\Facades\Artisan; +use Laravel\Prompts\Progress; use function Laravel\Prompts\progress; @@ -20,42 +21,44 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - // how many of each "thing" to make during seeding - $userCount = 100; - $modCount = 300; - $modVersionCount = 3000; + // How many of each entity to create. + $counts = [ + 'license' => 10, + 'administrator' => 5, + 'moderator' => 5, + 'user' => 100, + 'mod' => 200, + 'modVersion' => 1500, + ]; - // Create a few SPT versions. - $spt_versions = SptVersion::factory(30)->create(); + // Licenses + $licenses = License::factory($counts['license'])->create(); - // Create some code licenses. - $licenses = License::factory(10)->create(); - - // Add administrators. + // Administrator Users $administratorRole = UserRole::factory()->administrator()->create(); $testAccount = User::factory()->for($administratorRole, 'role')->create([ 'email' => 'test@example.com', ]); + User::factory($counts['administrator'] - 1)->for($administratorRole, 'role')->create(); - $this->command->outputComponents()->info("test account created: $testAccount->email"); + $this->command->outputComponents()->info("Test account created: {$testAccount->email}"); - User::factory(4)->for($administratorRole, 'role')->create(); - - // Add moderators. + // Moderator Users $moderatorRole = UserRole::factory()->moderator()->create(); - User::factory(5)->for($moderatorRole, 'role')->create(); + User::factory($counts['moderator'])->for($moderatorRole, 'role')->create(); - // Add users + // Users progress( - label: 'adding users...', - steps: $userCount, + label: 'Adding Users...', + steps: $counts['user'], callback: fn () => User::factory()->create() ); - // get all users + // All Users $allUsers = User::all(); - // Add user follows + /* We got a little ahead of ourselves here. This hasn't been merged yet! + // User Follows progress( label: 'adding user follows ...', steps: $allUsers, @@ -73,18 +76,20 @@ class DatabaseSeeder extends Seeder $user->following()->attach($following); } }); + */ + // Mods $mods = collect(progress( - label: 'adding mods...', - steps: $modCount, + label: 'Adding Mods...', + steps: $counts['mod'], callback: fn () => Mod::factory()->recycle([$licenses])->create() )); - // attach users to mods + // Attach users to mods progress( - label: 'attaching mod users ...', + label: 'Attaching users to mods...', steps: $mods, - callback: function ($mod) use ($allUsers) { + callback: function (Mod $mod, Progress $progress) use ($allUsers) { $userIds = $allUsers->random(rand(1, 3))->pluck('id')->toArray(); $mod->users()->attach($userIds); } @@ -92,26 +97,40 @@ class DatabaseSeeder extends Seeder // Add mod versions, assigning them to the mods we just created. $modVersions = collect(progress( - label: 'adding mods versions ...', - steps: $modVersionCount, - callback: fn () => ModVersion::factory()->recycle([$mods, $spt_versions])->create() + label: 'Adding Mod Versions...', + steps: $counts['modVersion'], + callback: fn () => ModVersion::factory()->recycle([$mods])->create() )); - // Add ModDependencies to a subset of ModVersions. + // Add mod dependencies to *some* mod versions. progress( - label: 'adding mods dependencies ...', + label: 'Adding Mod Dependencies...', steps: $modVersions, - callback: function ($modVersion) use ($mods) { - $hasDependencies = rand(0, 100) < 30; // 30% chance to have dependencies - if ($hasDependencies) { - $dependencyMods = $mods->random(rand(1, 3)); // 1 to 3 dependencies - foreach ($dependencyMods as $dependencyMod) { - ModDependency::factory()->recycle([$modVersion, $dependencyMod])->create(); - } + callback: function (ModVersion $modVersion, Progress $progress) use ($mods) { + // 70% chance to not have dependencies + if (rand(0, 9) >= 3) { + return; + } + + // Choose 1-3 random mods to be dependencies. + $dependencyMods = $mods->random(rand(1, 3)); + foreach ($dependencyMods as $dependencyMod) { + ModDependency::factory()->recycle([$modVersion, $dependencyMod])->create(); } } ); - $this->command->outputComponents()->success('Database seeded'); + $this->command->outputComponents()->success('Initial seeding complete'); + + Artisan::call('app:search-sync'); + Artisan::call('app:resolve-versions'); + Artisan::call('app:count-mods'); + Artisan::call('app:update-downloads'); + $this->command->outputComponents()->warn('Jobs added to queue. Ensure Horizon is running!'); + + Artisan::call('cache:clear'); + $this->command->outputComponents()->info('Cache cleared'); + + $this->command->outputComponents()->success('Database seeding complete'); } } From bbb8fab1a1fdf6131d299522ac41e13526b2f9c3 Mon Sep 17 00:00:00 2001 From: Refringe Date: Wed, 11 Sep 2024 23:08:58 -0400 Subject: [PATCH 044/130] Resolves Some Larastan Issues --- app/Http/Controllers/Api/V0/ApiController.php | 10 +++++- app/Http/Controllers/Api/V0/ModController.php | 21 ++++------- .../Controllers/Api/V0/UsersController.php | 21 ++++------- app/Http/Controllers/ModController.php | 18 ++++------ app/Http/Controllers/UserController.php | 3 +- app/Http/Filters/ModFilter.php | 22 ++++++++++-- app/Models/UserRole.php | 4 +++ app/Notifications/ResetPassword.php | 5 +++ app/Notifications/VerifyEmail.php | 5 +++ app/Services/DependencyVersionService.php | 2 ++ app/Services/SptVersionService.php | 2 ++ app/Traits/ApiResponses.php | 13 +++++++ app/Traits/HasCoverPhoto.php | 14 ++++---- app/View/Components/ModList.php | 13 ++++++- app/View/Components/ModListSection.php | 35 +++++++++++++++++++ app/View/Components/ModListStats.php | 6 ++-- database/factories/LicenseFactory.php | 3 ++ database/factories/ModDependencyFactory.php | 3 ++ database/factories/ModFactory.php | 12 +++---- database/factories/ModVersionFactory.php | 3 ++ database/factories/SptVersionFactory.php | 3 ++ database/factories/UserFactory.php | 6 ++++ database/factories/UserRoleFactory.php | 3 ++ .../2024_05_14_040126_create_pulse_tables.php | 6 ++-- 24 files changed, 170 insertions(+), 63 deletions(-) diff --git a/app/Http/Controllers/Api/V0/ApiController.php b/app/Http/Controllers/Api/V0/ApiController.php index 588e047..152e1fe 100644 --- a/app/Http/Controllers/Api/V0/ApiController.php +++ b/app/Http/Controllers/Api/V0/ApiController.php @@ -4,16 +4,24 @@ namespace App\Http\Controllers\Api\V0; use App\Http\Controllers\Controller; use Illuminate\Support\Str; +use Psr\Container\ContainerExceptionInterface; +use Psr\Container\NotFoundExceptionInterface; class ApiController extends Controller { /** * Determine if the given relationship should be included in the request. If more than one relationship is provided, * only one needs to be present in the request for this method to return true. + * + * @param string|string[] $relationships */ public static function shouldInclude(string|array $relationships): bool { - $param = request()->get('include'); + try { + $param = request()->get('include'); + } catch (NotFoundExceptionInterface|ContainerExceptionInterface $e) { + return false; + } if (! $param) { return false; diff --git a/app/Http/Controllers/Api/V0/ModController.php b/app/Http/Controllers/Api/V0/ModController.php index 9065bbc..29738af 100644 --- a/app/Http/Controllers/Api/V0/ModController.php +++ b/app/Http/Controllers/Api/V0/ModController.php @@ -7,13 +7,15 @@ use App\Http\Requests\Api\V0\StoreModRequest; use App\Http\Requests\Api\V0\UpdateModRequest; use App\Http\Resources\Api\V0\ModResource; use App\Models\Mod; +use Illuminate\Http\Resources\Json\AnonymousResourceCollection; +use Illuminate\Http\Resources\Json\JsonResource; class ModController extends ApiController { /** * Display a listing of the resource. */ - public function index(ModFilter $filters) + public function index(ModFilter $filters): AnonymousResourceCollection { return ModResource::collection(Mod::filter($filters)->paginate()); } @@ -21,15 +23,12 @@ class ModController extends ApiController /** * Store a newly created resource in storage. */ - public function store(StoreModRequest $request) - { - // - } + public function store(StoreModRequest $request): void {} /** * Display the specified resource. */ - public function show(Mod $mod) + public function show(Mod $mod): JsonResource { return new ModResource($mod); } @@ -37,16 +36,10 @@ class ModController extends ApiController /** * Update the specified resource in storage. */ - public function update(UpdateModRequest $request, Mod $mod) - { - // - } + public function update(UpdateModRequest $request, Mod $mod): void {} /** * Remove the specified resource from storage. */ - public function destroy(Mod $mod) - { - // - } + public function destroy(Mod $mod): void {} } diff --git a/app/Http/Controllers/Api/V0/UsersController.php b/app/Http/Controllers/Api/V0/UsersController.php index 8bf7824..ca1cd62 100644 --- a/app/Http/Controllers/Api/V0/UsersController.php +++ b/app/Http/Controllers/Api/V0/UsersController.php @@ -7,13 +7,15 @@ use App\Http\Requests\Api\V0\StoreUserRequest; use App\Http\Requests\Api\V0\UpdateUserRequest; use App\Http\Resources\Api\V0\UserResource; use App\Models\User; +use Illuminate\Http\Resources\Json\AnonymousResourceCollection; +use Illuminate\Http\Resources\Json\JsonResource; class UsersController extends ApiController { /** * Display a listing of the resource. */ - public function index(UserFilter $filters) + public function index(UserFilter $filters): AnonymousResourceCollection { return UserResource::collection(User::filter($filters)->paginate()); } @@ -21,15 +23,12 @@ class UsersController extends ApiController /** * Store a newly created resource in storage. */ - public function store(StoreUserRequest $request) - { - // - } + public function store(StoreUserRequest $request): void {} /** * Display the specified resource. */ - public function show(User $user) + public function show(User $user): JsonResource { return new UserResource($user); } @@ -37,16 +36,10 @@ class UsersController extends ApiController /** * Update the specified resource in storage. */ - public function update(UpdateUserRequest $request, User $user) - { - // - } + public function update(UpdateUserRequest $request, User $user): void {} /** * Remove the specified resource from storage. */ - public function destroy(User $user) - { - // - } + public function destroy(User $user): void {} } diff --git a/app/Http/Controllers/ModController.php b/app/Http/Controllers/ModController.php index 939d5ae..22b4922 100644 --- a/app/Http/Controllers/ModController.php +++ b/app/Http/Controllers/ModController.php @@ -6,26 +6,27 @@ use App\Http\Requests\ModRequest; use App\Http\Resources\ModResource; use App\Models\Mod; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; +use Illuminate\View\View; class ModController extends Controller { use AuthorizesRequests; - public function index() + public function index(): View { $this->authorize('viewAny', Mod::class); return view('mod.index'); } - public function store(ModRequest $request) + public function store(ModRequest $request): ModResource { $this->authorize('create', Mod::class); return new ModResource(Mod::create($request->validated())); } - public function show(int $modId, string $slug) + public function show(int $modId, string $slug): View { $mod = Mod::with([ 'versions', @@ -47,7 +48,7 @@ class ModController extends Controller return view('mod.show', compact(['mod'])); } - public function update(ModRequest $request, Mod $mod) + public function update(ModRequest $request, Mod $mod): ModResource { $this->authorize('update', $mod); @@ -56,12 +57,5 @@ class ModController extends Controller return new ModResource($mod); } - public function destroy(Mod $mod) - { - $this->authorize('delete', $mod); - - $mod->delete(); - - return response()->json(); - } + public function destroy(Mod $mod): void {} } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index a8e86d5..b0554cc 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -5,12 +5,13 @@ namespace App\Http\Controllers; use App\Models\User; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Http\Request; +use Illuminate\View\View; class UserController extends Controller { use AuthorizesRequests; - public function show(Request $request, User $user, string $username) + public function show(Request $request, User $user, string $username): View { if ($user->slug() !== $username) { abort(404); diff --git a/app/Http/Filters/ModFilter.php b/app/Http/Filters/ModFilter.php index 0fa8a39..b4ca066 100644 --- a/app/Http/Filters/ModFilter.php +++ b/app/Http/Filters/ModFilter.php @@ -11,14 +11,21 @@ class ModFilter { /** * The query builder instance for the mod model. + * + * @var Builder */ protected Builder $builder; /** * The filter that should be applied to the query. + * + * @var array */ protected array $filters; + /** + * @param array $filters + */ public function __construct(array $filters) { $this->builder = $this->baseQuery(); @@ -27,6 +34,8 @@ class ModFilter /** * The base query for the mod listing. + * + * @return Builder */ private function baseQuery(): Builder { @@ -49,6 +58,8 @@ class ModFilter /** * Apply the filters to the query. + * + * @return Builder */ public function apply(): Builder { @@ -58,13 +69,13 @@ class ModFilter } } - //dd($this->builder->toRawSql()); - return $this->builder; } /** * Order the query by the given type. + * + * @return Builder */ private function order(string $type): Builder { @@ -92,6 +103,8 @@ class ModFilter /** * Filter the results by the given search term. + * + * @return Builder */ private function query(string $term): Builder { @@ -100,6 +113,8 @@ class ModFilter /** * Filter the results by the featured status. + * + * @return Builder */ private function featured(string $option): Builder { @@ -112,6 +127,9 @@ class ModFilter /** * Filter the results to specific SPT versions. + * + * @param array $versions + * @return Builder */ private function sptVersions(array $versions): Builder { diff --git a/app/Models/UserRole.php b/app/Models/UserRole.php index bcd2146..e56dfe3 100644 --- a/app/Models/UserRole.php +++ b/app/Models/UserRole.php @@ -2,16 +2,20 @@ namespace App\Models; +use Database\Factories\UserFactory; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; class UserRole extends Model { + /** @use HasFactory */ use HasFactory; /** * The relationship between a user role and users. + * + * @return HasMany */ public function users(): HasMany { diff --git a/app/Notifications/ResetPassword.php b/app/Notifications/ResetPassword.php index 85c4838..9545c9a 100644 --- a/app/Notifications/ResetPassword.php +++ b/app/Notifications/ResetPassword.php @@ -18,6 +18,11 @@ class ResetPassword extends OriginalResetPassword implements ShouldQueue parent::__construct($token); } + /** + * Get the array representation of the notification. + * + * @return array + */ public function toArray(object $notifiable): array { return []; diff --git a/app/Notifications/VerifyEmail.php b/app/Notifications/VerifyEmail.php index 4dde9e5..fc3fd55 100644 --- a/app/Notifications/VerifyEmail.php +++ b/app/Notifications/VerifyEmail.php @@ -13,6 +13,11 @@ class VerifyEmail extends OriginalVerifyEmail implements ShouldQueue { use Queueable; + /** + * Get the array representation of the notification. + * + * @return array + */ public function toArray(object $notifiable): array { return []; diff --git a/app/Services/DependencyVersionService.php b/app/Services/DependencyVersionService.php index 556314e..9598ade 100644 --- a/app/Services/DependencyVersionService.php +++ b/app/Services/DependencyVersionService.php @@ -18,6 +18,8 @@ class DependencyVersionService /** * Satisfies all dependency constraints of a ModVersion. + * + * @return array> */ private function satisfyConstraint(ModVersion $modVersion): array { diff --git a/app/Services/SptVersionService.php b/app/Services/SptVersionService.php index 8eba213..2a8aa53 100644 --- a/app/Services/SptVersionService.php +++ b/app/Services/SptVersionService.php @@ -19,6 +19,8 @@ class SptVersionService /** * Satisfies the version constraint of a given ModVersion. Returns the ID of the satisfying SptVersion. + * + * @return array */ private function satisfyConstraint(ModVersion $modVersion): array { diff --git a/app/Traits/ApiResponses.php b/app/Traits/ApiResponses.php index f26781d..dfd4345 100644 --- a/app/Traits/ApiResponses.php +++ b/app/Traits/ApiResponses.php @@ -6,11 +6,21 @@ use Illuminate\Http\JsonResponse; trait ApiResponses { + /** + * Return a success JSON response. + * + * @param array $data + */ protected function success(string $message, ?array $data = []): JsonResponse { return $this->baseResponse(message: $message, data: $data, code: 200); } + /** + * The base response. + * + * @param array $data + */ private function baseResponse(?string $message = '', ?array $data = [], ?int $code = 200): JsonResponse { return response()->json([ @@ -19,6 +29,9 @@ trait ApiResponses ], $code); } + /** + * Return an error JSON response. + */ protected function error(string $message, int $code): JsonResponse { return $this->baseResponse(message: $message, code: $code); diff --git a/app/Traits/HasCoverPhoto.php b/app/Traits/HasCoverPhoto.php index ce429e3..d52adb4 100644 --- a/app/Traits/HasCoverPhoto.php +++ b/app/Traits/HasCoverPhoto.php @@ -11,7 +11,7 @@ trait HasCoverPhoto /** * Update the user's cover photo. */ - public function updateCoverPhoto(UploadedFile $cover, $storagePath = 'cover-photos'): void + public function updateCoverPhoto(UploadedFile $cover, string $storagePath = 'cover-photos'): void { tap($this->cover_photo_path, function ($previous) use ($cover, $storagePath) { $this->forceFill([ @@ -51,15 +51,17 @@ trait HasCoverPhoto } /** - * Get the URL to the user's cover photo. + * Get the cover photo URL for the user. + * + * @return Attribute */ public function coverPhotoUrl(): Attribute { - return Attribute::get(function (): string { - return $this->cover_photo_path + return new Attribute( + get: fn (): string => $this->cover_photo_path ? Storage::disk($this->coverPhotoDisk())->url($this->cover_photo_path) - : $this->defaultCoverPhotoUrl(); - }); + : $this->defaultCoverPhotoUrl() + ); } /** diff --git a/app/View/Components/ModList.php b/app/View/Components/ModList.php index 6d46793..d4a8369 100644 --- a/app/View/Components/ModList.php +++ b/app/View/Components/ModList.php @@ -2,17 +2,28 @@ namespace App\View\Components; +use App\Models\Mod; use Illuminate\Contracts\View\View; use Illuminate\Database\Eloquent\Collection; use Illuminate\View\Component; class ModList extends Component { + /** + * The mods to display. + * + * @var Collection + */ public Collection $mods; public string $versionScope; - public function __construct($mods, $versionScope) + /** + * Create a new component instance. + * + * @param Collection $mods + */ + public function __construct(Collection $mods, string $versionScope) { $this->mods = $mods; $this->versionScope = $versionScope; diff --git a/app/View/Components/ModListSection.php b/app/View/Components/ModListSection.php index f9c257c..be87d7c 100644 --- a/app/View/Components/ModListSection.php +++ b/app/View/Components/ModListSection.php @@ -11,10 +11,25 @@ use Illuminate\View\Component; class ModListSection extends Component { + /** + * The featured mods listed on the homepage. + * + * @var Collection + */ public Collection $modsFeatured; + /** + * The latest mods listed on the homepage. + * + * @var Collection + */ public Collection $modsLatest; + /** + * The last updated mods listed on the homepage. + * + * @var Collection + */ public Collection $modsUpdated; public function __construct() @@ -24,6 +39,11 @@ class ModListSection extends Component $this->modsUpdated = $this->fetchUpdatedMods(); } + /** + * Fetches the featured mods homepage listing. + * + * @return Collection + */ private function fetchFeaturedMods(): Collection { return Mod::select(['id', 'name', 'slug', 'teaser', 'thumbnail', 'featured', 'downloads']) @@ -39,6 +59,11 @@ class ModListSection extends Component ->get(); } + /** + * Fetches the latest mods homepage listing. + * + * @return Collection + */ private function fetchLatestMods(): Collection { return Mod::select(['id', 'name', 'slug', 'teaser', 'thumbnail', 'featured', 'created_at', 'downloads']) @@ -53,6 +78,11 @@ class ModListSection extends Component ->get(); } + /** + * Fetches the recently updated mods homepage listing. + * + * @return Collection + */ private function fetchUpdatedMods(): Collection { return Mod::select(['id', 'name', 'slug', 'teaser', 'thumbnail', 'featured', 'downloads']) @@ -81,6 +111,11 @@ class ModListSection extends Component ]); } + /** + * Prepare the sections for the homepage mod lists. + * + * @return array> + */ public function getSections(): array { return [ diff --git a/app/View/Components/ModListStats.php b/app/View/Components/ModListStats.php index a267d7c..3591b3c 100644 --- a/app/View/Components/ModListStats.php +++ b/app/View/Components/ModListStats.php @@ -2,14 +2,16 @@ namespace App\View\Components; +use App\Models\Mod; +use App\Models\ModVersion; use Illuminate\Contracts\View\View; use Illuminate\View\Component; class ModListStats extends Component { public function __construct( - public $mod, - public $modVersion + public Mod $mod, + public ModVersion $modVersion ) {} public function render(): View diff --git a/database/factories/LicenseFactory.php b/database/factories/LicenseFactory.php index 0bb8660..42d7fbb 100644 --- a/database/factories/LicenseFactory.php +++ b/database/factories/LicenseFactory.php @@ -6,6 +6,9 @@ use App\Models\License; use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Carbon; +/** + * @extends Factory + */ class LicenseFactory extends Factory { protected $model = License::class; diff --git a/database/factories/ModDependencyFactory.php b/database/factories/ModDependencyFactory.php index b3318ac..22a0508 100644 --- a/database/factories/ModDependencyFactory.php +++ b/database/factories/ModDependencyFactory.php @@ -8,6 +8,9 @@ use App\Models\ModVersion; use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Carbon; +/** + * @extends Factory + */ class ModDependencyFactory extends Factory { protected $model = ModDependency::class; diff --git a/database/factories/ModFactory.php b/database/factories/ModFactory.php index a3167b4..c818a49 100644 --- a/database/factories/ModFactory.php +++ b/database/factories/ModFactory.php @@ -7,25 +7,23 @@ use App\Models\Mod; use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Carbon; use Illuminate\Support\Str; -use Random\RandomException; +/** + * @extends Factory + */ class ModFactory extends Factory { protected $model = Mod::class; - /** - * @throws RandomException - */ public function definition(): array { - - $name = fake()->catchPhrase(); + $name = fake()->sentence(rand(3, 5)); return [ 'name' => $name, 'slug' => Str::slug($name), 'teaser' => fake()->sentence(), - 'description' => fake()->paragraphs(random_int(4, 20), true), + 'description' => fake()->paragraphs(rand(4, 20), true), 'license_id' => License::factory(), 'source_code_link' => fake()->url(), 'featured' => fake()->boolean(), diff --git a/database/factories/ModVersionFactory.php b/database/factories/ModVersionFactory.php index 716fd20..ade126e 100644 --- a/database/factories/ModVersionFactory.php +++ b/database/factories/ModVersionFactory.php @@ -8,6 +8,9 @@ use App\Models\SptVersion; use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Carbon; +/** + * @extends Factory + */ class ModVersionFactory extends Factory { protected $model = ModVersion::class; diff --git a/database/factories/SptVersionFactory.php b/database/factories/SptVersionFactory.php index 5adf33a..707ed46 100644 --- a/database/factories/SptVersionFactory.php +++ b/database/factories/SptVersionFactory.php @@ -6,6 +6,9 @@ use App\Models\SptVersion; use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Carbon; +/** + * @extends Factory + */ class SptVersionFactory extends Factory { protected $model = SptVersion::class; diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 75f3298..3b311ce 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -2,10 +2,14 @@ namespace Database\Factories; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; +/** + * @extends Factory + */ class UserFactory extends Factory { /** @@ -13,6 +17,8 @@ class UserFactory extends Factory */ protected static ?string $password; + protected $model = User::class; + /** * Define the user's default state. */ diff --git a/database/factories/UserRoleFactory.php b/database/factories/UserRoleFactory.php index 0e7d165..20b0a2b 100644 --- a/database/factories/UserRoleFactory.php +++ b/database/factories/UserRoleFactory.php @@ -6,6 +6,9 @@ use App\Models\UserRole; use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Support\Carbon; +/** + * @extends Factory + */ class UserRoleFactory extends Factory { protected $model = UserRole::class; diff --git a/database/migrations/2024_05_14_040126_create_pulse_tables.php b/database/migrations/2024_05_14_040126_create_pulse_tables.php index 5d194e2..3335394 100644 --- a/database/migrations/2024_05_14_040126_create_pulse_tables.php +++ b/database/migrations/2024_05_14_040126_create_pulse_tables.php @@ -23,7 +23,7 @@ return new class extends PulseMigration match ($this->driver()) { 'mariadb', 'mysql' => $table->char('key_hash', 16)->charset('binary')->virtualAs('unhex(md5(`key`))'), 'pgsql' => $table->uuid('key_hash')->storedAs('md5("key")::uuid'), - 'sqlite' => $table->string('key_hash'), + default => $table->string('key_hash'), }; $table->mediumText('value'); @@ -40,7 +40,7 @@ return new class extends PulseMigration match ($this->driver()) { 'mariadb', 'mysql' => $table->char('key_hash', 16)->charset('binary')->virtualAs('unhex(md5(`key`))'), 'pgsql' => $table->uuid('key_hash')->storedAs('md5("key")::uuid'), - 'sqlite' => $table->string('key_hash'), + default => $table->string('key_hash'), }; $table->bigInteger('value')->nullable(); @@ -59,7 +59,7 @@ return new class extends PulseMigration match ($this->driver()) { 'mariadb', 'mysql' => $table->char('key_hash', 16)->charset('binary')->virtualAs('unhex(md5(`key`))'), 'pgsql' => $table->uuid('key_hash')->storedAs('md5("key")::uuid'), - 'sqlite' => $table->string('key_hash'), + default => $table->string('key_hash'), }; $table->string('aggregate'); $table->decimal('value', 20, 2); From d9b7d6fcc8570ec719c62ee0a236425e58b76adf Mon Sep 17 00:00:00 2001 From: Refringe Date: Thu, 12 Sep 2024 13:19:52 -0400 Subject: [PATCH 045/130] Resolves Remaining Larastan Issues --- app/Console/Commands/ImportHubCommand.php | 2 +- app/Http/Filters/V1/ModFilter.php | 64 +++++++++++ app/Http/Filters/V1/QueryFilter.php | 32 ++++-- app/Http/Filters/V1/UserFilter.php | 29 +++++ app/Http/Requests/Api/LoginUserRequest.php | 2 + app/Http/Requests/Api/V0/StoreModRequest.php | 6 +- app/Http/Requests/Api/V0/StoreUserRequest.php | 6 +- app/Http/Requests/Api/V0/UpdateModRequest.php | 6 +- .../Requests/Api/V0/UpdateUserRequest.php | 6 +- app/Http/Requests/ModRequest.php | 8 ++ app/Http/Resources/Api/V0/LicenseResource.php | 5 + app/Http/Resources/Api/V0/ModResource.php | 2 + .../Resources/Api/V0/ModVersionResource.php | 4 +- app/Http/Resources/Api/V0/UserResource.php | 5 + .../Resources/Api/V0/UserRoleResource.php | 5 + app/Http/Resources/LicenseResource.php | 8 +- app/Http/Resources/ModResource.php | 8 +- app/Http/Resources/ModVersionResource.php | 11 +- app/Http/Resources/SptVersionResource.php | 8 +- .../Import/DataTransferObjects/HubUser.php | 23 ++++ app/Jobs/{ => Import}/ImportHubDataJob.php | 100 ++++++++++++------ app/Livewire/GlobalSearch.php | 43 ++++++-- app/Livewire/Mod/Index.php | 6 ++ app/Models/License.php | 8 +- app/Models/Mod.php | 43 +++++--- app/Models/ModDependency.php | 15 +-- app/Models/ModResolvedDependency.php | 6 ++ app/Models/ModVersion.php | 23 ++-- app/Models/Scopes/DisabledScope.php | 5 + app/Models/Scopes/PublishedScope.php | 5 + app/Models/SptVersion.php | 18 +++- app/Models/User.php | 16 +++ 32 files changed, 429 insertions(+), 99 deletions(-) create mode 100644 app/Jobs/Import/DataTransferObjects/HubUser.php rename app/Jobs/{ => Import}/ImportHubDataJob.php (92%) diff --git a/app/Console/Commands/ImportHubCommand.php b/app/Console/Commands/ImportHubCommand.php index b89bb91..1d92474 100644 --- a/app/Console/Commands/ImportHubCommand.php +++ b/app/Console/Commands/ImportHubCommand.php @@ -2,7 +2,7 @@ namespace App\Console\Commands; -use App\Jobs\ImportHubDataJob; +use App\Jobs\Import\ImportHubDataJob; use Illuminate\Console\Command; class ImportHubCommand extends Command diff --git a/app/Http/Filters/V1/ModFilter.php b/app/Http/Filters/V1/ModFilter.php index dd64b11..58a0992 100644 --- a/app/Http/Filters/V1/ModFilter.php +++ b/app/Http/Filters/V1/ModFilter.php @@ -2,9 +2,13 @@ namespace App\Http\Filters\V1; +use App\Models\Mod; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Str; +/** + * @extends QueryFilter + */ class ModFilter extends QueryFilter { protected array $sortable = [ @@ -23,6 +27,11 @@ class ModFilter extends QueryFilter // TODO: Many of these are repeated across UserFilter and ModFilter. Consider refactoring into a shared trait. // Also, consider using common filter types and making the field names dynamic. + /** + * Filter by ID. + * + * @return Builder + */ public function id(string $value): Builder { $ids = array_map('trim', explode(',', $value)); @@ -30,6 +39,11 @@ class ModFilter extends QueryFilter return $this->builder->whereIn('id', $ids); } + /** + * Filter by hub ID. + * + * @return Builder + */ public function hub_id(string $value): Builder { $ids = array_map('trim', explode(',', $value)); @@ -37,6 +51,11 @@ class ModFilter extends QueryFilter return $this->builder->whereIn('hub_id', $ids); } + /** + * Filter by name. + * + * @return Builder + */ public function name(string $value): Builder { // The API handles the wildcard character as an asterisk (*), but the database uses the percentage sign (%). @@ -45,6 +64,11 @@ class ModFilter extends QueryFilter return $this->builder->where('name', 'like', $like); } + /** + * Filter by slug. + * + * @return Builder + */ public function slug(string $value): Builder { // The API handles the wildcard character as an asterisk (*), but the database uses the percentage sign (%). @@ -53,6 +77,11 @@ class ModFilter extends QueryFilter return $this->builder->where('slug', 'like', $like); } + /** + * Filter by teaser. + * + * @return Builder + */ public function teaser(string $value): Builder { // The API handles the wildcard character as an asterisk (*), but the database uses the percentage sign (%). @@ -61,6 +90,11 @@ class ModFilter extends QueryFilter return $this->builder->where('teaser', 'like', $like); } + /** + * Filter by source code link. + * + * @return Builder + */ public function source_code_link(string $value): Builder { // The API handles the wildcard character as an asterisk (*), but the database uses the percentage sign (%). @@ -69,6 +103,11 @@ class ModFilter extends QueryFilter return $this->builder->where('source_code_link', 'like', $like); } + /** + * Filter by created at date. + * + * @return Builder + */ public function created_at(string $value): Builder { // The API allows for a range of dates to be passed as a comma-separated list. @@ -80,6 +119,11 @@ class ModFilter extends QueryFilter return $this->builder->whereDate('created_at', $value); } + /** + * Filter by updated at date. + * + * @return Builder + */ public function updated_at(string $value): Builder { // The API allows for a range of dates to be passed as a comma-separated list. @@ -91,6 +135,11 @@ class ModFilter extends QueryFilter return $this->builder->whereDate('updated_at', $value); } + /** + * Filter by published at date. + * + * @return Builder + */ public function published_at(string $value): Builder { // The API allows for a range of dates to be passed as a comma-separated list. @@ -102,6 +151,11 @@ class ModFilter extends QueryFilter return $this->builder->whereDate('published_at', $value); } + /** + * Filter by featured. + * + * @return Builder + */ public function featured(string $value): Builder { // We need to convert the string user input to a boolean, or null if it's not a valid "truthy/falsy" value. @@ -115,6 +169,11 @@ class ModFilter extends QueryFilter return $this->builder->where('featured', $value); } + /** + * Filter by contains ads. + * + * @return Builder + */ public function contains_ads(string $value): Builder { // We need to convert the string user input to a boolean, or null if it's not a valid "truthy/falsy" value. @@ -128,6 +187,11 @@ class ModFilter extends QueryFilter return $this->builder->where('contains_ads', $value); } + /** + * Filter by contains AI content. + * + * @return Builder + */ public function contains_ai_content(string $value): Builder { // We need to convert the string user input to a boolean, or null if it's not a valid "truthy/falsy" value. diff --git a/app/Http/Filters/V1/QueryFilter.php b/app/Http/Filters/V1/QueryFilter.php index f636cd7..3e4c789 100644 --- a/app/Http/Filters/V1/QueryFilter.php +++ b/app/Http/Filters/V1/QueryFilter.php @@ -3,15 +3,25 @@ namespace App\Http\Filters\V1; use Illuminate\Database\Eloquent\Builder; +use Illuminate\Database\Eloquent\Model; use Illuminate\Http\Request; use Illuminate\Support\Str; +/** + * @template TModelClass of Model + */ abstract class QueryFilter { + /** + * The query builder instance. + * + * @var Builder + */ protected Builder $builder; protected Request $request; + /** @var array */ protected array $sortable = []; public function __construct(Request $request) @@ -19,6 +29,12 @@ abstract class QueryFilter $this->request = $request; } + /** + * Apply the filter to the query builder. + * + * @param Builder $builder + * @return Builder + */ public function apply(Builder $builder): Builder { $this->builder = $builder; @@ -32,17 +48,11 @@ abstract class QueryFilter return $this->builder; } - protected function filter(array $filters): Builder - { - foreach ($filters as $attribute => $value) { - if (method_exists($this, $attribute)) { - $this->$attribute($value); - } - } - - return $this->builder; - } - + /** + * Apply the sort type to the query. + * + * @return Builder + */ protected function sort(string $values): Builder { $sortables = array_map('trim', explode(',', $values)); diff --git a/app/Http/Filters/V1/UserFilter.php b/app/Http/Filters/V1/UserFilter.php index 1eec8fc..f7c5c51 100644 --- a/app/Http/Filters/V1/UserFilter.php +++ b/app/Http/Filters/V1/UserFilter.php @@ -2,11 +2,20 @@ namespace App\Http\Filters\V1; +use App\Models\User; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Str; +/** + * @extends QueryFilter + */ class UserFilter extends QueryFilter { + /** + * The sortable fields. + * + * @var array + */ protected array $sortable = [ 'name', 'created_at', @@ -16,6 +25,11 @@ class UserFilter extends QueryFilter // TODO: Many of these are repeated across UserFilter and ModFilter. Consider refactoring into a shared trait. // Also, consider using common filter types and making the field names dynamic. + /** + * Filter by ID. + * + * @return Builder + */ public function id(string $value): Builder { $ids = array_map('trim', explode(',', $value)); @@ -23,6 +37,11 @@ class UserFilter extends QueryFilter return $this->builder->whereIn('id', $ids); } + /** + * Filter by name. + * + * @return Builder + */ public function name(string $value): Builder { // The API handles the wildcard character as an asterisk (*), but the database uses the percentage sign (%). @@ -31,6 +50,11 @@ class UserFilter extends QueryFilter return $this->builder->where('name', 'like', $like); } + /** + * Filter by created at date. + * + * @return Builder + */ public function created_at(string $value): Builder { // The API allows for a range of dates to be passed as a comma-separated list. @@ -42,6 +66,11 @@ class UserFilter extends QueryFilter return $this->builder->whereDate('created_at', $value); } + /** + * Filter by updated at date. + * + * @return Builder + */ public function updated_at(string $value): Builder { // The API allows for a range of dates to be passed as a comma-separated list. diff --git a/app/Http/Requests/Api/LoginUserRequest.php b/app/Http/Requests/Api/LoginUserRequest.php index 4ad184e..0fc932a 100644 --- a/app/Http/Requests/Api/LoginUserRequest.php +++ b/app/Http/Requests/Api/LoginUserRequest.php @@ -16,6 +16,8 @@ class LoginUserRequest extends FormRequest /** * Get the validation rules that apply to the request. + * + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/Api/V0/StoreModRequest.php b/app/Http/Requests/Api/V0/StoreModRequest.php index 69bf403..267f46f 100644 --- a/app/Http/Requests/Api/V0/StoreModRequest.php +++ b/app/Http/Requests/Api/V0/StoreModRequest.php @@ -16,11 +16,11 @@ class StoreModRequest extends FormRequest /** * Get the validation rules that apply to the request. + * + * @return array */ public function rules(): array { - return [ - // - ]; + return []; } } diff --git a/app/Http/Requests/Api/V0/StoreUserRequest.php b/app/Http/Requests/Api/V0/StoreUserRequest.php index 590b441..38b3837 100644 --- a/app/Http/Requests/Api/V0/StoreUserRequest.php +++ b/app/Http/Requests/Api/V0/StoreUserRequest.php @@ -16,11 +16,11 @@ class StoreUserRequest extends FormRequest /** * Get the validation rules that apply to the request. + * + * @return array */ public function rules(): array { - return [ - // - ]; + return []; } } diff --git a/app/Http/Requests/Api/V0/UpdateModRequest.php b/app/Http/Requests/Api/V0/UpdateModRequest.php index e4fabca..2193e6b 100644 --- a/app/Http/Requests/Api/V0/UpdateModRequest.php +++ b/app/Http/Requests/Api/V0/UpdateModRequest.php @@ -16,11 +16,11 @@ class UpdateModRequest extends FormRequest /** * Get the validation rules that apply to the request. + * + * @return array */ public function rules(): array { - return [ - // - ]; + return []; } } diff --git a/app/Http/Requests/Api/V0/UpdateUserRequest.php b/app/Http/Requests/Api/V0/UpdateUserRequest.php index 12a1768..d52533e 100644 --- a/app/Http/Requests/Api/V0/UpdateUserRequest.php +++ b/app/Http/Requests/Api/V0/UpdateUserRequest.php @@ -16,11 +16,11 @@ class UpdateUserRequest extends FormRequest /** * Get the validation rules that apply to the request. + * + * @return array */ public function rules(): array { - return [ - // - ]; + return []; } } diff --git a/app/Http/Requests/ModRequest.php b/app/Http/Requests/ModRequest.php index 9f483ad..3899ae6 100644 --- a/app/Http/Requests/ModRequest.php +++ b/app/Http/Requests/ModRequest.php @@ -6,6 +6,11 @@ use Illuminate\Foundation\Http\FormRequest; class ModRequest extends FormRequest { + /** + * Get the validation rules that apply to the request. + * + * @return array + */ public function rules(): array { return [ @@ -18,6 +23,9 @@ class ModRequest extends FormRequest ]; } + /** + * Determine if the user is authorized to make this request. + */ public function authorize(): bool { return true; diff --git a/app/Http/Resources/Api/V0/LicenseResource.php b/app/Http/Resources/Api/V0/LicenseResource.php index a64ebe2..e2e54b2 100644 --- a/app/Http/Resources/Api/V0/LicenseResource.php +++ b/app/Http/Resources/Api/V0/LicenseResource.php @@ -9,6 +9,11 @@ use Illuminate\Http\Resources\Json\JsonResource; /** @mixin License */ class LicenseResource extends JsonResource { + /** + * Transform the resource into an array. + * + * @return array + */ public function toArray(Request $request): array { return [ diff --git a/app/Http/Resources/Api/V0/ModResource.php b/app/Http/Resources/Api/V0/ModResource.php index 23ed9cc..36bcfba 100644 --- a/app/Http/Resources/Api/V0/ModResource.php +++ b/app/Http/Resources/Api/V0/ModResource.php @@ -12,6 +12,8 @@ class ModResource extends JsonResource { /** * Transform the resource into an array. + * + * @return array */ public function toArray(Request $request): array { diff --git a/app/Http/Resources/Api/V0/ModVersionResource.php b/app/Http/Resources/Api/V0/ModVersionResource.php index d42008d..107b21c 100644 --- a/app/Http/Resources/Api/V0/ModVersionResource.php +++ b/app/Http/Resources/Api/V0/ModVersionResource.php @@ -11,6 +11,8 @@ class ModVersionResource extends JsonResource { /** * Transform the resource into an array. + * + * @return array */ public function toArray(Request $request): array { @@ -32,7 +34,6 @@ class ModVersionResource extends JsonResource // downloads that are made, so we'll need a new route/feature for that. #35 'link' => $this->link, - 'spt_version_id' => $this->spt_version_id, 'virus_total_link' => $this->virus_total_link, 'downloads' => $this->downloads, 'created_at' => $this->created_at, @@ -44,7 +45,6 @@ class ModVersionResource extends JsonResource [ 'data' => [ 'type' => 'spt_version', - 'id' => $this->spt_version_id, ], ], ], diff --git a/app/Http/Resources/Api/V0/UserResource.php b/app/Http/Resources/Api/V0/UserResource.php index 903012f..8dfd91f 100644 --- a/app/Http/Resources/Api/V0/UserResource.php +++ b/app/Http/Resources/Api/V0/UserResource.php @@ -10,6 +10,11 @@ use Illuminate\Http\Resources\Json\JsonResource; /** @mixin User */ class UserResource extends JsonResource { + /** + * Transform the resource into an array. + * + * @return array + */ public function toArray(Request $request): array { return [ diff --git a/app/Http/Resources/Api/V0/UserRoleResource.php b/app/Http/Resources/Api/V0/UserRoleResource.php index 51d5146..4d16ad6 100644 --- a/app/Http/Resources/Api/V0/UserRoleResource.php +++ b/app/Http/Resources/Api/V0/UserRoleResource.php @@ -9,6 +9,11 @@ use Illuminate\Http\Resources\Json\JsonResource; /** @mixin UserRole */ class UserRoleResource extends JsonResource { + /** + * Transform the resource into an array. + * + * @return array + */ public function toArray(Request $request): array { return [ diff --git a/app/Http/Resources/LicenseResource.php b/app/Http/Resources/LicenseResource.php index ccc580b..46d9f43 100644 --- a/app/Http/Resources/LicenseResource.php +++ b/app/Http/Resources/LicenseResource.php @@ -2,12 +2,18 @@ namespace App\Http\Resources; +use App\Models\License; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; -/** @mixin \App\Models\License */ +/** @mixin License */ class LicenseResource extends JsonResource { + /** + * Transform the resource into an array. + * + * @return array + */ public function toArray(Request $request): array { return [ diff --git a/app/Http/Resources/ModResource.php b/app/Http/Resources/ModResource.php index c869ee5..db56e51 100644 --- a/app/Http/Resources/ModResource.php +++ b/app/Http/Resources/ModResource.php @@ -2,12 +2,18 @@ namespace App\Http\Resources; +use App\Models\Mod; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; -/** @mixin \App\Models\Mod */ +/** @mixin Mod */ class ModResource extends JsonResource { + /** + * Transform the resource into an array. + * + * @return array + */ public function toArray(Request $request): array { return [ diff --git a/app/Http/Resources/ModVersionResource.php b/app/Http/Resources/ModVersionResource.php index 1f4d045..1878b8b 100644 --- a/app/Http/Resources/ModVersionResource.php +++ b/app/Http/Resources/ModVersionResource.php @@ -2,12 +2,18 @@ namespace App\Http\Resources; +use App\Models\ModVersion; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; -/** @mixin \App\Models\ModVersion */ +/** @mixin ModVersion */ class ModVersionResource extends JsonResource { + /** + * Transform the resource into an array. + * + * @return array + */ public function toArray(Request $request): array { return [ @@ -19,10 +25,7 @@ class ModVersionResource extends JsonResource 'description' => $this->description, 'virus_total_link' => $this->virus_total_link, 'downloads' => $this->downloads, - 'mod_id' => $this->mod_id, - 'spt_version_id' => $this->spt_version_id, - 'mod' => new ModResource($this->whenLoaded('mod')), 'sptVersion' => new SptVersionResource($this->whenLoaded('sptVersion')), ]; diff --git a/app/Http/Resources/SptVersionResource.php b/app/Http/Resources/SptVersionResource.php index 49ecf3a..58d3d62 100644 --- a/app/Http/Resources/SptVersionResource.php +++ b/app/Http/Resources/SptVersionResource.php @@ -2,12 +2,18 @@ namespace App\Http\Resources; +use App\Models\SptVersion; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; -/** @mixin \App\Models\SptVersion */ +/** @mixin SptVersion */ class SptVersionResource extends JsonResource { + /** + * Transform the resource into an array. + * + * @return array + */ public function toArray(Request $request): array { return [ diff --git a/app/Jobs/Import/DataTransferObjects/HubUser.php b/app/Jobs/Import/DataTransferObjects/HubUser.php new file mode 100644 index 0000000..946b1ee --- /dev/null +++ b/app/Jobs/Import/DataTransferObjects/HubUser.php @@ -0,0 +1,23 @@ +collectUserData($curl, $user); + $hubUser = new HubUser( + $user->userID, + $user->username, + $user->email, + $user->password, + $user->registrationDate, + $user->banned, + $user->banReason, + $user->banExpires, + $user->coverPhotoHash, + $user->coverPhotoExtension, + $user->rankID, + $user->rankTitle + ); - $bannedUserData = $this->collectBannedUserData($user); + $userData[] = $this->collectUserData($curl, $hubUser); + + $bannedUserData = $this->collectBannedUserData($hubUser); if ($bannedUserData) { $bannedUsers[] = $bannedUserData; } - $userRankData = $this->collectUserRankData($user); + $userRankData = $this->collectUserRankData($hubUser); if ($userRankData) { $userRanks[] = $userRankData; } @@ -328,16 +344,21 @@ class ImportHubDataJob implements ShouldBeUnique, ShouldQueue curl_close($curl); } - protected function collectUserData(CurlHandle $curl, object $user): array + /** + * Build an array of user data ready to be inserted into the local database. + * + * @return array + */ + protected function collectUserData(CurlHandle $curl, HubUser $hubUser): array { return [ - 'hub_id' => (int) $user->userID, - 'name' => $user->username, - 'email' => Str::lower($user->email), - 'password' => $this->cleanPasswordHash($user->password), - 'profile_photo_path' => $this->fetchUserAvatar($curl, $user), - 'cover_photo_path' => $this->fetchUserCoverPhoto($curl, $user), - 'created_at' => $this->cleanRegistrationDate($user->registrationDate), + 'hub_id' => (int) $hubUser->userID, + 'name' => $hubUser->username, + 'email' => Str::lower($hubUser->email), + 'password' => $this->cleanPasswordHash($hubUser->password), + 'profile_photo_path' => $this->fetchUserAvatar($curl, $hubUser), + 'cover_photo_path' => $this->fetchUserCoverPhoto($curl, $hubUser), + 'created_at' => $this->cleanRegistrationDate($hubUser->registrationDate), 'updated_at' => now('UTC')->toDateTimeString(), ]; } @@ -358,10 +379,10 @@ class ImportHubDataJob implements ShouldBeUnique, ShouldQueue /** * Fetch the user avatar from the Hub and store it anew. */ - protected function fetchUserAvatar(CurlHandle $curl, object $user): string + protected function fetchUserAvatar(CurlHandle $curl, HubUser $hubUser): string { // Fetch the user's avatar data from the temporary table. - $avatar = DB::table('temp_user_avatar')->where('userID', $user->userID)->first(); + $avatar = DB::table('temp_user_avatar')->where('userID', $hubUser->userID)->first(); if (! $avatar) { return ''; @@ -410,15 +431,15 @@ class ImportHubDataJob implements ShouldBeUnique, ShouldQueue /** * Fetch the user avatar from the Hub and store it anew. */ - protected function fetchUserCoverPhoto(CurlHandle $curl, object $user): string + protected function fetchUserCoverPhoto(CurlHandle $curl, HubUser $hubUser): string { - if (empty($user->coverPhotoHash) || empty($user->coverPhotoExtension)) { + if (empty($hubUser->coverPhotoHash) || empty($hubUser->coverPhotoExtension)) { return ''; } - $hashShort = substr($user->coverPhotoHash, 0, 2); - $fileName = $user->coverPhotoHash.'.'.$user->coverPhotoExtension; - $hubUrl = 'https://hub.sp-tarkov.com/images/coverPhotos/'.$hashShort.'/'.$user->userID.'-'.$fileName; + $hashShort = substr($hubUser->coverPhotoHash, 0, 2); + $fileName = $hubUser->coverPhotoHash.'.'.$hubUser->coverPhotoExtension; + $hubUrl = 'https://hub.sp-tarkov.com/images/coverPhotos/'.$hashShort.'/'.$hubUser->userID.'-'.$fileName; $relativePath = 'user-covers/'.$fileName; return $this->fetchAndStoreImage($curl, $hubUrl, $relativePath); @@ -441,14 +462,16 @@ class ImportHubDataJob implements ShouldBeUnique, ShouldQueue /** * Build an array of banned user data ready to be inserted into the local database. + * + * @return array|null */ - protected function collectBannedUserData($user): ?array + protected function collectBannedUserData(HubUser $hubUser): ?array { - if ($user->banned) { + if ($hubUser->banned) { return [ - 'hub_id' => (int) $user->userID, - 'comment' => $user->banReason ?? '', - 'expired_at' => $this->cleanUnbannedAtDate($user->banExpires), + 'hub_id' => (int) $hubUser->userID, + 'comment' => $hubUser->banReason ?? '', + 'expired_at' => $this->cleanUnbannedAtDate($hubUser->banExpires), ]; } @@ -495,12 +518,17 @@ class ImportHubDataJob implements ShouldBeUnique, ShouldQueue } } - protected function collectUserRankData($user): ?array + /** + * Build an array of user rank data ready to be inserted into the local database. + * + * @return array|null + */ + protected function collectUserRankData(HubUser $hubUser): ?array { - if ($user->rankID && $user->rankTitle) { + if ($hubUser->rankID && $hubUser->rankTitle) { return [ - 'hub_id' => (int) $user->userID, - 'title' => $user->rankTitle, + 'hub_id' => (int) $hubUser->userID, + 'title' => $hubUser->rankTitle, ]; } @@ -509,8 +537,10 @@ class ImportHubDataJob implements ShouldBeUnique, ShouldQueue /** * Insert or update the users in the local database. + * + * @param array> $usersData */ - protected function upsertUsers($usersData): void + protected function upsertUsers(array $usersData): void { if (! empty($usersData)) { DB::table('users')->upsert($usersData, ['hub_id'], [ @@ -525,8 +555,10 @@ class ImportHubDataJob implements ShouldBeUnique, ShouldQueue /** * Fetch the hub-banned users from the local database and ban them locally. + * + * @param array> $bannedUsers */ - protected function handleBannedUsers($bannedUsers): void + protected function handleBannedUsers(array $bannedUsers): void { foreach ($bannedUsers as $bannedUser) { $user = User::whereHubId($bannedUser['hub_id'])->first(); @@ -539,8 +571,10 @@ class ImportHubDataJob implements ShouldBeUnique, ShouldQueue /** * Fetch or create the user ranks in the local database and assign them to the users. + * + * @param array> $userRanks */ - protected function handleUserRoles($userRanks): void + protected function handleUserRoles(array $userRanks): void { foreach ($userRanks as $userRank) { $roleName = Str::ucfirst(Str::afterLast($userRank['title'], '.')); @@ -555,6 +589,8 @@ class ImportHubDataJob implements ShouldBeUnique, ShouldQueue /** * Build the user role data based on the role name. + * + * @return array */ protected function buildUserRoleData(string $name): array { @@ -672,6 +708,8 @@ class ImportHubDataJob implements ShouldBeUnique, ShouldQueue /** * Get the latest current version from the response data. + * + * @param array> $versions */ protected function getLatestVersion(array $versions): string { diff --git a/app/Livewire/GlobalSearch.php b/app/Livewire/GlobalSearch.php index 991f5d1..e8dfd39 100644 --- a/app/Livewire/GlobalSearch.php +++ b/app/Livewire/GlobalSearch.php @@ -4,6 +4,7 @@ namespace App\Livewire; use App\Models\Mod; use App\Models\User; +use Illuminate\Support\Collection; use Illuminate\Support\Str; use Illuminate\View\View; use Livewire\Component; @@ -34,16 +35,18 @@ class GlobalSearch extends Component /** * Execute the search against each of the searchable models. + * + * @return array>> */ protected function executeSearch(string $query): array { $query = Str::trim($query); $results = ['data' => [], 'total' => 0]; - if (Str::length($query)) { + if (Str::length($query) > 0) { $results['data'] = [ - 'user' => collect(User::search($query)->raw()['hits']), - 'mod' => collect(Mod::search($query)->raw()['hits']), + 'user' => $this->fetchUserResults($query), + 'mod' => $this->fetchModResults($query), ]; $results['total'] = $this->countTotalResults($results['data']); } @@ -55,11 +58,39 @@ class GlobalSearch extends Component } /** - * Count the total number of results across all models. + * Fetch the user search results. + * + * @return Collection> */ - protected function countTotalResults($results): int + protected function fetchUserResults(string $query): Collection { - return collect($results)->reduce(function ($carry, $result) { + /** @var array> $userHits */ + $userHits = User::search($query)->raw()['hits']; + + return collect($userHits); + } + + /** + * Fetch the mod search results. + * + * @return Collection> + */ + protected function fetchModResults(string $query): Collection + { + /** @var array> $modHits */ + $modHits = Mod::search($query)->raw()['hits']; + + return collect($modHits); + } + + /** + * Count the total number of results across all models. + * + * @param array>> $results + */ + protected function countTotalResults(array $results): int + { + return collect($results)->reduce(function (int $carry, Collection $result) { return $carry + $result->count(); }, 0); } diff --git a/app/Livewire/Mod/Index.php b/app/Livewire/Mod/Index.php index 69cabb4..34c27fc 100644 --- a/app/Livewire/Mod/Index.php +++ b/app/Livewire/Mod/Index.php @@ -30,6 +30,8 @@ class Index extends Component /** * The SPT versions filter value. + * + * @var array */ #[Url] public array $sptVersions = []; @@ -42,6 +44,8 @@ class Index extends Component /** * The available SPT versions. + * + * @var Collection */ public Collection $activeSptVersions; @@ -59,6 +63,8 @@ class Index extends Component /** * Get all patch versions of the latest minor SPT version. + * + * @return Collection */ public function getLatestMinorVersions(): Collection { diff --git a/app/Models/License.php b/app/Models/License.php index 7c3118b..00533bc 100644 --- a/app/Models/License.php +++ b/app/Models/License.php @@ -2,6 +2,7 @@ namespace App\Models; +use Database\Factories\LicenseFactory; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -9,10 +10,15 @@ use Illuminate\Database\Eloquent\SoftDeletes; class License extends Model { - use HasFactory, SoftDeletes; + /** @use HasFactory */ + use HasFactory; + + use SoftDeletes; /** * The relationship between a license and mod. + * + * @return HasMany */ public function mods(): HasMany { diff --git a/app/Models/Mod.php b/app/Models/Mod.php index 7d81d9d..3093205 100644 --- a/app/Models/Mod.php +++ b/app/Models/Mod.php @@ -5,6 +5,7 @@ namespace App\Models; use App\Http\Filters\V1\QueryFilter; use App\Models\Scopes\DisabledScope; use App\Models\Scopes\PublishedScope; +use Database\Factories\ModFactory; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -19,24 +20,20 @@ use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; use Laravel\Scout\Searchable; -/** - * @property int $id - * @property string $name - * @property string $slug - */ class Mod extends Model { - use HasFactory, Searchable, SoftDeletes; + /** @use HasFactory */ + use HasFactory; + + use Searchable; + use SoftDeletes; /** * Post boot method to configure the model. */ protected static function booted(): void { - // Apply the global scope to exclude disabled mods. static::addGlobalScope(new DisabledScope); - - // Apply the global scope to exclude non-published mods. static::addGlobalScope(new PublishedScope); } @@ -51,6 +48,8 @@ class Mod extends Model /** * The relationship between a mod and its users. + * + * @return BelongsToMany */ public function users(): BelongsToMany { @@ -59,6 +58,8 @@ class Mod extends Model /** * The relationship between a mod and its license. + * + * @return BelongsTo */ public function license(): BelongsTo { @@ -67,6 +68,8 @@ class Mod extends Model /** * The relationship between a mod and its versions. + * + * @return HasMany */ public function versions(): HasMany { @@ -78,6 +81,8 @@ class Mod extends Model /** * The relationship between a mod and its last updated version. + * + * @return HasOne */ public function lastUpdatedVersion(): HasOne { @@ -89,6 +94,8 @@ class Mod extends Model /** * The data that is searchable by Scout. + * + * @return array */ public function toSearchableArray(): array { @@ -102,13 +109,15 @@ class Mod extends Model 'created_at' => strtotime($this->created_at), 'updated_at' => strtotime($this->updated_at), 'published_at' => strtotime($this->published_at), - 'latestVersion' => $this->latestVersion()?->first()?->latestSptVersion()?->first()?->version_formatted, - 'latestVersionColorClass' => $this->latestVersion()?->first()?->latestSptVersion()?->first()?->color_class, + 'latestVersion' => $this->latestVersion()->first()->latestSptVersion()->first()->version_formatted, + 'latestVersionColorClass' => $this->latestVersion()->first()->latestSptVersion()->first()->color_class, ]; } /** * The relationship to the latest mod version, dictated by the mod version number. + * + * @return HasOne */ public function latestVersion(): HasOne { @@ -136,7 +145,7 @@ class Mod extends Model } // Fetch the latest version instance. - $latestVersion = $this->latestVersion()?->first(); + $latestVersion = $this->latestVersion()->first(); // Ensure the mod has a latest version. if (is_null($latestVersion)) { @@ -162,6 +171,8 @@ class Mod extends Model /** * Build the URL to the mod's thumbnail. + * + * @return Attribute */ public function thumbnailUrl(): Attribute { @@ -185,6 +196,10 @@ class Mod extends Model /** * Scope a query by applying QueryFilter filters. + * + * @param Builder $builder + * @param QueryFilter $filters + * @return Builder */ public function scopeFilter(Builder $builder, QueryFilter $filters): Builder { @@ -201,6 +216,8 @@ class Mod extends Model /** * The attributes that should be cast to native types. + * + * @return array */ protected function casts(): array { @@ -214,6 +231,8 @@ class Mod extends Model /** * Mutate the slug attribute to always be lower case on get and slugified on set. + * + * @return Attribute */ protected function slug(): Attribute { diff --git a/app/Models/ModDependency.php b/app/Models/ModDependency.php index 1a0ec75..1a65b71 100644 --- a/app/Models/ModDependency.php +++ b/app/Models/ModDependency.php @@ -2,24 +2,21 @@ namespace App\Models; +use Database\Factories\ModDependencyFactory; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; -/** - * @property int $id - * @property int $mod_version_id - * @property int $dependency_mod_id - * @property string $constraint - * @property int|null $resolved_version_id - */ class ModDependency extends Model { + /** @use HasFactory */ use HasFactory; /** * The relationship between the mod dependency and the mod version. + * + * @return BelongsTo */ public function modVersion(): BelongsTo { @@ -28,6 +25,8 @@ class ModDependency extends Model /** * The relationship between the mod dependency and the resolved dependency. + * + * @return HasMany */ public function resolvedDependencies(): HasMany { @@ -37,6 +36,8 @@ class ModDependency extends Model /** * The relationship between the mod dependency and the dependent mod. + * + * @return BelongsTo */ public function dependentMod(): BelongsTo { diff --git a/app/Models/ModResolvedDependency.php b/app/Models/ModResolvedDependency.php index ee6e747..41d47c8 100644 --- a/app/Models/ModResolvedDependency.php +++ b/app/Models/ModResolvedDependency.php @@ -9,6 +9,8 @@ class ModResolvedDependency extends Model { /** * The relationship between the resolved dependency and the mod version. + * + * @return BelongsTo */ public function modVersion(): BelongsTo { @@ -17,6 +19,8 @@ class ModResolvedDependency extends Model /** * The relationship between the resolved dependency and the dependency. + * + * @return BelongsTo */ public function dependency(): BelongsTo { @@ -25,6 +29,8 @@ class ModResolvedDependency extends Model /** * The relationship between the resolved dependency and the resolved mod version. + * + * @return BelongsTo */ public function resolvedModVersion(): BelongsTo { diff --git a/app/Models/ModVersion.php b/app/Models/ModVersion.php index 3221173..abef339 100644 --- a/app/Models/ModVersion.php +++ b/app/Models/ModVersion.php @@ -4,6 +4,7 @@ namespace App\Models; use App\Models\Scopes\DisabledScope; use App\Models\Scopes\PublishedScope; +use Database\Factories\ModFactory; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -11,14 +12,12 @@ use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; -/** - * @property int $id - * @property int $mod_id - * @property string $version - */ class ModVersion extends Model { - use HasFactory, SoftDeletes; + /** @use HasFactory */ + use HasFactory; + + use SoftDeletes; /** * Post boot method to configure the model. @@ -31,6 +30,8 @@ class ModVersion extends Model /** * The relationship between a mod version and mod. + * + * @return BelongsTo */ public function mod(): BelongsTo { @@ -39,6 +40,8 @@ class ModVersion extends Model /** * The relationship between a mod version and its dependencies. + * + * @return HasMany */ public function dependencies(): HasMany { @@ -48,6 +51,8 @@ class ModVersion extends Model /** * The relationship between a mod version and its resolved dependencies. + * + * @return BelongsToMany */ public function resolvedDependencies(): BelongsToMany { @@ -58,6 +63,8 @@ class ModVersion extends Model /** * The relationship between a mod version and its each of it's resolved dependencies' latest versions. + * + * @return BelongsToMany */ public function latestResolvedDependencies(): BelongsToMany { @@ -74,6 +81,8 @@ class ModVersion extends Model /** * The relationship between a mod version and each of its SPT versions' latest version. * Hint: Be sure to call `->first()` on this to get the actual instance. + * + * @return BelongsToMany */ public function latestSptVersion(): BelongsToMany { @@ -84,6 +93,8 @@ class ModVersion extends Model /** * The relationship between a mod version and its SPT versions. + * + * @return BelongsToMany */ public function sptVersions(): BelongsToMany { diff --git a/app/Models/Scopes/DisabledScope.php b/app/Models/Scopes/DisabledScope.php index 517d3ba..58a982e 100644 --- a/app/Models/Scopes/DisabledScope.php +++ b/app/Models/Scopes/DisabledScope.php @@ -6,10 +6,15 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Scope; +/** + * @template TModelClass of Model + */ class DisabledScope implements Scope { /** * Apply the scope to a given Eloquent query builder. + * + * @param Builder $builder */ public function apply(Builder $builder, Model $model): void { diff --git a/app/Models/Scopes/PublishedScope.php b/app/Models/Scopes/PublishedScope.php index a4576ed..ac8a2a9 100644 --- a/app/Models/Scopes/PublishedScope.php +++ b/app/Models/Scopes/PublishedScope.php @@ -6,10 +6,15 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Scope; +/** + * @template TModelClass of Model + */ class PublishedScope implements Scope { /** * Apply the scope to a given Eloquent query builder. + * + * @param Builder $builder */ public function apply(Builder $builder, Model $model): void { diff --git a/app/Models/SptVersion.php b/app/Models/SptVersion.php index 9d0aa0f..353e52a 100644 --- a/app/Models/SptVersion.php +++ b/app/Models/SptVersion.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Exceptions\InvalidVersionNumberException; +use Database\Factories\SptVersionFactory; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -12,10 +13,15 @@ use Illuminate\Support\Facades\Cache; class SptVersion extends Model { - use HasFactory, SoftDeletes; + /** @use HasFactory */ + use HasFactory; + + use SoftDeletes; /** * Get all versions for the last three minor versions. + * + * @return Collection */ public static function getVersionsForLastThreeMinors(): Collection { @@ -44,6 +50,8 @@ class SptVersion extends Model /** * Get the last three minor versions (major.minor format). + * + * @return array */ public static function getLastThreeMinorVersions(): array { @@ -54,7 +62,7 @@ class SptVersion extends Model ->orderByDesc('version_minor') ->limit(3) ->get() - ->map(function ($version) { + ->map(function (SptVersion $version) { return [ 'major' => (int) $version->version_major, 'minor' => (int) $version->version_minor, @@ -69,7 +77,7 @@ class SptVersion extends Model protected static function booted(): void { // Callback that runs before saving the model. - static::saving(function ($model) { + static::saving(function (SptVersion $model) { // Extract the version sections from the version string. if (! empty($model->version)) { // Default values in case there's an exception. @@ -95,6 +103,8 @@ class SptVersion extends Model /** * Extract the version sections from the version string. * + * @return array{major: int, minor: int, patch: int, pre_release: string} + * * @throws InvalidVersionNumberException */ public static function extractVersionSections(string $version): array @@ -131,6 +141,8 @@ class SptVersion extends Model /** * The relationship between an SPT version and mod version. + * + * @return BelongsToMany */ public function modVersions(): BelongsToMany { diff --git a/app/Models/User.php b/app/Models/User.php index 157248b..c5efa96 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -6,6 +6,7 @@ use App\Http\Filters\V1\QueryFilter; use App\Notifications\ResetPassword; use App\Notifications\VerifyEmail; use App\Traits\HasCoverPhoto; +use Database\Factories\UserFactory; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -25,7 +26,10 @@ class User extends Authenticatable implements MustVerifyEmail use Bannable; use HasApiTokens; use HasCoverPhoto; + + /** @use HasFactory */ use HasFactory; + use HasProfilePhoto; use Notifiable; use Searchable; @@ -44,6 +48,8 @@ class User extends Authenticatable implements MustVerifyEmail /** * The relationship between a user and their mods. + * + * @return BelongsToMany */ public function mods(): BelongsToMany { @@ -52,6 +58,8 @@ class User extends Authenticatable implements MustVerifyEmail /** * The data that is searchable by Scout. + * + * @return array */ public function toSearchableArray(): array { @@ -132,6 +140,8 @@ class User extends Authenticatable implements MustVerifyEmail /** * The relationship between a user and their role. + * + * @return BelongsTo */ public function role(): BelongsTo { @@ -140,6 +150,10 @@ class User extends Authenticatable implements MustVerifyEmail /** * Scope a query by applying QueryFilter filters. + * + * @param Builder $builder + * @param QueryFilter $filters + * @return Builder */ public function scopeFilter(Builder $builder, QueryFilter $filters): Builder { @@ -156,6 +170,8 @@ class User extends Authenticatable implements MustVerifyEmail /** * The attributes that should be cast to native types. + * + * @return array */ protected function casts(): array { From 6240c329977bcc493b8f691dd444db7a3385c093 Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Thu, 12 Sep 2024 15:26:20 -0400 Subject: [PATCH 046/130] mobile constraints WIP --- resources/views/livewire/user-stack.blade.php | 13 ++++++++++++- resources/views/livewire/user/profile.blade.php | 14 +++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/resources/views/livewire/user-stack.blade.php b/resources/views/livewire/user-stack.blade.php index fd3058e..a5d3e61 100644 --- a/resources/views/livewire/user-stack.blade.php +++ b/resources/views/livewire/user-stack.blade.php @@ -1,9 +1,17 @@ - -
+
+
+
+ +
+
+ +
+
{{-- Mobile Dropdown --}} -
+
+
+ +
+ + + + +
+ +
+
+
+

Introduction

+ +

This documentation aims to provide all the information you need to work with our API.

+ + +

Authenticating requests

+

To authenticate requests, include an Authorization header with the value "Bearer YOUR_API_KEY".

+

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

+

You can generate your own API token by logging into The Forge, clicking your profile picture, and clicking API Tokens.

+ +

Authentication

+ + + +

Login

+ +

+

+ +

Authenticates the user and returns a read-only API token. This API token can then be saved and used for future +requests that require authentication.

+ + +
Example request:
+ + +
+
const url = new URL(
+    "http://forge.test/api/login"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "email": "olson.margret@example.net",
+    "password": "j\/.0^{~eOsyx^",
+    "token_name": "Dynamic API Token"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'http://forge.test/api/login';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'email' => 'olson.margret@example.net',
+            'password' => 'j/.0^{~eOsyx^',
+            'token_name' => 'Dynamic API Token',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'http://forge.test/api/login'
+payload = {
+    "email": "olson.margret@example.net",
+    "password": "j\/.0^{~eOsyx^",
+    "token_name": "Dynamic API Token"
+}
+headers = {
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('POST', url, headers=headers, json=payload)
+response.json()
+ +
+ + +
+

Example response (200, Authenticated successfully):

+
+
+
+{
+    "message": "authenticated",
+    "data": {
+        "token": "YOUR_API_KEY"
+    },
+    "status": 200
+}
+ 
+
+

Example response (401, Invalid credentials):

+
+
+
+{
+    "message": "invalid credentials",
+    "status": 401
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/login +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ email   +string  +   + +
+

Must be a valid email address. Example: olson.margret@example.net

+
+
+ password   +string  +   + +
+

Example: j/.0^{~eOsyx^

+
+
+ token_name   +string  +optional   + +
+

The name of the API token. Example: Dynamic API Token

+
+
+ +

Response

+

Response Fields

+
+ token   +string  +   +
+

The newly created read-only API token to use for future authenticated requests.

+
+

Logout

+ +

+requires authentication +

+ +

Destroys the user's current API token, effectively logging them out.

+ + +
Example request:
+ + +
+
const url = new URL(
+    "http://forge.test/api/logout"
+);
+
+const headers = {
+    "Authorization": "Bearer YOUR_API_KEY",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'http://forge.test/api/logout';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer YOUR_API_KEY',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'http://forge.test/api/logout'
+headers = {
+  'Authorization': 'Bearer YOUR_API_KEY',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (200, Token destroyed successfully):

+
+
+
+{
+    "message": "success",
+    "status": 200
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/logout +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer YOUR_API_KEY

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Logout All

+ +

+requires authentication +

+ +

Destroys all the user's API tokens, effectively logging everyone out of the account.

+ + +
Example request:
+ + +
+
const url = new URL(
+    "http://forge.test/api/logout/all"
+);
+
+const headers = {
+    "Authorization": "Bearer YOUR_API_KEY",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'http://forge.test/api/logout/all';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer YOUR_API_KEY',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'http://forge.test/api/logout/all'
+headers = {
+  'Authorization': 'Bearer YOUR_API_KEY',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('DELETE', url, headers=headers)
+response.json()
+ +
+ + +
+

Example response (200, Tokens destroyed successfully):

+
+
+
+{
+    "message": "success",
+    "status": 200
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/logout/all +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer YOUR_API_KEY

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Mods

+ + + +

Get Mods

+ +

+requires authentication +

+ +

List, filter, and sort basic information about mods.

+ + +
Example request:
+ + +
+
const url = new URL(
+    "http://forge.test/api/v0/mods"
+);
+
+const params = {
+    "include": "users,versions,license",
+    "filter[id]": "5,10,15",
+    "filter[hub_id]": "20",
+    "filter[name]": "*SAIN*",
+    "filter[slug]": "*raid-times",
+    "filter[teaser]": "*weighted*random*times*",
+    "filter[source_code_link]": "*https*.net*",
+    "filter[featured]": "true",
+    "filter[contains_ads]": "true",
+    "filter[contains_ai_content]": "true",
+    "filter[created_at]": "2023-12-31,2024-12-31",
+    "filter[updated_at]": "2023-12-31,2024-12-31",
+    "filter[published_at]": "2023-12-31,2024-12-31",
+    "sort": "-featured,name",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer YOUR_API_KEY",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'http://forge.test/api/v0/mods';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer YOUR_API_KEY',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'include' => 'users,versions,license',
+            'filter[id]' => '5,10,15',
+            'filter[hub_id]' => '20',
+            'filter[name]' => '*SAIN*',
+            'filter[slug]' => '*raid-times',
+            'filter[teaser]' => '*weighted*random*times*',
+            'filter[source_code_link]' => '*https*.net*',
+            'filter[featured]' => 'true',
+            'filter[contains_ads]' => 'true',
+            'filter[contains_ai_content]' => 'true',
+            'filter[created_at]' => '2023-12-31,2024-12-31',
+            'filter[updated_at]' => '2023-12-31,2024-12-31',
+            'filter[published_at]' => '2023-12-31,2024-12-31',
+            'sort' => '-featured,name',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'http://forge.test/api/v0/mods'
+params = {
+  'include': 'users,versions,license',
+  'filter[id]': '5,10,15',
+  'filter[hub_id]': '20',
+  'filter[name]': '*SAIN*',
+  'filter[slug]': '*raid-times',
+  'filter[teaser]': '*weighted*random*times*',
+  'filter[source_code_link]': '*https*.net*',
+  'filter[featured]': 'true',
+  'filter[contains_ads]': 'true',
+  'filter[contains_ai_content]': 'true',
+  'filter[created_at]': '2023-12-31,2024-12-31',
+  'filter[updated_at]': '2023-12-31,2024-12-31',
+  'filter[published_at]': '2023-12-31,2024-12-31',
+  'sort': '-featured,name',
+}
+headers = {
+  'Authorization': 'Bearer YOUR_API_KEY',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (200):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+access-control-allow-origin: *
+ 
+
+{
+    "data": [
+        {
+            "type": "mod",
+            "id": 1578,
+            "attributes": {
+                "hub_id": 2084,
+                "name": "Assort editor",
+                "slug": "assort-editor",
+                "teaser": "A webtool to edit your existing trader assort prices, for balancing reasons.\r\n\r\n2 boxes of matches a bit too cheap for that fully kitted MDR762, but you like the mod otherwise? This can fix that in an easy to understand way. No fiddling with .json files!",
+                "license_id": 11,
+                "source_code_link": "https://dev.sp-tarkov.com/archon0ne/Assort_editor",
+                "featured": true,
+                "contains_ai_content": true,
+                "contains_ads": false,
+                "created_at": "2024-07-03T18:05:35.000000Z",
+                "updated_at": "2024-09-15T18:48:13.000000Z",
+                "published_at": "2024-07-03 18:05:35"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 28317
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/28317/archon0ne"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7745
+                        },
+                        "links": {
+                            "self": "https://dev.sp-tarkov.com/archon0ne/Assort_editor/releases/download/1.1.0/Assort_Editor.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7739
+                        },
+                        "links": {
+                            "self": "https://dev.sp-tarkov.com/archon0ne/Assort_editor/archive/main.zip"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 11
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 28317,
+                    "attributes": {
+                        "name": "archon0ne",
+                        "user_role_id": null,
+                        "created_at": "2023-03-09T14:05:22.000000Z",
+                        "updated_at": "2024-09-15T18:43:50.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/28317/archon0ne"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 11,
+                    "attributes": {
+                        "name": "MIT License",
+                        "link": "https://choosealicense.com/licenses/mit/",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7745,
+                    "attributes": {
+                        "hub_id": 10456,
+                        "mod_id": 1578,
+                        "version": "1.1.0",
+                        "link": "https://dev.sp-tarkov.com/archon0ne/Assort_editor/releases/download/1.1.0/Assort_Editor.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/url/c59d29876cb827c82bcc93082a7b71407d42a76d2e7509dd1710b7f913773253?nocache=1",
+                        "downloads": 1535,
+                        "created_at": "2024-07-04T09:59:54.000000Z",
+                        "updated_at": "2024-07-04T09:59:54.000000Z",
+                        "published_at": "2024-07-04 09:59:54"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7739,
+                    "attributes": {
+                        "hub_id": 10450,
+                        "mod_id": 1578,
+                        "version": "1.0.0",
+                        "link": "https://dev.sp-tarkov.com/archon0ne/Assort_editor/archive/main.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/url/c59d29876cb827c82bcc93082a7b71407d42a76d2e7509dd1710b7f913773253?nocache=1",
+                        "downloads": 110,
+                        "created_at": "2024-07-03T18:05:35.000000Z",
+                        "updated_at": "2024-07-03T18:05:35.000000Z",
+                        "published_at": "2024-07-03 18:05:35"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/1578/assort-editor"
+            }
+        },
+        {
+            "type": "mod",
+            "id": 1525,
+            "attributes": {
+                "hub_id": 2027,
+                "name": "AutoDeposit",
+                "slug": "autodeposit",
+                "teaser": "Transfer items into stash containers with matching items, inspired by Terraria's Quick Stack.",
+                "license_id": 11,
+                "source_code_link": "https://github.com/tyfon7/AutoDeposit",
+                "featured": true,
+                "contains_ai_content": false,
+                "contains_ads": false,
+                "created_at": "2024-06-07T08:03:44.000000Z",
+                "updated_at": "2024-09-15T18:48:13.000000Z",
+                "published_at": "2024-06-07 08:03:44"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 46006
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/46006/tyfon"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7812
+                        },
+                        "links": {
+                            "self": "https://github.com/tyfon7/AutoDeposit/releases/download/v2.0.0/Tyfon-AutoDeposit-2.0.0.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7751
+                        },
+                        "links": {
+                            "self": "https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.3/Tyfon-AutoDeposit-1.0.3.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7549
+                        },
+                        "links": {
+                            "self": "https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.2/Tyfon-AutoDeposit-1.0.2.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7518
+                        },
+                        "links": {
+                            "self": "https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.1/Tyfon-AutoDeposit-1.0.1.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7513
+                        },
+                        "links": {
+                            "self": "https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.0/Tyfon-AutoDeposit-1.0.0.7z"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 11
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 46006,
+                    "attributes": {
+                        "name": "Tyfon",
+                        "user_role_id": null,
+                        "created_at": "2024-02-27T23:21:18.000000Z",
+                        "updated_at": "2024-09-15T18:44:59.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/46006/tyfon"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 11,
+                    "attributes": {
+                        "name": "MIT License",
+                        "link": "https://choosealicense.com/licenses/mit/",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7812,
+                    "attributes": {
+                        "hub_id": 10530,
+                        "mod_id": 1525,
+                        "version": "2.0.0",
+                        "link": "https://github.com/tyfon7/AutoDeposit/releases/download/v2.0.0/Tyfon-AutoDeposit-2.0.0.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6",
+                        "downloads": 12691,
+                        "created_at": "2024-07-07T05:11:46.000000Z",
+                        "updated_at": "2024-07-07T05:11:46.000000Z",
+                        "published_at": "2024-07-07 05:11:46"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7751,
+                    "attributes": {
+                        "hub_id": 10465,
+                        "mod_id": 1525,
+                        "version": "1.0.3",
+                        "link": "https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.3/Tyfon-AutoDeposit-1.0.3.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6",
+                        "downloads": 599,
+                        "created_at": "2024-07-05T21:51:16.000000Z",
+                        "updated_at": "2024-07-05T21:51:16.000000Z",
+                        "published_at": "2024-07-05 21:51:16"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7549,
+                    "attributes": {
+                        "hub_id": 10238,
+                        "mod_id": 1525,
+                        "version": "1.0.2",
+                        "link": "https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.2/Tyfon-AutoDeposit-1.0.2.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6",
+                        "downloads": 3723,
+                        "created_at": "2024-06-09T23:09:06.000000Z",
+                        "updated_at": "2024-06-09T23:09:06.000000Z",
+                        "published_at": "2024-06-09 23:09:06"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7518,
+                    "attributes": {
+                        "hub_id": 10203,
+                        "mod_id": 1525,
+                        "version": "1.0.1",
+                        "link": "https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.1/Tyfon-AutoDeposit-1.0.1.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6",
+                        "downloads": 978,
+                        "created_at": "2024-06-07T19:45:09.000000Z",
+                        "updated_at": "2024-06-07T19:45:09.000000Z",
+                        "published_at": "2024-06-07 19:45:09"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7513,
+                    "attributes": {
+                        "hub_id": 10197,
+                        "mod_id": 1525,
+                        "version": "1.0.0",
+                        "link": "https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.0/Tyfon-AutoDeposit-1.0.0.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6",
+                        "downloads": 477,
+                        "created_at": "2024-06-07T08:03:44.000000Z",
+                        "updated_at": "2024-06-07T08:03:44.000000Z",
+                        "published_at": "2024-06-07 08:03:44"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/1525/autodeposit"
+            }
+        },
+        {
+            "type": "mod",
+            "id": 966,
+            "attributes": {
+                "hub_id": 1303,
+                "name": "Borkel's Realistic Night Vision Goggles (NVGs and T-7)",
+                "slug": "borkels-realistic-night-vision-goggles-nvgs-and-t-7",
+                "teaser": "Now with new realistic NVG masks and natural light outside the tubes. I looked at real life NVGs and I tried to imitate them ingame. Customizable ingame (colors and everything).",
+                "license_id": 5,
+                "source_code_link": "https://github.com/Borkel/RealisticNVG-client-2/tree/master",
+                "featured": true,
+                "contains_ai_content": false,
+                "contains_ads": false,
+                "created_at": "2023-06-30T20:48:45.000000Z",
+                "updated_at": "2024-09-15T18:48:12.000000Z",
+                "published_at": "2023-06-30 20:48:45"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 28437
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/28437/borkel"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6345
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1hU4OrrTuvTPvVawG0y-XYRHHBDudGQMi/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6341
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/172O9iwpnGwAhvd8_TEboHq5FZT1z8jAg/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6103
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1uj7w_y-G07ZgRH5zCiWmfx3CpYo22h5U/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5937
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1BLekIeILG3JIrmurMGeDIY07y2-QCL2d/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5909
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/17o_qSxFg7cX0eCAWBFJdGsw2N-F9MNeq/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5877
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1wlOwE3_yn5OIz3NcInC3mHmXx2t7G3_2/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5803
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/15ummKgeDafpZSoxBMxSjKEyZj3TNgKF7/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5794
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/16ndU_sSA8tY2QSNL-WDOeHFEaWVbIzDF/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5783
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/18ehvL906RTjOTCyPLXzFdSIyTJ9MzI0P/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5648
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1suGNK4UFWQueyzU_LSgSd-Cgr8FK5wLs/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5508
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1mkkiFekuoQLB4-SjsKqAnHE6hCGirHIS/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5324
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1jTfyoj2s-V97rTob02vO46h_uSU2QSHJ/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5263
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1aS0DUizGuZ0aZ_Bjrswx34o4Vtl6Zt98/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5094
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1P_9nkNcOB_AR9PrsyGBGX1cyVLn2Oixg/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4881
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1Rey1qKs76Svxhx8zAIHEcISDO5Yd3qz2/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4731
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1sv1Sw5ctGugA3pYW0WJSi8jAJtRzne-F/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4687
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1GsL5eWaRmkSpdCg43I46CP5HONeaF8uA/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6352
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1nWR9yC1YBu7oirxqZtus7MVwU7JV_OhG/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6354
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1WVEWhH4d77lo81OhIM4y54OMNPyDUVfi/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6356
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1LiYK6I4PbbLl6tnPQFWKSKfcbvc5dRYk/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6358
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/15UJK7kD_DpFhcjsTgl3L-zcM6QoRZhWn/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6365
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1dHLlSh6WLFxPfzMEgxVpVxum2dEZm3qr/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6374
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/11FwY8gWE1ZU0Vh0rvItR7OLn0Jx9bY-W/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6384
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1KDTMPJL-oh9M_FafQZ5cStzEeg8-YCOB/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6398
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1VPMh6KxOJppiiO-jHhNb6ZpWzCI8AnTo/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6408
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1xWOgtPdFuFRjd4RdIuLYhH8Qyw382nN_/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6421
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1mZMD1GS879djCNtC-BypCT0DWvzTI_ZZ/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6641
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1vvuCBVp90xsmst5jGqBvpsfW8I6h9anz/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6728
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1v-pFeMqGaDfovxNtef2NzG0G2Z9I52Cz/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7113
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1OWl4GXbaw-Zg3WK0llroMIxBPILKrWst/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7167
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1d-ujV0Y3exFh1YDLkkRu23WDcMdO_O_0/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7180
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1-OBJbhDEEwdhBDEj0hYpShioxbGYYaK4/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7623
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1kH6p9SW6DSTWp4KBa_3zGkcIOPVABco_/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8065
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1Lc_Ky0BK0U2bC6flMXnau5Zy8lgr76Ax/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8209
+                        },
+                        "links": {
+                            "self": "https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.6/BRNVG-1.5.6.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8538
+                        },
+                        "links": {
+                            "self": "https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.7/BRNVG-1.5.7.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8672
+                        },
+                        "links": {
+                            "self": "https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.8/BRNVG-1.5.8.zip"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 5
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 28437,
+                    "attributes": {
+                        "name": "Borkel",
+                        "user_role_id": null,
+                        "created_at": "2023-03-10T18:10:13.000000Z",
+                        "updated_at": "2024-09-15T18:43:51.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/28437/borkel"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 5,
+                    "attributes": {
+                        "name": "Creative Commons BY-NC-SA 3.0",
+                        "link": "http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6345,
+                    "attributes": {
+                        "hub_id": 8824,
+                        "mod_id": 966,
+                        "version": "1.3.1",
+                        "link": "https://drive.google.com/file/d/1hU4OrrTuvTPvVawG0y-XYRHHBDudGQMi/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 569,
+                        "created_at": "2024-02-03T17:57:20.000000Z",
+                        "updated_at": "2024-02-03T17:57:20.000000Z",
+                        "published_at": "2024-02-03 17:57:20"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6341,
+                    "attributes": {
+                        "hub_id": 8820,
+                        "mod_id": 966,
+                        "version": "1.3.0",
+                        "link": "https://drive.google.com/file/d/172O9iwpnGwAhvd8_TEboHq5FZT1z8jAg/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 354,
+                        "created_at": "2024-02-01T23:28:44.000000Z",
+                        "updated_at": "2024-02-01T23:28:44.000000Z",
+                        "published_at": "2024-02-01 23:28:44"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6103,
+                    "attributes": {
+                        "hub_id": 8560,
+                        "mod_id": 966,
+                        "version": "1.2.3",
+                        "link": "https://drive.google.com/file/d/1uj7w_y-G07ZgRH5zCiWmfx3CpYo22h5U/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 2435,
+                        "created_at": "2023-12-26T00:30:08.000000Z",
+                        "updated_at": "2023-12-26T00:30:08.000000Z",
+                        "published_at": "2023-12-26 00:30:08"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5937,
+                    "attributes": {
+                        "hub_id": 8367,
+                        "mod_id": 966,
+                        "version": "1.2.2",
+                        "link": "https://drive.google.com/file/d/1BLekIeILG3JIrmurMGeDIY07y2-QCL2d/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 2121,
+                        "created_at": "2023-11-27T18:42:10.000000Z",
+                        "updated_at": "2023-11-27T18:42:10.000000Z",
+                        "published_at": "2023-11-27 18:42:10"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5909,
+                    "attributes": {
+                        "hub_id": 8329,
+                        "mod_id": 966,
+                        "version": "1.2.1",
+                        "link": "https://drive.google.com/file/d/17o_qSxFg7cX0eCAWBFJdGsw2N-F9MNeq/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 720,
+                        "created_at": "2023-11-21T21:08:32.000000Z",
+                        "updated_at": "2023-11-21T21:08:32.000000Z",
+                        "published_at": "2023-11-21 21:08:32"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5877,
+                    "attributes": {
+                        "hub_id": 8289,
+                        "mod_id": 966,
+                        "version": "1.2.0",
+                        "link": "https://drive.google.com/file/d/1wlOwE3_yn5OIz3NcInC3mHmXx2t7G3_2/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 500,
+                        "created_at": "2023-11-18T20:36:57.000000Z",
+                        "updated_at": "2023-11-18T20:36:57.000000Z",
+                        "published_at": "2023-11-18 20:36:57"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5803,
+                    "attributes": {
+                        "hub_id": 8178,
+                        "mod_id": 966,
+                        "version": "1.1.9",
+                        "link": "https://drive.google.com/file/d/15ummKgeDafpZSoxBMxSjKEyZj3TNgKF7/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 1096,
+                        "created_at": "2023-11-07T23:45:20.000000Z",
+                        "updated_at": "2023-11-07T23:45:20.000000Z",
+                        "published_at": "2023-11-07 23:45:20"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5794,
+                    "attributes": {
+                        "hub_id": 8165,
+                        "mod_id": 966,
+                        "version": "1.1.8",
+                        "link": "https://drive.google.com/file/d/16ndU_sSA8tY2QSNL-WDOeHFEaWVbIzDF/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 203,
+                        "created_at": "2023-11-07T02:59:24.000000Z",
+                        "updated_at": "2023-11-07T02:59:24.000000Z",
+                        "published_at": "2023-11-07 02:59:24"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5783,
+                    "attributes": {
+                        "hub_id": 8153,
+                        "mod_id": 966,
+                        "version": "1.1.7",
+                        "link": "https://drive.google.com/file/d/18ehvL906RTjOTCyPLXzFdSIyTJ9MzI0P/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 427,
+                        "created_at": "2023-11-05T12:06:01.000000Z",
+                        "updated_at": "2023-11-05T12:06:01.000000Z",
+                        "published_at": "2023-11-05 12:06:01"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5648,
+                    "attributes": {
+                        "hub_id": 7996,
+                        "mod_id": 966,
+                        "version": "1.1.6",
+                        "link": "https://drive.google.com/file/d/1suGNK4UFWQueyzU_LSgSd-Cgr8FK5wLs/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 1217,
+                        "created_at": "2023-10-22T12:15:53.000000Z",
+                        "updated_at": "2023-10-22T12:15:53.000000Z",
+                        "published_at": "2023-10-22 12:15:53"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5508,
+                    "attributes": {
+                        "hub_id": 7818,
+                        "mod_id": 966,
+                        "version": "1.1.5",
+                        "link": "https://drive.google.com/file/d/1mkkiFekuoQLB4-SjsKqAnHE6hCGirHIS/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 1016,
+                        "created_at": "2023-10-14T23:18:46.000000Z",
+                        "updated_at": "2023-10-14T23:18:46.000000Z",
+                        "published_at": "2023-10-14 23:18:46"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5324,
+                    "attributes": {
+                        "hub_id": 7587,
+                        "mod_id": 966,
+                        "version": "1.1.4",
+                        "link": "https://drive.google.com/file/d/1jTfyoj2s-V97rTob02vO46h_uSU2QSHJ/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 1139,
+                        "created_at": "2023-10-08T22:38:49.000000Z",
+                        "updated_at": "2023-10-08T22:38:49.000000Z",
+                        "published_at": "2023-10-08 22:38:49"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5263,
+                    "attributes": {
+                        "hub_id": 7507,
+                        "mod_id": 966,
+                        "version": "1.1.3",
+                        "link": "https://drive.google.com/file/d/1aS0DUizGuZ0aZ_Bjrswx34o4Vtl6Zt98/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 284,
+                        "created_at": "2023-10-03T00:16:12.000000Z",
+                        "updated_at": "2023-10-03T00:16:12.000000Z",
+                        "published_at": "2023-10-03 00:16:12"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5094,
+                    "attributes": {
+                        "hub_id": 7276,
+                        "mod_id": 966,
+                        "version": "1.1.2",
+                        "link": "https://drive.google.com/file/d/1P_9nkNcOB_AR9PrsyGBGX1cyVLn2Oixg/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 898,
+                        "created_at": "2023-08-30T16:19:32.000000Z",
+                        "updated_at": "2023-08-30T16:19:32.000000Z",
+                        "published_at": "2023-08-30 16:19:32"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4881,
+                    "attributes": {
+                        "hub_id": 6973,
+                        "mod_id": 966,
+                        "version": "1.1.1",
+                        "link": "https://drive.google.com/file/d/1Rey1qKs76Svxhx8zAIHEcISDO5Yd3qz2/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 874,
+                        "created_at": "2023-08-03T19:49:47.000000Z",
+                        "updated_at": "2023-08-03T19:49:47.000000Z",
+                        "published_at": "2023-08-03 19:49:47"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4731,
+                    "attributes": {
+                        "hub_id": 6738,
+                        "mod_id": 966,
+                        "version": "1.1.0",
+                        "link": "https://drive.google.com/file/d/1sv1Sw5ctGugA3pYW0WJSi8jAJtRzne-F/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 829,
+                        "created_at": "2023-07-13T11:58:37.000000Z",
+                        "updated_at": "2023-07-13T11:58:37.000000Z",
+                        "published_at": "2023-07-13 11:58:37"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4687,
+                    "attributes": {
+                        "hub_id": 6671,
+                        "mod_id": 966,
+                        "version": "1.0.0",
+                        "link": "https://drive.google.com/file/d/1GsL5eWaRmkSpdCg43I46CP5HONeaF8uA/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 788,
+                        "created_at": "2023-06-30T20:48:45.000000Z",
+                        "updated_at": "2023-06-30T20:48:45.000000Z",
+                        "published_at": "2023-06-30 20:48:45"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6352,
+                    "attributes": {
+                        "hub_id": 8833,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1nWR9yC1YBu7oirxqZtus7MVwU7JV_OhG/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 496,
+                        "created_at": "2024-02-07T00:10:32.000000Z",
+                        "updated_at": "2024-02-07T00:10:32.000000Z",
+                        "published_at": "2024-02-07 00:10:32"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6354,
+                    "attributes": {
+                        "hub_id": 8838,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1WVEWhH4d77lo81OhIM4y54OMNPyDUVfi/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 304,
+                        "created_at": "2024-02-08T17:15:44.000000Z",
+                        "updated_at": "2024-02-08T17:15:44.000000Z",
+                        "published_at": "2024-02-08 17:15:44"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6356,
+                    "attributes": {
+                        "hub_id": 8840,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1LiYK6I4PbbLl6tnPQFWKSKfcbvc5dRYk/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 403,
+                        "created_at": "2024-02-09T16:24:14.000000Z",
+                        "updated_at": "2024-02-09T16:24:14.000000Z",
+                        "published_at": "2024-02-09 16:24:14"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6358,
+                    "attributes": {
+                        "hub_id": 8843,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/15UJK7kD_DpFhcjsTgl3L-zcM6QoRZhWn/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 725,
+                        "created_at": "2024-02-10T22:56:33.000000Z",
+                        "updated_at": "2024-02-10T22:56:33.000000Z",
+                        "published_at": "2024-02-10 22:56:33"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6365,
+                    "attributes": {
+                        "hub_id": 8855,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1dHLlSh6WLFxPfzMEgxVpVxum2dEZm3qr/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 723,
+                        "created_at": "2024-02-14T16:00:54.000000Z",
+                        "updated_at": "2024-02-14T16:00:54.000000Z",
+                        "published_at": "2024-02-14 16:00:54"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6374,
+                    "attributes": {
+                        "hub_id": 8867,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/11FwY8gWE1ZU0Vh0rvItR7OLn0Jx9bY-W/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 1154,
+                        "created_at": "2024-02-17T17:52:12.000000Z",
+                        "updated_at": "2024-02-17T17:52:12.000000Z",
+                        "published_at": "2024-02-17 17:52:12"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6384,
+                    "attributes": {
+                        "hub_id": 8877,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1KDTMPJL-oh9M_FafQZ5cStzEeg8-YCOB/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 1376,
+                        "created_at": "2024-02-22T23:44:46.000000Z",
+                        "updated_at": "2024-02-22T23:44:46.000000Z",
+                        "published_at": "2024-02-22 23:44:46"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6398,
+                    "attributes": {
+                        "hub_id": 8897,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1VPMh6KxOJppiiO-jHhNb6ZpWzCI8AnTo/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 588,
+                        "created_at": "2024-03-01T21:51:43.000000Z",
+                        "updated_at": "2024-03-01T21:51:43.000000Z",
+                        "published_at": "2024-03-01 21:51:43"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6408,
+                    "attributes": {
+                        "hub_id": 8908,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1xWOgtPdFuFRjd4RdIuLYhH8Qyw382nN_/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 850,
+                        "created_at": "2024-03-03T22:46:14.000000Z",
+                        "updated_at": "2024-03-03T22:46:14.000000Z",
+                        "published_at": "2024-03-03 22:46:14"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6421,
+                    "attributes": {
+                        "hub_id": 8921,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1mZMD1GS879djCNtC-BypCT0DWvzTI_ZZ/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 3498,
+                        "created_at": "2024-03-08T19:39:00.000000Z",
+                        "updated_at": "2024-03-08T19:39:00.000000Z",
+                        "published_at": "2024-03-08 19:39:00"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6641,
+                    "attributes": {
+                        "hub_id": 9191,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1vvuCBVp90xsmst5jGqBvpsfW8I6h9anz/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 3607,
+                        "created_at": "2024-04-04T16:49:19.000000Z",
+                        "updated_at": "2024-04-04T16:49:19.000000Z",
+                        "published_at": "2024-04-04 16:49:19"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6728,
+                    "attributes": {
+                        "hub_id": 9298,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1v-pFeMqGaDfovxNtef2NzG0G2Z9I52Cz/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 14482,
+                        "created_at": "2024-04-07T23:44:28.000000Z",
+                        "updated_at": "2024-04-07T23:44:28.000000Z",
+                        "published_at": "2024-04-07 23:44:28"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7113,
+                    "attributes": {
+                        "hub_id": 9744,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1OWl4GXbaw-Zg3WK0llroMIxBPILKrWst/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 3679,
+                        "created_at": "2024-05-03T19:19:06.000000Z",
+                        "updated_at": "2024-05-03T19:19:06.000000Z",
+                        "published_at": "2024-05-03 19:19:06"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7167,
+                    "attributes": {
+                        "hub_id": 9803,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1d-ujV0Y3exFh1YDLkkRu23WDcMdO_O_0/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 1290,
+                        "created_at": "2024-05-07T16:54:50.000000Z",
+                        "updated_at": "2024-05-07T16:54:50.000000Z",
+                        "published_at": "2024-05-07 16:54:50"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7180,
+                    "attributes": {
+                        "hub_id": 9818,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1-OBJbhDEEwdhBDEj0hYpShioxbGYYaK4/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 15804,
+                        "created_at": "2024-05-08T18:11:20.000000Z",
+                        "updated_at": "2024-05-08T18:11:20.000000Z",
+                        "published_at": "2024-05-08 18:11:20"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7623,
+                    "attributes": {
+                        "hub_id": 10324,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1kH6p9SW6DSTWp4KBa_3zGkcIOPVABco_/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 7086,
+                        "created_at": "2024-06-19T17:57:31.000000Z",
+                        "updated_at": "2024-06-19T17:57:31.000000Z",
+                        "published_at": "2024-06-19 17:57:31"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8065,
+                    "attributes": {
+                        "hub_id": 10810,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://drive.google.com/file/d/1Lc_Ky0BK0U2bC6flMXnau5Zy8lgr76Ax/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 1284,
+                        "created_at": "2024-07-13T12:44:58.000000Z",
+                        "updated_at": "2024-07-13T12:44:58.000000Z",
+                        "published_at": "2024-07-13 12:44:58"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8209,
+                    "attributes": {
+                        "hub_id": 10970,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.6/BRNVG-1.5.6.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 14350,
+                        "created_at": "2024-07-20T15:04:51.000000Z",
+                        "updated_at": "2024-07-20T15:04:51.000000Z",
+                        "published_at": "2024-07-20 15:04:51"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8538,
+                    "attributes": {
+                        "hub_id": 11340,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.7/BRNVG-1.5.7.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 4293,
+                        "created_at": "2024-08-14T14:04:26.000000Z",
+                        "updated_at": "2024-08-14T14:04:26.000000Z",
+                        "published_at": "2024-08-14 14:04:26"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8672,
+                    "attributes": {
+                        "hub_id": 11489,
+                        "mod_id": 966,
+                        "version": "0.0.0",
+                        "link": "https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.8/BRNVG-1.5.8.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1",
+                        "downloads": 7425,
+                        "created_at": "2024-08-24T21:52:19.000000Z",
+                        "updated_at": "2024-08-24T21:52:19.000000Z",
+                        "published_at": "2024-08-24 21:52:19"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/966/borkels-realistic-night-vision-goggles-nvgs-and-t-7"
+            }
+        },
+        {
+            "type": "mod",
+            "id": 1682,
+            "attributes": {
+                "hub_id": 2195,
+                "name": "Bullet Crack Fix",
+                "slug": "bullet-crack-fix",
+                "teaser": "Stop bullet cracks when they shouldn't happen.",
+                "license_id": 11,
+                "source_code_link": "https://github.com/Solarint/BulletCrackFix",
+                "featured": true,
+                "contains_ai_content": false,
+                "contains_ads": false,
+                "created_at": "2024-07-30T06:17:58.000000Z",
+                "updated_at": "2024-09-15T18:48:13.000000Z",
+                "published_at": "2024-07-30 06:17:58"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 27464
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/27464/solarint"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8361
+                        },
+                        "links": {
+                            "self": "https://github.com/Solarint/BulletCrackFix/releases/download/v1.0/Solarint-BulletCrackFix-1.0-Release.7z"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 11
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 27464,
+                    "attributes": {
+                        "name": "Solarint",
+                        "user_role_id": null,
+                        "created_at": "2023-02-23T17:11:59.000000Z",
+                        "updated_at": "2024-09-15T18:43:47.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/27464/solarint"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 11,
+                    "attributes": {
+                        "name": "MIT License",
+                        "link": "https://choosealicense.com/licenses/mit/",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8361,
+                    "attributes": {
+                        "hub_id": 11133,
+                        "mod_id": 1682,
+                        "version": "1.0.0",
+                        "link": "https://github.com/Solarint/BulletCrackFix/releases/download/v1.0/Solarint-BulletCrackFix-1.0-Release.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/52d41118bd8e91273567b0a0c3dcc77903e8b7dd1d3669f99480ff9313d95042?nocache=1",
+                        "downloads": 8612,
+                        "created_at": "2024-07-30T06:17:58.000000Z",
+                        "updated_at": "2024-07-30T06:17:58.000000Z",
+                        "published_at": "2024-07-30 06:17:58"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/1682/bullet-crack-fix"
+            }
+        },
+        {
+            "type": "mod",
+            "id": 1484,
+            "attributes": {
+                "hub_id": 1981,
+                "name": "Dynamic Maps",
+                "slug": "dynamic-maps",
+                "teaser": "Replaces the in-game map screen with actually useful maps with dynamic information!",
+                "license_id": 11,
+                "source_code_link": "https://github.com/mpstark/SPT-DynamicMaps",
+                "featured": true,
+                "contains_ai_content": false,
+                "contains_ads": false,
+                "created_at": "2024-05-23T02:35:55.000000Z",
+                "updated_at": "2024-09-15T18:48:13.000000Z",
+                "published_at": "2024-05-23 02:35:55"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 27606
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/27606/drakiaxyz"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 33964
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/33964/dirtbikercj"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 47480
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/47480/mpstark"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8444
+                        },
+                        "links": {
+                            "self": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.4/DynamicMaps-0.3.4-b6d8bf85.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8144
+                        },
+                        "links": {
+                            "self": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.3/DynamicMaps-0.3.3-111ea758.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7825
+                        },
+                        "links": {
+                            "self": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.2/DynamicMaps-0.3.2-55669364.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7476
+                        },
+                        "links": {
+                            "self": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1/DynamicMaps-0.3.1-dcbaf9ea.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7432
+                        },
+                        "links": {
+                            "self": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.0/DynamicMaps-0.3.0-f8d4ed27.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7410
+                        },
+                        "links": {
+                            "self": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.2.1/DynamicMaps-0.2.1-01ec57c1.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7402
+                        },
+                        "links": {
+                            "self": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.2.0/DynamicMaps-0.2.0-b76afa42.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7369
+                        },
+                        "links": {
+                            "self": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.3/DynamicMaps-0.1.3-34486712.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7365
+                        },
+                        "links": {
+                            "self": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.2/DynamicMaps-0.1.2-bf85c0ef.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7364
+                        },
+                        "links": {
+                            "self": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.1/DynamicMaps-0.1.1-0a158297.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7360
+                        },
+                        "links": {
+                            "self": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.0/DynamicMaps-0.1.0-c581f5fb.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7477
+                        },
+                        "links": {
+                            "self": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.1/DynamicMaps-0.3.1.1-30462ee8.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7484
+                        },
+                        "links": {
+                            "self": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.2/DynamicMaps-0.3.1.2-e1cc3770.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7511
+                        },
+                        "links": {
+                            "self": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.3/DynamicMaps-0.3.1.3-c079a1fa.zip"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 11
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 27606,
+                    "attributes": {
+                        "name": "DrakiaXYZ",
+                        "user_role_id": 4,
+                        "created_at": "2023-02-26T18:51:50.000000Z",
+                        "updated_at": "2024-09-15T18:43:48.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": 4
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/27606/drakiaxyz"
+                    }
+                },
+                {
+                    "type": "user",
+                    "id": 33964,
+                    "attributes": {
+                        "name": "Dirtbikercj",
+                        "user_role_id": null,
+                        "created_at": "2023-07-14T19:01:21.000000Z",
+                        "updated_at": "2024-09-15T18:44:12.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/33964/dirtbikercj"
+                    }
+                },
+                {
+                    "type": "user",
+                    "id": 47480,
+                    "attributes": {
+                        "name": "mpstark",
+                        "user_role_id": null,
+                        "created_at": "2024-04-04T09:27:41.000000Z",
+                        "updated_at": "2024-09-15T18:45:05.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/47480/mpstark"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 11,
+                    "attributes": {
+                        "name": "MIT License",
+                        "link": "https://choosealicense.com/licenses/mit/",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8444,
+                    "attributes": {
+                        "hub_id": 11222,
+                        "mod_id": 1484,
+                        "version": "0.3.4",
+                        "link": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.4/DynamicMaps-0.3.4-b6d8bf85.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83",
+                        "downloads": 33648,
+                        "created_at": "2024-08-06T07:43:10.000000Z",
+                        "updated_at": "2024-08-06T07:43:10.000000Z",
+                        "published_at": "2024-08-06 07:43:10"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8144,
+                    "attributes": {
+                        "hub_id": 10896,
+                        "mod_id": 1484,
+                        "version": "0.3.3",
+                        "link": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.3/DynamicMaps-0.3.3-111ea758.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83",
+                        "downloads": 19119,
+                        "created_at": "2024-07-17T03:57:06.000000Z",
+                        "updated_at": "2024-07-17T03:57:06.000000Z",
+                        "published_at": "2024-07-17 03:57:06"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7825,
+                    "attributes": {
+                        "hub_id": 10545,
+                        "mod_id": 1484,
+                        "version": "0.3.2",
+                        "link": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.2/DynamicMaps-0.3.2-55669364.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83",
+                        "downloads": 11178,
+                        "created_at": "2024-07-07T12:56:17.000000Z",
+                        "updated_at": "2024-07-07T12:56:17.000000Z",
+                        "published_at": "2024-07-07 12:56:17"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7476,
+                    "attributes": {
+                        "hub_id": 10152,
+                        "mod_id": 1484,
+                        "version": "0.3.1",
+                        "link": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1/DynamicMaps-0.3.1-dcbaf9ea.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83",
+                        "downloads": 213,
+                        "created_at": "2024-06-02T20:46:08.000000Z",
+                        "updated_at": "2024-06-02T20:46:08.000000Z",
+                        "published_at": "2024-06-02 20:46:08"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7432,
+                    "attributes": {
+                        "hub_id": 10100,
+                        "mod_id": 1484,
+                        "version": "0.3.0",
+                        "link": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.0/DynamicMaps-0.3.0-f8d4ed27.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83",
+                        "downloads": 4751,
+                        "created_at": "2024-05-29T22:49:48.000000Z",
+                        "updated_at": "2024-05-29T22:49:48.000000Z",
+                        "published_at": "2024-05-29 22:49:48"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7410,
+                    "attributes": {
+                        "hub_id": 10078,
+                        "mod_id": 1484,
+                        "version": "0.2.1",
+                        "link": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.2.1/DynamicMaps-0.2.1-01ec57c1.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83",
+                        "downloads": 2116,
+                        "created_at": "2024-05-27T21:23:39.000000Z",
+                        "updated_at": "2024-05-27T21:23:39.000000Z",
+                        "published_at": "2024-05-27 21:23:39"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7402,
+                    "attributes": {
+                        "hub_id": 10070,
+                        "mod_id": 1484,
+                        "version": "0.2.0",
+                        "link": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.2.0/DynamicMaps-0.2.0-b76afa42.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83",
+                        "downloads": 1561,
+                        "created_at": "2024-05-26T22:06:08.000000Z",
+                        "updated_at": "2024-05-26T22:06:08.000000Z",
+                        "published_at": "2024-05-26 22:06:08"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7369,
+                    "attributes": {
+                        "hub_id": 10033,
+                        "mod_id": 1484,
+                        "version": "0.1.3",
+                        "link": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.3/DynamicMaps-0.1.3-34486712.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83",
+                        "downloads": 3887,
+                        "created_at": "2024-05-23T13:39:30.000000Z",
+                        "updated_at": "2024-05-23T13:39:30.000000Z",
+                        "published_at": "2024-05-23 13:39:30"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7365,
+                    "attributes": {
+                        "hub_id": 10029,
+                        "mod_id": 1484,
+                        "version": "0.1.2",
+                        "link": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.2/DynamicMaps-0.1.2-bf85c0ef.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83",
+                        "downloads": 201,
+                        "created_at": "2024-05-23T12:15:39.000000Z",
+                        "updated_at": "2024-05-23T12:15:39.000000Z",
+                        "published_at": "2024-05-23 12:15:39"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7364,
+                    "attributes": {
+                        "hub_id": 10028,
+                        "mod_id": 1484,
+                        "version": "0.1.1",
+                        "link": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.1/DynamicMaps-0.1.1-0a158297.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83",
+                        "downloads": 321,
+                        "created_at": "2024-05-23T09:47:07.000000Z",
+                        "updated_at": "2024-05-23T09:47:07.000000Z",
+                        "published_at": "2024-05-23 09:47:07"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7360,
+                    "attributes": {
+                        "hub_id": 10023,
+                        "mod_id": 1484,
+                        "version": "0.1.0",
+                        "link": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.0/DynamicMaps-0.1.0-c581f5fb.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83",
+                        "downloads": 608,
+                        "created_at": "2024-05-23T02:35:55.000000Z",
+                        "updated_at": "2024-05-23T02:35:55.000000Z",
+                        "published_at": "2024-05-23 02:35:55"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7477,
+                    "attributes": {
+                        "hub_id": 10153,
+                        "mod_id": 1484,
+                        "version": "0.0.0",
+                        "link": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.1/DynamicMaps-0.3.1.1-30462ee8.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83",
+                        "downloads": 1944,
+                        "created_at": "2024-06-02T21:47:31.000000Z",
+                        "updated_at": "2024-06-02T21:47:31.000000Z",
+                        "published_at": "2024-06-02 21:47:31"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7484,
+                    "attributes": {
+                        "hub_id": 10162,
+                        "mod_id": 1484,
+                        "version": "0.0.0",
+                        "link": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.2/DynamicMaps-0.3.1.2-e1cc3770.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83",
+                        "downloads": 2999,
+                        "created_at": "2024-06-04T02:23:00.000000Z",
+                        "updated_at": "2024-06-04T02:23:00.000000Z",
+                        "published_at": "2024-06-04 02:23:00"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7511,
+                    "attributes": {
+                        "hub_id": 10195,
+                        "mod_id": 1484,
+                        "version": "0.0.0",
+                        "link": "https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.3/DynamicMaps-0.3.1.3-c079a1fa.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83",
+                        "downloads": 18595,
+                        "created_at": "2024-06-07T04:54:11.000000Z",
+                        "updated_at": "2024-06-07T04:54:11.000000Z",
+                        "published_at": "2024-06-07 04:54:11"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/1484/dynamic-maps"
+            }
+        },
+        {
+            "type": "mod",
+            "id": 1039,
+            "attributes": {
+                "hub_id": 1415,
+                "name": "Expanded Task Text (ETT)",
+                "slug": "expanded-task-text-ett",
+                "teaser": "Knowledge is power, unfortunately Nikita doesn't see it that way.",
+                "license_id": 16,
+                "source_code_link": "https://github.com/CJ-SPT/Expanded-Task-Text",
+                "featured": true,
+                "contains_ai_content": false,
+                "contains_ads": false,
+                "created_at": "2023-08-23T07:57:19.000000Z",
+                "updated_at": "2024-09-15T18:48:12.000000Z",
+                "published_at": "2023-08-23 07:57:19"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 33964
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/33964/dirtbikercj"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8867
+                        },
+                        "links": {
+                            "self": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.6.1/ExpandedTaskText.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8738
+                        },
+                        "links": {
+                            "self": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.6.0/ExpandedTaskText.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8067
+                        },
+                        "links": {
+                            "self": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.3/ExpandedTaskText.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7856
+                        },
+                        "links": {
+                            "self": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.2/ExpandedTaskText.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7479
+                        },
+                        "links": {
+                            "self": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.1/ExpandedTaskText.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7413
+                        },
+                        "links": {
+                            "self": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.0/ExpandedTaskText.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6829
+                        },
+                        "links": {
+                            "self": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.3/ExpandedTaskText.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6609
+                        },
+                        "links": {
+                            "self": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.2/ExpandedTaskText.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6555
+                        },
+                        "links": {
+                            "self": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.1/ExpandedTaskText.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6528
+                        },
+                        "links": {
+                            "self": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.0/ExpandedTaskText.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6235
+                        },
+                        "links": {
+                            "self": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.2/ExpandedTaskText.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6022
+                        },
+                        "links": {
+                            "self": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.1/Dirtbikercj-ExpandedTaskText-1.3.1.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6015
+                        },
+                        "links": {
+                            "self": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.0/Dirtbikercj-ExpandedTaskText-1.3.0.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5985
+                        },
+                        "links": {
+                            "self": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.5/Dirtbikercj-ExpandedTaskText-1.2.5.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5884
+                        },
+                        "links": {
+                            "self": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/1.2.4/Dirtbikercj-ExpandedTaskText-1.2.4.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5501
+                        },
+                        "links": {
+                            "self": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.3/Dirtbikercj-ExpandedTaskText-1.2.3.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5341
+                        },
+                        "links": {
+                            "self": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.2/Dirtbikercj-ExpandedTaskText-1.2.2.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5032
+                        },
+                        "links": {
+                            "self": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.1/Dirtbikercj-ExpandedTaskText-1.2.1.7z"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 16
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 33964,
+                    "attributes": {
+                        "name": "Dirtbikercj",
+                        "user_role_id": null,
+                        "created_at": "2023-07-14T19:01:21.000000Z",
+                        "updated_at": "2024-09-15T18:44:12.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/33964/dirtbikercj"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 16,
+                    "attributes": {
+                        "name": "Creative Commons BY-NC-ND 4.0",
+                        "link": "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8867,
+                    "attributes": {
+                        "hub_id": 11705,
+                        "mod_id": 1039,
+                        "version": "1.6.1",
+                        "link": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.6.1/ExpandedTaskText.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 1133,
+                        "created_at": "2024-09-12T11:11:00.000000Z",
+                        "updated_at": "2024-09-12T11:11:00.000000Z",
+                        "published_at": "2024-09-12 11:11:00"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8738,
+                    "attributes": {
+                        "hub_id": 11571,
+                        "mod_id": 1039,
+                        "version": "1.6.0",
+                        "link": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.6.0/ExpandedTaskText.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 3332,
+                        "created_at": "2024-08-30T03:46:12.000000Z",
+                        "updated_at": "2024-08-30T03:46:12.000000Z",
+                        "published_at": "2024-08-30 03:46:12"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8067,
+                    "attributes": {
+                        "hub_id": 10812,
+                        "mod_id": 1039,
+                        "version": "1.5.3",
+                        "link": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.3/ExpandedTaskText.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 10805,
+                        "created_at": "2024-07-13T15:24:09.000000Z",
+                        "updated_at": "2024-07-13T15:24:09.000000Z",
+                        "published_at": "2024-07-13 15:24:09"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7856,
+                    "attributes": {
+                        "hub_id": 10577,
+                        "mod_id": 1039,
+                        "version": "1.5.2",
+                        "link": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.2/ExpandedTaskText.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 2584,
+                        "created_at": "2024-07-07T22:23:56.000000Z",
+                        "updated_at": "2024-07-07T22:23:56.000000Z",
+                        "published_at": "2024-07-07 22:23:56"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7479,
+                    "attributes": {
+                        "hub_id": 10156,
+                        "mod_id": 1039,
+                        "version": "1.5.1",
+                        "link": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.1/ExpandedTaskText.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 6168,
+                        "created_at": "2024-06-03T04:53:07.000000Z",
+                        "updated_at": "2024-06-03T04:53:07.000000Z",
+                        "published_at": "2024-06-03 04:53:07"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7413,
+                    "attributes": {
+                        "hub_id": 10081,
+                        "mod_id": 1039,
+                        "version": "1.5.0",
+                        "link": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.0/ExpandedTaskText.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 2150,
+                        "created_at": "2024-05-28T05:30:41.000000Z",
+                        "updated_at": "2024-05-28T05:30:41.000000Z",
+                        "published_at": "2024-05-28 05:30:41"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6829,
+                    "attributes": {
+                        "hub_id": 9408,
+                        "mod_id": 1039,
+                        "version": "1.4.3",
+                        "link": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.3/ExpandedTaskText.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 12439,
+                        "created_at": "2024-04-13T11:37:10.000000Z",
+                        "updated_at": "2024-04-13T11:37:10.000000Z",
+                        "published_at": "2024-04-13 11:37:10"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6609,
+                    "attributes": {
+                        "hub_id": 9152,
+                        "mod_id": 1039,
+                        "version": "1.4.2",
+                        "link": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.2/ExpandedTaskText.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 4209,
+                        "created_at": "2024-04-03T13:40:36.000000Z",
+                        "updated_at": "2024-04-03T13:40:36.000000Z",
+                        "published_at": "2024-04-03 13:40:36"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6555,
+                    "attributes": {
+                        "hub_id": 9089,
+                        "mod_id": 1039,
+                        "version": "1.4.1",
+                        "link": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.1/ExpandedTaskText.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 1525,
+                        "created_at": "2024-04-02T07:55:53.000000Z",
+                        "updated_at": "2024-04-02T07:55:53.000000Z",
+                        "published_at": "2024-04-02 07:55:53"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6528,
+                    "attributes": {
+                        "hub_id": 9061,
+                        "mod_id": 1039,
+                        "version": "1.4.0",
+                        "link": "https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.0/ExpandedTaskText.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 634,
+                        "created_at": "2024-04-02T01:24:45.000000Z",
+                        "updated_at": "2024-04-02T01:24:45.000000Z",
+                        "published_at": "2024-04-02 01:24:45"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6235,
+                    "attributes": {
+                        "hub_id": 8707,
+                        "mod_id": 1039,
+                        "version": "1.3.2",
+                        "link": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.2/ExpandedTaskText.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 6781,
+                        "created_at": "2024-01-13T20:56:22.000000Z",
+                        "updated_at": "2024-01-13T20:56:22.000000Z",
+                        "published_at": "2024-01-13 20:56:22"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6022,
+                    "attributes": {
+                        "hub_id": 8465,
+                        "mod_id": 1039,
+                        "version": "1.3.1",
+                        "link": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.1/Dirtbikercj-ExpandedTaskText-1.3.1.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 3872,
+                        "created_at": "2023-12-11T04:08:50.000000Z",
+                        "updated_at": "2023-12-11T04:08:50.000000Z",
+                        "published_at": "2023-12-11 04:08:50"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6015,
+                    "attributes": {
+                        "hub_id": 8457,
+                        "mod_id": 1039,
+                        "version": "1.3.0",
+                        "link": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.0/Dirtbikercj-ExpandedTaskText-1.3.0.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 260,
+                        "created_at": "2023-12-10T10:40:51.000000Z",
+                        "updated_at": "2023-12-10T10:40:51.000000Z",
+                        "published_at": "2023-12-10 10:40:51"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5985,
+                    "attributes": {
+                        "hub_id": 8423,
+                        "mod_id": 1039,
+                        "version": "1.2.5",
+                        "link": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.5/Dirtbikercj-ExpandedTaskText-1.2.5.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 628,
+                        "created_at": "2023-12-06T08:07:26.000000Z",
+                        "updated_at": "2023-12-06T08:07:26.000000Z",
+                        "published_at": "2023-12-06 08:07:26"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5884,
+                    "attributes": {
+                        "hub_id": 8299,
+                        "mod_id": 1039,
+                        "version": "1.2.4",
+                        "link": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/1.2.4/Dirtbikercj-ExpandedTaskText-1.2.4.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 1447,
+                        "created_at": "2023-11-19T15:35:47.000000Z",
+                        "updated_at": "2023-11-19T15:35:47.000000Z",
+                        "published_at": "2023-11-19 15:35:47"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5501,
+                    "attributes": {
+                        "hub_id": 7810,
+                        "mod_id": 1039,
+                        "version": "1.2.3",
+                        "link": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.3/Dirtbikercj-ExpandedTaskText-1.2.3.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 2243,
+                        "created_at": "2023-10-14T20:52:18.000000Z",
+                        "updated_at": "2023-10-14T20:52:18.000000Z",
+                        "published_at": "2023-10-14 20:52:18"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5341,
+                    "attributes": {
+                        "hub_id": 7613,
+                        "mod_id": 1039,
+                        "version": "1.2.2",
+                        "link": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.2/Dirtbikercj-ExpandedTaskText-1.2.2.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 1302,
+                        "created_at": "2023-10-09T04:22:18.000000Z",
+                        "updated_at": "2023-10-09T04:22:18.000000Z",
+                        "published_at": "2023-10-09 04:22:18"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5032,
+                    "attributes": {
+                        "hub_id": 7196,
+                        "mod_id": 1039,
+                        "version": "1.2.1",
+                        "link": "https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.1/Dirtbikercj-ExpandedTaskText-1.2.1.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1",
+                        "downloads": 2569,
+                        "created_at": "2023-08-23T07:57:19.000000Z",
+                        "updated_at": "2023-08-23T07:57:19.000000Z",
+                        "published_at": "2023-08-23 07:57:19"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/1039/expanded-task-text-ett"
+            }
+        },
+        {
+            "type": "mod",
+            "id": 745,
+            "attributes": {
+                "hub_id": 989,
+                "name": "Friendly PMC",
+                "slug": "friendly-pmc",
+                "teaser": "Spawn with a squad of your side, recruit others while in the raid, and command them on the battlefield.",
+                "license_id": 10,
+                "source_code_link": "https://bitbucket.org/pitvenin/friendlypmc/src/main/",
+                "featured": true,
+                "contains_ai_content": true,
+                "contains_ads": false,
+                "created_at": "2023-01-28T21:51:05.000000Z",
+                "updated_at": "2024-09-15T18:48:12.000000Z",
+                "published_at": "2023-01-28 21:51:05"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 20756
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/20756/pitalex"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8899
+                        },
+                        "links": {
+                            "self": "https://bitbucket.org/pitvenin/friendlypmc/downloads/friendlypmc-3.7.0.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8670
+                        },
+                        "links": {
+                            "self": "https://ln5.sync.com/dl/46072a550/fxiga2nu-ss4ygq7i-9kgsfwrm-5jkxzaaa"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8629
+                        },
+                        "links": {
+                            "self": "https://ln5.sync.com/dl/e30ce8750/9p4b6n4x-53n7seqb-2ffey2fn-99but8ww"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8628
+                        },
+                        "links": {
+                            "self": "https://ln5.sync.com/dl/750324740/df7ty6ie-5jhtb2sx-xs33p3xd-epbji8xt"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8596
+                        },
+                        "links": {
+                            "self": "https://ln5.sync.com/dl/dd3a7d920/j6vxz4d7-t9gvjawg-c9tg6zc8-kuy7rybu"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8519
+                        },
+                        "links": {
+                            "self": "https://ln5.sync.com/dl/e428c8530/kg7kq3du-ngdkkgt2-9bbseqrh-ngw86zk5"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8438
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/11Wx4lRfoBqz37YB5eXJY_78fbySaVqR3/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8419
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1-UsQBpPPhYh6jJHPdYHZjVR7t_0WunkD/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8415
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1deSb3WcFI3d5yDcuVf6PkoOxM_8lmAhv/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8330
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1Kzl5RMuyfa52YsSDssINbg0r-AuCm9zg/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8284
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/16Hs6-a-wD_rhXbsZGLbzXmEv8tmRXxOy/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7725
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1QUnhA1vfM6ohUTlPNZSL-Ajxv2PNs128/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7721
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1hr15eBhNvkGUk6xb8Xiav6zWwP_xsisf/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7715
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/11tvMcwhRYQzqwimtS2hHA4UKTIqC5kZ7/view?usp=drive_link"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7708
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1geMSHp9dmvg3TUkVyIQZWoKPFMJKLJID/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7707
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1sTmo_PvJvlAjDqcZOhTs3RkiTF5eBwhD/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7630
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1czWbJ3umcs6joiwjHSwqn6vVtHSCPN6k/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7621
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1ZakmfshVNJysFBJxhqeuZfQeTBTTWdPQ/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7618
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1yyKZcVf3yn2D-GI9jaBXBw1dOcuWk9cV/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7610
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1ooL0lDrD9YKwJsXx-GsMOgSlqhtpZlqv/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7604
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1R19WZjv0i2wQVmpsYOEVJKeQ6NZkzKH6/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7601
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1bRhcw7X4s0dhgG0TOP3BUdlQGfWwiBhQ/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7590
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1RYMq-T79VFn9i_nCx-FuP-_UcV-CfJB8/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7581
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1QAOod7G5BDP6dCRrWGYNI742-MT-gI-r/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7576
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1OLxNa6HxaFdMI_RfhPb3LbUwQkp7VxGx/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7564
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/16rRU0s9MGXm4zujmEXUzJXcevFWSGThM/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7559
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1QKYy72R_jMtQoZET9eN5eASbbcfhgjsu/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7547
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1UsLxNT5bpAc3abWTu8SQaQtJwO-7bXHg/view?usp=drive_link"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7541
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1eQ17T8XH4-8f9KyvB-jxRZZYe4RgCm17/view?usp=drive_link"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7142
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1zOlL4xVnZHYGHXFEFqLvgqXuwJvNv_sD/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6711
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1VEXvEatQeMsUHST33S5BF9aGiE_EAEO-/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5661
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1b1r3OupxWBGk6s2DkuLbL4nY9ehI8W35/view?usp=share_link"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5547
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/10GaGETMu0D1maRGGWr_qSYCqmy1-G7t6/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5470
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1n4dCMejbNr5hgo9RgcNSMcropRuvjp_t/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5012
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1jW15EZp5MIJJJO1u5kcAxEztaY9HOQ26/view?usp=drive_link"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4350
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/12tmnPa1e8_-sVrpFmkvDJIzRWVhk_c1K/view?usp=share_link"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4254
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1WUVguPIMZMLJJc3G2S4AVfoTPn8xMVSI/view?usp=share_link"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4247
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/13v9QeTPb_5a9UbJ-iJOwb9DHsMRmc1Hz/view?usp=share_link"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4220
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1qa5w2AcwPhzHe7LGp8Lb2wwYYfRSeV4d/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 3987
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/18g4k6TIduQ6Sr-p9rKWLNjz-P39O7D6S/view?usp=share_link"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 3912
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1OMx1t77kcjPv2ipfmSqwbxcYbvT3CPTx/view?usp=share_link"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 3815
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1ZuZZMcIHl6T2lZzAE3cv7BZqcytdhh7f/view"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 3793
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1rDTeoMAH2nOSgtDSUjTGLWdzuqz907A2/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 3783
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1KB1qi2vQ6bFNgk3GuQ5fQAUNSLbi3lzH/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 3719
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/12JFsyuGZgs4Kbh7ktxjdSe48hXZItecw/view?usp=sharing"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 3513
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1NT9E-TmqxUr-1G0vjRr8jEU2p-v8jwIz/view?usp=share_link"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 3488
+                        },
+                        "links": {
+                            "self": "https://drive.google.com/file/d/1IGk0RbOlXDXPJ67pWO2PpyPdbwGCv-22/view?usp=share_link"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 10
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 20756,
+                    "attributes": {
+                        "name": "pitAlex",
+                        "user_role_id": null,
+                        "created_at": "2022-07-18T21:39:14.000000Z",
+                        "updated_at": "2024-09-15T18:43:21.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/20756/pitalex"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 10,
+                    "attributes": {
+                        "name": "Apache License 2.0",
+                        "link": "https://choosealicense.com/licenses/apache-2.0/",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8899,
+                    "attributes": {
+                        "hub_id": 11737,
+                        "mod_id": 745,
+                        "version": "3.7.0",
+                        "link": "https://bitbucket.org/pitvenin/friendlypmc/downloads/friendlypmc-3.7.0.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 611,
+                        "created_at": "2024-09-14T21:30:18.000000Z",
+                        "updated_at": "2024-09-14T21:30:18.000000Z",
+                        "published_at": "2024-09-14 21:30:18"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8670,
+                    "attributes": {
+                        "hub_id": 11486,
+                        "mod_id": 745,
+                        "version": "3.6.4-beta",
+                        "link": "https://ln5.sync.com/dl/46072a550/fxiga2nu-ss4ygq7i-9kgsfwrm-5jkxzaaa",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 5746,
+                        "created_at": "2024-08-24T20:33:31.000000Z",
+                        "updated_at": "2024-08-24T20:33:31.000000Z",
+                        "published_at": "2024-08-24 20:33:31"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8629,
+                    "attributes": {
+                        "hub_id": 11439,
+                        "mod_id": 745,
+                        "version": "3.6.3-beta",
+                        "link": "https://ln5.sync.com/dl/e30ce8750/9p4b6n4x-53n7seqb-2ffey2fn-99but8ww",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 1050,
+                        "created_at": "2024-08-22T13:33:47.000000Z",
+                        "updated_at": "2024-08-22T13:33:47.000000Z",
+                        "published_at": "2024-08-22 13:33:47"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8628,
+                    "attributes": {
+                        "hub_id": 11438,
+                        "mod_id": 745,
+                        "version": "3.6.2-beta",
+                        "link": "https://ln5.sync.com/dl/750324740/df7ty6ie-5jhtb2sx-xs33p3xd-epbji8xt",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 50,
+                        "created_at": "2024-08-22T13:22:29.000000Z",
+                        "updated_at": "2024-08-22T13:22:29.000000Z",
+                        "published_at": "2024-08-22 13:22:29"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8596,
+                    "attributes": {
+                        "hub_id": 11404,
+                        "mod_id": 745,
+                        "version": "3.6.1-beta",
+                        "link": "https://ln5.sync.com/dl/dd3a7d920/j6vxz4d7-t9gvjawg-c9tg6zc8-kuy7rybu",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 930,
+                        "created_at": "2024-08-20T12:59:46.000000Z",
+                        "updated_at": "2024-08-20T12:59:46.000000Z",
+                        "published_at": "2024-08-20 12:59:46"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8519,
+                    "attributes": {
+                        "hub_id": 11320,
+                        "mod_id": 745,
+                        "version": "3.6.0-beta",
+                        "link": "https://ln5.sync.com/dl/e428c8530/kg7kq3du-ngdkkgt2-9bbseqrh-ngw86zk5",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 2607,
+                        "created_at": "2024-08-13T13:28:11.000000Z",
+                        "updated_at": "2024-08-13T13:28:11.000000Z",
+                        "published_at": "2024-08-13 13:28:11"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8438,
+                    "attributes": {
+                        "hub_id": 11214,
+                        "mod_id": 745,
+                        "version": "3.5.2",
+                        "link": "https://drive.google.com/file/d/11Wx4lRfoBqz37YB5eXJY_78fbySaVqR3/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 2330,
+                        "created_at": "2024-08-05T20:29:00.000000Z",
+                        "updated_at": "2024-08-05T20:29:00.000000Z",
+                        "published_at": "2024-08-05 20:29:00"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8419,
+                    "attributes": {
+                        "hub_id": 11194,
+                        "mod_id": 745,
+                        "version": "3.5.1-beta",
+                        "link": "https://drive.google.com/file/d/1-UsQBpPPhYh6jJHPdYHZjVR7t_0WunkD/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 729,
+                        "created_at": "2024-08-04T13:42:38.000000Z",
+                        "updated_at": "2024-08-04T13:42:38.000000Z",
+                        "published_at": "2024-08-04 13:42:38"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8415,
+                    "attributes": {
+                        "hub_id": 11190,
+                        "mod_id": 745,
+                        "version": "3.5.0-beta",
+                        "link": "https://drive.google.com/file/d/1deSb3WcFI3d5yDcuVf6PkoOxM_8lmAhv/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 684,
+                        "created_at": "2024-08-03T19:30:16.000000Z",
+                        "updated_at": "2024-08-03T19:30:16.000000Z",
+                        "published_at": "2024-08-03 19:30:16"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8330,
+                    "attributes": {
+                        "hub_id": 11102,
+                        "mod_id": 745,
+                        "version": "3.4.1-beta",
+                        "link": "https://drive.google.com/file/d/1Kzl5RMuyfa52YsSDssINbg0r-AuCm9zg/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 1665,
+                        "created_at": "2024-07-29T01:37:20.000000Z",
+                        "updated_at": "2024-07-29T01:37:20.000000Z",
+                        "published_at": "2024-07-29 01:37:20"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8284,
+                    "attributes": {
+                        "hub_id": 11054,
+                        "mod_id": 745,
+                        "version": "3.4.0-beta",
+                        "link": "https://drive.google.com/file/d/16Hs6-a-wD_rhXbsZGLbzXmEv8tmRXxOy/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 1596,
+                        "created_at": "2024-07-26T01:06:13.000000Z",
+                        "updated_at": "2024-07-26T01:06:13.000000Z",
+                        "published_at": "2024-07-26 01:06:13"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7725,
+                    "attributes": {
+                        "hub_id": 10434,
+                        "mod_id": 745,
+                        "version": "3.3.4",
+                        "link": "https://drive.google.com/file/d/1QUnhA1vfM6ohUTlPNZSL-Ajxv2PNs128/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 531,
+                        "created_at": "2024-07-02T13:54:21.000000Z",
+                        "updated_at": "2024-07-02T13:54:21.000000Z",
+                        "published_at": "2024-07-02 13:54:21"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7721,
+                    "attributes": {
+                        "hub_id": 10430,
+                        "mod_id": 745,
+                        "version": "3.3.3",
+                        "link": "https://drive.google.com/file/d/1hr15eBhNvkGUk6xb8Xiav6zWwP_xsisf/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 397,
+                        "created_at": "2024-07-01T18:19:24.000000Z",
+                        "updated_at": "2024-07-01T18:19:24.000000Z",
+                        "published_at": "2024-07-01 18:19:24"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7715,
+                    "attributes": {
+                        "hub_id": 10424,
+                        "mod_id": 745,
+                        "version": "3.3.2",
+                        "link": "https://drive.google.com/file/d/11tvMcwhRYQzqwimtS2hHA4UKTIqC5kZ7/view?usp=drive_link",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 368,
+                        "created_at": "2024-06-30T22:26:30.000000Z",
+                        "updated_at": "2024-06-30T22:26:30.000000Z",
+                        "published_at": "2024-06-30 22:26:30"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7708,
+                    "attributes": {
+                        "hub_id": 10415,
+                        "mod_id": 745,
+                        "version": "3.3.1",
+                        "link": "https://drive.google.com/file/d/1geMSHp9dmvg3TUkVyIQZWoKPFMJKLJID/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 447,
+                        "created_at": "2024-06-29T21:25:47.000000Z",
+                        "updated_at": "2024-06-29T21:25:47.000000Z",
+                        "published_at": "2024-06-29 21:25:47"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7707,
+                    "attributes": {
+                        "hub_id": 10414,
+                        "mod_id": 745,
+                        "version": "3.3.0",
+                        "link": "https://drive.google.com/file/d/1sTmo_PvJvlAjDqcZOhTs3RkiTF5eBwhD/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 152,
+                        "created_at": "2024-06-29T18:42:54.000000Z",
+                        "updated_at": "2024-06-29T18:42:54.000000Z",
+                        "published_at": "2024-06-29 18:42:54"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7630,
+                    "attributes": {
+                        "hub_id": 10331,
+                        "mod_id": 745,
+                        "version": "3.2.1-beta",
+                        "link": "https://drive.google.com/file/d/1czWbJ3umcs6joiwjHSwqn6vVtHSCPN6k/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 1906,
+                        "created_at": "2024-06-20T12:50:39.000000Z",
+                        "updated_at": "2024-06-20T12:50:39.000000Z",
+                        "published_at": "2024-06-20 12:50:39"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7621,
+                    "attributes": {
+                        "hub_id": 10322,
+                        "mod_id": 745,
+                        "version": "3.2.0-beta",
+                        "link": "https://drive.google.com/file/d/1ZakmfshVNJysFBJxhqeuZfQeTBTTWdPQ/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 343,
+                        "created_at": "2024-06-19T11:59:33.000000Z",
+                        "updated_at": "2024-06-19T11:59:33.000000Z",
+                        "published_at": "2024-06-19 11:59:33"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7618,
+                    "attributes": {
+                        "hub_id": 10318,
+                        "mod_id": 745,
+                        "version": "3.1.4-beta",
+                        "link": "https://drive.google.com/file/d/1yyKZcVf3yn2D-GI9jaBXBw1dOcuWk9cV/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 281,
+                        "created_at": "2024-06-18T14:22:00.000000Z",
+                        "updated_at": "2024-06-18T14:22:00.000000Z",
+                        "published_at": "2024-06-18 14:22:00"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7610,
+                    "attributes": {
+                        "hub_id": 10309,
+                        "mod_id": 745,
+                        "version": "3.1.3-beta",
+                        "link": "https://drive.google.com/file/d/1ooL0lDrD9YKwJsXx-GsMOgSlqhtpZlqv/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 360,
+                        "created_at": "2024-06-17T10:51:08.000000Z",
+                        "updated_at": "2024-06-17T10:51:08.000000Z",
+                        "published_at": "2024-06-17 10:51:08"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7604,
+                    "attributes": {
+                        "hub_id": 10301,
+                        "mod_id": 745,
+                        "version": "3.1.2-beta",
+                        "link": "https://drive.google.com/file/d/1R19WZjv0i2wQVmpsYOEVJKeQ6NZkzKH6/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 326,
+                        "created_at": "2024-06-16T12:25:08.000000Z",
+                        "updated_at": "2024-06-16T12:25:08.000000Z",
+                        "published_at": "2024-06-16 12:25:08"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7601,
+                    "attributes": {
+                        "hub_id": 10297,
+                        "mod_id": 745,
+                        "version": "3.1.1-beta",
+                        "link": "https://drive.google.com/file/d/1bRhcw7X4s0dhgG0TOP3BUdlQGfWwiBhQ/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 337,
+                        "created_at": "2024-06-15T14:50:51.000000Z",
+                        "updated_at": "2024-06-15T14:50:51.000000Z",
+                        "published_at": "2024-06-15 14:50:51"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7590,
+                    "attributes": {
+                        "hub_id": 10284,
+                        "mod_id": 745,
+                        "version": "3.1.0-beta",
+                        "link": "https://drive.google.com/file/d/1RYMq-T79VFn9i_nCx-FuP-_UcV-CfJB8/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 435,
+                        "created_at": "2024-06-13T21:26:04.000000Z",
+                        "updated_at": "2024-06-13T21:26:04.000000Z",
+                        "published_at": "2024-06-13 21:26:04"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7581,
+                    "attributes": {
+                        "hub_id": 10271,
+                        "mod_id": 745,
+                        "version": "3.0.5-beta",
+                        "link": "https://drive.google.com/file/d/1QAOod7G5BDP6dCRrWGYNI742-MT-gI-r/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 297,
+                        "created_at": "2024-06-12T16:19:04.000000Z",
+                        "updated_at": "2024-06-12T16:19:04.000000Z",
+                        "published_at": "2024-06-12 16:19:04"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7576,
+                    "attributes": {
+                        "hub_id": 10266,
+                        "mod_id": 745,
+                        "version": "3.0.4-beta",
+                        "link": "https://drive.google.com/file/d/1OLxNa6HxaFdMI_RfhPb3LbUwQkp7VxGx/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 124,
+                        "created_at": "2024-06-12T10:44:05.000000Z",
+                        "updated_at": "2024-06-12T10:44:05.000000Z",
+                        "published_at": "2024-06-12 10:44:05"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7564,
+                    "attributes": {
+                        "hub_id": 10254,
+                        "mod_id": 745,
+                        "version": "3.0.3-beta",
+                        "link": "https://drive.google.com/file/d/16rRU0s9MGXm4zujmEXUzJXcevFWSGThM/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 355,
+                        "created_at": "2024-06-10T19:45:58.000000Z",
+                        "updated_at": "2024-06-10T19:45:58.000000Z",
+                        "published_at": "2024-06-10 19:45:58"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7559,
+                    "attributes": {
+                        "hub_id": 10249,
+                        "mod_id": 745,
+                        "version": "3.0.2-beta",
+                        "link": "https://drive.google.com/file/d/1QKYy72R_jMtQoZET9eN5eASbbcfhgjsu/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 295,
+                        "created_at": "2024-06-10T08:49:43.000000Z",
+                        "updated_at": "2024-06-10T08:49:43.000000Z",
+                        "published_at": "2024-06-10 08:49:43"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7547,
+                    "attributes": {
+                        "hub_id": 10235,
+                        "mod_id": 745,
+                        "version": "3.0.1-beta",
+                        "link": "https://drive.google.com/file/d/1UsLxNT5bpAc3abWTu8SQaQtJwO-7bXHg/view?usp=drive_link",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 240,
+                        "created_at": "2024-06-09T20:23:55.000000Z",
+                        "updated_at": "2024-06-09T20:23:55.000000Z",
+                        "published_at": "2024-06-09 20:23:55"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7541,
+                    "attributes": {
+                        "hub_id": 10229,
+                        "mod_id": 745,
+                        "version": "3.0.0-beta",
+                        "link": "https://drive.google.com/file/d/1eQ17T8XH4-8f9KyvB-jxRZZYe4RgCm17/view?usp=drive_link",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 142,
+                        "created_at": "2024-06-09T17:16:51.000000Z",
+                        "updated_at": "2024-06-09T17:16:51.000000Z",
+                        "published_at": "2024-06-09 17:16:51"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7142,
+                    "attributes": {
+                        "hub_id": 9776,
+                        "mod_id": 745,
+                        "version": "2.0.1",
+                        "link": "https://drive.google.com/file/d/1zOlL4xVnZHYGHXFEFqLvgqXuwJvNv_sD/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 1579,
+                        "created_at": "2024-05-06T11:01:59.000000Z",
+                        "updated_at": "2024-05-06T11:01:59.000000Z",
+                        "published_at": "2024-05-06 11:01:59"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6711,
+                    "attributes": {
+                        "hub_id": 9275,
+                        "mod_id": 745,
+                        "version": "2.0.0",
+                        "link": "https://drive.google.com/file/d/1VEXvEatQeMsUHST33S5BF9aGiE_EAEO-/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 2188,
+                        "created_at": "2024-04-06T19:50:48.000000Z",
+                        "updated_at": "2024-04-06T19:50:48.000000Z",
+                        "published_at": "2024-04-06 19:50:48"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5661,
+                    "attributes": {
+                        "hub_id": 8011,
+                        "mod_id": 745,
+                        "version": "1.3.3",
+                        "link": "https://drive.google.com/file/d/1b1r3OupxWBGk6s2DkuLbL4nY9ehI8W35/view?usp=share_link",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 2976,
+                        "created_at": "2023-10-22T18:15:45.000000Z",
+                        "updated_at": "2023-10-22T18:15:45.000000Z",
+                        "published_at": "2023-10-22 18:15:45"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5547,
+                    "attributes": {
+                        "hub_id": 7862,
+                        "mod_id": 745,
+                        "version": "1.3.2",
+                        "link": "https://drive.google.com/file/d/10GaGETMu0D1maRGGWr_qSYCqmy1-G7t6/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 471,
+                        "created_at": "2023-10-15T13:19:12.000000Z",
+                        "updated_at": "2023-10-15T13:19:12.000000Z",
+                        "published_at": "2023-10-15 13:19:12"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5470,
+                    "attributes": {
+                        "hub_id": 7773,
+                        "mod_id": 745,
+                        "version": "1.3.1",
+                        "link": "https://drive.google.com/file/d/1n4dCMejbNr5hgo9RgcNSMcropRuvjp_t/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 361,
+                        "created_at": "2023-10-13T11:59:25.000000Z",
+                        "updated_at": "2023-10-13T11:59:25.000000Z",
+                        "published_at": "2023-10-13 11:59:25"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5012,
+                    "attributes": {
+                        "hub_id": 7167,
+                        "mod_id": 745,
+                        "version": "1.3.0",
+                        "link": "https://drive.google.com/file/d/1jW15EZp5MIJJJO1u5kcAxEztaY9HOQ26/view?usp=drive_link",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 1335,
+                        "created_at": "2023-08-20T19:54:25.000000Z",
+                        "updated_at": "2023-08-20T19:54:25.000000Z",
+                        "published_at": "2023-08-20 19:54:25"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4350,
+                    "attributes": {
+                        "hub_id": 6155,
+                        "mod_id": 745,
+                        "version": "1.2.0",
+                        "link": "https://drive.google.com/file/d/12tmnPa1e8_-sVrpFmkvDJIzRWVhk_c1K/view?usp=share_link",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 1698,
+                        "created_at": "2023-05-06T21:30:22.000000Z",
+                        "updated_at": "2023-05-06T21:30:22.000000Z",
+                        "published_at": "2023-05-06 21:30:22"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4254,
+                    "attributes": {
+                        "hub_id": 6029,
+                        "mod_id": 745,
+                        "version": "1.1.7",
+                        "link": "https://drive.google.com/file/d/1WUVguPIMZMLJJc3G2S4AVfoTPn8xMVSI/view?usp=share_link",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 726,
+                        "created_at": "2023-04-20T13:14:03.000000Z",
+                        "updated_at": "2023-04-20T13:14:03.000000Z",
+                        "published_at": "2023-04-20 13:14:03"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4247,
+                    "attributes": {
+                        "hub_id": 6020,
+                        "mod_id": 745,
+                        "version": "1.1.6",
+                        "link": "https://drive.google.com/file/d/13v9QeTPb_5a9UbJ-iJOwb9DHsMRmc1Hz/view?usp=share_link",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 110,
+                        "created_at": "2023-04-19T15:10:08.000000Z",
+                        "updated_at": "2023-04-19T15:10:08.000000Z",
+                        "published_at": "2023-04-19 15:10:08"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4220,
+                    "attributes": {
+                        "hub_id": 5989,
+                        "mod_id": 745,
+                        "version": "1.1.5",
+                        "link": "https://drive.google.com/file/d/1qa5w2AcwPhzHe7LGp8Lb2wwYYfRSeV4d/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 204,
+                        "created_at": "2023-04-16T20:03:26.000000Z",
+                        "updated_at": "2023-04-16T20:03:26.000000Z",
+                        "published_at": "2023-04-16 20:03:26"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 3987,
+                    "attributes": {
+                        "hub_id": 5631,
+                        "mod_id": 745,
+                        "version": "1.1.4",
+                        "link": "https://drive.google.com/file/d/18g4k6TIduQ6Sr-p9rKWLNjz-P39O7D6S/view?usp=share_link",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 958,
+                        "created_at": "2023-03-15T21:58:28.000000Z",
+                        "updated_at": "2023-03-15T21:58:28.000000Z",
+                        "published_at": "2023-03-15 21:58:28"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 3912,
+                    "attributes": {
+                        "hub_id": 5534,
+                        "mod_id": 745,
+                        "version": "1.1.3",
+                        "link": "https://drive.google.com/file/d/1OMx1t77kcjPv2ipfmSqwbxcYbvT3CPTx/view?usp=share_link",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 540,
+                        "created_at": "2023-03-09T17:13:48.000000Z",
+                        "updated_at": "2023-03-09T17:13:48.000000Z",
+                        "published_at": "2023-03-09 17:13:48"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 3815,
+                    "attributes": {
+                        "hub_id": 5399,
+                        "mod_id": 745,
+                        "version": "1.1.2",
+                        "link": "https://drive.google.com/file/d/1ZuZZMcIHl6T2lZzAE3cv7BZqcytdhh7f/view",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 474,
+                        "created_at": "2023-03-03T13:31:40.000000Z",
+                        "updated_at": "2023-03-03T13:31:40.000000Z",
+                        "published_at": "2023-03-03 13:31:40"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 3793,
+                    "attributes": {
+                        "hub_id": 5369,
+                        "mod_id": 745,
+                        "version": "1.1.1",
+                        "link": "https://drive.google.com/file/d/1rDTeoMAH2nOSgtDSUjTGLWdzuqz907A2/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 164,
+                        "created_at": "2023-03-01T18:02:49.000000Z",
+                        "updated_at": "2023-03-01T18:02:49.000000Z",
+                        "published_at": "2023-03-01 18:02:49"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 3783,
+                    "attributes": {
+                        "hub_id": 5354,
+                        "mod_id": 745,
+                        "version": "1.1.0",
+                        "link": "https://drive.google.com/file/d/1KB1qi2vQ6bFNgk3GuQ5fQAUNSLbi3lzH/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 238,
+                        "created_at": "2023-02-27T12:44:44.000000Z",
+                        "updated_at": "2023-02-27T12:44:44.000000Z",
+                        "published_at": "2023-02-27 12:44:44"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 3719,
+                    "attributes": {
+                        "hub_id": 5274,
+                        "mod_id": 745,
+                        "version": "1.0.2",
+                        "link": "https://drive.google.com/file/d/12JFsyuGZgs4Kbh7ktxjdSe48hXZItecw/view?usp=sharing",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 836,
+                        "created_at": "2023-02-19T15:39:51.000000Z",
+                        "updated_at": "2023-02-19T15:39:51.000000Z",
+                        "published_at": "2023-02-19 15:39:51"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 3513,
+                    "attributes": {
+                        "hub_id": 4992,
+                        "mod_id": 745,
+                        "version": "1.0.1",
+                        "link": "https://drive.google.com/file/d/1NT9E-TmqxUr-1G0vjRr8jEU2p-v8jwIz/view?usp=share_link",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 911,
+                        "created_at": "2023-02-01T01:07:14.000000Z",
+                        "updated_at": "2023-02-01T01:07:14.000000Z",
+                        "published_at": "2023-02-01 01:07:14"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 3488,
+                    "attributes": {
+                        "hub_id": 4950,
+                        "mod_id": 745,
+                        "version": "1.0.0",
+                        "link": "https://drive.google.com/file/d/1IGk0RbOlXDXPJ67pWO2PpyPdbwGCv-22/view?usp=share_link",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1",
+                        "downloads": 685,
+                        "created_at": "2023-01-28T21:51:05.000000Z",
+                        "updated_at": "2023-01-28T21:51:05.000000Z",
+                        "published_at": "2023-01-28 21:51:05"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/745/friendly-pmc"
+            }
+        },
+        {
+            "type": "mod",
+            "id": 876,
+            "attributes": {
+                "hub_id": 1166,
+                "name": "Gilded Key Storage",
+                "slug": "gilded-key-storage",
+                "teaser": "A balanced progression based approach to convenient all in one key storage!",
+                "license_id": 16,
+                "source_code_link": "https://github.com/DrakiaXYZ/SPT-GildedKeyStorage",
+                "featured": true,
+                "contains_ai_content": false,
+                "contains_ads": false,
+                "created_at": "2023-04-23T21:24:19.000000Z",
+                "updated_at": "2024-09-15T18:48:12.000000Z",
+                "published_at": "2023-04-23 21:24:19"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 27606
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/27606/drakiaxyz"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 29458
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/29458/jehree"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7788
+                        },
+                        "links": {
+                            "self": "https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.4.0/Jehree-GildedKeyStorage-1.4.0.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6858
+                        },
+                        "links": {
+                            "self": "https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.2/Jehree-GildedKeyStorage-1.3.2.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6734
+                        },
+                        "links": {
+                            "self": "https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.1/Jehree-GildedKeyStorage-1.3.1.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6487
+                        },
+                        "links": {
+                            "self": "https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.0/Jehree-GildedKeyStorage-1.3.0.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4762
+                        },
+                        "links": {
+                            "self": "https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4659
+                        },
+                        "links": {
+                            "self": "https://www.mediafire.com/file/nne449ddrrwpkm0/Gilded_Key_Storage-1.1.1.zip/file"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4326
+                        },
+                        "links": {
+                            "self": "https://www.mediafire.com/file/veygcmlgi2tah6v/Gilded_Key_Storage-1.1.0.zip/file"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4282
+                        },
+                        "links": {
+                            "self": "https://www.mediafire.com/file/a1r404rik6evlhh/Gilded_Key_Storage-1.0.0.zip/file"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4763
+                        },
+                        "links": {
+                            "self": "https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4870
+                        },
+                        "links": {
+                            "self": "https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5606
+                        },
+                        "links": {
+                            "self": "https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.2.0/jehree-gildedkeystorage-1.2.0.zip"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 16
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 27606,
+                    "attributes": {
+                        "name": "DrakiaXYZ",
+                        "user_role_id": 4,
+                        "created_at": "2023-02-26T18:51:50.000000Z",
+                        "updated_at": "2024-09-15T18:43:48.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": 4
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/27606/drakiaxyz"
+                    }
+                },
+                {
+                    "type": "user",
+                    "id": 29458,
+                    "attributes": {
+                        "name": "Jehree",
+                        "user_role_id": null,
+                        "created_at": "2023-03-30T17:43:41.000000Z",
+                        "updated_at": "2024-09-15T18:43:55.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/29458/jehree"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 16,
+                    "attributes": {
+                        "name": "Creative Commons BY-NC-ND 4.0",
+                        "link": "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7788,
+                    "attributes": {
+                        "hub_id": 10504,
+                        "mod_id": 876,
+                        "version": "1.4.0",
+                        "link": "https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.4.0/Jehree-GildedKeyStorage-1.4.0.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1",
+                        "downloads": 14506,
+                        "created_at": "2024-07-06T21:05:10.000000Z",
+                        "updated_at": "2024-07-06T21:05:10.000000Z",
+                        "published_at": "2024-07-06 21:05:10"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6858,
+                    "attributes": {
+                        "hub_id": 9443,
+                        "mod_id": 876,
+                        "version": "1.3.2",
+                        "link": "https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.2/Jehree-GildedKeyStorage-1.3.2.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1",
+                        "downloads": 14729,
+                        "created_at": "2024-04-15T06:18:57.000000Z",
+                        "updated_at": "2024-04-15T06:18:57.000000Z",
+                        "published_at": "2024-04-15 06:18:57"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6734,
+                    "attributes": {
+                        "hub_id": 9304,
+                        "mod_id": 876,
+                        "version": "1.3.1",
+                        "link": "https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.1/Jehree-GildedKeyStorage-1.3.1.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1",
+                        "downloads": 2213,
+                        "created_at": "2024-04-08T04:16:33.000000Z",
+                        "updated_at": "2024-04-08T04:16:33.000000Z",
+                        "published_at": "2024-04-08 04:16:33"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6487,
+                    "attributes": {
+                        "hub_id": 9017,
+                        "mod_id": 876,
+                        "version": "1.3.0",
+                        "link": "https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.0/Jehree-GildedKeyStorage-1.3.0.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1",
+                        "downloads": 2581,
+                        "created_at": "2024-04-01T21:25:36.000000Z",
+                        "updated_at": "2024-04-01T21:25:36.000000Z",
+                        "published_at": "2024-04-01 21:25:36"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4762,
+                    "attributes": {
+                        "hub_id": 6773,
+                        "mod_id": 876,
+                        "version": "1.1.2",
+                        "link": "https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1",
+                        "downloads": 64,
+                        "created_at": "2023-07-17T01:56:49.000000Z",
+                        "updated_at": "2023-07-17T01:56:49.000000Z",
+                        "published_at": "2023-07-17 01:56:49"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4659,
+                    "attributes": {
+                        "hub_id": 6608,
+                        "mod_id": 876,
+                        "version": "1.1.1",
+                        "link": "https://www.mediafire.com/file/nne449ddrrwpkm0/Gilded_Key_Storage-1.1.1.zip/file",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1",
+                        "downloads": 1008,
+                        "created_at": "2023-06-27T14:09:41.000000Z",
+                        "updated_at": "2023-06-27T14:09:41.000000Z",
+                        "published_at": "2023-06-27 14:09:41"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4326,
+                    "attributes": {
+                        "hub_id": 6122,
+                        "mod_id": 876,
+                        "version": "1.1.0",
+                        "link": "https://www.mediafire.com/file/veygcmlgi2tah6v/Gilded_Key_Storage-1.1.0.zip/file",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1",
+                        "downloads": 2737,
+                        "created_at": "2023-04-30T21:41:30.000000Z",
+                        "updated_at": "2023-04-30T21:41:30.000000Z",
+                        "published_at": "2023-04-30 21:41:30"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4282,
+                    "attributes": {
+                        "hub_id": 6068,
+                        "mod_id": 876,
+                        "version": "1.0.0",
+                        "link": "https://www.mediafire.com/file/a1r404rik6evlhh/Gilded_Key_Storage-1.0.0.zip/file",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1",
+                        "downloads": 751,
+                        "created_at": "2023-04-23T21:24:19.000000Z",
+                        "updated_at": "2023-04-23T21:24:19.000000Z",
+                        "published_at": "2023-04-23 21:24:19"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4763,
+                    "attributes": {
+                        "hub_id": 6774,
+                        "mod_id": 876,
+                        "version": "0.0.0",
+                        "link": "https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1",
+                        "downloads": 849,
+                        "created_at": "2023-07-17T02:21:51.000000Z",
+                        "updated_at": "2023-07-17T02:21:51.000000Z",
+                        "published_at": "2023-07-17 02:21:51"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4870,
+                    "attributes": {
+                        "hub_id": 6957,
+                        "mod_id": 876,
+                        "version": "0.0.0",
+                        "link": "https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1",
+                        "downloads": 2148,
+                        "created_at": "2023-08-03T00:44:04.000000Z",
+                        "updated_at": "2023-08-03T00:44:04.000000Z",
+                        "published_at": "2023-08-03 00:44:04"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5606,
+                    "attributes": {
+                        "hub_id": 7940,
+                        "mod_id": 876,
+                        "version": "0.0.0",
+                        "link": "https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.2.0/jehree-gildedkeystorage-1.2.0.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1",
+                        "downloads": 7495,
+                        "created_at": "2023-10-19T05:07:49.000000Z",
+                        "updated_at": "2023-10-19T05:07:49.000000Z",
+                        "published_at": "2023-10-19 05:07:49"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/876/gilded-key-storage"
+            }
+        },
+        {
+            "type": "mod",
+            "id": 1272,
+            "attributes": {
+                "hub_id": 1736,
+                "name": "GTFO",
+                "slug": "gtfo",
+                "teaser": "Want to learn maps visually for quests or extracts?  Use this visual learning tool that will show extracts and quest objectives that are available to you and the distance from your player's current position.",
+                "license_id": 11,
+                "source_code_link": "https://github.com/dvize/GTFO",
+                "featured": true,
+                "contains_ai_content": false,
+                "contains_ads": false,
+                "created_at": "2024-02-10T23:00:11.000000Z",
+                "updated_at": "2024-09-15T18:48:12.000000Z",
+                "published_at": "2024-02-10 23:00:11"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 15517
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/15517/props"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8399
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.2.1/dvize.GTFO-v1.2.1.0.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7907
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.2.0/dvize.GTFO-v1.2.0.0.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7512
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.1.6/dvize.GTFO-1.1.6.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7157
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.1.5/dvize.GTFOv1.1.5.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7122
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.1.4/dvize.GTFOv1.1.4.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7073
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.1.3/dvize.GTFOv1.1.3.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6910
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.1.2/dvize.GTFOv1.1.2.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6854
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.1.1/dvize.GTFOv1.1.1.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6848
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.1.0/dvize.GTFOv1.1.0.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6834
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.0.9/dvize.GTFOv1.0.9.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6746
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.0.8/dvize.GTFOv1.0.8.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6638
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.0.7/dvize.GTFOv1.07.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6489
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.0.6/dvize.GTFOv1.0.6.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6429
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.0.5/dvize.GTFOv1.0.5.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6425
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.0.4/dvize.GTFOv1.04.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6364
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.0.3/dvize.GTFOv1.0.3.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6362
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.0.2/dvize.GTFOv1.0.2.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6360
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.0.1/dvize.GTFOv1.01.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6359
+                        },
+                        "links": {
+                            "self": "https://github.com/dvize/GTFO/releases/download/v1.0.0/dvize.GTFOv1.0.zip"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 11
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 15517,
+                    "attributes": {
+                        "name": "Props",
+                        "user_role_id": null,
+                        "created_at": "2022-03-09T07:33:42.000000Z",
+                        "updated_at": "2024-09-15T18:43:01.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/15517/props"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 11,
+                    "attributes": {
+                        "name": "MIT License",
+                        "link": "https://choosealicense.com/licenses/mit/",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8399,
+                    "attributes": {
+                        "hub_id": 11171,
+                        "mod_id": 1272,
+                        "version": "1.2.1",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.2.1/dvize.GTFO-v1.2.1.0.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 8615,
+                        "created_at": "2024-08-01T18:39:59.000000Z",
+                        "updated_at": "2024-08-01T18:39:59.000000Z",
+                        "published_at": "2024-08-01 18:39:59"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7907,
+                    "attributes": {
+                        "hub_id": 10631,
+                        "mod_id": 1272,
+                        "version": "1.2.0",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.2.0/dvize.GTFO-v1.2.0.0.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 5831,
+                        "created_at": "2024-07-08T19:16:26.000000Z",
+                        "updated_at": "2024-07-08T19:16:26.000000Z",
+                        "published_at": "2024-07-08 19:16:26"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7512,
+                    "attributes": {
+                        "hub_id": 10196,
+                        "mod_id": 1272,
+                        "version": "1.1.6",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.1.6/dvize.GTFO-1.1.6.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 4414,
+                        "created_at": "2024-06-07T05:06:08.000000Z",
+                        "updated_at": "2024-06-07T05:06:08.000000Z",
+                        "published_at": "2024-06-07 05:06:08"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7157,
+                    "attributes": {
+                        "hub_id": 9793,
+                        "mod_id": 1272,
+                        "version": "1.1.5",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.1.5/dvize.GTFOv1.1.5.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 4289,
+                        "created_at": "2024-05-06T21:03:37.000000Z",
+                        "updated_at": "2024-05-06T21:03:37.000000Z",
+                        "published_at": "2024-05-06 21:03:37"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7122,
+                    "attributes": {
+                        "hub_id": 9754,
+                        "mod_id": 1272,
+                        "version": "1.1.4",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.1.4/dvize.GTFOv1.1.4.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 934,
+                        "created_at": "2024-05-04T19:34:13.000000Z",
+                        "updated_at": "2024-05-04T19:34:13.000000Z",
+                        "published_at": "2024-05-04 19:34:13"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7073,
+                    "attributes": {
+                        "hub_id": 9702,
+                        "mod_id": 1272,
+                        "version": "1.1.3",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.1.3/dvize.GTFOv1.1.3.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 1056,
+                        "created_at": "2024-05-01T14:10:43.000000Z",
+                        "updated_at": "2024-05-01T14:10:43.000000Z",
+                        "published_at": "2024-05-01 14:10:43"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6910,
+                    "attributes": {
+                        "hub_id": 9500,
+                        "mod_id": 1272,
+                        "version": "1.1.2",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.1.2/dvize.GTFOv1.1.2.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 2523,
+                        "created_at": "2024-04-17T07:59:17.000000Z",
+                        "updated_at": "2024-04-17T07:59:17.000000Z",
+                        "published_at": "2024-04-17 07:59:17"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6854,
+                    "attributes": {
+                        "hub_id": 9439,
+                        "mod_id": 1272,
+                        "version": "1.1.1",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.1.1/dvize.GTFOv1.1.1.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 614,
+                        "created_at": "2024-04-15T02:35:54.000000Z",
+                        "updated_at": "2024-04-15T02:35:54.000000Z",
+                        "published_at": "2024-04-15 02:35:54"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6848,
+                    "attributes": {
+                        "hub_id": 9433,
+                        "mod_id": 1272,
+                        "version": "1.1.0",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.1.0/dvize.GTFOv1.1.0.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 218,
+                        "created_at": "2024-04-14T20:13:34.000000Z",
+                        "updated_at": "2024-04-14T20:13:34.000000Z",
+                        "published_at": "2024-04-14 20:13:34"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6834,
+                    "attributes": {
+                        "hub_id": 9415,
+                        "mod_id": 1272,
+                        "version": "1.0.9",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.0.9/dvize.GTFOv1.0.9.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 551,
+                        "created_at": "2024-04-13T23:13:30.000000Z",
+                        "updated_at": "2024-04-13T23:13:30.000000Z",
+                        "published_at": "2024-04-13 23:13:30"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6746,
+                    "attributes": {
+                        "hub_id": 9318,
+                        "mod_id": 1272,
+                        "version": "1.0.8",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.0.8/dvize.GTFOv1.0.8.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 1315,
+                        "created_at": "2024-04-08T16:05:03.000000Z",
+                        "updated_at": "2024-04-08T16:05:03.000000Z",
+                        "published_at": "2024-04-08 16:05:03"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6638,
+                    "attributes": {
+                        "hub_id": 9187,
+                        "mod_id": 1272,
+                        "version": "1.0.7",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.0.7/dvize.GTFOv1.07.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 1475,
+                        "created_at": "2024-04-04T15:27:10.000000Z",
+                        "updated_at": "2024-04-04T15:27:10.000000Z",
+                        "published_at": "2024-04-04 15:27:10"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6489,
+                    "attributes": {
+                        "hub_id": 9019,
+                        "mod_id": 1272,
+                        "version": "1.0.6",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.0.6/dvize.GTFOv1.0.6.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 1808,
+                        "created_at": "2024-04-01T21:27:28.000000Z",
+                        "updated_at": "2024-04-01T21:27:28.000000Z",
+                        "published_at": "2024-04-01 21:27:28"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6429,
+                    "attributes": {
+                        "hub_id": 8932,
+                        "mod_id": 1272,
+                        "version": "1.0.5",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.0.5/dvize.GTFOv1.0.5.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 1485,
+                        "created_at": "2024-03-12T15:30:16.000000Z",
+                        "updated_at": "2024-03-12T15:30:16.000000Z",
+                        "published_at": "2024-03-12 15:30:16"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6425,
+                    "attributes": {
+                        "hub_id": 8925,
+                        "mod_id": 1272,
+                        "version": "1.0.4",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.0.4/dvize.GTFOv1.04.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 380,
+                        "created_at": "2024-03-10T00:45:37.000000Z",
+                        "updated_at": "2024-03-10T00:45:37.000000Z",
+                        "published_at": "2024-03-10 00:45:37"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6364,
+                    "attributes": {
+                        "hub_id": 8852,
+                        "mod_id": 1272,
+                        "version": "1.0.3",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.0.3/dvize.GTFOv1.0.3.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 3213,
+                        "created_at": "2024-02-12T19:53:18.000000Z",
+                        "updated_at": "2024-02-12T19:53:18.000000Z",
+                        "published_at": "2024-02-12 19:53:18"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6362,
+                    "attributes": {
+                        "hub_id": 8847,
+                        "mod_id": 1272,
+                        "version": "1.0.2",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.0.2/dvize.GTFOv1.0.2.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 339,
+                        "created_at": "2024-02-11T22:02:22.000000Z",
+                        "updated_at": "2024-02-11T22:02:22.000000Z",
+                        "published_at": "2024-02-11 22:02:22"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6360,
+                    "attributes": {
+                        "hub_id": 8845,
+                        "mod_id": 1272,
+                        "version": "1.0.1",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.0.1/dvize.GTFOv1.01.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 380,
+                        "created_at": "2024-02-11T05:44:31.000000Z",
+                        "updated_at": "2024-02-11T05:44:31.000000Z",
+                        "published_at": "2024-02-11 05:44:31"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6359,
+                    "attributes": {
+                        "hub_id": 8844,
+                        "mod_id": 1272,
+                        "version": "1.0.0",
+                        "link": "https://github.com/dvize/GTFO/releases/download/v1.0.0/dvize.GTFOv1.0.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1",
+                        "downloads": 195,
+                        "created_at": "2024-02-10T23:00:11.000000Z",
+                        "updated_at": "2024-02-10T23:00:11.000000Z",
+                        "published_at": "2024-02-10 23:00:11"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/1272/gtfo"
+            }
+        },
+        {
+            "type": "mod",
+            "id": 1333,
+            "attributes": {
+                "hub_id": 1810,
+                "name": "HandsAreNotBusy",
+                "slug": "handsarenotbusy",
+                "teaser": "Annoyed by the ancient \"Hands are busy\" bug?\r\nHandsAreNotBusy (HANB) is a mod that can fix certain scenarios of the \"Hands are busy\" bug for you!",
+                "license_id": 16,
+                "source_code_link": "https://github.com/Lacyway/HandsAreNotBusy",
+                "featured": true,
+                "contains_ai_content": false,
+                "contains_ads": false,
+                "created_at": "2024-04-10T11:16:45.000000Z",
+                "updated_at": "2024-09-15T18:48:12.000000Z",
+                "published_at": "2024-04-10 11:16:45"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 47971
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/47971/lacyway"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7779
+                        },
+                        "links": {
+                            "self": "https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.3/HandsAreNotBusy.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6929
+                        },
+                        "links": {
+                            "self": "https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.2/HandsAreNotBusy.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6777
+                        },
+                        "links": {
+                            "self": "https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.1/HandsAreNotBusy.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6774
+                        },
+                        "links": {
+                            "self": "https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.0/HandsAreNotBusy.zip"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 16
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 47971,
+                    "attributes": {
+                        "name": "Lacyway",
+                        "user_role_id": null,
+                        "created_at": "2024-04-09T17:00:56.000000Z",
+                        "updated_at": "2024-09-15T18:45:07.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/47971/lacyway"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 16,
+                    "attributes": {
+                        "name": "Creative Commons BY-NC-ND 4.0",
+                        "link": "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7779,
+                    "attributes": {
+                        "hub_id": 10495,
+                        "mod_id": 1333,
+                        "version": "1.3",
+                        "link": "https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.3/HandsAreNotBusy.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/4ea87db9cc55435c15a40134920f1a8dc1be235a939a3335c458267990b1c97e?nocache=1",
+                        "downloads": 10889,
+                        "created_at": "2024-07-06T20:09:47.000000Z",
+                        "updated_at": "2024-07-06T20:09:47.000000Z",
+                        "published_at": "2024-07-06 20:09:47"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6929,
+                    "attributes": {
+                        "hub_id": 9525,
+                        "mod_id": 1333,
+                        "version": "1.2",
+                        "link": "https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.2/HandsAreNotBusy.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/4ea87db9cc55435c15a40134920f1a8dc1be235a939a3335c458267990b1c97e?nocache=1",
+                        "downloads": 7789,
+                        "created_at": "2024-04-18T21:00:23.000000Z",
+                        "updated_at": "2024-04-18T21:00:23.000000Z",
+                        "published_at": "2024-04-18 21:00:23"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6777,
+                    "attributes": {
+                        "hub_id": 9351,
+                        "mod_id": 1333,
+                        "version": "1.1",
+                        "link": "https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.1/HandsAreNotBusy.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/4ea87db9cc55435c15a40134920f1a8dc1be235a939a3335c458267990b1c97e?nocache=1",
+                        "downloads": 1780,
+                        "created_at": "2024-04-10T13:25:11.000000Z",
+                        "updated_at": "2024-04-10T13:25:11.000000Z",
+                        "published_at": "2024-04-10 13:25:11"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6774,
+                    "attributes": {
+                        "hub_id": 9348,
+                        "mod_id": 1333,
+                        "version": "1.0.0",
+                        "link": "https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.0/HandsAreNotBusy.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/4ea87db9cc55435c15a40134920f1a8dc1be235a939a3335c458267990b1c97e?nocache=1",
+                        "downloads": 129,
+                        "created_at": "2024-04-10T11:16:45.000000Z",
+                        "updated_at": "2024-04-10T11:16:45.000000Z",
+                        "published_at": "2024-04-10 11:16:45"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/1333/handsarenotbusy"
+            }
+        },
+        {
+            "type": "mod",
+            "id": 920,
+            "attributes": {
+                "hub_id": 1230,
+                "name": "Item Sell Price",
+                "slug": "item-sell-price",
+                "teaser": "View selling prices for all traders who can buy an item, exactly as shown in the selling interface.",
+                "license_id": 14,
+                "source_code_link": "https://dev.sp-tarkov.com/IcyClawz/ClientMods",
+                "featured": true,
+                "contains_ai_content": false,
+                "contains_ads": false,
+                "created_at": "2023-06-05T13:27:04.000000Z",
+                "updated_at": "2024-09-15T18:48:12.000000Z",
+                "published_at": "2023-06-05 13:27:04"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 31544
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/31544/icyclawz"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7985
+                        },
+                        "links": {
+                            "self": "https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.9.0/ItemSellPrice-1.4.0.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6556
+                        },
+                        "links": {
+                            "self": "https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.8.0/ItemSellPrice-1.3.0.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5539
+                        },
+                        "links": {
+                            "self": "https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.7.1/ItemSellPrice-1.2.1.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 5329
+                        },
+                        "links": {
+                            "self": "https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.7.0/ItemSellPrice-1.2.0.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4838
+                        },
+                        "links": {
+                            "self": "https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.6.0/ItemSellPrice-1.1.0.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4589
+                        },
+                        "links": {
+                            "self": "https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/reupload/ItemSellPrice-1.0.2.zip"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 14
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 31544,
+                    "attributes": {
+                        "name": "IcyClawz",
+                        "user_role_id": null,
+                        "created_at": "2023-05-26T10:06:34.000000Z",
+                        "updated_at": "2024-09-15T18:44:03.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/31544/icyclawz"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 14,
+                    "attributes": {
+                        "name": "University of Illinois/NCSA Open Source License",
+                        "link": "https://choosealicense.com/licenses/ncsa/",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7985,
+                    "attributes": {
+                        "hub_id": 10720,
+                        "mod_id": 920,
+                        "version": "1.4.0",
+                        "link": "https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.9.0/ItemSellPrice-1.4.0.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5",
+                        "downloads": 21661,
+                        "created_at": "2024-07-10T20:20:35.000000Z",
+                        "updated_at": "2024-07-10T20:20:35.000000Z",
+                        "published_at": "2024-07-10 20:20:35"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6556,
+                    "attributes": {
+                        "hub_id": 9090,
+                        "mod_id": 920,
+                        "version": "1.3.0",
+                        "link": "https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.8.0/ItemSellPrice-1.3.0.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5",
+                        "downloads": 43284,
+                        "created_at": "2024-04-02T08:13:09.000000Z",
+                        "updated_at": "2024-04-02T08:13:09.000000Z",
+                        "published_at": "2024-04-02 08:13:09"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5539,
+                    "attributes": {
+                        "hub_id": 7854,
+                        "mod_id": 920,
+                        "version": "1.2.1",
+                        "link": "https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.7.1/ItemSellPrice-1.2.1.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5",
+                        "downloads": 37864,
+                        "created_at": "2023-10-15T10:50:21.000000Z",
+                        "updated_at": "2023-10-15T10:50:21.000000Z",
+                        "published_at": "2023-10-15 10:50:21"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 5329,
+                    "attributes": {
+                        "hub_id": 7594,
+                        "mod_id": 920,
+                        "version": "1.2.0",
+                        "link": "https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.7.0/ItemSellPrice-1.2.0.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5",
+                        "downloads": 3913,
+                        "created_at": "2023-10-09T00:29:10.000000Z",
+                        "updated_at": "2023-10-09T00:29:10.000000Z",
+                        "published_at": "2023-10-09 00:29:10"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4838,
+                    "attributes": {
+                        "hub_id": 6895,
+                        "mod_id": 920,
+                        "version": "1.1.0",
+                        "link": "https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.6.0/ItemSellPrice-1.1.0.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5",
+                        "downloads": 11729,
+                        "created_at": "2023-07-31T17:09:06.000000Z",
+                        "updated_at": "2023-07-31T17:09:06.000000Z",
+                        "published_at": "2023-07-31 17:09:06"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4589,
+                    "attributes": {
+                        "hub_id": 6498,
+                        "mod_id": 920,
+                        "version": "1.0.2",
+                        "link": "https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/reupload/ItemSellPrice-1.0.2.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5",
+                        "downloads": 4397,
+                        "created_at": "2023-06-17T13:01:45.000000Z",
+                        "updated_at": "2023-06-17T13:01:45.000000Z",
+                        "published_at": "2023-06-17 13:01:45"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/920/item-sell-price"
+            }
+        },
+        {
+            "type": "mod",
+            "id": 812,
+            "attributes": {
+                "hub_id": 1082,
+                "name": "LOE (Load Order Editor)",
+                "slug": "loe-load-order-editor",
+                "teaser": "A quick and simple tool to easily adjust the load ordering for server mods.",
+                "license_id": 11,
+                "source_code_link": "https://github.com/minihazel/LOE_Overhaul",
+                "featured": true,
+                "contains_ai_content": false,
+                "contains_ads": false,
+                "created_at": "2023-03-18T02:57:58.000000Z",
+                "updated_at": "2024-09-15T18:48:12.000000Z",
+                "published_at": "2023-03-18 02:57:58"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 20915
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/20915/devraccoon"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8070
+                        },
+                        "links": {
+                            "self": "https://github.com/minihazel/LOE_Overhaul/releases/download/2.5/Load.Order.Editor.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7798
+                        },
+                        "links": {
+                            "self": "https://github.com/minihazel/LOE_Overhaul/releases/download/2.4/Load.Order.Editor.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6845
+                        },
+                        "links": {
+                            "self": "https://github.com/minihazel/LOE_Overhaul/releases/download/2.3/Load.Order.Editor.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6812
+                        },
+                        "links": {
+                            "self": "https://github.com/minihazel/LOE_Overhaul/releases/download/2.2/Load.Order.Editor.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6659
+                        },
+                        "links": {
+                            "self": "https://github.com/minihazel/LOE_Overhaul/releases/download/2.1/Load.Order.Editor.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6658
+                        },
+                        "links": {
+                            "self": "https://github.com/minihazel/LOE_Overhaul/releases/download/2.0/Load.Order.Editor.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4301
+                        },
+                        "links": {
+                            "self": "https://github.com/minihazel/LoadOrderEditor/releases/download/1.5/Load.Order.Editor.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4099
+                        },
+                        "links": {
+                            "self": "https://github.com/minihazel/LoadOrderEditor/releases/tag/1.4"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4095
+                        },
+                        "links": {
+                            "self": "https://github.com/minihazel/LoadOrderEditor/releases/tag/1.3"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4042
+                        },
+                        "links": {
+                            "self": "https://github.com/minihazel/LoadOrderEditor/releases/tag/1.2"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4013
+                        },
+                        "links": {
+                            "self": "https://github.com/minihazel/LoadOrderEditor/releases/tag/1.1"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 4001
+                        },
+                        "links": {
+                            "self": "https://github.com/minihazel/LoadOrderEditor/releases/tag/1.0"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 11
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 20915,
+                    "attributes": {
+                        "name": "Devraccoon",
+                        "user_role_id": null,
+                        "created_at": "2022-07-23T23:58:07.000000Z",
+                        "updated_at": "2024-09-15T18:43:21.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/20915/devraccoon"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 11,
+                    "attributes": {
+                        "name": "MIT License",
+                        "link": "https://choosealicense.com/licenses/mit/",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8070,
+                    "attributes": {
+                        "hub_id": 10815,
+                        "mod_id": 812,
+                        "version": "2.5",
+                        "link": "https://github.com/minihazel/LOE_Overhaul/releases/download/2.5/Load.Order.Editor.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb",
+                        "downloads": 11283,
+                        "created_at": "2024-07-13T18:27:38.000000Z",
+                        "updated_at": "2024-07-13T18:27:38.000000Z",
+                        "published_at": "2024-07-13 18:27:38"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7798,
+                    "attributes": {
+                        "hub_id": 10515,
+                        "mod_id": 812,
+                        "version": "2.4",
+                        "link": "https://github.com/minihazel/LOE_Overhaul/releases/download/2.4/Load.Order.Editor.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb",
+                        "downloads": 1587,
+                        "created_at": "2024-07-06T23:17:54.000000Z",
+                        "updated_at": "2024-07-06T23:17:54.000000Z",
+                        "published_at": "2024-07-06 23:17:54"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6845,
+                    "attributes": {
+                        "hub_id": 9430,
+                        "mod_id": 812,
+                        "version": "2.3",
+                        "link": "https://github.com/minihazel/LOE_Overhaul/releases/download/2.3/Load.Order.Editor.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb",
+                        "downloads": 16372,
+                        "created_at": "2024-04-14T18:06:24.000000Z",
+                        "updated_at": "2024-04-14T18:06:24.000000Z",
+                        "published_at": "2024-04-14 18:06:24"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6812,
+                    "attributes": {
+                        "hub_id": 9390,
+                        "mod_id": 812,
+                        "version": "2.2",
+                        "link": "https://github.com/minihazel/LOE_Overhaul/releases/download/2.2/Load.Order.Editor.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb",
+                        "downloads": 799,
+                        "created_at": "2024-04-12T09:17:40.000000Z",
+                        "updated_at": "2024-04-12T09:17:40.000000Z",
+                        "published_at": "2024-04-12 09:17:40"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6659,
+                    "attributes": {
+                        "hub_id": 9213,
+                        "mod_id": 812,
+                        "version": "2.1",
+                        "link": "https://github.com/minihazel/LOE_Overhaul/releases/download/2.1/Load.Order.Editor.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb",
+                        "downloads": 1549,
+                        "created_at": "2024-04-05T05:01:58.000000Z",
+                        "updated_at": "2024-04-05T05:01:58.000000Z",
+                        "published_at": "2024-04-05 05:01:58"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6658,
+                    "attributes": {
+                        "hub_id": 9211,
+                        "mod_id": 812,
+                        "version": "2.0",
+                        "link": "https://github.com/minihazel/LOE_Overhaul/releases/download/2.0/Load.Order.Editor.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb",
+                        "downloads": 128,
+                        "created_at": "2024-04-05T03:43:19.000000Z",
+                        "updated_at": "2024-04-05T03:43:19.000000Z",
+                        "published_at": "2024-04-05 03:43:19"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4301,
+                    "attributes": {
+                        "hub_id": 6090,
+                        "mod_id": 812,
+                        "version": "1.5",
+                        "link": "https://github.com/minihazel/LoadOrderEditor/releases/download/1.5/Load.Order.Editor.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb",
+                        "downloads": 15676,
+                        "created_at": "2023-04-25T22:27:33.000000Z",
+                        "updated_at": "2023-04-25T22:27:33.000000Z",
+                        "published_at": "2023-04-25 22:27:33"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4099,
+                    "attributes": {
+                        "hub_id": 5808,
+                        "mod_id": 812,
+                        "version": "1.4",
+                        "link": "https://github.com/minihazel/LoadOrderEditor/releases/tag/1.4",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb",
+                        "downloads": 830,
+                        "created_at": "2023-03-31T16:43:45.000000Z",
+                        "updated_at": "2023-03-31T16:43:45.000000Z",
+                        "published_at": "2023-03-31 16:43:45"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4095,
+                    "attributes": {
+                        "hub_id": 5801,
+                        "mod_id": 812,
+                        "version": "1.3",
+                        "link": "https://github.com/minihazel/LoadOrderEditor/releases/tag/1.3",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb",
+                        "downloads": 135,
+                        "created_at": "2023-03-30T21:10:13.000000Z",
+                        "updated_at": "2023-03-30T21:10:13.000000Z",
+                        "published_at": "2023-03-30 21:10:13"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4042,
+                    "attributes": {
+                        "hub_id": 5733,
+                        "mod_id": 812,
+                        "version": "1.2",
+                        "link": "https://github.com/minihazel/LoadOrderEditor/releases/tag/1.2",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb",
+                        "downloads": 372,
+                        "created_at": "2023-03-23T13:26:02.000000Z",
+                        "updated_at": "2023-03-23T13:26:02.000000Z",
+                        "published_at": "2023-03-23 13:26:02"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4013,
+                    "attributes": {
+                        "hub_id": 5670,
+                        "mod_id": 812,
+                        "version": "1.1",
+                        "link": "https://github.com/minihazel/LoadOrderEditor/releases/tag/1.1",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb",
+                        "downloads": 306,
+                        "created_at": "2023-03-18T19:45:07.000000Z",
+                        "updated_at": "2023-03-18T19:45:07.000000Z",
+                        "published_at": "2023-03-18 19:45:07"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 4001,
+                    "attributes": {
+                        "hub_id": 5657,
+                        "mod_id": 812,
+                        "version": "1.0",
+                        "link": "https://github.com/minihazel/LoadOrderEditor/releases/tag/1.0",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb",
+                        "downloads": 153,
+                        "created_at": "2023-03-18T02:57:58.000000Z",
+                        "updated_at": "2023-03-18T02:57:58.000000Z",
+                        "published_at": "2023-03-18 02:57:58"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/812/loe-load-order-editor"
+            }
+        },
+        {
+            "type": "mod",
+            "id": 1385,
+            "attributes": {
+                "hub_id": 1870,
+                "name": "Loot Radius",
+                "slug": "loot-radius",
+                "teaser": "Ever get fed up trying to line your crosshair up just right to loot an item? No more! Now loot any loose loot nearby",
+                "license_id": 11,
+                "source_code_link": "https://github.com/DrakiaXYZ/SPT-LootRadius",
+                "featured": true,
+                "contains_ai_content": false,
+                "contains_ads": false,
+                "created_at": "2024-04-22T05:56:08.000000Z",
+                "updated_at": "2024-09-15T18:48:12.000000Z",
+                "published_at": "2024-04-22 05:56:08"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 27606
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/27606/drakiaxyz"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7766
+                        },
+                        "links": {
+                            "self": "https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.1.0/DrakiaXYZ-LootRadius-1.1.0.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6984
+                        },
+                        "links": {
+                            "self": "https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.0.1/DrakiaXYZ-LootRadius-1.0.1.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6978
+                        },
+                        "links": {
+                            "self": "https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.0.0/DrakiaXYZ-LootRadius-1.0.0.7z"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 11
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 27606,
+                    "attributes": {
+                        "name": "DrakiaXYZ",
+                        "user_role_id": 4,
+                        "created_at": "2023-02-26T18:51:50.000000Z",
+                        "updated_at": "2024-09-15T18:43:48.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": 4
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/27606/drakiaxyz"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 11,
+                    "attributes": {
+                        "name": "MIT License",
+                        "link": "https://choosealicense.com/licenses/mit/",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7766,
+                    "attributes": {
+                        "hub_id": 10482,
+                        "mod_id": 1385,
+                        "version": "1.1.0",
+                        "link": "https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.1.0/DrakiaXYZ-LootRadius-1.1.0.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/36d3110fcd1444d54fea8c631b5d4ed469602114609310f861c6228ee97cfede",
+                        "downloads": 18499,
+                        "created_at": "2024-07-06T19:18:48.000000Z",
+                        "updated_at": "2024-07-06T19:18:48.000000Z",
+                        "published_at": "2024-07-06 19:18:48"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6984,
+                    "attributes": {
+                        "hub_id": 9594,
+                        "mod_id": 1385,
+                        "version": "1.0.1",
+                        "link": "https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.0.1/DrakiaXYZ-LootRadius-1.0.1.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/36d3110fcd1444d54fea8c631b5d4ed469602114609310f861c6228ee97cfede",
+                        "downloads": 14698,
+                        "created_at": "2024-04-23T05:39:07.000000Z",
+                        "updated_at": "2024-04-23T05:39:07.000000Z",
+                        "published_at": "2024-04-23 05:39:07"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6978,
+                    "attributes": {
+                        "hub_id": 9582,
+                        "mod_id": 1385,
+                        "version": "1.0.0",
+                        "link": "https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.0.0/DrakiaXYZ-LootRadius-1.0.0.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/36d3110fcd1444d54fea8c631b5d4ed469602114609310f861c6228ee97cfede",
+                        "downloads": 983,
+                        "created_at": "2024-04-22T05:56:08.000000Z",
+                        "updated_at": "2024-04-22T05:56:08.000000Z",
+                        "published_at": "2024-04-22 05:56:08"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/1385/loot-radius"
+            }
+        },
+        {
+            "type": "mod",
+            "id": 1257,
+            "attributes": {
+                "hub_id": 1717,
+                "name": "Lotus",
+                "slug": "lotus",
+                "teaser": "Custom Trader with over 150+ Quests, 570+ sold and bartered items and a special keycard that gives infinite labs access.",
+                "license_id": 11,
+                "source_code_link": "",
+                "featured": true,
+                "contains_ai_content": false,
+                "contains_ads": false,
+                "created_at": "2024-01-17T20:08:28.000000Z",
+                "updated_at": "2024-09-15T18:48:12.000000Z",
+                "published_at": "2024-01-17 20:08:28"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 29461
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/29461/lunnayaluna"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8638
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.7/Lotus_v1.3.7_for_SPT_3.9_by_Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8609
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.6/Lotus_v1.3.6_for_SPT_3.9_by_Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8381
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.5/Lotus_v1.3.5_for_SPT_3.9_by_Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8379
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.4/Lotus_v1.3.4_for_SPT_3.9_by_Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8354
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.3/Lotus_v1.3.3_for_SPT_3.9_by_Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8041
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.2/Lotus.v1.3.2.for.SPT.3.9.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7969
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.1/Lotus.v1.3.1.for.SPT.3.9.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7937
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v.1.2.6/Lotus.v1.2.6.for.SPT.3.8.3.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7445
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.5/Lotus.v.1.2.5.for.SPT.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7305
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.4/Lotus.v.1.2.4.for.SPT.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7243
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.3/Lotus.v.1.2.3.for.SPT.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7174
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.2/Lotus.v.1.2.2.for.SPT.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7141
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.1/Lotus.v.1.2.0.for.SPT.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 7112
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.0/Lotus.v.1.2.0.for.SPT.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6959
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.15/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6950
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.14/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6842
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.13/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6815
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.12/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6791
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.11/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6765
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.10/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6761
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.9/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6744
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.8/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6712
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.7/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6694
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.6/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6671
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.5/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6631
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.4/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6619
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.3/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6582
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.2/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6572
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.1/Lotus.3.8.0.by.Lunnayaluna.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6524
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.0/Lotus.3.8.0.7z"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6349
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.0.5/user.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6311
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.0.4/user.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6286
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.3"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6271
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.2"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 6270
+                        },
+                        "links": {
+                            "self": "https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.0"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 11
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 29461,
+                    "attributes": {
+                        "name": "Lunnayaluna",
+                        "user_role_id": null,
+                        "created_at": "2023-03-30T19:06:34.000000Z",
+                        "updated_at": "2024-09-15T18:43:55.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/29461/lunnayaluna"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 11,
+                    "attributes": {
+                        "name": "MIT License",
+                        "link": "https://choosealicense.com/licenses/mit/",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8638,
+                    "attributes": {
+                        "hub_id": 11449,
+                        "mod_id": 1257,
+                        "version": "1.3.7",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.7/Lotus_v1.3.7_for_SPT_3.9_by_Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 4896,
+                        "created_at": "2024-08-22T17:43:33.000000Z",
+                        "updated_at": "2024-08-22T17:43:33.000000Z",
+                        "published_at": "2024-08-22 17:43:33"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8609,
+                    "attributes": {
+                        "hub_id": 11418,
+                        "mod_id": 1257,
+                        "version": "1.3.6",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.6/Lotus_v1.3.6_for_SPT_3.9_by_Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 932,
+                        "created_at": "2024-08-21T03:15:23.000000Z",
+                        "updated_at": "2024-08-21T03:15:23.000000Z",
+                        "published_at": "2024-08-21 03:15:23"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8381,
+                    "attributes": {
+                        "hub_id": 11153,
+                        "mod_id": 1257,
+                        "version": "1.3.5",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.5/Lotus_v1.3.5_for_SPT_3.9_by_Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 4859,
+                        "created_at": "2024-07-31T16:14:50.000000Z",
+                        "updated_at": "2024-07-31T16:14:50.000000Z",
+                        "published_at": "2024-07-31 16:14:50"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8379,
+                    "attributes": {
+                        "hub_id": 11151,
+                        "mod_id": 1257,
+                        "version": "1.3.4",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.4/Lotus_v1.3.4_for_SPT_3.9_by_Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 236,
+                        "created_at": "2024-07-31T12:13:30.000000Z",
+                        "updated_at": "2024-07-31T12:13:30.000000Z",
+                        "published_at": "2024-07-31 12:13:30"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8354,
+                    "attributes": {
+                        "hub_id": 11126,
+                        "mod_id": 1257,
+                        "version": "1.3.3",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.3/Lotus_v1.3.3_for_SPT_3.9_by_Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 867,
+                        "created_at": "2024-07-30T01:42:33.000000Z",
+                        "updated_at": "2024-07-30T01:42:33.000000Z",
+                        "published_at": "2024-07-30 01:42:33"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8041,
+                    "attributes": {
+                        "hub_id": 10783,
+                        "mod_id": 1257,
+                        "version": "1.3.2",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.2/Lotus.v1.3.2.for.SPT.3.9.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 5012,
+                        "created_at": "2024-07-12T17:54:10.000000Z",
+                        "updated_at": "2024-07-12T17:54:10.000000Z",
+                        "published_at": "2024-07-12 17:54:10"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7969,
+                    "attributes": {
+                        "hub_id": 10700,
+                        "mod_id": 1257,
+                        "version": "1.3.1",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.1/Lotus.v1.3.1.for.SPT.3.9.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 1242,
+                        "created_at": "2024-07-10T11:50:46.000000Z",
+                        "updated_at": "2024-07-10T11:50:46.000000Z",
+                        "published_at": "2024-07-10 11:50:46"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7937,
+                    "attributes": {
+                        "hub_id": 10665,
+                        "mod_id": 1257,
+                        "version": "1.2.6",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v.1.2.6/Lotus.v1.2.6.for.SPT.3.8.3.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 391,
+                        "created_at": "2024-07-09T13:24:21.000000Z",
+                        "updated_at": "2024-07-09T13:24:21.000000Z",
+                        "published_at": "2024-07-09 13:24:21"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7445,
+                    "attributes": {
+                        "hub_id": 10113,
+                        "mod_id": 1257,
+                        "version": "1.2.5",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.5/Lotus.v.1.2.5.for.SPT.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 6431,
+                        "created_at": "2024-05-31T11:28:45.000000Z",
+                        "updated_at": "2024-05-31T11:28:45.000000Z",
+                        "published_at": "2024-05-31 11:28:45"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7305,
+                    "attributes": {
+                        "hub_id": 9966,
+                        "mod_id": 1257,
+                        "version": "1.2.4",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.4/Lotus.v.1.2.4.for.SPT.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 3258,
+                        "created_at": "2024-05-18T11:21:23.000000Z",
+                        "updated_at": "2024-05-18T11:21:23.000000Z",
+                        "published_at": "2024-05-18 11:21:23"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7243,
+                    "attributes": {
+                        "hub_id": 9893,
+                        "mod_id": 1257,
+                        "version": "1.2.3",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.3/Lotus.v.1.2.3.for.SPT.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 1782,
+                        "created_at": "2024-05-13T09:59:03.000000Z",
+                        "updated_at": "2024-05-13T09:59:03.000000Z",
+                        "published_at": "2024-05-13 09:59:03"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7174,
+                    "attributes": {
+                        "hub_id": 9811,
+                        "mod_id": 1257,
+                        "version": "1.2.2",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.2/Lotus.v.1.2.2.for.SPT.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 2208,
+                        "created_at": "2024-05-08T10:35:41.000000Z",
+                        "updated_at": "2024-05-08T10:35:41.000000Z",
+                        "published_at": "2024-05-08 10:35:41"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7141,
+                    "attributes": {
+                        "hub_id": 9775,
+                        "mod_id": 1257,
+                        "version": "1.2.1",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.1/Lotus.v.1.2.0.for.SPT.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 1110,
+                        "created_at": "2024-05-06T10:18:00.000000Z",
+                        "updated_at": "2024-05-06T10:18:00.000000Z",
+                        "published_at": "2024-05-06 10:18:00"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 7112,
+                    "attributes": {
+                        "hub_id": 9743,
+                        "mod_id": 1257,
+                        "version": "1.2.0",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.0/Lotus.v.1.2.0.for.SPT.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 1650,
+                        "created_at": "2024-05-03T19:12:40.000000Z",
+                        "updated_at": "2024-05-03T19:12:40.000000Z",
+                        "published_at": "2024-05-03 19:12:40"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6959,
+                    "attributes": {
+                        "hub_id": 9557,
+                        "mod_id": 1257,
+                        "version": "1.1.15",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.15/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 4940,
+                        "created_at": "2024-04-20T21:01:19.000000Z",
+                        "updated_at": "2024-04-20T21:01:19.000000Z",
+                        "published_at": "2024-04-20 21:01:19"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6950,
+                    "attributes": {
+                        "hub_id": 9548,
+                        "mod_id": 1257,
+                        "version": "1.1.14",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.14/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 589,
+                        "created_at": "2024-04-20T11:10:23.000000Z",
+                        "updated_at": "2024-04-20T11:10:23.000000Z",
+                        "published_at": "2024-04-20 11:10:23"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6842,
+                    "attributes": {
+                        "hub_id": 9427,
+                        "mod_id": 1257,
+                        "version": "1.1.13",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.13/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 1666,
+                        "created_at": "2024-04-14T14:26:49.000000Z",
+                        "updated_at": "2024-04-14T14:26:49.000000Z",
+                        "published_at": "2024-04-14 14:26:49"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6815,
+                    "attributes": {
+                        "hub_id": 9393,
+                        "mod_id": 1257,
+                        "version": "1.1.12",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.12/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 1084,
+                        "created_at": "2024-04-12T12:12:27.000000Z",
+                        "updated_at": "2024-04-12T12:12:27.000000Z",
+                        "published_at": "2024-04-12 12:12:27"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6791,
+                    "attributes": {
+                        "hub_id": 9369,
+                        "mod_id": 1257,
+                        "version": "1.1.11",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.11/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 691,
+                        "created_at": "2024-04-11T14:16:04.000000Z",
+                        "updated_at": "2024-04-11T14:16:04.000000Z",
+                        "published_at": "2024-04-11 14:16:04"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6765,
+                    "attributes": {
+                        "hub_id": 9338,
+                        "mod_id": 1257,
+                        "version": "1.1.10",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.10/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 985,
+                        "created_at": "2024-04-09T19:53:42.000000Z",
+                        "updated_at": "2024-04-09T19:53:42.000000Z",
+                        "published_at": "2024-04-09 19:53:42"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6761,
+                    "attributes": {
+                        "hub_id": 9334,
+                        "mod_id": 1257,
+                        "version": "1.1.9",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.9/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 432,
+                        "created_at": "2024-04-09T14:37:50.000000Z",
+                        "updated_at": "2024-04-09T14:37:50.000000Z",
+                        "published_at": "2024-04-09 14:37:50"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6744,
+                    "attributes": {
+                        "hub_id": 9316,
+                        "mod_id": 1257,
+                        "version": "1.1.8",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.8/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 774,
+                        "created_at": "2024-04-08T15:02:48.000000Z",
+                        "updated_at": "2024-04-08T15:02:48.000000Z",
+                        "published_at": "2024-04-08 15:02:48"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6712,
+                    "attributes": {
+                        "hub_id": 9276,
+                        "mod_id": 1257,
+                        "version": "1.1.7",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.7/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 995,
+                        "created_at": "2024-04-06T19:51:02.000000Z",
+                        "updated_at": "2024-04-06T19:51:02.000000Z",
+                        "published_at": "2024-04-06 19:51:02"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6694,
+                    "attributes": {
+                        "hub_id": 9256,
+                        "mod_id": 1257,
+                        "version": "1.1.6",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.6/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 527,
+                        "created_at": "2024-04-06T10:28:52.000000Z",
+                        "updated_at": "2024-04-06T10:28:52.000000Z",
+                        "published_at": "2024-04-06 10:28:52"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6671,
+                    "attributes": {
+                        "hub_id": 9228,
+                        "mod_id": 1257,
+                        "version": "1.1.5",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.5/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 799,
+                        "created_at": "2024-04-05T13:21:05.000000Z",
+                        "updated_at": "2024-04-05T13:21:05.000000Z",
+                        "published_at": "2024-04-05 13:21:05"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6631,
+                    "attributes": {
+                        "hub_id": 9179,
+                        "mod_id": 1257,
+                        "version": "1.1.4",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.4/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 792,
+                        "created_at": "2024-04-04T12:02:52.000000Z",
+                        "updated_at": "2024-04-04T12:02:52.000000Z",
+                        "published_at": "2024-04-04 12:02:52"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6619,
+                    "attributes": {
+                        "hub_id": 9164,
+                        "mod_id": 1257,
+                        "version": "1.1.3",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.3/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 564,
+                        "created_at": "2024-04-03T21:40:31.000000Z",
+                        "updated_at": "2024-04-03T21:40:31.000000Z",
+                        "published_at": "2024-04-03 21:40:31"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6582,
+                    "attributes": {
+                        "hub_id": 9117,
+                        "mod_id": 1257,
+                        "version": "1.1.2",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.2/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 769,
+                        "created_at": "2024-04-02T20:10:25.000000Z",
+                        "updated_at": "2024-04-02T20:10:25.000000Z",
+                        "published_at": "2024-04-02 20:10:25"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6572,
+                    "attributes": {
+                        "hub_id": 9106,
+                        "mod_id": 1257,
+                        "version": "1.1.1",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.1/Lotus.3.8.0.by.Lunnayaluna.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 336,
+                        "created_at": "2024-04-02T12:47:53.000000Z",
+                        "updated_at": "2024-04-02T12:47:53.000000Z",
+                        "published_at": "2024-04-02 12:47:53"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6524,
+                    "attributes": {
+                        "hub_id": 9056,
+                        "mod_id": 1257,
+                        "version": "1.1.0",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.0/Lotus.3.8.0.7z",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 503,
+                        "created_at": "2024-04-02T00:32:34.000000Z",
+                        "updated_at": "2024-04-02T00:32:34.000000Z",
+                        "published_at": "2024-04-02 00:32:34"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6349,
+                    "attributes": {
+                        "hub_id": 8829,
+                        "mod_id": 1257,
+                        "version": "1.0.5",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.0.5/user.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 3624,
+                        "created_at": "2024-02-05T13:54:49.000000Z",
+                        "updated_at": "2024-02-05T13:54:49.000000Z",
+                        "published_at": "2024-02-05 13:54:49"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6311,
+                    "attributes": {
+                        "hub_id": 8787,
+                        "mod_id": 1257,
+                        "version": "1.0.4",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/download/v1.0.4/user.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 1415,
+                        "created_at": "2024-01-24T13:35:19.000000Z",
+                        "updated_at": "2024-01-24T13:35:19.000000Z",
+                        "published_at": "2024-01-24 13:35:19"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6286,
+                    "attributes": {
+                        "hub_id": 8761,
+                        "mod_id": 1257,
+                        "version": "1.0.3",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.3",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 927,
+                        "created_at": "2024-01-20T11:54:48.000000Z",
+                        "updated_at": "2024-01-20T11:54:48.000000Z",
+                        "published_at": "2024-01-20 11:54:48"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6271,
+                    "attributes": {
+                        "hub_id": 8746,
+                        "mod_id": 1257,
+                        "version": "1.0.2",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.2",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 738,
+                        "created_at": "2024-01-18T13:38:54.000000Z",
+                        "updated_at": "2024-01-18T13:38:54.000000Z",
+                        "published_at": "2024-01-18 13:38:54"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 6270,
+                    "attributes": {
+                        "hub_id": 8745,
+                        "mod_id": 1257,
+                        "version": "1.0.1",
+                        "link": "https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.0",
+                        "virus_total_link": "https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1",
+                        "downloads": 207,
+                        "created_at": "2024-01-18T05:37:45.000000Z",
+                        "updated_at": "2024-01-18T05:37:45.000000Z",
+                        "published_at": "2024-01-18 05:37:45"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/1257/lotus"
+            }
+        },
+        {
+            "type": "mod",
+            "id": 1778,
+            "attributes": {
+                "hub_id": 2305,
+                "name": "More Energy Drinks",
+                "slug": "more-energy-drinks",
+                "teaser": "Adds 12 unique energy drinks that range in rarity and provide interesting effects that your PMC can enjoy during raids. Now you can share your caffeine addiction with your PMC!",
+                "license_id": 11,
+                "source_code_link": "https://github.com/Hood26/Hoods-Energy-Drinks",
+                "featured": true,
+                "contains_ai_content": false,
+                "contains_ads": false,
+                "created_at": "2024-08-27T00:01:55.000000Z",
+                "updated_at": "2024-09-15T18:48:13.000000Z",
+                "published_at": "2024-08-27 00:01:55"
+            },
+            "relationships": {
+                "users": [
+                    {
+                        "data": {
+                            "type": "user",
+                            "id": 52388
+                        },
+                        "links": {
+                            "self": "http://forge.test/user/52388/hood"
+                        }
+                    }
+                ],
+                "versions": [
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8722
+                        },
+                        "links": {
+                            "self": "https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.2/HoodsEnergyDrinks1.0.2.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8712
+                        },
+                        "links": {
+                            "self": "https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.1/HoodsEnergyDrinks1.0.1.zip"
+                        }
+                    },
+                    {
+                        "data": {
+                            "type": "version",
+                            "id": 8696
+                        },
+                        "links": {
+                            "self": "https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.0/HoodsEnergyDrinks1.0.0.zip"
+                        }
+                    }
+                ],
+                "license": [
+                    {
+                        "data": {
+                            "type": "license",
+                            "id": 11
+                        }
+                    }
+                ]
+            },
+            "includes": [
+                {
+                    "type": "user",
+                    "id": 52388,
+                    "attributes": {
+                        "name": "Hood",
+                        "user_role_id": null,
+                        "created_at": "2024-05-21T21:49:53.000000Z",
+                        "updated_at": "2024-09-15T18:45:24.000000Z"
+                    },
+                    "relationships": {
+                        "user_role": {
+                            "data": {
+                                "type": "user_role",
+                                "id": null
+                            }
+                        }
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/52388/hood"
+                    }
+                },
+                {
+                    "type": "license",
+                    "id": 11,
+                    "attributes": {
+                        "name": "MIT License",
+                        "link": "https://choosealicense.com/licenses/mit/",
+                        "created_at": null,
+                        "updated_at": null
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8722,
+                    "attributes": {
+                        "hub_id": 11550,
+                        "mod_id": 1778,
+                        "version": "1.0.2",
+                        "link": "https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.2/HoodsEnergyDrinks1.0.2.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file-analysis/YTk2MzNhN2IyZDYzMzY5MWY1NzkzNDU1NWUxNzdkZTI6MTcyNDcxMTEyNw==",
+                        "downloads": 4693,
+                        "created_at": "2024-08-28T21:43:55.000000Z",
+                        "updated_at": "2024-08-28T21:43:55.000000Z",
+                        "published_at": "2024-08-28 21:43:55"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8712,
+                    "attributes": {
+                        "hub_id": 11540,
+                        "mod_id": 1778,
+                        "version": "1.0.1",
+                        "link": "https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.1/HoodsEnergyDrinks1.0.1.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file-analysis/YTk2MzNhN2IyZDYzMzY5MWY1NzkzNDU1NWUxNzdkZTI6MTcyNDcxMTEyNw==",
+                        "downloads": 578,
+                        "created_at": "2024-08-28T08:15:43.000000Z",
+                        "updated_at": "2024-08-28T08:15:43.000000Z",
+                        "published_at": "2024-08-28 08:15:43"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                },
+                {
+                    "type": "mod_version",
+                    "id": 8696,
+                    "attributes": {
+                        "hub_id": 11523,
+                        "mod_id": 1778,
+                        "version": "1.0.0",
+                        "link": "https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.0/HoodsEnergyDrinks1.0.0.zip",
+                        "virus_total_link": "https://www.virustotal.com/gui/file-analysis/YTk2MzNhN2IyZDYzMzY5MWY1NzkzNDU1NWUxNzdkZTI6MTcyNDcxMTEyNw==",
+                        "downloads": 1114,
+                        "created_at": "2024-08-27T00:01:55.000000Z",
+                        "updated_at": "2024-08-27T00:01:55.000000Z",
+                        "published_at": "2024-08-27 00:01:55"
+                    },
+                    "relationships": {
+                        "spt_version": [
+                            {
+                                "data": {
+                                    "type": "spt_version"
+                                }
+                            }
+                        ]
+                    }
+                }
+            ],
+            "links": {
+                "self": "http://forge.test/mod/1778/more-energy-drinks"
+            }
+        }
+    ],
+    "links": {
+        "first": "http://forge.test/api/v0/mods?page=1",
+        "last": "http://forge.test/api/v0/mods?page=116",
+        "prev": null,
+        "next": "http://forge.test/api/v0/mods?page=2"
+    },
+    "meta": {
+        "current_page": 1,
+        "from": 1,
+        "last_page": 116,
+        "links": [
+            {
+                "url": null,
+                "label": "&laquo; Previous",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/mods?page=1",
+                "label": "1",
+                "active": true
+            },
+            {
+                "url": "http://forge.test/api/v0/mods?page=2",
+                "label": "2",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/mods?page=3",
+                "label": "3",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/mods?page=4",
+                "label": "4",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/mods?page=5",
+                "label": "5",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/mods?page=6",
+                "label": "6",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/mods?page=7",
+                "label": "7",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/mods?page=8",
+                "label": "8",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/mods?page=9",
+                "label": "9",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/mods?page=10",
+                "label": "10",
+                "active": false
+            },
+            {
+                "url": null,
+                "label": "...",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/mods?page=115",
+                "label": "115",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/mods?page=116",
+                "label": "116",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/mods?page=2",
+                "label": "Next &raquo;",
+                "active": false
+            }
+        ],
+        "path": "http://forge.test/api/v0/mods",
+        "per_page": 15,
+        "to": 15,
+        "total": 1739
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v0/mods +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer YOUR_API_KEY

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ include   +string  +optional   + +
+

The relationships to include within the includes key. By default no relationships are automatically included. Example: users,versions,license

+
+
+ filter[id]   +string  +optional   + +
+

Filter by the id. Select multiple by separating the IDs with a comma. Example: 5,10,15

+
+
+ filter[hub_id]   +string  +optional   + +
+

Filter by the hub_id attribute. Select multiple by separating the IDs with a comma. Example: 20

+
+
+ filter[name]   +string  +optional   + +
+

Filter by the name attribute. Use * as the wildcard character. Example: *SAIN*

+
+
+ filter[slug]   +string  +optional   + +
+

Filter by the slug attribute. Use * as the wildcard character. Example: *raid-times

+
+
+ filter[teaser]   +string  +optional   + +
+

Filter by the teaser attribute. Use * as the wildcard character. Example: *weighted*random*times*

+
+
+ filter[source_code_link]   +string  +optional   + +
+

Filter by the source_code_link attribute. Use * as the wildcard character. Example: *https*.net*

+
+
+ filter[featured]   +boolean  +optional   + + +
+

Filter by the featured attribute. All "truthy" or "falsy" values are supported. Example: true

+
+
+ filter[contains_ads]   +boolean  +optional   + + +
+

Filter by the contains_ads attribute. All "truthy" or "falsy" values are supported. Example: true

+
+
+ filter[contains_ai_content]   +boolean  +optional   + + +
+

Filter by the contains_ai_content attribute. All "truthy" or "falsy" values are supported. Example: true

+
+
+ filter[created_at]   +string  +optional   + +
+

Filter by the created_at attribute. Ranges are possible by separating the dates with a comma. Example: 2023-12-31,2024-12-31

+
+
+ filter[updated_at]   +string  +optional   + +
+

Filter by the updated_at attribute. Ranges are possible by separating the dates with a comma. Example: 2023-12-31,2024-12-31

+
+
+ filter[published_at]   +string  +optional   + +
+

Filter by the published_at attribute. Ranges are possible by seperating the dates with a comma. Example: 2023-12-31,2024-12-31

+
+
+ sort   +string  +optional   + +
+

Sort the results by a comma seperated list of attributes. The default sort direction is ASC, append the attribute name with a minus to sort DESC. Example: -featured,name

+
+
+ +

Get Mod

+ +

+requires authentication +

+ +

Display more detailed information about a specific mod.

+ + +
Example request:
+ + +
+
const url = new URL(
+    "http://forge.test/api/v0/mods/558"
+);
+
+const params = {
+    "include": "users,versions,license",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer YOUR_API_KEY",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'http://forge.test/api/v0/mods/558';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer YOUR_API_KEY',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'include' => 'users,versions,license',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'http://forge.test/api/v0/mods/558'
+params = {
+  'include': 'users,versions,license',
+}
+headers = {
+  'Authorization': 'Bearer YOUR_API_KEY',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (200):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+access-control-allow-origin: *
+ 
+
+{
+    "data": {
+        "type": "mod",
+        "id": 558,
+        "attributes": {
+            "hub_id": 771,
+            "name": "Custom Raid Times",
+            "slug": "custom-raid-times",
+            "teaser": "Change the raid time of maps individually or override them all to one single time. Supports weighted, random times. Automatically adjusts the train schedules to fit within the new raid times.",
+            "description": " Custom Raid Times \n===================\n\n Features: \n-----------\n\n- Adjust global raid times, or raid times for individual maps.\n- Raid times can be random ranges, grouped, and weighted.\n- Extract train schedules automatically adjust to the new raid time. \n    - Earliest arrival time (given enough overall time) can be anywhere in between 35% to 80% of the total raid time, making train arrival less predictable and also more usable in extra long raids.\n    - The number of seconds the train waits before closing the doors and departing is now randomized; but always between 14 and 7 minutes.\n    - Raids can now be as short as 3 minutes and still have an active and functional train extract.\n \n To install: \n-------------\n\n1. Decompress the contents of the download into your root SPT directory.\n2. Open the CustomRaidTimes/config/config.json5 file to adjust raid time options.\n3. Leave a review and let me know what you think.\n\n Issues? \n---------\n\n- If you experience any problems, please [submit a detailed bug report.](https://github.com/refringe/CustomRaidTimes/issues)\n\n♥",
+            "license_id": 11,
+            "source_code_link": "https://github.com/refringe/CustomRaidTimes",
+            "featured": false,
+            "contains_ai_content": false,
+            "contains_ads": false,
+            "created_at": "2022-08-15T03:30:59.000000Z",
+            "updated_at": "2024-09-15T18:48:12.000000Z",
+            "published_at": "2022-08-15 03:30:59"
+        },
+        "relationships": {
+            "users": [
+                {
+                    "data": {
+                        "type": "user",
+                        "id": 14605
+                    },
+                    "links": {
+                        "self": "http://forge.test/user/14605/refringe"
+                    }
+                }
+            ],
+            "versions": [
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 8810
+                    },
+                    "links": {
+                        "self": "https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.3/refringe-customraidtimes-1.7.3.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 8099
+                    },
+                    "links": {
+                        "self": "https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.2/refringe-customraidtimes-1.7.2.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 7953
+                    },
+                    "links": {
+                        "self": "https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.1/refringe-customraidtimes-1.7.1.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 7931
+                    },
+                    "links": {
+                        "self": "https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.0/refringe-customraidtimes-1.7.0.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 6843
+                    },
+                    "links": {
+                        "self": "https://github.com/refringe/CustomRaidTimes/releases/download/v1.6.0/refringe-customraidtimes-1.6.0.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 5308
+                    },
+                    "links": {
+                        "self": "https://github.com/refringe/CustomRaidTimes/releases/download/v1.5.0/refringe-customraidtimes-1.5.0.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 5031
+                    },
+                    "links": {
+                        "self": "https://downloadthisfor.me/spt-aki-mods/refringe-customraidtimes-1.4.0.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 4672
+                    },
+                    "links": {
+                        "self": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.3.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 4084
+                    },
+                    "links": {
+                        "self": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.2.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 3813
+                    },
+                    "links": {
+                        "self": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.1.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 3671
+                    },
+                    "links": {
+                        "self": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.0.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 3370
+                    },
+                    "links": {
+                        "self": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.5.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 2851
+                    },
+                    "links": {
+                        "self": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.4.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 2776
+                    },
+                    "links": {
+                        "self": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.3.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 2771
+                    },
+                    "links": {
+                        "self": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.2.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 2712
+                    },
+                    "links": {
+                        "self": "https://downloadthisfor.me/spt-aki-mods/Dinkadactyl-CustomRaidTimes-1.2.1.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 2642
+                    },
+                    "links": {
+                        "self": "https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.2.0/CustomRaidTimes.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 2583
+                    },
+                    "links": {
+                        "self": "https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.1.0/CustomRaidTimes.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 2506
+                    },
+                    "links": {
+                        "self": "https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.0.2/CustomRaidTimes.zip"
+                    }
+                },
+                {
+                    "data": {
+                        "type": "version",
+                        "id": 2489
+                    },
+                    "links": {
+                        "self": "https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.0.1/CustomRaidTimes.zip"
+                    }
+                }
+            ],
+            "license": [
+                {
+                    "data": {
+                        "type": "license",
+                        "id": 11
+                    }
+                }
+            ]
+        },
+        "includes": [
+            {
+                "type": "user",
+                "id": 14605,
+                "attributes": {
+                    "name": "Refringe",
+                    "user_role_id": 4,
+                    "created_at": "2022-02-12T03:17:31.000000Z",
+                    "updated_at": "2024-09-16T21:23:28.000000Z"
+                },
+                "relationships": {
+                    "user_role": {
+                        "data": {
+                            "type": "user_role",
+                            "id": 4
+                        }
+                    }
+                },
+                "links": {
+                    "self": "http://forge.test/user/14605/refringe"
+                }
+            },
+            {
+                "type": "license",
+                "id": 11,
+                "attributes": {
+                    "name": "MIT License",
+                    "link": "https://choosealicense.com/licenses/mit/",
+                    "created_at": null,
+                    "updated_at": null
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 8810,
+                "attributes": {
+                    "hub_id": 11648,
+                    "mod_id": 558,
+                    "version": "1.7.3",
+                    "link": "https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.3/refringe-customraidtimes-1.7.3.zip",
+                    "virus_total_link": "",
+                    "downloads": 1227,
+                    "created_at": "2024-09-06T14:53:12.000000Z",
+                    "updated_at": "2024-09-06T14:53:12.000000Z",
+                    "published_at": "2024-09-06 14:53:12"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 8099,
+                "attributes": {
+                    "hub_id": 10846,
+                    "mod_id": 558,
+                    "version": "1.7.2",
+                    "link": "https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.2/refringe-customraidtimes-1.7.2.zip",
+                    "virus_total_link": "",
+                    "downloads": 7740,
+                    "created_at": "2024-07-15T00:57:52.000000Z",
+                    "updated_at": "2024-07-15T00:57:52.000000Z",
+                    "published_at": "2024-07-15 00:57:52"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 7953,
+                "attributes": {
+                    "hub_id": 10683,
+                    "mod_id": 558,
+                    "version": "1.7.1",
+                    "link": "https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.1/refringe-customraidtimes-1.7.1.zip",
+                    "virus_total_link": "",
+                    "downloads": 1740,
+                    "created_at": "2024-07-10T02:01:20.000000Z",
+                    "updated_at": "2024-07-10T02:01:20.000000Z",
+                    "published_at": "2024-07-10 02:01:20"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 7931,
+                "attributes": {
+                    "hub_id": 10659,
+                    "mod_id": 558,
+                    "version": "1.7.0",
+                    "link": "https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.0/refringe-customraidtimes-1.7.0.zip",
+                    "virus_total_link": "",
+                    "downloads": 705,
+                    "created_at": "2024-07-09T05:19:11.000000Z",
+                    "updated_at": "2024-07-09T05:19:11.000000Z",
+                    "published_at": "2024-07-09 05:19:11"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 6843,
+                "attributes": {
+                    "hub_id": 9428,
+                    "mod_id": 558,
+                    "version": "1.6.0",
+                    "link": "https://github.com/refringe/CustomRaidTimes/releases/download/v1.6.0/refringe-customraidtimes-1.6.0.zip",
+                    "virus_total_link": "",
+                    "downloads": 7748,
+                    "created_at": "2024-04-14T15:33:45.000000Z",
+                    "updated_at": "2024-04-14T15:33:45.000000Z",
+                    "published_at": "2024-04-14 15:33:45"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 5308,
+                "attributes": {
+                    "hub_id": 7570,
+                    "mod_id": 558,
+                    "version": "1.5.0",
+                    "link": "https://github.com/refringe/CustomRaidTimes/releases/download/v1.5.0/refringe-customraidtimes-1.5.0.zip",
+                    "virus_total_link": "",
+                    "downloads": 10343,
+                    "created_at": "2023-10-08T21:27:38.000000Z",
+                    "updated_at": "2023-10-08T21:27:38.000000Z",
+                    "published_at": "2023-10-08 21:27:38"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 5031,
+                "attributes": {
+                    "hub_id": 7195,
+                    "mod_id": 558,
+                    "version": "1.4.0",
+                    "link": "https://downloadthisfor.me/spt-aki-mods/refringe-customraidtimes-1.4.0.zip",
+                    "virus_total_link": "",
+                    "downloads": 2232,
+                    "created_at": "2023-08-23T04:56:28.000000Z",
+                    "updated_at": "2023-08-23T04:56:28.000000Z",
+                    "published_at": "2023-08-23 04:56:28"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 4672,
+                "attributes": {
+                    "hub_id": 6646,
+                    "mod_id": 558,
+                    "version": "1.3.3",
+                    "link": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.3.zip",
+                    "virus_total_link": "",
+                    "downloads": 2203,
+                    "created_at": "2023-06-29T04:44:08.000000Z",
+                    "updated_at": "2023-06-29T04:44:08.000000Z",
+                    "published_at": "2023-06-29 04:44:08"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 4084,
+                "attributes": {
+                    "hub_id": 5789,
+                    "mod_id": 558,
+                    "version": "1.3.2",
+                    "link": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.2.zip",
+                    "virus_total_link": "",
+                    "downloads": 2153,
+                    "created_at": "2023-03-29T03:39:01.000000Z",
+                    "updated_at": "2023-03-29T03:39:01.000000Z",
+                    "published_at": "2023-03-29 03:39:01"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 3813,
+                "attributes": {
+                    "hub_id": 5397,
+                    "mod_id": 558,
+                    "version": "1.3.1",
+                    "link": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.1.zip",
+                    "virus_total_link": "",
+                    "downloads": 1554,
+                    "created_at": "2023-03-03T02:16:29.000000Z",
+                    "updated_at": "2023-03-03T02:16:29.000000Z",
+                    "published_at": "2023-03-03 02:16:29"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 3671,
+                "attributes": {
+                    "hub_id": 5211,
+                    "mod_id": 558,
+                    "version": "1.3.0",
+                    "link": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.0.zip",
+                    "virus_total_link": "",
+                    "downloads": 1137,
+                    "created_at": "2023-02-15T21:28:41.000000Z",
+                    "updated_at": "2023-02-15T21:28:41.000000Z",
+                    "published_at": "2023-02-15 21:28:41"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 3370,
+                "attributes": {
+                    "hub_id": 4794,
+                    "mod_id": 558,
+                    "version": "1.2.5",
+                    "link": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.5.zip",
+                    "virus_total_link": "",
+                    "downloads": 1475,
+                    "created_at": "2023-01-08T18:30:28.000000Z",
+                    "updated_at": "2023-01-08T18:30:28.000000Z",
+                    "published_at": "2023-01-08 18:30:28"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 2851,
+                "attributes": {
+                    "hub_id": 4111,
+                    "mod_id": 558,
+                    "version": "1.2.4",
+                    "link": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.4.zip",
+                    "virus_total_link": "",
+                    "downloads": 1574,
+                    "created_at": "2022-10-05T02:30:28.000000Z",
+                    "updated_at": "2022-10-05T02:30:28.000000Z",
+                    "published_at": "2022-10-05 02:30:28"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 2776,
+                "attributes": {
+                    "hub_id": 4005,
+                    "mod_id": 558,
+                    "version": "1.2.3",
+                    "link": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.3.zip",
+                    "virus_total_link": "",
+                    "downloads": 841,
+                    "created_at": "2022-09-16T14:15:39.000000Z",
+                    "updated_at": "2022-09-16T14:15:39.000000Z",
+                    "published_at": "2022-09-16 14:15:39"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 2771,
+                "attributes": {
+                    "hub_id": 4000,
+                    "mod_id": 558,
+                    "version": "1.2.2",
+                    "link": "https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.2.zip",
+                    "virus_total_link": "",
+                    "downloads": 219,
+                    "created_at": "2022-09-14T15:22:53.000000Z",
+                    "updated_at": "2022-09-14T15:22:53.000000Z",
+                    "published_at": "2022-09-14 15:22:53"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 2712,
+                "attributes": {
+                    "hub_id": 3920,
+                    "mod_id": 558,
+                    "version": "1.2.1",
+                    "link": "https://downloadthisfor.me/spt-aki-mods/Dinkadactyl-CustomRaidTimes-1.2.1.zip",
+                    "virus_total_link": "",
+                    "downloads": 696,
+                    "created_at": "2022-09-02T18:16:54.000000Z",
+                    "updated_at": "2022-09-02T18:16:54.000000Z",
+                    "published_at": "2022-09-02 18:16:54"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 2642,
+                "attributes": {
+                    "hub_id": 3834,
+                    "mod_id": 558,
+                    "version": "1.2.0",
+                    "link": "https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.2.0/CustomRaidTimes.zip",
+                    "virus_total_link": "",
+                    "downloads": 244,
+                    "created_at": "2022-08-28T04:58:10.000000Z",
+                    "updated_at": "2022-08-28T04:58:10.000000Z",
+                    "published_at": "2022-08-28 04:58:10"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 2583,
+                "attributes": {
+                    "hub_id": 3759,
+                    "mod_id": 558,
+                    "version": "1.1.0",
+                    "link": "https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.1.0/CustomRaidTimes.zip",
+                    "virus_total_link": "",
+                    "downloads": 519,
+                    "created_at": "2022-08-20T06:08:38.000000Z",
+                    "updated_at": "2022-08-20T06:08:38.000000Z",
+                    "published_at": "2022-08-20 06:08:38"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 2506,
+                "attributes": {
+                    "hub_id": 3675,
+                    "mod_id": 558,
+                    "version": "1.0.2",
+                    "link": "https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.0.2/CustomRaidTimes.zip",
+                    "virus_total_link": "",
+                    "downloads": 325,
+                    "created_at": "2022-08-16T15:31:00.000000Z",
+                    "updated_at": "2022-08-16T15:31:00.000000Z",
+                    "published_at": "2022-08-16 15:31:00"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            },
+            {
+                "type": "mod_version",
+                "id": 2489,
+                "attributes": {
+                    "hub_id": 3655,
+                    "mod_id": 558,
+                    "version": "1.0.1",
+                    "link": "https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.0.1/CustomRaidTimes.zip",
+                    "virus_total_link": "",
+                    "downloads": 328,
+                    "created_at": "2022-08-15T04:11:53.000000Z",
+                    "updated_at": "2022-08-15T04:11:53.000000Z",
+                    "published_at": "2022-08-15 04:11:53"
+                },
+                "relationships": {
+                    "spt_version": [
+                        {
+                            "data": {
+                                "type": "spt_version"
+                            }
+                        }
+                    ]
+                }
+            }
+        ],
+        "links": {
+            "self": "http://forge.test/mod/558/custom-raid-times"
+        }
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v0/mods/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer YOUR_API_KEY

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the mod. Example: 558

+
+

Query Parameters

+
+ include   +string  +optional   + +
+

The relationships to include within the includes key. By default no relationships are automatically included. Example: users,versions,license

+
+
+ +

Users

+ + + +

Get Users

+ +

+requires authentication +

+ +

List, filter, and sort basic information about users.

+ + +
Example request:
+ + +
+
const url = new URL(
+    "http://forge.test/api/v0/users"
+);
+
+const params = {
+    "include": "user_role",
+    "filter[id]": "5,10,15",
+    "filter[name]": "*fringe",
+    "filter[created_at]": "2023-12-31,2024-12-31",
+    "filter[updated_at]": "2023-12-31,2024-12-31",
+    "sort": "created_at,-name",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer YOUR_API_KEY",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'http://forge.test/api/v0/users';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer YOUR_API_KEY',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'include' => 'user_role',
+            'filter[id]' => '5,10,15',
+            'filter[name]' => '*fringe',
+            'filter[created_at]' => '2023-12-31,2024-12-31',
+            'filter[updated_at]' => '2023-12-31,2024-12-31',
+            'sort' => 'created_at,-name',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'http://forge.test/api/v0/users'
+params = {
+  'include': 'user_role',
+  'filter[id]': '5,10,15',
+  'filter[name]': '*fringe',
+  'filter[created_at]': '2023-12-31,2024-12-31',
+  'filter[updated_at]': '2023-12-31,2024-12-31',
+  'sort': 'created_at,-name',
+}
+headers = {
+  'Authorization': 'Bearer YOUR_API_KEY',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (200):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+access-control-allow-origin: *
+ 
+
+{
+    "data": [
+        {
+            "type": "user",
+            "id": 2,
+            "attributes": {
+                "name": "Tyranidex#1942",
+                "user_role_id": null,
+                "created_at": "2020-06-11T09:40:21.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/2/tyranidex1942"
+            }
+        },
+        {
+            "type": "user",
+            "id": 3,
+            "attributes": {
+                "name": "AssAssIn#1193",
+                "user_role_id": null,
+                "created_at": "2020-06-15T16:07:01.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/3/assassin1193"
+            }
+        },
+        {
+            "type": "user",
+            "id": 4,
+            "attributes": {
+                "name": "Ivandrov#9094",
+                "user_role_id": null,
+                "created_at": "2020-06-15T23:03:26.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/4/ivandrov9094"
+            }
+        },
+        {
+            "type": "user",
+            "id": 5,
+            "attributes": {
+                "name": "Vengeance#6753",
+                "user_role_id": null,
+                "created_at": "2020-06-15T23:07:12.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/5/vengeance6753"
+            }
+        },
+        {
+            "type": "user",
+            "id": 6,
+            "attributes": {
+                "name": "RedNukem",
+                "user_role_id": null,
+                "created_at": "2020-06-15T23:10:29.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/6/rednukem"
+            }
+        },
+        {
+            "type": "user",
+            "id": 7,
+            "attributes": {
+                "name": "JazzFunkGreats",
+                "user_role_id": null,
+                "created_at": "2020-06-15T23:15:52.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/7/jazzfunkgreats"
+            }
+        },
+        {
+            "type": "user",
+            "id": 8,
+            "attributes": {
+                "name": "yimi",
+                "user_role_id": null,
+                "created_at": "2020-06-16T01:22:40.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/8/yimi"
+            }
+        },
+        {
+            "type": "user",
+            "id": 9,
+            "attributes": {
+                "name": "lubyankaxlf",
+                "user_role_id": null,
+                "created_at": "2020-06-16T01:43:09.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/9/lubyankaxlf"
+            }
+        },
+        {
+            "type": "user",
+            "id": 10,
+            "attributes": {
+                "name": "Stalbay#3177",
+                "user_role_id": null,
+                "created_at": "2020-06-16T01:51:08.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/10/stalbay3177"
+            }
+        },
+        {
+            "type": "user",
+            "id": 11,
+            "attributes": {
+                "name": "Drill#0596",
+                "user_role_id": null,
+                "created_at": "2020-06-16T01:55:19.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/11/drill0596"
+            }
+        },
+        {
+            "type": "user",
+            "id": 12,
+            "attributes": {
+                "name": "Samwise",
+                "user_role_id": null,
+                "created_at": "2020-06-16T03:59:58.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/12/samwise"
+            }
+        },
+        {
+            "type": "user",
+            "id": 13,
+            "attributes": {
+                "name": "ServeyVampiRe#2098",
+                "user_role_id": null,
+                "created_at": "2020-06-16T05:21:56.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/13/serveyvampire2098"
+            }
+        },
+        {
+            "type": "user",
+            "id": 14,
+            "attributes": {
+                "name": "Saaly",
+                "user_role_id": null,
+                "created_at": "2020-06-16T06:57:07.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/14/saaly"
+            }
+        },
+        {
+            "type": "user",
+            "id": 15,
+            "attributes": {
+                "name": "Meck",
+                "user_role_id": null,
+                "created_at": "2020-06-16T09:37:11.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/15/meck"
+            }
+        },
+        {
+            "type": "user",
+            "id": 16,
+            "attributes": {
+                "name": "Orion26",
+                "user_role_id": null,
+                "created_at": "2020-06-16T15:51:50.000000Z",
+                "updated_at": "2024-09-15T18:42:01.000000Z"
+            },
+            "relationships": {
+                "user_role": {
+                    "data": {
+                        "type": "user_role",
+                        "id": null
+                    }
+                }
+            },
+            "includes": null,
+            "links": {
+                "self": "http://forge.test/user/16/orion26"
+            }
+        }
+    ],
+    "links": {
+        "first": "http://forge.test/api/v0/users?page=1",
+        "last": "http://forge.test/api/v0/users?page=4262",
+        "prev": null,
+        "next": "http://forge.test/api/v0/users?page=2"
+    },
+    "meta": {
+        "current_page": 1,
+        "from": 1,
+        "last_page": 4262,
+        "links": [
+            {
+                "url": null,
+                "label": "&laquo; Previous",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/users?page=1",
+                "label": "1",
+                "active": true
+            },
+            {
+                "url": "http://forge.test/api/v0/users?page=2",
+                "label": "2",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/users?page=3",
+                "label": "3",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/users?page=4",
+                "label": "4",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/users?page=5",
+                "label": "5",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/users?page=6",
+                "label": "6",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/users?page=7",
+                "label": "7",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/users?page=8",
+                "label": "8",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/users?page=9",
+                "label": "9",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/users?page=10",
+                "label": "10",
+                "active": false
+            },
+            {
+                "url": null,
+                "label": "...",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/users?page=4261",
+                "label": "4261",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/users?page=4262",
+                "label": "4262",
+                "active": false
+            },
+            {
+                "url": "http://forge.test/api/v0/users?page=2",
+                "label": "Next &raquo;",
+                "active": false
+            }
+        ],
+        "path": "http://forge.test/api/v0/users",
+        "per_page": 15,
+        "to": 15,
+        "total": 63916
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v0/users +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer YOUR_API_KEY

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Query Parameters

+
+ include   +string  +optional   + +
+

The relationships to include within the includes key. By default no relationships are automatically included. Example: user_role

+
+
+ filter[id]   +string  +optional   + +
+

Filter by the id. Select multiple by separating the IDs with a comma. Example: 5,10,15

+
+
+ filter[name]   +string  +optional   + +
+

Filter by the name attribute. Use * as the wildcard character. Example: *fringe

+
+
+ filter[created_at]   +string  +optional   + +
+

Filter by the created_at attribute. Ranges are possible by separating the dates with a comma. Example: 2023-12-31,2024-12-31

+
+
+ filter[updated_at]   +string  +optional   + +
+

Filter by the updated_at attribute. Ranges are possible by separating the dates with a comma. Example: 2023-12-31,2024-12-31

+
+
+ sort   +string  +optional   + +
+

Sort the results by a comma seperated list of attributes. The default sort direction is ASC, append the attribute name with a minus to sort DESC. Example: created_at,-name

+
+
+ +

Get User

+ +

+requires authentication +

+ +

Display more detailed information about a specific user.

+ + +
Example request:
+ + +
+
const url = new URL(
+    "http://forge.test/api/v0/users/1"
+);
+
+const params = {
+    "include": "user_role",
+};
+Object.keys(params)
+    .forEach(key => url.searchParams.append(key, params[key]));
+
+const headers = {
+    "Authorization": "Bearer YOUR_API_KEY",
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'http://forge.test/api/v0/users/1';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Authorization' => 'Bearer YOUR_API_KEY',
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'query' => [
+            'include' => 'user_role',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ + +
+
import requests
+import json
+
+url = 'http://forge.test/api/v0/users/1'
+params = {
+  'include': 'user_role',
+}
+headers = {
+  'Authorization': 'Bearer YOUR_API_KEY',
+  'Content-Type': 'application/json',
+  'Accept': 'application/json'
+}
+
+response = requests.request('GET', url, headers=headers, params=params)
+response.json()
+ +
+ + +
+

Example response (200):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+access-control-allow-origin: *
+ 
+
+{
+    "data": {
+        "type": "user",
+        "id": 1,
+        "attributes": {
+            "name": "SPT Team",
+            "user_role_id": null,
+            "created_at": "2021-06-02T01:01:13.000000Z",
+            "updated_at": "2024-09-15T18:42:01.000000Z"
+        },
+        "relationships": {
+            "user_role": {
+                "data": {
+                    "type": "user_role",
+                    "id": null
+                }
+            }
+        },
+        "includes": null,
+        "links": {
+            "self": "http://forge.test/user/1/spt-team"
+        }
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/v0/users/{id} +

+

Headers

+
+ Authorization   +  +   + +
+

Example: Bearer YOUR_API_KEY

+
+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the user. Example: 1

+
+

Query Parameters

+
+ include   +string  +optional   + +
+

The relationships to include within the includes key. By default no relationships are automatically included. Example: user_role

+
+
+ + + + +
+
+
+ + + +
+
+
+ + diff --git a/public/docs/js/theme-default-4.37.2.js b/public/docs/js/theme-default-4.37.2.js new file mode 100644 index 0000000..31c8451 --- /dev/null +++ b/public/docs/js/theme-default-4.37.2.js @@ -0,0 +1,149 @@ +document.addEventListener('DOMContentLoaded', function() { + const updateHash = function (id) { + window.location.hash = `#${id}`; + }; + + const navButton = document.getElementById('nav-button'); + const menuWrapper = document.querySelector('.tocify-wrapper'); + function toggleSidebar(event) { + event.preventDefault(); + if (menuWrapper) { + menuWrapper.classList.toggle('open'); + navButton.classList.toggle('open'); + } + } + function closeSidebar() { + if (menuWrapper) { + menuWrapper.classList.remove('open'); + navButton.classList.remove('open'); + } + } + navButton.addEventListener('click', toggleSidebar); + + window.hljs.highlightAll(); + + const wrapper = document.getElementById('toc'); + // https://jets.js.org/ + window.jets = new window.Jets({ + // *OR - Selects elements whose values contains at least one part of search substring + searchSelector: '*OR', + searchTag: '#input-search', + contentTag: '#toc li', + didSearch: function(term) { + wrapper.classList.toggle('jets-searching', String(term).length > 0) + }, + // map these accent keys to plain values + diacriticsMap: { + a: 'ÀÁÂÃÄÅàáâãäåĀāąĄ', + c: 'ÇçćĆčČ', + d: 'đĐďĎ', + e: 'ÈÉÊËèéêëěĚĒēęĘ', + i: 'ÌÍÎÏìíîïĪī', + l: 'łŁ', + n: 'ÑñňŇńŃ', + o: 'ÒÓÔÕÕÖØòóôõöøŌō', + r: 'řŘ', + s: 'ŠšśŚ', + t: 'ťŤ', + u: 'ÙÚÛÜùúûüůŮŪū', + y: 'ŸÿýÝ', + z: 'ŽžżŻźŹ' + } + }); + + function hashChange() { + const currentItems = document.querySelectorAll('.tocify-subheader.visible, .tocify-item.tocify-focus'); + Array.from(currentItems).forEach((elem) => { + elem.classList.remove('visible', 'tocify-focus'); + }); + + const currentTag = document.querySelector(`a[href="${window.location.hash}"]`); + if (currentTag) { + const parent = currentTag.closest('.tocify-subheader'); + if (parent) { + parent.classList.add('visible'); + } + + const siblings = currentTag.closest('.tocify-header'); + if (siblings) { + Array.from(siblings.querySelectorAll('.tocify-subheader')).forEach((elem) => { + elem.classList.add('visible'); + }); + } + + currentTag.parentElement.classList.add('tocify-focus'); + + // wait for dom changes to be done + setTimeout(() => { + currentTag.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' }); + // only close the sidebar on level-2 events + if (currentTag.parentElement.classList.contains('level-2')) { + closeSidebar(); + } + }, 1500); + } + } + + let languages = JSON.parse(document.body.getAttribute('data-languages')); + // Support a key => value object where the key is the name, or an array of strings where the value is the name + if (!Array.isArray(languages)) { + languages = Object.values(languages); + } + // if there is no language use the first one + const currentLanguage = window.localStorage.getItem('language') || languages[0]; + const languageStyle = document.getElementById('language-style'); + const langSelector = document.querySelectorAll('.lang-selector button.lang-button'); + + function setActiveLanguage(newLanguage) { + window.localStorage.setItem('language', newLanguage); + if (!languageStyle) { + return; + } + + const newStyle = languages.map((language) => { + return language === newLanguage + // the current one should be visible + ? `body .content .${language}-example pre { display: block; }` + // the inactive one should be hidden + : `body .content .${language}-example pre { display: none; }`; + }).join(`\n`); + + Array.from(langSelector).forEach((elem) => { + elem.classList.toggle('active', elem.getAttribute('data-language-name') === newLanguage); + }); + + const activeHash = window.location.hash.slice(1); + + languageStyle.innerHTML = newStyle; + + setTimeout(() => { + updateHash(activeHash); + }, 200); + } + + setActiveLanguage(currentLanguage); + + Array.from(langSelector).forEach((elem) => { + elem.addEventListener('click', () => { + const newLanguage = elem.getAttribute('data-language-name'); + setActiveLanguage(newLanguage); + }); + }); + + window.addEventListener('hashchange', hashChange, false); + + const divs = document.querySelectorAll('.content h1[id], .content h2[id]'); + + document.addEventListener('scroll', () => { + divs.forEach(item => { + const rect = item.getBoundingClientRect(); + if (rect.top > 0 && rect.top < 150) { + const location = window.location.toString().split('#')[0]; + history.replaceState(null, null, location + '#' + item.id); + hashChange(); + } + }); + }); + + hashChange(); +}); diff --git a/public/docs/js/tryitout-4.37.2.js b/public/docs/js/tryitout-4.37.2.js new file mode 100644 index 0000000..01c584f --- /dev/null +++ b/public/docs/js/tryitout-4.37.2.js @@ -0,0 +1,277 @@ +window.abortControllers = {}; + +function cacheAuthValue() { + // Whenever the auth header is set for one endpoint, cache it for the others + window.lastAuthValue = ''; + let authInputs = document.querySelectorAll(`.auth-value`) + authInputs.forEach(el => { + el.addEventListener('input', (event) => { + window.lastAuthValue = event.target.value; + authInputs.forEach(otherInput => { + if (otherInput === el) return; + // Don't block the main thread + setTimeout(() => { + otherInput.value = window.lastAuthValue; + }, 0); + }); + }); + }); +} + +window.addEventListener('DOMContentLoaded', cacheAuthValue); + +function getCookie(name) { + if (!document.cookie) { + return null; + } + + const cookies = document.cookie.split(';') + .map(c => c.trim()) + .filter(c => c.startsWith(name + '=')); + + if (cookies.length === 0) { + return null; + } + + return decodeURIComponent(cookies[0].split('=')[1]); +} + +function tryItOut(endpointId) { + document.querySelector(`#btn-tryout-${endpointId}`).hidden = true; + document.querySelector(`#btn-canceltryout-${endpointId}`).hidden = false; + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`).hidden = false; + executeBtn.disabled = false; + + // Show all input fields + document.querySelectorAll(`input[data-endpoint=${endpointId}],label[data-endpoint=${endpointId}]`) + .forEach(el => el.style.display = 'block'); + + if (document.querySelector(`#form-${endpointId}`).dataset.authed === "1") { + const authElement = document.querySelector(`#auth-${endpointId}`); + authElement && (authElement.hidden = false); + } + // Expand all nested fields + document.querySelectorAll(`#form-${endpointId} details`) + .forEach(el => el.open = true); +} + +function cancelTryOut(endpointId) { + if (window.abortControllers[endpointId]) { + window.abortControllers[endpointId].abort(); + delete window.abortControllers[endpointId]; + } + + document.querySelector(`#btn-tryout-${endpointId}`).hidden = false; + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`); + executeBtn.hidden = true; + executeBtn.textContent = executeBtn.dataset.initialText; + document.querySelector(`#btn-canceltryout-${endpointId}`).hidden = true; + // Hide inputs + document.querySelectorAll(`input[data-endpoint=${endpointId}],label[data-endpoint=${endpointId}]`) + .forEach(el => el.style.display = 'none'); + document.querySelectorAll(`#form-${endpointId} details`) + .forEach(el => el.open = false); + const authElement = document.querySelector(`#auth-${endpointId}`); + authElement && (authElement.hidden = true); + + document.querySelector('#execution-results-' + endpointId).hidden = true; + document.querySelector('#execution-error-' + endpointId).hidden = true; + + // Revert to sample code blocks + document.querySelector('#example-requests-' + endpointId).hidden = false; + document.querySelector('#example-responses-' + endpointId).hidden = false; +} + +function makeAPICall(method, path, body = {}, query = {}, headers = {}, endpointId = null) { + console.log({endpointId, path, body, query, headers}); + + if (!(body instanceof FormData) && typeof body !== "string") { + body = JSON.stringify(body) + } + + const url = new URL(window.tryItOutBaseUrl + '/' + path.replace(/^\//, '')); + + // We need this function because if you try to set an array or object directly to a URLSearchParams object, + // you'll get [object Object] or the array.toString() + function addItemToSearchParamsObject(key, value, searchParams) { + if (Array.isArray(value)) { + value.forEach((v, i) => { + // Append {filters: [first, second]} as filters[0]=first&filters[1]second + addItemToSearchParamsObject(key + '[' + i + ']', v, searchParams); + }) + } else if (typeof value === 'object' && value !== null) { + Object.keys(value).forEach((i) => { + // Append {filters: {name: first}} as filters[name]=first + addItemToSearchParamsObject(key + '[' + i + ']', value[i], searchParams); + }); + } else { + searchParams.append(key, value); + } + } + + Object.keys(query) + .forEach(key => addItemToSearchParamsObject(key, query[key], url.searchParams)); + + window.abortControllers[endpointId] = new AbortController(); + + return fetch(url, { + method, + headers, + body: method === 'GET' ? undefined : body, + signal: window.abortControllers[endpointId].signal, + referrer: window.tryItOutBaseUrl, + mode: 'cors', + credentials: 'same-origin', + }) + .then(response => Promise.all([response.status, response.statusText, response.text(), response.headers])); +} + +function hideCodeSamples(endpointId) { + document.querySelector('#example-requests-' + endpointId).hidden = true; + document.querySelector('#example-responses-' + endpointId).hidden = true; +} + +function handleResponse(endpointId, response, status, headers) { + hideCodeSamples(endpointId); + + // Hide error views + document.querySelector('#execution-error-' + endpointId).hidden = true; + + const responseContentEl = document.querySelector('#execution-response-content-' + endpointId); + + // Prettify it if it's JSON + let isJson = false; + try { + const jsonParsed = JSON.parse(response); + if (jsonParsed !== null) { + isJson = true; + response = JSON.stringify(jsonParsed, null, 4); + } + } catch (e) { + + } + responseContentEl.textContent = response === '' ? responseContentEl.dataset.emptyResponseText : response; + isJson && window.hljs.highlightElement(responseContentEl); + const statusEl = document.querySelector('#execution-response-status-' + endpointId); + statusEl.textContent = ` (${status})`; + document.querySelector('#execution-results-' + endpointId).hidden = false; + statusEl.scrollIntoView({behavior: "smooth", block: "center"}); +} + +function handleError(endpointId, err) { + hideCodeSamples(endpointId); + // Hide response views + document.querySelector('#execution-results-' + endpointId).hidden = true; + + // Show error views + let errorMessage = err.message || err; + const $errorMessageEl = document.querySelector('#execution-error-message-' + endpointId); + $errorMessageEl.textContent = errorMessage + $errorMessageEl.textContent; + const errorEl = document.querySelector('#execution-error-' + endpointId); + errorEl.hidden = false; + errorEl.scrollIntoView({behavior: "smooth", block: "center"}); + +} + +async function executeTryOut(endpointId, form) { + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`); + executeBtn.textContent = executeBtn.dataset.loadingText; + executeBtn.disabled = true; + executeBtn.scrollIntoView({behavior: "smooth", block: "center"}); + + let body; + let setter; + if (form.dataset.hasfiles === "1") { + body = new FormData(); + setter = (name, value) => body.append(name, value); + } else if (form.dataset.isarraybody === "1") { + body = []; + setter = (name, value) => _.set(body, name, value); + } else { + body = {}; + setter = (name, value) => _.set(body, name, value); + } + const bodyParameters = form.querySelectorAll('input[data-component=body]'); + bodyParameters.forEach(el => { + let value = el.value; + + if (el.type === 'number' && typeof value === 'string') { + value = parseFloat(value); + } + + if (el.type === 'file' && el.files[0]) { + setter(el.name, el.files[0]); + return; + } + + if (el.type !== 'radio') { + if (value === "" && el.required === false) { + // Don't include empty optional values in the request + return; + } + setter(el.name, value); + return; + } + + if (el.checked) { + value = (value === 'false') ? false : true; + setter(el.name, value); + } + }); + + const query = {}; + const queryParameters = form.querySelectorAll('input[data-component=query]'); + queryParameters.forEach(el => { + if (el.type !== 'radio' || (el.type === 'radio' && el.checked)) { + if (el.value === '') { + // Don't include empty values in the request + return; + } + + _.set(query, el.name, el.value); + } + }); + + let path = form.dataset.path; + const urlParameters = form.querySelectorAll('input[data-component=url]'); + urlParameters.forEach(el => (path = path.replace(new RegExp(`\\{${el.name}\\??}`), el.value))); + + const headers = Object.fromEntries(Array.from(form.querySelectorAll('input[data-component=header]')) + .map(el => [el.name, el.value])); + + // When using FormData, the browser sets the correct content-type + boundary + let method = form.dataset.method; + if (body instanceof FormData) { + delete headers['Content-Type']; + + // When using FormData with PUT or PATCH, use method spoofing so PHP can access the post body + if (['PUT', 'PATCH'].includes(form.dataset.method)) { + method = 'POST'; + setter('_method', form.dataset.method); + } + } + + let preflightPromise = Promise.resolve(); + if (window.useCsrf && window.csrfUrl) { + preflightPromise = makeAPICall('GET', window.csrfUrl).then(() => { + headers['X-XSRF-TOKEN'] = getCookie('XSRF-TOKEN'); + }); + } + + return preflightPromise.then(() => makeAPICall(method, path, body, query, headers, endpointId)) + .then(([responseStatus, statusText, responseContent, responseHeaders]) => { + handleResponse(endpointId, responseContent, responseStatus, responseHeaders) + }) + .catch(err => { + if (err.name === "AbortError") { + console.log("Request cancelled"); + return; + } + console.log("Error while making request: ", err); + handleError(endpointId, err); + }) + .finally(() => { + executeBtn.disabled = false; + executeBtn.textContent = executeBtn.dataset.initialText; + }); +} diff --git a/public/docs/openapi.yaml b/public/docs/openapi.yaml new file mode 100644 index 0000000..f58a8c5 --- /dev/null +++ b/public/docs/openapi.yaml @@ -0,0 +1,15082 @@ +openapi: 3.0.3 +info: + title: 'The Forge API Documentation' + description: '' + version: 1.0.0 +servers: + - + url: 'http://forge.test' +paths: + /api/login: + post: + summary: Login + operationId: login + description: "Authenticates the user and returns a read-only API token. This API token can then be saved and used for future\nrequests that require authentication. " + parameters: [] + responses: + 200: + description: 'Authenticated successfully' + content: + application/json: + schema: + type: object + example: + message: authenticated + data: + token: YOUR_API_KEY + status: 200 + properties: + message: + type: string + example: authenticated + data: + type: object + properties: + token: + type: string + example: YOUR_API_KEY + status: + type: integer + example: 200 + 401: + description: 'Invalid credentials' + content: + application/json: + schema: + type: object + example: + message: 'invalid credentials' + status: 401 + properties: + message: + type: string + example: 'invalid credentials' + status: + type: integer + example: 401 + tags: + - Authentication + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + email: + type: string + description: 'Must be a valid email address.' + example: olson.margret@example.net + password: + type: string + description: '' + example: 'j/.0^{~eOsyx^' + token_name: + type: string + description: 'The name of the API token.' + example: 'Dynamic API Token' + required: + - email + - password + security: [] + /api/logout: + delete: + summary: Logout + operationId: logout + description: "Destroys the user's current API token, effectively logging them out." + parameters: [] + responses: + 200: + description: 'Token destroyed successfully' + content: + application/json: + schema: + type: object + example: + message: success + status: 200 + properties: + message: + type: string + example: success + status: + type: integer + example: 200 + tags: + - Authentication + /api/logout/all: + delete: + summary: 'Logout All' + operationId: logoutAll + description: "Destroys all the user's API tokens, effectively logging everyone out of the account." + parameters: [] + responses: + 200: + description: 'Tokens destroyed successfully' + content: + application/json: + schema: + type: object + example: + message: success + status: 200 + properties: + message: + type: string + example: success + status: + type: integer + example: 200 + tags: + - Authentication + /api/v0/mods: + get: + summary: 'Get Mods' + operationId: getMods + description: 'List, filter, and sort basic information about mods.' + parameters: + - + in: query + name: include + description: 'The relationships to include within the `includes` key. By default no relationships are automatically included.' + example: 'users,versions,license' + required: false + schema: + type: string + description: 'The relationships to include within the `includes` key. By default no relationships are automatically included.' + example: 'users,versions,license' + - + in: query + name: 'filter[id]' + description: 'Filter by the `id`. Select multiple by separating the IDs with a comma.' + example: '5,10,15' + required: false + schema: + type: string + description: 'Filter by the `id`. Select multiple by separating the IDs with a comma.' + example: '5,10,15' + - + in: query + name: 'filter[hub_id]' + description: 'Filter by the `hub_id` attribute. Select multiple by separating the IDs with a comma.' + example: '20' + required: false + schema: + type: string + description: 'Filter by the `hub_id` attribute. Select multiple by separating the IDs with a comma.' + example: '20' + - + in: query + name: 'filter[name]' + description: 'Filter by the `name` attribute. Use `*` as the wildcard character.' + example: '*SAIN*' + required: false + schema: + type: string + description: 'Filter by the `name` attribute. Use `*` as the wildcard character.' + example: '*SAIN*' + - + in: query + name: 'filter[slug]' + description: 'Filter by the `slug` attribute. Use `*` as the wildcard character.' + example: '*raid-times' + required: false + schema: + type: string + description: 'Filter by the `slug` attribute. Use `*` as the wildcard character.' + example: '*raid-times' + - + in: query + name: 'filter[teaser]' + description: 'Filter by the `teaser` attribute. Use `*` as the wildcard character.' + example: '*weighted*random*times*' + required: false + schema: + type: string + description: 'Filter by the `teaser` attribute. Use `*` as the wildcard character.' + example: '*weighted*random*times*' + - + in: query + name: 'filter[source_code_link]' + description: 'Filter by the `source_code_link` attribute. Use `*` as the wildcard character.' + example: '*https*.net*' + required: false + schema: + type: string + description: 'Filter by the `source_code_link` attribute. Use `*` as the wildcard character.' + example: '*https*.net*' + - + in: query + name: 'filter[featured]' + description: 'Filter by the `featured` attribute. All "truthy" or "falsy" values are supported.' + example: 'true' + required: false + schema: + type: boolean + description: 'Filter by the `featured` attribute. All "truthy" or "falsy" values are supported.' + example: 'true' + - + in: query + name: 'filter[contains_ads]' + description: 'Filter by the `contains_ads` attribute. All "truthy" or "falsy" values are supported.' + example: 'true' + required: false + schema: + type: boolean + description: 'Filter by the `contains_ads` attribute. All "truthy" or "falsy" values are supported.' + example: 'true' + - + in: query + name: 'filter[contains_ai_content]' + description: 'Filter by the `contains_ai_content` attribute. All "truthy" or "falsy" values are supported.' + example: 'true' + required: false + schema: + type: boolean + description: 'Filter by the `contains_ai_content` attribute. All "truthy" or "falsy" values are supported.' + example: 'true' + - + in: query + name: 'filter[created_at]' + description: 'Filter by the `created_at` attribute. Ranges are possible by separating the dates with a comma.' + example: '2023-12-31,2024-12-31' + required: false + schema: + type: string + description: 'Filter by the `created_at` attribute. Ranges are possible by separating the dates with a comma.' + example: '2023-12-31,2024-12-31' + - + in: query + name: 'filter[updated_at]' + description: 'Filter by the `updated_at` attribute. Ranges are possible by separating the dates with a comma.' + example: '2023-12-31,2024-12-31' + required: false + schema: + type: string + description: 'Filter by the `updated_at` attribute. Ranges are possible by separating the dates with a comma.' + example: '2023-12-31,2024-12-31' + - + in: query + name: 'filter[published_at]' + description: 'Filter by the `published_at` attribute. Ranges are possible by seperating the dates with a comma.' + example: '2023-12-31,2024-12-31' + required: false + schema: + type: string + description: 'Filter by the `published_at` attribute. Ranges are possible by seperating the dates with a comma.' + example: '2023-12-31,2024-12-31' + - + in: query + name: sort + description: 'Sort the results by a comma seperated list of attributes. The default sort direction is ASC, append the attribute name with a minus to sort DESC.' + example: '-featured,name' + required: false + schema: + type: string + description: 'Sort the results by a comma seperated list of attributes. The default sort direction is ASC, append the attribute name with a minus to sort DESC.' + example: '-featured,name' + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + - + type: mod + id: 1578 + attributes: + hub_id: 2084 + name: 'Assort editor' + slug: assort-editor + teaser: "A webtool to edit your existing trader assort prices, for balancing reasons.\r\n\r\n2 boxes of matches a bit too cheap for that fully kitted MDR762, but you like the mod otherwise? This can fix that in an easy to understand way. No fiddling with .json files!" + license_id: 11 + source_code_link: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor' + featured: true + contains_ai_content: true + contains_ads: false + created_at: '2024-07-03T18:05:35.000000Z' + updated_at: '2024-09-15T18:48:13.000000Z' + published_at: '2024-07-03 18:05:35' + relationships: + users: + - + data: + type: user + id: 28317 + links: + self: 'http://forge.test/user/28317/archon0ne' + versions: + - + data: + type: version + id: 7745 + links: + self: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor/releases/download/1.1.0/Assort_Editor.zip' + - + data: + type: version + id: 7739 + links: + self: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor/archive/main.zip' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 28317 + attributes: + name: archon0ne + user_role_id: null + created_at: '2023-03-09T14:05:22.000000Z' + updated_at: '2024-09-15T18:43:50.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/28317/archon0ne' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 7745 + attributes: + hub_id: 10456 + mod_id: 1578 + version: 1.1.0 + link: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor/releases/download/1.1.0/Assort_Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/url/c59d29876cb827c82bcc93082a7b71407d42a76d2e7509dd1710b7f913773253?nocache=1' + downloads: 1535 + created_at: '2024-07-04T09:59:54.000000Z' + updated_at: '2024-07-04T09:59:54.000000Z' + published_at: '2024-07-04 09:59:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7739 + attributes: + hub_id: 10450 + mod_id: 1578 + version: 1.0.0 + link: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor/archive/main.zip' + virus_total_link: 'https://www.virustotal.com/gui/url/c59d29876cb827c82bcc93082a7b71407d42a76d2e7509dd1710b7f913773253?nocache=1' + downloads: 110 + created_at: '2024-07-03T18:05:35.000000Z' + updated_at: '2024-07-03T18:05:35.000000Z' + published_at: '2024-07-03 18:05:35' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1578/assort-editor' + - + type: mod + id: 1525 + attributes: + hub_id: 2027 + name: AutoDeposit + slug: autodeposit + teaser: "Transfer items into stash containers with matching items, inspired by Terraria's Quick Stack." + license_id: 11 + source_code_link: 'https://github.com/tyfon7/AutoDeposit' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-06-07T08:03:44.000000Z' + updated_at: '2024-09-15T18:48:13.000000Z' + published_at: '2024-06-07 08:03:44' + relationships: + users: + - + data: + type: user + id: 46006 + links: + self: 'http://forge.test/user/46006/tyfon' + versions: + - + data: + type: version + id: 7812 + links: + self: 'https://github.com/tyfon7/AutoDeposit/releases/download/v2.0.0/Tyfon-AutoDeposit-2.0.0.7z' + - + data: + type: version + id: 7751 + links: + self: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.3/Tyfon-AutoDeposit-1.0.3.7z' + - + data: + type: version + id: 7549 + links: + self: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.2/Tyfon-AutoDeposit-1.0.2.7z' + - + data: + type: version + id: 7518 + links: + self: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.1/Tyfon-AutoDeposit-1.0.1.7z' + - + data: + type: version + id: 7513 + links: + self: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.0/Tyfon-AutoDeposit-1.0.0.7z' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 46006 + attributes: + name: Tyfon + user_role_id: null + created_at: '2024-02-27T23:21:18.000000Z' + updated_at: '2024-09-15T18:44:59.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/46006/tyfon' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 7812 + attributes: + hub_id: 10530 + mod_id: 1525 + version: 2.0.0 + link: 'https://github.com/tyfon7/AutoDeposit/releases/download/v2.0.0/Tyfon-AutoDeposit-2.0.0.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6' + downloads: 12691 + created_at: '2024-07-07T05:11:46.000000Z' + updated_at: '2024-07-07T05:11:46.000000Z' + published_at: '2024-07-07 05:11:46' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7751 + attributes: + hub_id: 10465 + mod_id: 1525 + version: 1.0.3 + link: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.3/Tyfon-AutoDeposit-1.0.3.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6' + downloads: 599 + created_at: '2024-07-05T21:51:16.000000Z' + updated_at: '2024-07-05T21:51:16.000000Z' + published_at: '2024-07-05 21:51:16' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7549 + attributes: + hub_id: 10238 + mod_id: 1525 + version: 1.0.2 + link: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.2/Tyfon-AutoDeposit-1.0.2.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6' + downloads: 3723 + created_at: '2024-06-09T23:09:06.000000Z' + updated_at: '2024-06-09T23:09:06.000000Z' + published_at: '2024-06-09 23:09:06' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7518 + attributes: + hub_id: 10203 + mod_id: 1525 + version: 1.0.1 + link: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.1/Tyfon-AutoDeposit-1.0.1.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6' + downloads: 978 + created_at: '2024-06-07T19:45:09.000000Z' + updated_at: '2024-06-07T19:45:09.000000Z' + published_at: '2024-06-07 19:45:09' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7513 + attributes: + hub_id: 10197 + mod_id: 1525 + version: 1.0.0 + link: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.0/Tyfon-AutoDeposit-1.0.0.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6' + downloads: 477 + created_at: '2024-06-07T08:03:44.000000Z' + updated_at: '2024-06-07T08:03:44.000000Z' + published_at: '2024-06-07 08:03:44' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1525/autodeposit' + - + type: mod + id: 966 + attributes: + hub_id: 1303 + name: "Borkel's Realistic Night Vision Goggles (NVGs and T-7)" + slug: borkels-realistic-night-vision-goggles-nvgs-and-t-7 + teaser: 'Now with new realistic NVG masks and natural light outside the tubes. I looked at real life NVGs and I tried to imitate them ingame. Customizable ingame (colors and everything).' + license_id: 5 + source_code_link: 'https://github.com/Borkel/RealisticNVG-client-2/tree/master' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2023-06-30T20:48:45.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2023-06-30 20:48:45' + relationships: + users: + - + data: + type: user + id: 28437 + links: + self: 'http://forge.test/user/28437/borkel' + versions: + - + data: + type: version + id: 6345 + links: + self: 'https://drive.google.com/file/d/1hU4OrrTuvTPvVawG0y-XYRHHBDudGQMi/view?usp=sharing' + - + data: + type: version + id: 6341 + links: + self: 'https://drive.google.com/file/d/172O9iwpnGwAhvd8_TEboHq5FZT1z8jAg/view?usp=sharing' + - + data: + type: version + id: 6103 + links: + self: 'https://drive.google.com/file/d/1uj7w_y-G07ZgRH5zCiWmfx3CpYo22h5U/view?usp=sharing' + - + data: + type: version + id: 5937 + links: + self: 'https://drive.google.com/file/d/1BLekIeILG3JIrmurMGeDIY07y2-QCL2d/view?usp=sharing' + - + data: + type: version + id: 5909 + links: + self: 'https://drive.google.com/file/d/17o_qSxFg7cX0eCAWBFJdGsw2N-F9MNeq/view?usp=sharing' + - + data: + type: version + id: 5877 + links: + self: 'https://drive.google.com/file/d/1wlOwE3_yn5OIz3NcInC3mHmXx2t7G3_2/view?usp=sharing' + - + data: + type: version + id: 5803 + links: + self: 'https://drive.google.com/file/d/15ummKgeDafpZSoxBMxSjKEyZj3TNgKF7/view?usp=sharing' + - + data: + type: version + id: 5794 + links: + self: 'https://drive.google.com/file/d/16ndU_sSA8tY2QSNL-WDOeHFEaWVbIzDF/view?usp=sharing' + - + data: + type: version + id: 5783 + links: + self: 'https://drive.google.com/file/d/18ehvL906RTjOTCyPLXzFdSIyTJ9MzI0P/view?usp=sharing' + - + data: + type: version + id: 5648 + links: + self: 'https://drive.google.com/file/d/1suGNK4UFWQueyzU_LSgSd-Cgr8FK5wLs/view?usp=sharing' + - + data: + type: version + id: 5508 + links: + self: 'https://drive.google.com/file/d/1mkkiFekuoQLB4-SjsKqAnHE6hCGirHIS/view?usp=sharing' + - + data: + type: version + id: 5324 + links: + self: 'https://drive.google.com/file/d/1jTfyoj2s-V97rTob02vO46h_uSU2QSHJ/view?usp=sharing' + - + data: + type: version + id: 5263 + links: + self: 'https://drive.google.com/file/d/1aS0DUizGuZ0aZ_Bjrswx34o4Vtl6Zt98/view?usp=sharing' + - + data: + type: version + id: 5094 + links: + self: 'https://drive.google.com/file/d/1P_9nkNcOB_AR9PrsyGBGX1cyVLn2Oixg/view?usp=sharing' + - + data: + type: version + id: 4881 + links: + self: 'https://drive.google.com/file/d/1Rey1qKs76Svxhx8zAIHEcISDO5Yd3qz2/view?usp=sharing' + - + data: + type: version + id: 4731 + links: + self: 'https://drive.google.com/file/d/1sv1Sw5ctGugA3pYW0WJSi8jAJtRzne-F/view?usp=sharing' + - + data: + type: version + id: 4687 + links: + self: 'https://drive.google.com/file/d/1GsL5eWaRmkSpdCg43I46CP5HONeaF8uA/view?usp=sharing' + - + data: + type: version + id: 6352 + links: + self: 'https://drive.google.com/file/d/1nWR9yC1YBu7oirxqZtus7MVwU7JV_OhG/view?usp=sharing' + - + data: + type: version + id: 6354 + links: + self: 'https://drive.google.com/file/d/1WVEWhH4d77lo81OhIM4y54OMNPyDUVfi/view?usp=sharing' + - + data: + type: version + id: 6356 + links: + self: 'https://drive.google.com/file/d/1LiYK6I4PbbLl6tnPQFWKSKfcbvc5dRYk/view?usp=sharing' + - + data: + type: version + id: 6358 + links: + self: 'https://drive.google.com/file/d/15UJK7kD_DpFhcjsTgl3L-zcM6QoRZhWn/view?usp=sharing' + - + data: + type: version + id: 6365 + links: + self: 'https://drive.google.com/file/d/1dHLlSh6WLFxPfzMEgxVpVxum2dEZm3qr/view?usp=sharing' + - + data: + type: version + id: 6374 + links: + self: 'https://drive.google.com/file/d/11FwY8gWE1ZU0Vh0rvItR7OLn0Jx9bY-W/view?usp=sharing' + - + data: + type: version + id: 6384 + links: + self: 'https://drive.google.com/file/d/1KDTMPJL-oh9M_FafQZ5cStzEeg8-YCOB/view?usp=sharing' + - + data: + type: version + id: 6398 + links: + self: 'https://drive.google.com/file/d/1VPMh6KxOJppiiO-jHhNb6ZpWzCI8AnTo/view?usp=sharing' + - + data: + type: version + id: 6408 + links: + self: 'https://drive.google.com/file/d/1xWOgtPdFuFRjd4RdIuLYhH8Qyw382nN_/view?usp=sharing' + - + data: + type: version + id: 6421 + links: + self: 'https://drive.google.com/file/d/1mZMD1GS879djCNtC-BypCT0DWvzTI_ZZ/view?usp=sharing' + - + data: + type: version + id: 6641 + links: + self: 'https://drive.google.com/file/d/1vvuCBVp90xsmst5jGqBvpsfW8I6h9anz/view?usp=sharing' + - + data: + type: version + id: 6728 + links: + self: 'https://drive.google.com/file/d/1v-pFeMqGaDfovxNtef2NzG0G2Z9I52Cz/view?usp=sharing' + - + data: + type: version + id: 7113 + links: + self: 'https://drive.google.com/file/d/1OWl4GXbaw-Zg3WK0llroMIxBPILKrWst/view?usp=sharing' + - + data: + type: version + id: 7167 + links: + self: 'https://drive.google.com/file/d/1d-ujV0Y3exFh1YDLkkRu23WDcMdO_O_0/view?usp=sharing' + - + data: + type: version + id: 7180 + links: + self: 'https://drive.google.com/file/d/1-OBJbhDEEwdhBDEj0hYpShioxbGYYaK4/view?usp=sharing' + - + data: + type: version + id: 7623 + links: + self: 'https://drive.google.com/file/d/1kH6p9SW6DSTWp4KBa_3zGkcIOPVABco_/view?usp=sharing' + - + data: + type: version + id: 8065 + links: + self: 'https://drive.google.com/file/d/1Lc_Ky0BK0U2bC6flMXnau5Zy8lgr76Ax/view?usp=sharing' + - + data: + type: version + id: 8209 + links: + self: 'https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.6/BRNVG-1.5.6.zip' + - + data: + type: version + id: 8538 + links: + self: 'https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.7/BRNVG-1.5.7.zip' + - + data: + type: version + id: 8672 + links: + self: 'https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.8/BRNVG-1.5.8.zip' + license: + - + data: + type: license + id: 5 + includes: + - + type: user + id: 28437 + attributes: + name: Borkel + user_role_id: null + created_at: '2023-03-10T18:10:13.000000Z' + updated_at: '2024-09-15T18:43:51.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/28437/borkel' + - + type: license + id: 5 + attributes: + name: 'Creative Commons BY-NC-SA 3.0' + link: 'http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode' + created_at: null + updated_at: null + - + type: mod_version + id: 6345 + attributes: + hub_id: 8824 + mod_id: 966 + version: 1.3.1 + link: 'https://drive.google.com/file/d/1hU4OrrTuvTPvVawG0y-XYRHHBDudGQMi/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 569 + created_at: '2024-02-03T17:57:20.000000Z' + updated_at: '2024-02-03T17:57:20.000000Z' + published_at: '2024-02-03 17:57:20' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6341 + attributes: + hub_id: 8820 + mod_id: 966 + version: 1.3.0 + link: 'https://drive.google.com/file/d/172O9iwpnGwAhvd8_TEboHq5FZT1z8jAg/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 354 + created_at: '2024-02-01T23:28:44.000000Z' + updated_at: '2024-02-01T23:28:44.000000Z' + published_at: '2024-02-01 23:28:44' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6103 + attributes: + hub_id: 8560 + mod_id: 966 + version: 1.2.3 + link: 'https://drive.google.com/file/d/1uj7w_y-G07ZgRH5zCiWmfx3CpYo22h5U/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 2435 + created_at: '2023-12-26T00:30:08.000000Z' + updated_at: '2023-12-26T00:30:08.000000Z' + published_at: '2023-12-26 00:30:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5937 + attributes: + hub_id: 8367 + mod_id: 966 + version: 1.2.2 + link: 'https://drive.google.com/file/d/1BLekIeILG3JIrmurMGeDIY07y2-QCL2d/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 2121 + created_at: '2023-11-27T18:42:10.000000Z' + updated_at: '2023-11-27T18:42:10.000000Z' + published_at: '2023-11-27 18:42:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5909 + attributes: + hub_id: 8329 + mod_id: 966 + version: 1.2.1 + link: 'https://drive.google.com/file/d/17o_qSxFg7cX0eCAWBFJdGsw2N-F9MNeq/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 720 + created_at: '2023-11-21T21:08:32.000000Z' + updated_at: '2023-11-21T21:08:32.000000Z' + published_at: '2023-11-21 21:08:32' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5877 + attributes: + hub_id: 8289 + mod_id: 966 + version: 1.2.0 + link: 'https://drive.google.com/file/d/1wlOwE3_yn5OIz3NcInC3mHmXx2t7G3_2/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 500 + created_at: '2023-11-18T20:36:57.000000Z' + updated_at: '2023-11-18T20:36:57.000000Z' + published_at: '2023-11-18 20:36:57' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5803 + attributes: + hub_id: 8178 + mod_id: 966 + version: 1.1.9 + link: 'https://drive.google.com/file/d/15ummKgeDafpZSoxBMxSjKEyZj3TNgKF7/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1096 + created_at: '2023-11-07T23:45:20.000000Z' + updated_at: '2023-11-07T23:45:20.000000Z' + published_at: '2023-11-07 23:45:20' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5794 + attributes: + hub_id: 8165 + mod_id: 966 + version: 1.1.8 + link: 'https://drive.google.com/file/d/16ndU_sSA8tY2QSNL-WDOeHFEaWVbIzDF/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 203 + created_at: '2023-11-07T02:59:24.000000Z' + updated_at: '2023-11-07T02:59:24.000000Z' + published_at: '2023-11-07 02:59:24' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5783 + attributes: + hub_id: 8153 + mod_id: 966 + version: 1.1.7 + link: 'https://drive.google.com/file/d/18ehvL906RTjOTCyPLXzFdSIyTJ9MzI0P/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 427 + created_at: '2023-11-05T12:06:01.000000Z' + updated_at: '2023-11-05T12:06:01.000000Z' + published_at: '2023-11-05 12:06:01' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5648 + attributes: + hub_id: 7996 + mod_id: 966 + version: 1.1.6 + link: 'https://drive.google.com/file/d/1suGNK4UFWQueyzU_LSgSd-Cgr8FK5wLs/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1217 + created_at: '2023-10-22T12:15:53.000000Z' + updated_at: '2023-10-22T12:15:53.000000Z' + published_at: '2023-10-22 12:15:53' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5508 + attributes: + hub_id: 7818 + mod_id: 966 + version: 1.1.5 + link: 'https://drive.google.com/file/d/1mkkiFekuoQLB4-SjsKqAnHE6hCGirHIS/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1016 + created_at: '2023-10-14T23:18:46.000000Z' + updated_at: '2023-10-14T23:18:46.000000Z' + published_at: '2023-10-14 23:18:46' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5324 + attributes: + hub_id: 7587 + mod_id: 966 + version: 1.1.4 + link: 'https://drive.google.com/file/d/1jTfyoj2s-V97rTob02vO46h_uSU2QSHJ/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1139 + created_at: '2023-10-08T22:38:49.000000Z' + updated_at: '2023-10-08T22:38:49.000000Z' + published_at: '2023-10-08 22:38:49' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5263 + attributes: + hub_id: 7507 + mod_id: 966 + version: 1.1.3 + link: 'https://drive.google.com/file/d/1aS0DUizGuZ0aZ_Bjrswx34o4Vtl6Zt98/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 284 + created_at: '2023-10-03T00:16:12.000000Z' + updated_at: '2023-10-03T00:16:12.000000Z' + published_at: '2023-10-03 00:16:12' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5094 + attributes: + hub_id: 7276 + mod_id: 966 + version: 1.1.2 + link: 'https://drive.google.com/file/d/1P_9nkNcOB_AR9PrsyGBGX1cyVLn2Oixg/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 898 + created_at: '2023-08-30T16:19:32.000000Z' + updated_at: '2023-08-30T16:19:32.000000Z' + published_at: '2023-08-30 16:19:32' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4881 + attributes: + hub_id: 6973 + mod_id: 966 + version: 1.1.1 + link: 'https://drive.google.com/file/d/1Rey1qKs76Svxhx8zAIHEcISDO5Yd3qz2/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 874 + created_at: '2023-08-03T19:49:47.000000Z' + updated_at: '2023-08-03T19:49:47.000000Z' + published_at: '2023-08-03 19:49:47' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4731 + attributes: + hub_id: 6738 + mod_id: 966 + version: 1.1.0 + link: 'https://drive.google.com/file/d/1sv1Sw5ctGugA3pYW0WJSi8jAJtRzne-F/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 829 + created_at: '2023-07-13T11:58:37.000000Z' + updated_at: '2023-07-13T11:58:37.000000Z' + published_at: '2023-07-13 11:58:37' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4687 + attributes: + hub_id: 6671 + mod_id: 966 + version: 1.0.0 + link: 'https://drive.google.com/file/d/1GsL5eWaRmkSpdCg43I46CP5HONeaF8uA/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 788 + created_at: '2023-06-30T20:48:45.000000Z' + updated_at: '2023-06-30T20:48:45.000000Z' + published_at: '2023-06-30 20:48:45' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6352 + attributes: + hub_id: 8833 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1nWR9yC1YBu7oirxqZtus7MVwU7JV_OhG/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 496 + created_at: '2024-02-07T00:10:32.000000Z' + updated_at: '2024-02-07T00:10:32.000000Z' + published_at: '2024-02-07 00:10:32' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6354 + attributes: + hub_id: 8838 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1WVEWhH4d77lo81OhIM4y54OMNPyDUVfi/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 304 + created_at: '2024-02-08T17:15:44.000000Z' + updated_at: '2024-02-08T17:15:44.000000Z' + published_at: '2024-02-08 17:15:44' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6356 + attributes: + hub_id: 8840 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1LiYK6I4PbbLl6tnPQFWKSKfcbvc5dRYk/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 403 + created_at: '2024-02-09T16:24:14.000000Z' + updated_at: '2024-02-09T16:24:14.000000Z' + published_at: '2024-02-09 16:24:14' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6358 + attributes: + hub_id: 8843 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/15UJK7kD_DpFhcjsTgl3L-zcM6QoRZhWn/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 725 + created_at: '2024-02-10T22:56:33.000000Z' + updated_at: '2024-02-10T22:56:33.000000Z' + published_at: '2024-02-10 22:56:33' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6365 + attributes: + hub_id: 8855 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1dHLlSh6WLFxPfzMEgxVpVxum2dEZm3qr/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 723 + created_at: '2024-02-14T16:00:54.000000Z' + updated_at: '2024-02-14T16:00:54.000000Z' + published_at: '2024-02-14 16:00:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6374 + attributes: + hub_id: 8867 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/11FwY8gWE1ZU0Vh0rvItR7OLn0Jx9bY-W/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1154 + created_at: '2024-02-17T17:52:12.000000Z' + updated_at: '2024-02-17T17:52:12.000000Z' + published_at: '2024-02-17 17:52:12' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6384 + attributes: + hub_id: 8877 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1KDTMPJL-oh9M_FafQZ5cStzEeg8-YCOB/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1376 + created_at: '2024-02-22T23:44:46.000000Z' + updated_at: '2024-02-22T23:44:46.000000Z' + published_at: '2024-02-22 23:44:46' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6398 + attributes: + hub_id: 8897 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1VPMh6KxOJppiiO-jHhNb6ZpWzCI8AnTo/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 588 + created_at: '2024-03-01T21:51:43.000000Z' + updated_at: '2024-03-01T21:51:43.000000Z' + published_at: '2024-03-01 21:51:43' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6408 + attributes: + hub_id: 8908 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1xWOgtPdFuFRjd4RdIuLYhH8Qyw382nN_/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 850 + created_at: '2024-03-03T22:46:14.000000Z' + updated_at: '2024-03-03T22:46:14.000000Z' + published_at: '2024-03-03 22:46:14' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6421 + attributes: + hub_id: 8921 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1mZMD1GS879djCNtC-BypCT0DWvzTI_ZZ/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 3498 + created_at: '2024-03-08T19:39:00.000000Z' + updated_at: '2024-03-08T19:39:00.000000Z' + published_at: '2024-03-08 19:39:00' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6641 + attributes: + hub_id: 9191 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1vvuCBVp90xsmst5jGqBvpsfW8I6h9anz/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 3607 + created_at: '2024-04-04T16:49:19.000000Z' + updated_at: '2024-04-04T16:49:19.000000Z' + published_at: '2024-04-04 16:49:19' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6728 + attributes: + hub_id: 9298 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1v-pFeMqGaDfovxNtef2NzG0G2Z9I52Cz/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 14482 + created_at: '2024-04-07T23:44:28.000000Z' + updated_at: '2024-04-07T23:44:28.000000Z' + published_at: '2024-04-07 23:44:28' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7113 + attributes: + hub_id: 9744 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1OWl4GXbaw-Zg3WK0llroMIxBPILKrWst/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 3679 + created_at: '2024-05-03T19:19:06.000000Z' + updated_at: '2024-05-03T19:19:06.000000Z' + published_at: '2024-05-03 19:19:06' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7167 + attributes: + hub_id: 9803 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1d-ujV0Y3exFh1YDLkkRu23WDcMdO_O_0/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1290 + created_at: '2024-05-07T16:54:50.000000Z' + updated_at: '2024-05-07T16:54:50.000000Z' + published_at: '2024-05-07 16:54:50' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7180 + attributes: + hub_id: 9818 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1-OBJbhDEEwdhBDEj0hYpShioxbGYYaK4/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 15804 + created_at: '2024-05-08T18:11:20.000000Z' + updated_at: '2024-05-08T18:11:20.000000Z' + published_at: '2024-05-08 18:11:20' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7623 + attributes: + hub_id: 10324 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1kH6p9SW6DSTWp4KBa_3zGkcIOPVABco_/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 7086 + created_at: '2024-06-19T17:57:31.000000Z' + updated_at: '2024-06-19T17:57:31.000000Z' + published_at: '2024-06-19 17:57:31' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8065 + attributes: + hub_id: 10810 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1Lc_Ky0BK0U2bC6flMXnau5Zy8lgr76Ax/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1284 + created_at: '2024-07-13T12:44:58.000000Z' + updated_at: '2024-07-13T12:44:58.000000Z' + published_at: '2024-07-13 12:44:58' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8209 + attributes: + hub_id: 10970 + mod_id: 966 + version: 0.0.0 + link: 'https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.6/BRNVG-1.5.6.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 14350 + created_at: '2024-07-20T15:04:51.000000Z' + updated_at: '2024-07-20T15:04:51.000000Z' + published_at: '2024-07-20 15:04:51' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8538 + attributes: + hub_id: 11340 + mod_id: 966 + version: 0.0.0 + link: 'https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.7/BRNVG-1.5.7.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 4293 + created_at: '2024-08-14T14:04:26.000000Z' + updated_at: '2024-08-14T14:04:26.000000Z' + published_at: '2024-08-14 14:04:26' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8672 + attributes: + hub_id: 11489 + mod_id: 966 + version: 0.0.0 + link: 'https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.8/BRNVG-1.5.8.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 7425 + created_at: '2024-08-24T21:52:19.000000Z' + updated_at: '2024-08-24T21:52:19.000000Z' + published_at: '2024-08-24 21:52:19' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/966/borkels-realistic-night-vision-goggles-nvgs-and-t-7' + - + type: mod + id: 1682 + attributes: + hub_id: 2195 + name: 'Bullet Crack Fix' + slug: bullet-crack-fix + teaser: "Stop bullet cracks when they shouldn't happen." + license_id: 11 + source_code_link: 'https://github.com/Solarint/BulletCrackFix' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-07-30T06:17:58.000000Z' + updated_at: '2024-09-15T18:48:13.000000Z' + published_at: '2024-07-30 06:17:58' + relationships: + users: + - + data: + type: user + id: 27464 + links: + self: 'http://forge.test/user/27464/solarint' + versions: + - + data: + type: version + id: 8361 + links: + self: 'https://github.com/Solarint/BulletCrackFix/releases/download/v1.0/Solarint-BulletCrackFix-1.0-Release.7z' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 27464 + attributes: + name: Solarint + user_role_id: null + created_at: '2023-02-23T17:11:59.000000Z' + updated_at: '2024-09-15T18:43:47.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/27464/solarint' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 8361 + attributes: + hub_id: 11133 + mod_id: 1682 + version: 1.0.0 + link: 'https://github.com/Solarint/BulletCrackFix/releases/download/v1.0/Solarint-BulletCrackFix-1.0-Release.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/52d41118bd8e91273567b0a0c3dcc77903e8b7dd1d3669f99480ff9313d95042?nocache=1' + downloads: 8612 + created_at: '2024-07-30T06:17:58.000000Z' + updated_at: '2024-07-30T06:17:58.000000Z' + published_at: '2024-07-30 06:17:58' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1682/bullet-crack-fix' + - + type: mod + id: 1484 + attributes: + hub_id: 1981 + name: 'Dynamic Maps' + slug: dynamic-maps + teaser: 'Replaces the in-game map screen with actually useful maps with dynamic information!' + license_id: 11 + source_code_link: 'https://github.com/mpstark/SPT-DynamicMaps' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-05-23T02:35:55.000000Z' + updated_at: '2024-09-15T18:48:13.000000Z' + published_at: '2024-05-23 02:35:55' + relationships: + users: + - + data: + type: user + id: 27606 + links: + self: 'http://forge.test/user/27606/drakiaxyz' + - + data: + type: user + id: 33964 + links: + self: 'http://forge.test/user/33964/dirtbikercj' + - + data: + type: user + id: 47480 + links: + self: 'http://forge.test/user/47480/mpstark' + versions: + - + data: + type: version + id: 8444 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.4/DynamicMaps-0.3.4-b6d8bf85.zip' + - + data: + type: version + id: 8144 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.3/DynamicMaps-0.3.3-111ea758.zip' + - + data: + type: version + id: 7825 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.2/DynamicMaps-0.3.2-55669364.zip' + - + data: + type: version + id: 7476 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1/DynamicMaps-0.3.1-dcbaf9ea.zip' + - + data: + type: version + id: 7432 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.0/DynamicMaps-0.3.0-f8d4ed27.zip' + - + data: + type: version + id: 7410 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.2.1/DynamicMaps-0.2.1-01ec57c1.zip' + - + data: + type: version + id: 7402 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.2.0/DynamicMaps-0.2.0-b76afa42.zip' + - + data: + type: version + id: 7369 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.3/DynamicMaps-0.1.3-34486712.zip' + - + data: + type: version + id: 7365 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.2/DynamicMaps-0.1.2-bf85c0ef.zip' + - + data: + type: version + id: 7364 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.1/DynamicMaps-0.1.1-0a158297.zip' + - + data: + type: version + id: 7360 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.0/DynamicMaps-0.1.0-c581f5fb.zip' + - + data: + type: version + id: 7477 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.1/DynamicMaps-0.3.1.1-30462ee8.zip' + - + data: + type: version + id: 7484 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.2/DynamicMaps-0.3.1.2-e1cc3770.zip' + - + data: + type: version + id: 7511 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.3/DynamicMaps-0.3.1.3-c079a1fa.zip' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 27606 + attributes: + name: DrakiaXYZ + user_role_id: 4 + created_at: '2023-02-26T18:51:50.000000Z' + updated_at: '2024-09-15T18:43:48.000000Z' + relationships: + user_role: + data: + type: user_role + id: 4 + links: + self: 'http://forge.test/user/27606/drakiaxyz' + - + type: user + id: 33964 + attributes: + name: Dirtbikercj + user_role_id: null + created_at: '2023-07-14T19:01:21.000000Z' + updated_at: '2024-09-15T18:44:12.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/33964/dirtbikercj' + - + type: user + id: 47480 + attributes: + name: mpstark + user_role_id: null + created_at: '2024-04-04T09:27:41.000000Z' + updated_at: '2024-09-15T18:45:05.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/47480/mpstark' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 8444 + attributes: + hub_id: 11222 + mod_id: 1484 + version: 0.3.4 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.4/DynamicMaps-0.3.4-b6d8bf85.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 33648 + created_at: '2024-08-06T07:43:10.000000Z' + updated_at: '2024-08-06T07:43:10.000000Z' + published_at: '2024-08-06 07:43:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8144 + attributes: + hub_id: 10896 + mod_id: 1484 + version: 0.3.3 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.3/DynamicMaps-0.3.3-111ea758.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 19119 + created_at: '2024-07-17T03:57:06.000000Z' + updated_at: '2024-07-17T03:57:06.000000Z' + published_at: '2024-07-17 03:57:06' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7825 + attributes: + hub_id: 10545 + mod_id: 1484 + version: 0.3.2 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.2/DynamicMaps-0.3.2-55669364.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 11178 + created_at: '2024-07-07T12:56:17.000000Z' + updated_at: '2024-07-07T12:56:17.000000Z' + published_at: '2024-07-07 12:56:17' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7476 + attributes: + hub_id: 10152 + mod_id: 1484 + version: 0.3.1 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1/DynamicMaps-0.3.1-dcbaf9ea.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 213 + created_at: '2024-06-02T20:46:08.000000Z' + updated_at: '2024-06-02T20:46:08.000000Z' + published_at: '2024-06-02 20:46:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7432 + attributes: + hub_id: 10100 + mod_id: 1484 + version: 0.3.0 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.0/DynamicMaps-0.3.0-f8d4ed27.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 4751 + created_at: '2024-05-29T22:49:48.000000Z' + updated_at: '2024-05-29T22:49:48.000000Z' + published_at: '2024-05-29 22:49:48' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7410 + attributes: + hub_id: 10078 + mod_id: 1484 + version: 0.2.1 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.2.1/DynamicMaps-0.2.1-01ec57c1.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 2116 + created_at: '2024-05-27T21:23:39.000000Z' + updated_at: '2024-05-27T21:23:39.000000Z' + published_at: '2024-05-27 21:23:39' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7402 + attributes: + hub_id: 10070 + mod_id: 1484 + version: 0.2.0 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.2.0/DynamicMaps-0.2.0-b76afa42.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 1561 + created_at: '2024-05-26T22:06:08.000000Z' + updated_at: '2024-05-26T22:06:08.000000Z' + published_at: '2024-05-26 22:06:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7369 + attributes: + hub_id: 10033 + mod_id: 1484 + version: 0.1.3 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.3/DynamicMaps-0.1.3-34486712.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 3887 + created_at: '2024-05-23T13:39:30.000000Z' + updated_at: '2024-05-23T13:39:30.000000Z' + published_at: '2024-05-23 13:39:30' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7365 + attributes: + hub_id: 10029 + mod_id: 1484 + version: 0.1.2 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.2/DynamicMaps-0.1.2-bf85c0ef.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 201 + created_at: '2024-05-23T12:15:39.000000Z' + updated_at: '2024-05-23T12:15:39.000000Z' + published_at: '2024-05-23 12:15:39' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7364 + attributes: + hub_id: 10028 + mod_id: 1484 + version: 0.1.1 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.1/DynamicMaps-0.1.1-0a158297.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 321 + created_at: '2024-05-23T09:47:07.000000Z' + updated_at: '2024-05-23T09:47:07.000000Z' + published_at: '2024-05-23 09:47:07' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7360 + attributes: + hub_id: 10023 + mod_id: 1484 + version: 0.1.0 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.0/DynamicMaps-0.1.0-c581f5fb.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 608 + created_at: '2024-05-23T02:35:55.000000Z' + updated_at: '2024-05-23T02:35:55.000000Z' + published_at: '2024-05-23 02:35:55' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7477 + attributes: + hub_id: 10153 + mod_id: 1484 + version: 0.0.0 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.1/DynamicMaps-0.3.1.1-30462ee8.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 1944 + created_at: '2024-06-02T21:47:31.000000Z' + updated_at: '2024-06-02T21:47:31.000000Z' + published_at: '2024-06-02 21:47:31' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7484 + attributes: + hub_id: 10162 + mod_id: 1484 + version: 0.0.0 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.2/DynamicMaps-0.3.1.2-e1cc3770.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 2999 + created_at: '2024-06-04T02:23:00.000000Z' + updated_at: '2024-06-04T02:23:00.000000Z' + published_at: '2024-06-04 02:23:00' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7511 + attributes: + hub_id: 10195 + mod_id: 1484 + version: 0.0.0 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.3/DynamicMaps-0.3.1.3-c079a1fa.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 18595 + created_at: '2024-06-07T04:54:11.000000Z' + updated_at: '2024-06-07T04:54:11.000000Z' + published_at: '2024-06-07 04:54:11' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1484/dynamic-maps' + - + type: mod + id: 1039 + attributes: + hub_id: 1415 + name: 'Expanded Task Text (ETT)' + slug: expanded-task-text-ett + teaser: "Knowledge is power, unfortunately Nikita doesn't see it that way." + license_id: 16 + source_code_link: 'https://github.com/CJ-SPT/Expanded-Task-Text' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2023-08-23T07:57:19.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2023-08-23 07:57:19' + relationships: + users: + - + data: + type: user + id: 33964 + links: + self: 'http://forge.test/user/33964/dirtbikercj' + versions: + - + data: + type: version + id: 8867 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.6.1/ExpandedTaskText.7z' + - + data: + type: version + id: 8738 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.6.0/ExpandedTaskText.7z' + - + data: + type: version + id: 8067 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.3/ExpandedTaskText.7z' + - + data: + type: version + id: 7856 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.2/ExpandedTaskText.7z' + - + data: + type: version + id: 7479 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.1/ExpandedTaskText.7z' + - + data: + type: version + id: 7413 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.0/ExpandedTaskText.7z' + - + data: + type: version + id: 6829 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.3/ExpandedTaskText.7z' + - + data: + type: version + id: 6609 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.2/ExpandedTaskText.7z' + - + data: + type: version + id: 6555 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.1/ExpandedTaskText.7z' + - + data: + type: version + id: 6528 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.0/ExpandedTaskText.7z' + - + data: + type: version + id: 6235 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.2/ExpandedTaskText.7z' + - + data: + type: version + id: 6022 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.1/Dirtbikercj-ExpandedTaskText-1.3.1.7z' + - + data: + type: version + id: 6015 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.0/Dirtbikercj-ExpandedTaskText-1.3.0.7z' + - + data: + type: version + id: 5985 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.5/Dirtbikercj-ExpandedTaskText-1.2.5.7z' + - + data: + type: version + id: 5884 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/1.2.4/Dirtbikercj-ExpandedTaskText-1.2.4.7z' + - + data: + type: version + id: 5501 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.3/Dirtbikercj-ExpandedTaskText-1.2.3.7z' + - + data: + type: version + id: 5341 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.2/Dirtbikercj-ExpandedTaskText-1.2.2.7z' + - + data: + type: version + id: 5032 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.1/Dirtbikercj-ExpandedTaskText-1.2.1.7z' + license: + - + data: + type: license + id: 16 + includes: + - + type: user + id: 33964 + attributes: + name: Dirtbikercj + user_role_id: null + created_at: '2023-07-14T19:01:21.000000Z' + updated_at: '2024-09-15T18:44:12.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/33964/dirtbikercj' + - + type: license + id: 16 + attributes: + name: 'Creative Commons BY-NC-ND 4.0' + link: 'https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode' + created_at: null + updated_at: null + - + type: mod_version + id: 8867 + attributes: + hub_id: 11705 + mod_id: 1039 + version: 1.6.1 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.6.1/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 1133 + created_at: '2024-09-12T11:11:00.000000Z' + updated_at: '2024-09-12T11:11:00.000000Z' + published_at: '2024-09-12 11:11:00' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8738 + attributes: + hub_id: 11571 + mod_id: 1039 + version: 1.6.0 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.6.0/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 3332 + created_at: '2024-08-30T03:46:12.000000Z' + updated_at: '2024-08-30T03:46:12.000000Z' + published_at: '2024-08-30 03:46:12' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8067 + attributes: + hub_id: 10812 + mod_id: 1039 + version: 1.5.3 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.3/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 10805 + created_at: '2024-07-13T15:24:09.000000Z' + updated_at: '2024-07-13T15:24:09.000000Z' + published_at: '2024-07-13 15:24:09' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7856 + attributes: + hub_id: 10577 + mod_id: 1039 + version: 1.5.2 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.2/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 2584 + created_at: '2024-07-07T22:23:56.000000Z' + updated_at: '2024-07-07T22:23:56.000000Z' + published_at: '2024-07-07 22:23:56' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7479 + attributes: + hub_id: 10156 + mod_id: 1039 + version: 1.5.1 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.1/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 6168 + created_at: '2024-06-03T04:53:07.000000Z' + updated_at: '2024-06-03T04:53:07.000000Z' + published_at: '2024-06-03 04:53:07' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7413 + attributes: + hub_id: 10081 + mod_id: 1039 + version: 1.5.0 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.0/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 2150 + created_at: '2024-05-28T05:30:41.000000Z' + updated_at: '2024-05-28T05:30:41.000000Z' + published_at: '2024-05-28 05:30:41' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6829 + attributes: + hub_id: 9408 + mod_id: 1039 + version: 1.4.3 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.3/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 12439 + created_at: '2024-04-13T11:37:10.000000Z' + updated_at: '2024-04-13T11:37:10.000000Z' + published_at: '2024-04-13 11:37:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6609 + attributes: + hub_id: 9152 + mod_id: 1039 + version: 1.4.2 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.2/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 4209 + created_at: '2024-04-03T13:40:36.000000Z' + updated_at: '2024-04-03T13:40:36.000000Z' + published_at: '2024-04-03 13:40:36' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6555 + attributes: + hub_id: 9089 + mod_id: 1039 + version: 1.4.1 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.1/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 1525 + created_at: '2024-04-02T07:55:53.000000Z' + updated_at: '2024-04-02T07:55:53.000000Z' + published_at: '2024-04-02 07:55:53' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6528 + attributes: + hub_id: 9061 + mod_id: 1039 + version: 1.4.0 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.0/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 634 + created_at: '2024-04-02T01:24:45.000000Z' + updated_at: '2024-04-02T01:24:45.000000Z' + published_at: '2024-04-02 01:24:45' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6235 + attributes: + hub_id: 8707 + mod_id: 1039 + version: 1.3.2 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.2/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 6781 + created_at: '2024-01-13T20:56:22.000000Z' + updated_at: '2024-01-13T20:56:22.000000Z' + published_at: '2024-01-13 20:56:22' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6022 + attributes: + hub_id: 8465 + mod_id: 1039 + version: 1.3.1 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.1/Dirtbikercj-ExpandedTaskText-1.3.1.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 3872 + created_at: '2023-12-11T04:08:50.000000Z' + updated_at: '2023-12-11T04:08:50.000000Z' + published_at: '2023-12-11 04:08:50' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6015 + attributes: + hub_id: 8457 + mod_id: 1039 + version: 1.3.0 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.0/Dirtbikercj-ExpandedTaskText-1.3.0.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 260 + created_at: '2023-12-10T10:40:51.000000Z' + updated_at: '2023-12-10T10:40:51.000000Z' + published_at: '2023-12-10 10:40:51' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5985 + attributes: + hub_id: 8423 + mod_id: 1039 + version: 1.2.5 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.5/Dirtbikercj-ExpandedTaskText-1.2.5.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 628 + created_at: '2023-12-06T08:07:26.000000Z' + updated_at: '2023-12-06T08:07:26.000000Z' + published_at: '2023-12-06 08:07:26' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5884 + attributes: + hub_id: 8299 + mod_id: 1039 + version: 1.2.4 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/1.2.4/Dirtbikercj-ExpandedTaskText-1.2.4.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 1447 + created_at: '2023-11-19T15:35:47.000000Z' + updated_at: '2023-11-19T15:35:47.000000Z' + published_at: '2023-11-19 15:35:47' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5501 + attributes: + hub_id: 7810 + mod_id: 1039 + version: 1.2.3 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.3/Dirtbikercj-ExpandedTaskText-1.2.3.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 2243 + created_at: '2023-10-14T20:52:18.000000Z' + updated_at: '2023-10-14T20:52:18.000000Z' + published_at: '2023-10-14 20:52:18' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5341 + attributes: + hub_id: 7613 + mod_id: 1039 + version: 1.2.2 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.2/Dirtbikercj-ExpandedTaskText-1.2.2.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 1302 + created_at: '2023-10-09T04:22:18.000000Z' + updated_at: '2023-10-09T04:22:18.000000Z' + published_at: '2023-10-09 04:22:18' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5032 + attributes: + hub_id: 7196 + mod_id: 1039 + version: 1.2.1 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.1/Dirtbikercj-ExpandedTaskText-1.2.1.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 2569 + created_at: '2023-08-23T07:57:19.000000Z' + updated_at: '2023-08-23T07:57:19.000000Z' + published_at: '2023-08-23 07:57:19' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1039/expanded-task-text-ett' + - + type: mod + id: 745 + attributes: + hub_id: 989 + name: 'Friendly PMC' + slug: friendly-pmc + teaser: 'Spawn with a squad of your side, recruit others while in the raid, and command them on the battlefield.' + license_id: 10 + source_code_link: 'https://bitbucket.org/pitvenin/friendlypmc/src/main/' + featured: true + contains_ai_content: true + contains_ads: false + created_at: '2023-01-28T21:51:05.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2023-01-28 21:51:05' + relationships: + users: + - + data: + type: user + id: 20756 + links: + self: 'http://forge.test/user/20756/pitalex' + versions: + - + data: + type: version + id: 8899 + links: + self: 'https://bitbucket.org/pitvenin/friendlypmc/downloads/friendlypmc-3.7.0.zip' + - + data: + type: version + id: 8670 + links: + self: 'https://ln5.sync.com/dl/46072a550/fxiga2nu-ss4ygq7i-9kgsfwrm-5jkxzaaa' + - + data: + type: version + id: 8629 + links: + self: 'https://ln5.sync.com/dl/e30ce8750/9p4b6n4x-53n7seqb-2ffey2fn-99but8ww' + - + data: + type: version + id: 8628 + links: + self: 'https://ln5.sync.com/dl/750324740/df7ty6ie-5jhtb2sx-xs33p3xd-epbji8xt' + - + data: + type: version + id: 8596 + links: + self: 'https://ln5.sync.com/dl/dd3a7d920/j6vxz4d7-t9gvjawg-c9tg6zc8-kuy7rybu' + - + data: + type: version + id: 8519 + links: + self: 'https://ln5.sync.com/dl/e428c8530/kg7kq3du-ngdkkgt2-9bbseqrh-ngw86zk5' + - + data: + type: version + id: 8438 + links: + self: 'https://drive.google.com/file/d/11Wx4lRfoBqz37YB5eXJY_78fbySaVqR3/view?usp=sharing' + - + data: + type: version + id: 8419 + links: + self: 'https://drive.google.com/file/d/1-UsQBpPPhYh6jJHPdYHZjVR7t_0WunkD/view?usp=sharing' + - + data: + type: version + id: 8415 + links: + self: 'https://drive.google.com/file/d/1deSb3WcFI3d5yDcuVf6PkoOxM_8lmAhv/view?usp=sharing' + - + data: + type: version + id: 8330 + links: + self: 'https://drive.google.com/file/d/1Kzl5RMuyfa52YsSDssINbg0r-AuCm9zg/view?usp=sharing' + - + data: + type: version + id: 8284 + links: + self: 'https://drive.google.com/file/d/16Hs6-a-wD_rhXbsZGLbzXmEv8tmRXxOy/view?usp=sharing' + - + data: + type: version + id: 7725 + links: + self: 'https://drive.google.com/file/d/1QUnhA1vfM6ohUTlPNZSL-Ajxv2PNs128/view?usp=sharing' + - + data: + type: version + id: 7721 + links: + self: 'https://drive.google.com/file/d/1hr15eBhNvkGUk6xb8Xiav6zWwP_xsisf/view?usp=sharing' + - + data: + type: version + id: 7715 + links: + self: 'https://drive.google.com/file/d/11tvMcwhRYQzqwimtS2hHA4UKTIqC5kZ7/view?usp=drive_link' + - + data: + type: version + id: 7708 + links: + self: 'https://drive.google.com/file/d/1geMSHp9dmvg3TUkVyIQZWoKPFMJKLJID/view?usp=sharing' + - + data: + type: version + id: 7707 + links: + self: 'https://drive.google.com/file/d/1sTmo_PvJvlAjDqcZOhTs3RkiTF5eBwhD/view?usp=sharing' + - + data: + type: version + id: 7630 + links: + self: 'https://drive.google.com/file/d/1czWbJ3umcs6joiwjHSwqn6vVtHSCPN6k/view?usp=sharing' + - + data: + type: version + id: 7621 + links: + self: 'https://drive.google.com/file/d/1ZakmfshVNJysFBJxhqeuZfQeTBTTWdPQ/view?usp=sharing' + - + data: + type: version + id: 7618 + links: + self: 'https://drive.google.com/file/d/1yyKZcVf3yn2D-GI9jaBXBw1dOcuWk9cV/view?usp=sharing' + - + data: + type: version + id: 7610 + links: + self: 'https://drive.google.com/file/d/1ooL0lDrD9YKwJsXx-GsMOgSlqhtpZlqv/view?usp=sharing' + - + data: + type: version + id: 7604 + links: + self: 'https://drive.google.com/file/d/1R19WZjv0i2wQVmpsYOEVJKeQ6NZkzKH6/view?usp=sharing' + - + data: + type: version + id: 7601 + links: + self: 'https://drive.google.com/file/d/1bRhcw7X4s0dhgG0TOP3BUdlQGfWwiBhQ/view?usp=sharing' + - + data: + type: version + id: 7590 + links: + self: 'https://drive.google.com/file/d/1RYMq-T79VFn9i_nCx-FuP-_UcV-CfJB8/view?usp=sharing' + - + data: + type: version + id: 7581 + links: + self: 'https://drive.google.com/file/d/1QAOod7G5BDP6dCRrWGYNI742-MT-gI-r/view?usp=sharing' + - + data: + type: version + id: 7576 + links: + self: 'https://drive.google.com/file/d/1OLxNa6HxaFdMI_RfhPb3LbUwQkp7VxGx/view?usp=sharing' + - + data: + type: version + id: 7564 + links: + self: 'https://drive.google.com/file/d/16rRU0s9MGXm4zujmEXUzJXcevFWSGThM/view?usp=sharing' + - + data: + type: version + id: 7559 + links: + self: 'https://drive.google.com/file/d/1QKYy72R_jMtQoZET9eN5eASbbcfhgjsu/view?usp=sharing' + - + data: + type: version + id: 7547 + links: + self: 'https://drive.google.com/file/d/1UsLxNT5bpAc3abWTu8SQaQtJwO-7bXHg/view?usp=drive_link' + - + data: + type: version + id: 7541 + links: + self: 'https://drive.google.com/file/d/1eQ17T8XH4-8f9KyvB-jxRZZYe4RgCm17/view?usp=drive_link' + - + data: + type: version + id: 7142 + links: + self: 'https://drive.google.com/file/d/1zOlL4xVnZHYGHXFEFqLvgqXuwJvNv_sD/view?usp=sharing' + - + data: + type: version + id: 6711 + links: + self: 'https://drive.google.com/file/d/1VEXvEatQeMsUHST33S5BF9aGiE_EAEO-/view?usp=sharing' + - + data: + type: version + id: 5661 + links: + self: 'https://drive.google.com/file/d/1b1r3OupxWBGk6s2DkuLbL4nY9ehI8W35/view?usp=share_link' + - + data: + type: version + id: 5547 + links: + self: 'https://drive.google.com/file/d/10GaGETMu0D1maRGGWr_qSYCqmy1-G7t6/view?usp=sharing' + - + data: + type: version + id: 5470 + links: + self: 'https://drive.google.com/file/d/1n4dCMejbNr5hgo9RgcNSMcropRuvjp_t/view?usp=sharing' + - + data: + type: version + id: 5012 + links: + self: 'https://drive.google.com/file/d/1jW15EZp5MIJJJO1u5kcAxEztaY9HOQ26/view?usp=drive_link' + - + data: + type: version + id: 4350 + links: + self: 'https://drive.google.com/file/d/12tmnPa1e8_-sVrpFmkvDJIzRWVhk_c1K/view?usp=share_link' + - + data: + type: version + id: 4254 + links: + self: 'https://drive.google.com/file/d/1WUVguPIMZMLJJc3G2S4AVfoTPn8xMVSI/view?usp=share_link' + - + data: + type: version + id: 4247 + links: + self: 'https://drive.google.com/file/d/13v9QeTPb_5a9UbJ-iJOwb9DHsMRmc1Hz/view?usp=share_link' + - + data: + type: version + id: 4220 + links: + self: 'https://drive.google.com/file/d/1qa5w2AcwPhzHe7LGp8Lb2wwYYfRSeV4d/view?usp=sharing' + - + data: + type: version + id: 3987 + links: + self: 'https://drive.google.com/file/d/18g4k6TIduQ6Sr-p9rKWLNjz-P39O7D6S/view?usp=share_link' + - + data: + type: version + id: 3912 + links: + self: 'https://drive.google.com/file/d/1OMx1t77kcjPv2ipfmSqwbxcYbvT3CPTx/view?usp=share_link' + - + data: + type: version + id: 3815 + links: + self: 'https://drive.google.com/file/d/1ZuZZMcIHl6T2lZzAE3cv7BZqcytdhh7f/view' + - + data: + type: version + id: 3793 + links: + self: 'https://drive.google.com/file/d/1rDTeoMAH2nOSgtDSUjTGLWdzuqz907A2/view?usp=sharing' + - + data: + type: version + id: 3783 + links: + self: 'https://drive.google.com/file/d/1KB1qi2vQ6bFNgk3GuQ5fQAUNSLbi3lzH/view?usp=sharing' + - + data: + type: version + id: 3719 + links: + self: 'https://drive.google.com/file/d/12JFsyuGZgs4Kbh7ktxjdSe48hXZItecw/view?usp=sharing' + - + data: + type: version + id: 3513 + links: + self: 'https://drive.google.com/file/d/1NT9E-TmqxUr-1G0vjRr8jEU2p-v8jwIz/view?usp=share_link' + - + data: + type: version + id: 3488 + links: + self: 'https://drive.google.com/file/d/1IGk0RbOlXDXPJ67pWO2PpyPdbwGCv-22/view?usp=share_link' + license: + - + data: + type: license + id: 10 + includes: + - + type: user + id: 20756 + attributes: + name: pitAlex + user_role_id: null + created_at: '2022-07-18T21:39:14.000000Z' + updated_at: '2024-09-15T18:43:21.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/20756/pitalex' + - + type: license + id: 10 + attributes: + name: 'Apache License 2.0' + link: 'https://choosealicense.com/licenses/apache-2.0/' + created_at: null + updated_at: null + - + type: mod_version + id: 8899 + attributes: + hub_id: 11737 + mod_id: 745 + version: 3.7.0 + link: 'https://bitbucket.org/pitvenin/friendlypmc/downloads/friendlypmc-3.7.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 611 + created_at: '2024-09-14T21:30:18.000000Z' + updated_at: '2024-09-14T21:30:18.000000Z' + published_at: '2024-09-14 21:30:18' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8670 + attributes: + hub_id: 11486 + mod_id: 745 + version: 3.6.4-beta + link: 'https://ln5.sync.com/dl/46072a550/fxiga2nu-ss4ygq7i-9kgsfwrm-5jkxzaaa' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 5746 + created_at: '2024-08-24T20:33:31.000000Z' + updated_at: '2024-08-24T20:33:31.000000Z' + published_at: '2024-08-24 20:33:31' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8629 + attributes: + hub_id: 11439 + mod_id: 745 + version: 3.6.3-beta + link: 'https://ln5.sync.com/dl/e30ce8750/9p4b6n4x-53n7seqb-2ffey2fn-99but8ww' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 1050 + created_at: '2024-08-22T13:33:47.000000Z' + updated_at: '2024-08-22T13:33:47.000000Z' + published_at: '2024-08-22 13:33:47' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8628 + attributes: + hub_id: 11438 + mod_id: 745 + version: 3.6.2-beta + link: 'https://ln5.sync.com/dl/750324740/df7ty6ie-5jhtb2sx-xs33p3xd-epbji8xt' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 50 + created_at: '2024-08-22T13:22:29.000000Z' + updated_at: '2024-08-22T13:22:29.000000Z' + published_at: '2024-08-22 13:22:29' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8596 + attributes: + hub_id: 11404 + mod_id: 745 + version: 3.6.1-beta + link: 'https://ln5.sync.com/dl/dd3a7d920/j6vxz4d7-t9gvjawg-c9tg6zc8-kuy7rybu' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 930 + created_at: '2024-08-20T12:59:46.000000Z' + updated_at: '2024-08-20T12:59:46.000000Z' + published_at: '2024-08-20 12:59:46' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8519 + attributes: + hub_id: 11320 + mod_id: 745 + version: 3.6.0-beta + link: 'https://ln5.sync.com/dl/e428c8530/kg7kq3du-ngdkkgt2-9bbseqrh-ngw86zk5' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 2607 + created_at: '2024-08-13T13:28:11.000000Z' + updated_at: '2024-08-13T13:28:11.000000Z' + published_at: '2024-08-13 13:28:11' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8438 + attributes: + hub_id: 11214 + mod_id: 745 + version: 3.5.2 + link: 'https://drive.google.com/file/d/11Wx4lRfoBqz37YB5eXJY_78fbySaVqR3/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 2330 + created_at: '2024-08-05T20:29:00.000000Z' + updated_at: '2024-08-05T20:29:00.000000Z' + published_at: '2024-08-05 20:29:00' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8419 + attributes: + hub_id: 11194 + mod_id: 745 + version: 3.5.1-beta + link: 'https://drive.google.com/file/d/1-UsQBpPPhYh6jJHPdYHZjVR7t_0WunkD/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 729 + created_at: '2024-08-04T13:42:38.000000Z' + updated_at: '2024-08-04T13:42:38.000000Z' + published_at: '2024-08-04 13:42:38' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8415 + attributes: + hub_id: 11190 + mod_id: 745 + version: 3.5.0-beta + link: 'https://drive.google.com/file/d/1deSb3WcFI3d5yDcuVf6PkoOxM_8lmAhv/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 684 + created_at: '2024-08-03T19:30:16.000000Z' + updated_at: '2024-08-03T19:30:16.000000Z' + published_at: '2024-08-03 19:30:16' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8330 + attributes: + hub_id: 11102 + mod_id: 745 + version: 3.4.1-beta + link: 'https://drive.google.com/file/d/1Kzl5RMuyfa52YsSDssINbg0r-AuCm9zg/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 1665 + created_at: '2024-07-29T01:37:20.000000Z' + updated_at: '2024-07-29T01:37:20.000000Z' + published_at: '2024-07-29 01:37:20' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8284 + attributes: + hub_id: 11054 + mod_id: 745 + version: 3.4.0-beta + link: 'https://drive.google.com/file/d/16Hs6-a-wD_rhXbsZGLbzXmEv8tmRXxOy/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 1596 + created_at: '2024-07-26T01:06:13.000000Z' + updated_at: '2024-07-26T01:06:13.000000Z' + published_at: '2024-07-26 01:06:13' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7725 + attributes: + hub_id: 10434 + mod_id: 745 + version: 3.3.4 + link: 'https://drive.google.com/file/d/1QUnhA1vfM6ohUTlPNZSL-Ajxv2PNs128/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 531 + created_at: '2024-07-02T13:54:21.000000Z' + updated_at: '2024-07-02T13:54:21.000000Z' + published_at: '2024-07-02 13:54:21' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7721 + attributes: + hub_id: 10430 + mod_id: 745 + version: 3.3.3 + link: 'https://drive.google.com/file/d/1hr15eBhNvkGUk6xb8Xiav6zWwP_xsisf/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 397 + created_at: '2024-07-01T18:19:24.000000Z' + updated_at: '2024-07-01T18:19:24.000000Z' + published_at: '2024-07-01 18:19:24' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7715 + attributes: + hub_id: 10424 + mod_id: 745 + version: 3.3.2 + link: 'https://drive.google.com/file/d/11tvMcwhRYQzqwimtS2hHA4UKTIqC5kZ7/view?usp=drive_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 368 + created_at: '2024-06-30T22:26:30.000000Z' + updated_at: '2024-06-30T22:26:30.000000Z' + published_at: '2024-06-30 22:26:30' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7708 + attributes: + hub_id: 10415 + mod_id: 745 + version: 3.3.1 + link: 'https://drive.google.com/file/d/1geMSHp9dmvg3TUkVyIQZWoKPFMJKLJID/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 447 + created_at: '2024-06-29T21:25:47.000000Z' + updated_at: '2024-06-29T21:25:47.000000Z' + published_at: '2024-06-29 21:25:47' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7707 + attributes: + hub_id: 10414 + mod_id: 745 + version: 3.3.0 + link: 'https://drive.google.com/file/d/1sTmo_PvJvlAjDqcZOhTs3RkiTF5eBwhD/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 152 + created_at: '2024-06-29T18:42:54.000000Z' + updated_at: '2024-06-29T18:42:54.000000Z' + published_at: '2024-06-29 18:42:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7630 + attributes: + hub_id: 10331 + mod_id: 745 + version: 3.2.1-beta + link: 'https://drive.google.com/file/d/1czWbJ3umcs6joiwjHSwqn6vVtHSCPN6k/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 1906 + created_at: '2024-06-20T12:50:39.000000Z' + updated_at: '2024-06-20T12:50:39.000000Z' + published_at: '2024-06-20 12:50:39' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7621 + attributes: + hub_id: 10322 + mod_id: 745 + version: 3.2.0-beta + link: 'https://drive.google.com/file/d/1ZakmfshVNJysFBJxhqeuZfQeTBTTWdPQ/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 343 + created_at: '2024-06-19T11:59:33.000000Z' + updated_at: '2024-06-19T11:59:33.000000Z' + published_at: '2024-06-19 11:59:33' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7618 + attributes: + hub_id: 10318 + mod_id: 745 + version: 3.1.4-beta + link: 'https://drive.google.com/file/d/1yyKZcVf3yn2D-GI9jaBXBw1dOcuWk9cV/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 281 + created_at: '2024-06-18T14:22:00.000000Z' + updated_at: '2024-06-18T14:22:00.000000Z' + published_at: '2024-06-18 14:22:00' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7610 + attributes: + hub_id: 10309 + mod_id: 745 + version: 3.1.3-beta + link: 'https://drive.google.com/file/d/1ooL0lDrD9YKwJsXx-GsMOgSlqhtpZlqv/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 360 + created_at: '2024-06-17T10:51:08.000000Z' + updated_at: '2024-06-17T10:51:08.000000Z' + published_at: '2024-06-17 10:51:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7604 + attributes: + hub_id: 10301 + mod_id: 745 + version: 3.1.2-beta + link: 'https://drive.google.com/file/d/1R19WZjv0i2wQVmpsYOEVJKeQ6NZkzKH6/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 326 + created_at: '2024-06-16T12:25:08.000000Z' + updated_at: '2024-06-16T12:25:08.000000Z' + published_at: '2024-06-16 12:25:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7601 + attributes: + hub_id: 10297 + mod_id: 745 + version: 3.1.1-beta + link: 'https://drive.google.com/file/d/1bRhcw7X4s0dhgG0TOP3BUdlQGfWwiBhQ/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 337 + created_at: '2024-06-15T14:50:51.000000Z' + updated_at: '2024-06-15T14:50:51.000000Z' + published_at: '2024-06-15 14:50:51' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7590 + attributes: + hub_id: 10284 + mod_id: 745 + version: 3.1.0-beta + link: 'https://drive.google.com/file/d/1RYMq-T79VFn9i_nCx-FuP-_UcV-CfJB8/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 435 + created_at: '2024-06-13T21:26:04.000000Z' + updated_at: '2024-06-13T21:26:04.000000Z' + published_at: '2024-06-13 21:26:04' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7581 + attributes: + hub_id: 10271 + mod_id: 745 + version: 3.0.5-beta + link: 'https://drive.google.com/file/d/1QAOod7G5BDP6dCRrWGYNI742-MT-gI-r/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 297 + created_at: '2024-06-12T16:19:04.000000Z' + updated_at: '2024-06-12T16:19:04.000000Z' + published_at: '2024-06-12 16:19:04' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7576 + attributes: + hub_id: 10266 + mod_id: 745 + version: 3.0.4-beta + link: 'https://drive.google.com/file/d/1OLxNa6HxaFdMI_RfhPb3LbUwQkp7VxGx/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 124 + created_at: '2024-06-12T10:44:05.000000Z' + updated_at: '2024-06-12T10:44:05.000000Z' + published_at: '2024-06-12 10:44:05' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7564 + attributes: + hub_id: 10254 + mod_id: 745 + version: 3.0.3-beta + link: 'https://drive.google.com/file/d/16rRU0s9MGXm4zujmEXUzJXcevFWSGThM/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 355 + created_at: '2024-06-10T19:45:58.000000Z' + updated_at: '2024-06-10T19:45:58.000000Z' + published_at: '2024-06-10 19:45:58' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7559 + attributes: + hub_id: 10249 + mod_id: 745 + version: 3.0.2-beta + link: 'https://drive.google.com/file/d/1QKYy72R_jMtQoZET9eN5eASbbcfhgjsu/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 295 + created_at: '2024-06-10T08:49:43.000000Z' + updated_at: '2024-06-10T08:49:43.000000Z' + published_at: '2024-06-10 08:49:43' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7547 + attributes: + hub_id: 10235 + mod_id: 745 + version: 3.0.1-beta + link: 'https://drive.google.com/file/d/1UsLxNT5bpAc3abWTu8SQaQtJwO-7bXHg/view?usp=drive_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 240 + created_at: '2024-06-09T20:23:55.000000Z' + updated_at: '2024-06-09T20:23:55.000000Z' + published_at: '2024-06-09 20:23:55' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7541 + attributes: + hub_id: 10229 + mod_id: 745 + version: 3.0.0-beta + link: 'https://drive.google.com/file/d/1eQ17T8XH4-8f9KyvB-jxRZZYe4RgCm17/view?usp=drive_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 142 + created_at: '2024-06-09T17:16:51.000000Z' + updated_at: '2024-06-09T17:16:51.000000Z' + published_at: '2024-06-09 17:16:51' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7142 + attributes: + hub_id: 9776 + mod_id: 745 + version: 2.0.1 + link: 'https://drive.google.com/file/d/1zOlL4xVnZHYGHXFEFqLvgqXuwJvNv_sD/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 1579 + created_at: '2024-05-06T11:01:59.000000Z' + updated_at: '2024-05-06T11:01:59.000000Z' + published_at: '2024-05-06 11:01:59' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6711 + attributes: + hub_id: 9275 + mod_id: 745 + version: 2.0.0 + link: 'https://drive.google.com/file/d/1VEXvEatQeMsUHST33S5BF9aGiE_EAEO-/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 2188 + created_at: '2024-04-06T19:50:48.000000Z' + updated_at: '2024-04-06T19:50:48.000000Z' + published_at: '2024-04-06 19:50:48' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5661 + attributes: + hub_id: 8011 + mod_id: 745 + version: 1.3.3 + link: 'https://drive.google.com/file/d/1b1r3OupxWBGk6s2DkuLbL4nY9ehI8W35/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 2976 + created_at: '2023-10-22T18:15:45.000000Z' + updated_at: '2023-10-22T18:15:45.000000Z' + published_at: '2023-10-22 18:15:45' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5547 + attributes: + hub_id: 7862 + mod_id: 745 + version: 1.3.2 + link: 'https://drive.google.com/file/d/10GaGETMu0D1maRGGWr_qSYCqmy1-G7t6/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 471 + created_at: '2023-10-15T13:19:12.000000Z' + updated_at: '2023-10-15T13:19:12.000000Z' + published_at: '2023-10-15 13:19:12' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5470 + attributes: + hub_id: 7773 + mod_id: 745 + version: 1.3.1 + link: 'https://drive.google.com/file/d/1n4dCMejbNr5hgo9RgcNSMcropRuvjp_t/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 361 + created_at: '2023-10-13T11:59:25.000000Z' + updated_at: '2023-10-13T11:59:25.000000Z' + published_at: '2023-10-13 11:59:25' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5012 + attributes: + hub_id: 7167 + mod_id: 745 + version: 1.3.0 + link: 'https://drive.google.com/file/d/1jW15EZp5MIJJJO1u5kcAxEztaY9HOQ26/view?usp=drive_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 1335 + created_at: '2023-08-20T19:54:25.000000Z' + updated_at: '2023-08-20T19:54:25.000000Z' + published_at: '2023-08-20 19:54:25' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4350 + attributes: + hub_id: 6155 + mod_id: 745 + version: 1.2.0 + link: 'https://drive.google.com/file/d/12tmnPa1e8_-sVrpFmkvDJIzRWVhk_c1K/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 1698 + created_at: '2023-05-06T21:30:22.000000Z' + updated_at: '2023-05-06T21:30:22.000000Z' + published_at: '2023-05-06 21:30:22' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4254 + attributes: + hub_id: 6029 + mod_id: 745 + version: 1.1.7 + link: 'https://drive.google.com/file/d/1WUVguPIMZMLJJc3G2S4AVfoTPn8xMVSI/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 726 + created_at: '2023-04-20T13:14:03.000000Z' + updated_at: '2023-04-20T13:14:03.000000Z' + published_at: '2023-04-20 13:14:03' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4247 + attributes: + hub_id: 6020 + mod_id: 745 + version: 1.1.6 + link: 'https://drive.google.com/file/d/13v9QeTPb_5a9UbJ-iJOwb9DHsMRmc1Hz/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 110 + created_at: '2023-04-19T15:10:08.000000Z' + updated_at: '2023-04-19T15:10:08.000000Z' + published_at: '2023-04-19 15:10:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4220 + attributes: + hub_id: 5989 + mod_id: 745 + version: 1.1.5 + link: 'https://drive.google.com/file/d/1qa5w2AcwPhzHe7LGp8Lb2wwYYfRSeV4d/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 204 + created_at: '2023-04-16T20:03:26.000000Z' + updated_at: '2023-04-16T20:03:26.000000Z' + published_at: '2023-04-16 20:03:26' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3987 + attributes: + hub_id: 5631 + mod_id: 745 + version: 1.1.4 + link: 'https://drive.google.com/file/d/18g4k6TIduQ6Sr-p9rKWLNjz-P39O7D6S/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 958 + created_at: '2023-03-15T21:58:28.000000Z' + updated_at: '2023-03-15T21:58:28.000000Z' + published_at: '2023-03-15 21:58:28' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3912 + attributes: + hub_id: 5534 + mod_id: 745 + version: 1.1.3 + link: 'https://drive.google.com/file/d/1OMx1t77kcjPv2ipfmSqwbxcYbvT3CPTx/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 540 + created_at: '2023-03-09T17:13:48.000000Z' + updated_at: '2023-03-09T17:13:48.000000Z' + published_at: '2023-03-09 17:13:48' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3815 + attributes: + hub_id: 5399 + mod_id: 745 + version: 1.1.2 + link: 'https://drive.google.com/file/d/1ZuZZMcIHl6T2lZzAE3cv7BZqcytdhh7f/view' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 474 + created_at: '2023-03-03T13:31:40.000000Z' + updated_at: '2023-03-03T13:31:40.000000Z' + published_at: '2023-03-03 13:31:40' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3793 + attributes: + hub_id: 5369 + mod_id: 745 + version: 1.1.1 + link: 'https://drive.google.com/file/d/1rDTeoMAH2nOSgtDSUjTGLWdzuqz907A2/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 164 + created_at: '2023-03-01T18:02:49.000000Z' + updated_at: '2023-03-01T18:02:49.000000Z' + published_at: '2023-03-01 18:02:49' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3783 + attributes: + hub_id: 5354 + mod_id: 745 + version: 1.1.0 + link: 'https://drive.google.com/file/d/1KB1qi2vQ6bFNgk3GuQ5fQAUNSLbi3lzH/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 238 + created_at: '2023-02-27T12:44:44.000000Z' + updated_at: '2023-02-27T12:44:44.000000Z' + published_at: '2023-02-27 12:44:44' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3719 + attributes: + hub_id: 5274 + mod_id: 745 + version: 1.0.2 + link: 'https://drive.google.com/file/d/12JFsyuGZgs4Kbh7ktxjdSe48hXZItecw/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 836 + created_at: '2023-02-19T15:39:51.000000Z' + updated_at: '2023-02-19T15:39:51.000000Z' + published_at: '2023-02-19 15:39:51' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3513 + attributes: + hub_id: 4992 + mod_id: 745 + version: 1.0.1 + link: 'https://drive.google.com/file/d/1NT9E-TmqxUr-1G0vjRr8jEU2p-v8jwIz/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 911 + created_at: '2023-02-01T01:07:14.000000Z' + updated_at: '2023-02-01T01:07:14.000000Z' + published_at: '2023-02-01 01:07:14' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3488 + attributes: + hub_id: 4950 + mod_id: 745 + version: 1.0.0 + link: 'https://drive.google.com/file/d/1IGk0RbOlXDXPJ67pWO2PpyPdbwGCv-22/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 685 + created_at: '2023-01-28T21:51:05.000000Z' + updated_at: '2023-01-28T21:51:05.000000Z' + published_at: '2023-01-28 21:51:05' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/745/friendly-pmc' + - + type: mod + id: 876 + attributes: + hub_id: 1166 + name: 'Gilded Key Storage' + slug: gilded-key-storage + teaser: 'A balanced progression based approach to convenient all in one key storage!' + license_id: 16 + source_code_link: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2023-04-23T21:24:19.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2023-04-23 21:24:19' + relationships: + users: + - + data: + type: user + id: 27606 + links: + self: 'http://forge.test/user/27606/drakiaxyz' + - + data: + type: user + id: 29458 + links: + self: 'http://forge.test/user/29458/jehree' + versions: + - + data: + type: version + id: 7788 + links: + self: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.4.0/Jehree-GildedKeyStorage-1.4.0.zip' + - + data: + type: version + id: 6858 + links: + self: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.2/Jehree-GildedKeyStorage-1.3.2.zip' + - + data: + type: version + id: 6734 + links: + self: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.1/Jehree-GildedKeyStorage-1.3.1.zip' + - + data: + type: version + id: 6487 + links: + self: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.0/Jehree-GildedKeyStorage-1.3.0.zip' + - + data: + type: version + id: 4762 + links: + self: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip' + - + data: + type: version + id: 4659 + links: + self: 'https://www.mediafire.com/file/nne449ddrrwpkm0/Gilded_Key_Storage-1.1.1.zip/file' + - + data: + type: version + id: 4326 + links: + self: 'https://www.mediafire.com/file/veygcmlgi2tah6v/Gilded_Key_Storage-1.1.0.zip/file' + - + data: + type: version + id: 4282 + links: + self: 'https://www.mediafire.com/file/a1r404rik6evlhh/Gilded_Key_Storage-1.0.0.zip/file' + - + data: + type: version + id: 4763 + links: + self: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip' + - + data: + type: version + id: 4870 + links: + self: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip' + - + data: + type: version + id: 5606 + links: + self: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.2.0/jehree-gildedkeystorage-1.2.0.zip' + license: + - + data: + type: license + id: 16 + includes: + - + type: user + id: 27606 + attributes: + name: DrakiaXYZ + user_role_id: 4 + created_at: '2023-02-26T18:51:50.000000Z' + updated_at: '2024-09-15T18:43:48.000000Z' + relationships: + user_role: + data: + type: user_role + id: 4 + links: + self: 'http://forge.test/user/27606/drakiaxyz' + - + type: user + id: 29458 + attributes: + name: Jehree + user_role_id: null + created_at: '2023-03-30T17:43:41.000000Z' + updated_at: '2024-09-15T18:43:55.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/29458/jehree' + - + type: license + id: 16 + attributes: + name: 'Creative Commons BY-NC-ND 4.0' + link: 'https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode' + created_at: null + updated_at: null + - + type: mod_version + id: 7788 + attributes: + hub_id: 10504 + mod_id: 876 + version: 1.4.0 + link: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.4.0/Jehree-GildedKeyStorage-1.4.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 14506 + created_at: '2024-07-06T21:05:10.000000Z' + updated_at: '2024-07-06T21:05:10.000000Z' + published_at: '2024-07-06 21:05:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6858 + attributes: + hub_id: 9443 + mod_id: 876 + version: 1.3.2 + link: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.2/Jehree-GildedKeyStorage-1.3.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 14729 + created_at: '2024-04-15T06:18:57.000000Z' + updated_at: '2024-04-15T06:18:57.000000Z' + published_at: '2024-04-15 06:18:57' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6734 + attributes: + hub_id: 9304 + mod_id: 876 + version: 1.3.1 + link: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.1/Jehree-GildedKeyStorage-1.3.1.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 2213 + created_at: '2024-04-08T04:16:33.000000Z' + updated_at: '2024-04-08T04:16:33.000000Z' + published_at: '2024-04-08 04:16:33' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6487 + attributes: + hub_id: 9017 + mod_id: 876 + version: 1.3.0 + link: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.0/Jehree-GildedKeyStorage-1.3.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 2581 + created_at: '2024-04-01T21:25:36.000000Z' + updated_at: '2024-04-01T21:25:36.000000Z' + published_at: '2024-04-01 21:25:36' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4762 + attributes: + hub_id: 6773 + mod_id: 876 + version: 1.1.2 + link: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 64 + created_at: '2023-07-17T01:56:49.000000Z' + updated_at: '2023-07-17T01:56:49.000000Z' + published_at: '2023-07-17 01:56:49' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4659 + attributes: + hub_id: 6608 + mod_id: 876 + version: 1.1.1 + link: 'https://www.mediafire.com/file/nne449ddrrwpkm0/Gilded_Key_Storage-1.1.1.zip/file' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 1008 + created_at: '2023-06-27T14:09:41.000000Z' + updated_at: '2023-06-27T14:09:41.000000Z' + published_at: '2023-06-27 14:09:41' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4326 + attributes: + hub_id: 6122 + mod_id: 876 + version: 1.1.0 + link: 'https://www.mediafire.com/file/veygcmlgi2tah6v/Gilded_Key_Storage-1.1.0.zip/file' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 2737 + created_at: '2023-04-30T21:41:30.000000Z' + updated_at: '2023-04-30T21:41:30.000000Z' + published_at: '2023-04-30 21:41:30' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4282 + attributes: + hub_id: 6068 + mod_id: 876 + version: 1.0.0 + link: 'https://www.mediafire.com/file/a1r404rik6evlhh/Gilded_Key_Storage-1.0.0.zip/file' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 751 + created_at: '2023-04-23T21:24:19.000000Z' + updated_at: '2023-04-23T21:24:19.000000Z' + published_at: '2023-04-23 21:24:19' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4763 + attributes: + hub_id: 6774 + mod_id: 876 + version: 0.0.0 + link: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 849 + created_at: '2023-07-17T02:21:51.000000Z' + updated_at: '2023-07-17T02:21:51.000000Z' + published_at: '2023-07-17 02:21:51' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4870 + attributes: + hub_id: 6957 + mod_id: 876 + version: 0.0.0 + link: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 2148 + created_at: '2023-08-03T00:44:04.000000Z' + updated_at: '2023-08-03T00:44:04.000000Z' + published_at: '2023-08-03 00:44:04' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5606 + attributes: + hub_id: 7940 + mod_id: 876 + version: 0.0.0 + link: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.2.0/jehree-gildedkeystorage-1.2.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 7495 + created_at: '2023-10-19T05:07:49.000000Z' + updated_at: '2023-10-19T05:07:49.000000Z' + published_at: '2023-10-19 05:07:49' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/876/gilded-key-storage' + - + type: mod + id: 1272 + attributes: + hub_id: 1736 + name: GTFO + slug: gtfo + teaser: "Want to learn maps visually for quests or extracts? Use this visual learning tool that will show extracts and quest objectives that are available to you and the distance from your player's current position." + license_id: 11 + source_code_link: 'https://github.com/dvize/GTFO' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-02-10T23:00:11.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2024-02-10 23:00:11' + relationships: + users: + - + data: + type: user + id: 15517 + links: + self: 'http://forge.test/user/15517/props' + versions: + - + data: + type: version + id: 8399 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.2.1/dvize.GTFO-v1.2.1.0.zip' + - + data: + type: version + id: 7907 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.2.0/dvize.GTFO-v1.2.0.0.zip' + - + data: + type: version + id: 7512 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.1.6/dvize.GTFO-1.1.6.zip' + - + data: + type: version + id: 7157 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.1.5/dvize.GTFOv1.1.5.zip' + - + data: + type: version + id: 7122 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.1.4/dvize.GTFOv1.1.4.zip' + - + data: + type: version + id: 7073 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.1.3/dvize.GTFOv1.1.3.zip' + - + data: + type: version + id: 6910 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.1.2/dvize.GTFOv1.1.2.zip' + - + data: + type: version + id: 6854 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.1.1/dvize.GTFOv1.1.1.zip' + - + data: + type: version + id: 6848 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.1.0/dvize.GTFOv1.1.0.zip' + - + data: + type: version + id: 6834 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.9/dvize.GTFOv1.0.9.zip' + - + data: + type: version + id: 6746 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.8/dvize.GTFOv1.0.8.zip' + - + data: + type: version + id: 6638 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.7/dvize.GTFOv1.07.zip' + - + data: + type: version + id: 6489 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.6/dvize.GTFOv1.0.6.zip' + - + data: + type: version + id: 6429 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.5/dvize.GTFOv1.0.5.zip' + - + data: + type: version + id: 6425 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.4/dvize.GTFOv1.04.zip' + - + data: + type: version + id: 6364 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.3/dvize.GTFOv1.0.3.zip' + - + data: + type: version + id: 6362 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.2/dvize.GTFOv1.0.2.zip' + - + data: + type: version + id: 6360 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.1/dvize.GTFOv1.01.zip' + - + data: + type: version + id: 6359 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.0/dvize.GTFOv1.0.zip' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 15517 + attributes: + name: Props + user_role_id: null + created_at: '2022-03-09T07:33:42.000000Z' + updated_at: '2024-09-15T18:43:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/15517/props' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 8399 + attributes: + hub_id: 11171 + mod_id: 1272 + version: 1.2.1 + link: 'https://github.com/dvize/GTFO/releases/download/v1.2.1/dvize.GTFO-v1.2.1.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 8615 + created_at: '2024-08-01T18:39:59.000000Z' + updated_at: '2024-08-01T18:39:59.000000Z' + published_at: '2024-08-01 18:39:59' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7907 + attributes: + hub_id: 10631 + mod_id: 1272 + version: 1.2.0 + link: 'https://github.com/dvize/GTFO/releases/download/v1.2.0/dvize.GTFO-v1.2.0.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 5831 + created_at: '2024-07-08T19:16:26.000000Z' + updated_at: '2024-07-08T19:16:26.000000Z' + published_at: '2024-07-08 19:16:26' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7512 + attributes: + hub_id: 10196 + mod_id: 1272 + version: 1.1.6 + link: 'https://github.com/dvize/GTFO/releases/download/v1.1.6/dvize.GTFO-1.1.6.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 4414 + created_at: '2024-06-07T05:06:08.000000Z' + updated_at: '2024-06-07T05:06:08.000000Z' + published_at: '2024-06-07 05:06:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7157 + attributes: + hub_id: 9793 + mod_id: 1272 + version: 1.1.5 + link: 'https://github.com/dvize/GTFO/releases/download/v1.1.5/dvize.GTFOv1.1.5.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 4289 + created_at: '2024-05-06T21:03:37.000000Z' + updated_at: '2024-05-06T21:03:37.000000Z' + published_at: '2024-05-06 21:03:37' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7122 + attributes: + hub_id: 9754 + mod_id: 1272 + version: 1.1.4 + link: 'https://github.com/dvize/GTFO/releases/download/v1.1.4/dvize.GTFOv1.1.4.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 934 + created_at: '2024-05-04T19:34:13.000000Z' + updated_at: '2024-05-04T19:34:13.000000Z' + published_at: '2024-05-04 19:34:13' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7073 + attributes: + hub_id: 9702 + mod_id: 1272 + version: 1.1.3 + link: 'https://github.com/dvize/GTFO/releases/download/v1.1.3/dvize.GTFOv1.1.3.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 1056 + created_at: '2024-05-01T14:10:43.000000Z' + updated_at: '2024-05-01T14:10:43.000000Z' + published_at: '2024-05-01 14:10:43' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6910 + attributes: + hub_id: 9500 + mod_id: 1272 + version: 1.1.2 + link: 'https://github.com/dvize/GTFO/releases/download/v1.1.2/dvize.GTFOv1.1.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 2523 + created_at: '2024-04-17T07:59:17.000000Z' + updated_at: '2024-04-17T07:59:17.000000Z' + published_at: '2024-04-17 07:59:17' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6854 + attributes: + hub_id: 9439 + mod_id: 1272 + version: 1.1.1 + link: 'https://github.com/dvize/GTFO/releases/download/v1.1.1/dvize.GTFOv1.1.1.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 614 + created_at: '2024-04-15T02:35:54.000000Z' + updated_at: '2024-04-15T02:35:54.000000Z' + published_at: '2024-04-15 02:35:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6848 + attributes: + hub_id: 9433 + mod_id: 1272 + version: 1.1.0 + link: 'https://github.com/dvize/GTFO/releases/download/v1.1.0/dvize.GTFOv1.1.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 218 + created_at: '2024-04-14T20:13:34.000000Z' + updated_at: '2024-04-14T20:13:34.000000Z' + published_at: '2024-04-14 20:13:34' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6834 + attributes: + hub_id: 9415 + mod_id: 1272 + version: 1.0.9 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.9/dvize.GTFOv1.0.9.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 551 + created_at: '2024-04-13T23:13:30.000000Z' + updated_at: '2024-04-13T23:13:30.000000Z' + published_at: '2024-04-13 23:13:30' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6746 + attributes: + hub_id: 9318 + mod_id: 1272 + version: 1.0.8 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.8/dvize.GTFOv1.0.8.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 1315 + created_at: '2024-04-08T16:05:03.000000Z' + updated_at: '2024-04-08T16:05:03.000000Z' + published_at: '2024-04-08 16:05:03' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6638 + attributes: + hub_id: 9187 + mod_id: 1272 + version: 1.0.7 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.7/dvize.GTFOv1.07.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 1475 + created_at: '2024-04-04T15:27:10.000000Z' + updated_at: '2024-04-04T15:27:10.000000Z' + published_at: '2024-04-04 15:27:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6489 + attributes: + hub_id: 9019 + mod_id: 1272 + version: 1.0.6 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.6/dvize.GTFOv1.0.6.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 1808 + created_at: '2024-04-01T21:27:28.000000Z' + updated_at: '2024-04-01T21:27:28.000000Z' + published_at: '2024-04-01 21:27:28' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6429 + attributes: + hub_id: 8932 + mod_id: 1272 + version: 1.0.5 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.5/dvize.GTFOv1.0.5.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 1485 + created_at: '2024-03-12T15:30:16.000000Z' + updated_at: '2024-03-12T15:30:16.000000Z' + published_at: '2024-03-12 15:30:16' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6425 + attributes: + hub_id: 8925 + mod_id: 1272 + version: 1.0.4 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.4/dvize.GTFOv1.04.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 380 + created_at: '2024-03-10T00:45:37.000000Z' + updated_at: '2024-03-10T00:45:37.000000Z' + published_at: '2024-03-10 00:45:37' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6364 + attributes: + hub_id: 8852 + mod_id: 1272 + version: 1.0.3 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.3/dvize.GTFOv1.0.3.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 3213 + created_at: '2024-02-12T19:53:18.000000Z' + updated_at: '2024-02-12T19:53:18.000000Z' + published_at: '2024-02-12 19:53:18' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6362 + attributes: + hub_id: 8847 + mod_id: 1272 + version: 1.0.2 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.2/dvize.GTFOv1.0.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 339 + created_at: '2024-02-11T22:02:22.000000Z' + updated_at: '2024-02-11T22:02:22.000000Z' + published_at: '2024-02-11 22:02:22' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6360 + attributes: + hub_id: 8845 + mod_id: 1272 + version: 1.0.1 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.1/dvize.GTFOv1.01.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 380 + created_at: '2024-02-11T05:44:31.000000Z' + updated_at: '2024-02-11T05:44:31.000000Z' + published_at: '2024-02-11 05:44:31' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6359 + attributes: + hub_id: 8844 + mod_id: 1272 + version: 1.0.0 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.0/dvize.GTFOv1.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 195 + created_at: '2024-02-10T23:00:11.000000Z' + updated_at: '2024-02-10T23:00:11.000000Z' + published_at: '2024-02-10 23:00:11' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1272/gtfo' + - + type: mod + id: 1333 + attributes: + hub_id: 1810 + name: HandsAreNotBusy + slug: handsarenotbusy + teaser: "Annoyed by the ancient \"Hands are busy\" bug?\r\nHandsAreNotBusy (HANB) is a mod that can fix certain scenarios of the \"Hands are busy\" bug for you!" + license_id: 16 + source_code_link: 'https://github.com/Lacyway/HandsAreNotBusy' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-04-10T11:16:45.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2024-04-10 11:16:45' + relationships: + users: + - + data: + type: user + id: 47971 + links: + self: 'http://forge.test/user/47971/lacyway' + versions: + - + data: + type: version + id: 7779 + links: + self: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.3/HandsAreNotBusy.zip' + - + data: + type: version + id: 6929 + links: + self: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.2/HandsAreNotBusy.zip' + - + data: + type: version + id: 6777 + links: + self: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.1/HandsAreNotBusy.zip' + - + data: + type: version + id: 6774 + links: + self: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.0/HandsAreNotBusy.zip' + license: + - + data: + type: license + id: 16 + includes: + - + type: user + id: 47971 + attributes: + name: Lacyway + user_role_id: null + created_at: '2024-04-09T17:00:56.000000Z' + updated_at: '2024-09-15T18:45:07.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/47971/lacyway' + - + type: license + id: 16 + attributes: + name: 'Creative Commons BY-NC-ND 4.0' + link: 'https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode' + created_at: null + updated_at: null + - + type: mod_version + id: 7779 + attributes: + hub_id: 10495 + mod_id: 1333 + version: '1.3' + link: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.3/HandsAreNotBusy.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/4ea87db9cc55435c15a40134920f1a8dc1be235a939a3335c458267990b1c97e?nocache=1' + downloads: 10889 + created_at: '2024-07-06T20:09:47.000000Z' + updated_at: '2024-07-06T20:09:47.000000Z' + published_at: '2024-07-06 20:09:47' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6929 + attributes: + hub_id: 9525 + mod_id: 1333 + version: '1.2' + link: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.2/HandsAreNotBusy.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/4ea87db9cc55435c15a40134920f1a8dc1be235a939a3335c458267990b1c97e?nocache=1' + downloads: 7789 + created_at: '2024-04-18T21:00:23.000000Z' + updated_at: '2024-04-18T21:00:23.000000Z' + published_at: '2024-04-18 21:00:23' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6777 + attributes: + hub_id: 9351 + mod_id: 1333 + version: '1.1' + link: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.1/HandsAreNotBusy.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/4ea87db9cc55435c15a40134920f1a8dc1be235a939a3335c458267990b1c97e?nocache=1' + downloads: 1780 + created_at: '2024-04-10T13:25:11.000000Z' + updated_at: '2024-04-10T13:25:11.000000Z' + published_at: '2024-04-10 13:25:11' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6774 + attributes: + hub_id: 9348 + mod_id: 1333 + version: 1.0.0 + link: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.0/HandsAreNotBusy.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/4ea87db9cc55435c15a40134920f1a8dc1be235a939a3335c458267990b1c97e?nocache=1' + downloads: 129 + created_at: '2024-04-10T11:16:45.000000Z' + updated_at: '2024-04-10T11:16:45.000000Z' + published_at: '2024-04-10 11:16:45' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1333/handsarenotbusy' + - + type: mod + id: 920 + attributes: + hub_id: 1230 + name: 'Item Sell Price' + slug: item-sell-price + teaser: 'View selling prices for all traders who can buy an item, exactly as shown in the selling interface.' + license_id: 14 + source_code_link: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2023-06-05T13:27:04.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2023-06-05 13:27:04' + relationships: + users: + - + data: + type: user + id: 31544 + links: + self: 'http://forge.test/user/31544/icyclawz' + versions: + - + data: + type: version + id: 7985 + links: + self: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.9.0/ItemSellPrice-1.4.0.zip' + - + data: + type: version + id: 6556 + links: + self: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.8.0/ItemSellPrice-1.3.0.zip' + - + data: + type: version + id: 5539 + links: + self: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.7.1/ItemSellPrice-1.2.1.zip' + - + data: + type: version + id: 5329 + links: + self: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.7.0/ItemSellPrice-1.2.0.zip' + - + data: + type: version + id: 4838 + links: + self: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.6.0/ItemSellPrice-1.1.0.zip' + - + data: + type: version + id: 4589 + links: + self: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/reupload/ItemSellPrice-1.0.2.zip' + license: + - + data: + type: license + id: 14 + includes: + - + type: user + id: 31544 + attributes: + name: IcyClawz + user_role_id: null + created_at: '2023-05-26T10:06:34.000000Z' + updated_at: '2024-09-15T18:44:03.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/31544/icyclawz' + - + type: license + id: 14 + attributes: + name: 'University of Illinois/NCSA Open Source License' + link: 'https://choosealicense.com/licenses/ncsa/' + created_at: null + updated_at: null + - + type: mod_version + id: 7985 + attributes: + hub_id: 10720 + mod_id: 920 + version: 1.4.0 + link: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.9.0/ItemSellPrice-1.4.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5' + downloads: 21661 + created_at: '2024-07-10T20:20:35.000000Z' + updated_at: '2024-07-10T20:20:35.000000Z' + published_at: '2024-07-10 20:20:35' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6556 + attributes: + hub_id: 9090 + mod_id: 920 + version: 1.3.0 + link: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.8.0/ItemSellPrice-1.3.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5' + downloads: 43284 + created_at: '2024-04-02T08:13:09.000000Z' + updated_at: '2024-04-02T08:13:09.000000Z' + published_at: '2024-04-02 08:13:09' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5539 + attributes: + hub_id: 7854 + mod_id: 920 + version: 1.2.1 + link: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.7.1/ItemSellPrice-1.2.1.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5' + downloads: 37864 + created_at: '2023-10-15T10:50:21.000000Z' + updated_at: '2023-10-15T10:50:21.000000Z' + published_at: '2023-10-15 10:50:21' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5329 + attributes: + hub_id: 7594 + mod_id: 920 + version: 1.2.0 + link: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.7.0/ItemSellPrice-1.2.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5' + downloads: 3913 + created_at: '2023-10-09T00:29:10.000000Z' + updated_at: '2023-10-09T00:29:10.000000Z' + published_at: '2023-10-09 00:29:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4838 + attributes: + hub_id: 6895 + mod_id: 920 + version: 1.1.0 + link: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.6.0/ItemSellPrice-1.1.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5' + downloads: 11729 + created_at: '2023-07-31T17:09:06.000000Z' + updated_at: '2023-07-31T17:09:06.000000Z' + published_at: '2023-07-31 17:09:06' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4589 + attributes: + hub_id: 6498 + mod_id: 920 + version: 1.0.2 + link: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/reupload/ItemSellPrice-1.0.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5' + downloads: 4397 + created_at: '2023-06-17T13:01:45.000000Z' + updated_at: '2023-06-17T13:01:45.000000Z' + published_at: '2023-06-17 13:01:45' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/920/item-sell-price' + - + type: mod + id: 812 + attributes: + hub_id: 1082 + name: 'LOE (Load Order Editor)' + slug: loe-load-order-editor + teaser: 'A quick and simple tool to easily adjust the load ordering for server mods.' + license_id: 11 + source_code_link: 'https://github.com/minihazel/LOE_Overhaul' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2023-03-18T02:57:58.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2023-03-18 02:57:58' + relationships: + users: + - + data: + type: user + id: 20915 + links: + self: 'http://forge.test/user/20915/devraccoon' + versions: + - + data: + type: version + id: 8070 + links: + self: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.5/Load.Order.Editor.zip' + - + data: + type: version + id: 7798 + links: + self: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.4/Load.Order.Editor.zip' + - + data: + type: version + id: 6845 + links: + self: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.3/Load.Order.Editor.zip' + - + data: + type: version + id: 6812 + links: + self: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.2/Load.Order.Editor.zip' + - + data: + type: version + id: 6659 + links: + self: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.1/Load.Order.Editor.zip' + - + data: + type: version + id: 6658 + links: + self: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.0/Load.Order.Editor.zip' + - + data: + type: version + id: 4301 + links: + self: 'https://github.com/minihazel/LoadOrderEditor/releases/download/1.5/Load.Order.Editor.zip' + - + data: + type: version + id: 4099 + links: + self: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.4' + - + data: + type: version + id: 4095 + links: + self: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.3' + - + data: + type: version + id: 4042 + links: + self: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.2' + - + data: + type: version + id: 4013 + links: + self: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.1' + - + data: + type: version + id: 4001 + links: + self: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.0' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 20915 + attributes: + name: Devraccoon + user_role_id: null + created_at: '2022-07-23T23:58:07.000000Z' + updated_at: '2024-09-15T18:43:21.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/20915/devraccoon' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 8070 + attributes: + hub_id: 10815 + mod_id: 812 + version: '2.5' + link: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.5/Load.Order.Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 11283 + created_at: '2024-07-13T18:27:38.000000Z' + updated_at: '2024-07-13T18:27:38.000000Z' + published_at: '2024-07-13 18:27:38' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7798 + attributes: + hub_id: 10515 + mod_id: 812 + version: '2.4' + link: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.4/Load.Order.Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 1587 + created_at: '2024-07-06T23:17:54.000000Z' + updated_at: '2024-07-06T23:17:54.000000Z' + published_at: '2024-07-06 23:17:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6845 + attributes: + hub_id: 9430 + mod_id: 812 + version: '2.3' + link: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.3/Load.Order.Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 16372 + created_at: '2024-04-14T18:06:24.000000Z' + updated_at: '2024-04-14T18:06:24.000000Z' + published_at: '2024-04-14 18:06:24' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6812 + attributes: + hub_id: 9390 + mod_id: 812 + version: '2.2' + link: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.2/Load.Order.Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 799 + created_at: '2024-04-12T09:17:40.000000Z' + updated_at: '2024-04-12T09:17:40.000000Z' + published_at: '2024-04-12 09:17:40' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6659 + attributes: + hub_id: 9213 + mod_id: 812 + version: '2.1' + link: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.1/Load.Order.Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 1549 + created_at: '2024-04-05T05:01:58.000000Z' + updated_at: '2024-04-05T05:01:58.000000Z' + published_at: '2024-04-05 05:01:58' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6658 + attributes: + hub_id: 9211 + mod_id: 812 + version: '2.0' + link: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.0/Load.Order.Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 128 + created_at: '2024-04-05T03:43:19.000000Z' + updated_at: '2024-04-05T03:43:19.000000Z' + published_at: '2024-04-05 03:43:19' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4301 + attributes: + hub_id: 6090 + mod_id: 812 + version: '1.5' + link: 'https://github.com/minihazel/LoadOrderEditor/releases/download/1.5/Load.Order.Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 15676 + created_at: '2023-04-25T22:27:33.000000Z' + updated_at: '2023-04-25T22:27:33.000000Z' + published_at: '2023-04-25 22:27:33' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4099 + attributes: + hub_id: 5808 + mod_id: 812 + version: '1.4' + link: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.4' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 830 + created_at: '2023-03-31T16:43:45.000000Z' + updated_at: '2023-03-31T16:43:45.000000Z' + published_at: '2023-03-31 16:43:45' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4095 + attributes: + hub_id: 5801 + mod_id: 812 + version: '1.3' + link: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.3' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 135 + created_at: '2023-03-30T21:10:13.000000Z' + updated_at: '2023-03-30T21:10:13.000000Z' + published_at: '2023-03-30 21:10:13' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4042 + attributes: + hub_id: 5733 + mod_id: 812 + version: '1.2' + link: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.2' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 372 + created_at: '2023-03-23T13:26:02.000000Z' + updated_at: '2023-03-23T13:26:02.000000Z' + published_at: '2023-03-23 13:26:02' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4013 + attributes: + hub_id: 5670 + mod_id: 812 + version: '1.1' + link: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.1' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 306 + created_at: '2023-03-18T19:45:07.000000Z' + updated_at: '2023-03-18T19:45:07.000000Z' + published_at: '2023-03-18 19:45:07' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4001 + attributes: + hub_id: 5657 + mod_id: 812 + version: '1.0' + link: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.0' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 153 + created_at: '2023-03-18T02:57:58.000000Z' + updated_at: '2023-03-18T02:57:58.000000Z' + published_at: '2023-03-18 02:57:58' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/812/loe-load-order-editor' + - + type: mod + id: 1385 + attributes: + hub_id: 1870 + name: 'Loot Radius' + slug: loot-radius + teaser: 'Ever get fed up trying to line your crosshair up just right to loot an item? No more! Now loot any loose loot nearby' + license_id: 11 + source_code_link: 'https://github.com/DrakiaXYZ/SPT-LootRadius' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-04-22T05:56:08.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2024-04-22 05:56:08' + relationships: + users: + - + data: + type: user + id: 27606 + links: + self: 'http://forge.test/user/27606/drakiaxyz' + versions: + - + data: + type: version + id: 7766 + links: + self: 'https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.1.0/DrakiaXYZ-LootRadius-1.1.0.7z' + - + data: + type: version + id: 6984 + links: + self: 'https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.0.1/DrakiaXYZ-LootRadius-1.0.1.7z' + - + data: + type: version + id: 6978 + links: + self: 'https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.0.0/DrakiaXYZ-LootRadius-1.0.0.7z' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 27606 + attributes: + name: DrakiaXYZ + user_role_id: 4 + created_at: '2023-02-26T18:51:50.000000Z' + updated_at: '2024-09-15T18:43:48.000000Z' + relationships: + user_role: + data: + type: user_role + id: 4 + links: + self: 'http://forge.test/user/27606/drakiaxyz' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 7766 + attributes: + hub_id: 10482 + mod_id: 1385 + version: 1.1.0 + link: 'https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.1.0/DrakiaXYZ-LootRadius-1.1.0.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/36d3110fcd1444d54fea8c631b5d4ed469602114609310f861c6228ee97cfede' + downloads: 18499 + created_at: '2024-07-06T19:18:48.000000Z' + updated_at: '2024-07-06T19:18:48.000000Z' + published_at: '2024-07-06 19:18:48' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6984 + attributes: + hub_id: 9594 + mod_id: 1385 + version: 1.0.1 + link: 'https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.0.1/DrakiaXYZ-LootRadius-1.0.1.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/36d3110fcd1444d54fea8c631b5d4ed469602114609310f861c6228ee97cfede' + downloads: 14698 + created_at: '2024-04-23T05:39:07.000000Z' + updated_at: '2024-04-23T05:39:07.000000Z' + published_at: '2024-04-23 05:39:07' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6978 + attributes: + hub_id: 9582 + mod_id: 1385 + version: 1.0.0 + link: 'https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.0.0/DrakiaXYZ-LootRadius-1.0.0.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/36d3110fcd1444d54fea8c631b5d4ed469602114609310f861c6228ee97cfede' + downloads: 983 + created_at: '2024-04-22T05:56:08.000000Z' + updated_at: '2024-04-22T05:56:08.000000Z' + published_at: '2024-04-22 05:56:08' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1385/loot-radius' + - + type: mod + id: 1257 + attributes: + hub_id: 1717 + name: Lotus + slug: lotus + teaser: 'Custom Trader with over 150+ Quests, 570+ sold and bartered items and a special keycard that gives infinite labs access.' + license_id: 11 + source_code_link: '' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-01-17T20:08:28.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2024-01-17 20:08:28' + relationships: + users: + - + data: + type: user + id: 29461 + links: + self: 'http://forge.test/user/29461/lunnayaluna' + versions: + - + data: + type: version + id: 8638 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.7/Lotus_v1.3.7_for_SPT_3.9_by_Lunnayaluna.7z' + - + data: + type: version + id: 8609 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.6/Lotus_v1.3.6_for_SPT_3.9_by_Lunnayaluna.7z' + - + data: + type: version + id: 8381 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.5/Lotus_v1.3.5_for_SPT_3.9_by_Lunnayaluna.7z' + - + data: + type: version + id: 8379 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.4/Lotus_v1.3.4_for_SPT_3.9_by_Lunnayaluna.7z' + - + data: + type: version + id: 8354 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.3/Lotus_v1.3.3_for_SPT_3.9_by_Lunnayaluna.7z' + - + data: + type: version + id: 8041 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.2/Lotus.v1.3.2.for.SPT.3.9.by.Lunnayaluna.7z' + - + data: + type: version + id: 7969 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.1/Lotus.v1.3.1.for.SPT.3.9.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 7937 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v.1.2.6/Lotus.v1.2.6.for.SPT.3.8.3.by.Lunnayaluna.7z' + - + data: + type: version + id: 7445 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.5/Lotus.v.1.2.5.for.SPT.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 7305 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.4/Lotus.v.1.2.4.for.SPT.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 7243 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.3/Lotus.v.1.2.3.for.SPT.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 7174 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.2/Lotus.v.1.2.2.for.SPT.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 7141 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.1/Lotus.v.1.2.0.for.SPT.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 7112 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.0/Lotus.v.1.2.0.for.SPT.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6959 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.15/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6950 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.14/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6842 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.13/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6815 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.12/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6791 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.11/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6765 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.10/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6761 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.9/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6744 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.8/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6712 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.7/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6694 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.6/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6671 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.5/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6631 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.4/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6619 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.3/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6582 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.2/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6572 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.1/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6524 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.0/Lotus.3.8.0.7z' + - + data: + type: version + id: 6349 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.0.5/user.zip' + - + data: + type: version + id: 6311 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.0.4/user.zip' + - + data: + type: version + id: 6286 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.3' + - + data: + type: version + id: 6271 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.2' + - + data: + type: version + id: 6270 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.0' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 29461 + attributes: + name: Lunnayaluna + user_role_id: null + created_at: '2023-03-30T19:06:34.000000Z' + updated_at: '2024-09-15T18:43:55.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/29461/lunnayaluna' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 8638 + attributes: + hub_id: 11449 + mod_id: 1257 + version: 1.3.7 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.7/Lotus_v1.3.7_for_SPT_3.9_by_Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 4896 + created_at: '2024-08-22T17:43:33.000000Z' + updated_at: '2024-08-22T17:43:33.000000Z' + published_at: '2024-08-22 17:43:33' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8609 + attributes: + hub_id: 11418 + mod_id: 1257 + version: 1.3.6 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.6/Lotus_v1.3.6_for_SPT_3.9_by_Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 932 + created_at: '2024-08-21T03:15:23.000000Z' + updated_at: '2024-08-21T03:15:23.000000Z' + published_at: '2024-08-21 03:15:23' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8381 + attributes: + hub_id: 11153 + mod_id: 1257 + version: 1.3.5 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.5/Lotus_v1.3.5_for_SPT_3.9_by_Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 4859 + created_at: '2024-07-31T16:14:50.000000Z' + updated_at: '2024-07-31T16:14:50.000000Z' + published_at: '2024-07-31 16:14:50' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8379 + attributes: + hub_id: 11151 + mod_id: 1257 + version: 1.3.4 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.4/Lotus_v1.3.4_for_SPT_3.9_by_Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 236 + created_at: '2024-07-31T12:13:30.000000Z' + updated_at: '2024-07-31T12:13:30.000000Z' + published_at: '2024-07-31 12:13:30' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8354 + attributes: + hub_id: 11126 + mod_id: 1257 + version: 1.3.3 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.3/Lotus_v1.3.3_for_SPT_3.9_by_Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 867 + created_at: '2024-07-30T01:42:33.000000Z' + updated_at: '2024-07-30T01:42:33.000000Z' + published_at: '2024-07-30 01:42:33' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8041 + attributes: + hub_id: 10783 + mod_id: 1257 + version: 1.3.2 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.2/Lotus.v1.3.2.for.SPT.3.9.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 5012 + created_at: '2024-07-12T17:54:10.000000Z' + updated_at: '2024-07-12T17:54:10.000000Z' + published_at: '2024-07-12 17:54:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7969 + attributes: + hub_id: 10700 + mod_id: 1257 + version: 1.3.1 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.1/Lotus.v1.3.1.for.SPT.3.9.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 1242 + created_at: '2024-07-10T11:50:46.000000Z' + updated_at: '2024-07-10T11:50:46.000000Z' + published_at: '2024-07-10 11:50:46' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7937 + attributes: + hub_id: 10665 + mod_id: 1257 + version: 1.2.6 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v.1.2.6/Lotus.v1.2.6.for.SPT.3.8.3.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 391 + created_at: '2024-07-09T13:24:21.000000Z' + updated_at: '2024-07-09T13:24:21.000000Z' + published_at: '2024-07-09 13:24:21' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7445 + attributes: + hub_id: 10113 + mod_id: 1257 + version: 1.2.5 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.5/Lotus.v.1.2.5.for.SPT.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 6431 + created_at: '2024-05-31T11:28:45.000000Z' + updated_at: '2024-05-31T11:28:45.000000Z' + published_at: '2024-05-31 11:28:45' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7305 + attributes: + hub_id: 9966 + mod_id: 1257 + version: 1.2.4 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.4/Lotus.v.1.2.4.for.SPT.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 3258 + created_at: '2024-05-18T11:21:23.000000Z' + updated_at: '2024-05-18T11:21:23.000000Z' + published_at: '2024-05-18 11:21:23' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7243 + attributes: + hub_id: 9893 + mod_id: 1257 + version: 1.2.3 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.3/Lotus.v.1.2.3.for.SPT.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 1782 + created_at: '2024-05-13T09:59:03.000000Z' + updated_at: '2024-05-13T09:59:03.000000Z' + published_at: '2024-05-13 09:59:03' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7174 + attributes: + hub_id: 9811 + mod_id: 1257 + version: 1.2.2 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.2/Lotus.v.1.2.2.for.SPT.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 2208 + created_at: '2024-05-08T10:35:41.000000Z' + updated_at: '2024-05-08T10:35:41.000000Z' + published_at: '2024-05-08 10:35:41' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7141 + attributes: + hub_id: 9775 + mod_id: 1257 + version: 1.2.1 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.1/Lotus.v.1.2.0.for.SPT.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 1110 + created_at: '2024-05-06T10:18:00.000000Z' + updated_at: '2024-05-06T10:18:00.000000Z' + published_at: '2024-05-06 10:18:00' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7112 + attributes: + hub_id: 9743 + mod_id: 1257 + version: 1.2.0 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.0/Lotus.v.1.2.0.for.SPT.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 1650 + created_at: '2024-05-03T19:12:40.000000Z' + updated_at: '2024-05-03T19:12:40.000000Z' + published_at: '2024-05-03 19:12:40' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6959 + attributes: + hub_id: 9557 + mod_id: 1257 + version: 1.1.15 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.15/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 4940 + created_at: '2024-04-20T21:01:19.000000Z' + updated_at: '2024-04-20T21:01:19.000000Z' + published_at: '2024-04-20 21:01:19' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6950 + attributes: + hub_id: 9548 + mod_id: 1257 + version: 1.1.14 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.14/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 589 + created_at: '2024-04-20T11:10:23.000000Z' + updated_at: '2024-04-20T11:10:23.000000Z' + published_at: '2024-04-20 11:10:23' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6842 + attributes: + hub_id: 9427 + mod_id: 1257 + version: 1.1.13 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.13/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 1666 + created_at: '2024-04-14T14:26:49.000000Z' + updated_at: '2024-04-14T14:26:49.000000Z' + published_at: '2024-04-14 14:26:49' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6815 + attributes: + hub_id: 9393 + mod_id: 1257 + version: 1.1.12 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.12/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 1084 + created_at: '2024-04-12T12:12:27.000000Z' + updated_at: '2024-04-12T12:12:27.000000Z' + published_at: '2024-04-12 12:12:27' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6791 + attributes: + hub_id: 9369 + mod_id: 1257 + version: 1.1.11 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.11/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 691 + created_at: '2024-04-11T14:16:04.000000Z' + updated_at: '2024-04-11T14:16:04.000000Z' + published_at: '2024-04-11 14:16:04' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6765 + attributes: + hub_id: 9338 + mod_id: 1257 + version: 1.1.10 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.10/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 985 + created_at: '2024-04-09T19:53:42.000000Z' + updated_at: '2024-04-09T19:53:42.000000Z' + published_at: '2024-04-09 19:53:42' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6761 + attributes: + hub_id: 9334 + mod_id: 1257 + version: 1.1.9 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.9/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 432 + created_at: '2024-04-09T14:37:50.000000Z' + updated_at: '2024-04-09T14:37:50.000000Z' + published_at: '2024-04-09 14:37:50' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6744 + attributes: + hub_id: 9316 + mod_id: 1257 + version: 1.1.8 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.8/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 774 + created_at: '2024-04-08T15:02:48.000000Z' + updated_at: '2024-04-08T15:02:48.000000Z' + published_at: '2024-04-08 15:02:48' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6712 + attributes: + hub_id: 9276 + mod_id: 1257 + version: 1.1.7 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.7/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 995 + created_at: '2024-04-06T19:51:02.000000Z' + updated_at: '2024-04-06T19:51:02.000000Z' + published_at: '2024-04-06 19:51:02' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6694 + attributes: + hub_id: 9256 + mod_id: 1257 + version: 1.1.6 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.6/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 527 + created_at: '2024-04-06T10:28:52.000000Z' + updated_at: '2024-04-06T10:28:52.000000Z' + published_at: '2024-04-06 10:28:52' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6671 + attributes: + hub_id: 9228 + mod_id: 1257 + version: 1.1.5 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.5/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 799 + created_at: '2024-04-05T13:21:05.000000Z' + updated_at: '2024-04-05T13:21:05.000000Z' + published_at: '2024-04-05 13:21:05' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6631 + attributes: + hub_id: 9179 + mod_id: 1257 + version: 1.1.4 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.4/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 792 + created_at: '2024-04-04T12:02:52.000000Z' + updated_at: '2024-04-04T12:02:52.000000Z' + published_at: '2024-04-04 12:02:52' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6619 + attributes: + hub_id: 9164 + mod_id: 1257 + version: 1.1.3 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.3/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 564 + created_at: '2024-04-03T21:40:31.000000Z' + updated_at: '2024-04-03T21:40:31.000000Z' + published_at: '2024-04-03 21:40:31' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6582 + attributes: + hub_id: 9117 + mod_id: 1257 + version: 1.1.2 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.2/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 769 + created_at: '2024-04-02T20:10:25.000000Z' + updated_at: '2024-04-02T20:10:25.000000Z' + published_at: '2024-04-02 20:10:25' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6572 + attributes: + hub_id: 9106 + mod_id: 1257 + version: 1.1.1 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.1/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 336 + created_at: '2024-04-02T12:47:53.000000Z' + updated_at: '2024-04-02T12:47:53.000000Z' + published_at: '2024-04-02 12:47:53' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6524 + attributes: + hub_id: 9056 + mod_id: 1257 + version: 1.1.0 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.0/Lotus.3.8.0.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 503 + created_at: '2024-04-02T00:32:34.000000Z' + updated_at: '2024-04-02T00:32:34.000000Z' + published_at: '2024-04-02 00:32:34' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6349 + attributes: + hub_id: 8829 + mod_id: 1257 + version: 1.0.5 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.0.5/user.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 3624 + created_at: '2024-02-05T13:54:49.000000Z' + updated_at: '2024-02-05T13:54:49.000000Z' + published_at: '2024-02-05 13:54:49' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6311 + attributes: + hub_id: 8787 + mod_id: 1257 + version: 1.0.4 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.0.4/user.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 1415 + created_at: '2024-01-24T13:35:19.000000Z' + updated_at: '2024-01-24T13:35:19.000000Z' + published_at: '2024-01-24 13:35:19' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6286 + attributes: + hub_id: 8761 + mod_id: 1257 + version: 1.0.3 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.3' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 927 + created_at: '2024-01-20T11:54:48.000000Z' + updated_at: '2024-01-20T11:54:48.000000Z' + published_at: '2024-01-20 11:54:48' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6271 + attributes: + hub_id: 8746 + mod_id: 1257 + version: 1.0.2 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.2' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 738 + created_at: '2024-01-18T13:38:54.000000Z' + updated_at: '2024-01-18T13:38:54.000000Z' + published_at: '2024-01-18 13:38:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6270 + attributes: + hub_id: 8745 + mod_id: 1257 + version: 1.0.1 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.0' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 207 + created_at: '2024-01-18T05:37:45.000000Z' + updated_at: '2024-01-18T05:37:45.000000Z' + published_at: '2024-01-18 05:37:45' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1257/lotus' + - + type: mod + id: 1778 + attributes: + hub_id: 2305 + name: 'More Energy Drinks' + slug: more-energy-drinks + teaser: 'Adds 12 unique energy drinks that range in rarity and provide interesting effects that your PMC can enjoy during raids. Now you can share your caffeine addiction with your PMC!' + license_id: 11 + source_code_link: 'https://github.com/Hood26/Hoods-Energy-Drinks' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-08-27T00:01:55.000000Z' + updated_at: '2024-09-15T18:48:13.000000Z' + published_at: '2024-08-27 00:01:55' + relationships: + users: + - + data: + type: user + id: 52388 + links: + self: 'http://forge.test/user/52388/hood' + versions: + - + data: + type: version + id: 8722 + links: + self: 'https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.2/HoodsEnergyDrinks1.0.2.zip' + - + data: + type: version + id: 8712 + links: + self: 'https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.1/HoodsEnergyDrinks1.0.1.zip' + - + data: + type: version + id: 8696 + links: + self: 'https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.0/HoodsEnergyDrinks1.0.0.zip' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 52388 + attributes: + name: Hood + user_role_id: null + created_at: '2024-05-21T21:49:53.000000Z' + updated_at: '2024-09-15T18:45:24.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/52388/hood' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 8722 + attributes: + hub_id: 11550 + mod_id: 1778 + version: 1.0.2 + link: 'https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.2/HoodsEnergyDrinks1.0.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file-analysis/YTk2MzNhN2IyZDYzMzY5MWY1NzkzNDU1NWUxNzdkZTI6MTcyNDcxMTEyNw==' + downloads: 4693 + created_at: '2024-08-28T21:43:55.000000Z' + updated_at: '2024-08-28T21:43:55.000000Z' + published_at: '2024-08-28 21:43:55' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8712 + attributes: + hub_id: 11540 + mod_id: 1778 + version: 1.0.1 + link: 'https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.1/HoodsEnergyDrinks1.0.1.zip' + virus_total_link: 'https://www.virustotal.com/gui/file-analysis/YTk2MzNhN2IyZDYzMzY5MWY1NzkzNDU1NWUxNzdkZTI6MTcyNDcxMTEyNw==' + downloads: 578 + created_at: '2024-08-28T08:15:43.000000Z' + updated_at: '2024-08-28T08:15:43.000000Z' + published_at: '2024-08-28 08:15:43' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8696 + attributes: + hub_id: 11523 + mod_id: 1778 + version: 1.0.0 + link: 'https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.0/HoodsEnergyDrinks1.0.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file-analysis/YTk2MzNhN2IyZDYzMzY5MWY1NzkzNDU1NWUxNzdkZTI6MTcyNDcxMTEyNw==' + downloads: 1114 + created_at: '2024-08-27T00:01:55.000000Z' + updated_at: '2024-08-27T00:01:55.000000Z' + published_at: '2024-08-27 00:01:55' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1778/more-energy-drinks' + links: + first: 'http://forge.test/api/v0/mods?page=1' + last: 'http://forge.test/api/v0/mods?page=116' + prev: null + next: 'http://forge.test/api/v0/mods?page=2' + meta: + current_page: 1 + from: 1 + last_page: 116 + links: + - + url: null + label: '« Previous' + active: false + - + url: 'http://forge.test/api/v0/mods?page=1' + label: '1' + active: true + - + url: 'http://forge.test/api/v0/mods?page=2' + label: '2' + active: false + - + url: 'http://forge.test/api/v0/mods?page=3' + label: '3' + active: false + - + url: 'http://forge.test/api/v0/mods?page=4' + label: '4' + active: false + - + url: 'http://forge.test/api/v0/mods?page=5' + label: '5' + active: false + - + url: 'http://forge.test/api/v0/mods?page=6' + label: '6' + active: false + - + url: 'http://forge.test/api/v0/mods?page=7' + label: '7' + active: false + - + url: 'http://forge.test/api/v0/mods?page=8' + label: '8' + active: false + - + url: 'http://forge.test/api/v0/mods?page=9' + label: '9' + active: false + - + url: 'http://forge.test/api/v0/mods?page=10' + label: '10' + active: false + - + url: null + label: ... + active: false + - + url: 'http://forge.test/api/v0/mods?page=115' + label: '115' + active: false + - + url: 'http://forge.test/api/v0/mods?page=116' + label: '116' + active: false + - + url: 'http://forge.test/api/v0/mods?page=2' + label: 'Next »' + active: false + path: 'http://forge.test/api/v0/mods' + per_page: 15 + to: 15 + total: 1739 + properties: + data: + type: array + example: + - + type: mod + id: 1578 + attributes: + hub_id: 2084 + name: 'Assort editor' + slug: assort-editor + teaser: "A webtool to edit your existing trader assort prices, for balancing reasons.\r\n\r\n2 boxes of matches a bit too cheap for that fully kitted MDR762, but you like the mod otherwise? This can fix that in an easy to understand way. No fiddling with .json files!" + license_id: 11 + source_code_link: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor' + featured: true + contains_ai_content: true + contains_ads: false + created_at: '2024-07-03T18:05:35.000000Z' + updated_at: '2024-09-15T18:48:13.000000Z' + published_at: '2024-07-03 18:05:35' + relationships: + users: + - + data: + type: user + id: 28317 + links: + self: 'http://forge.test/user/28317/archon0ne' + versions: + - + data: + type: version + id: 7745 + links: + self: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor/releases/download/1.1.0/Assort_Editor.zip' + - + data: + type: version + id: 7739 + links: + self: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor/archive/main.zip' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 28317 + attributes: + name: archon0ne + user_role_id: null + created_at: '2023-03-09T14:05:22.000000Z' + updated_at: '2024-09-15T18:43:50.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/28317/archon0ne' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 7745 + attributes: + hub_id: 10456 + mod_id: 1578 + version: 1.1.0 + link: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor/releases/download/1.1.0/Assort_Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/url/c59d29876cb827c82bcc93082a7b71407d42a76d2e7509dd1710b7f913773253?nocache=1' + downloads: 1535 + created_at: '2024-07-04T09:59:54.000000Z' + updated_at: '2024-07-04T09:59:54.000000Z' + published_at: '2024-07-04 09:59:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7739 + attributes: + hub_id: 10450 + mod_id: 1578 + version: 1.0.0 + link: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor/archive/main.zip' + virus_total_link: 'https://www.virustotal.com/gui/url/c59d29876cb827c82bcc93082a7b71407d42a76d2e7509dd1710b7f913773253?nocache=1' + downloads: 110 + created_at: '2024-07-03T18:05:35.000000Z' + updated_at: '2024-07-03T18:05:35.000000Z' + published_at: '2024-07-03 18:05:35' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1578/assort-editor' + - + type: mod + id: 1525 + attributes: + hub_id: 2027 + name: AutoDeposit + slug: autodeposit + teaser: "Transfer items into stash containers with matching items, inspired by Terraria's Quick Stack." + license_id: 11 + source_code_link: 'https://github.com/tyfon7/AutoDeposit' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-06-07T08:03:44.000000Z' + updated_at: '2024-09-15T18:48:13.000000Z' + published_at: '2024-06-07 08:03:44' + relationships: + users: + - + data: + type: user + id: 46006 + links: + self: 'http://forge.test/user/46006/tyfon' + versions: + - + data: + type: version + id: 7812 + links: + self: 'https://github.com/tyfon7/AutoDeposit/releases/download/v2.0.0/Tyfon-AutoDeposit-2.0.0.7z' + - + data: + type: version + id: 7751 + links: + self: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.3/Tyfon-AutoDeposit-1.0.3.7z' + - + data: + type: version + id: 7549 + links: + self: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.2/Tyfon-AutoDeposit-1.0.2.7z' + - + data: + type: version + id: 7518 + links: + self: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.1/Tyfon-AutoDeposit-1.0.1.7z' + - + data: + type: version + id: 7513 + links: + self: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.0/Tyfon-AutoDeposit-1.0.0.7z' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 46006 + attributes: + name: Tyfon + user_role_id: null + created_at: '2024-02-27T23:21:18.000000Z' + updated_at: '2024-09-15T18:44:59.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/46006/tyfon' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 7812 + attributes: + hub_id: 10530 + mod_id: 1525 + version: 2.0.0 + link: 'https://github.com/tyfon7/AutoDeposit/releases/download/v2.0.0/Tyfon-AutoDeposit-2.0.0.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6' + downloads: 12691 + created_at: '2024-07-07T05:11:46.000000Z' + updated_at: '2024-07-07T05:11:46.000000Z' + published_at: '2024-07-07 05:11:46' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7751 + attributes: + hub_id: 10465 + mod_id: 1525 + version: 1.0.3 + link: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.3/Tyfon-AutoDeposit-1.0.3.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6' + downloads: 599 + created_at: '2024-07-05T21:51:16.000000Z' + updated_at: '2024-07-05T21:51:16.000000Z' + published_at: '2024-07-05 21:51:16' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7549 + attributes: + hub_id: 10238 + mod_id: 1525 + version: 1.0.2 + link: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.2/Tyfon-AutoDeposit-1.0.2.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6' + downloads: 3723 + created_at: '2024-06-09T23:09:06.000000Z' + updated_at: '2024-06-09T23:09:06.000000Z' + published_at: '2024-06-09 23:09:06' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7518 + attributes: + hub_id: 10203 + mod_id: 1525 + version: 1.0.1 + link: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.1/Tyfon-AutoDeposit-1.0.1.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6' + downloads: 978 + created_at: '2024-06-07T19:45:09.000000Z' + updated_at: '2024-06-07T19:45:09.000000Z' + published_at: '2024-06-07 19:45:09' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7513 + attributes: + hub_id: 10197 + mod_id: 1525 + version: 1.0.0 + link: 'https://github.com/tyfon7/AutoDeposit/releases/download/v1.0.0/Tyfon-AutoDeposit-1.0.0.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/ab493124a1fa3bc8d811aceea5ee315db31281ee61afeab3365c7e405b34abf6' + downloads: 477 + created_at: '2024-06-07T08:03:44.000000Z' + updated_at: '2024-06-07T08:03:44.000000Z' + published_at: '2024-06-07 08:03:44' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1525/autodeposit' + - + type: mod + id: 966 + attributes: + hub_id: 1303 + name: "Borkel's Realistic Night Vision Goggles (NVGs and T-7)" + slug: borkels-realistic-night-vision-goggles-nvgs-and-t-7 + teaser: 'Now with new realistic NVG masks and natural light outside the tubes. I looked at real life NVGs and I tried to imitate them ingame. Customizable ingame (colors and everything).' + license_id: 5 + source_code_link: 'https://github.com/Borkel/RealisticNVG-client-2/tree/master' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2023-06-30T20:48:45.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2023-06-30 20:48:45' + relationships: + users: + - + data: + type: user + id: 28437 + links: + self: 'http://forge.test/user/28437/borkel' + versions: + - + data: + type: version + id: 6345 + links: + self: 'https://drive.google.com/file/d/1hU4OrrTuvTPvVawG0y-XYRHHBDudGQMi/view?usp=sharing' + - + data: + type: version + id: 6341 + links: + self: 'https://drive.google.com/file/d/172O9iwpnGwAhvd8_TEboHq5FZT1z8jAg/view?usp=sharing' + - + data: + type: version + id: 6103 + links: + self: 'https://drive.google.com/file/d/1uj7w_y-G07ZgRH5zCiWmfx3CpYo22h5U/view?usp=sharing' + - + data: + type: version + id: 5937 + links: + self: 'https://drive.google.com/file/d/1BLekIeILG3JIrmurMGeDIY07y2-QCL2d/view?usp=sharing' + - + data: + type: version + id: 5909 + links: + self: 'https://drive.google.com/file/d/17o_qSxFg7cX0eCAWBFJdGsw2N-F9MNeq/view?usp=sharing' + - + data: + type: version + id: 5877 + links: + self: 'https://drive.google.com/file/d/1wlOwE3_yn5OIz3NcInC3mHmXx2t7G3_2/view?usp=sharing' + - + data: + type: version + id: 5803 + links: + self: 'https://drive.google.com/file/d/15ummKgeDafpZSoxBMxSjKEyZj3TNgKF7/view?usp=sharing' + - + data: + type: version + id: 5794 + links: + self: 'https://drive.google.com/file/d/16ndU_sSA8tY2QSNL-WDOeHFEaWVbIzDF/view?usp=sharing' + - + data: + type: version + id: 5783 + links: + self: 'https://drive.google.com/file/d/18ehvL906RTjOTCyPLXzFdSIyTJ9MzI0P/view?usp=sharing' + - + data: + type: version + id: 5648 + links: + self: 'https://drive.google.com/file/d/1suGNK4UFWQueyzU_LSgSd-Cgr8FK5wLs/view?usp=sharing' + - + data: + type: version + id: 5508 + links: + self: 'https://drive.google.com/file/d/1mkkiFekuoQLB4-SjsKqAnHE6hCGirHIS/view?usp=sharing' + - + data: + type: version + id: 5324 + links: + self: 'https://drive.google.com/file/d/1jTfyoj2s-V97rTob02vO46h_uSU2QSHJ/view?usp=sharing' + - + data: + type: version + id: 5263 + links: + self: 'https://drive.google.com/file/d/1aS0DUizGuZ0aZ_Bjrswx34o4Vtl6Zt98/view?usp=sharing' + - + data: + type: version + id: 5094 + links: + self: 'https://drive.google.com/file/d/1P_9nkNcOB_AR9PrsyGBGX1cyVLn2Oixg/view?usp=sharing' + - + data: + type: version + id: 4881 + links: + self: 'https://drive.google.com/file/d/1Rey1qKs76Svxhx8zAIHEcISDO5Yd3qz2/view?usp=sharing' + - + data: + type: version + id: 4731 + links: + self: 'https://drive.google.com/file/d/1sv1Sw5ctGugA3pYW0WJSi8jAJtRzne-F/view?usp=sharing' + - + data: + type: version + id: 4687 + links: + self: 'https://drive.google.com/file/d/1GsL5eWaRmkSpdCg43I46CP5HONeaF8uA/view?usp=sharing' + - + data: + type: version + id: 6352 + links: + self: 'https://drive.google.com/file/d/1nWR9yC1YBu7oirxqZtus7MVwU7JV_OhG/view?usp=sharing' + - + data: + type: version + id: 6354 + links: + self: 'https://drive.google.com/file/d/1WVEWhH4d77lo81OhIM4y54OMNPyDUVfi/view?usp=sharing' + - + data: + type: version + id: 6356 + links: + self: 'https://drive.google.com/file/d/1LiYK6I4PbbLl6tnPQFWKSKfcbvc5dRYk/view?usp=sharing' + - + data: + type: version + id: 6358 + links: + self: 'https://drive.google.com/file/d/15UJK7kD_DpFhcjsTgl3L-zcM6QoRZhWn/view?usp=sharing' + - + data: + type: version + id: 6365 + links: + self: 'https://drive.google.com/file/d/1dHLlSh6WLFxPfzMEgxVpVxum2dEZm3qr/view?usp=sharing' + - + data: + type: version + id: 6374 + links: + self: 'https://drive.google.com/file/d/11FwY8gWE1ZU0Vh0rvItR7OLn0Jx9bY-W/view?usp=sharing' + - + data: + type: version + id: 6384 + links: + self: 'https://drive.google.com/file/d/1KDTMPJL-oh9M_FafQZ5cStzEeg8-YCOB/view?usp=sharing' + - + data: + type: version + id: 6398 + links: + self: 'https://drive.google.com/file/d/1VPMh6KxOJppiiO-jHhNb6ZpWzCI8AnTo/view?usp=sharing' + - + data: + type: version + id: 6408 + links: + self: 'https://drive.google.com/file/d/1xWOgtPdFuFRjd4RdIuLYhH8Qyw382nN_/view?usp=sharing' + - + data: + type: version + id: 6421 + links: + self: 'https://drive.google.com/file/d/1mZMD1GS879djCNtC-BypCT0DWvzTI_ZZ/view?usp=sharing' + - + data: + type: version + id: 6641 + links: + self: 'https://drive.google.com/file/d/1vvuCBVp90xsmst5jGqBvpsfW8I6h9anz/view?usp=sharing' + - + data: + type: version + id: 6728 + links: + self: 'https://drive.google.com/file/d/1v-pFeMqGaDfovxNtef2NzG0G2Z9I52Cz/view?usp=sharing' + - + data: + type: version + id: 7113 + links: + self: 'https://drive.google.com/file/d/1OWl4GXbaw-Zg3WK0llroMIxBPILKrWst/view?usp=sharing' + - + data: + type: version + id: 7167 + links: + self: 'https://drive.google.com/file/d/1d-ujV0Y3exFh1YDLkkRu23WDcMdO_O_0/view?usp=sharing' + - + data: + type: version + id: 7180 + links: + self: 'https://drive.google.com/file/d/1-OBJbhDEEwdhBDEj0hYpShioxbGYYaK4/view?usp=sharing' + - + data: + type: version + id: 7623 + links: + self: 'https://drive.google.com/file/d/1kH6p9SW6DSTWp4KBa_3zGkcIOPVABco_/view?usp=sharing' + - + data: + type: version + id: 8065 + links: + self: 'https://drive.google.com/file/d/1Lc_Ky0BK0U2bC6flMXnau5Zy8lgr76Ax/view?usp=sharing' + - + data: + type: version + id: 8209 + links: + self: 'https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.6/BRNVG-1.5.6.zip' + - + data: + type: version + id: 8538 + links: + self: 'https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.7/BRNVG-1.5.7.zip' + - + data: + type: version + id: 8672 + links: + self: 'https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.8/BRNVG-1.5.8.zip' + license: + - + data: + type: license + id: 5 + includes: + - + type: user + id: 28437 + attributes: + name: Borkel + user_role_id: null + created_at: '2023-03-10T18:10:13.000000Z' + updated_at: '2024-09-15T18:43:51.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/28437/borkel' + - + type: license + id: 5 + attributes: + name: 'Creative Commons BY-NC-SA 3.0' + link: 'http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode' + created_at: null + updated_at: null + - + type: mod_version + id: 6345 + attributes: + hub_id: 8824 + mod_id: 966 + version: 1.3.1 + link: 'https://drive.google.com/file/d/1hU4OrrTuvTPvVawG0y-XYRHHBDudGQMi/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 569 + created_at: '2024-02-03T17:57:20.000000Z' + updated_at: '2024-02-03T17:57:20.000000Z' + published_at: '2024-02-03 17:57:20' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6341 + attributes: + hub_id: 8820 + mod_id: 966 + version: 1.3.0 + link: 'https://drive.google.com/file/d/172O9iwpnGwAhvd8_TEboHq5FZT1z8jAg/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 354 + created_at: '2024-02-01T23:28:44.000000Z' + updated_at: '2024-02-01T23:28:44.000000Z' + published_at: '2024-02-01 23:28:44' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6103 + attributes: + hub_id: 8560 + mod_id: 966 + version: 1.2.3 + link: 'https://drive.google.com/file/d/1uj7w_y-G07ZgRH5zCiWmfx3CpYo22h5U/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 2435 + created_at: '2023-12-26T00:30:08.000000Z' + updated_at: '2023-12-26T00:30:08.000000Z' + published_at: '2023-12-26 00:30:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5937 + attributes: + hub_id: 8367 + mod_id: 966 + version: 1.2.2 + link: 'https://drive.google.com/file/d/1BLekIeILG3JIrmurMGeDIY07y2-QCL2d/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 2121 + created_at: '2023-11-27T18:42:10.000000Z' + updated_at: '2023-11-27T18:42:10.000000Z' + published_at: '2023-11-27 18:42:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5909 + attributes: + hub_id: 8329 + mod_id: 966 + version: 1.2.1 + link: 'https://drive.google.com/file/d/17o_qSxFg7cX0eCAWBFJdGsw2N-F9MNeq/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 720 + created_at: '2023-11-21T21:08:32.000000Z' + updated_at: '2023-11-21T21:08:32.000000Z' + published_at: '2023-11-21 21:08:32' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5877 + attributes: + hub_id: 8289 + mod_id: 966 + version: 1.2.0 + link: 'https://drive.google.com/file/d/1wlOwE3_yn5OIz3NcInC3mHmXx2t7G3_2/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 500 + created_at: '2023-11-18T20:36:57.000000Z' + updated_at: '2023-11-18T20:36:57.000000Z' + published_at: '2023-11-18 20:36:57' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5803 + attributes: + hub_id: 8178 + mod_id: 966 + version: 1.1.9 + link: 'https://drive.google.com/file/d/15ummKgeDafpZSoxBMxSjKEyZj3TNgKF7/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1096 + created_at: '2023-11-07T23:45:20.000000Z' + updated_at: '2023-11-07T23:45:20.000000Z' + published_at: '2023-11-07 23:45:20' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5794 + attributes: + hub_id: 8165 + mod_id: 966 + version: 1.1.8 + link: 'https://drive.google.com/file/d/16ndU_sSA8tY2QSNL-WDOeHFEaWVbIzDF/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 203 + created_at: '2023-11-07T02:59:24.000000Z' + updated_at: '2023-11-07T02:59:24.000000Z' + published_at: '2023-11-07 02:59:24' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5783 + attributes: + hub_id: 8153 + mod_id: 966 + version: 1.1.7 + link: 'https://drive.google.com/file/d/18ehvL906RTjOTCyPLXzFdSIyTJ9MzI0P/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 427 + created_at: '2023-11-05T12:06:01.000000Z' + updated_at: '2023-11-05T12:06:01.000000Z' + published_at: '2023-11-05 12:06:01' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5648 + attributes: + hub_id: 7996 + mod_id: 966 + version: 1.1.6 + link: 'https://drive.google.com/file/d/1suGNK4UFWQueyzU_LSgSd-Cgr8FK5wLs/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1217 + created_at: '2023-10-22T12:15:53.000000Z' + updated_at: '2023-10-22T12:15:53.000000Z' + published_at: '2023-10-22 12:15:53' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5508 + attributes: + hub_id: 7818 + mod_id: 966 + version: 1.1.5 + link: 'https://drive.google.com/file/d/1mkkiFekuoQLB4-SjsKqAnHE6hCGirHIS/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1016 + created_at: '2023-10-14T23:18:46.000000Z' + updated_at: '2023-10-14T23:18:46.000000Z' + published_at: '2023-10-14 23:18:46' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5324 + attributes: + hub_id: 7587 + mod_id: 966 + version: 1.1.4 + link: 'https://drive.google.com/file/d/1jTfyoj2s-V97rTob02vO46h_uSU2QSHJ/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1139 + created_at: '2023-10-08T22:38:49.000000Z' + updated_at: '2023-10-08T22:38:49.000000Z' + published_at: '2023-10-08 22:38:49' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5263 + attributes: + hub_id: 7507 + mod_id: 966 + version: 1.1.3 + link: 'https://drive.google.com/file/d/1aS0DUizGuZ0aZ_Bjrswx34o4Vtl6Zt98/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 284 + created_at: '2023-10-03T00:16:12.000000Z' + updated_at: '2023-10-03T00:16:12.000000Z' + published_at: '2023-10-03 00:16:12' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5094 + attributes: + hub_id: 7276 + mod_id: 966 + version: 1.1.2 + link: 'https://drive.google.com/file/d/1P_9nkNcOB_AR9PrsyGBGX1cyVLn2Oixg/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 898 + created_at: '2023-08-30T16:19:32.000000Z' + updated_at: '2023-08-30T16:19:32.000000Z' + published_at: '2023-08-30 16:19:32' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4881 + attributes: + hub_id: 6973 + mod_id: 966 + version: 1.1.1 + link: 'https://drive.google.com/file/d/1Rey1qKs76Svxhx8zAIHEcISDO5Yd3qz2/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 874 + created_at: '2023-08-03T19:49:47.000000Z' + updated_at: '2023-08-03T19:49:47.000000Z' + published_at: '2023-08-03 19:49:47' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4731 + attributes: + hub_id: 6738 + mod_id: 966 + version: 1.1.0 + link: 'https://drive.google.com/file/d/1sv1Sw5ctGugA3pYW0WJSi8jAJtRzne-F/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 829 + created_at: '2023-07-13T11:58:37.000000Z' + updated_at: '2023-07-13T11:58:37.000000Z' + published_at: '2023-07-13 11:58:37' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4687 + attributes: + hub_id: 6671 + mod_id: 966 + version: 1.0.0 + link: 'https://drive.google.com/file/d/1GsL5eWaRmkSpdCg43I46CP5HONeaF8uA/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 788 + created_at: '2023-06-30T20:48:45.000000Z' + updated_at: '2023-06-30T20:48:45.000000Z' + published_at: '2023-06-30 20:48:45' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6352 + attributes: + hub_id: 8833 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1nWR9yC1YBu7oirxqZtus7MVwU7JV_OhG/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 496 + created_at: '2024-02-07T00:10:32.000000Z' + updated_at: '2024-02-07T00:10:32.000000Z' + published_at: '2024-02-07 00:10:32' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6354 + attributes: + hub_id: 8838 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1WVEWhH4d77lo81OhIM4y54OMNPyDUVfi/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 304 + created_at: '2024-02-08T17:15:44.000000Z' + updated_at: '2024-02-08T17:15:44.000000Z' + published_at: '2024-02-08 17:15:44' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6356 + attributes: + hub_id: 8840 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1LiYK6I4PbbLl6tnPQFWKSKfcbvc5dRYk/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 403 + created_at: '2024-02-09T16:24:14.000000Z' + updated_at: '2024-02-09T16:24:14.000000Z' + published_at: '2024-02-09 16:24:14' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6358 + attributes: + hub_id: 8843 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/15UJK7kD_DpFhcjsTgl3L-zcM6QoRZhWn/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 725 + created_at: '2024-02-10T22:56:33.000000Z' + updated_at: '2024-02-10T22:56:33.000000Z' + published_at: '2024-02-10 22:56:33' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6365 + attributes: + hub_id: 8855 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1dHLlSh6WLFxPfzMEgxVpVxum2dEZm3qr/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 723 + created_at: '2024-02-14T16:00:54.000000Z' + updated_at: '2024-02-14T16:00:54.000000Z' + published_at: '2024-02-14 16:00:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6374 + attributes: + hub_id: 8867 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/11FwY8gWE1ZU0Vh0rvItR7OLn0Jx9bY-W/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1154 + created_at: '2024-02-17T17:52:12.000000Z' + updated_at: '2024-02-17T17:52:12.000000Z' + published_at: '2024-02-17 17:52:12' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6384 + attributes: + hub_id: 8877 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1KDTMPJL-oh9M_FafQZ5cStzEeg8-YCOB/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1376 + created_at: '2024-02-22T23:44:46.000000Z' + updated_at: '2024-02-22T23:44:46.000000Z' + published_at: '2024-02-22 23:44:46' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6398 + attributes: + hub_id: 8897 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1VPMh6KxOJppiiO-jHhNb6ZpWzCI8AnTo/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 588 + created_at: '2024-03-01T21:51:43.000000Z' + updated_at: '2024-03-01T21:51:43.000000Z' + published_at: '2024-03-01 21:51:43' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6408 + attributes: + hub_id: 8908 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1xWOgtPdFuFRjd4RdIuLYhH8Qyw382nN_/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 850 + created_at: '2024-03-03T22:46:14.000000Z' + updated_at: '2024-03-03T22:46:14.000000Z' + published_at: '2024-03-03 22:46:14' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6421 + attributes: + hub_id: 8921 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1mZMD1GS879djCNtC-BypCT0DWvzTI_ZZ/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 3498 + created_at: '2024-03-08T19:39:00.000000Z' + updated_at: '2024-03-08T19:39:00.000000Z' + published_at: '2024-03-08 19:39:00' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6641 + attributes: + hub_id: 9191 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1vvuCBVp90xsmst5jGqBvpsfW8I6h9anz/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 3607 + created_at: '2024-04-04T16:49:19.000000Z' + updated_at: '2024-04-04T16:49:19.000000Z' + published_at: '2024-04-04 16:49:19' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6728 + attributes: + hub_id: 9298 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1v-pFeMqGaDfovxNtef2NzG0G2Z9I52Cz/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 14482 + created_at: '2024-04-07T23:44:28.000000Z' + updated_at: '2024-04-07T23:44:28.000000Z' + published_at: '2024-04-07 23:44:28' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7113 + attributes: + hub_id: 9744 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1OWl4GXbaw-Zg3WK0llroMIxBPILKrWst/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 3679 + created_at: '2024-05-03T19:19:06.000000Z' + updated_at: '2024-05-03T19:19:06.000000Z' + published_at: '2024-05-03 19:19:06' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7167 + attributes: + hub_id: 9803 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1d-ujV0Y3exFh1YDLkkRu23WDcMdO_O_0/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1290 + created_at: '2024-05-07T16:54:50.000000Z' + updated_at: '2024-05-07T16:54:50.000000Z' + published_at: '2024-05-07 16:54:50' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7180 + attributes: + hub_id: 9818 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1-OBJbhDEEwdhBDEj0hYpShioxbGYYaK4/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 15804 + created_at: '2024-05-08T18:11:20.000000Z' + updated_at: '2024-05-08T18:11:20.000000Z' + published_at: '2024-05-08 18:11:20' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7623 + attributes: + hub_id: 10324 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1kH6p9SW6DSTWp4KBa_3zGkcIOPVABco_/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 7086 + created_at: '2024-06-19T17:57:31.000000Z' + updated_at: '2024-06-19T17:57:31.000000Z' + published_at: '2024-06-19 17:57:31' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8065 + attributes: + hub_id: 10810 + mod_id: 966 + version: 0.0.0 + link: 'https://drive.google.com/file/d/1Lc_Ky0BK0U2bC6flMXnau5Zy8lgr76Ax/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 1284 + created_at: '2024-07-13T12:44:58.000000Z' + updated_at: '2024-07-13T12:44:58.000000Z' + published_at: '2024-07-13 12:44:58' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8209 + attributes: + hub_id: 10970 + mod_id: 966 + version: 0.0.0 + link: 'https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.6/BRNVG-1.5.6.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 14350 + created_at: '2024-07-20T15:04:51.000000Z' + updated_at: '2024-07-20T15:04:51.000000Z' + published_at: '2024-07-20 15:04:51' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8538 + attributes: + hub_id: 11340 + mod_id: 966 + version: 0.0.0 + link: 'https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.7/BRNVG-1.5.7.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 4293 + created_at: '2024-08-14T14:04:26.000000Z' + updated_at: '2024-08-14T14:04:26.000000Z' + published_at: '2024-08-14 14:04:26' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8672 + attributes: + hub_id: 11489 + mod_id: 966 + version: 0.0.0 + link: 'https://github.com/Borkel/RealisticNVG-client-2/releases/download/1.5.8/BRNVG-1.5.8.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/428efdcc39081cba6afb71ee6a4ca023f584cb8c06208986b03aa249ff66fada?nocache=1' + downloads: 7425 + created_at: '2024-08-24T21:52:19.000000Z' + updated_at: '2024-08-24T21:52:19.000000Z' + published_at: '2024-08-24 21:52:19' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/966/borkels-realistic-night-vision-goggles-nvgs-and-t-7' + - + type: mod + id: 1682 + attributes: + hub_id: 2195 + name: 'Bullet Crack Fix' + slug: bullet-crack-fix + teaser: "Stop bullet cracks when they shouldn't happen." + license_id: 11 + source_code_link: 'https://github.com/Solarint/BulletCrackFix' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-07-30T06:17:58.000000Z' + updated_at: '2024-09-15T18:48:13.000000Z' + published_at: '2024-07-30 06:17:58' + relationships: + users: + - + data: + type: user + id: 27464 + links: + self: 'http://forge.test/user/27464/solarint' + versions: + - + data: + type: version + id: 8361 + links: + self: 'https://github.com/Solarint/BulletCrackFix/releases/download/v1.0/Solarint-BulletCrackFix-1.0-Release.7z' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 27464 + attributes: + name: Solarint + user_role_id: null + created_at: '2023-02-23T17:11:59.000000Z' + updated_at: '2024-09-15T18:43:47.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/27464/solarint' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 8361 + attributes: + hub_id: 11133 + mod_id: 1682 + version: 1.0.0 + link: 'https://github.com/Solarint/BulletCrackFix/releases/download/v1.0/Solarint-BulletCrackFix-1.0-Release.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/52d41118bd8e91273567b0a0c3dcc77903e8b7dd1d3669f99480ff9313d95042?nocache=1' + downloads: 8612 + created_at: '2024-07-30T06:17:58.000000Z' + updated_at: '2024-07-30T06:17:58.000000Z' + published_at: '2024-07-30 06:17:58' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1682/bullet-crack-fix' + - + type: mod + id: 1484 + attributes: + hub_id: 1981 + name: 'Dynamic Maps' + slug: dynamic-maps + teaser: 'Replaces the in-game map screen with actually useful maps with dynamic information!' + license_id: 11 + source_code_link: 'https://github.com/mpstark/SPT-DynamicMaps' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-05-23T02:35:55.000000Z' + updated_at: '2024-09-15T18:48:13.000000Z' + published_at: '2024-05-23 02:35:55' + relationships: + users: + - + data: + type: user + id: 27606 + links: + self: 'http://forge.test/user/27606/drakiaxyz' + - + data: + type: user + id: 33964 + links: + self: 'http://forge.test/user/33964/dirtbikercj' + - + data: + type: user + id: 47480 + links: + self: 'http://forge.test/user/47480/mpstark' + versions: + - + data: + type: version + id: 8444 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.4/DynamicMaps-0.3.4-b6d8bf85.zip' + - + data: + type: version + id: 8144 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.3/DynamicMaps-0.3.3-111ea758.zip' + - + data: + type: version + id: 7825 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.2/DynamicMaps-0.3.2-55669364.zip' + - + data: + type: version + id: 7476 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1/DynamicMaps-0.3.1-dcbaf9ea.zip' + - + data: + type: version + id: 7432 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.0/DynamicMaps-0.3.0-f8d4ed27.zip' + - + data: + type: version + id: 7410 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.2.1/DynamicMaps-0.2.1-01ec57c1.zip' + - + data: + type: version + id: 7402 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.2.0/DynamicMaps-0.2.0-b76afa42.zip' + - + data: + type: version + id: 7369 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.3/DynamicMaps-0.1.3-34486712.zip' + - + data: + type: version + id: 7365 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.2/DynamicMaps-0.1.2-bf85c0ef.zip' + - + data: + type: version + id: 7364 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.1/DynamicMaps-0.1.1-0a158297.zip' + - + data: + type: version + id: 7360 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.0/DynamicMaps-0.1.0-c581f5fb.zip' + - + data: + type: version + id: 7477 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.1/DynamicMaps-0.3.1.1-30462ee8.zip' + - + data: + type: version + id: 7484 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.2/DynamicMaps-0.3.1.2-e1cc3770.zip' + - + data: + type: version + id: 7511 + links: + self: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.3/DynamicMaps-0.3.1.3-c079a1fa.zip' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 27606 + attributes: + name: DrakiaXYZ + user_role_id: 4 + created_at: '2023-02-26T18:51:50.000000Z' + updated_at: '2024-09-15T18:43:48.000000Z' + relationships: + user_role: + data: + type: user_role + id: 4 + links: + self: 'http://forge.test/user/27606/drakiaxyz' + - + type: user + id: 33964 + attributes: + name: Dirtbikercj + user_role_id: null + created_at: '2023-07-14T19:01:21.000000Z' + updated_at: '2024-09-15T18:44:12.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/33964/dirtbikercj' + - + type: user + id: 47480 + attributes: + name: mpstark + user_role_id: null + created_at: '2024-04-04T09:27:41.000000Z' + updated_at: '2024-09-15T18:45:05.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/47480/mpstark' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 8444 + attributes: + hub_id: 11222 + mod_id: 1484 + version: 0.3.4 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.4/DynamicMaps-0.3.4-b6d8bf85.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 33648 + created_at: '2024-08-06T07:43:10.000000Z' + updated_at: '2024-08-06T07:43:10.000000Z' + published_at: '2024-08-06 07:43:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8144 + attributes: + hub_id: 10896 + mod_id: 1484 + version: 0.3.3 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.3/DynamicMaps-0.3.3-111ea758.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 19119 + created_at: '2024-07-17T03:57:06.000000Z' + updated_at: '2024-07-17T03:57:06.000000Z' + published_at: '2024-07-17 03:57:06' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7825 + attributes: + hub_id: 10545 + mod_id: 1484 + version: 0.3.2 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.2/DynamicMaps-0.3.2-55669364.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 11178 + created_at: '2024-07-07T12:56:17.000000Z' + updated_at: '2024-07-07T12:56:17.000000Z' + published_at: '2024-07-07 12:56:17' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7476 + attributes: + hub_id: 10152 + mod_id: 1484 + version: 0.3.1 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1/DynamicMaps-0.3.1-dcbaf9ea.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 213 + created_at: '2024-06-02T20:46:08.000000Z' + updated_at: '2024-06-02T20:46:08.000000Z' + published_at: '2024-06-02 20:46:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7432 + attributes: + hub_id: 10100 + mod_id: 1484 + version: 0.3.0 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.0/DynamicMaps-0.3.0-f8d4ed27.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 4751 + created_at: '2024-05-29T22:49:48.000000Z' + updated_at: '2024-05-29T22:49:48.000000Z' + published_at: '2024-05-29 22:49:48' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7410 + attributes: + hub_id: 10078 + mod_id: 1484 + version: 0.2.1 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.2.1/DynamicMaps-0.2.1-01ec57c1.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 2116 + created_at: '2024-05-27T21:23:39.000000Z' + updated_at: '2024-05-27T21:23:39.000000Z' + published_at: '2024-05-27 21:23:39' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7402 + attributes: + hub_id: 10070 + mod_id: 1484 + version: 0.2.0 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.2.0/DynamicMaps-0.2.0-b76afa42.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 1561 + created_at: '2024-05-26T22:06:08.000000Z' + updated_at: '2024-05-26T22:06:08.000000Z' + published_at: '2024-05-26 22:06:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7369 + attributes: + hub_id: 10033 + mod_id: 1484 + version: 0.1.3 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.3/DynamicMaps-0.1.3-34486712.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 3887 + created_at: '2024-05-23T13:39:30.000000Z' + updated_at: '2024-05-23T13:39:30.000000Z' + published_at: '2024-05-23 13:39:30' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7365 + attributes: + hub_id: 10029 + mod_id: 1484 + version: 0.1.2 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.2/DynamicMaps-0.1.2-bf85c0ef.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 201 + created_at: '2024-05-23T12:15:39.000000Z' + updated_at: '2024-05-23T12:15:39.000000Z' + published_at: '2024-05-23 12:15:39' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7364 + attributes: + hub_id: 10028 + mod_id: 1484 + version: 0.1.1 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.1/DynamicMaps-0.1.1-0a158297.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 321 + created_at: '2024-05-23T09:47:07.000000Z' + updated_at: '2024-05-23T09:47:07.000000Z' + published_at: '2024-05-23 09:47:07' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7360 + attributes: + hub_id: 10023 + mod_id: 1484 + version: 0.1.0 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.1.0/DynamicMaps-0.1.0-c581f5fb.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 608 + created_at: '2024-05-23T02:35:55.000000Z' + updated_at: '2024-05-23T02:35:55.000000Z' + published_at: '2024-05-23 02:35:55' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7477 + attributes: + hub_id: 10153 + mod_id: 1484 + version: 0.0.0 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.1/DynamicMaps-0.3.1.1-30462ee8.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 1944 + created_at: '2024-06-02T21:47:31.000000Z' + updated_at: '2024-06-02T21:47:31.000000Z' + published_at: '2024-06-02 21:47:31' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7484 + attributes: + hub_id: 10162 + mod_id: 1484 + version: 0.0.0 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.2/DynamicMaps-0.3.1.2-e1cc3770.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 2999 + created_at: '2024-06-04T02:23:00.000000Z' + updated_at: '2024-06-04T02:23:00.000000Z' + published_at: '2024-06-04 02:23:00' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7511 + attributes: + hub_id: 10195 + mod_id: 1484 + version: 0.0.0 + link: 'https://github.com/mpstark/SPT-DynamicMaps/releases/download/0.3.1.3/DynamicMaps-0.3.1.3-c079a1fa.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/bc92dd3e4b218cf13316af0725ca4e485408c0860faa769969b4e6f6fd67ee83' + downloads: 18595 + created_at: '2024-06-07T04:54:11.000000Z' + updated_at: '2024-06-07T04:54:11.000000Z' + published_at: '2024-06-07 04:54:11' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1484/dynamic-maps' + - + type: mod + id: 1039 + attributes: + hub_id: 1415 + name: 'Expanded Task Text (ETT)' + slug: expanded-task-text-ett + teaser: "Knowledge is power, unfortunately Nikita doesn't see it that way." + license_id: 16 + source_code_link: 'https://github.com/CJ-SPT/Expanded-Task-Text' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2023-08-23T07:57:19.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2023-08-23 07:57:19' + relationships: + users: + - + data: + type: user + id: 33964 + links: + self: 'http://forge.test/user/33964/dirtbikercj' + versions: + - + data: + type: version + id: 8867 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.6.1/ExpandedTaskText.7z' + - + data: + type: version + id: 8738 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.6.0/ExpandedTaskText.7z' + - + data: + type: version + id: 8067 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.3/ExpandedTaskText.7z' + - + data: + type: version + id: 7856 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.2/ExpandedTaskText.7z' + - + data: + type: version + id: 7479 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.1/ExpandedTaskText.7z' + - + data: + type: version + id: 7413 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.0/ExpandedTaskText.7z' + - + data: + type: version + id: 6829 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.3/ExpandedTaskText.7z' + - + data: + type: version + id: 6609 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.2/ExpandedTaskText.7z' + - + data: + type: version + id: 6555 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.1/ExpandedTaskText.7z' + - + data: + type: version + id: 6528 + links: + self: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.0/ExpandedTaskText.7z' + - + data: + type: version + id: 6235 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.2/ExpandedTaskText.7z' + - + data: + type: version + id: 6022 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.1/Dirtbikercj-ExpandedTaskText-1.3.1.7z' + - + data: + type: version + id: 6015 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.0/Dirtbikercj-ExpandedTaskText-1.3.0.7z' + - + data: + type: version + id: 5985 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.5/Dirtbikercj-ExpandedTaskText-1.2.5.7z' + - + data: + type: version + id: 5884 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/1.2.4/Dirtbikercj-ExpandedTaskText-1.2.4.7z' + - + data: + type: version + id: 5501 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.3/Dirtbikercj-ExpandedTaskText-1.2.3.7z' + - + data: + type: version + id: 5341 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.2/Dirtbikercj-ExpandedTaskText-1.2.2.7z' + - + data: + type: version + id: 5032 + links: + self: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.1/Dirtbikercj-ExpandedTaskText-1.2.1.7z' + license: + - + data: + type: license + id: 16 + includes: + - + type: user + id: 33964 + attributes: + name: Dirtbikercj + user_role_id: null + created_at: '2023-07-14T19:01:21.000000Z' + updated_at: '2024-09-15T18:44:12.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/33964/dirtbikercj' + - + type: license + id: 16 + attributes: + name: 'Creative Commons BY-NC-ND 4.0' + link: 'https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode' + created_at: null + updated_at: null + - + type: mod_version + id: 8867 + attributes: + hub_id: 11705 + mod_id: 1039 + version: 1.6.1 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.6.1/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 1133 + created_at: '2024-09-12T11:11:00.000000Z' + updated_at: '2024-09-12T11:11:00.000000Z' + published_at: '2024-09-12 11:11:00' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8738 + attributes: + hub_id: 11571 + mod_id: 1039 + version: 1.6.0 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.6.0/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 3332 + created_at: '2024-08-30T03:46:12.000000Z' + updated_at: '2024-08-30T03:46:12.000000Z' + published_at: '2024-08-30 03:46:12' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8067 + attributes: + hub_id: 10812 + mod_id: 1039 + version: 1.5.3 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.3/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 10805 + created_at: '2024-07-13T15:24:09.000000Z' + updated_at: '2024-07-13T15:24:09.000000Z' + published_at: '2024-07-13 15:24:09' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7856 + attributes: + hub_id: 10577 + mod_id: 1039 + version: 1.5.2 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.2/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 2584 + created_at: '2024-07-07T22:23:56.000000Z' + updated_at: '2024-07-07T22:23:56.000000Z' + published_at: '2024-07-07 22:23:56' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7479 + attributes: + hub_id: 10156 + mod_id: 1039 + version: 1.5.1 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.1/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 6168 + created_at: '2024-06-03T04:53:07.000000Z' + updated_at: '2024-06-03T04:53:07.000000Z' + published_at: '2024-06-03 04:53:07' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7413 + attributes: + hub_id: 10081 + mod_id: 1039 + version: 1.5.0 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.5.0/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 2150 + created_at: '2024-05-28T05:30:41.000000Z' + updated_at: '2024-05-28T05:30:41.000000Z' + published_at: '2024-05-28 05:30:41' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6829 + attributes: + hub_id: 9408 + mod_id: 1039 + version: 1.4.3 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.3/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 12439 + created_at: '2024-04-13T11:37:10.000000Z' + updated_at: '2024-04-13T11:37:10.000000Z' + published_at: '2024-04-13 11:37:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6609 + attributes: + hub_id: 9152 + mod_id: 1039 + version: 1.4.2 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.2/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 4209 + created_at: '2024-04-03T13:40:36.000000Z' + updated_at: '2024-04-03T13:40:36.000000Z' + published_at: '2024-04-03 13:40:36' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6555 + attributes: + hub_id: 9089 + mod_id: 1039 + version: 1.4.1 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.1/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 1525 + created_at: '2024-04-02T07:55:53.000000Z' + updated_at: '2024-04-02T07:55:53.000000Z' + published_at: '2024-04-02 07:55:53' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6528 + attributes: + hub_id: 9061 + mod_id: 1039 + version: 1.4.0 + link: 'https://github.com/CJ-SPT/Expanded-Task-Text/releases/download/V1.4.0/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 634 + created_at: '2024-04-02T01:24:45.000000Z' + updated_at: '2024-04-02T01:24:45.000000Z' + published_at: '2024-04-02 01:24:45' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6235 + attributes: + hub_id: 8707 + mod_id: 1039 + version: 1.3.2 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.2/ExpandedTaskText.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 6781 + created_at: '2024-01-13T20:56:22.000000Z' + updated_at: '2024-01-13T20:56:22.000000Z' + published_at: '2024-01-13 20:56:22' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6022 + attributes: + hub_id: 8465 + mod_id: 1039 + version: 1.3.1 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.1/Dirtbikercj-ExpandedTaskText-1.3.1.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 3872 + created_at: '2023-12-11T04:08:50.000000Z' + updated_at: '2023-12-11T04:08:50.000000Z' + published_at: '2023-12-11 04:08:50' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6015 + attributes: + hub_id: 8457 + mod_id: 1039 + version: 1.3.0 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.3.0/Dirtbikercj-ExpandedTaskText-1.3.0.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 260 + created_at: '2023-12-10T10:40:51.000000Z' + updated_at: '2023-12-10T10:40:51.000000Z' + published_at: '2023-12-10 10:40:51' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5985 + attributes: + hub_id: 8423 + mod_id: 1039 + version: 1.2.5 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.5/Dirtbikercj-ExpandedTaskText-1.2.5.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 628 + created_at: '2023-12-06T08:07:26.000000Z' + updated_at: '2023-12-06T08:07:26.000000Z' + published_at: '2023-12-06 08:07:26' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5884 + attributes: + hub_id: 8299 + mod_id: 1039 + version: 1.2.4 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/1.2.4/Dirtbikercj-ExpandedTaskText-1.2.4.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 1447 + created_at: '2023-11-19T15:35:47.000000Z' + updated_at: '2023-11-19T15:35:47.000000Z' + published_at: '2023-11-19 15:35:47' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5501 + attributes: + hub_id: 7810 + mod_id: 1039 + version: 1.2.3 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.3/Dirtbikercj-ExpandedTaskText-1.2.3.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 2243 + created_at: '2023-10-14T20:52:18.000000Z' + updated_at: '2023-10-14T20:52:18.000000Z' + published_at: '2023-10-14 20:52:18' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5341 + attributes: + hub_id: 7613 + mod_id: 1039 + version: 1.2.2 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.2/Dirtbikercj-ExpandedTaskText-1.2.2.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 1302 + created_at: '2023-10-09T04:22:18.000000Z' + updated_at: '2023-10-09T04:22:18.000000Z' + published_at: '2023-10-09 04:22:18' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5032 + attributes: + hub_id: 7196 + mod_id: 1039 + version: 1.2.1 + link: 'https://github.com/dirtbikercj/SPT-Expanded-Task-Text/releases/download/V1.2.1/Dirtbikercj-ExpandedTaskText-1.2.1.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/cb889a7b5bfa65ad3bca1c851f2d542c460303aa5335bf55b2ca4d9c7050acfd?nocache=1' + downloads: 2569 + created_at: '2023-08-23T07:57:19.000000Z' + updated_at: '2023-08-23T07:57:19.000000Z' + published_at: '2023-08-23 07:57:19' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1039/expanded-task-text-ett' + - + type: mod + id: 745 + attributes: + hub_id: 989 + name: 'Friendly PMC' + slug: friendly-pmc + teaser: 'Spawn with a squad of your side, recruit others while in the raid, and command them on the battlefield.' + license_id: 10 + source_code_link: 'https://bitbucket.org/pitvenin/friendlypmc/src/main/' + featured: true + contains_ai_content: true + contains_ads: false + created_at: '2023-01-28T21:51:05.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2023-01-28 21:51:05' + relationships: + users: + - + data: + type: user + id: 20756 + links: + self: 'http://forge.test/user/20756/pitalex' + versions: + - + data: + type: version + id: 8899 + links: + self: 'https://bitbucket.org/pitvenin/friendlypmc/downloads/friendlypmc-3.7.0.zip' + - + data: + type: version + id: 8670 + links: + self: 'https://ln5.sync.com/dl/46072a550/fxiga2nu-ss4ygq7i-9kgsfwrm-5jkxzaaa' + - + data: + type: version + id: 8629 + links: + self: 'https://ln5.sync.com/dl/e30ce8750/9p4b6n4x-53n7seqb-2ffey2fn-99but8ww' + - + data: + type: version + id: 8628 + links: + self: 'https://ln5.sync.com/dl/750324740/df7ty6ie-5jhtb2sx-xs33p3xd-epbji8xt' + - + data: + type: version + id: 8596 + links: + self: 'https://ln5.sync.com/dl/dd3a7d920/j6vxz4d7-t9gvjawg-c9tg6zc8-kuy7rybu' + - + data: + type: version + id: 8519 + links: + self: 'https://ln5.sync.com/dl/e428c8530/kg7kq3du-ngdkkgt2-9bbseqrh-ngw86zk5' + - + data: + type: version + id: 8438 + links: + self: 'https://drive.google.com/file/d/11Wx4lRfoBqz37YB5eXJY_78fbySaVqR3/view?usp=sharing' + - + data: + type: version + id: 8419 + links: + self: 'https://drive.google.com/file/d/1-UsQBpPPhYh6jJHPdYHZjVR7t_0WunkD/view?usp=sharing' + - + data: + type: version + id: 8415 + links: + self: 'https://drive.google.com/file/d/1deSb3WcFI3d5yDcuVf6PkoOxM_8lmAhv/view?usp=sharing' + - + data: + type: version + id: 8330 + links: + self: 'https://drive.google.com/file/d/1Kzl5RMuyfa52YsSDssINbg0r-AuCm9zg/view?usp=sharing' + - + data: + type: version + id: 8284 + links: + self: 'https://drive.google.com/file/d/16Hs6-a-wD_rhXbsZGLbzXmEv8tmRXxOy/view?usp=sharing' + - + data: + type: version + id: 7725 + links: + self: 'https://drive.google.com/file/d/1QUnhA1vfM6ohUTlPNZSL-Ajxv2PNs128/view?usp=sharing' + - + data: + type: version + id: 7721 + links: + self: 'https://drive.google.com/file/d/1hr15eBhNvkGUk6xb8Xiav6zWwP_xsisf/view?usp=sharing' + - + data: + type: version + id: 7715 + links: + self: 'https://drive.google.com/file/d/11tvMcwhRYQzqwimtS2hHA4UKTIqC5kZ7/view?usp=drive_link' + - + data: + type: version + id: 7708 + links: + self: 'https://drive.google.com/file/d/1geMSHp9dmvg3TUkVyIQZWoKPFMJKLJID/view?usp=sharing' + - + data: + type: version + id: 7707 + links: + self: 'https://drive.google.com/file/d/1sTmo_PvJvlAjDqcZOhTs3RkiTF5eBwhD/view?usp=sharing' + - + data: + type: version + id: 7630 + links: + self: 'https://drive.google.com/file/d/1czWbJ3umcs6joiwjHSwqn6vVtHSCPN6k/view?usp=sharing' + - + data: + type: version + id: 7621 + links: + self: 'https://drive.google.com/file/d/1ZakmfshVNJysFBJxhqeuZfQeTBTTWdPQ/view?usp=sharing' + - + data: + type: version + id: 7618 + links: + self: 'https://drive.google.com/file/d/1yyKZcVf3yn2D-GI9jaBXBw1dOcuWk9cV/view?usp=sharing' + - + data: + type: version + id: 7610 + links: + self: 'https://drive.google.com/file/d/1ooL0lDrD9YKwJsXx-GsMOgSlqhtpZlqv/view?usp=sharing' + - + data: + type: version + id: 7604 + links: + self: 'https://drive.google.com/file/d/1R19WZjv0i2wQVmpsYOEVJKeQ6NZkzKH6/view?usp=sharing' + - + data: + type: version + id: 7601 + links: + self: 'https://drive.google.com/file/d/1bRhcw7X4s0dhgG0TOP3BUdlQGfWwiBhQ/view?usp=sharing' + - + data: + type: version + id: 7590 + links: + self: 'https://drive.google.com/file/d/1RYMq-T79VFn9i_nCx-FuP-_UcV-CfJB8/view?usp=sharing' + - + data: + type: version + id: 7581 + links: + self: 'https://drive.google.com/file/d/1QAOod7G5BDP6dCRrWGYNI742-MT-gI-r/view?usp=sharing' + - + data: + type: version + id: 7576 + links: + self: 'https://drive.google.com/file/d/1OLxNa6HxaFdMI_RfhPb3LbUwQkp7VxGx/view?usp=sharing' + - + data: + type: version + id: 7564 + links: + self: 'https://drive.google.com/file/d/16rRU0s9MGXm4zujmEXUzJXcevFWSGThM/view?usp=sharing' + - + data: + type: version + id: 7559 + links: + self: 'https://drive.google.com/file/d/1QKYy72R_jMtQoZET9eN5eASbbcfhgjsu/view?usp=sharing' + - + data: + type: version + id: 7547 + links: + self: 'https://drive.google.com/file/d/1UsLxNT5bpAc3abWTu8SQaQtJwO-7bXHg/view?usp=drive_link' + - + data: + type: version + id: 7541 + links: + self: 'https://drive.google.com/file/d/1eQ17T8XH4-8f9KyvB-jxRZZYe4RgCm17/view?usp=drive_link' + - + data: + type: version + id: 7142 + links: + self: 'https://drive.google.com/file/d/1zOlL4xVnZHYGHXFEFqLvgqXuwJvNv_sD/view?usp=sharing' + - + data: + type: version + id: 6711 + links: + self: 'https://drive.google.com/file/d/1VEXvEatQeMsUHST33S5BF9aGiE_EAEO-/view?usp=sharing' + - + data: + type: version + id: 5661 + links: + self: 'https://drive.google.com/file/d/1b1r3OupxWBGk6s2DkuLbL4nY9ehI8W35/view?usp=share_link' + - + data: + type: version + id: 5547 + links: + self: 'https://drive.google.com/file/d/10GaGETMu0D1maRGGWr_qSYCqmy1-G7t6/view?usp=sharing' + - + data: + type: version + id: 5470 + links: + self: 'https://drive.google.com/file/d/1n4dCMejbNr5hgo9RgcNSMcropRuvjp_t/view?usp=sharing' + - + data: + type: version + id: 5012 + links: + self: 'https://drive.google.com/file/d/1jW15EZp5MIJJJO1u5kcAxEztaY9HOQ26/view?usp=drive_link' + - + data: + type: version + id: 4350 + links: + self: 'https://drive.google.com/file/d/12tmnPa1e8_-sVrpFmkvDJIzRWVhk_c1K/view?usp=share_link' + - + data: + type: version + id: 4254 + links: + self: 'https://drive.google.com/file/d/1WUVguPIMZMLJJc3G2S4AVfoTPn8xMVSI/view?usp=share_link' + - + data: + type: version + id: 4247 + links: + self: 'https://drive.google.com/file/d/13v9QeTPb_5a9UbJ-iJOwb9DHsMRmc1Hz/view?usp=share_link' + - + data: + type: version + id: 4220 + links: + self: 'https://drive.google.com/file/d/1qa5w2AcwPhzHe7LGp8Lb2wwYYfRSeV4d/view?usp=sharing' + - + data: + type: version + id: 3987 + links: + self: 'https://drive.google.com/file/d/18g4k6TIduQ6Sr-p9rKWLNjz-P39O7D6S/view?usp=share_link' + - + data: + type: version + id: 3912 + links: + self: 'https://drive.google.com/file/d/1OMx1t77kcjPv2ipfmSqwbxcYbvT3CPTx/view?usp=share_link' + - + data: + type: version + id: 3815 + links: + self: 'https://drive.google.com/file/d/1ZuZZMcIHl6T2lZzAE3cv7BZqcytdhh7f/view' + - + data: + type: version + id: 3793 + links: + self: 'https://drive.google.com/file/d/1rDTeoMAH2nOSgtDSUjTGLWdzuqz907A2/view?usp=sharing' + - + data: + type: version + id: 3783 + links: + self: 'https://drive.google.com/file/d/1KB1qi2vQ6bFNgk3GuQ5fQAUNSLbi3lzH/view?usp=sharing' + - + data: + type: version + id: 3719 + links: + self: 'https://drive.google.com/file/d/12JFsyuGZgs4Kbh7ktxjdSe48hXZItecw/view?usp=sharing' + - + data: + type: version + id: 3513 + links: + self: 'https://drive.google.com/file/d/1NT9E-TmqxUr-1G0vjRr8jEU2p-v8jwIz/view?usp=share_link' + - + data: + type: version + id: 3488 + links: + self: 'https://drive.google.com/file/d/1IGk0RbOlXDXPJ67pWO2PpyPdbwGCv-22/view?usp=share_link' + license: + - + data: + type: license + id: 10 + includes: + - + type: user + id: 20756 + attributes: + name: pitAlex + user_role_id: null + created_at: '2022-07-18T21:39:14.000000Z' + updated_at: '2024-09-15T18:43:21.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/20756/pitalex' + - + type: license + id: 10 + attributes: + name: 'Apache License 2.0' + link: 'https://choosealicense.com/licenses/apache-2.0/' + created_at: null + updated_at: null + - + type: mod_version + id: 8899 + attributes: + hub_id: 11737 + mod_id: 745 + version: 3.7.0 + link: 'https://bitbucket.org/pitvenin/friendlypmc/downloads/friendlypmc-3.7.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 611 + created_at: '2024-09-14T21:30:18.000000Z' + updated_at: '2024-09-14T21:30:18.000000Z' + published_at: '2024-09-14 21:30:18' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8670 + attributes: + hub_id: 11486 + mod_id: 745 + version: 3.6.4-beta + link: 'https://ln5.sync.com/dl/46072a550/fxiga2nu-ss4ygq7i-9kgsfwrm-5jkxzaaa' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 5746 + created_at: '2024-08-24T20:33:31.000000Z' + updated_at: '2024-08-24T20:33:31.000000Z' + published_at: '2024-08-24 20:33:31' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8629 + attributes: + hub_id: 11439 + mod_id: 745 + version: 3.6.3-beta + link: 'https://ln5.sync.com/dl/e30ce8750/9p4b6n4x-53n7seqb-2ffey2fn-99but8ww' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 1050 + created_at: '2024-08-22T13:33:47.000000Z' + updated_at: '2024-08-22T13:33:47.000000Z' + published_at: '2024-08-22 13:33:47' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8628 + attributes: + hub_id: 11438 + mod_id: 745 + version: 3.6.2-beta + link: 'https://ln5.sync.com/dl/750324740/df7ty6ie-5jhtb2sx-xs33p3xd-epbji8xt' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 50 + created_at: '2024-08-22T13:22:29.000000Z' + updated_at: '2024-08-22T13:22:29.000000Z' + published_at: '2024-08-22 13:22:29' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8596 + attributes: + hub_id: 11404 + mod_id: 745 + version: 3.6.1-beta + link: 'https://ln5.sync.com/dl/dd3a7d920/j6vxz4d7-t9gvjawg-c9tg6zc8-kuy7rybu' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 930 + created_at: '2024-08-20T12:59:46.000000Z' + updated_at: '2024-08-20T12:59:46.000000Z' + published_at: '2024-08-20 12:59:46' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8519 + attributes: + hub_id: 11320 + mod_id: 745 + version: 3.6.0-beta + link: 'https://ln5.sync.com/dl/e428c8530/kg7kq3du-ngdkkgt2-9bbseqrh-ngw86zk5' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 2607 + created_at: '2024-08-13T13:28:11.000000Z' + updated_at: '2024-08-13T13:28:11.000000Z' + published_at: '2024-08-13 13:28:11' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8438 + attributes: + hub_id: 11214 + mod_id: 745 + version: 3.5.2 + link: 'https://drive.google.com/file/d/11Wx4lRfoBqz37YB5eXJY_78fbySaVqR3/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 2330 + created_at: '2024-08-05T20:29:00.000000Z' + updated_at: '2024-08-05T20:29:00.000000Z' + published_at: '2024-08-05 20:29:00' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8419 + attributes: + hub_id: 11194 + mod_id: 745 + version: 3.5.1-beta + link: 'https://drive.google.com/file/d/1-UsQBpPPhYh6jJHPdYHZjVR7t_0WunkD/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 729 + created_at: '2024-08-04T13:42:38.000000Z' + updated_at: '2024-08-04T13:42:38.000000Z' + published_at: '2024-08-04 13:42:38' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8415 + attributes: + hub_id: 11190 + mod_id: 745 + version: 3.5.0-beta + link: 'https://drive.google.com/file/d/1deSb3WcFI3d5yDcuVf6PkoOxM_8lmAhv/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 684 + created_at: '2024-08-03T19:30:16.000000Z' + updated_at: '2024-08-03T19:30:16.000000Z' + published_at: '2024-08-03 19:30:16' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8330 + attributes: + hub_id: 11102 + mod_id: 745 + version: 3.4.1-beta + link: 'https://drive.google.com/file/d/1Kzl5RMuyfa52YsSDssINbg0r-AuCm9zg/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 1665 + created_at: '2024-07-29T01:37:20.000000Z' + updated_at: '2024-07-29T01:37:20.000000Z' + published_at: '2024-07-29 01:37:20' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8284 + attributes: + hub_id: 11054 + mod_id: 745 + version: 3.4.0-beta + link: 'https://drive.google.com/file/d/16Hs6-a-wD_rhXbsZGLbzXmEv8tmRXxOy/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 1596 + created_at: '2024-07-26T01:06:13.000000Z' + updated_at: '2024-07-26T01:06:13.000000Z' + published_at: '2024-07-26 01:06:13' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7725 + attributes: + hub_id: 10434 + mod_id: 745 + version: 3.3.4 + link: 'https://drive.google.com/file/d/1QUnhA1vfM6ohUTlPNZSL-Ajxv2PNs128/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 531 + created_at: '2024-07-02T13:54:21.000000Z' + updated_at: '2024-07-02T13:54:21.000000Z' + published_at: '2024-07-02 13:54:21' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7721 + attributes: + hub_id: 10430 + mod_id: 745 + version: 3.3.3 + link: 'https://drive.google.com/file/d/1hr15eBhNvkGUk6xb8Xiav6zWwP_xsisf/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 397 + created_at: '2024-07-01T18:19:24.000000Z' + updated_at: '2024-07-01T18:19:24.000000Z' + published_at: '2024-07-01 18:19:24' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7715 + attributes: + hub_id: 10424 + mod_id: 745 + version: 3.3.2 + link: 'https://drive.google.com/file/d/11tvMcwhRYQzqwimtS2hHA4UKTIqC5kZ7/view?usp=drive_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 368 + created_at: '2024-06-30T22:26:30.000000Z' + updated_at: '2024-06-30T22:26:30.000000Z' + published_at: '2024-06-30 22:26:30' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7708 + attributes: + hub_id: 10415 + mod_id: 745 + version: 3.3.1 + link: 'https://drive.google.com/file/d/1geMSHp9dmvg3TUkVyIQZWoKPFMJKLJID/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 447 + created_at: '2024-06-29T21:25:47.000000Z' + updated_at: '2024-06-29T21:25:47.000000Z' + published_at: '2024-06-29 21:25:47' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7707 + attributes: + hub_id: 10414 + mod_id: 745 + version: 3.3.0 + link: 'https://drive.google.com/file/d/1sTmo_PvJvlAjDqcZOhTs3RkiTF5eBwhD/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 152 + created_at: '2024-06-29T18:42:54.000000Z' + updated_at: '2024-06-29T18:42:54.000000Z' + published_at: '2024-06-29 18:42:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7630 + attributes: + hub_id: 10331 + mod_id: 745 + version: 3.2.1-beta + link: 'https://drive.google.com/file/d/1czWbJ3umcs6joiwjHSwqn6vVtHSCPN6k/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 1906 + created_at: '2024-06-20T12:50:39.000000Z' + updated_at: '2024-06-20T12:50:39.000000Z' + published_at: '2024-06-20 12:50:39' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7621 + attributes: + hub_id: 10322 + mod_id: 745 + version: 3.2.0-beta + link: 'https://drive.google.com/file/d/1ZakmfshVNJysFBJxhqeuZfQeTBTTWdPQ/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 343 + created_at: '2024-06-19T11:59:33.000000Z' + updated_at: '2024-06-19T11:59:33.000000Z' + published_at: '2024-06-19 11:59:33' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7618 + attributes: + hub_id: 10318 + mod_id: 745 + version: 3.1.4-beta + link: 'https://drive.google.com/file/d/1yyKZcVf3yn2D-GI9jaBXBw1dOcuWk9cV/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 281 + created_at: '2024-06-18T14:22:00.000000Z' + updated_at: '2024-06-18T14:22:00.000000Z' + published_at: '2024-06-18 14:22:00' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7610 + attributes: + hub_id: 10309 + mod_id: 745 + version: 3.1.3-beta + link: 'https://drive.google.com/file/d/1ooL0lDrD9YKwJsXx-GsMOgSlqhtpZlqv/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 360 + created_at: '2024-06-17T10:51:08.000000Z' + updated_at: '2024-06-17T10:51:08.000000Z' + published_at: '2024-06-17 10:51:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7604 + attributes: + hub_id: 10301 + mod_id: 745 + version: 3.1.2-beta + link: 'https://drive.google.com/file/d/1R19WZjv0i2wQVmpsYOEVJKeQ6NZkzKH6/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 326 + created_at: '2024-06-16T12:25:08.000000Z' + updated_at: '2024-06-16T12:25:08.000000Z' + published_at: '2024-06-16 12:25:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7601 + attributes: + hub_id: 10297 + mod_id: 745 + version: 3.1.1-beta + link: 'https://drive.google.com/file/d/1bRhcw7X4s0dhgG0TOP3BUdlQGfWwiBhQ/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 337 + created_at: '2024-06-15T14:50:51.000000Z' + updated_at: '2024-06-15T14:50:51.000000Z' + published_at: '2024-06-15 14:50:51' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7590 + attributes: + hub_id: 10284 + mod_id: 745 + version: 3.1.0-beta + link: 'https://drive.google.com/file/d/1RYMq-T79VFn9i_nCx-FuP-_UcV-CfJB8/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 435 + created_at: '2024-06-13T21:26:04.000000Z' + updated_at: '2024-06-13T21:26:04.000000Z' + published_at: '2024-06-13 21:26:04' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7581 + attributes: + hub_id: 10271 + mod_id: 745 + version: 3.0.5-beta + link: 'https://drive.google.com/file/d/1QAOod7G5BDP6dCRrWGYNI742-MT-gI-r/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 297 + created_at: '2024-06-12T16:19:04.000000Z' + updated_at: '2024-06-12T16:19:04.000000Z' + published_at: '2024-06-12 16:19:04' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7576 + attributes: + hub_id: 10266 + mod_id: 745 + version: 3.0.4-beta + link: 'https://drive.google.com/file/d/1OLxNa6HxaFdMI_RfhPb3LbUwQkp7VxGx/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 124 + created_at: '2024-06-12T10:44:05.000000Z' + updated_at: '2024-06-12T10:44:05.000000Z' + published_at: '2024-06-12 10:44:05' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7564 + attributes: + hub_id: 10254 + mod_id: 745 + version: 3.0.3-beta + link: 'https://drive.google.com/file/d/16rRU0s9MGXm4zujmEXUzJXcevFWSGThM/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 355 + created_at: '2024-06-10T19:45:58.000000Z' + updated_at: '2024-06-10T19:45:58.000000Z' + published_at: '2024-06-10 19:45:58' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7559 + attributes: + hub_id: 10249 + mod_id: 745 + version: 3.0.2-beta + link: 'https://drive.google.com/file/d/1QKYy72R_jMtQoZET9eN5eASbbcfhgjsu/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 295 + created_at: '2024-06-10T08:49:43.000000Z' + updated_at: '2024-06-10T08:49:43.000000Z' + published_at: '2024-06-10 08:49:43' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7547 + attributes: + hub_id: 10235 + mod_id: 745 + version: 3.0.1-beta + link: 'https://drive.google.com/file/d/1UsLxNT5bpAc3abWTu8SQaQtJwO-7bXHg/view?usp=drive_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 240 + created_at: '2024-06-09T20:23:55.000000Z' + updated_at: '2024-06-09T20:23:55.000000Z' + published_at: '2024-06-09 20:23:55' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7541 + attributes: + hub_id: 10229 + mod_id: 745 + version: 3.0.0-beta + link: 'https://drive.google.com/file/d/1eQ17T8XH4-8f9KyvB-jxRZZYe4RgCm17/view?usp=drive_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 142 + created_at: '2024-06-09T17:16:51.000000Z' + updated_at: '2024-06-09T17:16:51.000000Z' + published_at: '2024-06-09 17:16:51' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7142 + attributes: + hub_id: 9776 + mod_id: 745 + version: 2.0.1 + link: 'https://drive.google.com/file/d/1zOlL4xVnZHYGHXFEFqLvgqXuwJvNv_sD/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 1579 + created_at: '2024-05-06T11:01:59.000000Z' + updated_at: '2024-05-06T11:01:59.000000Z' + published_at: '2024-05-06 11:01:59' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6711 + attributes: + hub_id: 9275 + mod_id: 745 + version: 2.0.0 + link: 'https://drive.google.com/file/d/1VEXvEatQeMsUHST33S5BF9aGiE_EAEO-/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 2188 + created_at: '2024-04-06T19:50:48.000000Z' + updated_at: '2024-04-06T19:50:48.000000Z' + published_at: '2024-04-06 19:50:48' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5661 + attributes: + hub_id: 8011 + mod_id: 745 + version: 1.3.3 + link: 'https://drive.google.com/file/d/1b1r3OupxWBGk6s2DkuLbL4nY9ehI8W35/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 2976 + created_at: '2023-10-22T18:15:45.000000Z' + updated_at: '2023-10-22T18:15:45.000000Z' + published_at: '2023-10-22 18:15:45' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5547 + attributes: + hub_id: 7862 + mod_id: 745 + version: 1.3.2 + link: 'https://drive.google.com/file/d/10GaGETMu0D1maRGGWr_qSYCqmy1-G7t6/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 471 + created_at: '2023-10-15T13:19:12.000000Z' + updated_at: '2023-10-15T13:19:12.000000Z' + published_at: '2023-10-15 13:19:12' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5470 + attributes: + hub_id: 7773 + mod_id: 745 + version: 1.3.1 + link: 'https://drive.google.com/file/d/1n4dCMejbNr5hgo9RgcNSMcropRuvjp_t/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 361 + created_at: '2023-10-13T11:59:25.000000Z' + updated_at: '2023-10-13T11:59:25.000000Z' + published_at: '2023-10-13 11:59:25' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5012 + attributes: + hub_id: 7167 + mod_id: 745 + version: 1.3.0 + link: 'https://drive.google.com/file/d/1jW15EZp5MIJJJO1u5kcAxEztaY9HOQ26/view?usp=drive_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 1335 + created_at: '2023-08-20T19:54:25.000000Z' + updated_at: '2023-08-20T19:54:25.000000Z' + published_at: '2023-08-20 19:54:25' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4350 + attributes: + hub_id: 6155 + mod_id: 745 + version: 1.2.0 + link: 'https://drive.google.com/file/d/12tmnPa1e8_-sVrpFmkvDJIzRWVhk_c1K/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 1698 + created_at: '2023-05-06T21:30:22.000000Z' + updated_at: '2023-05-06T21:30:22.000000Z' + published_at: '2023-05-06 21:30:22' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4254 + attributes: + hub_id: 6029 + mod_id: 745 + version: 1.1.7 + link: 'https://drive.google.com/file/d/1WUVguPIMZMLJJc3G2S4AVfoTPn8xMVSI/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 726 + created_at: '2023-04-20T13:14:03.000000Z' + updated_at: '2023-04-20T13:14:03.000000Z' + published_at: '2023-04-20 13:14:03' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4247 + attributes: + hub_id: 6020 + mod_id: 745 + version: 1.1.6 + link: 'https://drive.google.com/file/d/13v9QeTPb_5a9UbJ-iJOwb9DHsMRmc1Hz/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 110 + created_at: '2023-04-19T15:10:08.000000Z' + updated_at: '2023-04-19T15:10:08.000000Z' + published_at: '2023-04-19 15:10:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4220 + attributes: + hub_id: 5989 + mod_id: 745 + version: 1.1.5 + link: 'https://drive.google.com/file/d/1qa5w2AcwPhzHe7LGp8Lb2wwYYfRSeV4d/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 204 + created_at: '2023-04-16T20:03:26.000000Z' + updated_at: '2023-04-16T20:03:26.000000Z' + published_at: '2023-04-16 20:03:26' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3987 + attributes: + hub_id: 5631 + mod_id: 745 + version: 1.1.4 + link: 'https://drive.google.com/file/d/18g4k6TIduQ6Sr-p9rKWLNjz-P39O7D6S/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 958 + created_at: '2023-03-15T21:58:28.000000Z' + updated_at: '2023-03-15T21:58:28.000000Z' + published_at: '2023-03-15 21:58:28' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3912 + attributes: + hub_id: 5534 + mod_id: 745 + version: 1.1.3 + link: 'https://drive.google.com/file/d/1OMx1t77kcjPv2ipfmSqwbxcYbvT3CPTx/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 540 + created_at: '2023-03-09T17:13:48.000000Z' + updated_at: '2023-03-09T17:13:48.000000Z' + published_at: '2023-03-09 17:13:48' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3815 + attributes: + hub_id: 5399 + mod_id: 745 + version: 1.1.2 + link: 'https://drive.google.com/file/d/1ZuZZMcIHl6T2lZzAE3cv7BZqcytdhh7f/view' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 474 + created_at: '2023-03-03T13:31:40.000000Z' + updated_at: '2023-03-03T13:31:40.000000Z' + published_at: '2023-03-03 13:31:40' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3793 + attributes: + hub_id: 5369 + mod_id: 745 + version: 1.1.1 + link: 'https://drive.google.com/file/d/1rDTeoMAH2nOSgtDSUjTGLWdzuqz907A2/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 164 + created_at: '2023-03-01T18:02:49.000000Z' + updated_at: '2023-03-01T18:02:49.000000Z' + published_at: '2023-03-01 18:02:49' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3783 + attributes: + hub_id: 5354 + mod_id: 745 + version: 1.1.0 + link: 'https://drive.google.com/file/d/1KB1qi2vQ6bFNgk3GuQ5fQAUNSLbi3lzH/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 238 + created_at: '2023-02-27T12:44:44.000000Z' + updated_at: '2023-02-27T12:44:44.000000Z' + published_at: '2023-02-27 12:44:44' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3719 + attributes: + hub_id: 5274 + mod_id: 745 + version: 1.0.2 + link: 'https://drive.google.com/file/d/12JFsyuGZgs4Kbh7ktxjdSe48hXZItecw/view?usp=sharing' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 836 + created_at: '2023-02-19T15:39:51.000000Z' + updated_at: '2023-02-19T15:39:51.000000Z' + published_at: '2023-02-19 15:39:51' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3513 + attributes: + hub_id: 4992 + mod_id: 745 + version: 1.0.1 + link: 'https://drive.google.com/file/d/1NT9E-TmqxUr-1G0vjRr8jEU2p-v8jwIz/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 911 + created_at: '2023-02-01T01:07:14.000000Z' + updated_at: '2023-02-01T01:07:14.000000Z' + published_at: '2023-02-01 01:07:14' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3488 + attributes: + hub_id: 4950 + mod_id: 745 + version: 1.0.0 + link: 'https://drive.google.com/file/d/1IGk0RbOlXDXPJ67pWO2PpyPdbwGCv-22/view?usp=share_link' + virus_total_link: 'https://www.virustotal.com/gui/file/2acceb65b322a9907c3c191b08e884c9db391084039548027edafe1803065fd8?nocache=1' + downloads: 685 + created_at: '2023-01-28T21:51:05.000000Z' + updated_at: '2023-01-28T21:51:05.000000Z' + published_at: '2023-01-28 21:51:05' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/745/friendly-pmc' + - + type: mod + id: 876 + attributes: + hub_id: 1166 + name: 'Gilded Key Storage' + slug: gilded-key-storage + teaser: 'A balanced progression based approach to convenient all in one key storage!' + license_id: 16 + source_code_link: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2023-04-23T21:24:19.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2023-04-23 21:24:19' + relationships: + users: + - + data: + type: user + id: 27606 + links: + self: 'http://forge.test/user/27606/drakiaxyz' + - + data: + type: user + id: 29458 + links: + self: 'http://forge.test/user/29458/jehree' + versions: + - + data: + type: version + id: 7788 + links: + self: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.4.0/Jehree-GildedKeyStorage-1.4.0.zip' + - + data: + type: version + id: 6858 + links: + self: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.2/Jehree-GildedKeyStorage-1.3.2.zip' + - + data: + type: version + id: 6734 + links: + self: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.1/Jehree-GildedKeyStorage-1.3.1.zip' + - + data: + type: version + id: 6487 + links: + self: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.0/Jehree-GildedKeyStorage-1.3.0.zip' + - + data: + type: version + id: 4762 + links: + self: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip' + - + data: + type: version + id: 4659 + links: + self: 'https://www.mediafire.com/file/nne449ddrrwpkm0/Gilded_Key_Storage-1.1.1.zip/file' + - + data: + type: version + id: 4326 + links: + self: 'https://www.mediafire.com/file/veygcmlgi2tah6v/Gilded_Key_Storage-1.1.0.zip/file' + - + data: + type: version + id: 4282 + links: + self: 'https://www.mediafire.com/file/a1r404rik6evlhh/Gilded_Key_Storage-1.0.0.zip/file' + - + data: + type: version + id: 4763 + links: + self: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip' + - + data: + type: version + id: 4870 + links: + self: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip' + - + data: + type: version + id: 5606 + links: + self: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.2.0/jehree-gildedkeystorage-1.2.0.zip' + license: + - + data: + type: license + id: 16 + includes: + - + type: user + id: 27606 + attributes: + name: DrakiaXYZ + user_role_id: 4 + created_at: '2023-02-26T18:51:50.000000Z' + updated_at: '2024-09-15T18:43:48.000000Z' + relationships: + user_role: + data: + type: user_role + id: 4 + links: + self: 'http://forge.test/user/27606/drakiaxyz' + - + type: user + id: 29458 + attributes: + name: Jehree + user_role_id: null + created_at: '2023-03-30T17:43:41.000000Z' + updated_at: '2024-09-15T18:43:55.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/29458/jehree' + - + type: license + id: 16 + attributes: + name: 'Creative Commons BY-NC-ND 4.0' + link: 'https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode' + created_at: null + updated_at: null + - + type: mod_version + id: 7788 + attributes: + hub_id: 10504 + mod_id: 876 + version: 1.4.0 + link: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.4.0/Jehree-GildedKeyStorage-1.4.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 14506 + created_at: '2024-07-06T21:05:10.000000Z' + updated_at: '2024-07-06T21:05:10.000000Z' + published_at: '2024-07-06 21:05:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6858 + attributes: + hub_id: 9443 + mod_id: 876 + version: 1.3.2 + link: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.2/Jehree-GildedKeyStorage-1.3.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 14729 + created_at: '2024-04-15T06:18:57.000000Z' + updated_at: '2024-04-15T06:18:57.000000Z' + published_at: '2024-04-15 06:18:57' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6734 + attributes: + hub_id: 9304 + mod_id: 876 + version: 1.3.1 + link: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.1/Jehree-GildedKeyStorage-1.3.1.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 2213 + created_at: '2024-04-08T04:16:33.000000Z' + updated_at: '2024-04-08T04:16:33.000000Z' + published_at: '2024-04-08 04:16:33' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6487 + attributes: + hub_id: 9017 + mod_id: 876 + version: 1.3.0 + link: 'https://github.com/DrakiaXYZ/SPT-GildedKeyStorage/releases/download/1.3.0/Jehree-GildedKeyStorage-1.3.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 2581 + created_at: '2024-04-01T21:25:36.000000Z' + updated_at: '2024-04-01T21:25:36.000000Z' + published_at: '2024-04-01 21:25:36' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4762 + attributes: + hub_id: 6773 + mod_id: 876 + version: 1.1.2 + link: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 64 + created_at: '2023-07-17T01:56:49.000000Z' + updated_at: '2023-07-17T01:56:49.000000Z' + published_at: '2023-07-17 01:56:49' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4659 + attributes: + hub_id: 6608 + mod_id: 876 + version: 1.1.1 + link: 'https://www.mediafire.com/file/nne449ddrrwpkm0/Gilded_Key_Storage-1.1.1.zip/file' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 1008 + created_at: '2023-06-27T14:09:41.000000Z' + updated_at: '2023-06-27T14:09:41.000000Z' + published_at: '2023-06-27 14:09:41' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4326 + attributes: + hub_id: 6122 + mod_id: 876 + version: 1.1.0 + link: 'https://www.mediafire.com/file/veygcmlgi2tah6v/Gilded_Key_Storage-1.1.0.zip/file' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 2737 + created_at: '2023-04-30T21:41:30.000000Z' + updated_at: '2023-04-30T21:41:30.000000Z' + published_at: '2023-04-30 21:41:30' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4282 + attributes: + hub_id: 6068 + mod_id: 876 + version: 1.0.0 + link: 'https://www.mediafire.com/file/a1r404rik6evlhh/Gilded_Key_Storage-1.0.0.zip/file' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 751 + created_at: '2023-04-23T21:24:19.000000Z' + updated_at: '2023-04-23T21:24:19.000000Z' + published_at: '2023-04-23 21:24:19' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4763 + attributes: + hub_id: 6774 + mod_id: 876 + version: 0.0.0 + link: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 849 + created_at: '2023-07-17T02:21:51.000000Z' + updated_at: '2023-07-17T02:21:51.000000Z' + published_at: '2023-07-17 02:21:51' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4870 + attributes: + hub_id: 6957 + mod_id: 876 + version: 0.0.0 + link: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.1.2/Gilded.Key.Storage-1.1.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 2148 + created_at: '2023-08-03T00:44:04.000000Z' + updated_at: '2023-08-03T00:44:04.000000Z' + published_at: '2023-08-03 00:44:04' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5606 + attributes: + hub_id: 7940 + mod_id: 876 + version: 0.0.0 + link: 'https://github.com/Jehree/Gilded_Key_Storage/releases/download/v1.2.0/jehree-gildedkeystorage-1.2.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/416a2acffccfe9608b42af86b90d8396fdeb594de2e27d13374c77b37e795b9a?nocache=1' + downloads: 7495 + created_at: '2023-10-19T05:07:49.000000Z' + updated_at: '2023-10-19T05:07:49.000000Z' + published_at: '2023-10-19 05:07:49' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/876/gilded-key-storage' + - + type: mod + id: 1272 + attributes: + hub_id: 1736 + name: GTFO + slug: gtfo + teaser: "Want to learn maps visually for quests or extracts? Use this visual learning tool that will show extracts and quest objectives that are available to you and the distance from your player's current position." + license_id: 11 + source_code_link: 'https://github.com/dvize/GTFO' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-02-10T23:00:11.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2024-02-10 23:00:11' + relationships: + users: + - + data: + type: user + id: 15517 + links: + self: 'http://forge.test/user/15517/props' + versions: + - + data: + type: version + id: 8399 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.2.1/dvize.GTFO-v1.2.1.0.zip' + - + data: + type: version + id: 7907 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.2.0/dvize.GTFO-v1.2.0.0.zip' + - + data: + type: version + id: 7512 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.1.6/dvize.GTFO-1.1.6.zip' + - + data: + type: version + id: 7157 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.1.5/dvize.GTFOv1.1.5.zip' + - + data: + type: version + id: 7122 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.1.4/dvize.GTFOv1.1.4.zip' + - + data: + type: version + id: 7073 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.1.3/dvize.GTFOv1.1.3.zip' + - + data: + type: version + id: 6910 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.1.2/dvize.GTFOv1.1.2.zip' + - + data: + type: version + id: 6854 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.1.1/dvize.GTFOv1.1.1.zip' + - + data: + type: version + id: 6848 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.1.0/dvize.GTFOv1.1.0.zip' + - + data: + type: version + id: 6834 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.9/dvize.GTFOv1.0.9.zip' + - + data: + type: version + id: 6746 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.8/dvize.GTFOv1.0.8.zip' + - + data: + type: version + id: 6638 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.7/dvize.GTFOv1.07.zip' + - + data: + type: version + id: 6489 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.6/dvize.GTFOv1.0.6.zip' + - + data: + type: version + id: 6429 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.5/dvize.GTFOv1.0.5.zip' + - + data: + type: version + id: 6425 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.4/dvize.GTFOv1.04.zip' + - + data: + type: version + id: 6364 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.3/dvize.GTFOv1.0.3.zip' + - + data: + type: version + id: 6362 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.2/dvize.GTFOv1.0.2.zip' + - + data: + type: version + id: 6360 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.1/dvize.GTFOv1.01.zip' + - + data: + type: version + id: 6359 + links: + self: 'https://github.com/dvize/GTFO/releases/download/v1.0.0/dvize.GTFOv1.0.zip' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 15517 + attributes: + name: Props + user_role_id: null + created_at: '2022-03-09T07:33:42.000000Z' + updated_at: '2024-09-15T18:43:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/15517/props' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 8399 + attributes: + hub_id: 11171 + mod_id: 1272 + version: 1.2.1 + link: 'https://github.com/dvize/GTFO/releases/download/v1.2.1/dvize.GTFO-v1.2.1.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 8615 + created_at: '2024-08-01T18:39:59.000000Z' + updated_at: '2024-08-01T18:39:59.000000Z' + published_at: '2024-08-01 18:39:59' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7907 + attributes: + hub_id: 10631 + mod_id: 1272 + version: 1.2.0 + link: 'https://github.com/dvize/GTFO/releases/download/v1.2.0/dvize.GTFO-v1.2.0.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 5831 + created_at: '2024-07-08T19:16:26.000000Z' + updated_at: '2024-07-08T19:16:26.000000Z' + published_at: '2024-07-08 19:16:26' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7512 + attributes: + hub_id: 10196 + mod_id: 1272 + version: 1.1.6 + link: 'https://github.com/dvize/GTFO/releases/download/v1.1.6/dvize.GTFO-1.1.6.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 4414 + created_at: '2024-06-07T05:06:08.000000Z' + updated_at: '2024-06-07T05:06:08.000000Z' + published_at: '2024-06-07 05:06:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7157 + attributes: + hub_id: 9793 + mod_id: 1272 + version: 1.1.5 + link: 'https://github.com/dvize/GTFO/releases/download/v1.1.5/dvize.GTFOv1.1.5.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 4289 + created_at: '2024-05-06T21:03:37.000000Z' + updated_at: '2024-05-06T21:03:37.000000Z' + published_at: '2024-05-06 21:03:37' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7122 + attributes: + hub_id: 9754 + mod_id: 1272 + version: 1.1.4 + link: 'https://github.com/dvize/GTFO/releases/download/v1.1.4/dvize.GTFOv1.1.4.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 934 + created_at: '2024-05-04T19:34:13.000000Z' + updated_at: '2024-05-04T19:34:13.000000Z' + published_at: '2024-05-04 19:34:13' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7073 + attributes: + hub_id: 9702 + mod_id: 1272 + version: 1.1.3 + link: 'https://github.com/dvize/GTFO/releases/download/v1.1.3/dvize.GTFOv1.1.3.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 1056 + created_at: '2024-05-01T14:10:43.000000Z' + updated_at: '2024-05-01T14:10:43.000000Z' + published_at: '2024-05-01 14:10:43' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6910 + attributes: + hub_id: 9500 + mod_id: 1272 + version: 1.1.2 + link: 'https://github.com/dvize/GTFO/releases/download/v1.1.2/dvize.GTFOv1.1.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 2523 + created_at: '2024-04-17T07:59:17.000000Z' + updated_at: '2024-04-17T07:59:17.000000Z' + published_at: '2024-04-17 07:59:17' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6854 + attributes: + hub_id: 9439 + mod_id: 1272 + version: 1.1.1 + link: 'https://github.com/dvize/GTFO/releases/download/v1.1.1/dvize.GTFOv1.1.1.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 614 + created_at: '2024-04-15T02:35:54.000000Z' + updated_at: '2024-04-15T02:35:54.000000Z' + published_at: '2024-04-15 02:35:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6848 + attributes: + hub_id: 9433 + mod_id: 1272 + version: 1.1.0 + link: 'https://github.com/dvize/GTFO/releases/download/v1.1.0/dvize.GTFOv1.1.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 218 + created_at: '2024-04-14T20:13:34.000000Z' + updated_at: '2024-04-14T20:13:34.000000Z' + published_at: '2024-04-14 20:13:34' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6834 + attributes: + hub_id: 9415 + mod_id: 1272 + version: 1.0.9 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.9/dvize.GTFOv1.0.9.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 551 + created_at: '2024-04-13T23:13:30.000000Z' + updated_at: '2024-04-13T23:13:30.000000Z' + published_at: '2024-04-13 23:13:30' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6746 + attributes: + hub_id: 9318 + mod_id: 1272 + version: 1.0.8 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.8/dvize.GTFOv1.0.8.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 1315 + created_at: '2024-04-08T16:05:03.000000Z' + updated_at: '2024-04-08T16:05:03.000000Z' + published_at: '2024-04-08 16:05:03' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6638 + attributes: + hub_id: 9187 + mod_id: 1272 + version: 1.0.7 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.7/dvize.GTFOv1.07.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 1475 + created_at: '2024-04-04T15:27:10.000000Z' + updated_at: '2024-04-04T15:27:10.000000Z' + published_at: '2024-04-04 15:27:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6489 + attributes: + hub_id: 9019 + mod_id: 1272 + version: 1.0.6 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.6/dvize.GTFOv1.0.6.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 1808 + created_at: '2024-04-01T21:27:28.000000Z' + updated_at: '2024-04-01T21:27:28.000000Z' + published_at: '2024-04-01 21:27:28' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6429 + attributes: + hub_id: 8932 + mod_id: 1272 + version: 1.0.5 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.5/dvize.GTFOv1.0.5.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 1485 + created_at: '2024-03-12T15:30:16.000000Z' + updated_at: '2024-03-12T15:30:16.000000Z' + published_at: '2024-03-12 15:30:16' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6425 + attributes: + hub_id: 8925 + mod_id: 1272 + version: 1.0.4 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.4/dvize.GTFOv1.04.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 380 + created_at: '2024-03-10T00:45:37.000000Z' + updated_at: '2024-03-10T00:45:37.000000Z' + published_at: '2024-03-10 00:45:37' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6364 + attributes: + hub_id: 8852 + mod_id: 1272 + version: 1.0.3 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.3/dvize.GTFOv1.0.3.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 3213 + created_at: '2024-02-12T19:53:18.000000Z' + updated_at: '2024-02-12T19:53:18.000000Z' + published_at: '2024-02-12 19:53:18' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6362 + attributes: + hub_id: 8847 + mod_id: 1272 + version: 1.0.2 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.2/dvize.GTFOv1.0.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 339 + created_at: '2024-02-11T22:02:22.000000Z' + updated_at: '2024-02-11T22:02:22.000000Z' + published_at: '2024-02-11 22:02:22' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6360 + attributes: + hub_id: 8845 + mod_id: 1272 + version: 1.0.1 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.1/dvize.GTFOv1.01.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 380 + created_at: '2024-02-11T05:44:31.000000Z' + updated_at: '2024-02-11T05:44:31.000000Z' + published_at: '2024-02-11 05:44:31' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6359 + attributes: + hub_id: 8844 + mod_id: 1272 + version: 1.0.0 + link: 'https://github.com/dvize/GTFO/releases/download/v1.0.0/dvize.GTFOv1.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/7e35cd293dedcfa655c41b099701b674db03dc4b0036f319818250e46f797e9b?nocache=1' + downloads: 195 + created_at: '2024-02-10T23:00:11.000000Z' + updated_at: '2024-02-10T23:00:11.000000Z' + published_at: '2024-02-10 23:00:11' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1272/gtfo' + - + type: mod + id: 1333 + attributes: + hub_id: 1810 + name: HandsAreNotBusy + slug: handsarenotbusy + teaser: "Annoyed by the ancient \"Hands are busy\" bug?\r\nHandsAreNotBusy (HANB) is a mod that can fix certain scenarios of the \"Hands are busy\" bug for you!" + license_id: 16 + source_code_link: 'https://github.com/Lacyway/HandsAreNotBusy' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-04-10T11:16:45.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2024-04-10 11:16:45' + relationships: + users: + - + data: + type: user + id: 47971 + links: + self: 'http://forge.test/user/47971/lacyway' + versions: + - + data: + type: version + id: 7779 + links: + self: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.3/HandsAreNotBusy.zip' + - + data: + type: version + id: 6929 + links: + self: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.2/HandsAreNotBusy.zip' + - + data: + type: version + id: 6777 + links: + self: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.1/HandsAreNotBusy.zip' + - + data: + type: version + id: 6774 + links: + self: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.0/HandsAreNotBusy.zip' + license: + - + data: + type: license + id: 16 + includes: + - + type: user + id: 47971 + attributes: + name: Lacyway + user_role_id: null + created_at: '2024-04-09T17:00:56.000000Z' + updated_at: '2024-09-15T18:45:07.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/47971/lacyway' + - + type: license + id: 16 + attributes: + name: 'Creative Commons BY-NC-ND 4.0' + link: 'https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode' + created_at: null + updated_at: null + - + type: mod_version + id: 7779 + attributes: + hub_id: 10495 + mod_id: 1333 + version: '1.3' + link: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.3/HandsAreNotBusy.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/4ea87db9cc55435c15a40134920f1a8dc1be235a939a3335c458267990b1c97e?nocache=1' + downloads: 10889 + created_at: '2024-07-06T20:09:47.000000Z' + updated_at: '2024-07-06T20:09:47.000000Z' + published_at: '2024-07-06 20:09:47' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6929 + attributes: + hub_id: 9525 + mod_id: 1333 + version: '1.2' + link: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.2/HandsAreNotBusy.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/4ea87db9cc55435c15a40134920f1a8dc1be235a939a3335c458267990b1c97e?nocache=1' + downloads: 7789 + created_at: '2024-04-18T21:00:23.000000Z' + updated_at: '2024-04-18T21:00:23.000000Z' + published_at: '2024-04-18 21:00:23' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6777 + attributes: + hub_id: 9351 + mod_id: 1333 + version: '1.1' + link: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.1/HandsAreNotBusy.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/4ea87db9cc55435c15a40134920f1a8dc1be235a939a3335c458267990b1c97e?nocache=1' + downloads: 1780 + created_at: '2024-04-10T13:25:11.000000Z' + updated_at: '2024-04-10T13:25:11.000000Z' + published_at: '2024-04-10 13:25:11' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6774 + attributes: + hub_id: 9348 + mod_id: 1333 + version: 1.0.0 + link: 'https://github.com/Lacyway/HandsAreNotBusy/releases/download/1.0/HandsAreNotBusy.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/4ea87db9cc55435c15a40134920f1a8dc1be235a939a3335c458267990b1c97e?nocache=1' + downloads: 129 + created_at: '2024-04-10T11:16:45.000000Z' + updated_at: '2024-04-10T11:16:45.000000Z' + published_at: '2024-04-10 11:16:45' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1333/handsarenotbusy' + - + type: mod + id: 920 + attributes: + hub_id: 1230 + name: 'Item Sell Price' + slug: item-sell-price + teaser: 'View selling prices for all traders who can buy an item, exactly as shown in the selling interface.' + license_id: 14 + source_code_link: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2023-06-05T13:27:04.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2023-06-05 13:27:04' + relationships: + users: + - + data: + type: user + id: 31544 + links: + self: 'http://forge.test/user/31544/icyclawz' + versions: + - + data: + type: version + id: 7985 + links: + self: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.9.0/ItemSellPrice-1.4.0.zip' + - + data: + type: version + id: 6556 + links: + self: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.8.0/ItemSellPrice-1.3.0.zip' + - + data: + type: version + id: 5539 + links: + self: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.7.1/ItemSellPrice-1.2.1.zip' + - + data: + type: version + id: 5329 + links: + self: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.7.0/ItemSellPrice-1.2.0.zip' + - + data: + type: version + id: 4838 + links: + self: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.6.0/ItemSellPrice-1.1.0.zip' + - + data: + type: version + id: 4589 + links: + self: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/reupload/ItemSellPrice-1.0.2.zip' + license: + - + data: + type: license + id: 14 + includes: + - + type: user + id: 31544 + attributes: + name: IcyClawz + user_role_id: null + created_at: '2023-05-26T10:06:34.000000Z' + updated_at: '2024-09-15T18:44:03.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/31544/icyclawz' + - + type: license + id: 14 + attributes: + name: 'University of Illinois/NCSA Open Source License' + link: 'https://choosealicense.com/licenses/ncsa/' + created_at: null + updated_at: null + - + type: mod_version + id: 7985 + attributes: + hub_id: 10720 + mod_id: 920 + version: 1.4.0 + link: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.9.0/ItemSellPrice-1.4.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5' + downloads: 21661 + created_at: '2024-07-10T20:20:35.000000Z' + updated_at: '2024-07-10T20:20:35.000000Z' + published_at: '2024-07-10 20:20:35' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6556 + attributes: + hub_id: 9090 + mod_id: 920 + version: 1.3.0 + link: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.8.0/ItemSellPrice-1.3.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5' + downloads: 43284 + created_at: '2024-04-02T08:13:09.000000Z' + updated_at: '2024-04-02T08:13:09.000000Z' + published_at: '2024-04-02 08:13:09' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5539 + attributes: + hub_id: 7854 + mod_id: 920 + version: 1.2.1 + link: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.7.1/ItemSellPrice-1.2.1.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5' + downloads: 37864 + created_at: '2023-10-15T10:50:21.000000Z' + updated_at: '2023-10-15T10:50:21.000000Z' + published_at: '2023-10-15 10:50:21' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5329 + attributes: + hub_id: 7594 + mod_id: 920 + version: 1.2.0 + link: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.7.0/ItemSellPrice-1.2.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5' + downloads: 3913 + created_at: '2023-10-09T00:29:10.000000Z' + updated_at: '2023-10-09T00:29:10.000000Z' + published_at: '2023-10-09 00:29:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4838 + attributes: + hub_id: 6895 + mod_id: 920 + version: 1.1.0 + link: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/3.6.0/ItemSellPrice-1.1.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5' + downloads: 11729 + created_at: '2023-07-31T17:09:06.000000Z' + updated_at: '2023-07-31T17:09:06.000000Z' + published_at: '2023-07-31 17:09:06' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4589 + attributes: + hub_id: 6498 + mod_id: 920 + version: 1.0.2 + link: 'https://dev.sp-tarkov.com/IcyClawz/ClientMods/releases/download/reupload/ItemSellPrice-1.0.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/6e2e7619d160ff5c04796c2aeefcc863034ee7b17e511dddddb11accc364c1d5' + downloads: 4397 + created_at: '2023-06-17T13:01:45.000000Z' + updated_at: '2023-06-17T13:01:45.000000Z' + published_at: '2023-06-17 13:01:45' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/920/item-sell-price' + - + type: mod + id: 812 + attributes: + hub_id: 1082 + name: 'LOE (Load Order Editor)' + slug: loe-load-order-editor + teaser: 'A quick and simple tool to easily adjust the load ordering for server mods.' + license_id: 11 + source_code_link: 'https://github.com/minihazel/LOE_Overhaul' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2023-03-18T02:57:58.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2023-03-18 02:57:58' + relationships: + users: + - + data: + type: user + id: 20915 + links: + self: 'http://forge.test/user/20915/devraccoon' + versions: + - + data: + type: version + id: 8070 + links: + self: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.5/Load.Order.Editor.zip' + - + data: + type: version + id: 7798 + links: + self: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.4/Load.Order.Editor.zip' + - + data: + type: version + id: 6845 + links: + self: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.3/Load.Order.Editor.zip' + - + data: + type: version + id: 6812 + links: + self: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.2/Load.Order.Editor.zip' + - + data: + type: version + id: 6659 + links: + self: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.1/Load.Order.Editor.zip' + - + data: + type: version + id: 6658 + links: + self: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.0/Load.Order.Editor.zip' + - + data: + type: version + id: 4301 + links: + self: 'https://github.com/minihazel/LoadOrderEditor/releases/download/1.5/Load.Order.Editor.zip' + - + data: + type: version + id: 4099 + links: + self: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.4' + - + data: + type: version + id: 4095 + links: + self: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.3' + - + data: + type: version + id: 4042 + links: + self: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.2' + - + data: + type: version + id: 4013 + links: + self: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.1' + - + data: + type: version + id: 4001 + links: + self: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.0' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 20915 + attributes: + name: Devraccoon + user_role_id: null + created_at: '2022-07-23T23:58:07.000000Z' + updated_at: '2024-09-15T18:43:21.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/20915/devraccoon' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 8070 + attributes: + hub_id: 10815 + mod_id: 812 + version: '2.5' + link: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.5/Load.Order.Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 11283 + created_at: '2024-07-13T18:27:38.000000Z' + updated_at: '2024-07-13T18:27:38.000000Z' + published_at: '2024-07-13 18:27:38' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7798 + attributes: + hub_id: 10515 + mod_id: 812 + version: '2.4' + link: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.4/Load.Order.Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 1587 + created_at: '2024-07-06T23:17:54.000000Z' + updated_at: '2024-07-06T23:17:54.000000Z' + published_at: '2024-07-06 23:17:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6845 + attributes: + hub_id: 9430 + mod_id: 812 + version: '2.3' + link: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.3/Load.Order.Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 16372 + created_at: '2024-04-14T18:06:24.000000Z' + updated_at: '2024-04-14T18:06:24.000000Z' + published_at: '2024-04-14 18:06:24' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6812 + attributes: + hub_id: 9390 + mod_id: 812 + version: '2.2' + link: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.2/Load.Order.Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 799 + created_at: '2024-04-12T09:17:40.000000Z' + updated_at: '2024-04-12T09:17:40.000000Z' + published_at: '2024-04-12 09:17:40' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6659 + attributes: + hub_id: 9213 + mod_id: 812 + version: '2.1' + link: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.1/Load.Order.Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 1549 + created_at: '2024-04-05T05:01:58.000000Z' + updated_at: '2024-04-05T05:01:58.000000Z' + published_at: '2024-04-05 05:01:58' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6658 + attributes: + hub_id: 9211 + mod_id: 812 + version: '2.0' + link: 'https://github.com/minihazel/LOE_Overhaul/releases/download/2.0/Load.Order.Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 128 + created_at: '2024-04-05T03:43:19.000000Z' + updated_at: '2024-04-05T03:43:19.000000Z' + published_at: '2024-04-05 03:43:19' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4301 + attributes: + hub_id: 6090 + mod_id: 812 + version: '1.5' + link: 'https://github.com/minihazel/LoadOrderEditor/releases/download/1.5/Load.Order.Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 15676 + created_at: '2023-04-25T22:27:33.000000Z' + updated_at: '2023-04-25T22:27:33.000000Z' + published_at: '2023-04-25 22:27:33' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4099 + attributes: + hub_id: 5808 + mod_id: 812 + version: '1.4' + link: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.4' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 830 + created_at: '2023-03-31T16:43:45.000000Z' + updated_at: '2023-03-31T16:43:45.000000Z' + published_at: '2023-03-31 16:43:45' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4095 + attributes: + hub_id: 5801 + mod_id: 812 + version: '1.3' + link: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.3' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 135 + created_at: '2023-03-30T21:10:13.000000Z' + updated_at: '2023-03-30T21:10:13.000000Z' + published_at: '2023-03-30 21:10:13' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4042 + attributes: + hub_id: 5733 + mod_id: 812 + version: '1.2' + link: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.2' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 372 + created_at: '2023-03-23T13:26:02.000000Z' + updated_at: '2023-03-23T13:26:02.000000Z' + published_at: '2023-03-23 13:26:02' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4013 + attributes: + hub_id: 5670 + mod_id: 812 + version: '1.1' + link: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.1' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 306 + created_at: '2023-03-18T19:45:07.000000Z' + updated_at: '2023-03-18T19:45:07.000000Z' + published_at: '2023-03-18 19:45:07' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4001 + attributes: + hub_id: 5657 + mod_id: 812 + version: '1.0' + link: 'https://github.com/minihazel/LoadOrderEditor/releases/tag/1.0' + virus_total_link: 'https://www.virustotal.com/gui/file/88ce145efa378026136637f9cc5b6c05534da21979075d1f6cf704bd7b1d1ccb' + downloads: 153 + created_at: '2023-03-18T02:57:58.000000Z' + updated_at: '2023-03-18T02:57:58.000000Z' + published_at: '2023-03-18 02:57:58' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/812/loe-load-order-editor' + - + type: mod + id: 1385 + attributes: + hub_id: 1870 + name: 'Loot Radius' + slug: loot-radius + teaser: 'Ever get fed up trying to line your crosshair up just right to loot an item? No more! Now loot any loose loot nearby' + license_id: 11 + source_code_link: 'https://github.com/DrakiaXYZ/SPT-LootRadius' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-04-22T05:56:08.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2024-04-22 05:56:08' + relationships: + users: + - + data: + type: user + id: 27606 + links: + self: 'http://forge.test/user/27606/drakiaxyz' + versions: + - + data: + type: version + id: 7766 + links: + self: 'https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.1.0/DrakiaXYZ-LootRadius-1.1.0.7z' + - + data: + type: version + id: 6984 + links: + self: 'https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.0.1/DrakiaXYZ-LootRadius-1.0.1.7z' + - + data: + type: version + id: 6978 + links: + self: 'https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.0.0/DrakiaXYZ-LootRadius-1.0.0.7z' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 27606 + attributes: + name: DrakiaXYZ + user_role_id: 4 + created_at: '2023-02-26T18:51:50.000000Z' + updated_at: '2024-09-15T18:43:48.000000Z' + relationships: + user_role: + data: + type: user_role + id: 4 + links: + self: 'http://forge.test/user/27606/drakiaxyz' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 7766 + attributes: + hub_id: 10482 + mod_id: 1385 + version: 1.1.0 + link: 'https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.1.0/DrakiaXYZ-LootRadius-1.1.0.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/36d3110fcd1444d54fea8c631b5d4ed469602114609310f861c6228ee97cfede' + downloads: 18499 + created_at: '2024-07-06T19:18:48.000000Z' + updated_at: '2024-07-06T19:18:48.000000Z' + published_at: '2024-07-06 19:18:48' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6984 + attributes: + hub_id: 9594 + mod_id: 1385 + version: 1.0.1 + link: 'https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.0.1/DrakiaXYZ-LootRadius-1.0.1.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/36d3110fcd1444d54fea8c631b5d4ed469602114609310f861c6228ee97cfede' + downloads: 14698 + created_at: '2024-04-23T05:39:07.000000Z' + updated_at: '2024-04-23T05:39:07.000000Z' + published_at: '2024-04-23 05:39:07' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6978 + attributes: + hub_id: 9582 + mod_id: 1385 + version: 1.0.0 + link: 'https://github.com/DrakiaXYZ/SPT-LootRadius/releases/download/1.0.0/DrakiaXYZ-LootRadius-1.0.0.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/36d3110fcd1444d54fea8c631b5d4ed469602114609310f861c6228ee97cfede' + downloads: 983 + created_at: '2024-04-22T05:56:08.000000Z' + updated_at: '2024-04-22T05:56:08.000000Z' + published_at: '2024-04-22 05:56:08' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1385/loot-radius' + - + type: mod + id: 1257 + attributes: + hub_id: 1717 + name: Lotus + slug: lotus + teaser: 'Custom Trader with over 150+ Quests, 570+ sold and bartered items and a special keycard that gives infinite labs access.' + license_id: 11 + source_code_link: '' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-01-17T20:08:28.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2024-01-17 20:08:28' + relationships: + users: + - + data: + type: user + id: 29461 + links: + self: 'http://forge.test/user/29461/lunnayaluna' + versions: + - + data: + type: version + id: 8638 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.7/Lotus_v1.3.7_for_SPT_3.9_by_Lunnayaluna.7z' + - + data: + type: version + id: 8609 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.6/Lotus_v1.3.6_for_SPT_3.9_by_Lunnayaluna.7z' + - + data: + type: version + id: 8381 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.5/Lotus_v1.3.5_for_SPT_3.9_by_Lunnayaluna.7z' + - + data: + type: version + id: 8379 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.4/Lotus_v1.3.4_for_SPT_3.9_by_Lunnayaluna.7z' + - + data: + type: version + id: 8354 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.3/Lotus_v1.3.3_for_SPT_3.9_by_Lunnayaluna.7z' + - + data: + type: version + id: 8041 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.2/Lotus.v1.3.2.for.SPT.3.9.by.Lunnayaluna.7z' + - + data: + type: version + id: 7969 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.1/Lotus.v1.3.1.for.SPT.3.9.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 7937 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v.1.2.6/Lotus.v1.2.6.for.SPT.3.8.3.by.Lunnayaluna.7z' + - + data: + type: version + id: 7445 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.5/Lotus.v.1.2.5.for.SPT.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 7305 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.4/Lotus.v.1.2.4.for.SPT.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 7243 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.3/Lotus.v.1.2.3.for.SPT.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 7174 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.2/Lotus.v.1.2.2.for.SPT.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 7141 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.1/Lotus.v.1.2.0.for.SPT.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 7112 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.0/Lotus.v.1.2.0.for.SPT.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6959 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.15/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6950 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.14/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6842 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.13/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6815 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.12/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6791 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.11/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6765 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.10/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6761 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.9/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6744 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.8/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6712 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.7/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6694 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.6/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6671 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.5/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6631 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.4/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6619 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.3/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6582 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.2/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6572 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.1/Lotus.3.8.0.by.Lunnayaluna.7z' + - + data: + type: version + id: 6524 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.0/Lotus.3.8.0.7z' + - + data: + type: version + id: 6349 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.0.5/user.zip' + - + data: + type: version + id: 6311 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.0.4/user.zip' + - + data: + type: version + id: 6286 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.3' + - + data: + type: version + id: 6271 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.2' + - + data: + type: version + id: 6270 + links: + self: 'https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.0' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 29461 + attributes: + name: Lunnayaluna + user_role_id: null + created_at: '2023-03-30T19:06:34.000000Z' + updated_at: '2024-09-15T18:43:55.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/29461/lunnayaluna' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 8638 + attributes: + hub_id: 11449 + mod_id: 1257 + version: 1.3.7 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.7/Lotus_v1.3.7_for_SPT_3.9_by_Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 4896 + created_at: '2024-08-22T17:43:33.000000Z' + updated_at: '2024-08-22T17:43:33.000000Z' + published_at: '2024-08-22 17:43:33' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8609 + attributes: + hub_id: 11418 + mod_id: 1257 + version: 1.3.6 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.6/Lotus_v1.3.6_for_SPT_3.9_by_Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 932 + created_at: '2024-08-21T03:15:23.000000Z' + updated_at: '2024-08-21T03:15:23.000000Z' + published_at: '2024-08-21 03:15:23' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8381 + attributes: + hub_id: 11153 + mod_id: 1257 + version: 1.3.5 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.5/Lotus_v1.3.5_for_SPT_3.9_by_Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 4859 + created_at: '2024-07-31T16:14:50.000000Z' + updated_at: '2024-07-31T16:14:50.000000Z' + published_at: '2024-07-31 16:14:50' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8379 + attributes: + hub_id: 11151 + mod_id: 1257 + version: 1.3.4 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.4/Lotus_v1.3.4_for_SPT_3.9_by_Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 236 + created_at: '2024-07-31T12:13:30.000000Z' + updated_at: '2024-07-31T12:13:30.000000Z' + published_at: '2024-07-31 12:13:30' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8354 + attributes: + hub_id: 11126 + mod_id: 1257 + version: 1.3.3 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.3/Lotus_v1.3.3_for_SPT_3.9_by_Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 867 + created_at: '2024-07-30T01:42:33.000000Z' + updated_at: '2024-07-30T01:42:33.000000Z' + published_at: '2024-07-30 01:42:33' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8041 + attributes: + hub_id: 10783 + mod_id: 1257 + version: 1.3.2 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.2/Lotus.v1.3.2.for.SPT.3.9.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 5012 + created_at: '2024-07-12T17:54:10.000000Z' + updated_at: '2024-07-12T17:54:10.000000Z' + published_at: '2024-07-12 17:54:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7969 + attributes: + hub_id: 10700 + mod_id: 1257 + version: 1.3.1 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.3.1/Lotus.v1.3.1.for.SPT.3.9.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 1242 + created_at: '2024-07-10T11:50:46.000000Z' + updated_at: '2024-07-10T11:50:46.000000Z' + published_at: '2024-07-10 11:50:46' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7937 + attributes: + hub_id: 10665 + mod_id: 1257 + version: 1.2.6 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v.1.2.6/Lotus.v1.2.6.for.SPT.3.8.3.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 391 + created_at: '2024-07-09T13:24:21.000000Z' + updated_at: '2024-07-09T13:24:21.000000Z' + published_at: '2024-07-09 13:24:21' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7445 + attributes: + hub_id: 10113 + mod_id: 1257 + version: 1.2.5 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.5/Lotus.v.1.2.5.for.SPT.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 6431 + created_at: '2024-05-31T11:28:45.000000Z' + updated_at: '2024-05-31T11:28:45.000000Z' + published_at: '2024-05-31 11:28:45' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7305 + attributes: + hub_id: 9966 + mod_id: 1257 + version: 1.2.4 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.4/Lotus.v.1.2.4.for.SPT.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 3258 + created_at: '2024-05-18T11:21:23.000000Z' + updated_at: '2024-05-18T11:21:23.000000Z' + published_at: '2024-05-18 11:21:23' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7243 + attributes: + hub_id: 9893 + mod_id: 1257 + version: 1.2.3 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.3/Lotus.v.1.2.3.for.SPT.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 1782 + created_at: '2024-05-13T09:59:03.000000Z' + updated_at: '2024-05-13T09:59:03.000000Z' + published_at: '2024-05-13 09:59:03' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7174 + attributes: + hub_id: 9811 + mod_id: 1257 + version: 1.2.2 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.2/Lotus.v.1.2.2.for.SPT.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 2208 + created_at: '2024-05-08T10:35:41.000000Z' + updated_at: '2024-05-08T10:35:41.000000Z' + published_at: '2024-05-08 10:35:41' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7141 + attributes: + hub_id: 9775 + mod_id: 1257 + version: 1.2.1 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.1/Lotus.v.1.2.0.for.SPT.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 1110 + created_at: '2024-05-06T10:18:00.000000Z' + updated_at: '2024-05-06T10:18:00.000000Z' + published_at: '2024-05-06 10:18:00' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7112 + attributes: + hub_id: 9743 + mod_id: 1257 + version: 1.2.0 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.2.0/Lotus.v.1.2.0.for.SPT.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 1650 + created_at: '2024-05-03T19:12:40.000000Z' + updated_at: '2024-05-03T19:12:40.000000Z' + published_at: '2024-05-03 19:12:40' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6959 + attributes: + hub_id: 9557 + mod_id: 1257 + version: 1.1.15 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.15/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 4940 + created_at: '2024-04-20T21:01:19.000000Z' + updated_at: '2024-04-20T21:01:19.000000Z' + published_at: '2024-04-20 21:01:19' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6950 + attributes: + hub_id: 9548 + mod_id: 1257 + version: 1.1.14 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.14/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 589 + created_at: '2024-04-20T11:10:23.000000Z' + updated_at: '2024-04-20T11:10:23.000000Z' + published_at: '2024-04-20 11:10:23' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6842 + attributes: + hub_id: 9427 + mod_id: 1257 + version: 1.1.13 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.13/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 1666 + created_at: '2024-04-14T14:26:49.000000Z' + updated_at: '2024-04-14T14:26:49.000000Z' + published_at: '2024-04-14 14:26:49' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6815 + attributes: + hub_id: 9393 + mod_id: 1257 + version: 1.1.12 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.12/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 1084 + created_at: '2024-04-12T12:12:27.000000Z' + updated_at: '2024-04-12T12:12:27.000000Z' + published_at: '2024-04-12 12:12:27' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6791 + attributes: + hub_id: 9369 + mod_id: 1257 + version: 1.1.11 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.11/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 691 + created_at: '2024-04-11T14:16:04.000000Z' + updated_at: '2024-04-11T14:16:04.000000Z' + published_at: '2024-04-11 14:16:04' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6765 + attributes: + hub_id: 9338 + mod_id: 1257 + version: 1.1.10 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.10/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 985 + created_at: '2024-04-09T19:53:42.000000Z' + updated_at: '2024-04-09T19:53:42.000000Z' + published_at: '2024-04-09 19:53:42' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6761 + attributes: + hub_id: 9334 + mod_id: 1257 + version: 1.1.9 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.9/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 432 + created_at: '2024-04-09T14:37:50.000000Z' + updated_at: '2024-04-09T14:37:50.000000Z' + published_at: '2024-04-09 14:37:50' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6744 + attributes: + hub_id: 9316 + mod_id: 1257 + version: 1.1.8 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.8/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 774 + created_at: '2024-04-08T15:02:48.000000Z' + updated_at: '2024-04-08T15:02:48.000000Z' + published_at: '2024-04-08 15:02:48' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6712 + attributes: + hub_id: 9276 + mod_id: 1257 + version: 1.1.7 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.7/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 995 + created_at: '2024-04-06T19:51:02.000000Z' + updated_at: '2024-04-06T19:51:02.000000Z' + published_at: '2024-04-06 19:51:02' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6694 + attributes: + hub_id: 9256 + mod_id: 1257 + version: 1.1.6 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.6/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 527 + created_at: '2024-04-06T10:28:52.000000Z' + updated_at: '2024-04-06T10:28:52.000000Z' + published_at: '2024-04-06 10:28:52' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6671 + attributes: + hub_id: 9228 + mod_id: 1257 + version: 1.1.5 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.5/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 799 + created_at: '2024-04-05T13:21:05.000000Z' + updated_at: '2024-04-05T13:21:05.000000Z' + published_at: '2024-04-05 13:21:05' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6631 + attributes: + hub_id: 9179 + mod_id: 1257 + version: 1.1.4 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.4/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 792 + created_at: '2024-04-04T12:02:52.000000Z' + updated_at: '2024-04-04T12:02:52.000000Z' + published_at: '2024-04-04 12:02:52' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6619 + attributes: + hub_id: 9164 + mod_id: 1257 + version: 1.1.3 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.3/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 564 + created_at: '2024-04-03T21:40:31.000000Z' + updated_at: '2024-04-03T21:40:31.000000Z' + published_at: '2024-04-03 21:40:31' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6582 + attributes: + hub_id: 9117 + mod_id: 1257 + version: 1.1.2 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.2/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 769 + created_at: '2024-04-02T20:10:25.000000Z' + updated_at: '2024-04-02T20:10:25.000000Z' + published_at: '2024-04-02 20:10:25' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6572 + attributes: + hub_id: 9106 + mod_id: 1257 + version: 1.1.1 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.1/Lotus.3.8.0.by.Lunnayaluna.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 336 + created_at: '2024-04-02T12:47:53.000000Z' + updated_at: '2024-04-02T12:47:53.000000Z' + published_at: '2024-04-02 12:47:53' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6524 + attributes: + hub_id: 9056 + mod_id: 1257 + version: 1.1.0 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.1.0/Lotus.3.8.0.7z' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 503 + created_at: '2024-04-02T00:32:34.000000Z' + updated_at: '2024-04-02T00:32:34.000000Z' + published_at: '2024-04-02 00:32:34' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6349 + attributes: + hub_id: 8829 + mod_id: 1257 + version: 1.0.5 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.0.5/user.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 3624 + created_at: '2024-02-05T13:54:49.000000Z' + updated_at: '2024-02-05T13:54:49.000000Z' + published_at: '2024-02-05 13:54:49' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6311 + attributes: + hub_id: 8787 + mod_id: 1257 + version: 1.0.4 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/download/v1.0.4/user.zip' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 1415 + created_at: '2024-01-24T13:35:19.000000Z' + updated_at: '2024-01-24T13:35:19.000000Z' + published_at: '2024-01-24 13:35:19' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6286 + attributes: + hub_id: 8761 + mod_id: 1257 + version: 1.0.3 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.3' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 927 + created_at: '2024-01-20T11:54:48.000000Z' + updated_at: '2024-01-20T11:54:48.000000Z' + published_at: '2024-01-20 11:54:48' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6271 + attributes: + hub_id: 8746 + mod_id: 1257 + version: 1.0.2 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.2' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 738 + created_at: '2024-01-18T13:38:54.000000Z' + updated_at: '2024-01-18T13:38:54.000000Z' + published_at: '2024-01-18 13:38:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6270 + attributes: + hub_id: 8745 + mod_id: 1257 + version: 1.0.1 + link: 'https://github.com/LunaAufLock/LotusTrader/releases/tag/v1.0.0' + virus_total_link: 'https://www.virustotal.com/gui/file/745d3ef16022c21c4540682a4e4f2f05a2786e6a1a1a132822a90db408aa336a?nocache=1' + downloads: 207 + created_at: '2024-01-18T05:37:45.000000Z' + updated_at: '2024-01-18T05:37:45.000000Z' + published_at: '2024-01-18 05:37:45' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1257/lotus' + - + type: mod + id: 1778 + attributes: + hub_id: 2305 + name: 'More Energy Drinks' + slug: more-energy-drinks + teaser: 'Adds 12 unique energy drinks that range in rarity and provide interesting effects that your PMC can enjoy during raids. Now you can share your caffeine addiction with your PMC!' + license_id: 11 + source_code_link: 'https://github.com/Hood26/Hoods-Energy-Drinks' + featured: true + contains_ai_content: false + contains_ads: false + created_at: '2024-08-27T00:01:55.000000Z' + updated_at: '2024-09-15T18:48:13.000000Z' + published_at: '2024-08-27 00:01:55' + relationships: + users: + - + data: + type: user + id: 52388 + links: + self: 'http://forge.test/user/52388/hood' + versions: + - + data: + type: version + id: 8722 + links: + self: 'https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.2/HoodsEnergyDrinks1.0.2.zip' + - + data: + type: version + id: 8712 + links: + self: 'https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.1/HoodsEnergyDrinks1.0.1.zip' + - + data: + type: version + id: 8696 + links: + self: 'https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.0/HoodsEnergyDrinks1.0.0.zip' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 52388 + attributes: + name: Hood + user_role_id: null + created_at: '2024-05-21T21:49:53.000000Z' + updated_at: '2024-09-15T18:45:24.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/52388/hood' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 8722 + attributes: + hub_id: 11550 + mod_id: 1778 + version: 1.0.2 + link: 'https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.2/HoodsEnergyDrinks1.0.2.zip' + virus_total_link: 'https://www.virustotal.com/gui/file-analysis/YTk2MzNhN2IyZDYzMzY5MWY1NzkzNDU1NWUxNzdkZTI6MTcyNDcxMTEyNw==' + downloads: 4693 + created_at: '2024-08-28T21:43:55.000000Z' + updated_at: '2024-08-28T21:43:55.000000Z' + published_at: '2024-08-28 21:43:55' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8712 + attributes: + hub_id: 11540 + mod_id: 1778 + version: 1.0.1 + link: 'https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.1/HoodsEnergyDrinks1.0.1.zip' + virus_total_link: 'https://www.virustotal.com/gui/file-analysis/YTk2MzNhN2IyZDYzMzY5MWY1NzkzNDU1NWUxNzdkZTI6MTcyNDcxMTEyNw==' + downloads: 578 + created_at: '2024-08-28T08:15:43.000000Z' + updated_at: '2024-08-28T08:15:43.000000Z' + published_at: '2024-08-28 08:15:43' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8696 + attributes: + hub_id: 11523 + mod_id: 1778 + version: 1.0.0 + link: 'https://github.com/Hood26/Hoods-Energy-Drinks/releases/download/v1.0.0/HoodsEnergyDrinks1.0.0.zip' + virus_total_link: 'https://www.virustotal.com/gui/file-analysis/YTk2MzNhN2IyZDYzMzY5MWY1NzkzNDU1NWUxNzdkZTI6MTcyNDcxMTEyNw==' + downloads: 1114 + created_at: '2024-08-27T00:01:55.000000Z' + updated_at: '2024-08-27T00:01:55.000000Z' + published_at: '2024-08-27 00:01:55' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/1778/more-energy-drinks' + items: + type: object + properties: + type: + type: string + example: mod + id: + type: integer + example: 1578 + attributes: + type: object + properties: + hub_id: + type: integer + example: 2084 + name: + type: string + example: 'Assort editor' + slug: + type: string + example: assort-editor + teaser: + type: string + example: "A webtool to edit your existing trader assort prices, for balancing reasons.\r\n\r\n2 boxes of matches a bit too cheap for that fully kitted MDR762, but you like the mod otherwise? This can fix that in an easy to understand way. No fiddling with .json files!" + license_id: + type: integer + example: 11 + source_code_link: + type: string + example: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor' + featured: + type: boolean + example: true + contains_ai_content: + type: boolean + example: true + contains_ads: + type: boolean + example: false + created_at: + type: string + example: '2024-07-03T18:05:35.000000Z' + updated_at: + type: string + example: '2024-09-15T18:48:13.000000Z' + published_at: + type: string + example: '2024-07-03 18:05:35' + relationships: + type: object + properties: + users: + type: array + example: + - + data: + type: user + id: 28317 + links: + self: 'http://forge.test/user/28317/archon0ne' + items: + type: object + properties: + data: + type: object + properties: + type: { type: string, example: user } + id: { type: integer, example: 28317 } + links: + type: object + properties: + self: { type: string, example: 'http://forge.test/user/28317/archon0ne' } + versions: + type: array + example: + - + data: + type: version + id: 7745 + links: + self: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor/releases/download/1.1.0/Assort_Editor.zip' + - + data: + type: version + id: 7739 + links: + self: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor/archive/main.zip' + items: + type: object + properties: + data: + type: object + properties: + type: { type: string, example: version } + id: { type: integer, example: 7745 } + links: + type: object + properties: + self: { type: string, example: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor/releases/download/1.1.0/Assort_Editor.zip' } + license: + type: array + example: + - + data: + type: license + id: 11 + items: + type: object + properties: + data: + type: object + properties: + type: { type: string, example: license } + id: { type: integer, example: 11 } + includes: + type: array + example: + - + type: user + id: 28317 + attributes: + name: archon0ne + user_role_id: null + created_at: '2023-03-09T14:05:22.000000Z' + updated_at: '2024-09-15T18:43:50.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + links: + self: 'http://forge.test/user/28317/archon0ne' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 7745 + attributes: + hub_id: 10456 + mod_id: 1578 + version: 1.1.0 + link: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor/releases/download/1.1.0/Assort_Editor.zip' + virus_total_link: 'https://www.virustotal.com/gui/url/c59d29876cb827c82bcc93082a7b71407d42a76d2e7509dd1710b7f913773253?nocache=1' + downloads: 1535 + created_at: '2024-07-04T09:59:54.000000Z' + updated_at: '2024-07-04T09:59:54.000000Z' + published_at: '2024-07-04 09:59:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7739 + attributes: + hub_id: 10450 + mod_id: 1578 + version: 1.0.0 + link: 'https://dev.sp-tarkov.com/archon0ne/Assort_editor/archive/main.zip' + virus_total_link: 'https://www.virustotal.com/gui/url/c59d29876cb827c82bcc93082a7b71407d42a76d2e7509dd1710b7f913773253?nocache=1' + downloads: 110 + created_at: '2024-07-03T18:05:35.000000Z' + updated_at: '2024-07-03T18:05:35.000000Z' + published_at: '2024-07-03 18:05:35' + relationships: + spt_version: + - + data: + type: spt_version + items: + type: object + properties: + type: + type: string + example: user + id: + type: integer + example: 28317 + attributes: + type: object + properties: + name: + type: string + example: archon0ne + user_role_id: + type: string + example: null + created_at: + type: string + example: '2023-03-09T14:05:22.000000Z' + updated_at: + type: string + example: '2024-09-15T18:43:50.000000Z' + relationships: + type: object + properties: + user_role: + type: object + properties: + data: { type: object, properties: { type: { type: string, example: user_role }, id: { type: string, example: null } } } + links: + type: object + properties: + self: + type: string + example: 'http://forge.test/user/28317/archon0ne' + links: + type: object + properties: + self: + type: string + example: 'http://forge.test/mod/1578/assort-editor' + links: + type: object + properties: + first: + type: string + example: 'http://forge.test/api/v0/mods?page=1' + last: + type: string + example: 'http://forge.test/api/v0/mods?page=116' + prev: + type: string + example: null + next: + type: string + example: 'http://forge.test/api/v0/mods?page=2' + meta: + type: object + properties: + current_page: + type: integer + example: 1 + from: + type: integer + example: 1 + last_page: + type: integer + example: 116 + links: + type: array + example: + - + url: null + label: '« Previous' + active: false + - + url: 'http://forge.test/api/v0/mods?page=1' + label: '1' + active: true + - + url: 'http://forge.test/api/v0/mods?page=2' + label: '2' + active: false + - + url: 'http://forge.test/api/v0/mods?page=3' + label: '3' + active: false + - + url: 'http://forge.test/api/v0/mods?page=4' + label: '4' + active: false + - + url: 'http://forge.test/api/v0/mods?page=5' + label: '5' + active: false + - + url: 'http://forge.test/api/v0/mods?page=6' + label: '6' + active: false + - + url: 'http://forge.test/api/v0/mods?page=7' + label: '7' + active: false + - + url: 'http://forge.test/api/v0/mods?page=8' + label: '8' + active: false + - + url: 'http://forge.test/api/v0/mods?page=9' + label: '9' + active: false + - + url: 'http://forge.test/api/v0/mods?page=10' + label: '10' + active: false + - + url: null + label: ... + active: false + - + url: 'http://forge.test/api/v0/mods?page=115' + label: '115' + active: false + - + url: 'http://forge.test/api/v0/mods?page=116' + label: '116' + active: false + - + url: 'http://forge.test/api/v0/mods?page=2' + label: 'Next »' + active: false + items: + type: object + properties: + url: + type: string + example: null + label: + type: string + example: '« Previous' + active: + type: boolean + example: false + path: + type: string + example: 'http://forge.test/api/v0/mods' + per_page: + type: integer + example: 15 + to: + type: integer + example: 15 + total: + type: integer + example: 1739 + tags: + - Mods + '/api/v0/mods/{id}': + get: + summary: 'Get Mod' + operationId: getMod + description: 'Display more detailed information about a specific mod.' + parameters: + - + in: query + name: include + description: 'The relationships to include within the `includes` key. By default no relationships are automatically included.' + example: 'users,versions,license' + required: false + schema: + type: string + description: 'The relationships to include within the `includes` key. By default no relationships are automatically included.' + example: 'users,versions,license' + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + type: mod + id: 558 + attributes: + hub_id: 771 + name: 'Custom Raid Times' + slug: custom-raid-times + teaser: 'Change the raid time of maps individually or override them all to one single time. Supports weighted, random times. Automatically adjusts the train schedules to fit within the new raid times.' + description: " Custom Raid Times \n===================\n\n Features: \n-----------\n\n- Adjust global raid times, or raid times for individual maps.\n- Raid times can be random ranges, grouped, and weighted.\n- Extract train schedules automatically adjust to the new raid time. \n - Earliest arrival time (given enough overall time) can be anywhere in between 35% to 80% of the total raid time, making train arrival less predictable and also more usable in extra long raids.\n - The number of seconds the train waits before closing the doors and departing is now randomized; but always between 14 and 7 minutes.\n - Raids can now be as short as 3 minutes and still have an active and functional train extract.\n \n To install: \n-------------\n\n1. Decompress the contents of the download into your root SPT directory.\n2. Open the CustomRaidTimes/config/config.json5 file to adjust raid time options.\n3. Leave a review and let me know what you think.\n\n Issues? \n---------\n\n- If you experience any problems, please [submit a detailed bug report.](https://github.com/refringe/CustomRaidTimes/issues)\n\n♥" + license_id: 11 + source_code_link: 'https://github.com/refringe/CustomRaidTimes' + featured: false + contains_ai_content: false + contains_ads: false + created_at: '2022-08-15T03:30:59.000000Z' + updated_at: '2024-09-15T18:48:12.000000Z' + published_at: '2022-08-15 03:30:59' + relationships: + users: + - + data: + type: user + id: 14605 + links: + self: 'http://forge.test/user/14605/refringe' + versions: + - + data: + type: version + id: 8810 + links: + self: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.3/refringe-customraidtimes-1.7.3.zip' + - + data: + type: version + id: 8099 + links: + self: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.2/refringe-customraidtimes-1.7.2.zip' + - + data: + type: version + id: 7953 + links: + self: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.1/refringe-customraidtimes-1.7.1.zip' + - + data: + type: version + id: 7931 + links: + self: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.0/refringe-customraidtimes-1.7.0.zip' + - + data: + type: version + id: 6843 + links: + self: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.6.0/refringe-customraidtimes-1.6.0.zip' + - + data: + type: version + id: 5308 + links: + self: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.5.0/refringe-customraidtimes-1.5.0.zip' + - + data: + type: version + id: 5031 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/refringe-customraidtimes-1.4.0.zip' + - + data: + type: version + id: 4672 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.3.zip' + - + data: + type: version + id: 4084 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.2.zip' + - + data: + type: version + id: 3813 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.1.zip' + - + data: + type: version + id: 3671 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.0.zip' + - + data: + type: version + id: 3370 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.5.zip' + - + data: + type: version + id: 2851 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.4.zip' + - + data: + type: version + id: 2776 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.3.zip' + - + data: + type: version + id: 2771 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.2.zip' + - + data: + type: version + id: 2712 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Dinkadactyl-CustomRaidTimes-1.2.1.zip' + - + data: + type: version + id: 2642 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.2.0/CustomRaidTimes.zip' + - + data: + type: version + id: 2583 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.1.0/CustomRaidTimes.zip' + - + data: + type: version + id: 2506 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.0.2/CustomRaidTimes.zip' + - + data: + type: version + id: 2489 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.0.1/CustomRaidTimes.zip' + license: + - + data: + type: license + id: 11 + includes: + - + type: user + id: 14605 + attributes: + name: Refringe + user_role_id: 4 + created_at: '2022-02-12T03:17:31.000000Z' + updated_at: '2024-09-16T21:23:28.000000Z' + relationships: + user_role: + data: + type: user_role + id: 4 + links: + self: 'http://forge.test/user/14605/refringe' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 8810 + attributes: + hub_id: 11648 + mod_id: 558 + version: 1.7.3 + link: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.3/refringe-customraidtimes-1.7.3.zip' + virus_total_link: '' + downloads: 1227 + created_at: '2024-09-06T14:53:12.000000Z' + updated_at: '2024-09-06T14:53:12.000000Z' + published_at: '2024-09-06 14:53:12' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8099 + attributes: + hub_id: 10846 + mod_id: 558 + version: 1.7.2 + link: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.2/refringe-customraidtimes-1.7.2.zip' + virus_total_link: '' + downloads: 7740 + created_at: '2024-07-15T00:57:52.000000Z' + updated_at: '2024-07-15T00:57:52.000000Z' + published_at: '2024-07-15 00:57:52' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7953 + attributes: + hub_id: 10683 + mod_id: 558 + version: 1.7.1 + link: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.1/refringe-customraidtimes-1.7.1.zip' + virus_total_link: '' + downloads: 1740 + created_at: '2024-07-10T02:01:20.000000Z' + updated_at: '2024-07-10T02:01:20.000000Z' + published_at: '2024-07-10 02:01:20' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7931 + attributes: + hub_id: 10659 + mod_id: 558 + version: 1.7.0 + link: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.0/refringe-customraidtimes-1.7.0.zip' + virus_total_link: '' + downloads: 705 + created_at: '2024-07-09T05:19:11.000000Z' + updated_at: '2024-07-09T05:19:11.000000Z' + published_at: '2024-07-09 05:19:11' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6843 + attributes: + hub_id: 9428 + mod_id: 558 + version: 1.6.0 + link: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.6.0/refringe-customraidtimes-1.6.0.zip' + virus_total_link: '' + downloads: 7748 + created_at: '2024-04-14T15:33:45.000000Z' + updated_at: '2024-04-14T15:33:45.000000Z' + published_at: '2024-04-14 15:33:45' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5308 + attributes: + hub_id: 7570 + mod_id: 558 + version: 1.5.0 + link: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.5.0/refringe-customraidtimes-1.5.0.zip' + virus_total_link: '' + downloads: 10343 + created_at: '2023-10-08T21:27:38.000000Z' + updated_at: '2023-10-08T21:27:38.000000Z' + published_at: '2023-10-08 21:27:38' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5031 + attributes: + hub_id: 7195 + mod_id: 558 + version: 1.4.0 + link: 'https://downloadthisfor.me/spt-aki-mods/refringe-customraidtimes-1.4.0.zip' + virus_total_link: '' + downloads: 2232 + created_at: '2023-08-23T04:56:28.000000Z' + updated_at: '2023-08-23T04:56:28.000000Z' + published_at: '2023-08-23 04:56:28' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4672 + attributes: + hub_id: 6646 + mod_id: 558 + version: 1.3.3 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.3.zip' + virus_total_link: '' + downloads: 2203 + created_at: '2023-06-29T04:44:08.000000Z' + updated_at: '2023-06-29T04:44:08.000000Z' + published_at: '2023-06-29 04:44:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4084 + attributes: + hub_id: 5789 + mod_id: 558 + version: 1.3.2 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.2.zip' + virus_total_link: '' + downloads: 2153 + created_at: '2023-03-29T03:39:01.000000Z' + updated_at: '2023-03-29T03:39:01.000000Z' + published_at: '2023-03-29 03:39:01' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3813 + attributes: + hub_id: 5397 + mod_id: 558 + version: 1.3.1 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.1.zip' + virus_total_link: '' + downloads: 1554 + created_at: '2023-03-03T02:16:29.000000Z' + updated_at: '2023-03-03T02:16:29.000000Z' + published_at: '2023-03-03 02:16:29' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3671 + attributes: + hub_id: 5211 + mod_id: 558 + version: 1.3.0 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.0.zip' + virus_total_link: '' + downloads: 1137 + created_at: '2023-02-15T21:28:41.000000Z' + updated_at: '2023-02-15T21:28:41.000000Z' + published_at: '2023-02-15 21:28:41' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3370 + attributes: + hub_id: 4794 + mod_id: 558 + version: 1.2.5 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.5.zip' + virus_total_link: '' + downloads: 1475 + created_at: '2023-01-08T18:30:28.000000Z' + updated_at: '2023-01-08T18:30:28.000000Z' + published_at: '2023-01-08 18:30:28' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2851 + attributes: + hub_id: 4111 + mod_id: 558 + version: 1.2.4 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.4.zip' + virus_total_link: '' + downloads: 1574 + created_at: '2022-10-05T02:30:28.000000Z' + updated_at: '2022-10-05T02:30:28.000000Z' + published_at: '2022-10-05 02:30:28' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2776 + attributes: + hub_id: 4005 + mod_id: 558 + version: 1.2.3 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.3.zip' + virus_total_link: '' + downloads: 841 + created_at: '2022-09-16T14:15:39.000000Z' + updated_at: '2022-09-16T14:15:39.000000Z' + published_at: '2022-09-16 14:15:39' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2771 + attributes: + hub_id: 4000 + mod_id: 558 + version: 1.2.2 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.2.zip' + virus_total_link: '' + downloads: 219 + created_at: '2022-09-14T15:22:53.000000Z' + updated_at: '2022-09-14T15:22:53.000000Z' + published_at: '2022-09-14 15:22:53' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2712 + attributes: + hub_id: 3920 + mod_id: 558 + version: 1.2.1 + link: 'https://downloadthisfor.me/spt-aki-mods/Dinkadactyl-CustomRaidTimes-1.2.1.zip' + virus_total_link: '' + downloads: 696 + created_at: '2022-09-02T18:16:54.000000Z' + updated_at: '2022-09-02T18:16:54.000000Z' + published_at: '2022-09-02 18:16:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2642 + attributes: + hub_id: 3834 + mod_id: 558 + version: 1.2.0 + link: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.2.0/CustomRaidTimes.zip' + virus_total_link: '' + downloads: 244 + created_at: '2022-08-28T04:58:10.000000Z' + updated_at: '2022-08-28T04:58:10.000000Z' + published_at: '2022-08-28 04:58:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2583 + attributes: + hub_id: 3759 + mod_id: 558 + version: 1.1.0 + link: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.1.0/CustomRaidTimes.zip' + virus_total_link: '' + downloads: 519 + created_at: '2022-08-20T06:08:38.000000Z' + updated_at: '2022-08-20T06:08:38.000000Z' + published_at: '2022-08-20 06:08:38' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2506 + attributes: + hub_id: 3675 + mod_id: 558 + version: 1.0.2 + link: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.0.2/CustomRaidTimes.zip' + virus_total_link: '' + downloads: 325 + created_at: '2022-08-16T15:31:00.000000Z' + updated_at: '2022-08-16T15:31:00.000000Z' + published_at: '2022-08-16 15:31:00' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2489 + attributes: + hub_id: 3655 + mod_id: 558 + version: 1.0.1 + link: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.0.1/CustomRaidTimes.zip' + virus_total_link: '' + downloads: 328 + created_at: '2022-08-15T04:11:53.000000Z' + updated_at: '2022-08-15T04:11:53.000000Z' + published_at: '2022-08-15 04:11:53' + relationships: + spt_version: + - + data: + type: spt_version + links: + self: 'http://forge.test/mod/558/custom-raid-times' + properties: + data: + type: object + properties: + type: + type: string + example: mod + id: + type: integer + example: 558 + attributes: + type: object + properties: + hub_id: + type: integer + example: 771 + name: + type: string + example: 'Custom Raid Times' + slug: + type: string + example: custom-raid-times + teaser: + type: string + example: 'Change the raid time of maps individually or override them all to one single time. Supports weighted, random times. Automatically adjusts the train schedules to fit within the new raid times.' + description: + type: string + example: " Custom Raid Times \n===================\n\n Features: \n-----------\n\n- Adjust global raid times, or raid times for individual maps.\n- Raid times can be random ranges, grouped, and weighted.\n- Extract train schedules automatically adjust to the new raid time. \n - Earliest arrival time (given enough overall time) can be anywhere in between 35% to 80% of the total raid time, making train arrival less predictable and also more usable in extra long raids.\n - The number of seconds the train waits before closing the doors and departing is now randomized; but always between 14 and 7 minutes.\n - Raids can now be as short as 3 minutes and still have an active and functional train extract.\n \n To install: \n-------------\n\n1. Decompress the contents of the download into your root SPT directory.\n2. Open the CustomRaidTimes/config/config.json5 file to adjust raid time options.\n3. Leave a review and let me know what you think.\n\n Issues? \n---------\n\n- If you experience any problems, please [submit a detailed bug report.](https://github.com/refringe/CustomRaidTimes/issues)\n\n♥" + license_id: + type: integer + example: 11 + source_code_link: + type: string + example: 'https://github.com/refringe/CustomRaidTimes' + featured: + type: boolean + example: false + contains_ai_content: + type: boolean + example: false + contains_ads: + type: boolean + example: false + created_at: + type: string + example: '2022-08-15T03:30:59.000000Z' + updated_at: + type: string + example: '2024-09-15T18:48:12.000000Z' + published_at: + type: string + example: '2022-08-15 03:30:59' + relationships: + type: object + properties: + users: + type: array + example: + - + data: + type: user + id: 14605 + links: + self: 'http://forge.test/user/14605/refringe' + items: + type: object + properties: + data: + type: object + properties: + type: + type: string + example: user + id: + type: integer + example: 14605 + links: + type: object + properties: + self: + type: string + example: 'http://forge.test/user/14605/refringe' + versions: + type: array + example: + - + data: + type: version + id: 8810 + links: + self: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.3/refringe-customraidtimes-1.7.3.zip' + - + data: + type: version + id: 8099 + links: + self: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.2/refringe-customraidtimes-1.7.2.zip' + - + data: + type: version + id: 7953 + links: + self: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.1/refringe-customraidtimes-1.7.1.zip' + - + data: + type: version + id: 7931 + links: + self: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.0/refringe-customraidtimes-1.7.0.zip' + - + data: + type: version + id: 6843 + links: + self: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.6.0/refringe-customraidtimes-1.6.0.zip' + - + data: + type: version + id: 5308 + links: + self: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.5.0/refringe-customraidtimes-1.5.0.zip' + - + data: + type: version + id: 5031 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/refringe-customraidtimes-1.4.0.zip' + - + data: + type: version + id: 4672 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.3.zip' + - + data: + type: version + id: 4084 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.2.zip' + - + data: + type: version + id: 3813 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.1.zip' + - + data: + type: version + id: 3671 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.0.zip' + - + data: + type: version + id: 3370 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.5.zip' + - + data: + type: version + id: 2851 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.4.zip' + - + data: + type: version + id: 2776 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.3.zip' + - + data: + type: version + id: 2771 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.2.zip' + - + data: + type: version + id: 2712 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/Dinkadactyl-CustomRaidTimes-1.2.1.zip' + - + data: + type: version + id: 2642 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.2.0/CustomRaidTimes.zip' + - + data: + type: version + id: 2583 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.1.0/CustomRaidTimes.zip' + - + data: + type: version + id: 2506 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.0.2/CustomRaidTimes.zip' + - + data: + type: version + id: 2489 + links: + self: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.0.1/CustomRaidTimes.zip' + items: + type: object + properties: + data: + type: object + properties: + type: + type: string + example: version + id: + type: integer + example: 8810 + links: + type: object + properties: + self: + type: string + example: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.3/refringe-customraidtimes-1.7.3.zip' + license: + type: array + example: + - + data: + type: license + id: 11 + items: + type: object + properties: + data: + type: object + properties: + type: + type: string + example: license + id: + type: integer + example: 11 + includes: + type: array + example: + - + type: user + id: 14605 + attributes: + name: Refringe + user_role_id: 4 + created_at: '2022-02-12T03:17:31.000000Z' + updated_at: '2024-09-16T21:23:28.000000Z' + relationships: + user_role: + data: + type: user_role + id: 4 + links: + self: 'http://forge.test/user/14605/refringe' + - + type: license + id: 11 + attributes: + name: 'MIT License' + link: 'https://choosealicense.com/licenses/mit/' + created_at: null + updated_at: null + - + type: mod_version + id: 8810 + attributes: + hub_id: 11648 + mod_id: 558 + version: 1.7.3 + link: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.3/refringe-customraidtimes-1.7.3.zip' + virus_total_link: '' + downloads: 1227 + created_at: '2024-09-06T14:53:12.000000Z' + updated_at: '2024-09-06T14:53:12.000000Z' + published_at: '2024-09-06 14:53:12' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 8099 + attributes: + hub_id: 10846 + mod_id: 558 + version: 1.7.2 + link: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.2/refringe-customraidtimes-1.7.2.zip' + virus_total_link: '' + downloads: 7740 + created_at: '2024-07-15T00:57:52.000000Z' + updated_at: '2024-07-15T00:57:52.000000Z' + published_at: '2024-07-15 00:57:52' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7953 + attributes: + hub_id: 10683 + mod_id: 558 + version: 1.7.1 + link: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.1/refringe-customraidtimes-1.7.1.zip' + virus_total_link: '' + downloads: 1740 + created_at: '2024-07-10T02:01:20.000000Z' + updated_at: '2024-07-10T02:01:20.000000Z' + published_at: '2024-07-10 02:01:20' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 7931 + attributes: + hub_id: 10659 + mod_id: 558 + version: 1.7.0 + link: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.7.0/refringe-customraidtimes-1.7.0.zip' + virus_total_link: '' + downloads: 705 + created_at: '2024-07-09T05:19:11.000000Z' + updated_at: '2024-07-09T05:19:11.000000Z' + published_at: '2024-07-09 05:19:11' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 6843 + attributes: + hub_id: 9428 + mod_id: 558 + version: 1.6.0 + link: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.6.0/refringe-customraidtimes-1.6.0.zip' + virus_total_link: '' + downloads: 7748 + created_at: '2024-04-14T15:33:45.000000Z' + updated_at: '2024-04-14T15:33:45.000000Z' + published_at: '2024-04-14 15:33:45' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5308 + attributes: + hub_id: 7570 + mod_id: 558 + version: 1.5.0 + link: 'https://github.com/refringe/CustomRaidTimes/releases/download/v1.5.0/refringe-customraidtimes-1.5.0.zip' + virus_total_link: '' + downloads: 10343 + created_at: '2023-10-08T21:27:38.000000Z' + updated_at: '2023-10-08T21:27:38.000000Z' + published_at: '2023-10-08 21:27:38' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 5031 + attributes: + hub_id: 7195 + mod_id: 558 + version: 1.4.0 + link: 'https://downloadthisfor.me/spt-aki-mods/refringe-customraidtimes-1.4.0.zip' + virus_total_link: '' + downloads: 2232 + created_at: '2023-08-23T04:56:28.000000Z' + updated_at: '2023-08-23T04:56:28.000000Z' + published_at: '2023-08-23 04:56:28' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4672 + attributes: + hub_id: 6646 + mod_id: 558 + version: 1.3.3 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.3.zip' + virus_total_link: '' + downloads: 2203 + created_at: '2023-06-29T04:44:08.000000Z' + updated_at: '2023-06-29T04:44:08.000000Z' + published_at: '2023-06-29 04:44:08' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 4084 + attributes: + hub_id: 5789 + mod_id: 558 + version: 1.3.2 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.2.zip' + virus_total_link: '' + downloads: 2153 + created_at: '2023-03-29T03:39:01.000000Z' + updated_at: '2023-03-29T03:39:01.000000Z' + published_at: '2023-03-29 03:39:01' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3813 + attributes: + hub_id: 5397 + mod_id: 558 + version: 1.3.1 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.1.zip' + virus_total_link: '' + downloads: 1554 + created_at: '2023-03-03T02:16:29.000000Z' + updated_at: '2023-03-03T02:16:29.000000Z' + published_at: '2023-03-03 02:16:29' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3671 + attributes: + hub_id: 5211 + mod_id: 558 + version: 1.3.0 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.3.0.zip' + virus_total_link: '' + downloads: 1137 + created_at: '2023-02-15T21:28:41.000000Z' + updated_at: '2023-02-15T21:28:41.000000Z' + published_at: '2023-02-15 21:28:41' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 3370 + attributes: + hub_id: 4794 + mod_id: 558 + version: 1.2.5 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.5.zip' + virus_total_link: '' + downloads: 1475 + created_at: '2023-01-08T18:30:28.000000Z' + updated_at: '2023-01-08T18:30:28.000000Z' + published_at: '2023-01-08 18:30:28' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2851 + attributes: + hub_id: 4111 + mod_id: 558 + version: 1.2.4 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.4.zip' + virus_total_link: '' + downloads: 1574 + created_at: '2022-10-05T02:30:28.000000Z' + updated_at: '2022-10-05T02:30:28.000000Z' + published_at: '2022-10-05 02:30:28' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2776 + attributes: + hub_id: 4005 + mod_id: 558 + version: 1.2.3 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.3.zip' + virus_total_link: '' + downloads: 841 + created_at: '2022-09-16T14:15:39.000000Z' + updated_at: '2022-09-16T14:15:39.000000Z' + published_at: '2022-09-16 14:15:39' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2771 + attributes: + hub_id: 4000 + mod_id: 558 + version: 1.2.2 + link: 'https://downloadthisfor.me/spt-aki-mods/Refringe-CustomRaidTimes-1.2.2.zip' + virus_total_link: '' + downloads: 219 + created_at: '2022-09-14T15:22:53.000000Z' + updated_at: '2022-09-14T15:22:53.000000Z' + published_at: '2022-09-14 15:22:53' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2712 + attributes: + hub_id: 3920 + mod_id: 558 + version: 1.2.1 + link: 'https://downloadthisfor.me/spt-aki-mods/Dinkadactyl-CustomRaidTimes-1.2.1.zip' + virus_total_link: '' + downloads: 696 + created_at: '2022-09-02T18:16:54.000000Z' + updated_at: '2022-09-02T18:16:54.000000Z' + published_at: '2022-09-02 18:16:54' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2642 + attributes: + hub_id: 3834 + mod_id: 558 + version: 1.2.0 + link: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.2.0/CustomRaidTimes.zip' + virus_total_link: '' + downloads: 244 + created_at: '2022-08-28T04:58:10.000000Z' + updated_at: '2022-08-28T04:58:10.000000Z' + published_at: '2022-08-28 04:58:10' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2583 + attributes: + hub_id: 3759 + mod_id: 558 + version: 1.1.0 + link: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.1.0/CustomRaidTimes.zip' + virus_total_link: '' + downloads: 519 + created_at: '2022-08-20T06:08:38.000000Z' + updated_at: '2022-08-20T06:08:38.000000Z' + published_at: '2022-08-20 06:08:38' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2506 + attributes: + hub_id: 3675 + mod_id: 558 + version: 1.0.2 + link: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.0.2/CustomRaidTimes.zip' + virus_total_link: '' + downloads: 325 + created_at: '2022-08-16T15:31:00.000000Z' + updated_at: '2022-08-16T15:31:00.000000Z' + published_at: '2022-08-16 15:31:00' + relationships: + spt_version: + - + data: + type: spt_version + - + type: mod_version + id: 2489 + attributes: + hub_id: 3655 + mod_id: 558 + version: 1.0.1 + link: 'https://downloadthisfor.me/spt-aki-mods/CustomRaidTimes/v1.0.1/CustomRaidTimes.zip' + virus_total_link: '' + downloads: 328 + created_at: '2022-08-15T04:11:53.000000Z' + updated_at: '2022-08-15T04:11:53.000000Z' + published_at: '2022-08-15 04:11:53' + relationships: + spt_version: + - + data: + type: spt_version + items: + type: object + properties: + type: + type: string + example: user + id: + type: integer + example: 14605 + attributes: + type: object + properties: + name: + type: string + example: Refringe + user_role_id: + type: integer + example: 4 + created_at: + type: string + example: '2022-02-12T03:17:31.000000Z' + updated_at: + type: string + example: '2024-09-16T21:23:28.000000Z' + relationships: + type: object + properties: + user_role: + type: object + properties: + data: + type: object + properties: { type: { type: string, example: user_role }, id: { type: integer, example: 4 } } + links: + type: object + properties: + self: + type: string + example: 'http://forge.test/user/14605/refringe' + links: + type: object + properties: + self: + type: string + example: 'http://forge.test/mod/558/custom-raid-times' + tags: + - Mods + parameters: + - + in: path + name: id + description: 'The ID of the mod.' + example: 558 + required: true + schema: + type: integer + /api/v0/users: + get: + summary: 'Get Users' + operationId: getUsers + description: 'List, filter, and sort basic information about users.' + parameters: + - + in: query + name: include + description: 'The relationships to include within the `includes` key. By default no relationships are automatically included.' + example: user_role + required: false + schema: + type: string + description: 'The relationships to include within the `includes` key. By default no relationships are automatically included.' + example: user_role + - + in: query + name: 'filter[id]' + description: 'Filter by the `id`. Select multiple by separating the IDs with a comma.' + example: '5,10,15' + required: false + schema: + type: string + description: 'Filter by the `id`. Select multiple by separating the IDs with a comma.' + example: '5,10,15' + - + in: query + name: 'filter[name]' + description: 'Filter by the `name` attribute. Use `*` as the wildcard character.' + example: '*fringe' + required: false + schema: + type: string + description: 'Filter by the `name` attribute. Use `*` as the wildcard character.' + example: '*fringe' + - + in: query + name: 'filter[created_at]' + description: 'Filter by the `created_at` attribute. Ranges are possible by separating the dates with a comma.' + example: '2023-12-31,2024-12-31' + required: false + schema: + type: string + description: 'Filter by the `created_at` attribute. Ranges are possible by separating the dates with a comma.' + example: '2023-12-31,2024-12-31' + - + in: query + name: 'filter[updated_at]' + description: 'Filter by the `updated_at` attribute. Ranges are possible by separating the dates with a comma.' + example: '2023-12-31,2024-12-31' + required: false + schema: + type: string + description: 'Filter by the `updated_at` attribute. Ranges are possible by separating the dates with a comma.' + example: '2023-12-31,2024-12-31' + - + in: query + name: sort + description: 'Sort the results by a comma seperated list of attributes. The default sort direction is ASC, append the attribute name with a minus to sort DESC.' + example: 'created_at,-name' + required: false + schema: + type: string + description: 'Sort the results by a comma seperated list of attributes. The default sort direction is ASC, append the attribute name with a minus to sort DESC.' + example: 'created_at,-name' + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + - + type: user + id: 2 + attributes: + name: 'Tyranidex#1942' + user_role_id: null + created_at: '2020-06-11T09:40:21.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/2/tyranidex1942' + - + type: user + id: 3 + attributes: + name: 'AssAssIn#1193' + user_role_id: null + created_at: '2020-06-15T16:07:01.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/3/assassin1193' + - + type: user + id: 4 + attributes: + name: 'Ivandrov#9094' + user_role_id: null + created_at: '2020-06-15T23:03:26.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/4/ivandrov9094' + - + type: user + id: 5 + attributes: + name: 'Vengeance#6753' + user_role_id: null + created_at: '2020-06-15T23:07:12.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/5/vengeance6753' + - + type: user + id: 6 + attributes: + name: RedNukem + user_role_id: null + created_at: '2020-06-15T23:10:29.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/6/rednukem' + - + type: user + id: 7 + attributes: + name: JazzFunkGreats + user_role_id: null + created_at: '2020-06-15T23:15:52.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/7/jazzfunkgreats' + - + type: user + id: 8 + attributes: + name: yimi + user_role_id: null + created_at: '2020-06-16T01:22:40.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/8/yimi' + - + type: user + id: 9 + attributes: + name: lubyankaxlf + user_role_id: null + created_at: '2020-06-16T01:43:09.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/9/lubyankaxlf' + - + type: user + id: 10 + attributes: + name: 'Stalbay#3177' + user_role_id: null + created_at: '2020-06-16T01:51:08.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/10/stalbay3177' + - + type: user + id: 11 + attributes: + name: 'Drill#0596' + user_role_id: null + created_at: '2020-06-16T01:55:19.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/11/drill0596' + - + type: user + id: 12 + attributes: + name: Samwise + user_role_id: null + created_at: '2020-06-16T03:59:58.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/12/samwise' + - + type: user + id: 13 + attributes: + name: 'ServeyVampiRe#2098' + user_role_id: null + created_at: '2020-06-16T05:21:56.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/13/serveyvampire2098' + - + type: user + id: 14 + attributes: + name: Saaly + user_role_id: null + created_at: '2020-06-16T06:57:07.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/14/saaly' + - + type: user + id: 15 + attributes: + name: Meck + user_role_id: null + created_at: '2020-06-16T09:37:11.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/15/meck' + - + type: user + id: 16 + attributes: + name: Orion26 + user_role_id: null + created_at: '2020-06-16T15:51:50.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/16/orion26' + links: + first: 'http://forge.test/api/v0/users?page=1' + last: 'http://forge.test/api/v0/users?page=4262' + prev: null + next: 'http://forge.test/api/v0/users?page=2' + meta: + current_page: 1 + from: 1 + last_page: 4262 + links: + - + url: null + label: '« Previous' + active: false + - + url: 'http://forge.test/api/v0/users?page=1' + label: '1' + active: true + - + url: 'http://forge.test/api/v0/users?page=2' + label: '2' + active: false + - + url: 'http://forge.test/api/v0/users?page=3' + label: '3' + active: false + - + url: 'http://forge.test/api/v0/users?page=4' + label: '4' + active: false + - + url: 'http://forge.test/api/v0/users?page=5' + label: '5' + active: false + - + url: 'http://forge.test/api/v0/users?page=6' + label: '6' + active: false + - + url: 'http://forge.test/api/v0/users?page=7' + label: '7' + active: false + - + url: 'http://forge.test/api/v0/users?page=8' + label: '8' + active: false + - + url: 'http://forge.test/api/v0/users?page=9' + label: '9' + active: false + - + url: 'http://forge.test/api/v0/users?page=10' + label: '10' + active: false + - + url: null + label: ... + active: false + - + url: 'http://forge.test/api/v0/users?page=4261' + label: '4261' + active: false + - + url: 'http://forge.test/api/v0/users?page=4262' + label: '4262' + active: false + - + url: 'http://forge.test/api/v0/users?page=2' + label: 'Next »' + active: false + path: 'http://forge.test/api/v0/users' + per_page: 15 + to: 15 + total: 63916 + properties: + data: + type: array + example: + - + type: user + id: 2 + attributes: + name: 'Tyranidex#1942' + user_role_id: null + created_at: '2020-06-11T09:40:21.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/2/tyranidex1942' + - + type: user + id: 3 + attributes: + name: 'AssAssIn#1193' + user_role_id: null + created_at: '2020-06-15T16:07:01.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/3/assassin1193' + - + type: user + id: 4 + attributes: + name: 'Ivandrov#9094' + user_role_id: null + created_at: '2020-06-15T23:03:26.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/4/ivandrov9094' + - + type: user + id: 5 + attributes: + name: 'Vengeance#6753' + user_role_id: null + created_at: '2020-06-15T23:07:12.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/5/vengeance6753' + - + type: user + id: 6 + attributes: + name: RedNukem + user_role_id: null + created_at: '2020-06-15T23:10:29.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/6/rednukem' + - + type: user + id: 7 + attributes: + name: JazzFunkGreats + user_role_id: null + created_at: '2020-06-15T23:15:52.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/7/jazzfunkgreats' + - + type: user + id: 8 + attributes: + name: yimi + user_role_id: null + created_at: '2020-06-16T01:22:40.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/8/yimi' + - + type: user + id: 9 + attributes: + name: lubyankaxlf + user_role_id: null + created_at: '2020-06-16T01:43:09.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/9/lubyankaxlf' + - + type: user + id: 10 + attributes: + name: 'Stalbay#3177' + user_role_id: null + created_at: '2020-06-16T01:51:08.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/10/stalbay3177' + - + type: user + id: 11 + attributes: + name: 'Drill#0596' + user_role_id: null + created_at: '2020-06-16T01:55:19.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/11/drill0596' + - + type: user + id: 12 + attributes: + name: Samwise + user_role_id: null + created_at: '2020-06-16T03:59:58.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/12/samwise' + - + type: user + id: 13 + attributes: + name: 'ServeyVampiRe#2098' + user_role_id: null + created_at: '2020-06-16T05:21:56.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/13/serveyvampire2098' + - + type: user + id: 14 + attributes: + name: Saaly + user_role_id: null + created_at: '2020-06-16T06:57:07.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/14/saaly' + - + type: user + id: 15 + attributes: + name: Meck + user_role_id: null + created_at: '2020-06-16T09:37:11.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/15/meck' + - + type: user + id: 16 + attributes: + name: Orion26 + user_role_id: null + created_at: '2020-06-16T15:51:50.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/16/orion26' + items: + type: object + properties: + type: + type: string + example: user + id: + type: integer + example: 2 + attributes: + type: object + properties: + name: + type: string + example: 'Tyranidex#1942' + user_role_id: + type: string + example: null + created_at: + type: string + example: '2020-06-11T09:40:21.000000Z' + updated_at: + type: string + example: '2024-09-15T18:42:01.000000Z' + relationships: + type: object + properties: + user_role: + type: object + properties: + data: + type: object + properties: + type: + type: string + example: user_role + id: + type: string + example: null + includes: + type: string + example: null + links: + type: object + properties: + self: + type: string + example: 'http://forge.test/user/2/tyranidex1942' + links: + type: object + properties: + first: + type: string + example: 'http://forge.test/api/v0/users?page=1' + last: + type: string + example: 'http://forge.test/api/v0/users?page=4262' + prev: + type: string + example: null + next: + type: string + example: 'http://forge.test/api/v0/users?page=2' + meta: + type: object + properties: + current_page: + type: integer + example: 1 + from: + type: integer + example: 1 + last_page: + type: integer + example: 4262 + links: + type: array + example: + - + url: null + label: '« Previous' + active: false + - + url: 'http://forge.test/api/v0/users?page=1' + label: '1' + active: true + - + url: 'http://forge.test/api/v0/users?page=2' + label: '2' + active: false + - + url: 'http://forge.test/api/v0/users?page=3' + label: '3' + active: false + - + url: 'http://forge.test/api/v0/users?page=4' + label: '4' + active: false + - + url: 'http://forge.test/api/v0/users?page=5' + label: '5' + active: false + - + url: 'http://forge.test/api/v0/users?page=6' + label: '6' + active: false + - + url: 'http://forge.test/api/v0/users?page=7' + label: '7' + active: false + - + url: 'http://forge.test/api/v0/users?page=8' + label: '8' + active: false + - + url: 'http://forge.test/api/v0/users?page=9' + label: '9' + active: false + - + url: 'http://forge.test/api/v0/users?page=10' + label: '10' + active: false + - + url: null + label: ... + active: false + - + url: 'http://forge.test/api/v0/users?page=4261' + label: '4261' + active: false + - + url: 'http://forge.test/api/v0/users?page=4262' + label: '4262' + active: false + - + url: 'http://forge.test/api/v0/users?page=2' + label: 'Next »' + active: false + items: + type: object + properties: + url: + type: string + example: null + label: + type: string + example: '« Previous' + active: + type: boolean + example: false + path: + type: string + example: 'http://forge.test/api/v0/users' + per_page: + type: integer + example: 15 + to: + type: integer + example: 15 + total: + type: integer + example: 63916 + tags: + - Users + '/api/v0/users/{id}': + get: + summary: 'Get User' + operationId: getUser + description: 'Display more detailed information about a specific user.' + parameters: + - + in: query + name: include + description: 'The relationships to include within the `includes` key. By default no relationships are automatically included.' + example: user_role + required: false + schema: + type: string + description: 'The relationships to include within the `includes` key. By default no relationships are automatically included.' + example: user_role + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + type: user + id: 1 + attributes: + name: 'SPT Team' + user_role_id: null + created_at: '2021-06-02T01:01:13.000000Z' + updated_at: '2024-09-15T18:42:01.000000Z' + relationships: + user_role: + data: + type: user_role + id: null + includes: null + links: + self: 'http://forge.test/user/1/spt-team' + properties: + data: + type: object + properties: + type: + type: string + example: user + id: + type: integer + example: 1 + attributes: + type: object + properties: + name: + type: string + example: 'SPT Team' + user_role_id: + type: string + example: null + created_at: + type: string + example: '2021-06-02T01:01:13.000000Z' + updated_at: + type: string + example: '2024-09-15T18:42:01.000000Z' + relationships: + type: object + properties: + user_role: + type: object + properties: + data: + type: object + properties: + type: + type: string + example: user_role + id: + type: string + example: null + includes: + type: string + example: null + links: + type: object + properties: + self: + type: string + example: 'http://forge.test/user/1/spt-team' + tags: + - Users + parameters: + - + in: path + name: id + description: 'The ID of the user.' + example: 1 + required: true + schema: + type: integer +tags: + - + name: Authentication + description: '' + - + name: Mods + description: '' + - + name: Users + description: '' +components: + securitySchemes: + default: + type: http + scheme: bearer + description: 'You can generate your own API token by logging into The Forge, clicking your profile picture, and clicking API Tokens.' +security: + - + default: [] diff --git a/routes/api.php b/routes/api.php index add5b2a..1c1426f 100644 --- a/routes/api.php +++ b/routes/api.php @@ -3,10 +3,6 @@ use App\Http\Controllers\Api\AuthController; use Illuminate\Support\Facades\Route; -Route::get('/status', function () { - return response()->json(['message' => 'okay']); -}); - Route::post('/login', [AuthController::class, 'login']); Route::group(['middleware' => 'auth:sanctum'], function () { Route::delete('/logout', [AuthController::class, 'logout']); From 9a900bbece159695f16df7836bf83301ce27af95 Mon Sep 17 00:00:00 2001 From: Refringe Date: Tue, 17 Sep 2024 02:18:23 -0400 Subject: [PATCH 056/130] PHPStan Level 5 Decreases the PHPStan level back down to 5. Level 6 was too verbose for my liking. --- phpstan.neon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpstan.neon b/phpstan.neon index 9cc52bf..57de978 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,7 +1,7 @@ includes: - ./vendor/larastan/larastan/extension.neon parameters: - level: 6 + level: 5 paths: - app - bootstrap From ec55717ab3b1114027b49dae2a85d8cb9b5e21db Mon Sep 17 00:00:00 2001 From: "waffle.lord" Date: Tue, 17 Sep 2024 09:38:12 -0400 Subject: [PATCH 057/130] update mod card parameter; about styling --- resources/views/livewire/user/profile.blade.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/resources/views/livewire/user/profile.blade.php b/resources/views/livewire/user/profile.blade.php index a802043..8eb010d 100644 --- a/resources/views/livewire/user/profile.blade.php +++ b/resources/views/livewire/user/profile.blade.php @@ -121,7 +121,7 @@
@foreach($mods as $mod) - + @endforeach
@break @@ -129,7 +129,9 @@

This is the recent activity. Probably need to implement some kind of activity tracking for this?

@break @case('aboutMe') -

{{$user->about}}

+
+

{{$user->about}}

+
@break @endswitch
From df779135c199a6cee7cf19912e7ed2d7d8840aaf Mon Sep 17 00:00:00 2001 From: Refringe Date: Tue, 17 Sep 2024 11:59:28 -0400 Subject: [PATCH 058/130] Global Search Accessibility Improved the accessibility of the global search field in the header. - When focus is lost, the dropdown disappears - The tab key and up/down arrows can be used to cycle through results - When using the keyboard to cycle through results, focus loops back to the top result - Pressing the esc key will clear the search text and remove the focus lock on the search Resolves #25 --- app/Livewire/GlobalSearch.php | 13 +-------- .../global-search-results.blade.php | 10 +++++-- .../views/livewire/global-search.blade.php | 29 ++++++++++++------- resources/views/navigation-menu.blade.php | 8 +++-- 4 files changed, 34 insertions(+), 26 deletions(-) diff --git a/app/Livewire/GlobalSearch.php b/app/Livewire/GlobalSearch.php index e8dfd39..10fc1d7 100644 --- a/app/Livewire/GlobalSearch.php +++ b/app/Livewire/GlobalSearch.php @@ -51,8 +51,7 @@ class GlobalSearch extends Component $results['total'] = $this->countTotalResults($results['data']); } - $this->showDropdown = Str::length($query) > 0; - $this->noResults = $results['total'] === 0 && $this->showDropdown; + $this->noResults = $results['total'] === 0; return $results; } @@ -94,14 +93,4 @@ class GlobalSearch extends Component return $carry + $result->count(); }, 0); } - - /** - * Clear the search query and hide the dropdown. - */ - public function clearSearch(): void - { - $this->query = ''; - $this->showDropdown = false; - $this->noResults = false; - } } diff --git a/resources/views/components/global-search-results.blade.php b/resources/views/components/global-search-results.blade.php index 4f6cc65..12f08b3 100644 --- a/resources/views/components/global-search-results.blade.php +++ b/resources/views/components/global-search-results.blade.php @@ -1,5 +1,11 @@ -
- @if($showDropdown) +
+ @if ($showDropdown)

{{ __('Search Results') }}

@foreach($results['data'] as $typeName => $typeResults) diff --git a/resources/views/livewire/global-search.blade.php b/resources/views/livewire/global-search.blade.php index dd887b5..e9fcd90 100644 --- a/resources/views/livewire/global-search.blade.php +++ b/resources/views/livewire/global-search.blade.php @@ -1,5 +1,13 @@ -
-
+
+
@@ -8,14 +16,15 @@
diff --git a/resources/views/navigation-menu.blade.php b/resources/views/navigation-menu.blade.php index 0c626b7..813a04f 100644 --- a/resources/views/navigation-menu.blade.php +++ b/resources/views/navigation-menu.blade.php @@ -46,7 +46,10 @@ @auth {{-- Profile Dropdown --}} -
+
- +