cosmos-sdk/docs/rest/API_draft.md
2017-07-27 22:20:59 -04:00

3.6 KiB

API

Serve on http://localhost:2024

Don't allow cors

Create Tx

POST /tx

Input: signed tx as json, just like --prepare... Goes to the node, and returns result:

{
  "check_tx": {
    "code": 0,
    "data": "",
    "log": ""
  },
  "deliver_tx": {
    "code": 0,
    "data": "",
    "log": ""
  },
  "hash": "4D0EB7853E71AB6E3021990CF733F70F4CC2E001",
  "height": 1494
}

POST /sign

Input:

{ "name": "matt", "password": "1234567890", "tx": { // just like prepare, tx (with sigs/multi but no sigs) } }

Example tx:

wrappers = combine(feeWrap, nonceWrap, chainWrap, sigWrap)

UI will have to know about feeWrap to pass info in

{
  "type": "sigs/multi",
  "data": {
    "tx": {
      "type": "chain/tx",
      "data": {
        "chain_id": "lakeshore",
        "expires_at": 0,
        "tx": {
          "type": "nonce",
          "data": {
            "sequence": 3,
            "signers": [
              {
                "chain": "",
                "app": "sigs",
                "addr": "91C959ADE03D8973E8F2FBA9FD2EED327DCE2B0A"
              }
            ],
            "tx": {
              "type": "coin/send",
              "data": {
                "inputs": [
                  {
                    "address": {
                      "chain": "",
                      "app": "role",
                      "addr": "62616E6B32"
                    },
                    "coins": [
                      {
                        "denom": "mycoin",
                        "amount": 900000
                      }
                    ]
                  }
                ],
                "outputs": [
                  {
                    "address": {
                      "chain": "",
                      "app": "sigs",
                      "addr": "BDADF167E6CF2CDF2D621E590FF1FED2787A40E0"
                    },
                    "coins": [
                      {
                        "denom": "mycoin",
                        "amount": 900000
                      }
                    ]
                  }
                ]
              }
            }
          }
        }
      }
    },
    "signatures": []
  }
}

Matt's proposal:

POST /build/send

Input:

{
    "fees": {"denom": "atom", "amount": 23},
    "to": {"app": "role", "addr": "62616E6B32" },
    "from": {"app": "sigs", "addr": "BDADF167E6CF2CDF2D621E590FF1FED2787A40E0" },
    "amount": { "denom": "mycoin", "amount": 900000 },
    "multi": true,
}

Output: the input for /sign

POST /build/create-role

Input:

{
    "name": "trduvtqicrtqvrqy",
    "min_sigs": 2,
    "members": [
        {"app": "sigs", "addr": "BDADF167E6CF2CDF2D621E590FF1FED2787A40E0" },
        {"app": "sigs", "addr": "91C959ADE03D8973E8F2FBA9FD2EED327DCE2B0A" }
    ]
}

Query:

GET /query/account/sigs:BDADF167E6CF2CDF2D621E590FF1FED2787A40E0

{
  "height": 1170,
  "data": {
    "coins": [
      {
        "denom": "mycoin",
        "amount": 12345
      }
    ]
  }
}

Other stuff

init / serve on cli

keys management under /keys:

List, get, create (delete + update)?

proxy mounted as well under /tendermint

/tendermint/status /tendermint/block

info about self...

/

{
    "app": "basecli",
    "version": "0.7.1",  // of client, server????
    "modules": {
        "chain": "0.1.0",
        "fees": "0.2.1",
        "coin": "0.3.2",
        "stake": "0.1.2"
    },
    "nodes": [
        "localhost:46657",
        "mercury.interchain.io:443"
    ]
}

/seeds

{
    "last_height": 4555,
    "update_problems": "too much change"
}

info on last seed