private HttpResponse suspend(RestApi.RequestContext context, String applicationIdString) {
        ApplicationId applicationId = toApplicationId(applicationIdString);
        try {
            orchestrator.suspend(applicationId);
        } catch (ApplicationIdNotFoundException e) {
            log.log(Level.INFO, "ApplicationId " + applicationIdString + " not found.", e);
            throw new RestApiException.NotFound(e);
        } catch (ApplicationStateChangeDeniedException e) {
            log.log(Level.INFO, "Suspend for " + applicationIdString + " failed.", e);
            throw new RestApiException.Conflict();
        } catch (RuntimeException e) {
            log.log(Level.INFO, "Suspend for " + applicationIdString + " failed from unknown reasons", e);
            throw new RestApiException.InternalServerError(e);
        }
        return new EmptyResponse(Status.NO_CONTENT);
    }
Ask for permission to temporarily suspend all services for an application instance.

On success all content nodes for this application instance have been set in maintenance mode.

Once the application is ready to resume normal operations, it must finish with resume() (see below).

If the application has already been granted permission to suspend all services, requesting
suspension again is idempotent and will succeed.

HTTP Behavior:
204 is the suspend operation was successful
400 if the applicationId is invalid
409 if the suspend was denied
orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/ApplicationSuspensionRequestHandler.java