From 010ebaa02203579fb0d74794dc63a437c5c755a0 Mon Sep 17 00:00:00 2001 From: Mark Santos <24554186+markksantos@users.noreply.github.com> Date: Thu, 29 Oct 2026 08:54:24 -0400 Subject: [PATCH] docs: fix dead links --- .github/ISSUE_TEMPLATE/1_Support_question.md | 4 ++-- admin/advanced-customization.md | 2 +- core/content-negotiation.md | 2 +- core/deprecations.md | 2 +- core/external-vocabularies.md | 2 +- core/graphql.md | 4 ++-- core/json-schema.md | 3 +-- core/mongodb.md | 2 +- core/openapi.md | 4 ++-- core/performance.md | 8 ++++---- core/serialization.md | 4 ++-- core/upgrade-guide.md | 6 +++--- extra/philosophy.md | 2 +- laravel/testing.md | 7 ++++--- schema-generator/configuration.md | 3 ++- symfony/index.md | 4 ++-- symfony/migrate-from-fosrestbundle.md | 2 +- symfony/validation.md | 4 ++-- 18 files changed, 33 insertions(+), 32 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/1_Support_question.md b/.github/ISSUE_TEMPLATE/1_Support_question.md index 2ef79d289ef..f1f78dfc90e 100644 --- a/.github/ISSUE_TEMPLATE/1_Support_question.md +++ b/.github/ISSUE_TEMPLATE/1_Support_question.md @@ -1,12 +1,12 @@ --- name: ⛔ Support Question -about: See https://api-platform.com/support/ for questions about using API Platform +about: See https://api-platform.com/community/ for questions about using API Platform --- # Support question We use GitHub issues only to discuss bugs and new features. For this kind of questions about using API Platform, please use any of the support alternatives shown in -[API Platform support](https://api-platform.com/support/). +[API Platform support](https://api-platform.com/community/). Thanks! diff --git a/admin/advanced-customization.md b/admin/advanced-customization.md index 61db70c7ae2..fbac7daba24 100644 --- a/admin/advanced-customization.md +++ b/admin/advanced-customization.md @@ -536,7 +536,7 @@ backend agnostic, fully customizable solutions to common Admin requirements. Here are some examples, from the simplest to the most complete solutions: -- [PrevNextButton](https://marmelab.com/react-admin/PrevNextButton.html) +- [PrevNextButtons](https://marmelab.com/react-admin/PrevNextButtons.html) - [MenuLive](https://marmelab.com/react-admin/MenuLive.html) - [FilterList](https://marmelab.com/react-admin/FilterList.html) - [RevisionsButton](https://marmelab.com/react-admin/RevisionsButton.html) diff --git a/core/content-negotiation.md b/core/content-negotiation.md index f4286b05554..6780bf5dd06 100644 --- a/core/content-negotiation.md +++ b/core/content-negotiation.md @@ -45,7 +45,7 @@ defined in the `formats` configuration key (see below). If the request format is returned. Examples showcasing how to use the different mechanisms are available -[in the API Platform test suite](https://github.com/api-platform/core/blob/main/features/main/content_negotiation.feature). +[in the API Platform test suite](https://github.com/api-platform/core/blob/main/tests/Functional/ContentNegotiationTest.php). ## Configuring Formats Globally diff --git a/core/deprecations.md b/core/deprecations.md index 313438a1885..340fbe24d30 100644 --- a/core/deprecations.md +++ b/core/deprecations.md @@ -115,7 +115,7 @@ properties: [a `deprecated` property](https://swagger.io/docs/specification/2-0/paths-and-operations/) will be added - With GraphQL, the - [`isDeprecated` and `deprecationReason` properties](https://facebook.github.io/graphql/June2018/#sec-Deprecation) + [`isDeprecated` and `deprecationReason` properties](https://spec.graphql.org/June2018/#sec-Deprecation) will be added to the schema ## Setting the `Sunset` HTTP Header to Indicate When a Resource or an Operation Will Be Removed diff --git a/core/external-vocabularies.md b/core/external-vocabularies.md index 5590013c312..0499dc976db 100644 --- a/core/external-vocabularies.md +++ b/core/external-vocabularies.md @@ -54,7 +54,7 @@ according to the specified attributes: ``` An extended list of existing open vocabularies is available on -[the Linked Open Vocabularies (LOV) database](https://lov.linkeddata.es/dataset/lov/). +[the Linked Open Vocabularies (LOV) database](https://lov.linkeddata.es/dataset/lov/vocabs). By default, when using [validations](validation.md) API Platform will try to define known [Schema.org](https://schema.org) types as IRIs for your properties if you did not provide any in diff --git a/core/graphql.md b/core/graphql.md index 6194fcdc658..481cdafe427 100644 --- a/core/graphql.md +++ b/core/graphql.md @@ -669,7 +669,7 @@ Note also that: - If you have added your [own custom types](#custom-types), you can use them directly for your arguments types (it's the case here for `DateTime`). - You can also add a custom description for your custom arguments. You can see the - [field arguments documentation](https://webonyx.github.io/graphql-php/type-system/object-types/#field-arguments) + [field arguments documentation](https://webonyx.github.io/graphql-php/type-definitions/object-types/#field-argument-configuration-options) for more options. The arguments you have defined or the default ones and their value will be in `$context['args']` of @@ -798,7 +798,7 @@ The arguments will be in `$context['args']['input']` of your resolvers. ## Subscriptions Subscriptions are an -[RFC](https://github.com/graphql/graphql-spec/blob/master/rfcs/Subscriptions.md#rfc-graphql-subscriptions) +[RFC](https://github.com/graphql/graphql-wg/blob/main/rfcs/Subscriptions.md#rfc-graphql-subscriptions) to allow a client to receive pushed realtime data from the server. In API Platform, the built-in subscription support is handled by using diff --git a/core/json-schema.md b/core/json-schema.md index c90cd12ca33..6d26053de7c 100644 --- a/core/json-schema.md +++ b/core/json-schema.md @@ -6,8 +6,7 @@ documents. A variant of JSON Schema is also used [in OpenAPI specifications](ope API Platform provides an infrastructure to generate JSON Schemas for any resource, represented in any format (including JSON-LD). The generated schema can be used with libraries such as [react-json-schema-form](https://github.com/rjsf-team/react-jsonschema-form) to build forms for the -documented resources, or to -[be used for validation](https://json-schema.org/implementations.html#validators). +documented resources, or to [be used for validation](https://json-schema.org/tools). ## Generating a JSON Schema diff --git a/core/mongodb.md b/core/mongodb.md index db56b3a4914..f53cc121f36 100644 --- a/core/mongodb.md +++ b/core/mongodb.md @@ -15,7 +15,7 @@ particular its to leverage all the possibilities of the database. Doctrine MongoDB ODM 2 relies on the [mongodb](https://secure.php.net/manual/en/set.mongodb.php) PHP -extension and not on the legacy [mongo](https://secure.php.net/manual/en/book.mongo.php) extension. +extension and not on the legacy [mongo](https://pecl.php.net/package/mongo) extension. ## Enabling MongoDB Support diff --git a/core/openapi.md b/core/openapi.md index 1def1c2c742..c4d5903295f 100644 --- a/core/openapi.md +++ b/core/openapi.md @@ -12,7 +12,7 @@ yet support v3.2.0, you can ask for the legacy v3.0.0 format instead thanks to t query parameter: `/docs.jsonopenapi?spec_version=3.0.0` It also integrates a customized version of [Swagger UI](https://swagger.io/swagger-ui/), -[ReDoc](https://rebilly.github.io/ReDoc/) and +[ReDoc](https://redocly.github.io/redoc/) and [Scalar API Reference](https://github.com/scalar/scalar), some nice tools to display the API documentation in a user friendly way. @@ -614,7 +614,7 @@ resources: ## Choosing Between Swagger UI, ReDoc and Scalar When the HTML format is served, API Platform can render three different documentation UIs: -[Swagger UI](https://swagger.io/swagger-ui/), [ReDoc](https://rebilly.github.io/ReDoc/) and +[Swagger UI](https://swagger.io/swagger-ui/), [ReDoc](https://redocly.github.io/redoc/) and [Scalar API Reference](https://github.com/scalar/scalar). All three are backed by the same documentation route (`/docs` by default) and the same generated OpenAPI document; which one is rendered is chosen with the `ui` query parameter, for instance: diff --git a/core/performance.md b/core/performance.md index b86b658eccf..32947d9b323 100644 --- a/core/performance.md +++ b/core/performance.md @@ -3,9 +3,9 @@ ## Enabling the Built-in HTTP Cache Invalidation System Exposing a hypermedia API has -[many advantages](http://blog.theamazingrando.com/in-band-vs-out-of-band.html). One is the ability -to know exactly which resources are included in HTTP responses created by the API. We used this -specificity to make API Platform apps blazing fast. +[many advantages](https://blog.theamazingrando.com/posts/in-band-vs-out-of-band.html). One is the +ability to know exactly which resources are included in HTTP responses created by the API. We used +this specificity to make API Platform apps blazing fast. When the cache mechanism [is enabled](configuration.md), API Platform collects identifiers of every resource included in a given HTTP response (including lists, embedded documents, and subresources) @@ -547,7 +547,7 @@ the Symfony Serializer) before sending it. For large payloads this is costly bot time to first byte. API Platform can instead use the -[Symfony JsonStreamer](https://symfony.com/doc/current/components/json_streamer.html) component to +[Symfony JsonStreamer](https://symfony.com/doc/current/serializer/streaming_json.html) component to stream the response. JsonStreamer generates optimized, ahead-of-time-compiled encoders from the typed properties of your resources and writes the JSON directly to a `StreamedResponse`, without holding the full output in memory. diff --git a/core/serialization.md b/core/serialization.md index b168ffcce68..4fda2b5c8cd 100644 --- a/core/serialization.md +++ b/core/serialization.md @@ -214,9 +214,9 @@ will also be available to write (`PUT` / `PATCH` / `POST`). The `author` propert write-only; it will not be visible when serialized responses are returned by the API. Internally, API Platform passes the value of the `normalizationContext` as the 3rd argument of -[the `Serializer::serialize()` method](https://api.symfony.com/master/Symfony/Component/Serializer/SerializerInterface.html#method_serialize) +[the `Serializer::serialize()` method](https://github.com/symfony/symfony/blob/7.4/src/Symfony/Component/Serializer/SerializerInterface.php) during the normalization process. `denormalizationContext` is passed as the 4th argument of -[the `Serializer::deserialize()` method](https://api.symfony.com/master/Symfony/Component/Serializer/SerializerInterface.html#method_deserialize) +[the `Serializer::deserialize()` method](https://github.com/symfony/symfony/blob/7.4/src/Symfony/Component/Serializer/SerializerInterface.php) during denormalization (writing). To configure the serialization groups of classes's properties, you must use directly diff --git a/core/upgrade-guide.md b/core/upgrade-guide.md index 6fbe1979841..3533f8df50a 100644 --- a/core/upgrade-guide.md +++ b/core/upgrade-guide.md @@ -27,9 +27,9 @@ public Status $status; ``` Alternatively, enable Symfony Validator's -[auto-mapping](https://symfony.com/doc/current/validation/auto_mapping.html) on the resource class. -Auto-mapping generates an implicit `Type` constraint from the PHP type declaration, which is -sufficient for the 422 promotion to apply. +[auto-mapping](https://symfony.com/doc/current/reference/constraints/EnableAutoMapping.html) on the +resource class. Auto-mapping generates an implicit `Type` constraint from the PHP type declaration, +which is sufficient for the 422 promotion to apply. **What to do (Laravel)**: add a rule for the property in `rules`: diff --git a/extra/philosophy.md b/extra/philosophy.md index a48f4036cd6..07314889a20 100644 --- a/extra/philosophy.md +++ b/extra/philosophy.md @@ -21,7 +21,7 @@ In 25 years of PHP, the web changed dramatically and is now evolving faster than [PHP.net](https://www.php.net), [Symfony](https://symfony.com), [Facebook](https://hhvm.com/) and many others have worked hard to improve and professionalize the PHP ecosystem. The PHP world has closed the gap with most backend solutions and is often [more innovative](https://wiki.php.net/rfc) -and [faster](https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/php-python3.html) +and [faster](https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/python3-php.html) than them. However in critical areas I've described previously, many things can be improved. Almost all diff --git a/laravel/testing.md b/laravel/testing.md index 5e6e3d45500..84c61ba6c5e 100644 --- a/laravel/testing.md +++ b/laravel/testing.md @@ -476,7 +476,8 @@ The API Platform Demo You may also be interested in these alternative testing tools (not included by default): -- [Hoppscotch](https://docs.hoppscotch.io/features/tests), create functional test for your API +- [Hoppscotch](https://docs.hoppscotch.io/documentation/features/scripts), create functional test + for your API - [Behat](https://behat.org), a [behavior-driven development (BDD)](https://en.wikipedia.org/wiki/Behavior-driven_development) framework to write the API specification as user stories and in natural language then execute @@ -487,8 +488,8 @@ You may also be interested in these alternative testing tools (not included by d ### API Test Assertions with Laravel -In addition to [the built-in ones](https://phpunit.readthedocs.io/en/main/assertions.html), API -Platform provides convenient PHPUnit assertions dedicated to API testing: +In addition to [the built-in ones](https://docs.phpunit.de/en/11.5/assertions.html), API Platform +provides convenient PHPUnit assertions dedicated to API testing: ```php Validation screencast
Watch the Validation screencast

@@ -826,7 +826,7 @@ If `year` had no validator constraint at all, both requests would receive HTTP 4 ### Tip: use Symfony Validator auto-mapping When -[`framework.validation.auto_mapping`](https://symfony.com/doc/current/validation/auto_mapping.html) +[`framework.validation.auto_mapping`](https://symfony.com/doc/current/reference/configuration/framework.html#reference-validation-auto-mapping) is enabled, Symfony Validator derives implicit constraints directly from PHP type declarations — `string`, `int`, `float`, nullability, `BackedEnum` cases, and more. Every property with a PHP type then effectively has a `Type` constraint without any manual annotation.