Skip to main content

Pact OpenAPI

{
  "openapi": "3.0.0",
  "info": {
    "title": "Pact REST API",
    "description": "Transactional API for a runtime offering Pact smart contracts.\n",
    "version": "1.3.7",
    "x-logo": {
      "url": "https://i.imgur.com/bAZFAGF.png",
      "alttext": "Kadena Chainweb Logo",
      "href": "https://api.chainweb.com/openapi"
    }
  },
  "servers": [
    {
      "url": "https://api.chainweb.com/chainweb/{apiVersion}/mainnet01/chain/{chainId}/pact/api/v1",
      "description": "Pact API for a chain on the Kadena mainnet.",
      "variables": {
        "apiVersion": {
          "default": "0.0"
        },
        "chainId": {
          "default": "0"
        }
      }
    },
    {
      "url": "https://api.testnet.chainweb.com/chainweb/{apiVersion}/testnet04/chain/{chainId}/pact/api/v1",
      "description": "Pact API for a chain on the Kadena testnet.",
      "variables": {
        "apiVersion": {
          "default": "0.0"
        },
        "chainId": {
          "default": "0"
        }
      }
    }
  ],
  "paths": {
    "/local": {
      "post": {
        "description": "Blocking/sync call to submit a command for non-transactional execution. In a\nblockchain environment this would be a node-local “dirty read”, which can\neither serve as a node-local repl execution, or fully gassed transaction\nsimulation and transaction validation. Any database writes or changes to the\nenvironment are rolled back.\n",
        "tags": [
          "endpoint-local"
        ],
        "summary": "local",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/command"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "preflight",
            "in": "query",
            "description": "Trigger fully-gassed mainnet transaction execution simulation and\ntransaction metadata validations.\n",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "rewindDepth",
            "in": "query",
            "description": "Rewind transaction execution environment by a number of block\nheights.\n",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "signatureVerification",
            "in": "query",
            "description": "Require user signature verification when validating transaction\nmetadata.\n",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The command's result.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/command-result"
                    },
                    {
                      "$ref": "#/components/schemas/preflight-result"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The command was invalid.",
            "content": {
              "text/plain": {
                "type": "string",
                "example": "Validation failed: Invalid command: Failed reading: empty",
                "schema": {
                  "$ref": "#/components/schemas/validation-failure"
                }
              }
            }
          }
        }
      }
    },
    "/send": {
      "post": {
        "description": "Asynchronous submission of one or more public (unencrypted) commands\nto the blockchain for execution.\n",
        "tags": [
          "endpoint-send"
        ],
        "summary": "send",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "cmds"
                ],
                "properties": {
                  "cmds": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "$ref": "#/components/schemas/command"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The commands were successfully submitted. The response contains their request keys.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "requestKeys"
                  ],
                  "properties": {
                    "requestKeys": {
                      "description": "Request keys for use with `poll` or `listen` to retrieve results.",
                      "type": "array",
                      "minItems": 1,
                      "items": {
                        "$ref": "#/components/schemas/request-key"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The command failed.",
            "content": {
              "text/plain": {
                "type": "string",
                "example": "Validation failed for hash \"j5f3mZaF9pVA7OmV4nTuw5-paG9LzLQJWAMuGGRRLeQ\": Attempt to buy gas failed with: (read coin-table sender): Failure: Tx Failed: read: row not found: 368820f80c324bbc7c2b0610688a7da43e39f91d118732671cd9c7500ff43cca",
                "schema": {
                  "$ref": "#/components/schemas/validation-failure"
                }
              }
            }
          }
        }
      }
    },
    "/poll": {
      "post": {
        "description": "Allows polling for one or more command results by request key.\n",
        "summary": "poll",
        "tags": [
          "endpoint-poll"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "requestKeys"
                ],
                "properties": {
                  "requestKeys": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "$ref": "#/components/schemas/request-key"
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "confirmationDepth",
            "in": "query",
            "description": "Configures how many blocks should be mined until the requested transaction is ready.\n",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The command results for some of the requested request keys.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "#/components/schemas/command-result"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/listen": {
      "post": {
        "description": "Blocking request for single command result.\n",
        "summary": "listen",
        "tags": [
          "endpoint-listen"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "listen"
                ],
                "properties": {
                  "listen": {
                    "$ref": "#/components/schemas/request-key"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The request key was found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/command-result"
                }
              }
            }
          }
        }
      }
    },
    "/private": {
      "post": {
        "description": "Asynchronous submission of a single addressed command which\nwill be transmitted with end-to-end encryption only between addressed entity nodes.\nPrivate payload metadata required.\n",
        "tags": [
          "endpoint-private"
        ],
        "summary": "private",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/command"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The command was accepted.",
            "content": {
              "application/json": {
                "type": "object",
                "schema": {
                  "properties": {
                    "requestKeys": {
                      "description": "Request keys for use with `poll` or `listen` to retrieve results.",
                      "type": "array",
                      "minItems": 1,
                      "maxItems": 1,
                      "items": {
                        "$ref": "#/components/schemas/request-key"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/spv": {
      "servers": [
        {
          "url": "https://api.chainweb.com/chainweb/{apiVersion}/mainnet01/chain/{chainId}/pact",
          "description": "Pact API for a chain on the Kadena mainnet.",
          "variables": {
            "apiVersion": {
              "default": "0.0"
            },
            "chainId": {
              "default": "0"
            }
          }
        },
        {
          "url": "https://api.testnet.chainweb.com/chainweb/{apiVersion}/testnet04/chain/{chainId}/pact",
          "description": "Pact API for a chain on the Kadena testnet.",
          "variables": {
            "apiVersion": {
              "default": "0.0"
            },
            "chainId": {
              "default": "0"
            }
          }
        }
      ],
      "post": {
        "description": "Blocking request to fetch spv proof of a cross chain transaction. Request must be sent to the chain where the transaction is initiated.\n",
        "summary": "spv",
        "tags": [
          "endpoint-spv"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/spv-object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The requested spv proof.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/spv-proof"
                }
              }
            }
          },
          "400": {
            "description": "The requested spv proof was not findable.",
            "content": {
              "text/plain": {
                "example": "SPV target not reachable: target chain not reachable. Chainweb instance is too young",
                "schema": {
                  "description": "Error message with the description of failed proof requests.",
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "command": {
        "title": "Pact Command",
        "tags": [
          "model-command"
        ],
        "description": "Represents a single blockchain Pact transaction.",
        "type": "object",
        "required": [
          "cmd",
          "hash",
          "sigs"
        ],
        "example": {
          "$ref": "#/components/examples/command"
        },
        "properties": {
          "cmd": {
            "description": "Stringified JSON `payload` object. Canonic non-malleable signed transaction data.\n",
            "type": "string"
          },
          "hash": {
            "description": "Unpadded Base64URL of Blake2s-256 hash of the `cmd` field value. Serves as a command\n`requestKey` since each transaction must be unique.\n",
            "type": "string",
            "contentEncoding": "base64url",
            "example": "H6XjdPHzMai2HLa3_yVkXfkFYMgA0bGfsB0kOsHAMuI"
          },
          "sigs": {
            "description": "List of signatures corresponding one-to-one with `signers` array in the payload.\n",
            "type": "array",
            "minItems": 0,
            "items": {
              "properties": {
                "sig": {
                  "anyOf": [
                    {
                      "type": "string",
                      "contentEncoding": "base16",
                      "description": "Base16-encoded Ed25519 signature of `hash` field\nfor corresponding signer in payload.\n",
                      "example": "8d452109cc0439234c093b5e204a7428bc0a54f22704402492e027aaa9375a34c910d8a468a12746d0d29e9353f4a3fbebe920d63bcc7963853995db015d060f"
                    },
                    {
                      "$ref": "#/components/schemas/webauthn-sig-string"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "webauthn-sig-string": {
        "type": "string",
        "description": "Stringified JSON WebAuthn signature object.\n\nFor a WebAuthn signature string to be valid, its corresponding `Signer`\nmust have `scheme: \"WebAuthn\"`.\n\nThe schema of a Pact WebAuthn signature object resembles that of\nthe WebAuthn standard `CredentialResponse`.\nIts fields can be computed from the `response` field of a WebAuthn\n`CredentialResponse`. For example, to construct a WebAuthn signature\nstring in the browser:\n\n```\nconst resp = await navigator.credentials.get();\nconst auth = resp.response.authenticatorData();\nconst sig = resp.response.signature;\nJSON.stringify({\n  authenticatorData: base64url_to_base64(auth),\n  clientDataJSON: resp.response.clientDataJSON,\n  signature: base64url_to_base64(sig)\n})\n```\n"
      },
      "payload": {
        "description": "Pact Command Payloads are encoded as strings in Pact commands, and contain all\nnon-malleable data for a transaction.\n",
        "tags": [
          "model-payload"
        ],
        "type": "object",
        "required": [
          "payload",
          "meta",
          "signers",
          "networkId",
          "nonce"
        ],
        "example": {
          "$ref": "#/components/examples/payload"
        },
        "properties": {
          "payload": {
            "oneOf": [
              {
                "title": "Exec Message",
                "description": "Standard pact execution.",
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "Executable pact code."
                  },
                  "data": {
                    "description": "Arbitrary JSON to be accessed via `read-msg`, `read-integer` et al in Pact code."
                  }
                }
              },
              {
                "title": "Continuation Message",
                "description": "Continuation of a previous transaction defpact.",
                "properties": {
                  "pactId": {
                    "type": "string",
                    "description": "ID of pact running previous step."
                  },
                  "step": {
                    "type": "number",
                    "description": "Step in defpact to execute."
                  },
                  "rollback": {
                    "type": "boolean",
                    "description": "Whether to execute a specified rollback on this step."
                  },
                  "data": {
                    "description": "Arbitrary JSON to be accessed via `read-msg`, `read-integer` et al in Pact code."
                  },
                  "proof": {
                    "type": "string",
                    "contentEncoding": "base64url",
                    "description": "Backend-specific data for continuing a cross-chain proof."
                  }
                }
              }
            ]
          },
          "meta": {
            "oneOf": [
              {
                "title": "Public metadata (Chainweb)",
                "description": "Chainweb/public command metadata.",
                "required": [
                  "chainId",
                  "sender",
                  "gasLimit",
                  "gasPrice",
                  "ttl",
                  "creationTime"
                ],
                "properties": {
                  "chainId": {
                    "type": "string",
                    "description": "Platform-specific chain identifier. For chainweb this is the stringified chain number."
                  },
                  "sender": {
                    "type": "string",
                    "description": "Indicates gas-paying account."
                  },
                  "gasLimit": {
                    "type": "number",
                    "minimum": 1,
                    "description": "Limits total amount of gas to be consumed."
                  },
                  "gasPrice": {
                    "type": "number",
                    "description": "Specifies price per gas unit to be charged."
                  },
                  "ttl": {
                    "type": "number",
                    "minimum": 1,
                    "maximum": 180000,
                    "description": "Time in seconds after creation time that transaction can be executed."
                  },
                  "creationTime": {
                    "type": "number",
                    "description": "POSIX epoch sending time for transaction."
                  }
                }
              },
              {
                "title": "Private metadata (Kuro)",
                "description": "Metadata for Kuro endpoints, including `private`.",
                "properties": {
                  "address": {
                    "description": "Private message envelope address. Required only for private messages, otherwise null.",
                    "required": [
                      "from",
                      "to"
                    ],
                    "properties": {
                      "from": {
                        "type": "string",
                        "description": "Sender entity name"
                      },
                      "to": {
                        "description": "Recipient entity names",
                        "type": "array",
                        "minItems": 1,
                        "items": {
                          "type": "string",
                          "description": "Recipient entity name"
                        }
                      }
                    }
                  }
                }
              }
            ]
          },
          "signers": {
            "description": "List of signers, corresponding with list of signatures in outer command.",
            "type": "array",
            "items": {
              "title": "Signer",
              "required": [
                "pubKey"
              ],
              "properties": {
                "pubKey": {
                  "type": "string",
                  "description": "Public key image. Pact default is base16 ED25519 encoding."
                },
                "address": {
                  "type": "string",
                  "description": "Address, if any. Pact default expects this to match pubKey."
                },
                "scheme": {
                  "type": "string",
                  "description": "Signer scheme. Default is ED25519. When the Signer is\n`WebAuthn`, the corresponding `sig` must be a WebAuthn\nsignature string.\n",
                  "enum": [
                    "ED25519",
                    "WebAuthn"
                  ]
                },
                "clist": {
                  "description": "List of capabilities associated with/installed by this signer.",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Fully-qualified capability name."
                    },
                    "args": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/pact-value"
                      }
                    }
                  }
                }
              }
            }
          },
          "networkId": {
            "description": "Backend-specific identifier of target network.",
            "type": "string",
            "enum": [
              "mainnet01",
              "testnet04"
            ]
          },
          "nonce": {
            "description": "Arbitrary user-supplied value.",
            "type": "string"
          }
        }
      },
      "spv-object": {
        "description": "Object consisting of data required to fetch proof of a cross chain transaction\n",
        "type": "object",
        "required": [
          "requestKey",
          "targetChainId"
        ],
        "properties": {
          "requestKey": {
            "type": "string",
            "description": "Request Key of an initiated cross chain transaction at the source chain.",
            "example": "7af34f24d55d2fcf5de6fccfeeb837698ebff4598303237c64348a47806c8646"
          },
          "targetChainId": {
            "type": "string",
            "description": "Target chain id of the cross chain transaction.",
            "example": "1"
          }
        }
      },
      "preflight-result": {
        "title": "Preflight /local result",
        "tags": [
          "model-preflight-result"
        ],
        "example": {
          "$ref": "#/components/examples/preflight-result"
        },
        "description": "The result of attempting to execute preflight simulation for a single well-formed Pact command.",
        "type": "object",
        "required": [
          "preflightResult",
          "preflightWarnings"
        ],
        "properties": {
          "preflightResult": {
            "$ref": "#/components/schemas/command-result"
          },
          "preflightWarnings": {
            "description": "A list of warnings associated with deprecated features in upcoming pact releases.",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "command-result": {
        "title": "Command Result",
        "tags": [
          "model-command-result"
        ],
        "example": {
          "$ref": "#/components/examples/command-result"
        },
        "description": "The result of attempting to execute a single well-formed Pact command.",
        "type": "object",
        "required": [
          "reqKey",
          "result",
          "logs",
          "metaData",
          "gas"
        ],
        "properties": {
          "reqKey": {
            "$ref": "#/components/schemas/request-key"
          },
          "result": {
            "oneOf": [
              {
                "title": "Success",
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "success"
                    ]
                  },
                  "data": {
                    "$ref": "#/components/schemas/pact-value"
                  }
                }
              },
              {
                "title": "Failure",
                "type": "object",
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "failure"
                    ]
                  },
                  "error": {
                    "$ref": "#/components/schemas/pact-error"
                  }
                }
              }
            ]
          },
          "txId": {
            "type": "number",
            "description": "Database-internal transaction tracking ID."
          },
          "logs": {
            "type": "string",
            "description": "Backend-specific value providing image of database logs."
          },
          "metaData": {
            "properties": {
              "blockTime": {
                "type": "number",
                "description": "POSIX time of block"
              },
              "prevBlockHash": {
                "type": "string",
                "description": "Parent Block hash of containing block."
              },
              "blockHash": {
                "type": "string",
                "description": "Block hash of containing block."
              },
              "blockHeight": {
                "type": "number",
                "description": "Block height of containing block."
              },
              "publicMeta": {
                "type": "object",
                "description": "Public metadata.",
                "properties": {
                  "creationTime": {
                    "type": "number",
                    "description": "POSIX time the command was created"
                  },
                  "ttl": {
                    "type": "number",
                    "description": "Transaction time to live"
                  },
                  "gasLimit": {
                    "type": "number",
                    "description": "The transaction's gas limit"
                  },
                  "chainId": {
                    "type": "string",
                    "description": "Chain identifier"
                  },
                  "gasPrice": {
                    "type": "number",
                    "description": "The price of each unit of gas in KDA"
                  },
                  "sender": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/event"
            }
          },
          "continuation": {
            "description": "Describes result of a defpact execution.",
            "properties": {
              "pactId": {
                "type": "string",
                "description": "Identifies this defpact execution. On first step generally matches request key."
              },
              "step": {
                "type": "number",
                "description": "Identifies which step executed in defpact."
              },
              "stepCount": {
                "type": "number",
                "description": "Total number of steps in pact."
              },
              "executed": {
                "type": "boolean",
                "description": "optional value for private pacts, indicates if step was skipped."
              },
              "stepHasRollback": {
                "type": "boolean",
                "description": "indicates if pact step has rollback."
              },
              "continuation": {
                "description": "Closure describing executed pact.",
                "properties": {
                  "def": {
                    "type": "string",
                    "description": "Fully-qualified defpact name."
                  },
                  "args": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/pact-value"
                    }
                  }
                }
              },
              "yield": {
                "description": "Value yielded during pact step, optionally indicating cross-chain execution.",
                "properties": {
                  "data": {
                    "type": "object",
                    "description": "Pact value object containing yielded data.",
                    "additionalProperties": {
                      "$ref": "#/components/schemas/pact-value"
                    }
                  },
                  "source": {
                    "type": "string",
                    "description": "Source chain ID."
                  },
                  "provenance": {
                    "properties": {
                      "targetChainId": {
                        "type": "string",
                        "description": "Chain ID of target chain for next step."
                      },
                      "moduleHash": {
                        "description": "Hash of module executing defpact.",
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "gas": {
            "type": "number"
          }
        }
      },
      "pact-value": {
        "description": "Pact value compound type.",
        "tags": [
          "model-pact-value"
        ],
        "anyOf": [
          {
            "title": "String",
            "description": "Pact strings encode directly to JSON strings.",
            "type": "string"
          },
          {
            "title": "Decimal",
            "description": "There are two alternative JSON representations for Decimal.",
            "oneOf": [
              {
                "title": "Number",
                "description": "JSON numbers can be used whenever the precision is adequate\n",
                "type": "number"
              },
              {
                "title": "Object",
                "description": "When JSON number precision is not enough, you can use an object with the number's decimal representation as a string\n",
                "type": "object",
                "required": [
                  "decimal"
                ],
                "properties": {
                  "decimal": {
                    "type": "string",
                    "description": "String representation of number to avoid rounding error",
                    "example": "1.23498218000001"
                  }
                }
              }
            ]
          },
          {
            "title": "Integer",
            "description": "There are two alternative JSON representations for Integer.",
            "type": "object",
            "required": [
              "int"
            ],
            "properties": {
              "int": {
                "oneOf": [
                  {
                    "title": "Number",
                    "description": "JSON numbers are rounded to integer values.\n",
                    "type": "number",
                    "example": 12345
                  },
                  {
                    "title": "String",
                    "description": "When JSON number precision is not enough, you can specify the integer as a string\n",
                    "type": "string",
                    "example": "123456789"
                  }
                ]
              }
            }
          },
          {
            "title": "Boolean",
            "description": "JSON booleans encode to Pact booleans.",
            "type": "boolean"
          },
          {
            "title": "Object",
            "type": "object",
            "description": "JSON objects not matching other Pact Value schemas become Pact objects.",
            "additionalProperties": {
              "$ref": "#/components/schemas/pact-value"
            }
          },
          {
            "title": "Time",
            "type": "object",
            "required": [
              "time"
            ],
            "properties": {
              "time": {
                "type": "string",
                "description": "Literal time value using the UTC time format.",
                "example": "1970-01-01T00:00:00Z"
              }
            }
          },
          {
            "title": "List",
            "description": "JSON lists become Pact lists.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/pact-value"
            }
          },
          {
            "title": "Module Reference",
            "description": "Special pact value to directly reference a module or interface.",
            "type": "object",
            "required": [
              "refName",
              "refSpec"
            ],
            "example": {
              "$ref": "#/components/examples/module_reference"
            },
            "properties": {
              "refName": {
                "type": "object",
                "required": [
                  "name",
                  "namespace"
                ],
                "description": "The module name",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Bare name of a module"
                  },
                  "namespace": {
                    "type": "string",
                    "nullable": true,
                    "description": "Namespace of the indicated module"
                  }
                }
              },
              "refSpec": {
                "type": "array",
                "description": "The module names to substitute for any references present in the module code",
                "items": {
                  "type": "object",
                  "required": [
                    "name",
                    "namespace"
                  ],
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Bare name of a module"
                    },
                    "namespace": {
                      "type": "string",
                      "nullable": true,
                      "description": "Namespace of the indicated module"
                    }
                  }
                }
              }
            }
          },
          {
            "title": "Guard",
            "description": "Special pact value for guard types.",
            "type": "object",
            "oneOf": [
              {
                "title": "Keyset",
                "description": "A keyset forms a rule made from a set of key/address values and a predicate function.\nWhen enforced, transaction signer list is evaluated against keyset.\n",
                "required": [
                  "keys",
                  "pred"
                ],
                "properties": {
                  "keys": {
                    "type": "array",
                    "description": "Set of public key/address values. Native pact public keys are ED25519 in base16 encoding.",
                    "items": {
                      "type": "string"
                    }
                  },
                  "pred": {
                    "type": "string",
                    "description": "A pact function name. Built-in values are `keys-all` (match all keys in set),\n`keys-any` (match at least one), and `keys-2` (match at least 2).\nCustom functions have a fully-qualified name and\nmust accept two integer arguments `count` (number of keys in set) and `matched`\n(number of set keys found in transaction set).\n"
                  }
                }
              },
              {
                "title": "Keyset Reference",
                "description": "Refers to a keyset in the Pact environment/database installed with `define-keyset`.",
                "required": [
                  "keysetref"
                ],
                "properties": {
                  "keysetref": {
                    "type": "string",
                    "description": "Installed keyset name."
                  }
                }
              },
              {
                "title": "User Guard",
                "description": "Closure of call to \"guard function\" which is a boolean user function with arguments.\n",
                "required": [
                  "fun",
                  "args"
                ],
                "properties": {
                  "fun": {
                    "description": "Fully-qualified guard function name.",
                    "type": "string"
                  },
                  "args": {
                    "description": "Argument values to the guard function.",
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/pact-value"
                    }
                  }
                }
              },
              {
                "title": "Module Guard",
                "type": "object",
                "description": "Autonomous guard that only allows module code access, or requires module admin.\n",
                "required": [
                  "moduleName",
                  "name"
                ],
                "properties": {
                  "moduleName": {
                    "required": [
                      "name",
                      "namespace"
                    ],
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "module bare name"
                      },
                      "namespace": {
                        "type": "string",
                        "description": "module namespace"
                      }
                    }
                  },
                  "name": {
                    "type": "string",
                    "description": "Distinguishing/informative name for module guard."
                  }
                }
              },
              {
                "title": "Pact Guard",
                "type": "object",
                "description": "Autonomous guard that only allows a particular pact execution, referenced by ID, to pass.\nTwo executions of the same defpact code result in distinct pact IDs. A pact guard\ncreated inside of this execution will only pass when running that particular pact.\n",
                "required": [
                  "pactId",
                  "name"
                ],
                "properties": {
                  "pactId": {
                    "description": "Defpact execution ID.",
                    "type": "string"
                  },
                  "name": {
                    "type": "string",
                    "description": "Distinguishing/informative name for pact guard."
                  }
                }
              }
            ]
          }
        ]
      },
      "event": {
        "description": "Pact output event.",
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Event defcap name."
          },
          "module": {
            "type": "object",
            "description": "Qualified module name of event defcap.",
            "required": [
              "name"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "module bare name"
              },
              "namespace": {
                "type": "string",
                "description": "module namespace"
              }
            }
          },
          "params": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/pact-value"
            }
          },
          "moduleHash": {
            "type": "string",
            "description": "Hash of emitting module."
          }
        }
      },
      "pact-error": {
        "description": "Verbose object describing failed execution.\n",
        "type": "object",
        "required": [
          "message"
        ],
        "properties": {
          "message": {
            "type": "string",
            "description": "Descriptive error text."
          },
          "callStack": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "info": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        }
      },
      "request-key": {
        "title": "Request Key",
        "type": "string",
        "description": "Unique ID of a pact transaction consisting of its hash.",
        "pattern": "^[a-zA-Z0-9_-]{43}$",
        "contentEncoding": "base64url",
        "minLength": 43,
        "maxLength": 43,
        "example": "y3aWL72-3wAy7vL9wcegGXnstH0lHi-q-cfxkhD5JCw"
      },
      "validation-failure": {
        "title": "Validation Failure",
        "type": "string",
        "description": "Failure message of unexecuted command due to an invalid gas payer, meta, or other environments."
      },
      "spv-proof": {
        "title": "SPV Proof",
        "type": "string",
        "description": "Backend-specific data for continuing a cross-chain proof.",
        "example": "\"eyJzdWJqZWN0Ijp7ImlucHV0IjoiQUJSN0ltZGhjeUk2TlRRMExDSnlaWE4xYkhRaU9uc2ljM1JoZEhWeklqb2ljM1ZqWTJWemN5SXNJbVJoZEdFaU9pSlhjbWwwWlNCemRXTmpaV1ZrWldRaWZTd2ljbVZ4UzJWNUlqb2lZa0Y0TjNOd1dqZFdUbUpZWTNocVZFUkNTamt5U21SdlUyVlFjWGx0U25KNWNXOUNhMWcyUkVoYWJ5SXNJbXh2WjNNaU9pSnBRVTF4Y0ZwaVUxSkRaR2hQUzA1YVVYZzFTMHBOTFZOUlNGRlZXRzF4UlZoUlRIRkNUVVpSVFVkSklpd2laWFpsYm5SeklqcGJleUp3WVhKaGJYTWlPbHNpZEdWemRDMXpaVzVrWlhJaUxDSXpaRGxsT1dZeFptSTBZemt6TnpneU5qWmpZV1JrTmpObE4yRTBOMkkzWVRZME5UTmlaVGsyTVdSaU1ETTNNMlkxWXpWbVlUUXdZV05sWlRaaVpHVm1JaXd4WFN3aWJtRnRaU0k2SWxSU1FVNVRSa1ZTSWl3aWJXOWtkV3hsSWpwN0ltNWhiV1Z6Y0dGalpTSTZiblZzYkN3aWJtRnRaU0k2SW1OdmFXNGlmU3dpYlc5a2RXeGxTR0Z6YUNJNkluVjBYMHBmV2s1cmIzbGhVRlZGU21ocGQxWmxWMjVyVTFGdU9VcFVPWE5SUTFkTFpHcHFWbFp5VjI4aWZWMHNJbTFsZEdGRVlYUmhJanB1ZFd4c0xDSmpiMjUwYVc1MVlYUnBiMjRpT201MWJHd3NJblI0U1dRaU9qRXhOams1TkRaOSJ9LCJhbGdvcml0aG0iOiJTSEE1MTJ0XzI1NiIsIm9iamVjdCI6IkFBQUFFQUFBQUFBQUFBQUJBUGhpTkRUdEFHT0l4dWE4OTFYUGU0NVFRS2QtTFdOekNpc0JDeHlmeDliQ0FPUkRnUUR2RFRrWmdOTzZ2M1ZpbU1wZ2ZGd2kyQm1mZ29jRVdwVmxRRW9EQWVoT1JPeFdBckJidXpldnZLTUdQZTB1RlVfUE8yejM3VC0tY0thdDZ1d3pBVm9DbFVrU1lXaXRDODF0TERVd2JYYVFWRTdnZFp1ckN6d0RiZUlBdlpBcUFKVThWZHZkMS1nYmo2UEtIVXdWQm00UWRvNl9YUkpYdHdKTGE4a0N3OWJhQWQtbXRubnlsUkczOC1WcTZzZmlZWm0xd2tKejhZcU5ZT2gwbVZCTktFR1VBTkdQWlB4NGFhMWFDdTJ1Ty1VRkJXLWxLbFdFeFU0a2JjMkszOFZCT21ZeEFDakxpdjMwazdBaGdwVXBCWUIxcEYwWFRqTmU4d3k4aHQta2FveFFKbTZpQVlXSkFYZlpXZERNdkQ3Z1UydUItWFdTVUh3bVpvM3NzV0stRzh1OTIxempBTzllbVBkOFJRVk5jOWZWZWJHN0lMb2lqVDlYMm9Db1p2Q00xQ29yR3laUUFTLVVZd3c4dkJ1bEVVYXlxaHZEQUFreUthbHk1TXk1bzJYVXZpZlZsNkg5QUM5ZXZsczVxMXh2bGhQbE9UWnJZNVB2SDNFbDd3dTBZTTJQYmZzaE1lUGFBUFpZRFJoWncyXzBVM1hIZllQbmJ6QlQ4bkc3a2gtR09kRTBTcFFCNEVOQ0FVWGEzcGVoMnhVd2dCVHd5WFVvc3RDRjNqQ21Scm9ZRGlEUTVGTGhYNkVQQUdlMUF2cFhJazZFM2tpdnUxY1N4aVFYV0hUcW1pdEUwLTVYaVpjNU4zQ3ZBS1dMNmM1RDdQSV84aW0zbG04cWhtZl84UXp3d2ZFcVpXQXZoQ0dWc1VVdCIsImNoYWluIjoxfQ\"\n"
      }
    },
    "examples": {
      "preflight-result": {
        "preflightResult": {
          "gas": 123,
          "result": {
            "status": "success",
            "data": 3
          },
          "reqKey": "cQ-guhschk0wTvMBtrqc92M7iYm4S2MYhipQ2vNKxoI",
          "logs": "wsATyGqckuIvlm89hhd2j4t6RMkCrcwJe_oeCYr7Th8",
          "metaData": null,
          "continuation": null,
          "txId": "456",
          "events": [
            {
              "name": "TRANSFER",
              "params": [
                "Alice",
                "Bob",
                10
              ],
              "module": "coin",
              "moduleHash": "ut_J_ZNkoyaPUEJhiwVeWnkSQn9JT9sQCWKdjjVVrWo"
            }
          ]
        },
        "preflightWarnings": [
          "Warning: Using deprecated native +: decimal/integer operator overload is deprecated"
        ]
      },
      "command": {
        "hash": "H6XjdPHzMai2HLa3_yVkXfkFYMgA0bGfsB0kOsHAMuI",
        "sigs": [
          {
            "sig": "8d452109cc0439234c093b5e204a7428bc0a54f22704402492e027aaa9375a34c910d8a468a12746d0d29e9353f4a3fbebe920d63bcc7963853995db015d060f"
          }
        ],
        "cmd": "{\"payload\":{\"exec\":{\"data\":null,\"code\":\"(+ 1 2)\"}},\"signers\":[{\"pubKey\":\"368820f80c324bbc7c2b0610688a7da43e39f91d118732671cd9c7500ff43cca\"}],\"meta\":{\"gasLimit\":1000,\"chainId\":\"0\",\"gasPrice\":1.0e-2,\"sender\":\"368820f80c324bbc7c2b0610688a7da43e39f91d118732671cd9c7500ff43cca\"},\"nonce\":\"nonce-value\"}"
      },
      "command-result": {
        "gas": 123,
        "result": {
          "status": "success",
          "data": 3
        },
        "reqKey": "cQ-guhschk0wTvMBtrqc92M7iYm4S2MYhipQ2vNKxoI",
        "logs": "wsATyGqckuIvlm89hhd2j4t6RMkCrcwJe_oeCYr7Th8",
        "metaData": null,
        "continuation": null,
        "txId": "456",
        "events": [
          {
            "name": "TRANSFER",
            "params": [
              "Alice",
              "Bob",
              10
            ],
            "module": "coin",
            "moduleHash": "ut_J_ZNkoyaPUEJhiwVeWnkSQn9JT9sQCWKdjjVVrWo"
          }
        ]
      },
      "payload": {
        "payload": {
          "exec": {
            "data": null,
            "code": "(coin.transfer \"Alice\" \"Bob\" 10.0)"
          }
        },
        "signers": [
          {
            "pubKey": "368820f80c324bbc7c2b0610688a7da43e39f91d118732671cd9c7500ff43cca",
            "clist": [
              {
                "name": "coin.TRANSFER",
                "args": [
                  "Alice",
                  "Bob",
                  10
                ]
              }
            ]
          }
        ],
        "meta": {
          "gasLimit": 1000,
          "chainId": "0",
          "gasPrice": 0.01,
          "sender": "368820f80c324bbc7c2b0610688a7da43e39f91d118732671cd9c7500ff43cca"
        },
        "nonce": "nonce-value"
      },
      "module_reference": {
        "refName": {
          "namespace": null,
          "name": "coin"
        },
        "refSpec": [
          {
            "namespace": null,
            "name": "fungible-v2"
          }
        ]
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "std-pact-api",
      "x-displayName": "Standard Pact API",
      "tags": [
        "endpoint-local",
        "endpoint-send",
        "endpoint-poll",
        "endpoint-listen"
      ]
    },
    {
      "name": "private-api",
      "x-displayName": "Private Pact API",
      "tags": [
        "endpoint-private"
      ]
    },
    {
      "name": "spv-api",
      "x-displayName": "SPV API",
      "tags": [
        "endpoint-spv"
      ]
    },
    {
      "name": "models",
      "x-displayName": "Pact API models",
      "tags": [
        "model-command",
        "model-command-result",
        "model-payload",
        "model-pact-value"
      ]
    }
  ],
  "tags": [
    {
      "name": "endpoint-local",
      "x-displayName": "Non-transactional execution"
    },
    {
      "name": "endpoint-send",
      "x-displayName": "Transactional batch execution"
    },
    {
      "name": "endpoint-poll",
      "x-displayName": "Batch polling for results"
    },
    {
      "name": "endpoint-listen",
      "x-displayName": "Blocking listen for single transaction result"
    },
    {
      "name": "endpoint-private",
      "x-displayName": "Private transaction execution"
    },
    {
      "name": "endpoint-spv",
      "x-displayName": "SPV proof creation for cross chain transaction"
    },
    {
      "name": "model-command",
      "x-displayName": "Pact Commands",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/command\" showReadOnly={true} showWriteOnly={true} />\n"
    },
    {
      "name": "model-command-result",
      "x-displayName": "Pact Command Results",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/command-result\" showReadOnly={true} showWriteOnly={true} />\n"
    },
    {
      "name": "model-payload",
      "x-displayName": "Pact Command Payloads",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/payload\" showReadOnly={true} showWriteOnly={true} />\n"
    },
    {
      "name": "model-pact-value",
      "x-displayName": "Pact Values",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/pact-value\" showReadOnly={true} showWriteOnly={true} />\n"
    }
  ]
}
;

Was this page helpful?

Receive important developer updates