mirror of
https://github.com/grassrootseconomics/cic-custodial.git
synced 2024-12-02 18:16:46 +01:00
Mohamed Sohail
9e1d62a014
* wip: add transfer auithorization * feat: update transferAuthPayload * switch to MAX_INT for value and use revoke flag * tranfer handler: fix nonce rollback on EOA account * feat: switch to session based session transfer auth * Demurrage contracts require setting the approval value to 0 before updating the value after the initial limit is set * This implementation auto-revokes every 15 min after arequest is created. Subsequent requests will fail untill the value is set back to 0 * feat: settable approve session timeout
286 lines
9.6 KiB
JSON
286 lines
9.6 KiB
JSON
{
|
|
"swagger": "2.0",
|
|
"info": {
|
|
"description": "Interact with CIC Custodial API",
|
|
"title": "CIC Custodial API",
|
|
"termsOfService": "https://grassecon.org/pages/terms-and-conditions.html",
|
|
"contact": {
|
|
"name": "API Support",
|
|
"url": "https://grassecon.org/pages/contact-us",
|
|
"email": "devops@grassecon.org"
|
|
},
|
|
"license": {
|
|
"name": "AGPL-3.0",
|
|
"url": "https://www.gnu.org/licenses/agpl-3.0.en.html"
|
|
},
|
|
"version": "1.0"
|
|
},
|
|
"basePath": "/api",
|
|
"paths": {
|
|
"/account/create": {
|
|
"post": {
|
|
"description": "Create a new custodial account.",
|
|
"consumes": [
|
|
"*/*"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"account"
|
|
],
|
|
"summary": "Create a new custodial account.",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/api.OkResp"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/api.ErrResp"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/account/status/{address}": {
|
|
"get": {
|
|
"description": "Return network balance and nonce.",
|
|
"consumes": [
|
|
"*/*"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"network"
|
|
],
|
|
"summary": "Get an address's network balance and nonce.",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Account Public Key",
|
|
"name": "address",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/api.OkResp"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/api.ErrResp"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/api.ErrResp"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/sign/transfer": {
|
|
"post": {
|
|
"description": "Sign and dispatch a transfer request.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"network"
|
|
],
|
|
"summary": "Sign and dispatch transfer request.",
|
|
"parameters": [
|
|
{
|
|
"description": "Sign Transfer Request",
|
|
"name": "signTransferRequest",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"amount": {
|
|
"type": "integer"
|
|
},
|
|
"from": {
|
|
"type": "string"
|
|
},
|
|
"to": {
|
|
"type": "string"
|
|
},
|
|
"voucherAddress": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/api.OkResp"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/api.ErrResp"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/api.ErrResp"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/sign/transferAuth": {
|
|
"post": {
|
|
"description": "Sign and dispatch a transfer authorization (approve) request.",
|
|
"consumes": [
|
|
"application/json"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"network"
|
|
],
|
|
"summary": "Sign and dispatch a transfer authorization (approve) request.",
|
|
"parameters": [
|
|
{
|
|
"description": "Sign Transfer Authorization (approve) Request",
|
|
"name": "signTransferAuthorzationRequest",
|
|
"in": "body",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"amount": {
|
|
"type": "integer"
|
|
},
|
|
"authorizedAddress": {
|
|
"type": "string"
|
|
},
|
|
"authorizer": {
|
|
"type": "string"
|
|
},
|
|
"voucherAddress": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/api.OkResp"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/api.ErrResp"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/api.ErrResp"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/track/{trackingId}": {
|
|
"get": {
|
|
"description": "Track an OTX (Origin transaction) status.",
|
|
"consumes": [
|
|
"*/*"
|
|
],
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"tags": [
|
|
"track"
|
|
],
|
|
"summary": "Track an OTX (Origin transaction) status.",
|
|
"parameters": [
|
|
{
|
|
"type": "string",
|
|
"description": "Tracking Id",
|
|
"name": "trackingId",
|
|
"in": "path",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"schema": {
|
|
"$ref": "#/definitions/api.OkResp"
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"schema": {
|
|
"$ref": "#/definitions/api.ErrResp"
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Internal Server Error",
|
|
"schema": {
|
|
"$ref": "#/definitions/api.ErrResp"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"definitions": {
|
|
"api.ErrResp": {
|
|
"type": "object",
|
|
"properties": {
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"ok": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"api.H": {
|
|
"type": "object",
|
|
"additionalProperties": {}
|
|
},
|
|
"api.OkResp": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ok": {
|
|
"type": "boolean"
|
|
},
|
|
"result": {
|
|
"$ref": "#/definitions/api.H"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |