github.com/vcilabs/webrpc@v0.5.2-0.20201116131534-162e27b1b33b/_examples/golang-basics/example.webrpc.json (about)

     1  {
     2    "webrpc": "v1",
     3    "name": "example",
     4    "version": "v0.0.1",
     5    "messages": [
     6      {
     7        "name": "Kind",
     8        "type": "enum",
     9        "fields": [
    10          {
    11            "name": "USER",
    12            "type": "uint32",
    13            "value": "0"
    14          },
    15          {
    16            "name": "ADMIN",
    17            "type": "uint32",
    18            "value": "1"
    19          }
    20        ]
    21      },
    22      {
    23        "name": "Empty",
    24        "type": "struct",
    25        "fields": [
    26        ]
    27      },
    28      {
    29        "name": "User",
    30        "type": "struct",
    31        "fields": [
    32          {
    33            "name": "ID",
    34            "type": "uint64",
    35            "optional": false,
    36            "meta": [
    37              { "json": "id" },
    38              { "go.tag.db": "id" }
    39            ]
    40          },
    41          {
    42            "name": "username",
    43            "type": "string",
    44            "optional": false,
    45            "meta": [
    46              { "json": "USERNAME" },
    47              { "go.tag.db": "username" }
    48            ]
    49          },
    50          {
    51            "name": "role",
    52            "type": "string",
    53            "optional": false,
    54            "meta": [
    55              { "go.tag.db": "-" }
    56            ]
    57          },
    58          {
    59            "name": "createdAt",
    60            "type": "timestamp",
    61            "optional": true,
    62            "meta": [
    63              { "json": "created_at" },
    64              { "go.tag.json": "created_at,omitempty" },
    65              { "go.tag.db": "created_at" }
    66            ]
    67          }
    68  
    69        ]
    70      },
    71      {
    72        "name": "ComplexType",
    73        "type": "struct",
    74        "fields": [
    75          {
    76            "name": "meta",
    77            "type": "map<string,any>"
    78          },
    79          {
    80            "name": "metaNestedExample",
    81            "type": "map<string,map<string,uint32>>"
    82          },
    83          {
    84            "name": "namesList",
    85            "type": "[]string"
    86          },
    87          {
    88            "name": "numsList",
    89            "type": "[]int64"
    90          },
    91          {
    92            "name": "doubleArray",
    93            "type": "[][]string"
    94          },
    95          {
    96            "name": "listOfMaps",
    97            "type": "[]map<string,uint32>"
    98          },
    99          {
   100            "name": "listOfUsers",
   101            "type": "[]User"
   102          },
   103          {
   104            "name": "mapOfUsers",
   105            "type": "map<string,User>"
   106          },
   107          {
   108            "name": "user",
   109            "type": "User"
   110          }
   111        ]
   112      }
   113    ],
   114    "services": [
   115      {
   116        "name": "ExampleService",
   117        "methods": [
   118          {
   119            "name": "Ping",
   120            "inputs": [],
   121            "outputs": []
   122          },
   123          {
   124            "name": "Status",
   125            "inputs": [],
   126            "outputs": [
   127              {
   128                "name": "status",
   129                "type": "bool"
   130              }
   131            ]
   132          },
   133          {
   134            "name": "GetUser",
   135            "inputs": [
   136              {
   137                "name": "header",
   138                "type": "map<string,string>"
   139              },
   140              {
   141                "name": "userID",
   142                "type": "uint64"
   143              }
   144            ],
   145            "outputs": [
   146              {
   147                "name": "code",
   148                "type": "uint32"
   149              },
   150              {
   151                "name": "user",
   152                "type": "User"
   153              }
   154            ]
   155          }
   156        ]
   157      }
   158    ]
   159  }