Verified against Semitexa Ultimate 2026.09.19.1020

Api attributes

Every attribute declared by Api, with the signature the code has and a usage quoted from the codebase.

#[ApiVersion]

Semitexa\Api\Attribute\ApiVersion

Applies to: class

parameter type required
version string yes
deprecatedSince string no
sunsetDate string no
#[ApiVersion(version: '1.0.0')]
final class ProductDetailPayload

— vendor/semitexa/demo/resources/examples/Api/Rest/ProductDetailPayload.example.php

#[CollectionFilterOptions]

Semitexa\Api\Attribute\CollectionFilterOptions

Applies to: class

parameter type required
fields array yes
#[CollectionFilterOptions(['name'])]
#[CollectionPaginated(mode: 'auto', defaultPerPage: 5, perPageOptions: [5, 10, 25], maxPerPage: 25, countThreshold: 10)]
final class AutoModeCollectionResponse

— vendor/semitexa/api/tests/Fixtures/Collection/AutoModeCollectionResponse.php

#[CollectionFilterable]

Semitexa\Api\Attribute\CollectionFilterable

Applies to: class

parameter type required
fields array yes
#[CollectionFilterable(['name' => ['eq', 'contains'], 'id' => ['eq', 'in']])]
#[CollectionSearchable(fields: ['name'])]
#[CollectionFilterOptions(['name'])]
#[CollectionPaginated(mode: 'auto', defaultPerPage: 5, perPageOptions: [5, 10, 25], maxPerPage: 25, countThreshold: 10)]
final class AutoModeCollectionResponse

— vendor/semitexa/api/tests/Fixtures/Collection/AutoModeCollectionResponse.php

#[CollectionPaginated]

Semitexa\Api\Attribute\CollectionPaginated

Applies to: class

parameter type required
mode string no
defaultPerPage int no
perPageOptions array no
maxPerPage int no
countThreshold int no
#[CollectionPaginated(mode: 'auto', defaultPerPage: 5, perPageOptions: [5, 10, 25], maxPerPage: 25, countThreshold: 10)]
final class AutoModeCollectionResponse

— vendor/semitexa/api/tests/Fixtures/Collection/AutoModeCollectionResponse.php

#[CollectionSearchable]

Semitexa\Api\Attribute\CollectionSearchable

Applies to: class

parameter type required
fields array yes
param string no
#[CollectionSearchable(fields: ['name'])]
#[CollectionFilterOptions(['name'])]
#[CollectionPaginated(mode: 'auto', defaultPerPage: 5, perPageOptions: [5, 10, 25], maxPerPage: 25, countThreshold: 10)]
final class AutoModeCollectionResponse

— vendor/semitexa/api/tests/Fixtures/Collection/AutoModeCollectionResponse.php

#[CollectionSortable]

Semitexa\Api\Attribute\CollectionSortable

Applies to: class

parameter type required
fields array yes
#[CollectionSortable(['name', 'id'])]
#[CollectionFilterable(['name' => ['eq', 'contains'], 'id' => ['eq', 'in']])]
#[CollectionSearchable(fields: ['name'])]
#[CollectionFilterOptions(['name'])]
#[CollectionPaginated(mode: 'auto', defaultPerPage: 5, perPageOptions: [5, 10, 25], maxPerPage: 25, countThreshold: 10)]
final class AutoModeCollectionResponse

— vendor/semitexa/api/tests/Fixtures/Collection/AutoModeCollectionResponse.php

#[ExternalApi]

Semitexa\Api\Attribute\ExternalApi

Applies to: class

parameter type required
version string no
description string no
#[ExternalApi]
#[AsPublicPayload(
    path: '/api/demo/errors/{scenario}',
    methods: ['GET'],
    responseWith: ErrorEnvelopeResource::class,
    produces: ['application/json'],
)]
final class ApiErrorTriggerPayload

— vendor/semitexa/demo/resources/examples/Api/Errors/ApiErrorTriggerPayload.example.php

#[ProducesResourceCollection]

Semitexa\Api\Attribute\ProducesResourceCollection

Applies to: class

parameter type required
resourceClass string yes
description string no
#[ProducesResourceCollection(CustomerResource::class)]
#[CollectionSortable(['name', 'id'])]
#[CollectionFilterable(['name' => ['eq', 'contains'], 'id' => ['eq', 'in']])]
#[CollectionSearchable(fields: ['name'])]
#[CollectionFilterOptions(['name'])]
#[CollectionPaginated(mode: 'auto', defaultPerPage: 5, perPageOptions: [5, 10, 25], maxPerPage: 25, countThreshold: 10)]
final class AutoModeCollectionResponse

— vendor/semitexa/api/tests/Fixtures/Collection/AutoModeCollectionResponse.php

#[ProducesResourceObject]

Semitexa\Api\Attribute\ProducesResourceObject

Applies to: class

parameter type required
resourceClass string yes
description string no
#[ProducesResourceObject(CustomerResource::class, description: 'GraphQL view of a customer.')]
final class CustomerGraphqlResponse

— vendor/semitexa/api/tests/Fixtures/Customer/CustomerGraphqlResponse.php