Skip to main content

URL parameters

Scribe automatically extracts details about your URL parameters from your routes. It can figure out the names, required/optional status and sometimes the types of your parameters. However, you can overwrite this information or add new details, such as a description, using the @urlParam annotation.

tip

Scribe can figure out a few details about ID parameters in URLs. For example, if you have a route like /users/{id}, /users/{user}, /{user_id}, Scribe will guess the parameter name (id/user_id), type (type of your User model's primary key), and description ("The ID of the user."). Of course, you can use @urlParam to override these.

The annotation takes the name of the parameter, an optional type (defaults to "string"), an optional "required" label, and an optional description. Valid types are string, integer, and number. For instance, if you defined your Laravel route like this:

Route::get("/post/{id}/{lang?}");

you can describe the id and lang parameters like this:

/**
* @urlParam id integer required The ID of the post.
* @urlParam lang The language. Example: en
*/
public function getPost()
{
// ...
}

Scribe will generate a random example by default, but you can specify your own value in examples and response calls by ending the description with Example: <your-example>, as we did for the lang parameter above.

This gives:

If you want Scribe to omit a certain optional parameter (lang in our example) in examples and response calls, end the description with No-example. It will still be present in the docs.

/**
* @urlParam id required The ID of the post.
* @urlParam lang The language. No-example
*/