api_endpoints = {'admin': '/ext/admin',
                 'avm': '/ext/bc/X',
                 'health': '/ext/health',
                 'info': '/ext/info',
                 'ipcs': '/ext/ipcs',
                 'keystore': '/ext/keystore',
                 'platform': '/ext/bc/P',
                 'timestamp': '/ext/timestamp'}

api_meta = {'/ext/admin': {'admin': {'alias': {'parameters': {'alias': {'optional': False,
                                                                        'type': 'string'},
                                                              'endpoint': {'optional': False,
                                                                           'type': 'string'}},
                                               'returns': {'success': {'optional': False,
                                                                       'type': 'bool'}}},
                                     'aliasChain': {'parameters': {'alias': {'optional': False,
                                                                             'type': 'string'},
                                                                   'chain': {'optional': False,
                                                                             'type': 'string'}},
                                                    'returns': {'success': {'optional': False,
                                                                            'type': 'bool'}}},
                                     'getBlockchainID': {'parameters': {'alias': {'optional': False,
                                                                                  'type': 'string'}},
                                                         'returns': {'blockchainID': {'optional': False,
                                                                                      'type': 'string'}}},
                                     'getNetworkID': {'parameters': {},
                                                      'returns': {'networkID': {'optional': False,
                                                                                'type': 'int'}}},
                                     'getNetworkName': {'parameters': {},
                                                        'returns': {'networkName': {'optional': False,
                                                                                    'type': 'string'}}},
                                     'getNodeID': {'parameters': {},
                                                   'returns': {'nodeID': {'optional': False,
                                                                          'type': 'string'}}},
                                     'getNodeVersion': {'parameters': {},
                                                        'returns': {'version': {'optional': False,
                                                                                'type': 'string'}}},
                                     'lockProfile': {'parameters': {'fileName': {'optional': False,
                                                                                 'type': 'string'}},
                                                     'returns': {'success': {'optional': False,
                                                                             'type': 'bool'}}},
                                     'memoryProfile': {'parameters': {'fileName': {'optional': False,
                                                                                   'type': 'string'}},
                                                       'returns': {'success': {'optional': False,
                                                                               'type': 'bool'}}},
                                     'peers': {'parameters': {},
                                               'returns': {'peers': {'optional': False,
                                                                     'type': {'[]': {}}}}},
                                     'startCPUProfiler': {'parameters': {'fileName': {'optional': False,
                                                                                      'type': 'string'}},
                                                          'returns': {'success': {'optional': False,
                                                                                  'type': 'bool'}}},
                                     'stopCPUProfiler': {'parameters': {},
                                                         'returns': {'success': {'optional': False,
                                                                                 'type': 'bool'}}}}},
            '/ext/bc/P': {'platform': {'addDefaultSubnetDelegator': {'parameters': {'destination': {'optional': False,
                                                                                                    'type': 'string'},
                                                                                    'endTime': {'optional': False,
                                                                                                'type': 'int'},
                                                                                    'id': {'optional': False,
                                                                                           'type': 'string'},
                                                                                    'payerNonce': {'optional': False,
                                                                                                   'type': 'int'},
                                                                                    'stakeAmount': {'optional': False,
                                                                                                    'type': 'int'},
                                                                                    'startTime': {'optional': False,
                                                                                                  'type': 'int'}},
                                                                     'returns': {'unsignedTx': {'optional': False,
                                                                                                'type': 'string'}}},
                                       'addDefaultSubnetValidator': {
                                           'parameters': {'delegationFeeRate': {'optional': False,
                                                                                'type': 'int'},
                                                          'destination': {'optional': False,
                                                                          'type': 'string'},
                                                          'endTime': {'optional': False,
                                                                      'type': 'int'},
                                                          'id': {'optional': False,
                                                                 'type': 'string'},
                                                          'payerNonce': {'optional': False,
                                                                         'type': 'int'},
                                                          'stakeAmount': {'optional': False,
                                                                          'type': 'int'},
                                                          'startTime': {'optional': False,
                                                                        'type': 'int'}},
                                           'returns': {'unsignedTx': {'optional': False,
                                                                      'type': 'string'}}},
                                       'addNonDefaultSubnetValidator': {'parameters': {'endTime': {'optional': False,
                                                                                                   'type': 'int'},
                                                                                       'id': {'optional': False,
                                                                                              'type': 'string'},
                                                                                       'payerNonce': {'optional': False,
                                                                                                      'type': 'int'},
                                                                                       'startTime': {'optional': False,
                                                                                                     'type': 'int'},
                                                                                       'subnetID': {'optional': False,
                                                                                                    'type': 'string'},
                                                                                       'weight': {'optional': False,
                                                                                                  'type': 'int'}},
                                                                        'returns': {'unsignedTx': {'optional': False,
                                                                                                   'type': 'string'}}},
                                       'createAccount': {'parameters': {'password': {'optional': False,
                                                                                     'type': 'string'},
                                                                        'username': {'optional': False,
                                                                                     'type': 'string'}},
                                                         'returns': {'address': {'optional': False,
                                                                                 'type': 'string'}}},
                                       'createBlockchain': {'parameters': {'genesisData': {'optional': False,
                                                                                           'type': 'string'},
                                                                           'name': {'optional': False,
                                                                                    'type': 'string'},
                                                                           'payerNonce': {'optional': False,
                                                                                          'type': 'int'},
                                                                           'subnetID': {'optional': False,
                                                                                        'type': 'string'},
                                                                           'vmID': {'optional': False,
                                                                                    'type': 'string'}},
                                                            'returns': {'unsignedTx': {'optional': False,
                                                                                       'type': 'string'}}},
                                       'createSubnet': {'parameters': {'controlKeys': {'optional': False,
                                                                                       'type': {'[]': {}}},
                                                                       'payerNonce': {'optional': False,
                                                                                      'type': 'int'},
                                                                       'threshold': {'optional': False,
                                                                                     'type': 'int'}},
                                                        'returns': {'unsignedTx': {'optional': False,
                                                                                   'type': 'string'}}},
                                       'exportAVA': {'parameters': {'amount': {'optional': False,
                                                                               'type': 'int'},
                                                                    'payerNonce': {'optional': False,
                                                                                   'type': 'int'},
                                                                    'to': {'optional': False,
                                                                           'type': 'string'}},
                                                     'returns': {'unsigndTx': {'optional': False,
                                                                               'type': 'string'}}},
                                       'exportKey': {'parameters': {'address': {'optional': False,
                                                                                'type': 'string'},
                                                                    'password': {'optional': False,
                                                                                 'type': 'string'},
                                                                    'username': {'optional': False,
                                                                                 'type': 'string'}},
                                                     'returns': {'privateKey': {'optional': False,
                                                                                'type': 'string'}}},
                                       'getAccount': {'parameters': {'address': {'optional': False,
                                                                                 'type': 'string'}},
                                                      'returns': {'address': {'optional': False,
                                                                              'type': 'string'},
                                                                  'balance': {'optional': False,
                                                                              'type': 'int'},
                                                                  'nonce': {'optional': False,
                                                                            'type': 'int'}}},
                                       'getBlockchainStatus': {'parameters': {'blockchainID': {'optional': False,
                                                                                               'type': 'string'}},
                                                               'returns': {'status': {'optional': False,
                                                                                      'type': 'string'}}},
                                       'getBlockchains': {'parameters': {},
                                                          'returns': {'blockchains': {'optional': False,
                                                                                      'type': {'[]': {}}}}},
                                       'getCurrentValidators': {'parameters': {'subnetID': {'optional': False,
                                                                                            'type': 'string'}},
                                                                'returns': {'validators': {'optional': False,
                                                                                           'type': {'[]': {}}}}},
                                       'getPendingValidators': {'parameters': {'subnetID': {'optional': False,
                                                                                            'type': 'string'}},
                                                                'returns': {'validators': {'optional': False,
                                                                                           'type': {'[]': {}}}}},
                                       'getSubnets': {'parameters': {},
                                                      'returns': {'subnets': {'optional': False,
                                                                              'type': {'[]': {}}}}},
                                       'importAVA': {'parameters': {'password': {'optional': False,
                                                                                 'type': 'string'},
                                                                    'payerNonce': {'optional': False,
                                                                                   'type': 'int'},
                                                                    'to': {'optional': False,
                                                                           'type': 'string'},
                                                                    'username': {'optional': False,
                                                                                 'type': 'string'}},
                                                     'returns': {'tx': {'optional': False,
                                                                        'type': 'string'}}},
                                       'importKey': {'parameters': {'password': {'optional': False,
                                                                                 'type': 'string'},
                                                                    'privateKey': {'optional': False,
                                                                                   'type': 'string'},
                                                                    'username': {'optional': False,
                                                                                 'type': 'string'}},
                                                     'returns': {'address': {'optional': False,
                                                                             'type': 'string'}}},
                                       'issueTx': {'parameters': {'tx': {'optional': False,
                                                                         'type': 'string'}},
                                                   'returns': {'txID': {'optional': False,
                                                                        'type': 'string'}}},
                                       'listAccounts': {'parameters': {'password': {'optional': False,
                                                                                    'type': 'string'},
                                                                       'username': {'optional': False,
                                                                                    'type': 'string'}},
                                                        'returns': {'accounts': {'optional': False,
                                                                                 'type': {'[]': {}}}}},
                                       'sampleValidators': {'parameters': {'size': {'optional': False,
                                                                                    'type': 'int'},
                                                                           'subnetID': {'optional': False,
                                                                                        'type': 'string'}},
                                                            'returns': {'validators': {'optional': False,
                                                                                       'type': '[size]string'}}},
                                       'sign': {'parameters': {'password': {'optional': False,
                                                                            'type': 'string'},
                                                               'signer': {'optional': False,
                                                                          'type': 'string'},
                                                               'tx': {'optional': False,
                                                                      'type': 'string'},
                                                               'username': {'optional': False,
                                                                            'type': 'string'}},
                                                'returns': {'tx': {'optional': False,
                                                                   'type': 'string'}}},
                                       'validatedBy': {'parameters': {'blockchainID': {'optional': False,
                                                                                       'type': 'string'}},
                                                       'returns': {'subnetID': {'optional': False,
                                                                                'type': 'string'}}},
                                       'validates': {'parameters': {'subnetID': {'optional': False,
                                                                                 'type': 'string'}},
                                                     'returns': {'blockchainIDs': {'optional': False,
                                                                                   'type': {'[]': {'optional': False,
                                                                                                   'type': 'string'}}}}}}},
            '/ext/bc/X': {'avm': {'Send': {'parameters': {'amount': {'optional': False,
                                                                     'type': 'int'},
                                                          'assetID': {'optional': False,
                                                                      'type': 'string'},
                                                          'password': {'optional': False,
                                                                       'type': 'string'},
                                                          'to': {'optional': False,
                                                                 'type': 'string'},
                                                          'username': {'optional': False,
                                                                       'type': 'string'}},
                                           'returns': {'txID': {'optional': False,
                                                                'type': 'string'}}},
                                  'buildGenesis': {'parameters': {'genesisData': {'optional': False,
                                                                                  'type': 'JSON'}},
                                                   'returns': {'bytes': {'optional': False,
                                                                         'type': 'string'}}},
                                  'createAddress': {'parameters': {'password': {'optional': False,
                                                                                'type': 'string'},
                                                                   'username': {'optional': False,
                                                                                'type': 'string'}},
                                                    'returns': {'address': {'optional': False,
                                                                            'type': 'string'}}},
                                  'createFixedCapAsset': {'parameters': {'denomination': {'optional': False,
                                                                                          'type': 'int'},
                                                                         'initialHolders': {'optional': False,
                                                                                            'type': {'[]': {}}},
                                                                         'name': {'optional': False,
                                                                                  'type': 'string'},
                                                                         'password': {'optional': False,
                                                                                      'type': 'string'},
                                                                         'symbol': {'optional': False,
                                                                                    'type': 'string'},
                                                                         'username': {'optional': False,
                                                                                      'type': 'string'}},
                                                          'returns': {'assetID': {'optional': False,
                                                                                  'type': 'string'}}},
                                  'createMintTx': {'parameters': {'amount': {'optional': False,
                                                                             'type': 'int'},
                                                                  'assetID': {'optional': False,
                                                                              'type': 'string'},
                                                                  'minters': {'optional': False,
                                                                              'type': {'[]': {'optional': False,
                                                                                              'type': 'string'}}},
                                                                  'to': {'optional': False,
                                                                         'type': 'string'}},
                                                   'returns': {'tx': {'optional': False,
                                                                      'type': 'string'}}},
                                  'createVariableCapAsset': {'parameters': {'denomination': {'optional': False,
                                                                                             'type': 'int'},
                                                                            'minterSets': {'optional': False,
                                                                                           'type': {'[]': {}}},
                                                                            'name': {'optional': False,
                                                                                     'type': 'string'},
                                                                            'password': {'optional': False,
                                                                                         'type': 'string'},
                                                                            'symbol': {'optional': False,
                                                                                       'type': 'string'},
                                                                            'username': {'optional': False,
                                                                                         'type': 'string'}},
                                                             'returns': {'assetID': {'optional': False,
                                                                                     'type': 'string'}}},
                                  'exportAVA': {'parameters': {'amount': {'optional': False,
                                                                          'type': 'int'},
                                                               'password': {'optional': False,
                                                                            'type': 'string'},
                                                               'to': {'optional': False,
                                                                      'type': 'string'},
                                                               'username': {'optional': False,
                                                                            'type': 'string'}},
                                                'returns': {'txID': {'optional': False,
                                                                     'type': 'string'}}},
                                  'exportKey': {'parameters': {'address': {'optional': False,
                                                                           'type': 'string'},
                                                               'password': {'optional': False,
                                                                            'type': 'string'},
                                                               'username': {'optional': False,
                                                                            'type': 'string'}},
                                                'returns': {'privateKey': {'optional': False,
                                                                           'type': 'string'}}},
                                  'getAllBalances': {'parameters': {'address': {'optional': False,
                                                                                'type': 'string'}},
                                                     'returns': {'balances': {'optional': False,
                                                                              'type': {'[]': {}}}}},
                                  'getAssetDescription': {'parameters': {'assetID': {'optional': False,
                                                                                     'type': 'string'}},
                                                          'returns': {'denomination': {'optional': False,
                                                                                       'type': 'int'},
                                                                      'name': {'optional': False,
                                                                               'type': 'string'},
                                                                      'symbol': {'optional': False,
                                                                                 'type': 'string'}}},
                                  'getBalance': {'parameters': {'address': {'optional': False,
                                                                            'type': 'string'},
                                                                'assetID': {'optional': False,
                                                                            'type': 'string'}},
                                                 'returns': {'balance': {'optional': False,
                                                                         'type': 'int'}}},
                                  'getTx': {'parameters': {'txID': {'optional': False,
                                                                    'type': 'string'}},
                                            'returns': {'tx': {'optional': False,
                                                               'type': 'string'}}},
                                  'getTxStatus': {'parameters': {'txID': {'optional': False,
                                                                          'type': 'string'}},
                                                  'returns': {'status': {'optional': False,
                                                                         'type': 'string'}}},
                                  'getUTXOs': {'parameters': {'addresses': {'optional': False,
                                                                            'type': 'string'}},
                                               'returns': {'utxos': {'optional': False,
                                                                     'type': {'[]': {'optional': False,
                                                                                     'type': 'string'}}}}},
                                  'importAVA': {'parameters': {'password': {'optional': False,
                                                                            'type': 'string'},
                                                               'to': {'optional': False,
                                                                      'type': 'string'},
                                                               'username': {'optional': False,
                                                                            'type': 'string'}},
                                                'returns': {'txID': {'optional': False,
                                                                     'type': 'string'}}},
                                  'importKey': {'parameters': {'password': {'optional': False,
                                                                            'type': 'string'},
                                                               'privateKey': {'optional': False,
                                                                              'type': 'string'},
                                                               'username': {'optional': False,
                                                                            'type': 'string'}},
                                                'returns': {'address': {'optional': False,
                                                                        'type': 'string'}}},
                                  'issueTx': {'parameters': {'tx': {'optional': False,
                                                                    'type': 'string'}},
                                              'returns': {'txID': {'optional': False,
                                                                   'type': 'string'}}},
                                  'listAddresses': {'parameters': {'password': {'optional': False,
                                                                                'type': 'string'},
                                                                   'username': {'optional': False,
                                                                                'type': 'string'}},
                                                    'returns': {'addresses': {'optional': False,
                                                                              'type': {'[]': {'optional': False,
                                                                                              'type': 'string'}}}}},
                                  'signMintTx': {'parameters': {'minter': {'optional': False,
                                                                           'type': 'string'},
                                                                'password': {'optional': False,
                                                                             'type': 'string'},
                                                                'tx': {'optional': False,
                                                                       'type': 'string'},
                                                                'username': {'optional': False,
                                                                             'type': 'string'}},
                                                 'returns': {'tx': {'optional': False,
                                                                    'type': 'string'}}}}},
            '/ext/health': {'health': {'getLiveness': {'parameters': {},
                                                       'returns': {'checks': {'optional': False,
                                                                              'type': {'{}': {}}},
                                                                   'healthy': {'optional': False,
                                                                               'type': 'bool'}}}}},
            '/ext/info': {'info': {'getBlockchainID': {'parameters': {'alias': {'optional': False,
                                                                                'type': 'string'}},
                                                       'returns': {'blockchainID': {'optional': False,
                                                                                    'type': 'string'}}},
                                   'getNetworkID': {'parameters': {},
                                                    'returns': {'networkID': {'optional': False,
                                                                              'type': 'int'}}},
                                   'getNetworkName': {'parameters': {},
                                                      'returns': {'networkName': {'optional': False,
                                                                                  'type': 'string'}}},
                                   'getNodeID': {'parameters': {},
                                                 'returns': {'nodeID': {'optional': False,
                                                                        'type': 'string'}}},
                                   'getNodeVersion': {'parameters': {},
                                                      'returns': {'version': {'optional': False,
                                                                              'type': 'string'}}},
                                   'peers': {'parameters': {},
                                             'returns': {'peers': {'optional': False,
                                                                   'type': {'[]': {}}}}}}},
            '/ext/ipcs': {'ipcs': {'publishBlockchain': {'parameters': {'blockchainID': {'optional': False,
                                                                                         'type': 'string'}},
                                                         'returns': {'url': {'optional': False,
                                                                             'type': 'string'}}},
                                   'unpublishBlockchain': {'parameters': {'blockchainID': {'optional': False,
                                                                                           'type': 'string'}},
                                                           'returns': {'success': {'optional': False,
                                                                                   'type': 'bool'}}}}},
            '/ext/keystore': {'keystore': {'ListUsers': {'parameters': {},
                                                         'returns': {'users': {'optional': False,
                                                                               'type': {'[]': {'optional': False,
                                                                                               'type': 'string'}}}}},
                                           'createUser': {'parameters': {'password': {'optional': False,
                                                                                      'type': 'string'},
                                                                         'username': {'optional': False,
                                                                                      'type': 'string'}},
                                                          'returns': {'success': {'optional': False,
                                                                                  'type': 'bool'}}},
                                           'deleteUser': {'parameters': {'password': {'optional': False,
                                                                                      'type': 'string'},
                                                                         'username': {'optional': False,
                                                                                      'type': 'string'}},
                                                          'returns': {'success': {'optional': False,
                                                                                  'type': 'bool'}}},
                                           'exportUser': {'parameters': {'password': {'optional': False,
                                                                                      'type': 'string'},
                                                                         'username': {'optional': False,
                                                                                      'type': 'string'}},
                                                          'returns': {'user': {'optional': False,
                                                                               'type': 'string'}}},
                                           'importUser': {'parameters': {'password': {'optional': False,
                                                                                      'type': 'string'},
                                                                         'user': {'optional': False,
                                                                                  'type': 'string'},
                                                                         'username': {'optional': False,
                                                                                      'type': 'string'}},
                                                          'returns': {'success': {'optional': False,
                                                                                  'type': 'bool'}}}}},
            '/ext/timestamp': {'timestamp': {'getBlock': {'parameters': {'id': {'optional': False,
                                                                                'type': 'string'}},
                                                          'returns': {'data': {'optional': False,
                                                                               'type': 'string'},
                                                                      'id': {'optional': False,
                                                                             'type': 'string'},
                                                                      'parentID': {'optional': False,
                                                                                   'type': 'string'},
                                                                      'timestamp': {'optional': False,
                                                                                    'type': 'int'}}},
                                             'proposeBlock': {'parameters': {'data': {'optional': False,
                                                                                      'type': 'string'}},
                                                              'returns': {'success': {'optional': False,
                                                                                      'type': 'bool'}}}}}}
