This page describes an older version of the product. The latest stable version is 16.4.

REST API


The REST API exposing HTTP based interface Space. It is leveraging the XAP API. It support the following methods:

  1. GET - can be used to perform an introduceType, readByID or a readMultiple action by a space query.
  2. POST - can be used to perform a write / writeMultiple or update / updateMultiple actions.
  3. DELETE - can be used to perform take / takeMultiple actions either by ID or by a space query.


Introduce Type

Description Introduce the specific type to space.
Request URL PUT http://localhost:8080/{Type}/_introduce_type

Request Schema:

{
  "idProperty": { //required
    "propertyName": "id",
    "autoGenerated": true, // optional
    "indexType": "BASIC" // optional, use with autoGenerate. SEE com.gigaspaces.metadata.index.SpaceIndexType
  },
  "routingProperty": {
    "propertyName": "id",
    "indexType": "BASIC" // optional. SEE com.gigaspaces.metadata.index.SpaceIndexType
  },
  "fixedProperties": [
    {
      "propertyName": "id",
      "propertyType": "int32" // predefined types or full Java class path*
    },
    {
      "propertyName": "prop1",
      "propertyType": "string", // predefined types or full Java class path*
      "documentSupport": "DEFAULT" // optional. SEE com.gigaspaces.metadata.SpaceDocumentSupport
    },
    {
      "propertyName": "prop2",
      "propertyType": "java.util.Map", // predefined types or full Java class path*
      "documentSupport": "DEFAULT", // optional. SEE com.gigaspaces.metadata.SpaceDocumentSupport
      "storageType": "DEFAULT" // optional, use with documentSupport. SEE com.gigaspaces.metadata.StorageType
    },
    {
      "propertyName": "indexedProp",
      "propertyType": "string", // predefined types or full Java class path*
      "indexType": "BASIC", // optional. SEE com.gigaspaces.metadata.index.SpaceIndexType
      "uniqueIndex": true // optional, must be used with indexType field only. Default to false.
    }
  ],
  "compoundIndex": {
    "paths": [
      "prop1",
      "prop2"
    ],
    "unique": true // optional
  },
  "fifoSupport": "DEFAULT", // SEE com.gigaspaces.annotation.pojo.FifoSupport
  "blobStoreEnabled": true,
  "storageType": "DEFAULT", // SEE com.gigaspaces.metadata.StorageType
  "supportsOptimisticLocking": true,
  "supportsDynamicProperties": false // optional, default to true
}

Response Schema:

{
   "status":"success"
}

Predefined types and their conversion:

Type name Java class
int32 java.lang.Integer
int64 java.lang.Long
double java.lang.Double
number java.lang.Double
float java.lang.Float
boolean java.lang.Boolean
string java.lang.String
datetime java.util.Date
array java.util.List
set java.util.Set
sortedset java.util.SortedSet
object com.gigaspaces.document.SpaceDocument

Examples:

curl -XPUT -H "Content-Type: application/json" -d '{"idProperty":{"propertyName":"id","autoGenerated":false},"routingProperty":{"propertyName":"id"},"fixedProperties":[{"propertyName":"id","propertyType":"int64"},{"propertyName":"name","propertyType":"string"},{"propertyName":"age","propertyType":"java.lang.Integer"}]}' http://localhost:8080/MyObject/_introduce_type

Write

Description Write single entry to the space.
Request URL POST http://localhost:8080/{Type}/
Request Headers Content-Type: application/json
Request Body JSON object representation of a SpaceDocument object.

Response Schema:

{
   "status":"success"
}

Examples:

curl -XPOST -H "Content-Type: application/json" -d '{"id":1, "name":"myName", "age":10}' http://localhost:8080/MyObject

Write Multiple

Description Write multiple entries to the space.
Request URL POST http://localhost:8080/{Type}/
Request Headers Content-Type: application/json
Request Body JSON array representation of a SpaceDocument objects.

Response Schema:

{
   "status":"success"
}

Examples:

curl -XPOST -H "Content-Type: application/json" -d '[{"id":2, "name":"John", "age":16},
{"id":3, "name":"Michael", "age":18}]' http://localhost:8080/MyObject

Count

Description Returns the number of entries in space of the specified type
Request URL GET http://localhost:8080/{Type}/count

Response Schema:

{
   "status":"success",
   "data":0
}

Examples:

curl -XGET http://localhost:8080/{Type}/count

Read Multiple

Description Read multiple entries from space that matches the query.
Request URL GET http://localhost:8080/{Type}/
Request Query Parameters query - a SQLQuery that is a SQL-like syntax
max - the maximum amount of entries to read

Response Schema:

{
   "status":"success",
   "data":[
      {
         "id":1,
         "name":"First"
      },
      {
         "id":2,
         "name":"Second"
      }
   ]
}

Examples:

curl -XGET http://localhost:8080/MyObject/?query=age='10'
curl -XGET http://localhost:8080/MyObject/?query=id=%271%27%20or%20id=%272%27%20or%20id=%273%27

*The url is encoded, the query is: id=‘1’ or id=‘2’ or id=‘3’

Read By Id

Description Read entry from space with the provided id
Request URL GET http://localhost:8080/{Type}/{id}

Response Schema:

{
   "status":"success",
   "data":{
      "id":1,
      "name":"First"
   }
}

Examples:

curl -XGET http://localhost:8080/MyObject/1
curl -XGET http://localhost:8080/MyObject/2
curl -XGET http://localhost:8080/MyObject/3

Update Multiple

Description Update entries in space
Request URL POST http://localhost:8080/{Type}

Response Schema:

{
   "status":"success"
}

Examples:

curl -XPOST -H "Content-Type: application/json" -d '[{"id":1,"name":"myName","age":11},{"id":2,"name":"John","age":17},{"id":3,"name":"Michael","age":19}]' http://localhost:8080/MyObject

See that data2 field is updated:

curl http://localhost:8080/MyObject/?query=age=11

Take Multiple

Description Gets and deletes entries from space that matches the query.
Request URL DELETE http://localhost:8080/{Type}/
Request Query Parameters query - a SQLQuery that is a SQL-like syntax

Response Schema:

{
   "status":"success",
   "data":[
        {
           "id":1,
           "name":"First"
        },
        {
           "id":2,
           "name":"Second"
        }
     ]
}

Examples:

curl -XDELETE http://localhost:8080/MyObject/?query=id=%271%27%20or%20id=%272%27

*The url is encoded, the query is: id=1 or id=2

See that only Item3 remains:

curl -XGET http://localhost:8080/MyObject/?query=id=%271%27%20or%20id=%272%27%20or%20id=%273%27

Take By Id

Description Gets and deletes the entry from space with the provided id
Request URL DELETE http://localhost:8080/{Type}/{id}

Response Schema:

{
   "status":"success",
   "data":{
         "id":1,
         "name":"First"
      }
}

Examples:

curl -XDELETE http://localhost:8080/MyObject/3

See that Item3 does not exists:

curl -XGET http://localhost:8080/MyObject/?query=id=%271%27%20or%20id=%272%27%20or%20id=%273%27