4 Commits

Author SHA1 Message Date
Jean-Marc Strauven
d961b44c30 chore(release): v2.0.2 (#11) 2026-01-08 20:26:48 +01:00
Jean-Marc Strauven
2b0f6cedaa chore: update dependencies and fix apiroute config (#10)
- Update all Composer dependencies to latest versions
- Fix apiroute URI prefix configuration (was empty, now 'api')
- Laravel framework 12.44.0 -> 12.46.0
- Pest 3.8.4 -> 4.3.1
- laravel-apiroute 0.0.3 -> 2.0.3
2026-01-08 20:24:57 +01:00
Jean-Marc Strauven
bbc34935c6 Merge pull request #8 from Grazulex/fix/routes-cleanup
fix: clean up routes after merge conflict
2026-01-02 17:54:14 +01:00
Jean-Marc Strauven
fcf6483127 fix: clean up routes after merge conflict 2026-01-02 17:53:45 +01:00
5 changed files with 205 additions and 199 deletions

View File

@@ -2,6 +2,15 @@
All notable changes to this project will be documented in this file.
## [2.0.2](https://github.com/Grazulex/laravel-api-kit/releases/tag/v2.0.2) (2026-01-08)
### Bug Fixes
- clean up routes after merge conflict ([fcf6483](https://github.com/Grazulex/laravel-api-kit/commit/fcf64831272a1aaf20fde0d8001714994ccc6932))
### Chores
- update dependencies and fix apiroute config (#10) ([2b0f6ce](https://github.com/Grazulex/laravel-api-kit/commit/2b0f6cedaa2e7804d0a2a30c0d8c8d0dc27c2f57))
## [1.1.0](https://github.com/Grazulex/laravel-api-kit/releases/tag/v1.1.0) (2025-12-25)
### Chores

363
composer.lock generated
View File

@@ -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": "e6f1d7122781eed56575ee487696ba47",
"content-hash": "07247fcb148cb2f2dd5ce91bdef3c5e1",
"packages": [
{
"name": "brick/math",
@@ -771,16 +771,16 @@
},
{
"name": "grazulex/laravel-apiroute",
"version": "v1.2.0",
"version": "v2.0.3",
"source": {
"type": "git",
"url": "https://github.com/Grazulex/laravel-apiroute.git",
"reference": "ef4033cc63cfdbcdc1e8fd8df978a568ef6ae97a"
"reference": "a9d0b2aa569819cf51aac00c66a77262b4b623aa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Grazulex/laravel-apiroute/zipball/ef4033cc63cfdbcdc1e8fd8df978a568ef6ae97a",
"reference": "ef4033cc63cfdbcdc1e8fd8df978a568ef6ae97a",
"url": "https://api.github.com/repos/Grazulex/laravel-apiroute/zipball/a9d0b2aa569819cf51aac00c66a77262b4b623aa",
"reference": "a9d0b2aa569819cf51aac00c66a77262b4b623aa",
"shasum": ""
},
"require": {
@@ -858,7 +858,7 @@
"type": "github"
}
],
"time": "2025-12-28T18:09:46+00:00"
"time": "2026-01-03T16:15:21+00:00"
},
{
"name": "guzzlehttp/guzzle",
@@ -1273,16 +1273,16 @@
},
{
"name": "laravel/framework",
"version": "v12.44.0",
"version": "v12.46.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "592bbf1c036042958332eb98e3e8131b29102f33"
"reference": "9dcff48d25a632c1fadb713024c952fec489c4ae"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/592bbf1c036042958332eb98e3e8131b29102f33",
"reference": "592bbf1c036042958332eb98e3e8131b29102f33",
"url": "https://api.github.com/repos/laravel/framework/zipball/9dcff48d25a632c1fadb713024c952fec489c4ae",
"reference": "9dcff48d25a632c1fadb713024c952fec489c4ae",
"shasum": ""
},
"require": {
@@ -1491,7 +1491,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2025-12-23T15:29:43+00:00"
"time": "2026-01-07T23:26:53+00:00"
},
{
"name": "laravel/prompts",
@@ -1554,16 +1554,16 @@
},
{
"name": "laravel/sanctum",
"version": "v4.2.1",
"version": "v4.2.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/sanctum.git",
"reference": "f5fb373be39a246c74a060f2cf2ae2c2145b3664"
"reference": "fd447754d2d3f56950d53b930128af2e3b617de9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/sanctum/zipball/f5fb373be39a246c74a060f2cf2ae2c2145b3664",
"reference": "f5fb373be39a246c74a060f2cf2ae2c2145b3664",
"url": "https://api.github.com/repos/laravel/sanctum/zipball/fd447754d2d3f56950d53b930128af2e3b617de9",
"reference": "fd447754d2d3f56950d53b930128af2e3b617de9",
"shasum": ""
},
"require": {
@@ -1613,7 +1613,7 @@
"issues": "https://github.com/laravel/sanctum/issues",
"source": "https://github.com/laravel/sanctum"
},
"time": "2025-11-21T13:59:03+00:00"
"time": "2026-01-06T23:11:51+00:00"
},
{
"name": "laravel/serializable-closure",
@@ -1678,16 +1678,16 @@
},
{
"name": "laravel/tinker",
"version": "v2.10.2",
"version": "v2.11.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/tinker.git",
"reference": "3bcb5f62d6f837e0f093a601e26badafb127bd4c"
"reference": "3d34b97c9a1747a81a3fde90482c092bd8b66468"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/tinker/zipball/3bcb5f62d6f837e0f093a601e26badafb127bd4c",
"reference": "3bcb5f62d6f837e0f093a601e26badafb127bd4c",
"url": "https://api.github.com/repos/laravel/tinker/zipball/3d34b97c9a1747a81a3fde90482c092bd8b66468",
"reference": "3d34b97c9a1747a81a3fde90482c092bd8b66468",
"shasum": ""
},
"require": {
@@ -1696,7 +1696,7 @@
"illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0",
"php": "^7.2.5|^8.0",
"psy/psysh": "^0.11.1|^0.12.0",
"symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0"
"symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0|^8.0"
},
"require-dev": {
"mockery/mockery": "~1.3.3|^1.4.2",
@@ -1738,9 +1738,9 @@
],
"support": {
"issues": "https://github.com/laravel/tinker/issues",
"source": "https://github.com/laravel/tinker/tree/v2.10.2"
"source": "https://github.com/laravel/tinker/tree/v2.11.0"
},
"time": "2025-11-20T16:29:12+00:00"
"time": "2025-12-19T19:16:45+00:00"
},
{
"name": "league/commonmark",
@@ -2303,16 +2303,16 @@
},
{
"name": "monolog/monolog",
"version": "3.9.0",
"version": "3.10.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6"
"reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6",
"reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6",
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0",
"reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0",
"shasum": ""
},
"require": {
@@ -2330,7 +2330,7 @@
"graylog2/gelf-php": "^1.4.2 || ^2.0",
"guzzlehttp/guzzle": "^7.4.5",
"guzzlehttp/psr7": "^2.2",
"mongodb/mongodb": "^1.8",
"mongodb/mongodb": "^1.8 || ^2.0",
"php-amqplib/php-amqplib": "~2.4 || ^3",
"php-console/php-console": "^3.1.8",
"phpstan/phpstan": "^2",
@@ -2390,7 +2390,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
"source": "https://github.com/Seldaek/monolog/tree/3.9.0"
"source": "https://github.com/Seldaek/monolog/tree/3.10.0"
},
"funding": [
{
@@ -2402,7 +2402,7 @@
"type": "tidelift"
}
],
"time": "2025-03-24T10:02:05+00:00"
"time": "2026-01-02T08:56:05+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -4225,21 +4225,22 @@
},
{
"name": "symfony/clock",
"version": "v8.0.0",
"version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/clock.git",
"reference": "832119f9b8dbc6c8e6f65f30c5969eca1e88764f"
"reference": "9169f24776edde469914c1e7a1442a50f7a4e110"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/clock/zipball/832119f9b8dbc6c8e6f65f30c5969eca1e88764f",
"reference": "832119f9b8dbc6c8e6f65f30c5969eca1e88764f",
"url": "https://api.github.com/repos/symfony/clock/zipball/9169f24776edde469914c1e7a1442a50f7a4e110",
"reference": "9169f24776edde469914c1e7a1442a50f7a4e110",
"shasum": ""
},
"require": {
"php": ">=8.4",
"psr/clock": "^1.0"
"php": ">=8.2",
"psr/clock": "^1.0",
"symfony/polyfill-php83": "^1.28"
},
"provide": {
"psr/clock-implementation": "1.0"
@@ -4278,7 +4279,7 @@
"time"
],
"support": {
"source": "https://github.com/symfony/clock/tree/v8.0.0"
"source": "https://github.com/symfony/clock/tree/v7.4.0"
},
"funding": [
{
@@ -4298,20 +4299,20 @@
"type": "tidelift"
}
],
"time": "2025-11-12T15:46:48+00:00"
"time": "2025-11-12T15:39:26+00:00"
},
{
"name": "symfony/console",
"version": "v7.4.1",
"version": "v7.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e"
"reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e",
"reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e",
"url": "https://api.github.com/repos/symfony/console/zipball/732a9ca6cd9dfd940c639062d5edbde2f6727fb6",
"reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6",
"shasum": ""
},
"require": {
@@ -4376,7 +4377,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v7.4.1"
"source": "https://github.com/symfony/console/tree/v7.4.3"
},
"funding": [
{
@@ -4396,24 +4397,24 @@
"type": "tidelift"
}
],
"time": "2025-12-05T15:23:39+00:00"
"time": "2025-12-23T14:50:43+00:00"
},
{
"name": "symfony/css-selector",
"version": "v8.0.0",
"version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
"reference": "6225bd458c53ecdee056214cb4a2ffaf58bd592b"
"reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/6225bd458c53ecdee056214cb4a2ffaf58bd592b",
"reference": "6225bd458c53ecdee056214cb4a2ffaf58bd592b",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/ab862f478513e7ca2fe9ec117a6f01a8da6e1135",
"reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135",
"shasum": ""
},
"require": {
"php": ">=8.4"
"php": ">=8.2"
},
"type": "library",
"autoload": {
@@ -4445,7 +4446,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/css-selector/tree/v8.0.0"
"source": "https://github.com/symfony/css-selector/tree/v7.4.0"
},
"funding": [
{
@@ -4465,7 +4466,7 @@
"type": "tidelift"
}
],
"time": "2025-10-30T14:17:19+00:00"
"time": "2025-10-30T13:39:42+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -4618,24 +4619,24 @@
},
{
"name": "symfony/event-dispatcher",
"version": "v8.0.0",
"version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "573f95783a2ec6e38752979db139f09fec033f03"
"reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/573f95783a2ec6e38752979db139f09fec033f03",
"reference": "573f95783a2ec6e38752979db139f09fec033f03",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9dddcddff1ef974ad87b3708e4b442dc38b2261d",
"reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d",
"shasum": ""
},
"require": {
"php": ">=8.4",
"php": ">=8.2",
"symfony/event-dispatcher-contracts": "^2.5|^3"
},
"conflict": {
"symfony/security-http": "<7.4",
"symfony/dependency-injection": "<6.4",
"symfony/service-contracts": "<2.5"
},
"provide": {
@@ -4644,14 +4645,14 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
"symfony/config": "^7.4|^8.0",
"symfony/dependency-injection": "^7.4|^8.0",
"symfony/error-handler": "^7.4|^8.0",
"symfony/expression-language": "^7.4|^8.0",
"symfony/framework-bundle": "^7.4|^8.0",
"symfony/http-foundation": "^7.4|^8.0",
"symfony/config": "^6.4|^7.0|^8.0",
"symfony/dependency-injection": "^6.4|^7.0|^8.0",
"symfony/error-handler": "^6.4|^7.0|^8.0",
"symfony/expression-language": "^6.4|^7.0|^8.0",
"symfony/framework-bundle": "^6.4|^7.0|^8.0",
"symfony/http-foundation": "^6.4|^7.0|^8.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/stopwatch": "^7.4|^8.0"
"symfony/stopwatch": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -4679,7 +4680,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/event-dispatcher/tree/v8.0.0"
"source": "https://github.com/symfony/event-dispatcher/tree/v7.4.0"
},
"funding": [
{
@@ -4699,7 +4700,7 @@
"type": "tidelift"
}
],
"time": "2025-10-30T14:17:19+00:00"
"time": "2025-10-28T09:38:46+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -4779,16 +4780,16 @@
},
{
"name": "symfony/finder",
"version": "v7.4.0",
"version": "v7.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "340b9ed7320570f319028a2cbec46d40535e94bd"
"reference": "fffe05569336549b20a1be64250b40516d6e8d06"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/340b9ed7320570f319028a2cbec46d40535e94bd",
"reference": "340b9ed7320570f319028a2cbec46d40535e94bd",
"url": "https://api.github.com/repos/symfony/finder/zipball/fffe05569336549b20a1be64250b40516d6e8d06",
"reference": "fffe05569336549b20a1be64250b40516d6e8d06",
"shasum": ""
},
"require": {
@@ -4823,7 +4824,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/finder/tree/v7.4.0"
"source": "https://github.com/symfony/finder/tree/v7.4.3"
},
"funding": [
{
@@ -4843,20 +4844,20 @@
"type": "tidelift"
}
],
"time": "2025-11-05T05:42:40+00:00"
"time": "2025-12-23T14:50:43+00:00"
},
{
"name": "symfony/http-foundation",
"version": "v7.4.1",
"version": "v7.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "bd1af1e425811d6f077db240c3a588bdb405cd27"
"reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/bd1af1e425811d6f077db240c3a588bdb405cd27",
"reference": "bd1af1e425811d6f077db240c3a588bdb405cd27",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/a70c745d4cea48dbd609f4075e5f5cbce453bd52",
"reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52",
"shasum": ""
},
"require": {
@@ -4905,7 +4906,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-foundation/tree/v7.4.1"
"source": "https://github.com/symfony/http-foundation/tree/v7.4.3"
},
"funding": [
{
@@ -4925,20 +4926,20 @@
"type": "tidelift"
}
],
"time": "2025-12-07T11:13:10+00:00"
"time": "2025-12-23T14:23:49+00:00"
},
{
"name": "symfony/http-kernel",
"version": "v7.4.2",
"version": "v7.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "f6e6f0a5fa8763f75a504b930163785fb6dd055f"
"reference": "885211d4bed3f857b8c964011923528a55702aa5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/f6e6f0a5fa8763f75a504b930163785fb6dd055f",
"reference": "f6e6f0a5fa8763f75a504b930163785fb6dd055f",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/885211d4bed3f857b8c964011923528a55702aa5",
"reference": "885211d4bed3f857b8c964011923528a55702aa5",
"shasum": ""
},
"require": {
@@ -5024,7 +5025,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/http-kernel/tree/v7.4.2"
"source": "https://github.com/symfony/http-kernel/tree/v7.4.3"
},
"funding": [
{
@@ -5044,20 +5045,20 @@
"type": "tidelift"
}
],
"time": "2025-12-08T07:43:37+00:00"
"time": "2025-12-31T08:43:57+00:00"
},
{
"name": "symfony/mailer",
"version": "v7.4.0",
"version": "v7.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/mailer.git",
"reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd"
"reference": "e472d35e230108231ccb7f51eb6b2100cac02ee4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/mailer/zipball/a3d9eea8cfa467ece41f0f54ba28185d74bd53fd",
"reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd",
"url": "https://api.github.com/repos/symfony/mailer/zipball/e472d35e230108231ccb7f51eb6b2100cac02ee4",
"reference": "e472d35e230108231ccb7f51eb6b2100cac02ee4",
"shasum": ""
},
"require": {
@@ -5108,7 +5109,7 @@
"description": "Helps sending emails",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/mailer/tree/v7.4.0"
"source": "https://github.com/symfony/mailer/tree/v7.4.3"
},
"funding": [
{
@@ -5128,7 +5129,7 @@
"type": "tidelift"
}
],
"time": "2025-11-21T15:26:00+00:00"
"time": "2025-12-16T08:02:06+00:00"
},
{
"name": "symfony/mime",
@@ -6050,16 +6051,16 @@
},
{
"name": "symfony/process",
"version": "v7.4.0",
"version": "v7.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8"
"reference": "2f8e1a6cdf590ca63715da4d3a7a3327404a523f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/7ca8dc2d0dcf4882658313aba8be5d9fd01026c8",
"reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8",
"url": "https://api.github.com/repos/symfony/process/zipball/2f8e1a6cdf590ca63715da4d3a7a3327404a523f",
"reference": "2f8e1a6cdf590ca63715da4d3a7a3327404a523f",
"shasum": ""
},
"require": {
@@ -6091,7 +6092,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/process/tree/v7.4.0"
"source": "https://github.com/symfony/process/tree/v7.4.3"
},
"funding": [
{
@@ -6111,20 +6112,20 @@
"type": "tidelift"
}
],
"time": "2025-10-16T11:21:06+00:00"
"time": "2025-12-19T10:00:43+00:00"
},
{
"name": "symfony/routing",
"version": "v7.4.0",
"version": "v7.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
"reference": "4720254cb2644a0b876233d258a32bf017330db7"
"reference": "5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/4720254cb2644a0b876233d258a32bf017330db7",
"reference": "4720254cb2644a0b876233d258a32bf017330db7",
"url": "https://api.github.com/repos/symfony/routing/zipball/5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090",
"reference": "5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090",
"shasum": ""
},
"require": {
@@ -6176,7 +6177,7 @@
"url"
],
"support": {
"source": "https://github.com/symfony/routing/tree/v7.4.0"
"source": "https://github.com/symfony/routing/tree/v7.4.3"
},
"funding": [
{
@@ -6196,7 +6197,7 @@
"type": "tidelift"
}
],
"time": "2025-11-27T13:27:24+00:00"
"time": "2025-12-19T10:00:43+00:00"
},
{
"name": "symfony/service-contracts",
@@ -6287,34 +6288,35 @@
},
{
"name": "symfony/string",
"version": "v8.0.1",
"version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc"
"reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/ba65a969ac918ce0cc3edfac6cdde847eba231dc",
"reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc",
"url": "https://api.github.com/repos/symfony/string/zipball/d50e862cb0a0e0886f73ca1f31b865efbb795003",
"reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003",
"shasum": ""
},
"require": {
"php": ">=8.4",
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-intl-grapheme": "^1.33",
"symfony/polyfill-intl-normalizer": "^1.0",
"symfony/polyfill-mbstring": "^1.0"
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3.0",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.33",
"symfony/polyfill-intl-normalizer": "~1.0",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
"symfony/emoji": "^7.4|^8.0",
"symfony/http-client": "^7.4|^8.0",
"symfony/intl": "^7.4|^8.0",
"symfony/emoji": "^7.1|^8.0",
"symfony/http-client": "^6.4|^7.0|^8.0",
"symfony/intl": "^6.4|^7.0|^8.0",
"symfony/translation-contracts": "^2.5|^3.0",
"symfony/var-exporter": "^7.4|^8.0"
"symfony/var-exporter": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -6353,7 +6355,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v8.0.1"
"source": "https://github.com/symfony/string/tree/v7.4.0"
},
"funding": [
{
@@ -6373,31 +6375,38 @@
"type": "tidelift"
}
],
"time": "2025-12-01T09:13:36+00:00"
"time": "2025-11-27T13:27:24+00:00"
},
{
"name": "symfony/translation",
"version": "v8.0.1",
"version": "v7.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
"reference": "770e3b8b0ba8360958abedcabacd4203467333ca"
"reference": "7ef27c65d78886f7599fdd5c93d12c9243ecf44d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/770e3b8b0ba8360958abedcabacd4203467333ca",
"reference": "770e3b8b0ba8360958abedcabacd4203467333ca",
"url": "https://api.github.com/repos/symfony/translation/zipball/7ef27c65d78886f7599fdd5c93d12c9243ecf44d",
"reference": "7ef27c65d78886f7599fdd5c93d12c9243ecf44d",
"shasum": ""
},
"require": {
"php": ">=8.4",
"symfony/polyfill-mbstring": "^1.0",
"symfony/translation-contracts": "^3.6.1"
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/translation-contracts": "^2.5.3|^3.3"
},
"conflict": {
"nikic/php-parser": "<5.0",
"symfony/config": "<6.4",
"symfony/console": "<6.4",
"symfony/dependency-injection": "<6.4",
"symfony/http-client-contracts": "<2.5",
"symfony/service-contracts": "<2.5"
"symfony/http-kernel": "<6.4",
"symfony/service-contracts": "<2.5",
"symfony/twig-bundle": "<6.4",
"symfony/yaml": "<6.4"
},
"provide": {
"symfony/translation-implementation": "2.3|3.0"
@@ -6405,17 +6414,17 @@
"require-dev": {
"nikic/php-parser": "^5.0",
"psr/log": "^1|^2|^3",
"symfony/config": "^7.4|^8.0",
"symfony/console": "^7.4|^8.0",
"symfony/dependency-injection": "^7.4|^8.0",
"symfony/finder": "^7.4|^8.0",
"symfony/config": "^6.4|^7.0|^8.0",
"symfony/console": "^6.4|^7.0|^8.0",
"symfony/dependency-injection": "^6.4|^7.0|^8.0",
"symfony/finder": "^6.4|^7.0|^8.0",
"symfony/http-client-contracts": "^2.5|^3.0",
"symfony/http-kernel": "^7.4|^8.0",
"symfony/intl": "^7.4|^8.0",
"symfony/http-kernel": "^6.4|^7.0|^8.0",
"symfony/intl": "^6.4|^7.0|^8.0",
"symfony/polyfill-intl-icu": "^1.21",
"symfony/routing": "^7.4|^8.0",
"symfony/routing": "^6.4|^7.0|^8.0",
"symfony/service-contracts": "^2.5|^3",
"symfony/yaml": "^7.4|^8.0"
"symfony/yaml": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -6446,7 +6455,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/translation/tree/v8.0.1"
"source": "https://github.com/symfony/translation/tree/v7.4.3"
},
"funding": [
{
@@ -6466,7 +6475,7 @@
"type": "tidelift"
}
],
"time": "2025-12-01T09:13:36+00:00"
"time": "2025-12-29T09:31:36+00:00"
},
{
"name": "symfony/translation-contracts",
@@ -6630,16 +6639,16 @@
},
{
"name": "symfony/var-dumper",
"version": "v7.4.0",
"version": "v7.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
"reference": "41fd6c4ae28c38b294b42af6db61446594a0dece"
"reference": "7e99bebcb3f90d8721890f2963463280848cba92"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/41fd6c4ae28c38b294b42af6db61446594a0dece",
"reference": "41fd6c4ae28c38b294b42af6db61446594a0dece",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/7e99bebcb3f90d8721890f2963463280848cba92",
"reference": "7e99bebcb3f90d8721890f2963463280848cba92",
"shasum": ""
},
"require": {
@@ -6693,7 +6702,7 @@
"dump"
],
"support": {
"source": "https://github.com/symfony/var-dumper/tree/v7.4.0"
"source": "https://github.com/symfony/var-dumper/tree/v7.4.3"
},
"funding": [
{
@@ -6713,7 +6722,7 @@
"type": "tidelift"
}
],
"time": "2025-10-27T20:36:44+00:00"
"time": "2025-12-18T07:04:31+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
@@ -6990,16 +6999,16 @@
"packages-dev": [
{
"name": "brianium/paratest",
"version": "v7.16.0",
"version": "v7.16.1",
"source": {
"type": "git",
"url": "https://github.com/paratestphp/paratest.git",
"reference": "a10878ed0fe0bbc2f57c980f7a08065338b970b6"
"reference": "f0fdfd8e654e0d38bc2ba756a6cabe7be287390b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paratestphp/paratest/zipball/a10878ed0fe0bbc2f57c980f7a08065338b970b6",
"reference": "a10878ed0fe0bbc2f57c980f7a08065338b970b6",
"url": "https://api.github.com/repos/paratestphp/paratest/zipball/f0fdfd8e654e0d38bc2ba756a6cabe7be287390b",
"reference": "f0fdfd8e654e0d38bc2ba756a6cabe7be287390b",
"shasum": ""
},
"require": {
@@ -7010,10 +7019,10 @@
"fidry/cpu-core-counter": "^1.3.0",
"jean85/pretty-package-versions": "^2.1.1",
"php": "~8.3.0 || ~8.4.0 || ~8.5.0",
"phpunit/php-code-coverage": "^12.5.1",
"phpunit/php-code-coverage": "^12.5.2",
"phpunit/php-file-iterator": "^6",
"phpunit/php-timer": "^8",
"phpunit/phpunit": "^12.5.2",
"phpunit/phpunit": "^12.5.4",
"sebastian/environment": "^8.0.3",
"symfony/console": "^7.3.4 || ^8.0.0",
"symfony/process": "^7.3.4 || ^8.0.0"
@@ -7025,7 +7034,7 @@
"ext-posix": "*",
"phpstan/phpstan": "^2.1.33",
"phpstan/phpstan-deprecation-rules": "^2.0.3",
"phpstan/phpstan-phpunit": "^2.0.10",
"phpstan/phpstan-phpunit": "^2.0.11",
"phpstan/phpstan-strict-rules": "^2.0.7",
"symfony/filesystem": "^7.3.2 || ^8.0.0"
},
@@ -7067,7 +7076,7 @@
],
"support": {
"issues": "https://github.com/paratestphp/paratest/issues",
"source": "https://github.com/paratestphp/paratest/tree/v7.16.0"
"source": "https://github.com/paratestphp/paratest/tree/v7.16.1"
},
"funding": [
{
@@ -7079,7 +7088,7 @@
"type": "paypal"
}
],
"time": "2025-12-09T20:03:26+00:00"
"time": "2026-01-08T07:23:06+00:00"
},
{
"name": "fakerphp/faker",
@@ -7468,16 +7477,16 @@
},
{
"name": "laravel/pint",
"version": "v1.26.0",
"version": "v1.27.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/pint.git",
"reference": "69dcca060ecb15e4b564af63d1f642c81a241d6f"
"reference": "c67b4195b75491e4dfc6b00b1c78b68d86f54c90"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/pint/zipball/69dcca060ecb15e4b564af63d1f642c81a241d6f",
"reference": "69dcca060ecb15e4b564af63d1f642c81a241d6f",
"url": "https://api.github.com/repos/laravel/pint/zipball/c67b4195b75491e4dfc6b00b1c78b68d86f54c90",
"reference": "c67b4195b75491e4dfc6b00b1c78b68d86f54c90",
"shasum": ""
},
"require": {
@@ -7488,9 +7497,9 @@
"php": "^8.2.0"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.90.0",
"illuminate/view": "^12.40.1",
"larastan/larastan": "^3.8.0",
"friendsofphp/php-cs-fixer": "^3.92.4",
"illuminate/view": "^12.44.0",
"larastan/larastan": "^3.8.1",
"laravel-zero/framework": "^12.0.4",
"mockery/mockery": "^1.6.12",
"nunomaduro/termwind": "^2.3.3",
@@ -7531,7 +7540,7 @@
"issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint"
},
"time": "2025-11-25T21:15:52+00:00"
"time": "2026-01-05T16:49:17+00:00"
},
{
"name": "mockery/mockery",
@@ -7717,16 +7726,16 @@
},
{
"name": "pestphp/pest",
"version": "v4.2.0",
"version": "v4.3.1",
"source": {
"type": "git",
"url": "https://github.com/pestphp/pest.git",
"reference": "7c43c1c5834435ed9f4ad635e9cb1f0064f876bd"
"reference": "bc57a84e77afd4544ff9643a6858f68d05aeab96"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/pestphp/pest/zipball/7c43c1c5834435ed9f4ad635e9cb1f0064f876bd",
"reference": "7c43c1c5834435ed9f4ad635e9cb1f0064f876bd",
"url": "https://api.github.com/repos/pestphp/pest/zipball/bc57a84e77afd4544ff9643a6858f68d05aeab96",
"reference": "bc57a84e77afd4544ff9643a6858f68d05aeab96",
"shasum": ""
},
"require": {
@@ -7738,12 +7747,12 @@
"pestphp/pest-plugin-mutate": "^4.0.1",
"pestphp/pest-plugin-profanity": "^4.2.1",
"php": "^8.3.0",
"phpunit/phpunit": "^12.5.3",
"symfony/process": "^7.4.0|^8.0.0"
"phpunit/phpunit": "^12.5.4",
"symfony/process": "^7.4.3|^8.0.0"
},
"conflict": {
"filp/whoops": "<2.18.3",
"phpunit/phpunit": ">12.5.3",
"phpunit/phpunit": ">12.5.4",
"sebastian/exporter": "<7.0.0",
"webmozart/assert": "<1.11.0"
},
@@ -7751,7 +7760,7 @@
"pestphp/pest-dev-tools": "^4.0.0",
"pestphp/pest-plugin-browser": "^4.1.1",
"pestphp/pest-plugin-type-coverage": "^4.0.3",
"psy/psysh": "^0.12.17"
"psy/psysh": "^0.12.18"
},
"bin": [
"bin/pest"
@@ -7817,7 +7826,7 @@
],
"support": {
"issues": "https://github.com/pestphp/pest/issues",
"source": "https://github.com/pestphp/pest/tree/v4.2.0"
"source": "https://github.com/pestphp/pest/tree/v4.3.1"
},
"funding": [
{
@@ -7829,7 +7838,7 @@
"type": "github"
}
],
"time": "2025-12-15T11:49:28+00:00"
"time": "2026-01-04T16:29:59+00:00"
},
{
"name": "pestphp/pest-plugin",
@@ -8631,16 +8640,16 @@
},
{
"name": "phpunit/phpunit",
"version": "12.5.3",
"version": "12.5.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "6dc2e076d09960efbb0c1272aa9bc156fc80955e"
"reference": "4ba0e923f9d3fc655de22f9547c01d15a41fc93a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6dc2e076d09960efbb0c1272aa9bc156fc80955e",
"reference": "6dc2e076d09960efbb0c1272aa9bc156fc80955e",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4ba0e923f9d3fc655de22f9547c01d15a41fc93a",
"reference": "4ba0e923f9d3fc655de22f9547c01d15a41fc93a",
"shasum": ""
},
"require": {
@@ -8708,7 +8717,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
"source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.3"
"source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.4"
},
"funding": [
{
@@ -8732,7 +8741,7 @@
"type": "tidelift"
}
],
"time": "2025-12-11T08:52:59+00:00"
"time": "2025-12-15T06:05:34+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -9795,12 +9804,12 @@
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"stability-flags": {},
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
"php": "^8.3"
},
"platform-dev": [],
"plugin-api-version": "2.6.0"
"platform-dev": {},
"plugin-api-version": "2.9.0"
}

View File

@@ -43,7 +43,7 @@ return [
*/
'strategies' => [
'uri' => [
'prefix' => '', // Empty - Laravel 12 adds /api prefix in bootstrap/app.php
'prefix' => 'api', // API prefix for versioned routes
'pattern' => 'v{version}', // v1, v2, etc.
],
'header' => [

View File

@@ -14,19 +14,5 @@
|
*/
// Version 1 - Current stable version
ApiRoute::version('v1', function () {
// Public routes with auth rate limiter (5/min - brute force protection)
Route::middleware('throttle:auth')->group(function () {
Route::post('register', [AuthController::class, 'register'])->name('api.v1.register');
Route::post('login', [AuthController::class, 'login'])->name('api.v1.login');
});
// Protected routes with authenticated rate limiter (120/min)
Route::middleware(['auth:sanctum', 'throttle:authenticated'])->group(function () {
Route::post('logout', [AuthController::class, 'logout'])->name('api.v1.logout');
Route::get('me', [AuthController::class, 'me'])->name('api.v1.me');
});
})
->current()
->rateLimit(60); // Global rate limit: 60 requests/minute for v1
// Routes are now loaded automatically from config/apiroute.php
// See routes/api/v1.php for version 1 routes

View File

@@ -12,12 +12,14 @@ use Illuminate\Support\Facades\Route;
|
*/
// Public routes
Route::post('register', [AuthController::class, 'register'])->name('api.v1.register');
Route::post('login', [AuthController::class, 'login'])->name('api.v1.login');
// Public routes with auth rate limiter (5/min - brute force protection)
Route::middleware('throttle:auth')->group(function () {
Route::post('register', [AuthController::class, 'register'])->name('api.v1.register');
Route::post('login', [AuthController::class, 'login'])->name('api.v1.login');
});
// Protected routes
Route::middleware('auth:sanctum')->group(function () {
// Protected routes with authenticated rate limiter (120/min)
Route::middleware(['auth:sanctum', 'throttle:authenticated'])->group(function () {
Route::post('logout', [AuthController::class, 'logout'])->name('api.v1.logout');
Route::get('me', [AuthController::class, 'me'])->name('api.v1.me');
});