package eu.dnetlib.datasource.publisher;

import eu.dnetlib.datasource.publisher.model.*;

import io.swagger.annotations.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiResponse;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Api(value = "datasources", description = "the datasource manager API")
public interface DatasourcesApi {

    @ApiOperation(value = "list identifiers", notes = "List the Datasource identifiers.", response = IdentifiersResponse.class, tags = {  })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = IdentifiersResponse.class),
        @ApiResponse(code = 500, message = "unexpected error", response = Response.class) })
    @RequestMapping(value = "/ds/list",
        produces = { "application/json" }, 
        method = RequestMethod.GET)
    ResponseEntity<IdentifiersResponse> listIds();


    @ApiOperation(value = "get datasource", notes = "Returns Datasource details.", response = DatasourceResponse.class, tags = {  })
    @ApiResponses(value = { 
        @ApiResponse(code = 200, message = "OK", response = DatasourceResponse.class),
        @ApiResponse(code = 500, message = "unexpected error", response = Response.class) })
    @RequestMapping(value = "/ds/get/{id}",
        produces = { "application/json" }, 
        method = RequestMethod.GET)
    ResponseEntity<DatasourceResponse> getDs(@ApiParam(value = "ID of datasource to fetch", required = true) @PathVariable("id") String id);

}
