Skip to main content
While Geni infers most schemas automatically through static analysis, PHP 8 native attributes give you fine-grained control over specific endpoint behaviors — letting you override inferred values, fill in gaps, or explicitly define responses and parameters that cannot be detected from source code alone. All attributes live under the Geni\Laravel\Attributes\* namespace and are applied directly to controller classes, methods, or Form Request classes.
If you are migrating from Scramble, Geni supports identical attribute names and parameters. Simply update your use statements from Dedoc\Scramble\Attributes\* to Geni\Laravel\Attributes\* — no other changes are required.

Endpoint Metadata

Use #[Endpoint], #[Group], and #[Hidden] to control how operations and controllers appear in your generated documentation. Apply #[Group] at the class level to tag all routes in a controller together, #[Endpoint] on individual methods to set a human-readable title and description, and #[Hidden] to exclude an operation entirely.

Parameter Documentation

Use #[QueryParameter], #[PathParameter], and #[HeaderParameter] to explicitly document or override parameters that Geni cannot fully infer — for example, optional query filters, custom headers, or path segments resolved outside of route model binding.

Response Overrides

Use #[Response] to explicitly define or override HTTP response schemas when Geni’s inference is incomplete or when you need to document multiple response codes on the same endpoint. Stack multiple #[Response] attributes on a single method to cover every status code your endpoint can return.

Body Parameter Overrides

Use #[BodyParameter] on a Form Request’s rules() method to attach descriptions or example values to individual request body fields. This is particularly useful when your validation rules alone do not convey enough context for API consumers.

Attribute Reference

The table below lists every attribute Geni supports, where you can apply it, and what it controls in the generated OpenAPI output.