Enginio is a Backend as a Service (BaaS) solution that enables any connected and data-driven applications to access the backend cloud storage.
Enginio manages application data as objects, which can be created, read, updated, and deleted using the Enginio API’s. Every object created is assigned a unique ID, which is used to identify the object.
Objects store data as key-value pairs, which are also known as properties. Each property is identified by its name and it can hold data of certain type. Enginio supports string, number, boolean, geo-coordinate and file values.
In Enginio, objects are not just a set of random properties but they are also typed. The object type is a bit similar to class in any object oriented programming languages, and it defines object properties and validation rules for the property values.
Objects of the same type are organized in collections, which can be queried using the Enginio API’s. A query can be parametrized to return all objects or only those objects which fulfill the given query criteria.
Object can have links to other objects and these links are called, object references. These object references can be traversed, providing access to the logically related data pieces at once. Common example is that each object containing a reference to the creator (a user who created the object) can fetch all information about its creator when needed.
Enginio provides APIs to manage application users. For example, it provides API's to create a new user (for sign-up functionality) and authenticate users (for login functionality). Users' data is stored in objects of special predefined type, ’user’.
Security model can be used to control data access and it consists of various parts. For example, each object has its own access control list restricting which users can interact with the object and how. Access control list is basically a list of users and set of permissions for each user. Permissions define which operations the users can perform for the object in question. There are separate permissions for read, update, delete, and other operations.