class IntegrationSpecificationHandler {

    @GET
    @Operation(description = "Responds with specification that defines this integration")
    @ApiResponse(responseCode = "404", description = "No specification resource defines this integration")
    @ApiResponse(responseCode = "204", description = "Empty specification provided when definining this integration")
    @ApiResponse(responseCode = "200", description = "Specification resource follows", headers = {
        @Header(name = "Content-Type", description = "The content type of the specification, e.g. `application/vnd.oai.openapi+json`"),
        @Header(name = "Content-Disposition", description = "Contains the `filename` parameter")
    })
    public Response
        fetch(@NotNull @PathParam("id") @Parameter(required = true, example = "integration-id", description = "The ID of the integration") final String id) {
        final Integration integration = integrationHandler.getIntegration(id);

        return ApiGeneratorHelper.specificationFrom(resourceManager, integration)
            .map(IntegrationSpecificationHandler::createResponseFrom)
            .orElse(NOT_FOUND);
    }

    public  IntegrationSpecificationHandler(final IntegrationHandler integrationHandler, final IntegrationResourceManager resourceManager);

}