diff --git a/packages/noco-docs/content/en/developer-resources/graphql-apis.md b/packages/noco-docs/content/en/developer-resources/graphql-apis.md
new file mode 100644
index 0000000000..8b9932433d
--- /dev/null
+++ b/packages/noco-docs/content/en/developer-resources/graphql-apis.md
@@ -0,0 +1,800 @@
+---
+title: 'GraphQL APIs'
+position: 2
+category: 'Developer Resources'
+fullscreen: true
+menuTitle: 'GraphQL APIs'
+---
+# Features
+* APIs
+ * Generates GraphQL APIs for **ANY** MySql, Postgres, MSSQL, Sqlite database :fire:
+ * Serves GraphQL queries irrespective of naming conventions of primary keys, foreign keys, tables etc :fire:
+ * Support for composite primary keys :fire:
+ * Usual suspects : CRUD, List, FindOne, Count, Exists, Distinct
+ * Pagination
+ * Sorting
+ * Column filtering - Fields :fire:
+ * Row filtering - Where :fire:
+ * Bulk insert, Bulk delete, Bulk read :fire:
+ * Relations - automatically detected
+ * Aggregate functions
+ * More
+ * Upload single file
+ * Upload multiple files
+ * Download file
+* Authentication
+* Access Control
+
+
+# GraphQL API Overview
+
+### Query
+
+| **Resolver** | **Arguments** | **Returns** | **Description** |
+|---|---|---|---|
+| [TableName**List**](#tablenamelist) | where: String, limit: Int, offset: Int, sort: String | [TableName] | List of table rows |
+| [TableName**Read**](#tablenameread) | id:String | TableName | Get row by primary key |
+| [TableName**Exists**](#tablenameexists) | id: String | Boolean | Check row exists by primary key |
+| [TableName**FindOne**](#tablenamefindone) | where: String | TableName | Find row by where conditions |
+| [TableName**Count**](#tablenamecount) | where: String | Int | Get rows count |
+| [TableName**Distinct**](#tablenamedistinct) | columnName: String, where: String, limit: Int, offset: Int, sort: String | [TableName] | Get distinct rows based on provided column names |
+| [TableName**GroupBy**](#tablenamegroupby) | fields: String, having: String, limit: Int, offset: Int, sort: String | [TableNameGroupBy] | Group rows by provided columns |
+| [TableName**Aggregate**](#tablenameaggregate) | columnName: String!, having: String, limit: Int, offset: Int, sort: String, func: String! | [TableNameAggregate] | Do aggregation based on provided column name aggregate function |
+| [TableName**Distribution**](#tablenamedistribution) | min: Int, max: Int, step: Int, steps: String, columnName: String! | [distribution] | Get distributed list |
+
+
+### Mutations
+
+| **Resolver** | **Arguments** | **Returns** | **Description** |
+|---|---|---|---|
+| [TableName**Create**](#tablenamecreate) | data:TableNameInput | TableName | Insert row into table |
+| [TableName**Update**](#tablenameupdate) | id:String,data:TableNameInput | TableName | Update table row using primary key |
+| [TableName**Delete**](#tablenamedelete) | id:String | TableName | Delete table row using primary id |
+| [TableName**CreateBulk**](#tabelenamecreatebulk) | data: [TableNameInput] | [Int] | Bulk row insert |
+| [TableName**UpdateBulk**](#tablenamebulk) | data: [TableNameInput] | [Int] | Bulk row update |
+| [TableName**DeleteBulk**](#tablenamedeletebulk) | data: [TableNameInput] | [Int] | Bulk row delete |
+
+## Query Arguments
+
+| **Param** | **Description** | **Default value** |**Example Value**|
+|---|---|---|---|
+| where | Logical Expression | | `(colName,eq,colValue)~or(colName2,gt,colValue2)`
[Usage: Comparison operators](#comparison-operators)
[Usage: Logical operators](#logical-operators) |
+| limit | Number of rows to get(SQL limit value) | 10 | 20 |
+| offset | Offset for pagination(SQL offset value) | 0 | 20 |
+| sort | Sort column name, where use `-` as prefix for descending sort | | column_name |
+| fields | Required column names in result | * | column_name_1,column_name_2 |
+
+#### Comparison operators
+
+```
+eq - '=' - (colName,eq,colValue)
+not - '!=' - (colName,ne,colValue)
+gt - '>' - (colName,gt,colValue)
+ge - '>=' - (colName,ge,colValue)
+lt - '<' - (colName,lt,colValue)
+le - '<=' - (colName,le,colValue)
+is - 'is' - (colName,is,true/false/null)
+isnot - 'is not' - (colName,isnot,true/false/null)
+in - 'in' - (colName,in,val1,val2,val3,val4)
+btw - 'between' - (colName,btw,val1,val2)
+nbtw - 'not between'- (colName,nbtw,val1,val2)
+like - 'like' - (colName,like,%name)
+```
+
+#### Example use of comparison operators - complex example
+```
+PaymentList(where:"(checkNumber,eq,JM555205)~or((amount,gt,200)~and(amount,lt,2000))")
+```
+
+
+#### Logical operators
+```
+~or - 'or'
+~and - 'and'
+~not - 'not'
+```
+
+### TableNameList
+
+
+
+
+```
+CountryList {
+ country_id
+ country
+ last_update
+}
+```
+
+
+
+```json
+{
+ "data": {
+ "CountryList": [
+ {
+ "country_id": 1,
+ "country": "Afghanistan",
+ "last_update": "1139978640000",
+ "CityCount": 1
+ },
+ {
+ "country_id": 2,
+ "country": "Algeria",
+ "last_update": "1139978640000",
+ "CityCount": 3
+ },
+ {
+ "country_id": 3,
+ "country": "American Samoa",
+ "last_update": "1139978640000",
+ "CityCount": 1
+ }
+ ]
+ }
+}
+```
+
+
+
+
+
+#### List + where
+
+
+
+```
+{
+ CountryList(where:"(country,like,United%)") {
+ country_id
+ country
+ last_update
+ CityCount
+ }
+}
+```
+
+
+
+
+
+```json
+{
+ "data": {
+ "CountryList": [
+ {
+ "country_id": 101,
+ "country": "United Arab Emirates",
+ "last_update": "1139958840000",
+ "CityCount": 3
+ },
+ {
+ "country_id": 102,
+ "country": "United Kingdom",
+ "last_update": "1139958840000",
+ "CityCount": 8
+ },
+ {
+ "country_id": 103,
+ "country": "United States",
+ "last_update": "1139958840000",
+ "CityCount": 35
+ }
+ ]
+ }
+}
+```
+
+
+
+
+[Usage : comparison operators](#comparison-operators)
+
+
+
+
+
+#### List + where + sort
+
+
+
+```
+{
+ CountryList(where:"(country,like,United%)",sort:"-country") {
+ country_id
+ country
+ last_update
+ CityCount
+ }
+}
+```
+
+
+
+
+```json
+{
+ "data": {
+ "CountryList": [
+ {
+ "country_id": 103,
+ "country": "United States",
+ "last_update": "1139958840000",
+ "CityCount": 35
+ },
+ {
+ "country_id": 102,
+ "country": "United Kingdom",
+ "last_update": "1139958840000",
+ "CityCount": 8
+ },
+ {
+ "country_id": 101,
+ "country": "United Arab Emirates",
+ "last_update": "1139958840000",
+ "CityCount": 3
+ }
+ ]
+ }
+}
+```
+
+
+
+
+
+
+
+
+
+
+
+#### List + where + sort + offset
+
+
+
+```
+{
+ CountryList(where:"(country,like,United%)",sort:"-country",offset:1) {
+ country_id
+ country
+ last_update
+ CityCount
+ }
+}
+```
+
+
+
+
+```json
+{
+ "data": {
+ "CountryList": [
+ {
+ "country_id": 102,
+ "country": "United Kingdom",
+ "last_update": "1139958840000",
+ "CityCount": 8
+ },
+ {
+ "country_id": 101,
+ "country": "United Arab Emirates",
+ "last_update": "1139958840000",
+ "CityCount": 3
+ }
+ ]
+ }
+}
+```
+
+
+
+
+
+
+#### List + limit
+
+
+
+
+```
+{
+ CountryList(limit:6) {
+ country
+ }
+}
+```
+
+
+
+
+```json
+{
+ "data": {
+ "CountryList": [
+ {
+ "country": "Afghanistan"
+ },
+ {
+ "country": "Algeria"
+ },
+ {
+ "country": "American Samoa"
+ },
+ {
+ "country": "Angola"
+ },
+ {
+ "country": "Anguilla"
+ },
+ {
+ "country": "Argentina"
+ }
+ ]
+ }
+}
+```
+
+
+
+
+
+
+
+
+[⤴](#query)
+
+### TableNameRead
+
+
+
+```
+ CountryRead(id:"1") {
+ country_id
+ country
+ last_update
+ }
+```
+
+
+
+
+```json
+ "data": {
+ "CountryRead": {
+ "country_id": 1,
+ "country": "Afghanistan",
+ "last_update": "1139978640000",
+ "CityCount": 1
+ }
+ }
+```
+
+
+
+
+[⤴](#query)
+
+### TableNameExists
+
+
+
+```
+ CountryExists(id:"1")
+```
+
+
+
+
+```json
+ "data": {
+ "CountryExists": true
+ }
+```
+
+
+
+
+[⤴](#query)
+
+### TableNameFindOne
+
+
+
+```
+ CountryFindOne(where:"(country_id,eq,1)") {
+ country_id
+ country
+ last_update
+ CityCount
+ }
+```
+
+
+
+
+```json
+ "data": {
+ "CountryFindOne": {
+ "country_id": 1,
+ "country": "Afghanistan",
+ "last_update": "1139978640000",
+ "CityCount": 1
+ }
+ }
+```
+
+
+
+
+[⤴](#query)
+
+### TableNameCount
+
+
+
+```
+CountryCount
+```
+
+
+
+
+```json
+{
+ "data": {
+ "CountryCount": 109
+ }
+}
+```
+
+
+
+
+
+[⤴](#query)
+
+### TableNameDistinct
+
+
+
+```
+{
+ CountryDistinct(columnName:"last_update",limit:3) {
+ last_update
+ }
+}
+```
+
+
+
+
+```json
+{
+ "data": {
+ "CountryDistinct": [
+ {
+ "last_update": "1139958840000"
+ },
+ {
+ "last_update": "1578323893000"
+ },
+ {
+ "last_update": "1578321201000"
+ }
+ ]
+ }
+}
+```
+
+
+
+
+[⤴](#query)
+
+### TableNameGroupBy
+
+
+
+```
+{
+ CountryGroupBy(fields:"last_update",limit:1) {
+ country_id
+ country
+ last_update
+ count
+ }
+}
+```
+
+
+
+
+```json
+{
+ "data": {
+ "CountryGroupBy": [
+ {
+ "country_id": null,
+ "country": null,
+ "last_update": "1139958840000",
+ "count": 109
+ }
+ ]
+ }
+}
+```
+
+
+
+
+[⤴](#query)
+
+### TableNameAggregate
+
+
+
+```
+{
+ PaymentAggregate(columnName:"amount",func:"min,max,avg,count") {
+ count
+ avg
+ min
+ }
+}
+```
+
+
+
+
+```json
+{
+ "data": {
+ "PaymentAggregate": [
+ {
+ "count": 16048,
+ "avg": 4.200743,
+ "min": 0
+ }
+ ]
+ }
+}
+```
+
+[⤴](#query)
+
+### TableNameDistribution
+
+
+
+```
+{
+ PaymentDistribution (columnName:"amount"){
+ range
+ count
+ }
+}
+```
+
+
+
+
+```json
+{
+ "data": {
+ "PaymentDistribution": [
+ {
+ "range": "0-4",
+ "count": 8302
+ },
+ {
+ "range": "5-8",
+ "count": 3100
+ },
+ {
+ "range": "9-11.99",
+ "count": 371
+ }
+ ]
+ }
+}
+```
+
+
+
+
+[⤴](#mutations)
+
+### TableNameCreate
+
+
+
+```
+mutation {
+ CountryCreate(data: {country: "test"}) {
+ country_id
+ country
+ last_update
+ CityCount
+ }
+}
+```
+
+
+
+
+```json
+{
+ "data": {
+ "CountryCreate": {
+ "country_id": 10264,
+ "country": "test",
+ "last_update": null,
+ "CityCount": 0
+ }
+ }
+}
+```
+
+
+
+
+[⤴](#mutations)
+
+### TableNameUpdate
+
+
+
+```
+mutation {
+ CountryUpdate(data: {country: "test_new"}, id: "10264") {
+ country_id
+ country
+ last_update
+ CityCount
+ }
+}
+```
+
+
+
+
+```json
+{
+ "data": {
+ "CountryUpdate": {
+ "country_id": null,
+ "country": null,
+ "last_update": null,
+ "CityCount": null
+ }
+ }
+}
+```
+
+
+
+
+[⤴](#mutations)
+
+### TableNameDelete
+
+
+
+```
+mutation {
+ CountryDelete(id: "10264") {
+ country_id
+ country
+ last_update
+ CityCount
+ }
+}
+```
+
+
+
+
+```json
+{
+ "data": {
+ "CountryDelete": {
+ "country_id": null,
+ "country": null,
+ "last_update": null,
+ "CityCount": null
+ }
+ }
+}
+```
+
+
+
+
+[⤴](#mutations)
+
+### TableNameCreateBulk
+
+
+
+```
+mutation {
+ CountryCreateBulk(data:[{country:"test 2"},{country:"test 3"}])
+}
+```
+
+
+
+
+```json
+{
+ "data": {
+ "CountryCreateBulk": [
+ 10265
+ ]
+ }
+}
+```
+
+
+
+
+[⤴](#mutations)
+
+### TableNameUpdateBulk
+
+
+
+```
+mutation {
+ CountryUpdateBulk(data: [{country: "test 2", country_id: 10265}, {country: "test 3", country_id: 10266}])
+}
+```
+
+
+
+
+```json
+{
+ "data": {
+ "CountryUpdateBulk": [
+ 1,
+ 1
+ ]
+ }
+}
+```
+
+
+
+
+[⤴](#mutations)
+
+### TableNameDeleteBulk
+
+
+
+```
+mutation {
+ CountryDeleteBulk(data: [{country_id: 10265}, {country_id: 10266}])
+}
+```
+
+
+
+
+```json
+{
+ "data": {
+ "CountryDeleteBulk": [
+ 1,
+ 1
+ ]
+ }
+}
+```
+
+
+
diff --git a/packages/noco-docs/content/en/developer-resources/rest-apis.md b/packages/noco-docs/content/en/developer-resources/rest-apis.md
new file mode 100644
index 0000000000..1e133ba7ef
--- /dev/null
+++ b/packages/noco-docs/content/en/developer-resources/rest-apis.md
@@ -0,0 +1,973 @@
+---
+title: 'REST APIs'
+position: 1
+category: 'Developer Resources'
+fullscreen: true
+menuTitle: 'REST APIs'
+---
+# Table of Content
+* [Features](#features)
+* [APIs overview](#api-overview)
+* [Authentication](#authentication)
+* [Access Control](#acess-control)
+* [Migrations](#migrations)
+
+# Features
+* **Automatic REST APIs for any SQL database**
+ * Generates REST APIs for **ANY** MySql, Postgres, MSSQL, Sqlite database :fire:
+ * Serves APIs irrespective of naming conventions of primary keys, foreign keys, tables etc :fire:
+ * Support for composite primary keys :fire:
+ * REST APIs :
+ * CRUD, List, FindOne, Count, Exists, Distinct (Usual suspects)
+ * Pagination
+ * Sorting
+ * Column filtering - Fields :fire:
+ * Row filtering - Where :fire:
+ * Bulk insert, Bulk delete, Bulk read :fire:
+ * Relations - automatically detected
+ * Aggregate functions
+ * More
+ * Upload single file
+ * Upload multiple files
+ * Download file
+* **Authentication**
+* **Access Control**
+
+
+# API Overview
+
+| **Method** | **Path** | **Query Params** | **Description** |
+|---|---|---|---|
+| **GET** | [/api/v1/tableName](#list) | [where, limit, offset, sort, fields](#query-params) | List rows of the table |
+| **POST** | [/api/v1/tableName](#create) | | Insert row into table |
+| **PUT** | [/api/v1/tableName/:id](#update) | | Update existing row in table |
+| **GET** | [/api/v1/tableName/:id](#get-by-primary-key) | | Get row by primary key |
+| **GET** | [/api/v1/tableName/:id/exists](#exists) | | Check row with provided primary key exists or not |
+| **DELETE** | [/api/v1/tableName/:id](#delete) | | Delete existing row in table |
+| **GET** | [/api/v1/tableName/findOne](#find-one) | [where, limit, offset, sort, fields](#query-params) | Find first row which matches the conditions in table |
+| **GET** | [/api/v1/tableName/groupby/:columnName](#group-by) | | Group by columns |
+| **GET** | [/api/v1/tableName/distribution/:columnName](#distribution) | | Distribute data based on column |
+| **GET** | [/api/v1/tableName/distinct/:columnName](#distinct) | | Find distinct column values |
+| **GET** | [/api/v1/tableName/aggregate/:columnName](#aggregate) | | Do aggregation on columns |
+| **GET** | [/api/v1/tableName/count](#count) | [where](#query-params) | Get total rows count |
+| **POST** | [/api/v1/tableName/bulk](#bulk-insert) | | Bulk row insert |
+| **PUT** | [/api/v1/tableName/bulk](#bulk-update) | | Bulk row update |
+| **DELETE** | [/api/v1/tableName/bulk](#bulk-delete) | | Bulk row delete |
+
+
+
+
+ * tableName - Alias of the corresponding table
+ * columnName - Alias of the column in table
+
+
+
+
+### HasMany APIs
+
+| **Method** | **Path** | **Query Params** | **Description** |
+|---|---|---|---|
+| **GET** | [/api/v1/tableName/has/childTableName](#with-children) | [where, limit, offset, sort, fields, fields1](#query-params) | List rows of the table with children |
+| **GET** | [/api/v1/tableName/:parentId/childTableName](#children-of-parent) | [where, limit, offset, sort, fields, fields1](#query-params) | Get children under a certain parent |
+| **POST** | [/api/v1/tableName/:parentId/childTableName](#insert-to-child-table) | | Insert children under a certain parent |
+| **GET** | [/api/v1/tableName/:parentId/childTableName/findOne](#findone-under-parent) | where, limit, offset, sort, fields | Find children under a parent with conditions |
+| **GET** | [/api/v1/tableName/:parentId/childTableName/count](#child-count) | | Find children count |
+| **GET** | [/api/v1/tableName/:parentId/childTableName/:id](#get-child-by-primary-key) | | Find child by id |
+| **PUT** | [/api/v1/tableName/:parentId/childTableName/:id](#update-child-by-primary-key) | | Update child by id |
+
+
+
+ * tableName - Name of the parent table
+ * parentId - Id in parent table
+ * childTableName - Name of the child table
+ * id - Id in child table
+
+
+
+### BelongsTo APIs
+
+| **Method** | **Path** | **Query Params** | **Description** |
+|---|---|---|---|
+| **GET** | [/api/v1/childTableName/belongs/parentTablename](#with-parent) | where, limit, offset, sort, fields | List rows of the table with parent |
+
+
+
+
+ * tableName - Name of the parent table
+ * childTableName - Name of the child table
+
+
+
+## Query params
+
+
+| **Name** | **Alias** | **Use case** | **Default value** |**Example value** |
+|---|---|---|---|---|
+| [where](#comparison-operators) | [w](#comparison-operators) | Complicated where conditions | | `(colName,eq,colValue)~or(colName2,gt,colValue2)`
[Usage: Comparison operators](#comparison-operators)
[Usage: Logical operators](#logical-operators) |
+| limit | l | Number of rows to get(SQL limit value) | 10 | 20 |
+| offset | o | Offset for pagination(SQL offset value) | 0 | 20 |
+| sort | s | Sort by column name, Use `-` as prefix for descending sort | | column_name |
+| fields | f | Required column names in result | * | column_name1,column_name2 |
+| fields1 | f1 | Required column names in child result | * | column_name1,column_name2 |
+
+#### Comparison operators
+
+```
+eq - '=' - (colName,eq,colValue)
+not - '!=' - (colName,ne,colValue)
+gt - '>' - (colName,gt,colValue)
+ge - '>=' - (colName,ge,colValue)
+lt - '<' - (colName,lt,colValue)
+le - '<=' - (colName,le,colValue)
+is - 'is' - (colName,is,true/false/null)
+isnot - 'is not' - (colName,isnot,true/false/null)
+in - 'in' - (colName,in,val1,val2,val3,val4)
+btw - 'between' - (colName,btw,val1,val2)
+nbtw - 'not between'- (colName,nbtw,val1,val2)
+like - 'like' - (colName,like,%name)
+```
+
+#### Example use of comparison operators - complex example
+```
+/api/payments?where=(checkNumber,eq,JM555205)~or((amount,gt,200)~and(amount,lt,2000))
+```
+
+#### Logical operators
+```
+~or - 'or'
+~and - 'and'
+~not - 'not'
+```
+
+
+### Examples
+
+#### List
+
+
+
+
+
+ ```text
+ GET /api/v1/country
+ ```
+
+
+
+
+ ```json
+[
+ {
+ "country_id": 1,
+ "country": "Afghanistan",
+ "last_update": "2006-02-14T23:14:00.000Z"
+ }
+]
+ ```
+
+
+
+
+
+#### List + where
+
+
+
+
+ ```text
+ GET /api/v1/country?where=(country,like,United%)
+ ```
+
+
+
+
+ ```json
+[
+ {
+ "country_id": 101,
+ "country": "United Arab Emirates",
+ "last_update": "2006-02-15T04:44:00.000Z"
+ },
+ {
+ "country_id": 102,
+ "country": "United Kingdom",
+ "last_update": "2006-02-15T04:44:00.000Z"
+ },
+ {
+ "country_id": 103,
+ "country": "United States",
+ "last_update": "2006-02-15T04:44:00.000Z"
+ }
+]
+ ```
+
+
+Usage : comparison operators
+
+#### List + where + sort
+
+
+
+
+```
+GET /api/v1/country?where=(country,like,United%)&sort=-country
+```
+
+
+
+
+```
+[
+ {
+ country_id: 103,
+ country: "United States",
+ last_update: "2006-02-15T04:44:00.000Z"
+ },
+ {
+ country_id: 102,
+ country: "United Kingdom",
+ last_update: "2006-02-15T04:44:00.000Z"
+ },
+ {
+ country_id: 101,
+ country: "United Arab Emirates",
+ last_update: "2006-02-15T04:44:00.000Z"
+ }
+]
+```
+
+
+
+
+
+#### List + where + sort + offset
+
+
+
+
+```
+GET /api/v1/country?where=(country,like,United%)&sort=-country&offset=1
+```
+
+
+
+
+```json
+[
+ {
+ country_id: 102,
+ country: "United Kingdom",
+ last_update: "2006-02-15T04:44:00.000Z"
+ },
+ {
+ country_id: 101,
+ country: "United Arab Emirates",
+ last_update: "2006-02-15T04:44:00.000Z"
+ }
+]
+```
+
+
+
+
+#### List + limit
+
+
+
+
+
+```
+GET /api/v1/country?limit=6
+```
+
+
+
+
+```json
+[
+ {
+ "country_id": 1,
+ "country": "Afghanistan",
+ "last_update": "2006-02-14T23:14:00.000Z"
+ },
+ {
+ "country_id": 2,
+ "country": "Algeria",
+ "last_update": "2006-02-14T23:14:00.000Z"
+ },
+ {
+ "country_id": 3,
+ "country": "American Samoa",
+ "last_update": "2006-02-14T23:14:00.000Z"
+ },
+ {
+ "country_id": 4,
+ "country": "Angola",
+ "last_update": "2006-02-14T23:14:00.000Z"
+ },
+ {
+ "country_id": 5,
+ "country": "Anguilla",
+ "last_update": "2006-02-14T23:14:00.000Z"
+ },
+ {
+ "country_id": 6,
+ "country": "Argentina",
+ "last_update": "2006-02-14T23:14:00.000Z"
+ }
+]
+```
+
+
+
+[⤴️](#api-overview)
+
+
+### Get By Primary Key
+
+
+
+
+
+```
+GET /api/v1/country/1
+```
+
+
+
+
+
+```json
+{
+ "country_id": 1,
+ "country": "Afghanistan",
+ "last_update": "2006-02-14T23:14:00.000Z"
+}
+```
+
+
+
+[⤴️](#api-overview)
+
+
+### Create
+
+
+
+
+
+```
+POST /api/v1/country
+```
+
+```json
+{
+ "country": "Afghanistan"
+}
+```
+
+
+
+
+
+```json
+{
+ "country_id": 1,
+ "country": "Afghanistan",
+ "last_update": "2006-02-14T23:14:00.000Z"
+}
+```
+
+
+
+
+[⤴️](#api-overview)
+
+
+### Update
+
+
+
+
+```PUT /api/v1/country/1```
+```
+{
+ "country": "Afghanistan1"
+}
+```
+
+
+
+
+```json
+{
+ "country_id": 1,
+ "country": "Afghanistan1",
+ "last_update": "20020-02-14T23:14:00.000Z"
+}
+```
+
+
+
+[⤴️](#api-overview)
+
+
+### Exists
+
+
+
+
+```
+DELETE /api/v1/country/1/exists
+```
+
+
+
+
+```json
+true
+```
+
+
+[⤴️](#api-overview)
+
+
+### Delete
+
+
+
+
+
+```
+DELETE /api/v1/country/1
+```
+
+
+
+
+```json
+1
+```
+
+
+
+
+
+[⤴️](#api-overview)
+
+
+### Find One
+
+
+
+
+```
+GET /api/v1/country/findOne?where=(country_id,eq,1)
+```
+
+
+
+
+```json
+{
+ "country_id": 1,
+ "country": "Afghanistan",
+ "last_update": "2006-02-14T23:14:00.000Z"
+}
+```
+
+
+
+[⤴️](#api-overview)
+
+
+### Group By
+
+
+
+
+```
+GET /api/v1/country/groupby/last_update
+```
+
+
+
+
+```json
+[
+ {
+ "count": 109,
+ "last_update": "2006-02-14T23:14:00.000Z"
+ },
+ {
+ "count": 1,
+ "last_update": "2020-01-06T15:18:13.000Z"
+ },
+ {
+ "count": 1,
+ "last_update": "2020-01-06T14:33:21.000Z"
+ }
+]
+ ```
+
+
+
+[⤴️](#api-overview)
+
+
+### Distribution
+
+
+
+
+```
+GET /api/v1/payment/distribution/amount
+```
+
+
+
+
+```json
+[
+ {
+ "count": 8302,
+ "range": "0-4"
+ },
+ {
+ "count": 3100,
+ "range": "5-8"
+ },
+ {
+ "count": 371,
+ "range": "9-11.99"
+ }
+]
+```
+
+
+
+[⤴️](#api-overview)
+
+
+### Distinct
+
+
+
+
+```
+GET /api/v1/country/distinct/last_update
+```
+
+
+
+
+```json
+[
+ {
+ "last_update": "2006-02-14T23:14:00.000Z"
+ },
+ {
+ "last_update": "2020-01-06T15:18:13.000Z"
+ },
+ {
+ "last_update": "2020-01-06T14:33:21.000Z"
+ },
+ {
+ "last_update": "2020-01-07T13:42:01.000Z"
+ }
+]
+```
+
+
+
+[⤴️](#api-overview)
+
+
+### Aggregate
+
+
+
+
+```
+GET /api/v1/payment/aggregate/amount?func=min,max,avg,sum,count
+```
+
+
+
+
+```json
+[
+ {
+ "min": 0,
+ "max": 11.99,
+ "avg": 4.200743,
+ "sum": 67413.52,
+ "count": 16048
+ }
+]
+```
+
+
+
+[⤴️](#api-overview)
+
+
+### Count
+
+
+
+
+```
+GET /api/v1/country/count
+```
+
+
+
+
+```json
+{
+ "count": 161
+}
+```
+[⤴️](#api-overview)
+
+
+### Bulk Insert
+
+
+
+
+```POST /api/v1/country/bulk```
+```json
+ [
+ {
+ "country": "test 1"
+ },
+ {
+ "country": "test 2"
+ }
+ ]
+```
+
+
+
+
+```json
+[
+ 10262
+]
+```
+
+
+[⤴️](#api-overview)
+
+
+### Bulk Update
+
+
+
+```PUT /api/v1/country/bulk```
+```json
+[
+ {
+ "country_id" : 10261,
+ "country": "test 3"
+ },
+ {
+ "country_id" : 10262,
+ "country": "test 4"
+ }
+]
+```
+
+
+
+```json
+[
+ 1,
+ 1
+]
+```
+
+
+[⤴️](#api-overview)
+
+
+### Bulk Delete
+
+
+
+
+```DELETE /api/v1/country/bulk```
+```json
+[
+ {
+ "country_id" : 10261
+ },
+ {
+ "country_id" : 10262
+ }
+]
+```
+
+
+
+```json
+[
+ 1,
+ 1
+]
+```
+
+
+[⤴️](#api-overview)
+
+
+### With Children
+
+
+
+
+```
+GET /api/v1/country/has/city
+```
+
+
+
+
+```json
+[
+ {
+ "country_id": 1,
+ "country": "Afghanistan",
+ "last_update": "2006-02-14T23:14:00.000Z",
+ "city": [
+ {
+ "city_id": 251,
+ "city": "Kabul",
+ "country_id": 1,
+ "last_update": "2006-02-14T23:15:25.000Z"
+ },
+ ...
+ ]
+ }
+]
+```
+
+
+
+[⤴️](#hasmany-apis)
+
+### Children of parent
+
+
+
+
+```
+GET /api/v1/country/1/city
+```
+
+
+
+
+```json
+[
+ {
+ "city_id": 251,
+ "city": "Kabul",
+ "country_id": 1,
+ "last_update": "2006-02-14T23:15:25.000Z"
+ }
+]
+```
+
+
+
+[⤴️](#hasmany-apis)
+
+### Insert to child table
+
+
+
+
+```POST /api/v1/country/1/city```
+```json
+ {
+ "city": "test"
+ }
+```
+
+
+
+
+```json
+{
+ "city": "test",
+ "country_id": "1",
+ "city_id": 10000
+}
+```
+
+
+
+[⤴️](#hasmany-apis)
+
+### Findone under parent
+
+
+
+
+```GET /api/v1/country/1/city/findOne?where=(city,like,ka%)```
+
+
+
+
+```json
+{
+ "city": "test",
+ "country_id": "1",
+ "city_id": 10000
+}
+```
+
+
+
+
+[⤴️](#hasmany-apis)
+
+### Child count
+
+
+
+
+```
+GET /api/v1/country/1/city/count
+```
+
+
+
+
+```json
+{
+ "count": 37
+}
+```
+
+
+
+
+[⤴️](#hasmany-apis)
+
+### Get Child By Primary key
+
+
+
+
+```
+GET /api/v1/country/1/city/251
+```
+
+
+
+
+```json
+[
+ {
+ "city_id": 251,
+ "city": "Kabul",
+ "country_id": 1,
+ "last_update": "2006-02-14T23:15:25.000Z"
+ }
+]
+```
+
+
+
+
+[⤴️](#hasmany-apis)
+
+### Update Child By Primary key
+
+
+
+
+```POST /api/v1/country/1/city/251```
+```
+{
+ "city": "Kabul-1"
+}
+```
+
+
+
+
+```json
+1
+```
+
+
+
+
+[⤴️](#hasmany-apis)
+
+### Get parent and chlidren within
+
+
+
+
+```
+GET /api/v1/country/has/city
+```
+
+
+
+
+```json
+[
+ {
+ "city_id": 1,
+ "city": "sdsdsdsd",
+ "country_id": 87,
+ "last_update": "2020-01-02T14:50:49.000Z",
+ "country": {
+ "country_id": 87,
+ "country": "Spain",
+ "last_update": "2006-02-14T23:14:00.000Z"
+ }
+ },
+ ...
+]
+```
+
+
+
+
+[⤴️](#belongsto-apis)
+### Get table and parent class within
+
+
+
+
+```
+GET /api/v1/city/belongs/country
+```
+
+
+
+
+```json5
+[
+ {
+ city_id: 1,
+ city: "A Corua (La Corua)",
+ country_id: 87,
+ last_update: "2006-02-15T04:45:25.000Z",
+ country: {
+ country_id: 87,
+ country: "Spain",
+ last_update: "2006-02-15T04:44:00.000Z"
+ }
+]
+```
+
+