Subscribe rss
Blog categories

apple-heart-healthHow feature-rich is Backendless? Well, it has a ton of features (which means if the features were measured as kilos in the metric system, we would have 1000 of them). Can you name all of them? Can we? Well, that’s what I am challenging myself and the rest of the company to find out. Starting today we’re going to write a blog post every day describing a feature. Since today is the 7th day of the year, we have exactly 358 days left, which means if stick to the challenge, there will be 358 features written about by the time 2016 rolls in.

The features we will write about will be picked semi-randomly. The topics can be influenced by the questions we get on the Backendless support forum, releases we do or any requests we get from you. Please write to us or simply post a comment to any of the feature-a-day posts.

User Service

Feature 2: Registering app users with the User Registration API
Feature 3: Delivering a customizable welcome email when a user registers for your app
Feature 4: User login API – login registered users to a Backendless app
Feature 5: Enable or disable users of your mobile application
Feature 6: Changing user’s password by administrator
Feature 81: Changing user’s password via API (if user can login)
Feature 106: Changing user’s password via API, if user cannot login (Free Plan)
Feature 108: Changing user’s password via API, if user cannot login (Paid Plan)
Feature 107: Customize the ‘forgot password’ email message
Feature 10: Require email confirmation for user registration
Feature 19: Handling user logins with the same user credentials
Feature 38: Dynamic user definition with the Registration API
Feature 43: Required user properties for user registrations
Feature 45: Updating user account using User Service API
Feature 52: Fetching application’s user objects
Feature 53: Disable user registrations with a single click
Feature 55: Registering/Updating a user with related data object(s)
Feature 64: Registering app users manually using Backendless Console
Feature 80: Deleting users with API or console
Feature 84:  Customizable messages for email address confirmation (upon user registration)
Feature 89:  User logout API – logout current user from a Backendless app
Feature 83:  Support for customizable session timeouts
Feature 104: Validate user properties with regular expressions


Feature 20: Developer-defined roles – an essential block to securing your app data
Feature 23: Block access to all data for the “guest” users
Feature 27: Securing access to a data table for a security role
Feature 42: Assigning roles to users using management console
Feature 44: Lockout user account upon unsuccessful logins
Feature 60: Loading data objects which belong to the logged in user (Owner Policy)
Feature 76: Restricting access to files using Backendless Console
Feature 85:  Geography-based restrictions for your app
Feature 87: Manage data object’s access control list (ACL) in console
Feature 88: Managing object’s ACL using API

Data Service

Management Console

Feature 7: Creating data tables to store objects in console
Feature 8: Create data table schema in management console
Feature 9: Adding data objects using developer console
Feature 11: Declaring relations between tables (classes) using developer console
Feature 12: Creating relationships between objects using developer console
Feature 13: Create data tables, columns and relations by importing CSV files
Feature 14: SQL-based search for data objects using console
Feature 26: Encoding SQL search queries in console for use by REST clients
Feature 37: Display dates in the data objects in the GMT0 timezone
Feature 54: Validating data object properties with regular expressions
Feature 71: Assigning column types during data import
Feature 77: Using Backendless REST Console to fetch your data
Feature 91: Configuring default value for a data table column
Feature 99: Declaring a relationship between a data table and geo point(s)
Feature 100: Creating relationships between data objects and geo points


Feature 1: Saving Objects with Relations and Dynamic Schema Creation
Feature 16: Data retrieval API – how to load objects from an mBaaS storage
Feature 17: Data Paging API  how to efficiently load large data sets in a mobile app
Feature 21: Loading related data objects – the ‘auto-load’ approach
Feature 22: Loading related data objects – the ‘one-step/dynamic’ approach
Feature 28: Loading related data objects – the ‘two-step’ approach
Feature 47: Loading data objects from server with sorting
Feature 92: Loading first object from a data table using API
Feature 93: Loading last object from a data table using API
Feature 59: Recursive object references in persistence objects
Feature 90: Retrieving database/table schema using API
Feature 94: Deleting persistent objects using Data Service API
Feature 95: Updating data objects using API
Feature 96: Declare minimum required properties in your data classes
Feature 97: Update object’s related collections using API
Feature 98: Loading data objects from server with an SQL query
Feature 101: Loading data objects with related geo points using API
Feature 103: Search data objects by distance from a location

Geo Service

Feature 24: Setting up sample geo-location data (geolocation introduction)
Feature 25: Retrieving geo points for a category
Feature 32: Saving a Geo Point with API
Feature 36: Saving a data object with a related geo location
Feature 39: Adding geo points with related data objects
Feature 50: Importing geo location data from CSV files
Feature 51: Partial match geo point search
Feature 56: Searching for geo points in a radius
Feature 57: Searching for geo points in a rectangular area
Feature 68: Using SQL queries for geo point searches
Feature 69: Cross-category search in geo service

File Service and Backendless Hosting

Feature 30: Backendless File Browser – one place for all file management tasks
Feature 31: Uploading files to server with the File Upload API
Feature 33: Mapping a domain name to your Backendless file storage
Feature 40: Enabling git support for your Backendless file storage
Feature 41: Compress any directory in your Backendless file storage using console
Feature 46: Creating new files in file storage using console’s online text editor
Feature 63: Cross domain access control for browser-based apps
Feature 67: Creating directories in Backendless File Storage
Feature 75: Obtaining file’s public URL for files in File Storage
Feature 102: Downloading files from Backendless file hosting

Messaging Service

Feature 34: Sending email from your mobile, browser or desktop app
Feature 65: Basic publish/subscribe messaging
Feature 66: Send pub/sub messages from Backendless console
Feature 72: Message selectors or conditional delivery in pub/sub messaging
Feature 73: Conditional message delivery with subtopics

Custom Business Logic

Feature 105: Custom business logic (overview)

Utility APIs

Management APIs

Productivity Tools and Features
Posted in Feature-a-Day

happy-new-year-2015Happy New Year, everyone! We have been very quiet on our blog and do apologize for keeping you wondering if we are alive. Well, we are certainly alive and kicking! This year Backendless will turn 3 years old and in the startup world we’re not a baby anymore. Not even a toddler, a preschooler or a teenager.. Over the past couple of years Backendless has matured into the most sophisticated backend as a service platform on this planet. I am not afraid to make a statement that big. One of our goals for this year is to make it dead simple to see why our service is that awesome.

If you are already a customer,big thank you! We would not be able to get where we are without you. If you are considering Backendless or just researching what it can do for you, we would love to help you! Very soon we will start opening up the curtains so you can see and experience all the great things we have been working on. This is not good old mBaaS anymore, that would be way too boring. We’re going gangbusters in our pursuit of making app development super fun for you. Not only you will be able to build infinitely scalable apps at a fraction of the cost, we will show you how you can make money by doing what you love – writing software. There is going to be something for everyone – mobile developers, designers, user experience professionals and server-side coders.

We hope you will join us for the ride. These are very exciting times. Let us all raise our glasses to a year full of adventures and victories, big or small!

Posted in Uncategorized

This is a notification about an upcoming change in the behavior of CodeRunner – a Backendless container responsible for executing custom business logic. An upcoming release will introduce a change that will change the behavior of CodeRunner with regards to the Backendless API calls made by custom code. Currently, custom business logic can make both asynchronous and synchronous calls. With the new update, the asynchronous API calls will be disabled in CodeRunner. If you have any custom business logic currently deployed or planning on deploying it soon, it is very important to make sure that the code does not use any asynchronous calls. Changing the implementation should be very easy – simply remove the AsyncCallback argument from the API calls and refactor the code for the synchronous mode (moving code from the async callback handlers). The change will be made live Wednesday, October 29th at 8am CDT.

We are preparing a new maintenance release with important bug fixes and improvements. One of the changes in the release breaks backwards compatibility for REST clients. The scope of the change is rather minor: any data object property marked as DATETIME will be serialized (from server to client) as a number (a timestamp) representing the number of milliseconds since January 1, 1970, 00:00:00 GMT. Currently these values are returned as String objects in the following format: “MM/DD/YYY hh:mm:ss timezone”. This change will go on effect on September 24th at 8am US Central time. If you have any questions, please contact us via the support forum.

Posted in API Change

I am very excited to report that we have an amazing new release with some very cool functionality ready for you. Among the new features you will find support for video streaming and broadcasting for Android, support for Atomic Counters and Caching API. Additionally, we have revised our pricing to give you more choices and more value for the money.

Continue reading

In addition to the built-in events triggered by the API calls, Backendless supports custom, developer-defined events. Custom business logic code, which is executed on the server-side, can be attached to either built-in events or the developer-defined ones. Custom events can be triggered through a specialized API call from a client library or by other custom business logic. Dispatching a custom event may have event arguments. The server-side code which handles an event may also return a value to be delivered back to the client-side that dispatched the event. This feature can be used to invoke custom business logic from the client-side. Developing custom event handlers is very easy with Backendless – you can register an event using Backendless console, which automatically generates the source code required for declaring an event handler. Just like with the built-in events, custom event handlers can be debugged on the developer machine before the code is pushed to production.

Continue reading

There are a lot of scenarios when custom business logic on the server-side may need to connect to an external host. Whether it is a service call to a third-party service or a retrieving data from a proprietary system, the code must establish a connection to an external host. Up until now if you tried to connect elsewhere except for Backendless’ API endpoint, you’d be getting an exception in your custom server-side code – we used to block all hosts. Today we released an update which allows you to connect to any computer located elsewhere. The process of establishing a connection does not change – you can connect to any port using any protocol. However, the hosts to which your connect connects, must be registered with Backendless. We have added a special section in Backendless console, which you can see at Manage > App Settings > External Hosts:


Continue reading

We build and release a lot of software – core service, 5 SDKs and a special utility for custom business logic. We always wanted to visualize our release history to make it easy to navigate through the releases and see how a specific SDK or the core service is evolving. Today we release our release history. You can see it at:

The system let’s you see our progress and the history of changes for everything we develop. Go ahead and play with it and let us know what you think.



Posted in Status

Back for round #2, eh? (if you missed the first post which was about registering users, read it here) Well, let’s dive in. This one should be pretty quick.

The following code is pretty well commented, ping me if you have any questions.

This should bring back something similar to:

Notice the Backendless specific things, we didn’t create those fields in our previous post when we added this user to the database.

  • objectId
  • userStatus

Don’t panic, Backendless adds these automatically. Here’s our expected fields we created in the first post:

  • username
  • email
  • password…..wait, what the?!?! Where’s the password?!

I was expecting to be able to see the password when we query the user info, however, for security Backendless encrypts the password info in a one-way method that even they (or you as the admin of your user table) can’t retrieve. If a user forgets their password, you’ll have to build in the functionality for them to reset it.

I don’t have all the answers, so I hit up their great community and got a response. Check my post here for a more in depth explanation of their encryption.

How do you get the data to compare what the user is entering VS what’s stored on the backend? That’s where the login functionality comes in to play. We’ll hit that up in the next post.

My mission is to keep these posts nice and bite-sized. I don’t want to overwhelm you with tons of functionality. I’m mirroring Backendless’s docs for the REST API.

See you soon!


This post will go over the basics of integrating Backendless services into the Corona framework…

First, create your Backendless account and obtain the “application-id” and “secret key”. Keep those handy, you’ll be using them throughout these tutorials.

At present, there is not a proper, Corona-specific API plugin so we’ll be using the REST API for Backendless. A handy link can be found here for the REST documentation.

Continue reading