JSON Validation Search Files Hooks Processing Docs Pricing Contacts
Menu
Deform.io – simple database as a service.
Get Started

JSON

Store and retrieve JSON data.

Read more

# create a document in "users" collection
$ deform document create -d '{"name": "harry"}' -c users

# find documents in "users" collection
$ deform documents find -f '{"name": "harry"}' -c users
{"_id": "574abb7794d5de000511f04b","name": "harry"}

Validation

Validate collection's documents providing JSON schema.

Read more

# create a collection with schema
$ deform collection create -d '{
    "_id": "users",
    "name":"users",
    "schema": {
        "type": "object",
        "properties": {
            "name": {
                "type": "string",
                "required": true
            }
        }
    }
}'

# try to create a user without name
$ deform document create -d '{"age": 10}' -c users
Validation error:
* "name" - name is required
* "age" - Additional property age is not allowed

Search

Perform full-text search over the documents.

Read more

# add the full-text index to the collection
$ deform collection save users -d '{
    "name": "users",
    "indexes": [
        {
            "type": "text",
            "property": "info",
            "language": "en"
        }
    ]
}'

# create a document
$ deform document create -c users -d '{
    "name": "harry",
    "info": "the boy who lived"
}'

# create another document
$ deform document create -c users -d '{
    "name": "sirius",
    "info": "the man who died"
}'

# search for the documents
$ deform documents find -c users --text 'boy which lived'
{
    "_id": "57544cfcaa9cb6000564c50c",
    "name": "harry",
    "info": "the boy who lived"
}

Files

Save, download and serve any files.

Read more

# create a user with avatar
$ deform document create -c users -d '{
    "_id": "harry",
    "name": "harry",
    "avatar": @"/tmp/harry.jpg"
}'

# download user's avatar
$ deform document get-file harry -c users \
  --property avatar > ava.jpg

Hooks

Subscribe to REST hooks.

With deform you can subscribe to any action applied to documents in the collections.

Read more

# subscribe an HTTP hook
$ deform document create -c _hooks -d '{
    "name": "Send every user to request bin",
    "collection": "users",
    "is_active": true,
    "triggers": [
        "created"
    ],
    "method": "POST",
    "url": "http://requestb.in/16g6m6w1"
}'

# create a user
$ deform document create -d '{"name":"harry"}' -c users

Hook request data

POST
http://requestb.in/16g6m6w1

HEADERS

Host: requestb.in
Content-Type: application/json
Accept-Encoding: gzip
Content-Length: 49
X-Hook-Trigger: created
X-Hook-Id: 574ac8e294d5de000511f117
X-Request-Id: 8b3bcad9-c188-4512-ae1c-66809f778d18
X-Hook-Operation-Id: 0e004d77-5b63-4f38-981f-965896dfdd10

RAW BODY

{
  "_id": "574ac903aa9cb60005103734",
  "name": "harry"
}

Processing

Set customizable processing for documents.

In the example every document you create in the users collection will have info_en property. It will contain info_ru data tranlsated from russian to english with google translate api.

Read more

# setup processor for collection
$ deform collection create -c users -d '{
    "_id": "users",
    "name":"users",
    "schema": {
        "type": "object",
        "properties": {
            "name": {
                "type": "string",
                "required": true
            },
            "info_ru": {
                "type": "string",
                "required": true
            },
            "info_en": {
                "type": "string",
                "processors": {
                    "name": "google_translate",
                    "in": {
                        "text": {
                            "property": "info_ru"
                        },
                        "from": {
                            "value": "ru"
                        },
                        "to": {
                            "value": "en"
                        },
                        "api_key": {
                            "value": "YOUR_GOOGLE_API_KEY"
                        }
                    }
                }
            }
        }
    }
}'

# create a user
$ deform document create -c users -d '{
    "_id": "harry",
    "name": "harry",
    "info_ru": "мальчик который выжил"
}'

# get a user with translated info
$ deform document get harry -c users
{
    "_id": "harry",
    "name": "harry",
    "info_ru": "мальчик который выжил",
    "info_en": "the boy who lived"
}

Pricing

Free plan:

  • 500 MB - documents overall size per project.
  • 500 MB - files overall size per project.
  • Up to 5 projects.
Paid plain:
  • Unlimited size for documents and files per project.
  • Every 1 GB - $1.80 per month
  • For example: 1.5 GB will cost $2.70 per month
  • Taxes included
  • If you have any questions - write us a letter

Get started for free

Pricing FAQ

  • How am I billed?

    Each project is billed per hour. Every 30 days we are sending an invoice.

  • How can I pay?

    We send PayPal invoice to the email of a customer. If future we are going to add more ways to pay.

  • How to determite a project gone payed?

    When project size gone greater than free limits - the project is payed.

  • Is there refund?

    No, we do not offer refunds. But you can write us a letter and explain why the refund should happen.

  • Will taxes be applied to the invoice?

    Yes, we include a tax into invoice.

This project is in active development

GUI is a part of this process
Want to be notified about things happening ?