Infogile is a agile and versatile but still simple backend storage solution for your web, mobile or native client. The purpose of infogile is making developers build apps faster and more secure.
Infogile is a persistence API focused on making it easy to build and change your data models easily and focusing on delivering business value (yeah, we’re kind of boring, we actually think that’s the purpose with us developers :-)
However, it’s not for everyone, if you intend to collect data from IoT devices and do streaming analytics we suggest you use a better suited platform. If your app have the need to store and maintain data according to a data model and you:
To be able to use Infogile’s API you need to authenticate and you need to under stand the definition of objects and how data is represented. Follow links to read more.
Once a user is authenticated using an authentication provider, you may need to get user’s information.
Endpoint: /auth/userinfo
Method: POST
Example
curl -X POST http://infogile.io/auth/userinfo \
-H 'Authorization: Bearer <your access token>'
-H 'IdentityProvider: <your identity provider>'
Endpoint: /auth/validlogin
Method: GET
Returns
{
"identity": "<the user's email address>",
"givenName": "<User's given (first) name>",
"familyName": "<User's family (last) name>",
"email": "<User's email>",
"createdDate": "<date the user was created>",
"lastModifiedDate": "<date the user was last modified>",
"enabled": <true|false>, // If the user is enabled or not,
"status": null,
"accessToken": "ya29.GmMxB8AEzh8NiuMopEBYmUXUqGfdJCiOnb_ZLRHNUwIulRtATg_9hQLXvZfuyzchaAierJstRp7upTHZPxrtVyw8_endkWzMeNL8QL1LnDDALTqDTt9lef_3Ct247Vt76LLxRY4",
"identityProvider": "google",
}
Example
curl -X GET http://infogile.io/auth/validlogin \
-H 'Authorization: Bearer <your access token>'
-H 'IdentityProvider: <your identity provider>'
To list all AppSpaces a user have EDIT or ADMIN access to (a user identified by their email). If a user only have USE access, it will not show here.
Endpoint: /auth/appspaces
Method: GET
Returns
[
{
"appSpace": {
"identity": "<identity of appspace>",
"name": "<name of appspace>",
"description": "<appspace description or null> "
},
"access": [ "EDIT", "USE", "ADMIN"],
},
{
"appSpace": {
"identity": "kdf78dkfjaiodfl9f09sdjd9fe2wrdbsy",
"name": "Challenge App",
"description": "AppSpace for the Challenge App"
},
"access":[ "EDIT" , "USE" , "ADMIN" ],
}
]
Endpoint: /api/objectdefinition/<appspace identity>
Method: GET
Returns:
[
{
"apiName": "user",
"identity": "USER-OBJECT-DEFINITION",
"name": "User",
"fields": [
{
"apiName": "name",
"identity": "NAME-FIELD",
"name": "Name",
"fieldType": "ValueField",
"mandatory": false,
"systemReadonly": true,
"systemObject": true,
"type": "Text"
},
{
"apiName": "email",
"identity": "EMAIL-FIELD",
"name": "Email",
"fieldType": "ValueField",
"mandatory": false,
"systemReadonly": true,
"systemObject": true,
"type": "Text"
},
{
"apiName": "userType",
"identity": "USER-TYPE-FIELD",
"name": "User type",
"fieldType": "ReferenceField",
"mandatory": false,
"multiplicity": "OneToMany",
"referencedType": "userType"
}
]
},
{
"apiName": "userType",
"identity": "USER-TYPE",
"name": "User type",
"fields": [
{
"apiName": "name",
"identity": "USER-TYPE-NAME",
"name": "Name",
"fieldType": "ValueField",
"mandatory": false,
"systemReadonly": false,
"systemObject": true,
"type": "Text"
}
]
}
]
To improve responsiveness of consuming apps, we equipped Infogile with websocket-based notifications.