``sandman`` "makes things REST". Have an existing database you'd like toexpose via a REST API? Normally, you'd have to write a ton ofboilerplate code for the ORM you're using, then integrate that into someweb framework.

I don't want to write boilerplate.

Here's what's required to create a RESTful API service from an existingdatabase using ``sandman``:

All of that, including filtering/searching, is automagically availablefrom those *five* measly lines of code.

Oh, that's not enough? You also want a Django-style admin interfacebuilt automatically? Fine. You may have noticed that when you ran``runserver.py`` that a browser window popped up. Now's the time to gocheck that out. You'll find it's that Django-style admin interfaceyou've been bugging me about, looking something like this:

``sandman`` is under active development but should be usable in anyenvironment due to one simple fact:

**``sandman`` never alters your database unless you add or change arecord yourself. It adds no extra tables to your existing database andrequires no changes to any of your existing tables. If you start``sandman``, use it to browse your database via cURL, then stop``sandman``, your database will be in exactly the same state as it wasbefore you began.**

Installation~~~~~~~~~~~~

``pip install sandman``

Example Application~~~~~~~~~~~~~~~~~~~

Take a look in the ``sandman/test`` directory. The application foundthere makes use of the `Chinook <http: chinookdatabase.codeplex.com="">`__sample SQL database.

Contact Me----------

Questions or comments about ``sandman``? Hit me up atjeff@jeffknupp.com.

|Bitdeli Badge|

Changelog=========

Version 0.9.3-------------

- Authentication supported!

- Entire API and admin can be protected by HTTP Basic Auth. See the docs for more details.

- ETAGs

- Resources return the proper ETAG header and should reply with a 304 after the first request. This greatly improves the throughput and performance of the API.

Version 0.9.2-------------

- The ``meta`` endpoint

- All resources now have a ``/<resource>/meta`` endpoint that describes the types of each of their fields (both in HTML and JSON)

- The root endpoint

- A "root" endpoint (``/``) has been created. It lists all resources registered in the application and includes URLs to their various endpoints. This allows a "dumb" client to navigate the API without knowing URLs beforehand.

Version 0.9.1-------------

- Python 3 support!

- ``sandman`` tests now pass for both 2.7 and 3.4! Python 3.4 is officially supported.

Version 0.8.1-------------

New Feature~~~~~~~~~~~

- ``Link`` header now set to a resource's links

- Links to related objects now user a proper ``rel`` value: ``related`` - The link to the current resource still uses the ``self`` ``rel`` value - Links are specified both in the header (as per RFC5988) and in the resource itself

- Pagination added for JSON (and number of results per page being returned is fixed)- Nested JSON models no longer the default; hitting a URL with the argument "expand" will show one level of nested resources

- This conforms more closely to REST principles while not sacrificing the functionality.