ApiEntryPointController.java

package org.entando.kubernetes.controller;

import static org.springframework.hateoas.MediaTypes.HAL_JSON_VALUE;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;

import java.util.Collections;
import org.springframework.hateoas.CollectionModel;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ApiEntryPointController {

    @GetMapping(value = "/", produces = {APPLICATION_JSON_VALUE, HAL_JSON_VALUE})
    public ResponseEntity<CollectionModel<Object>> root() {
        CollectionModel<Object> cm = new CollectionModel<>(Collections.emptyList());
        cm.add(linkTo(methodOn(EntandoAppController.class).list()).withRel("apps"));
        cm.add(linkTo(methodOn(EntandoPluginController.class).list()).withRel("plugins"));
        cm.add(linkTo(methodOn(EntandoDeBundleController.class).list(null)).withRel("bundles"));
        cm.add(linkTo(methodOn(EntandoLinksController.class).list()).withRel("app-plugin-links"));
        cm.add(linkTo(methodOn(ObservedNamespaceController.class).list()).withRel("observed-namespaces"));
        return ResponseEntity.ok(cm);
    }

}