= Taskana RESTful API Documentation
taskana.pro;
:doctype: book
:icons: font
:source-highlighter: highlightjs
:toc: left
:toclevels: 4
:sectlinks:

= Overview

[big]#*This Documentation is still under development and probably incomplete and/or flawed in certain areas.*#

== HTTP verbs

The Taskana RESTful API tries to adhere as closely as possible to standard HTTP and REST conventions in its
use of HTTP verbs.

|===
| Verb | Usage

| `GET`
| Used to retrieve a resource

| `POST`
| Used to create a new resource

| `PUT`
| Used to update a resource

| `DELTE`
| Used to delete a existing resource
|===

== HTTP status codes

The Taskana RESTful API tries to adhere as closely as possible to standard HTTP and REST conventions in its
use of HTTP status codes.

|===
| Status code | Usage

| `200 OK`
| The request completed successfully.

| `201 Created`
| The request completed successfully und create the new resource.

| `204 No Content` 
| The request completed successfully and there is no content to send in the response payload.

| `400 Bad Request`
| The request was not performed because of a client error like a invalid parameter.

| `401 Unauthorized`
| The request has not been applied because it lacks valid authentication credentials for the target resource.

| `403 FORBIDDEN`
| The current user <user> has no read permission for <Resource Type> <Resource>.

| `404 Not Found`
| The requested resource did not exist.

| `405 Method not allowed`
| The method used in this request is can not be used on this resource.

| `406` Not acceptable
| Wrong content-type in request header.

| `409 Conflict`
| The resource could not be updatet or created because of a conflict with an existing one.

| `415 Unsupported Media Type`
| The content of the request can't be understood due to being in an unsupported media-type.
|===

== Common Fields

Taskana uses Spring HATEOAS to achive the best possible REST-conformity. +
In HATEOAS every response contains a map named *_links* in which the links for navigation are included. +
If a resource has embedded resources these are found in a map named *_embedded*.

== History event

It is a plugin which can get the history of action performed

=== Get all task history event

==== Example request

include::../../../{snippets}/GetAllTaskHistoryEventDocTest/http-request.adoc[]

==== Example response

include::../../../{snippets}/GetAllTaskHistoryEventDocTest/response-body.adoc[]

=== Get a specific task history event

==== Example request

include::../../../{snippets}/GetSpecificTaskHistoryEventDocTest/http-request.adoc[]

==== Example response

include::../../../{snippets}/GetSpecificTaskHistoryEventDocTest/response-body.adoc[]