### Description

We've been working on the health API for a while and the breaking changes have slowed to the point where we can promote the API away from the `/_internal` categorization.
qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/HealthRestCancellationIT.java
assertThat(blocks, not(empty()));
        final List<Releasable> releasables = new ArrayList<>();
        try {
            for (final Semaphore operationBlock : blocks) {
                operationBlock.acquire();
                releasables.add(operationBlock::release);
            }
            final PlainActionFuture<Response> future = new PlainActionFuture<>();
            logger.info("--> sending request");
            final Cancellable cancellable = getRestClient().performRequestAsync(request, wrapAsRestResponseListener(future));
            awaitTaskWithPrefix(GetHealthAction.NAME);
            logger.info("--> waiting for at least one task to hit a block");
            assertBusy(() -> assertTrue(blocks.stream().anyMatch(Semaphore::hasQueuedThreads)));
            logger.info("--> cancelling request");
            cancellable.cancel();
            expectThrows(CancellationException.class, future::actionGet);
            assertAllCancellableTasksAreCancelled(GetHealthAction.NAME);
        } finally {
            Releasables.close(releasables);
        }
        assertAllTasksHaveFinished(GetHealthAction.NAME);
    }
    public static class BlockingHealthPlugin extends Plugin implements HealthPlugin {
        final Semaphore operationBlock = new Semaphore(1);
        @Override
        public Collection<HealthIndicatorService> getHealthIndicatorServices() {
            return List.of(new BlockingHealthIndicator(operationBlock));
        }
    }
    private static class BlockingHealthIndicator implements HealthIndicatorService {