Hi,
Currently, I am working on $subject. Basically the methods in
AnalyticsDataService will be exposed through REST APIs. Please refer to
Architecture mail thread "*[Architecture] BAM 3.0 Data Layer Implementation
/ RDBMS / Distributed Indexing / Search*" for more Details. Following are
the supported REST APIs.

1. Create a table
*POST /analytics/{tableName}*
 ; tableName - The name of the table to be created.

2. Delete a table
*DELETE /analytics/{tableName} *
; tableName - The name of the table to be deleted.

3. Check if a table exists
*GET /analytics/{tableName} *
; tableName - The name of the table being checked.

4. List All the tables
*GET /analytics/tables*
;Response will be an JSON array of table names. e.g. [ "table1" , "table2"
, "table3" ]

5. Get the records from a table.
*GET /analytics/records/{tableName}/{from}/{to}/{start}/{count} *
; tableName - The name of the table from which the records are retrieved.
; from - The starting time to get records from.
; to - The ending time to get records to.
; start - The paginated index from value
; count - The paginated records count to be read
; response - takes the format of the request content of No.7

6. Get the records from a table (By IDs)
*POST /analytics/records/{tableName}*
; tableName - The name of the table from which the records are retrieved.
; Content  - A List of IDs of the records to be retrieved in the following
format.
[ "id1" , "id2" , "id3" ]
; response - takes the format of the request content of No.7

7. Create records ( can be created in different tables or in the same )
*POST /analytics/records*
; Content - A list of records in json format like in below.
[
    {
        "id": "id1",
        "tenantId": -1234,
        "tableName": "tableName1",
        "timestamp": "yyyy-mm-dd hh:mm:ss",
        "values":
        {
            "columnName1": "value1",
            "columnName2": "value2"
        }
    },
   {
        "id": "id2",
        "tenantId": -1234,
        "tableName": "tableName2",
        "timestamp": "yyyy-mm-dd hh:mm:ss",
        "values":
        {
            "columnName1": "value1",
            "columnName2": "value2"
        }
    },
]

8. Delete records
*DELETE /analytics/records/{tableName}/{timeFrom}/{timeTo}*
; tableName - Name of the table from which the records are deleted.
; timeFrom - The starting time to delete records from.
; timeTo - The end time to delete records to.

9. Update records
*PUT /analytics/records*
; Content - As same as the POST method for creating records

10. Get the record count of table
*GET /analytics/count/{tableName}*
; tableName - The name of the table

11. Create Indices for a table
*POST /analytics/indices/{tableName}*
; tableName - The name of the table of which the indices are set
; Content - takes the following format. TYPE is one of "INTEGER",
"BOOLEAN", "DOUBLE", "STRING", "FLOAT", "LONG"
{
    "indexColumnName1" : "TYPE1",
    "indexColumnName2" : "TYPE2"
}

12. get the indices of a table
*GET /analytics/indices/{tableName}*
; tableName - The name of the table
; Response will be of the format of the previous POST request's Content.

13. Clear the indices of a table
*DELETE /analytics/indices/{tableName}*
; tableName - The name of the table

14. Search records of a table
*POST /analytics/search*
; Content - takes the following format
{
    "tableName": "sampleTableName",
    "language": "sampleLanguageName",
    "query": "sampleQuery",
    "start": "start-location-of-the-result",
    "count": "maximum-number-of-entries-to-return"
}

If a method does not have a specific response mentioned above, the response
will take the following format.

{
"status" : "statusValue",
"message" : "sampleMessage"
}

Suggestions and feedbacks are appreciated.

Thanks,

-- 
Gimanthaa Bandara
Software Engineer
WSO2. Inc : http://wso2.com
Mobile : +94714961919
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to