WaiverDB APIs
*************

WavierDB offers a HTTP REST API.


REST API
========

POST /api/v1.0/waivers/

   Create a new waiver.

   **Sample request**:

      POST /api/v1.0/waivers/ HTTP/1.1
      Host: localhost:5004
      Accept-Encoding: gzip, deflate
      Accept: application/json
      Connection: keep-alive
      User-Agent: HTTPie/0.9.4
      Content-Type: application/json
      Content-Length: 91

      {
          "result_id": "1",
          "waived": "false",
          "product_version": "Parrot",
          "comment": "It's dead!"
      }

   **Sample response**:

      HTTP/1.0 201 CREATED
      Content-Length: 228
      Content-Type: application/json
      Date: Thu, 16 Mar 2017 17:42:04 GMT
      Server: Werkzeug/0.12.1 Python/2.7.13

      {
          "comment": "It's dead!",
          "id": 15,
          "product_version": "Parrot",
          "result_id": "1",
          "timestamp": "2017-03-16T17:42:04.209638",
          "username": "http://jcline.id.fedoraproject.org/",
          "waived": "false"
      }

   JSON Parameters:
      * **result_id** (*int*) -- The result ID for the waiver.

      * **waived** (*boolean*) -- Whether or not the result is
        waived.

      * **product_version** (*string*) -- The product version
        string.

      * **comment** (*string*) -- A comment explaining the waiver.

   Status Codes:
      * 201 Created -- The waiver was successfully created.

GET /api/v1.0/waivers/

   Get waiver records.

   **Sample request**:

      GET /api/v1.0/waivers/ HTTP/1.1
      Host: localhost:5004
      User-Agent: curl/7.51.0
      Accept: application/json

   **Sample response**:

      HTTP/1.1 200 OK
      Content-Type: application/json
      Content-Length: 184
      Server: Werkzeug/0.12.1 Python/2.7.13
      Date: Thu, 16 Mar 2017 13:53:14 GMT

      {
          "data": [],
          "first": "http://localhost:5004/api/v1.0/waivers/?page=1",
          "last": "http://localhost:5004/api/v1.0/waivers/?page=0",
          "next": null,
          "prev": null
      }

   Query Parameters:
      * **page** (*int*) -- The page to get.

      * **limit** (*int*) -- Limit the number of items returned.

      * **result_id** (*int*) -- Filter the waivers by result ID.
        Accepts one or more result IDs separated by commas.

      * **product_version** (*string*) -- Filter the waivers by
        product version.

      * **username** (*string*) -- Filter the waivers by username.

      * **since** (*string*) -- A ISO 8601 formatted datetime (e.g.
        2017-03-16T13:40:05+00:00) to filter results by. Optionally
        provide a second ISO 8601 datetime separated by a comma to
        retrieve a range (e.g. 2017-03-16T13:40:05+00:00,
        2017-03-16T13:40:15+00:00)

      * **include_obsolete** (*boolean*) -- If true, obsolete
        waivers will be included.

   Status Codes:
      * 200 OK -- If the query was valid and no problems were
        encountered. Note that the response may still contain 0
        waivers.

      * 400 Bad Request -- The request was malformed and could not
        be processed.

GET /api/v1.0/waivers/(int: waiver_id)

   Get a single waiver by waiver ID.

   Parameters:
      * **waiver_id** (*int*) -- The waiver's database ID.

   Status Codes:
      * 200 OK -- The waiver was found and returned.

      * 404 Not Found -- No waiver exists with that ID.

GET /healthcheck

   Request handler for performing an application-level health check.
   This is not part of the published API, it is intended for use by
   OpenShift or other monitoring tools.

   Returns a 200 response if the application is alive and able to
   serve requests.
