package de.saxsys.projectiler.ws.rest;
import de.saxsys.projectiler.ws.rest.dto.AddTimebitResponse;
import de.saxsys.projectiler.ws.rest.dto.GetTimebitResponse;
import de.saxsys.projectiler.ws.rest.dto.JobsResponse;
import de.saxsys.projectiler.ws.rest.dto.LoginCredentials;
import de.saxsys.projectiler.ws.rest.dto.Timebit;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
/**
* Retrofit definition of the Projectile REST API.
*
* @author stefan.bley
*/
public interface ProjectileRestApi {
/**
* Authenticate with credentials to get a authentication token.
*
* @param body credentials
* @return JWT token
*/
@Headers("Accept: text/plain")
@POST("token/0")
Call<String> getToken(@Body LoginCredentials body);
@Headers("Accept: application/json")
@GET("api/json/0/jobs?bsmExtraFields=project_caption")
Call<JobsResponse> getJobs();
@Headers("Accept: application/json")
@GET("api/json/0/jobs/{id}?bsmExtraFields=project_caption")
Call<JobsResponse> getJob(@Path("id") String jobId);
@Headers({"Accept: application/json", "Content-Type: application/json" })
@POST("api/json/0/timebits")
Call<AddTimebitResponse> addTimebit(@Body Timebit timebit);
@Headers("Accept: application/json")
@GET("api/json/0/timebits?showMine=true")
Call<GetTimebitResponse> getTimebits(@Query("startDate") String startDate,
@Query("endDate") String endDate);
}