Operations by Domain

Asset Core provides 16 operations across 5 domains. This reference documents each operation with its arguments, errors, and examples.

Overview

Operations are categorized by the entity type they affect. Each operation has:

  • Tags describing domain, action, scope, and reversibility
  • Arguments specific to the operation
  • Errors that may be returned
  • Example showing typical usage

Structure

All operations use the same envelope:

{
  "op": "OperationName",
  "args": { ... }
}

Fields

Tag Definitions

Domain: What entity type is affected

  • container, balance, instance, slot, schema

Action: What kind of change

  • create, destroy, move, link, consolidate

Scope: How many entities

  • single, multi

Reversibility: Can it be undone

  • reversible, destructive, neutral

Examples

Container Operations

CreateContainer

Creates a new container for storing assets.

Tags: container create single reversible

ArgumentTypeRequiredDescription
container_idintegerYesUnique container identifier
kindstringYesContainer kind: Standard, Slots, or Grid
ownerintegerNoOptional owner identifier

Errors: ContainerAlreadyExists

{
  "op": "CreateContainer",
  "args": {
    "container_id": 1001,
    "kind": "Standard",
    "owner": null
  }
}

RemoveContainer

Deletes an empty container.

Tags: container destroy single destructive

ArgumentTypeRequiredDescription
container_idintegerYesContainer to remove

Errors: ContainerNotFound

{
  "op": "RemoveContainer",
  "args": {
    "container_id": 1001
  }
}

Balance Operations

AddFungible

Adds quantity to a fungible balance.

Tags: balance create single reversible

ArgumentTypeRequiredDescription
container_idintegerYesTarget container
class_idintegerYesAsset class
keyintegerYesBalance key
quantityintegerYesAmount to add

Errors: InvalidQuantity, ContainerNotFound, WrongContainerKind, UnregisteredClassShape, InvalidOperation

{
  "op": "AddFungible",
  "args": {
    "container_id": 1001,
    "class_id": 100,
    "key": 1,
    "quantity": 500
  }
}

RemoveFungible

Removes quantity from a fungible balance.

Tags: balance destroy single destructive

ArgumentTypeRequiredDescription
container_idintegerYesTarget container
class_idintegerYesAsset class
keyintegerYesBalance key
quantityintegerYesAmount to remove

Errors: InvalidQuantity, ContainerNotFound, WrongContainerKind, InsufficientBalance

{
  "op": "RemoveFungible",
  "args": {
    "container_id": 1001,
    "class_id": 100,
    "key": 1,
    "quantity": 100
  }
}

TransferFungible

Moves fungible quantity between containers.

Tags: balance move multi neutral

ArgumentTypeRequiredDescription
from_containerintegerYesSource container
to_containerintegerYesDestination container
class_idintegerYesAsset class
keyintegerYesBalance key
quantityintegerYesAmount to transfer

Errors: InvalidQuantity, InvalidOperation, ContainerNotFound, WrongContainerKind, InsufficientBalance, UnregisteredClassShape

{
  "op": "TransferFungible",
  "args": {
    "from_container": 1001,
    "to_container": 1002,
    "class_id": 100,
    "key": 1,
    "quantity": 250
  }
}

MergeStacks

Combines two fungible stacks into one.

Tags: balance consolidate multi reversible

ArgumentTypeRequiredDescription
src_stackintegerYesStack to merge from
dst_stackintegerYesStack to merge into

Errors: InvalidOperation, ContainerNotFound, WrongContainerKind, StackNotFound, IncompatibleStacks

ConsolidateStacks

Merges all matching stacks in a container.

Tags: balance consolidate multi reversible

ArgumentTypeRequiredDescription
container_idintegerYesContainer to consolidate
class_idintegerYesAsset class
keyintegerYesBalance key

Errors: ContainerNotFound, WrongContainerKind, InvalidOperation, StackNotFound

Instance Operations

MintInstance

Creates a new unique instance.

Tags: instance create single reversible

ArgumentTypeRequiredDescription
class_idintegerYesInstance class
keyintegerYesInstance key

Errors: IntegerOverflow

{
  "op": "MintInstance",
  "args": {
    "class_id": 200,
    "key": 1
  }
}

The minted instance ID is returned in minted_instances.

BurnInstance

Destroys a unique instance permanently.

Tags: instance destroy single destructive

ArgumentTypeRequiredDescription
instance_idintegerYesInstance to destroy

Errors: InstanceNotFound, HasChildren

Attach

Attaches a child instance to a parent.

Tags: instance link multi reversible

ArgumentTypeRequiredDescription
child_instanceintegerYesInstance to attach
parent_instanceintegerYesParent instance

Errors: InvalidOperation, InstanceNotFound, AlreadyAttached, WouldCreateCycle

Detach

Detaches an instance from its parent.

Tags: instance link single destructive

ArgumentTypeRequiredDescription
child_instanceintegerYesInstance to detach

Errors: InstanceNotFound, NotAttached

Slot Operations

PlaceInSlot

Places an instance into a container slot.

Tags: slot move single reversible

ArgumentTypeRequiredDescription
container_idintegerYesTarget container
instance_idintegerYesInstance to place
slot_indexintegerYesSlot position

Errors: ContainerNotFound, WrongContainerKind, SlotOutOfBounds, InstanceNotFound, SlotOccupied

{
  "op": "PlaceInSlot",
  "args": {
    "container_id": 1001,
    "instance_id": 9001,
    "slot_index": 0
  }
}

RemoveFromSlot

Removes an instance from a slot.

Tags: slot move single destructive

ArgumentTypeRequiredDescription
container_idintegerYesTarget container
slot_indexintegerYesSlot position

Errors: ContainerNotFound, WrongContainerKind, SlotOutOfBounds, SlotEmpty

SwapSlots

Exchanges contents between two slots.

Tags: slot move multi neutral

ArgumentTypeRequiredDescription
container_aintegerYesFirst container
slot_aintegerYesFirst slot
container_bintegerYesSecond container
slot_bintegerYesSecond slot

Errors: InvalidOperation, ContainerNotFound, WrongContainerKind, SlotOutOfBounds, SlotEmpty

Schema Operations

RegisterClass

Registers a new asset class definition.

Tags: schema create single reversible

ArgumentTypeRequiredDescription
request.class_idintegerYesUnique class identifier
request.namestringYesHuman-readable name
request.fungiblebooleanYesWhether assets are fungible

Errors: ClassAlreadyExists, ClassCapacityExceeded

{
  "op": "RegisterClass",
  "args": {
    "request": {
      "class_id": 100,
      "name": "Gold Coin",
      "fungible": true
    }
  }
}

RegisterClassShape

Adds a shape configuration to an existing class.

Tags: schema create single reversible

ArgumentTypeRequiredDescription
request.class_idintegerYesClass to configure
request.shape_idintegerYesUnique shape identifier
request.widthintegerYesShape width
request.heightintegerYesShape height

Errors: ClassNotFound, ShapeAlreadyDefined

{
  "op": "RegisterClassShape",
  "args": {
    "request": {
      "class_id": 200,
      "shape_id": 1,
      "width": 2,
      "height": 3
    }
  }
}