diff --git a/composer.json b/composer.json
index a8fb7a3..6a82721 100644
--- a/composer.json
+++ b/composer.json
@@ -18,6 +18,7 @@
},
"require-dev": {
"fakerphp/faker": "^1.9.1",
+ "knuckleswtf/scribe": "^4.29",
"laravel/pint": "^1.0",
"laravel/sail": "^1.0.1",
"mockery/mockery": "^1.4.4",
diff --git a/composer.lock b/composer.lock
index 2791b3a..6a9045e 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": "680804337e6a36c4df2a18c9939c3c15",
+ "content-hash": "65e59d9156bfdba35310e8e6b76a631d",
"packages": [
{
"name": "blade-ui-kit/blade-heroicons",
@@ -9190,6 +9190,56 @@
],
"time": "2023-10-31T09:24:17+00:00"
},
+ {
+ "name": "erusev/parsedown",
+ "version": "1.7.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/erusev/parsedown.git",
+ "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3",
+ "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Parsedown": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Emanuil Rusev",
+ "email": "hello@erusev.com",
+ "homepage": "http://erusev.com"
+ }
+ ],
+ "description": "Parser for Markdown.",
+ "homepage": "http://parsedown.org",
+ "keywords": [
+ "markdown",
+ "parser"
+ ],
+ "support": {
+ "issues": "https://github.com/erusev/parsedown/issues",
+ "source": "https://github.com/erusev/parsedown/tree/1.7.x"
+ },
+ "time": "2019-12-30T22:54:17+00:00"
+ },
{
"name": "fakerphp/faker",
"version": "v1.23.0",
@@ -9319,46 +9369,6 @@
],
"time": "2023-09-17T21:38:23+00:00"
},
- {
- "name": "filament/upgrade",
- "version": "v3.1.31",
- "source": {
- "type": "git",
- "url": "https://github.com/filamentphp/upgrade.git",
- "reference": "5e5b74562193239f2e81be23be80071bc2c878f5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/filamentphp/upgrade/zipball/5e5b74562193239f2e81be23be80071bc2c878f5",
- "reference": "5e5b74562193239f2e81be23be80071bc2c878f5",
- "shasum": ""
- },
- "require": {
- "nunomaduro/termwind": "^1.0",
- "php": "^8.1",
- "rector/rector": "^0.17"
- },
- "bin": [
- "bin/filament-v3"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "Filament\\Upgrade\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Upgrade Filament v2 code to Filament v3.",
- "homepage": "https://github.com/filamentphp/filament",
- "support": {
- "issues": "https://github.com/filamentphp/filament/issues",
- "source": "https://github.com/filamentphp/filament"
- },
- "time": "2023-12-12T14:20:56+00:00"
- },
{
"name": "filp/whoops",
"version": "2.15.4",
@@ -9540,6 +9550,101 @@
},
"time": "2021-10-08T21:21:46+00:00"
},
+ {
+ "name": "knuckleswtf/scribe",
+ "version": "4.29.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/knuckleswtf/scribe.git",
+ "reference": "695c2a99a70f8c6c1b0dd3bf34d0d70af5ca44fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/knuckleswtf/scribe/zipball/695c2a99a70f8c6c1b0dd3bf34d0d70af5ca44fc",
+ "reference": "695c2a99a70f8c6c1b0dd3bf34d0d70af5ca44fc",
+ "shasum": ""
+ },
+ "require": {
+ "erusev/parsedown": "1.7.4",
+ "ext-fileinfo": "*",
+ "ext-json": "*",
+ "ext-pdo": "*",
+ "fakerphp/faker": "^1.9.1",
+ "illuminate/console": "^8.0|^9.0|^10.0",
+ "illuminate/routing": "^8.0|^9.0|^10.0",
+ "illuminate/support": "^8.0|^9.0|^10.0",
+ "league/flysystem": "^1.1.4|^2.1.1|^3.0",
+ "mpociot/reflection-docblock": "^1.0.1",
+ "nikic/php-parser": "^4.10",
+ "nunomaduro/collision": "^5.10|^6.0|^7.0|^8.0",
+ "php": ">=8.0",
+ "ramsey/uuid": "^4.2.2",
+ "shalvah/clara": "^3.1.0",
+ "shalvah/upgrader": "^0.3.0",
+ "spatie/data-transfer-object": "^2.6|^3.0",
+ "symfony/var-exporter": "^5.4|^6.0|^7.0",
+ "symfony/yaml": "^5.4|^6.0|^7.0"
+ },
+ "replace": {
+ "mpociot/laravel-apidoc-generator": "*"
+ },
+ "require-dev": {
+ "brianium/paratest": "^6.0",
+ "dms/phpunit-arraysubset-asserts": "^0.4",
+ "laravel/legacy-factories": "^1.3.0",
+ "laravel/lumen-framework": "^8.0|^9.0|^10.0",
+ "league/fractal": "^0.20",
+ "nikic/fast-route": "^1.3",
+ "orchestra/testbench": "^6.0|^7.0|^8.0",
+ "pestphp/pest": "^1.21",
+ "phpstan/phpstan": "^1.0",
+ "phpunit/phpunit": "^9.0|^10.0",
+ "symfony/css-selector": "^5.4|^6.0",
+ "symfony/dom-crawler": "^5.4|^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Knuckles\\Scribe\\ScribeServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Knuckles\\Camel\\": "camel/",
+ "Knuckles\\Scribe\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Shalvah"
+ }
+ ],
+ "description": "Generate API documentation for humans from your Laravel codebase.✍",
+ "homepage": "http://github.com/knuckleswtf/scribe",
+ "keywords": [
+ "api",
+ "dingo",
+ "documentation",
+ "laravel"
+ ],
+ "support": {
+ "issues": "https://github.com/knuckleswtf/scribe/issues",
+ "source": "https://github.com/knuckleswtf/scribe/tree/4.29.0"
+ },
+ "funding": [
+ {
+ "url": "https://patreon.com/shalvah",
+ "type": "patreon"
+ }
+ ],
+ "time": "2023-12-29T14:26:08+00:00"
+ },
{
"name": "laravel/pint",
"version": "v1.13.7",
@@ -9754,6 +9859,59 @@
},
"time": "2023-12-10T02:24:34+00:00"
},
+ {
+ "name": "mpociot/reflection-docblock",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mpociot/reflection-docblock.git",
+ "reference": "c8b2e2b1f5cebbb06e2b5ccbf2958f2198867587"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mpociot/reflection-docblock/zipball/c8b2e2b1f5cebbb06e2b5ccbf2958f2198867587",
+ "reference": "c8b2e2b1f5cebbb06e2b5ccbf2958f2198867587",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "suggest": {
+ "dflydev/markdown": "~1.0",
+ "erusev/parsedown": "~1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Mpociot": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "mike.vanriel@naenius.com"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/mpociot/reflection-docblock/issues",
+ "source": "https://github.com/mpociot/reflection-docblock/tree/master"
+ },
+ "time": "2016-06-20T20:53:12+00:00"
+ },
{
"name": "myclabs/deep-copy",
"version": "1.11.1",
@@ -10403,68 +10561,6 @@
},
"time": "2022-02-21T01:04:05+00:00"
},
- {
- "name": "phpstan/phpstan",
- "version": "1.10.50",
- "source": {
- "type": "git",
- "url": "https://github.com/phpstan/phpstan.git",
- "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/06a98513ac72c03e8366b5a0cb00750b487032e4",
- "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4",
- "shasum": ""
- },
- "require": {
- "php": "^7.2|^8.0"
- },
- "conflict": {
- "phpstan/phpstan-shim": "*"
- },
- "bin": [
- "phpstan",
- "phpstan.phar"
- ],
- "type": "library",
- "autoload": {
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "PHPStan - PHP Static Analysis Tool",
- "keywords": [
- "dev",
- "static analysis"
- ],
- "support": {
- "docs": "https://phpstan.org/user-guide/getting-started",
- "forum": "https://github.com/phpstan/phpstan/discussions",
- "issues": "https://github.com/phpstan/phpstan/issues",
- "security": "https://github.com/phpstan/phpstan/security/policy",
- "source": "https://github.com/phpstan/phpstan-src"
- },
- "funding": [
- {
- "url": "https://github.com/ondrejmirtes",
- "type": "github"
- },
- {
- "url": "https://github.com/phpstan",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
- "type": "tidelift"
- }
- ],
- "time": "2023-12-13T10:59:42+00:00"
- },
{
"name": "phpunit/php-code-coverage",
"version": "10.1.11",
@@ -10887,62 +10983,6 @@
],
"time": "2023-12-27T15:13:52+00:00"
},
- {
- "name": "rector/rector",
- "version": "0.17.13",
- "source": {
- "type": "git",
- "url": "https://github.com/rectorphp/rector.git",
- "reference": "e2003ba7c5bda06d7bb419cf4be8dae5f8672132"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/e2003ba7c5bda06d7bb419cf4be8dae5f8672132",
- "reference": "e2003ba7c5bda06d7bb419cf4be8dae5f8672132",
- "shasum": ""
- },
- "require": {
- "php": "^7.2|^8.0",
- "phpstan/phpstan": "^1.10.26"
- },
- "conflict": {
- "rector/rector-doctrine": "*",
- "rector/rector-downgrade-php": "*",
- "rector/rector-phpunit": "*",
- "rector/rector-symfony": "*"
- },
- "bin": [
- "bin/rector"
- ],
- "type": "library",
- "autoload": {
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Instant Upgrade and Automated Refactoring of any PHP code",
- "keywords": [
- "automation",
- "dev",
- "migration",
- "refactoring"
- ],
- "support": {
- "issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/0.17.13"
- },
- "funding": [
- {
- "url": "https://github.com/tomasvotruba",
- "type": "github"
- }
- ],
- "time": "2023-08-14T16:33:29+00:00"
- },
{
"name": "sebastian/cli-parser",
"version": "2.0.0",
@@ -11858,6 +11898,175 @@
],
"time": "2023-02-07T11:34:05+00:00"
},
+ {
+ "name": "shalvah/clara",
+ "version": "3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/shalvah/clara.git",
+ "reference": "d3ae9b277393d438edbfcf9ddb7ca42e958fa054"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/shalvah/clara/zipball/d3ae9b277393d438edbfcf9ddb7ca42e958fa054",
+ "reference": "d3ae9b277393d438edbfcf9ddb7ca42e958fa054",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4",
+ "symfony/console": "^4.0|^5.0|^6.0"
+ },
+ "require-dev": {
+ "eloquent/phony-phpunit": "^7.0",
+ "phpunit/phpunit": "^9.1"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "helpers.php"
+ ],
+ "psr-4": {
+ "Shalvah\\Clara\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "🔊 Simple, pretty, testable console output for CLI apps.",
+ "keywords": [
+ "cli",
+ "log",
+ "logging"
+ ],
+ "support": {
+ "issues": "https://github.com/shalvah/clara/issues",
+ "source": "https://github.com/shalvah/clara/tree/3.1.0"
+ },
+ "time": "2022-01-14T13:54:30+00:00"
+ },
+ {
+ "name": "shalvah/upgrader",
+ "version": "0.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/shalvah/upgrader.git",
+ "reference": "c7f1cca8be5cd0114cd816d8bfff9c80565f7390"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/shalvah/upgrader/zipball/c7f1cca8be5cd0114cd816d8bfff9c80565f7390",
+ "reference": "c7f1cca8be5cd0114cd816d8bfff9c80565f7390",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/support": "^8.0|^9.0|^10.0",
+ "nikic/php-parser": "^4.13",
+ "php": ">=8.0"
+ },
+ "require-dev": {
+ "dms/phpunit-arraysubset-asserts": "^0.2.0",
+ "pestphp/pest": "^1.21",
+ "phpstan/phpstan": "^1.0",
+ "spatie/ray": "^1.33"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Shalvah\\Upgrader\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Shalvah",
+ "email": "hello@shalvah.me"
+ }
+ ],
+ "description": "Create automatic upgrades for your package.",
+ "homepage": "http://github.com/shalvah/upgrader",
+ "keywords": [
+ "upgrade"
+ ],
+ "support": {
+ "issues": "https://github.com/shalvah/upgrader/issues",
+ "source": "https://github.com/shalvah/upgrader/tree/0.3.1"
+ },
+ "funding": [
+ {
+ "url": "https://patreon.com/shalvah",
+ "type": "patreon"
+ }
+ ],
+ "time": "2023-02-06T01:20:37+00:00"
+ },
+ {
+ "name": "spatie/data-transfer-object",
+ "version": "3.9.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/data-transfer-object.git",
+ "reference": "1df0906c4e9e3aebd6c0506fd82c8b7d5548c1c8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/data-transfer-object/zipball/1df0906c4e9e3aebd6c0506fd82c8b7d5548c1c8",
+ "reference": "1df0906c4e9e3aebd6c0506fd82c8b7d5548c1c8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "illuminate/collections": "^8.36",
+ "jetbrains/phpstorm-attributes": "^1.0",
+ "larapack/dd": "^1.1",
+ "phpunit/phpunit": "^9.5.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Spatie\\DataTransferObject\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brent Roose",
+ "email": "brent@spatie.be",
+ "homepage": "https://spatie.be",
+ "role": "Developer"
+ }
+ ],
+ "description": "Data transfer objects with batteries included",
+ "homepage": "https://github.com/spatie/data-transfer-object",
+ "keywords": [
+ "data-transfer-object",
+ "spatie"
+ ],
+ "support": {
+ "issues": "https://github.com/spatie/data-transfer-object/issues",
+ "source": "https://github.com/spatie/data-transfer-object/tree/3.9.1"
+ },
+ "funding": [
+ {
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "abandoned": "spatie/laravel-data",
+ "time": "2022-09-16T13:34:38+00:00"
+ },
{
"name": "spatie/flare-client-php",
"version": "1.4.3",
@@ -12103,6 +12312,80 @@
],
"time": "2023-12-21T09:43:05+00:00"
},
+ {
+ "name": "symfony/var-exporter",
+ "version": "v7.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-exporter.git",
+ "reference": "345c62fefe92243c3a06fc0cc65f2ec1a47e0764"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/345c62fefe92243c3a06fc0cc65f2ec1a47e0764",
+ "reference": "345c62fefe92243c3a06fc0cc65f2ec1a47e0764",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2"
+ },
+ "require-dev": {
+ "symfony/var-dumper": "^6.4|^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\VarExporter\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "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": "Allows exporting any serializable PHP data structure to plain PHP code",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "clone",
+ "construct",
+ "export",
+ "hydrate",
+ "instantiate",
+ "lazy-loading",
+ "proxy",
+ "serialize"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/var-exporter/tree/v7.0.2"
+ },
+ "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": "2023-12-27T08:42:13+00:00"
+ },
{
"name": "symfony/yaml",
"version": "v7.0.0",
diff --git a/config/scribe.php b/config/scribe.php
new file mode 100644
index 0000000..8c64855
--- /dev/null
+++ b/config/scribe.php
@@ -0,0 +1,265 @@
+ for the generated documentation. If this is empty, Scribe will infer it from config('app.name').
+ 'title' => 'Short-URL',
+
+ // A short description of your API. Will be included in the docs webpage, Postman collection and OpenAPI spec.
+ 'description' => 'OpenAPI specification for Url management',
+
+ // The base URL displayed in the docs. If this is empty, Scribe will use the value of config('app.url') at generation time.
+ // If you're using `laravel` type, you can set this to a dynamic string, like '{{ config("app.tenant_url") }}' to get a dynamic base URL.
+ 'base_url' => null,
+
+ 'routes' => [
+ [
+ // Routes that match these conditions will be included in the docs
+ 'match' => [
+ // Match only routes whose paths match this pattern (use * as a wildcard to match any characters). Example: 'users/*'.
+ 'prefixes' => ['api/*'],
+
+ // Match only routes whose domains match this pattern (use * as a wildcard to match any characters). Example: 'api.*'.
+ 'domains' => ['*'],
+
+ // [Dingo router only] Match only routes registered under this version. Wildcards are NOT supported.
+ 'versions' => ['v1'],
+ ],
+
+ // Include these routes even if they did not match the rules above.
+ 'include' => [
+ // 'users.index', 'POST /new', '/auth/*'
+ ],
+
+ // Exclude these routes even if they matched the rules above.
+ 'exclude' => [
+ // 'GET /health', 'admin.*'
+ ],
+ ],
+ ],
+
+ // The type of documentation output to generate.
+ // - "static" will generate a static HTMl page in the /public/docs folder,
+ // - "laravel" will generate the documentation as a Blade view, so you can add routing and authentication.
+ // - "external_static" and "external_laravel" do the same as above, but generate a basic template,
+ // passing the OpenAPI spec as a URL, allowing you to easily use the docs with an external generator
+ 'type' => 'static',
+
+ // See https://scribe.knuckles.wtf/laravel/reference/config#theme for supported options
+ 'theme' => 'default',
+
+ 'static' => [
+ // HTML documentation, assets and Postman collection will be generated to this folder.
+ // Source Markdown will still be in resources/docs.
+ 'output_path' => 'public/docs',
+ ],
+
+ 'laravel' => [
+ // Whether to automatically create a docs endpoint for you to view your generated docs.
+ // If this is false, you can still set up routing manually.
+ 'add_routes' => true,
+
+ // URL path to use for the docs endpoint (if `add_routes` is true).
+ // By default, `/docs` opens the HTML page, `/docs.postman` opens the Postman collection, and `/docs.openapi` the OpenAPI spec.
+ 'docs_url' => '/docs',
+
+ // Directory within `public` in which to store CSS and JS assets.
+ // By default, assets are stored in `public/vendor/scribe`.
+ // If set, assets will be stored in `public/{{assets_directory}}`
+ 'assets_directory' => null,
+
+ // Middleware to attach to the docs endpoint (if `add_routes` is true).
+ 'middleware' => [],
+ ],
+
+ 'external' => [
+ 'html_attributes' => []
+ ],
+
+ 'try_it_out' => [
+ // Add a Try It Out button to your endpoints so consumers can test endpoints right from their browser.
+ // Don't forget to enable CORS headers for your endpoints.
+ 'enabled' => true,
+
+ // The base URL for the API tester to use (for example, you can set this to your staging URL).
+ // Leave as null to use the current app URL when generating (config("app.url")).
+ 'base_url' => null,
+
+ // [Laravel Sanctum] Fetch a CSRF token before each request, and add it as an X-XSRF-TOKEN header.
+ 'use_csrf' => false,
+
+ // The URL to fetch the CSRF token from (if `use_csrf` is true).
+ 'csrf_url' => '/sanctum/csrf-cookie',
+ ],
+
+ // How is your API authenticated? This information will be used in the displayed docs, generated examples and response calls.
+ 'auth' => [
+ // Set this to true if ANY endpoints in your API use authentication.
+ 'enabled' => true,
+
+ // Set this to true if your API should be authenticated by default. If so, you must also set `enabled` (above) to true.
+ // You can then use @unauthenticated or @authenticated on individual endpoints to change their status from the default.
+ 'default' => false,
+
+ // Where is the auth value meant to be sent in a request?
+ // Options: query, body, basic, bearer, header (for custom header)
+ 'in' => 'bearer',
+
+ // The name of the auth parameter (eg token, key, apiKey) or header (eg Authorization, Api-Key).
+ 'name' => 'key',
+
+ // The value of the parameter to be used by Scribe to authenticate response calls.
+ // This will NOT be included in the generated documentation. If empty, Scribe will use a random value.
+ 'use_value' => env('SCRIBE_AUTH_KEY'),
+
+ // Placeholder your users will see for the auth parameter in the example requests.
+ // Set this to null if you want Scribe to use a random value as placeholder instead.
+ 'placeholder' => '{YOUR_AUTH_KEY}',
+
+ // Any extra authentication-related info for your users. Markdown and HTML are supported.
+ 'extra_info' => 'You can retrieve your token by visiting your dashboard and clicking Generate API token.',
+ ],
+
+ // Text to place in the "Introduction" section, right after the `description`. Markdown and HTML are supported.
+ 'intro_text' => <<As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
+You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).
+INTRO
+ ,
+
+ // Example requests for each endpoint will be shown in each of these languages.
+ // Supported options are: bash, javascript, php, python
+ // To add a language of your own, see https://scribe.knuckles.wtf/laravel/advanced/example-requests
+ 'example_languages' => [
+ 'bash',
+ 'javascript',
+ 'php',
+ ],
+
+ // Generate a Postman collection (v2.1.0) in addition to HTML docs.
+ // For 'static' docs, the collection will be generated to public/docs/collection.json.
+ // For 'laravel' docs, it will be generated to storage/app/scribe/collection.json.
+ // Setting `laravel.add_routes` to true (above) will also add a route for the collection.
+ 'postman' => [
+ 'enabled' => true,
+
+ 'overrides' => [
+ // 'info.version' => '2.0.0',
+ ],
+ ],
+
+ // Generate an OpenAPI spec (v3.0.1) in addition to docs webpage.
+ // For 'static' docs, the collection will be generated to public/docs/openapi.yaml.
+ // For 'laravel' docs, it will be generated to storage/app/scribe/openapi.yaml.
+ // Setting `laravel.add_routes` to true (above) will also add a route for the spec.
+ 'openapi' => [
+ 'enabled' => true,
+
+ 'overrides' => [
+ // 'info.version' => '2.0.0',
+ ],
+ ],
+
+ 'groups' => [
+ // Endpoints which don't have a @group will be placed in this default group.
+ 'default' => 'Endpoints',
+
+ // By default, Scribe will sort groups alphabetically, and endpoints in the order their routes are defined.
+ // You can override this by listing the groups, subgroups and endpoints here in the order you want them.
+ // See https://scribe.knuckles.wtf/blog/laravel-v4#easier-sorting and https://scribe.knuckles.wtf/laravel/reference/config#order for details
+ 'order' => [],
+ ],
+
+ // Custom logo path. This will be used as the value of the src attribute for the tag,
+ // so make sure it points to an accessible URL or path. Set to false to not use a logo.
+ // For example, if your logo is in public/img:
+ // - 'logo' => '../img/logo.png' // for `static` type (output folder is public/docs)
+ // - 'logo' => 'img/logo.png' // for `laravel` type
+ 'logo' => false,
+
+ // Customize the "Last updated" value displayed in the docs by specifying tokens and formats.
+ // Examples:
+ // - {date:F j Y} => March 28, 2022
+ // - {git:short} => Short hash of the last Git commit
+ // Available tokens are `{date:}` and `{git:}`.
+ // The format you pass to `date` will be passed to PHP's `date()` function.
+ // The format you pass to `git` can be either "short" or "long".
+ 'last_updated' => 'Last updated: {date:F j, Y}',
+
+ 'examples' => [
+ // Set this to any number (eg. 1234) to generate the same example values for parameters on each run,
+ 'faker_seed' => null,
+
+ // With API resources and transformers, Scribe tries to generate example models to use in your API responses.
+ // By default, Scribe will try the model's factory, and if that fails, try fetching the first from the database.
+ // You can reorder or remove strategies here.
+ 'models_source' => ['factoryCreate', 'factoryMake', 'databaseFirst'],
+ ],
+
+ // The strategies Scribe will use to extract information about your routes at each stage.
+ // If you create or install a custom strategy, add it here.
+ 'strategies' => [
+ 'metadata' => [
+ Strategies\Metadata\GetFromDocBlocks::class,
+ Strategies\Metadata\GetFromMetadataAttributes::class,
+ ],
+ 'urlParameters' => [
+ Strategies\UrlParameters\GetFromLaravelAPI::class,
+ Strategies\UrlParameters\GetFromUrlParamAttribute::class,
+ Strategies\UrlParameters\GetFromUrlParamTag::class,
+ ],
+ 'queryParameters' => [
+ Strategies\QueryParameters\GetFromFormRequest::class,
+ Strategies\QueryParameters\GetFromInlineValidator::class,
+ Strategies\QueryParameters\GetFromQueryParamAttribute::class,
+ Strategies\QueryParameters\GetFromQueryParamTag::class,
+ ],
+ 'headers' => [
+ Strategies\Headers\GetFromHeaderAttribute::class,
+ Strategies\Headers\GetFromHeaderTag::class,
+ [
+ 'override',
+ [
+ 'Content-Type' => 'application/json',
+ 'Accept' => 'application/json',
+ ]
+ ]
+ ],
+ 'bodyParameters' => [
+ Strategies\BodyParameters\GetFromFormRequest::class,
+ Strategies\BodyParameters\GetFromInlineValidator::class,
+ Strategies\BodyParameters\GetFromBodyParamAttribute::class,
+ Strategies\BodyParameters\GetFromBodyParamTag::class,
+ ],
+ 'responses' => [
+ Strategies\Responses\UseResponseAttributes::class,
+ Strategies\Responses\UseTransformerTags::class,
+ Strategies\Responses\UseApiResourceTags::class,
+ Strategies\Responses\UseResponseTag::class,
+ Strategies\Responses\UseResponseFileTag::class,
+ [
+ Strategies\Responses\ResponseCalls::class,
+ ['only' => ['GET *']]
+ ]
+ ],
+ 'responseFields' => [
+ Strategies\ResponseFields\GetFromResponseFieldAttribute::class,
+ Strategies\ResponseFields\GetFromResponseFieldTag::class,
+ ],
+ ],
+
+ // For response calls, API resource responses and transformer responses,
+ // Scribe will try to start database transactions, so no changes are persisted to your database.
+ // Tell Scribe which connections should be transacted here. If you only use one db connection, you can leave this as is.
+ 'database_connections_to_transact' => [config('database.default')],
+
+ 'fractal' => [
+ // If you are using a custom serializer with league/fractal, you can specify it here.
+ 'serializer' => null,
+ ],
+
+ 'routeMatcher' => \Knuckles\Scribe\Matching\RouteMatcher::class,
+];