1. An apparatus comprising: a multi-tenant datastore; and a hardware processor coupled to the multi-tenant datastore, wherein the processor is configured to: receive a request comprising an application token, a user token, and a tenant identifier, wherein the application token identifies one of multiple applications hosted by the multi-tenant datastore, wherein the user token identifies one of multiple users of the multi-tenant datastore, and wherein the tenant identifier identifies one of multiple tenants hosted by the multi-tenant datastore; generate a query based on the request to access the multi-tenant datastore, wherein generating the query comprises deriving a query scope based on the request, and wherein the query scope is limited to data in the multi-tenant datastore that is associated with the one of the multiple applications, the one of the multiple users, and the one of the multiple tenants; update the application token and the user token after a predetermined interval of time has passed to generate an updated application token and an updated user token; and generate a second query to access the multi-tenant datastore, wherein the second query is based on the updated application token, the updated user token, and the tenant identifier, wherein the request is sent from a third party application and received by the hardware processor via an application programming interface (API), wherein the application token comprises information of an application identification (ID), wherein the multi-tenant datastore comprises a plurality of tables divided into groups, wherein each group of tables is assigned to one of the multiple tenants, and wherein each one of the multiple tenants is limited to only be able to access the group of tables assigned to the one of the multiple tenants.