← Back to Docs Index

General Information

  • Base URL: slserver.objectid.io (optoinal on premisis installation available)
  • HTTP Method: POST
  • Content-Type: application/json
  • Authentication: based on Ed25519 seed

Each endpoint triggers a Move smart contract execution on the IOTA Rebased network. All requests are stateless and self-contained.

controllerCap, OIDcontrollerCap, and creditToken can be obtained through the dApp at https://dapp.objectid.io after successfully acquiring a Domain Linked Verifiable Credential (DLVC) and receiving credit tokens.


Endpoints

POST /create_object

Creates a new object on-chain.

Request Body:

  • seed: string
  • network: string
  • creditToken: string
  • OIDcontrollerCap: string
  • object_type: string
  • product_url: string
  • description: string
  • op_code: string
  • immutable_metadata: object
  • mutable_metadata: object
  • geo_location: string

Response:

jsonCopyEdit{
  "success": true,
  "txDigest": "0x...",
  "newObjectId": "0x..."
}

On failure:

jsonCopyEdit{
  "success": false,
  "txDigest": "0x...",
  "error": "Execution error message"
}

POST /update_object_mutable_metadata

Updates mutable metadata of an object.

Request Body:

  • seed: string
  • network: string
  • creditToken: string
  • controllerCap: string
  • object: string
  • new_mutable_metadata: string (JSON stringified)

Response:

jsonCopyEdit{
  "success": true,
  "txDigest": "0x..."
}

POST /update_owner_did

Updates the owner DID of an object.

Request Body:

  • seed: string
  • network: string
  • creditToken: string
  • controllerCap: string
  • object: string
  • new_owner_did: string

Response: as above.


POST /update_agent_did

Updates the agent DID of an object.

Request Body:

  • seed: string
  • network: string
  • creditToken: string
  • controllerCap: string
  • object: string
  • new_agent_did: string

Response: same as above.


POST /update_geo_location

Updates the geolocation field.

Request Body:

  • seed: string
  • network: string
  • creditToken: string
  • controllerCap: string
  • object: string
  • new_location: string

Response: same as above.


POST /delete_object

Deletes an existing object.

Request Body:

  • seed: string
  • network: string
  • creditToken: string
  • controllerCap: string
  • object: string

Response: same as above.


POST /create_event

Creates and links an event to an object.

Request Body:

  • seed: string
  • network: string
  • creditToken: string
  • controllerCap: string
  • object: string
  • event_type: string
  • immutable_metadata: string
  • mutable_metadata: string

Response: same as above.


POST /update_event_mutable_metadata

Updates the mutable metadata of an event.

Request Body:

  • seed: string
  • network: string
  • creditToken: string
  • controllerCap: string
  • event: string
  • new_mutable_metadata: string

Response: same as above.


POST /delete_event

Deletes an event.

Request Body:

  • seed: string
  • network: string
  • creditToken: string
  • controllerCap: string
  • object: string
  • event: string

Response: same as above.


POST /create_counter

Creates a counter linked to an object.

Request Body:

  • seed: string
  • network: string
  • creditToken: string
  • controllerCap: string
  • object: string
  • value: number
  • unit: string
  • step: number
  • immutable_metadata: string
  • mutable_metadata: string

Response: same as above.


POST /delete_counter

Deletes a counter.

Request Body:

  • seed: string
  • network: string
  • creditToken: string
  • controllerCap: string
  • object: string
  • counter: string

Response: same as above.


POST /counter_stepup

Increments the counter.

Request Body:

  • seed: string
  • network: string
  • creditToken: string
  • controllerCap: string
  • object: string
  • counter: string

Response: same as above.


POST /counter_stepdown

Decrements the counter.

Request Body:

  • seed: string
  • network: string
  • creditToken: string
  • controllerCap: string
  • objectId: string
  • counter: string

Response: same as above.


POST /counter_set_value

Sets a counter to a specific value.

Request Body:

  • seed: string
  • network: string
  • creditToken: string
  • controllerCap: string
  • objectId: string
  • counter: string
  • new_value: number

Response: same as above.


POST /get_object

Retrieves an object from the chain.

Request Body:

  • seed: string (can be "000..." placeholder)
  • network: string
  • objectId: string

Response:

jsonCopyEdit{
  "success": true,
  "objectData": {
    // object structure
  }
}

POST /get_objects

Retrieves a list of all known objects of a specific type (OIDObject), using the configured package ID.

Request Body

Field Type Description
seed string Ed25519 seed (can be a placeholder like "000...000")
network string IOTA network name (e.g., "testnet")
after string or null Object ID cursor for pagination. If null, fetches the first page

Response

jsonCopyEdit{
  "success": true,
  "objectsList": [
    {
      "node": {
        "objectId": "0xabc...",
        "type": "product",
        "creator": "0x123...",
        "owner_did": "did:iota:...",
        "geo_location": "9C3X+5V Berlin",
        ...
      },
      "cursor": "0xabc..."
    },
    ...
  ]
}
  • The cursor field (inside each ObjectEdge) can be used as the after parameter in the next request to retrieve the following page.
  • If objectsList.length < pageSize, then the end of the list has been reached.

Example Usage for Pagination

First request:

{
“seed”: “000.”,
“network”: “testnet”,
“after”: null
}

Response:

{
“success”: true,
“objectsList”: [
{ “node”: { . }, “cursor”: “0xabc.” },
.
]
}

Next request:

{
“seed”: “000.”,
“network”: “testnet”,
“after”: “0xabc.”
}

This pagination follows a cursor-based model (not offset-based), ensuring consistent traversal even as data changes.

← Back to Docs Index