diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3fae3a5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,162 @@
+# Compiled source #
+###################
+*.class
+*.dll
+*.exe
+*.o
+*.so
+
+sb
+
+build
+data
+pkg
+bin
+_obj
+
+main
+
+test_node
+
+*~
+client
+lib/skyapi/target
+# Packages #
+############
+# it's better to unpack these files and commit the raw source
+# git has its own built in compression methods
+*.7z
+*.dmg
+*.gz
+*.iso
+*.jar
+*.rar
+*.tar
+*.zip
+
+# Logs and databases #
+######################
+*.log
+*.sql
+*.sqlite
+
+# OS generated files #
+######################
+.DS_Store
+.DS_Store?
+._*
+.Spotlight-V100
+.Trashes
+Icon?
+ehthumbs.db
+Thumbs.db
+
+*.pyx
+#build
+*~
+
+*.orig
+
+.cache
+release
+.bin
+
+.skycoin
+
+*.prof
+*.out
+
+# Binaries
+/skycoind
+/skycoin
+/skycoindev
+/blockchain
+/generate_cert
+/address_gen
+/skycoin-integration
+
+*.pem
+
+# Deprecated
+_deprecated/
+
+blockchain.bin
+blockchain.sigs
+master.keys
+*.bak
+benefactor-wallet.json
+masterdata/
+.genv
+
+src/gui/static/dev
+src/mesh/gui/static/dev
+
+npm-debug.log
+
+node_modules
+
+electron/release
+electron/.cache
+electron/.electron_cache
+electron/node_modules
+electron/.gox_output
+electron/.electron_output
+electron/.standalone_output
+electron/.daemon_output
+electron/.cli_output
+# Do not ignore the icons folder
+!electron/build
+!electron/build/icons
+
+.vscode/
+
+#File generation sublime text
+.do.cfg
+.do.state
+skycoin.do
+
+*.swo
+*.swp
+
+src/mesh/TODO
+
+.idea/
+
+*.iml
+*.test
+coverage.html
+coverage/
+*.coverage.out
+
+src/api/integration/wallets/
+src/api/integration/wallets/
+
+skycoin-cli
+
+# FIXME: see #1027 - Temporary solution to deal with generated file
+include/libskycoin.h
+
+# Eclipse temp files
+.cproject
+.metadata/**
+.project
+
+# Generated docs
+docs/libc/latex
+docs/libc/man
+docs/libc/xml
+
+
+# Do not ignore Docker Cloud build
+!hooks/build
+
+*.prof
+*.profile
+*.cpuprofile
+*.memprofile
+
+# cli fiberAddressGen default output
+addresses.txt
+seeds.csv
+
+histogram
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..f5cdcd2
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,7 @@
+language: java
+jdk:
+- oraclejdk11
+
+script:
+ - make install
+ - make test-ci
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..a25b899
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,19 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
+and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
+
+## Libskycoin-Android 0.25.1 - 2019/03/19
+
+### Added
+
+- Add `skyapi`, a wrapper for Skycoin api in version 0.25.1
+
+### Fixed
+
+- Fix #5 - Android API wrapper for the Skycoin node API
+
+
+
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..fbbc8a1
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,5 @@
+install:
+ (cd lib/skyapi && mvn clean install)
+
+test-ci:
+ (cd lib/skyapi && mvn test)
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..0b5e36b
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+## Skyapi, a Wrapper for Skycoin Api
+
+This wrapper is Auto generated by openapi-generator directly from `Skycoin Api` code for version v0.25.1.
+
+For further details of usage of `Skyapi wrapper for Skycoin Api` see [Autogenerated documentation](./lib/skyapi/README.md)
+
+### Specific Node Address
+
+For use a specific node of Skycoin, you just need to create a instance of `DefaultApi` passing the node address:
+
+```android
+DefaultApi api_instance = new DefaultApi();
+api_instance.setBasePath("some_host");
+```
+
+Then in `skyapi` you can use all methods related to Api Client.
\ No newline at end of file
diff --git a/docker/images/dev-cli/Dockerfile b/docker/images/dev-cli/Dockerfile
new file mode 100644
index 0000000..34cd05b
--- /dev/null
+++ b/docker/images/dev-cli/Dockerfile
@@ -0,0 +1,8 @@
+FROM dock9/oraclejdk8:gradle-4.6
+
+WORKDIR /usr/src/skyapi
+
+COPY ./lib/skyapi .
+
+RUN mvn clean install
+
diff --git a/lib/skyapi/.gitignore b/lib/skyapi/.gitignore
new file mode 100644
index 0000000..a836875
--- /dev/null
+++ b/lib/skyapi/.gitignore
@@ -0,0 +1,39 @@
+# Built application files
+*.apk
+*.ap_
+
+# Files for the Dalvik VM
+*.dex
+
+# Java class files
+*.class
+
+# Generated files
+bin/
+gen/
+out/
+
+# Gradle files
+.gradle/
+build/
+
+# Local configuration file (sdk path, etc)
+local.properties
+
+# Proguard folder generated by Eclipse
+proguard/
+
+# Log Files
+*.log
+
+# Android Studio Navigation editor temp files
+.navigation/
+
+# Android Studio captures folder
+captures/
+
+# Intellij
+*.iml
+
+# Keystore files
+*.jks
diff --git a/lib/skyapi/.openapi-generator-ignore b/lib/skyapi/.openapi-generator-ignore
new file mode 100644
index 0000000..7484ee5
--- /dev/null
+++ b/lib/skyapi/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/lib/skyapi/.openapi-generator/VERSION b/lib/skyapi/.openapi-generator/VERSION
new file mode 100644
index 0000000..2c6109e
--- /dev/null
+++ b/lib/skyapi/.openapi-generator/VERSION
@@ -0,0 +1 @@
+3.3.4
\ No newline at end of file
diff --git a/lib/skyapi/README.md b/lib/skyapi/README.md
new file mode 100644
index 0000000..e694b71
--- /dev/null
+++ b/lib/skyapi/README.md
@@ -0,0 +1,180 @@
+# skyapi
+
+## Requirements
+
+Building the API client library requires [Maven](https://maven.apache.org/) to be installed.
+
+## Installation
+
+To install the API client library to your local Maven repository, simply execute:
+
+```shell
+mvn install
+```
+
+To deploy it to a remote Maven repository instead, configure the settings of the repository and execute:
+
+```shell
+mvn deploy
+```
+
+Refer to the [official documentation](https://maven.apache.org/plugins/maven-deploy-plugin/usage.html) for more information.
+
+### Maven users
+
+Add this dependency to your project's POM:
+
+```xml
+
+ Skycoin
+ skyapi
+ v0.25.1
+ compile
+
+```
+
+### Gradle users
+
+Add this dependency to your project's build file:
+
+```groovy
+compile "Skycoin:skyapi:v0.25.1"
+```
+
+### Others
+
+At first generate the JAR by executing:
+
+ mvn package
+
+Then manually install the following JARs:
+
+* target/skyapi-v0.25.1.jar
+* target/lib/*.jar
+
+## Getting Started
+
+Please follow the [installation](#installation) instruction and execute the following Java code:
+
+```java
+
+import skycoin.DefaultApi;
+
+public class DefaultApiExample {
+
+ public static void main(String[] args) {
+ DefaultApi apiInstance = new DefaultApi();
+ try {
+ Object result = apiInstance.addressCount();
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#addressCount");
+ e.printStackTrace();
+ }
+ }
+}
+
+```
+
+## Documentation for API Endpoints
+
+All URIs are relative to *http://127.0.0.1:6420*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*DefaultApi* | [**addressCount**](docs/DefaultApi.md#addressCount) | **GET** /api/v1/addresscount | Returns the total number of unique address that have coins.
+*DefaultApi* | [**addressUxouts**](docs/DefaultApi.md#addressUxouts) | **GET** /api/v1/address_uxouts |
+*DefaultApi* | [**balanceGet**](docs/DefaultApi.md#balanceGet) | **GET** /api/v1/balance | Returns the balance of one or more addresses, both confirmed and predicted. The predicted balance is the confirmed balance minus the pending spends.
+*DefaultApi* | [**balancePost**](docs/DefaultApi.md#balancePost) | **POST** /api/v1/balance | Returns the balance of one or more addresses, both confirmed and predicted. The predicted balance is the confirmed balance minus the pending spends.
+*DefaultApi* | [**block**](docs/DefaultApi.md#block) | **GET** /api/v1/block |
+*DefaultApi* | [**blockchainMetadata**](docs/DefaultApi.md#blockchainMetadata) | **GET** /api/v1/blockchain/metadata | Returns the blockchain metadata.
+*DefaultApi* | [**blockchainProgress**](docs/DefaultApi.md#blockchainProgress) | **GET** /api/v1/blockchain/progress | Returns the blockchain sync progress.
+*DefaultApi* | [**blocksGet**](docs/DefaultApi.md#blocksGet) | **GET** /api/v1/blocks | blocksHandler returns blocks between a start and end point,
+*DefaultApi* | [**blocksPost**](docs/DefaultApi.md#blocksPost) | **POST** /api/v1/blocks | blocksHandler returns blocks between a start and end point,
+*DefaultApi* | [**coinSupply**](docs/DefaultApi.md#coinSupply) | **GET** /api/v1/coinSupply |
+*DefaultApi* | [**csrf**](docs/DefaultApi.md#csrf) | **GET** /api/v1/csrf | Creates a new CSRF token. Previous CSRF tokens are invalidated by this call.
+*DefaultApi* | [**defaultConnections**](docs/DefaultApi.md#defaultConnections) | **GET** /api/v1/network/defaultConnections | defaultConnectionsHandler returns the list of default hardcoded bootstrap addresses.\\n They are not necessarily connected to.
+*DefaultApi* | [**explorerAddress**](docs/DefaultApi.md#explorerAddress) | **GET** /api/v1/explorer/address |
+*DefaultApi* | [**health**](docs/DefaultApi.md#health) | **GET** /api/v1/health | Returns node health data.
+*DefaultApi* | [**lastBlocks**](docs/DefaultApi.md#lastBlocks) | **GET** /api/v1/last_blocks |
+*DefaultApi* | [**networkConnection**](docs/DefaultApi.md#networkConnection) | **GET** /api/v1/network/connection | This endpoint returns a specific connection.
+*DefaultApi* | [**networkConnections**](docs/DefaultApi.md#networkConnections) | **GET** /api/v1/network/connections | This endpoint returns all outgoings connections.
+*DefaultApi* | [**networkConnectionsDisconnect**](docs/DefaultApi.md#networkConnectionsDisconnect) | **POST** /api/v1/network/connection/disconnect |
+*DefaultApi* | [**networkConnectionsExchange**](docs/DefaultApi.md#networkConnectionsExchange) | **GET** /api/v1/network/connections/exchange |
+*DefaultApi* | [**networkConnectionsTrust**](docs/DefaultApi.md#networkConnectionsTrust) | **GET** /api/v1/network/connections/trust | trustConnectionsHandler returns all trusted connections.\\n They are not necessarily connected to. In the default configuration, these will be a subset of the default hardcoded bootstrap addresses.
+*DefaultApi* | [**outputsGet**](docs/DefaultApi.md#outputsGet) | **GET** /api/v1/outputs | If neither addrs nor hashes are specificed, return all unspent outputs. If only one filter is specified, then return outputs match the filter. Both filters cannot be specified.
+*DefaultApi* | [**outputsPost**](docs/DefaultApi.md#outputsPost) | **POST** /api/v1/outputs | If neither addrs nor hashes are specificed, return all unspent outputs. If only one filter is specified, then return outputs match the filter. Both filters cannot be specified.
+*DefaultApi* | [**pendingTxs**](docs/DefaultApi.md#pendingTxs) | **GET** /api/v1/pendingTxs |
+*DefaultApi* | [**resendUnconfirmedTxns**](docs/DefaultApi.md#resendUnconfirmedTxns) | **POST** /api/v1/resendUnconfirmedTxns |
+*DefaultApi* | [**richlist**](docs/DefaultApi.md#richlist) | **GET** /api/v1/richlist | Returns the top skycoin holders.
+*DefaultApi* | [**transaction**](docs/DefaultApi.md#transaction) | **GET** /api/v1/transaction |
+*DefaultApi* | [**transactionInject**](docs/DefaultApi.md#transactionInject) | **POST** /api/v2/transaction/inject | Broadcast a hex-encoded, serialized transaction to the network.
+*DefaultApi* | [**transactionRaw**](docs/DefaultApi.md#transactionRaw) | **GET** /api/v2/transaction/raw | Returns the hex-encoded byte serialization of a transaction. The transaction may be confirmed or unconfirmed.
+*DefaultApi* | [**transactionVerify**](docs/DefaultApi.md#transactionVerify) | **POST** /api/v2/transaction/verify |
+*DefaultApi* | [**transactionsGet**](docs/DefaultApi.md#transactionsGet) | **GET** /api/v1/transactions | Returns transactions that match the filters.
+*DefaultApi* | [**transactionsPost**](docs/DefaultApi.md#transactionsPost) | **POST** /api/v1/transactions | Returns transactions that match the filters.
+*DefaultApi* | [**uxout**](docs/DefaultApi.md#uxout) | **GET** /api/v1/uxout | Returns an unspent output by ID.
+*DefaultApi* | [**verifyAddress**](docs/DefaultApi.md#verifyAddress) | **POST** /api/v2/address/verify | Verifies a Skycoin address.
+*DefaultApi* | [**version**](docs/DefaultApi.md#version) | **GET** /api/v1/version |
+*DefaultApi* | [**wallet**](docs/DefaultApi.md#wallet) | **GET** /api/v1/wallet | Returns a wallet by id.
+*DefaultApi* | [**walletBalance**](docs/DefaultApi.md#walletBalance) | **GET** /api/v1/wallet/balance | Returns the wallet's balance, both confirmed and predicted. The predicted balance is the confirmed balance minus the pending spends.
+*DefaultApi* | [**walletCreate**](docs/DefaultApi.md#walletCreate) | **POST** /api/v1/wallet/create |
+*DefaultApi* | [**walletDecrypt**](docs/DefaultApi.md#walletDecrypt) | **POST** /api/v1/wallet/decrypt | Decrypts wallet.
+*DefaultApi* | [**walletEncrypt**](docs/DefaultApi.md#walletEncrypt) | **POST** /api/v1/wallet/encrypt | Encrypt wallet.
+*DefaultApi* | [**walletFolder**](docs/DefaultApi.md#walletFolder) | **GET** /api/v1/wallets/folderName |
+*DefaultApi* | [**walletNewAddress**](docs/DefaultApi.md#walletNewAddress) | **POST** /api/v1/wallet/newAddress |
+*DefaultApi* | [**walletNewSeed**](docs/DefaultApi.md#walletNewSeed) | **GET** /api/v1/wallet/newSeed |
+*DefaultApi* | [**walletRecover**](docs/DefaultApi.md#walletRecover) | **POST** /api/v2/wallet/recover | Recovers an encrypted wallet by providing the seed. The first address will be generated from seed and compared to the first address of the specified wallet. If they match, the wallet will be regenerated with an optional password. If the wallet is not encrypted, an error is returned.
+*DefaultApi* | [**walletSeed**](docs/DefaultApi.md#walletSeed) | **POST** /api/v1/wallet/seed | This endpoint only works for encrypted wallets. If the wallet is unencrypted, The seed will be not returned.
+*DefaultApi* | [**walletSeedVerify**](docs/DefaultApi.md#walletSeedVerify) | **POST** /api/v2/wallet/seed/verify | Verifies a wallet seed.
+*DefaultApi* | [**walletSpent**](docs/DefaultApi.md#walletSpent) | **POST** /api/v1/wallet/spend |
+*DefaultApi* | [**walletTransaction**](docs/DefaultApi.md#walletTransaction) | **POST** /api/v1/wallet/transaction |
+*DefaultApi* | [**walletTransactions**](docs/DefaultApi.md#walletTransactions) | **GET** /api/v1/wallet/transactions |
+*DefaultApi* | [**walletUnload**](docs/DefaultApi.md#walletUnload) | **POST** /api/v1/wallet/unload | Unloads wallet from the wallet service.
+*DefaultApi* | [**walletUpdate**](docs/DefaultApi.md#walletUpdate) | **POST** /api/v1/wallet/update | Update the wallet.
+*DefaultApi* | [**wallets**](docs/DefaultApi.md#wallets) | **GET** /api/v1/wallets |
+
+
+## Documentation for Models
+
+ - [Apiv1exploreraddressInputs](docs/Apiv1exploreraddressInputs.md)
+ - [Apiv1exploreraddressOutputs](docs/Apiv1exploreraddressOutputs.md)
+ - [Apiv1exploreraddressStatus](docs/Apiv1exploreraddressStatus.md)
+ - [Apiv1pendingTxsTransaction](docs/Apiv1pendingTxsTransaction.md)
+ - [Apiv1walletsEntries](docs/Apiv1walletsEntries.md)
+ - [Apiv1walletsMeta](docs/Apiv1walletsMeta.md)
+ - [Apiv1wallettransactionHoursSelection](docs/Apiv1wallettransactionHoursSelection.md)
+ - [Apiv1wallettransactionTo](docs/Apiv1wallettransactionTo.md)
+ - [Apiv1wallettransactionWallet](docs/Apiv1wallettransactionWallet.md)
+ - [InlineObject](docs/InlineObject.md)
+ - [InlineResponse200](docs/InlineResponse200.md)
+ - [InlineResponse2001](docs/InlineResponse2001.md)
+ - [InlineResponse2002](docs/InlineResponse2002.md)
+ - [InlineResponse2003](docs/InlineResponse2003.md)
+ - [InlineResponse2003UnconfirmedVerifyTransaction](docs/InlineResponse2003UnconfirmedVerifyTransaction.md)
+ - [InlineResponse2004](docs/InlineResponse2004.md)
+ - [InlineResponse2005](docs/InlineResponse2005.md)
+ - [InlineResponse2006](docs/InlineResponse2006.md)
+ - [InlineResponse2007](docs/InlineResponse2007.md)
+ - [InlineResponse2007Data](docs/InlineResponse2007Data.md)
+ - [InlineResponseDefault](docs/InlineResponseDefault.md)
+
+
+## Documentation for Authorization
+
+Authentication schemes defined for the API:
+### csrfAuth
+
+- **Type**: API key
+- **API key parameter name**: X-CSRF-TOKEN
+- **Location**: HTTP header
+
+
+## Recommendation
+
+It's recommended to create an instance of `ApiClient` per thread in a multithreaded environment to avoid any potential issues.
+
+## Author
+
+skycoin.doe@example.com
+
diff --git a/lib/skyapi/build.gradle b/lib/skyapi/build.gradle
new file mode 100644
index 0000000..ed01e90
--- /dev/null
+++ b/lib/skyapi/build.gradle
@@ -0,0 +1,96 @@
+group = 'Skycoin'
+project.version = 'v0.25.1'
+
+buildscript {
+ repositories {
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:2.3.+'
+ classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
+ }
+}
+
+allprojects {
+ repositories {
+ jcenter()
+ }
+}
+
+
+apply plugin: 'com.android.library'
+apply plugin: 'com.github.dcendents.android-maven'
+
+android {
+ compileSdkVersion 25
+ buildToolsVersion '25.0.2'
+ defaultConfig {
+ minSdkVersion 14
+ targetSdkVersion 25
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_7
+ targetCompatibility JavaVersion.VERSION_1_7
+ }
+
+ // Rename the aar correctly
+ libraryVariants.all { variant ->
+ variant.outputs.each { output ->
+ def outputFile = output.outputFile
+ if (outputFile != null && outputFile.name.endsWith('.aar')) {
+ def fileName = "${project.name}-${variant.baseName}-${version}.aar"
+ output.outputFile = new File(outputFile.parent, fileName)
+ }
+ }
+ }
+
+ testOptions {
+ unitTests.returnDefaultValues = true
+ }
+}
+
+
+ext {
+ swagger_annotations_version = "1.5.0"
+ gson_version = "2.3.1"
+ httpmime_version = "4.5.2"
+ httpcore_version = "4.4.4"
+ httpclient_version = "4.3.3"
+ volley_version = "1.0.0"
+ junit_version = "4.12"
+ robolectric_version = "3.0"
+ concurrent_unit_version = "0.4.2"
+}
+
+dependencies {
+ compile "io.swagger:swagger-annotations:$swagger_annotations_version"
+ compile "com.google.code.gson:gson:$gson_version"
+ compile "org.apache.httpcomponents:httpcore:$httpcore_version"
+ compile "org.apache.httpcomponents:httpmime:$httpmime_version"
+ compile "org.apache.httpcomponents:httpclient-android:$httpclient_version"
+ compile "com.android.volley:volley:${volley_version}"
+ testCompile "junit:junit:$junit_version"
+ testCompile "org.robolectric:robolectric:${robolectric_version}"
+ testCompile "net.jodah:concurrentunit:${concurrent_unit_version}"
+}
+
+afterEvaluate {
+ android.libraryVariants.all { variant ->
+ def task = project.tasks.create "jar${variant.name.capitalize()}", Jar
+ task.description = "Create jar artifact for ${variant.name}"
+ task.dependsOn variant.javaCompile
+ task.from variant.javaCompile.destinationDir
+ task.destinationDir = project.file("${project.buildDir}/outputs/jar")
+ task.archiveName = "${project.name}-${variant.baseName}-${version}.jar"
+ artifacts.add('archives', task);
+ }
+}
+
+task sourcesJar(type: Jar) {
+ from android.sourceSets.main.java.srcDirs
+ classifier = 'sources'
+}
+
+artifacts {
+ archives sourcesJar
+}
diff --git a/lib/skyapi/docs/Apiv1exploreraddressInputs.md b/lib/skyapi/docs/Apiv1exploreraddressInputs.md
new file mode 100644
index 0000000..104044a
--- /dev/null
+++ b/lib/skyapi/docs/Apiv1exploreraddressInputs.md
@@ -0,0 +1,14 @@
+
+# Apiv1exploreraddressInputs
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**owner** | **String** | | [optional]
+**hours** | **Long** | | [optional]
+**calculatedHours** | **Long** | | [optional]
+**coins** | **String** | | [optional]
+**uxid** | **String** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/Apiv1exploreraddressOutputs.md b/lib/skyapi/docs/Apiv1exploreraddressOutputs.md
new file mode 100644
index 0000000..f29e59c
--- /dev/null
+++ b/lib/skyapi/docs/Apiv1exploreraddressOutputs.md
@@ -0,0 +1,13 @@
+
+# Apiv1exploreraddressOutputs
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**hours** | **Long** | | [optional]
+**dst** | **String** | | [optional]
+**coins** | **String** | | [optional]
+**uxid** | **String** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/Apiv1exploreraddressStatus.md b/lib/skyapi/docs/Apiv1exploreraddressStatus.md
new file mode 100644
index 0000000..4053bae
--- /dev/null
+++ b/lib/skyapi/docs/Apiv1exploreraddressStatus.md
@@ -0,0 +1,13 @@
+
+# Apiv1exploreraddressStatus
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**unconfirmed** | **Boolean** | | [optional]
+**blockSeq** | **Long** | | [optional]
+**label** | **Long** | | [optional]
+**confirmed** | **Boolean** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/Apiv1pendingTxsTransaction.md b/lib/skyapi/docs/Apiv1pendingTxsTransaction.md
new file mode 100644
index 0000000..225536c
--- /dev/null
+++ b/lib/skyapi/docs/Apiv1pendingTxsTransaction.md
@@ -0,0 +1,17 @@
+
+# Apiv1pendingTxsTransaction
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**outputs** | [**List<Apiv1exploreraddressOutputs>**](Apiv1exploreraddressOutputs.md) | | [optional]
+**innerHash** | **String** | | [optional]
+**inputs** | **List<String>** | | [optional]
+**sigs** | **List<String>** | | [optional]
+**length** | **Integer** | | [optional]
+**txid** | **String** | | [optional]
+**type** | **Integer** | | [optional]
+**timestamp** | **Integer** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/Apiv1walletsEntries.md b/lib/skyapi/docs/Apiv1walletsEntries.md
new file mode 100644
index 0000000..03402be
--- /dev/null
+++ b/lib/skyapi/docs/Apiv1walletsEntries.md
@@ -0,0 +1,11 @@
+
+# Apiv1walletsEntries
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**publicKey** | **String** | | [optional]
+**address** | **String** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/Apiv1walletsMeta.md b/lib/skyapi/docs/Apiv1walletsMeta.md
new file mode 100644
index 0000000..b5a7641
--- /dev/null
+++ b/lib/skyapi/docs/Apiv1walletsMeta.md
@@ -0,0 +1,17 @@
+
+# Apiv1walletsMeta
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**filename** | **String** | | [optional]
+**encrypted** | **Boolean** | | [optional]
+**cryptoType** | **String** | | [optional]
+**label** | **String** | | [optional]
+**type** | **String** | | [optional]
+**version** | **String** | | [optional]
+**coin** | **String** | | [optional]
+**timestamp** | **Integer** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/Apiv1wallettransactionHoursSelection.md b/lib/skyapi/docs/Apiv1wallettransactionHoursSelection.md
new file mode 100644
index 0000000..25ff8c3
--- /dev/null
+++ b/lib/skyapi/docs/Apiv1wallettransactionHoursSelection.md
@@ -0,0 +1,12 @@
+
+# Apiv1wallettransactionHoursSelection
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**mode** | **String** | | [optional]
+**shareFactor** | **String** | | [optional]
+**type** | **String** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/Apiv1wallettransactionTo.md b/lib/skyapi/docs/Apiv1wallettransactionTo.md
new file mode 100644
index 0000000..adb3d6a
--- /dev/null
+++ b/lib/skyapi/docs/Apiv1wallettransactionTo.md
@@ -0,0 +1,12 @@
+
+# Apiv1wallettransactionTo
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**hours** | **Long** | | [optional]
+**address** | **String** | | [optional]
+**coins** | **Long** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/Apiv1wallettransactionWallet.md b/lib/skyapi/docs/Apiv1wallettransactionWallet.md
new file mode 100644
index 0000000..632a34b
--- /dev/null
+++ b/lib/skyapi/docs/Apiv1wallettransactionWallet.md
@@ -0,0 +1,13 @@
+
+# Apiv1wallettransactionWallet
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**unspents** | **List<String>** | | [optional]
+**addresses** | **List<String>** | | [optional]
+**password** | **String** | | [optional]
+**id** | **String** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/DefaultApi.md b/lib/skyapi/docs/DefaultApi.md
new file mode 100644
index 0000000..92ba33f
--- /dev/null
+++ b/lib/skyapi/docs/DefaultApi.md
@@ -0,0 +1,2186 @@
+# DefaultApi
+
+All URIs are relative to *http://127.0.0.1:6420*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**addressCount**](DefaultApi.md#addressCount) | **GET** /api/v1/addresscount | Returns the total number of unique address that have coins.
+[**addressUxouts**](DefaultApi.md#addressUxouts) | **GET** /api/v1/address_uxouts |
+[**balanceGet**](DefaultApi.md#balanceGet) | **GET** /api/v1/balance | Returns the balance of one or more addresses, both confirmed and predicted. The predicted balance is the confirmed balance minus the pending spends.
+[**balancePost**](DefaultApi.md#balancePost) | **POST** /api/v1/balance | Returns the balance of one or more addresses, both confirmed and predicted. The predicted balance is the confirmed balance minus the pending spends.
+[**block**](DefaultApi.md#block) | **GET** /api/v1/block |
+[**blockchainMetadata**](DefaultApi.md#blockchainMetadata) | **GET** /api/v1/blockchain/metadata | Returns the blockchain metadata.
+[**blockchainProgress**](DefaultApi.md#blockchainProgress) | **GET** /api/v1/blockchain/progress | Returns the blockchain sync progress.
+[**blocksGet**](DefaultApi.md#blocksGet) | **GET** /api/v1/blocks | blocksHandler returns blocks between a start and end point,
+[**blocksPost**](DefaultApi.md#blocksPost) | **POST** /api/v1/blocks | blocksHandler returns blocks between a start and end point,
+[**coinSupply**](DefaultApi.md#coinSupply) | **GET** /api/v1/coinSupply |
+[**csrf**](DefaultApi.md#csrf) | **GET** /api/v1/csrf | Creates a new CSRF token. Previous CSRF tokens are invalidated by this call.
+[**defaultConnections**](DefaultApi.md#defaultConnections) | **GET** /api/v1/network/defaultConnections | defaultConnectionsHandler returns the list of default hardcoded bootstrap addresses.\\n They are not necessarily connected to.
+[**explorerAddress**](DefaultApi.md#explorerAddress) | **GET** /api/v1/explorer/address |
+[**health**](DefaultApi.md#health) | **GET** /api/v1/health | Returns node health data.
+[**lastBlocks**](DefaultApi.md#lastBlocks) | **GET** /api/v1/last_blocks |
+[**networkConnection**](DefaultApi.md#networkConnection) | **GET** /api/v1/network/connection | This endpoint returns a specific connection.
+[**networkConnections**](DefaultApi.md#networkConnections) | **GET** /api/v1/network/connections | This endpoint returns all outgoings connections.
+[**networkConnectionsDisconnect**](DefaultApi.md#networkConnectionsDisconnect) | **POST** /api/v1/network/connection/disconnect |
+[**networkConnectionsExchange**](DefaultApi.md#networkConnectionsExchange) | **GET** /api/v1/network/connections/exchange |
+[**networkConnectionsTrust**](DefaultApi.md#networkConnectionsTrust) | **GET** /api/v1/network/connections/trust | trustConnectionsHandler returns all trusted connections.\\n They are not necessarily connected to. In the default configuration, these will be a subset of the default hardcoded bootstrap addresses.
+[**outputsGet**](DefaultApi.md#outputsGet) | **GET** /api/v1/outputs | If neither addrs nor hashes are specificed, return all unspent outputs. If only one filter is specified, then return outputs match the filter. Both filters cannot be specified.
+[**outputsPost**](DefaultApi.md#outputsPost) | **POST** /api/v1/outputs | If neither addrs nor hashes are specificed, return all unspent outputs. If only one filter is specified, then return outputs match the filter. Both filters cannot be specified.
+[**pendingTxs**](DefaultApi.md#pendingTxs) | **GET** /api/v1/pendingTxs |
+[**resendUnconfirmedTxns**](DefaultApi.md#resendUnconfirmedTxns) | **POST** /api/v1/resendUnconfirmedTxns |
+[**richlist**](DefaultApi.md#richlist) | **GET** /api/v1/richlist | Returns the top skycoin holders.
+[**transaction**](DefaultApi.md#transaction) | **GET** /api/v1/transaction |
+[**transactionInject**](DefaultApi.md#transactionInject) | **POST** /api/v2/transaction/inject | Broadcast a hex-encoded, serialized transaction to the network.
+[**transactionRaw**](DefaultApi.md#transactionRaw) | **GET** /api/v2/transaction/raw | Returns the hex-encoded byte serialization of a transaction. The transaction may be confirmed or unconfirmed.
+[**transactionVerify**](DefaultApi.md#transactionVerify) | **POST** /api/v2/transaction/verify |
+[**transactionsGet**](DefaultApi.md#transactionsGet) | **GET** /api/v1/transactions | Returns transactions that match the filters.
+[**transactionsPost**](DefaultApi.md#transactionsPost) | **POST** /api/v1/transactions | Returns transactions that match the filters.
+[**uxout**](DefaultApi.md#uxout) | **GET** /api/v1/uxout | Returns an unspent output by ID.
+[**verifyAddress**](DefaultApi.md#verifyAddress) | **POST** /api/v2/address/verify | Verifies a Skycoin address.
+[**version**](DefaultApi.md#version) | **GET** /api/v1/version |
+[**wallet**](DefaultApi.md#wallet) | **GET** /api/v1/wallet | Returns a wallet by id.
+[**walletBalance**](DefaultApi.md#walletBalance) | **GET** /api/v1/wallet/balance | Returns the wallet's balance, both confirmed and predicted. The predicted balance is the confirmed balance minus the pending spends.
+[**walletCreate**](DefaultApi.md#walletCreate) | **POST** /api/v1/wallet/create |
+[**walletDecrypt**](DefaultApi.md#walletDecrypt) | **POST** /api/v1/wallet/decrypt | Decrypts wallet.
+[**walletEncrypt**](DefaultApi.md#walletEncrypt) | **POST** /api/v1/wallet/encrypt | Encrypt wallet.
+[**walletFolder**](DefaultApi.md#walletFolder) | **GET** /api/v1/wallets/folderName |
+[**walletNewAddress**](DefaultApi.md#walletNewAddress) | **POST** /api/v1/wallet/newAddress |
+[**walletNewSeed**](DefaultApi.md#walletNewSeed) | **GET** /api/v1/wallet/newSeed |
+[**walletRecover**](DefaultApi.md#walletRecover) | **POST** /api/v2/wallet/recover | Recovers an encrypted wallet by providing the seed. The first address will be generated from seed and compared to the first address of the specified wallet. If they match, the wallet will be regenerated with an optional password. If the wallet is not encrypted, an error is returned.
+[**walletSeed**](DefaultApi.md#walletSeed) | **POST** /api/v1/wallet/seed | This endpoint only works for encrypted wallets. If the wallet is unencrypted, The seed will be not returned.
+[**walletSeedVerify**](DefaultApi.md#walletSeedVerify) | **POST** /api/v2/wallet/seed/verify | Verifies a wallet seed.
+[**walletSpent**](DefaultApi.md#walletSpent) | **POST** /api/v1/wallet/spend |
+[**walletTransaction**](DefaultApi.md#walletTransaction) | **POST** /api/v1/wallet/transaction |
+[**walletTransactions**](DefaultApi.md#walletTransactions) | **GET** /api/v1/wallet/transactions |
+[**walletUnload**](DefaultApi.md#walletUnload) | **POST** /api/v1/wallet/unload | Unloads wallet from the wallet service.
+[**walletUpdate**](DefaultApi.md#walletUpdate) | **POST** /api/v1/wallet/update | Update the wallet.
+[**wallets**](DefaultApi.md#wallets) | **GET** /api/v1/wallets |
+
+
+
+# **addressCount**
+> Object addressCount()
+
+Returns the total number of unique address that have coins.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+try {
+ Object result = apiInstance.addressCount();
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#addressCount");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **addressUxouts**
+> List<InlineResponse200> addressUxouts(address)
+
+
+
+Returns the historical, spent outputs associated with an address
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String address = null; // String | address to filter by
+try {
+ List result = apiInstance.addressUxouts(address);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#addressUxouts");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **address** | **String**| address to filter by | [default to null]
+
+### Return type
+
+[**List<InlineResponse200>**](InlineResponse200.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **balanceGet**
+> Object balanceGet(addrs)
+
+Returns the balance of one or more addresses, both confirmed and predicted. The predicted balance is the confirmed balance minus the pending spends.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String addrs = null; // String | command separated list of addresses
+try {
+ Object result = apiInstance.balanceGet(addrs);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#balanceGet");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **addrs** | **String**| command separated list of addresses | [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **balancePost**
+> Object balancePost(addrs)
+
+Returns the balance of one or more addresses, both confirmed and predicted. The predicted balance is the confirmed balance minus the pending spends.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String addrs = null; // String | command separated list of addresses
+try {
+ Object result = apiInstance.balancePost(addrs);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#balancePost");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **addrs** | **String**| command separated list of addresses | [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **block**
+> Object block(hash, seq)
+
+
+
+Returns a block by hash or seq. Note: only one of hash or seq is allowed
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String hash = null; // String |
+Integer seq = null; // Integer |
+try {
+ Object result = apiInstance.block(hash, seq);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#block");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **hash** | **String**| | [optional] [default to null]
+ **seq** | **Integer**| | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **blockchainMetadata**
+> Object blockchainMetadata()
+
+Returns the blockchain metadata.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+try {
+ Object result = apiInstance.blockchainMetadata();
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#blockchainMetadata");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **blockchainProgress**
+> Object blockchainProgress()
+
+Returns the blockchain sync progress.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+try {
+ Object result = apiInstance.blockchainProgress();
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#blockchainProgress");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **blocksGet**
+> Object blocksGet(start, end, seqs)
+
+blocksHandler returns blocks between a start and end point,
+
+or an explicit list of sequences. If using start and end, the block sequences include both the start and end point. Explicit sequences cannot be combined with start and end. Without verbose.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+Integer start = null; // Integer |
+Integer end = null; // Integer |
+List seqs = null; // List |
+try {
+ Object result = apiInstance.blocksGet(start, end, seqs);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#blocksGet");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **start** | **Integer**| | [optional] [default to null]
+ **end** | **Integer**| | [optional] [default to null]
+ **seqs** | [**List<Integer>**](Integer.md)| | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **blocksPost**
+> Object blocksPost(start, end, seqs)
+
+blocksHandler returns blocks between a start and end point,
+
+or an explicit list of sequences. If using start and end, the block sequences include both the start and end point. Explicit sequences cannot be combined with start and end. Without verbose
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+Integer start = null; // Integer |
+Integer end = null; // Integer |
+List seqs = null; // List |
+try {
+ Object result = apiInstance.blocksPost(start, end, seqs);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#blocksPost");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **start** | **Integer**| | [optional] [default to null]
+ **end** | **Integer**| | [optional] [default to null]
+ **seqs** | [**List<Integer>**](Integer.md)| | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **coinSupply**
+> coinSupply()
+
+
+
+coinSupplyHandler returns coin distribution supply stats
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+try {
+ apiInstance.coinSupply();
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#coinSupply");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **csrf**
+> InlineResponse2001 csrf()
+
+Creates a new CSRF token. Previous CSRF tokens are invalidated by this call.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+try {
+ InlineResponse2001 result = apiInstance.csrf();
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#csrf");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+[**InlineResponse2001**](InlineResponse2001.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **defaultConnections**
+> List<String> defaultConnections()
+
+defaultConnectionsHandler returns the list of default hardcoded bootstrap addresses.\\n They are not necessarily connected to.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+try {
+ List result = apiInstance.defaultConnections();
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#defaultConnections");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**List<String>**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **explorerAddress**
+> List<InlineResponse2002> explorerAddress(address)
+
+
+
+Returns all transactions (confirmed and unconfirmed) for an address
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String address = null; // String | tags to filter by
+try {
+ List result = apiInstance.explorerAddress(address);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#explorerAddress");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **address** | **String**| tags to filter by | [optional] [default to null]
+
+### Return type
+
+[**List<InlineResponse2002>**](InlineResponse2002.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **health**
+> Object health()
+
+Returns node health data.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+try {
+ Object result = apiInstance.health();
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#health");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **lastBlocks**
+> Object lastBlocks(num)
+
+
+
+Returns the most recent N blocks on the blockchain
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+Integer num = null; // Integer |
+try {
+ Object result = apiInstance.lastBlocks(num);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#lastBlocks");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **num** | **Integer**| | [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **networkConnection**
+> InlineResponse2003 networkConnection(addr)
+
+This endpoint returns a specific connection.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String addr = null; // String | Address port
+try {
+ InlineResponse2003 result = apiInstance.networkConnection(addr);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#networkConnection");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **addr** | **String**| Address port | [default to null]
+
+### Return type
+
+[**InlineResponse2003**](InlineResponse2003.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **networkConnections**
+> List<InlineResponse2003> networkConnections(states, direction)
+
+This endpoint returns all outgoings connections.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String states = null; // String | Connection status.
+String direction = null; // String | Direction of the connection.
+try {
+ List result = apiInstance.networkConnections(states, direction);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#networkConnections");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **states** | **String**| Connection status. | [optional] [default to null] [enum: pending, connected, introduced]
+ **direction** | **String**| Direction of the connection. | [optional] [default to null] [enum: connected, introduced]
+
+### Return type
+
+[**List<InlineResponse2003>**](InlineResponse2003.md)
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **networkConnectionsDisconnect**
+> networkConnectionsDisconnect(id)
+
+
+
+This endpoint disconnects a connection by ID or address
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String id = null; // String | Address id.
+try {
+ apiInstance.networkConnectionsDisconnect(id);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#networkConnectionsDisconnect");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **String**| Address id. | [default to null]
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **networkConnectionsExchange**
+> List<String> networkConnectionsExchange()
+
+
+
+This endpoint returns all connections found through peer exchange
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+try {
+ List result = apiInstance.networkConnectionsExchange();
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#networkConnectionsExchange");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**List<String>**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **networkConnectionsTrust**
+> List<String> networkConnectionsTrust()
+
+trustConnectionsHandler returns all trusted connections.\\n They are not necessarily connected to. In the default configuration, these will be a subset of the default hardcoded bootstrap addresses.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+try {
+ List result = apiInstance.networkConnectionsTrust();
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#networkConnectionsTrust");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**List<String>**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **outputsGet**
+> Object outputsGet(address, hash)
+
+If neither addrs nor hashes are specificed, return all unspent outputs. If only one filter is specified, then return outputs match the filter. Both filters cannot be specified.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+List address = null; // List |
+List hash = null; // List |
+try {
+ Object result = apiInstance.outputsGet(address, hash);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#outputsGet");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **address** | [**List<String>**](String.md)| | [optional] [default to null]
+ **hash** | [**List<String>**](String.md)| | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **outputsPost**
+> Object outputsPost(address, hash)
+
+If neither addrs nor hashes are specificed, return all unspent outputs. If only one filter is specified, then return outputs match the filter. Both filters cannot be specified.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String address = null; // String |
+String hash = null; // String |
+try {
+ Object result = apiInstance.outputsPost(address, hash);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#outputsPost");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **address** | **String**| | [optional] [default to null]
+ **hash** | **String**| | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **pendingTxs**
+> List<InlineResponse2004> pendingTxs()
+
+
+
+Returns pending (unconfirmed) transactions without verbose
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+try {
+ List result = apiInstance.pendingTxs();
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#pendingTxs");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+[**List<InlineResponse2004>**](InlineResponse2004.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **resendUnconfirmedTxns**
+> resendUnconfirmedTxns()
+
+
+
+Broadcasts all unconfirmed transactions from the unconfirmed transaction pool
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+try {
+ apiInstance.resendUnconfirmedTxns();
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#resendUnconfirmedTxns");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **richlist**
+> Object richlist(includeDistribution, n)
+
+Returns the top skycoin holders.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+Boolean includeDistribution = null; // Boolean | include distribution addresses or not, default value false
+String n = null; // String | include distribution addresses or not, default value false
+try {
+ Object result = apiInstance.richlist(includeDistribution, n);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#richlist");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **includeDistribution** | **Boolean**| include distribution addresses or not, default value false | [optional] [default to null]
+ **n** | **String**| include distribution addresses or not, default value false | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **transaction**
+> Object transaction(txid, encoded)
+
+
+
+Returns a transaction identified by its txid hash with just id
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String txid = null; // String | transaction hash
+Boolean encoded = null; // Boolean | return as a raw encoded transaction.
+try {
+ Object result = apiInstance.transaction(txid, encoded);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#transaction");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **txid** | **String**| transaction hash | [default to null]
+ **encoded** | **Boolean**| return as a raw encoded transaction. | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **transactionInject**
+> Object transactionInject(rawtx)
+
+Broadcast a hex-encoded, serialized transaction to the network.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String rawtx = null; // String | hex-encoded serialized transaction string.
+try {
+ Object result = apiInstance.transactionInject(rawtx);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#transactionInject");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **rawtx** | **String**| hex-encoded serialized transaction string. | [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **transactionRaw**
+> Object transactionRaw(txid)
+
+Returns the hex-encoded byte serialization of a transaction. The transaction may be confirmed or unconfirmed.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String txid = null; // String | Transaction id hash
+try {
+ Object result = apiInstance.transactionRaw(txid);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#transactionRaw");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **txid** | **String**| Transaction id hash | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **transactionVerify**
+> Object transactionVerify()
+
+
+
+Decode and verify an encoded transaction
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+try {
+ Object result = apiInstance.transactionVerify();
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#transactionVerify");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **transactionsGet**
+> Object transactionsGet(addrs, confirmed)
+
+Returns transactions that match the filters.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String addrs = null; // String | command separated list of addresses
+String confirmed = null; // String | Whether the transactions should be confirmed [optional, must be 0 or 1; if not provided, returns all]
+try {
+ Object result = apiInstance.transactionsGet(addrs, confirmed);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#transactionsGet");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **addrs** | **String**| command separated list of addresses | [optional] [default to null]
+ **confirmed** | **String**| Whether the transactions should be confirmed [optional, must be 0 or 1; if not provided, returns all] | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **transactionsPost**
+> Object transactionsPost(addrs, confirmed)
+
+Returns transactions that match the filters.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String addrs = null; // String | command separated list of addresses
+String confirmed = null; // String | Whether the transactions should be confirmed [optional, must be 0 or 1; if not provided, returns all]
+try {
+ Object result = apiInstance.transactionsPost(addrs, confirmed);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#transactionsPost");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **addrs** | **String**| command separated list of addresses | [optional] [default to null]
+ **confirmed** | **String**| Whether the transactions should be confirmed [optional, must be 0 or 1; if not provided, returns all] | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **uxout**
+> Object uxout(uxid)
+
+Returns an unspent output by ID.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String uxid = null; // String | uxid to filter by
+try {
+ Object result = apiInstance.uxout(uxid);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#uxout");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **uxid** | **String**| uxid to filter by | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **verifyAddress**
+> InlineResponse2007 verifyAddress(address)
+
+Verifies a Skycoin address.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String address = null; // String | Address id.
+try {
+ InlineResponse2007 result = apiInstance.verifyAddress(address);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#verifyAddress");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **address** | **String**| Address id. | [default to null]
+
+### Return type
+
+[**InlineResponse2007**](InlineResponse2007.md)
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **version**
+> version()
+
+
+
+versionHandler returns the application version info
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+try {
+ apiInstance.version();
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#version");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **wallet**
+> Object wallet(id)
+
+Returns a wallet by id.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String id = null; // String | tags to filter by
+try {
+ Object result = apiInstance.wallet(id);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#wallet");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **String**| tags to filter by | [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **walletBalance**
+> Object walletBalance(id)
+
+Returns the wallet's balance, both confirmed and predicted. The predicted balance is the confirmed balance minus the pending spends.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String id = null; // String | tags to filter by
+try {
+ Object result = apiInstance.walletBalance(id);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletBalance");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **String**| tags to filter by | [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **walletCreate**
+> Object walletCreate(seed, label, scan, encrypt, password)
+
+
+
+Loads wallet from seed, will scan ahead N address and load addresses till the last one that have coins.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String seed = null; // String | Wallet seed.
+String label = null; // String | Wallet label.
+Integer scan = null; // Integer | The number of addresses to scan ahead for balances.
+Boolean encrypt = null; // Boolean | Encrypt wallet.
+String password = null; // String | Wallet Password
+try {
+ Object result = apiInstance.walletCreate(seed, label, scan, encrypt, password);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletCreate");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **seed** | **String**| Wallet seed. | [default to null]
+ **label** | **String**| Wallet label. | [default to null]
+ **scan** | **Integer**| The number of addresses to scan ahead for balances. | [optional] [default to null]
+ **encrypt** | **Boolean**| Encrypt wallet. | [optional] [default to null]
+ **password** | **String**| Wallet Password | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **walletDecrypt**
+> Object walletDecrypt(id, password)
+
+Decrypts wallet.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String id = null; // String | Wallet id.
+String password = null; // String | Wallet password.
+try {
+ Object result = apiInstance.walletDecrypt(id, password);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletDecrypt");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **String**| Wallet id. | [default to null]
+ **password** | **String**| Wallet password. | [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **walletEncrypt**
+> Object walletEncrypt(id, password)
+
+Encrypt wallet.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String id = null; // String | Wallet id.
+String password = null; // String | Wallet password.
+try {
+ Object result = apiInstance.walletEncrypt(id, password);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletEncrypt");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **String**| Wallet id. | [default to null]
+ **password** | **String**| Wallet password. | [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **walletFolder**
+> InlineResponse2006 walletFolder(addr)
+
+
+
+Returns the wallet directory path
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String addr = null; // String | Address port
+try {
+ InlineResponse2006 result = apiInstance.walletFolder(addr);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletFolder");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **addr** | **String**| Address port | [default to null]
+
+### Return type
+
+[**InlineResponse2006**](InlineResponse2006.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **walletNewAddress**
+> Object walletNewAddress(id, num, password)
+
+
+
+Generates new addresses
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String id = null; // String | Wallet Id
+String num = null; // String | The number you want to generate
+String password = null; // String | Wallet Password
+try {
+ Object result = apiInstance.walletNewAddress(id, num, password);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletNewAddress");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **String**| Wallet Id | [default to null]
+ **num** | **String**| The number you want to generate | [optional] [default to null]
+ **password** | **String**| Wallet Password | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **walletNewSeed**
+> Object walletNewSeed(entropy)
+
+
+
+Returns the wallet directory path
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String entropy = null; // String | Entropy bitSize.
+try {
+ Object result = apiInstance.walletNewSeed(entropy);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletNewSeed");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **entropy** | **String**| Entropy bitSize. | [optional] [default to null] [enum: 128, 256]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **walletRecover**
+> Object walletRecover(id, seed, password)
+
+Recovers an encrypted wallet by providing the seed. The first address will be generated from seed and compared to the first address of the specified wallet. If they match, the wallet will be regenerated with an optional password. If the wallet is not encrypted, an error is returned.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String id = null; // String | Wallet id.
+String seed = null; // String | Wallet seed.
+String password = null; // String | Wallet password.
+try {
+ Object result = apiInstance.walletRecover(id, seed, password);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletRecover");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **String**| Wallet id. | [default to null]
+ **seed** | **String**| Wallet seed. | [default to null]
+ **password** | **String**| Wallet password. | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **walletSeed**
+> Object walletSeed(id, password)
+
+This endpoint only works for encrypted wallets. If the wallet is unencrypted, The seed will be not returned.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String id = null; // String | Wallet Id.
+String password = null; // String | Wallet password.
+try {
+ Object result = apiInstance.walletSeed(id, password);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletSeed");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **String**| Wallet Id. | [default to null]
+ **password** | **String**| Wallet password. | [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **walletSeedVerify**
+> Object walletSeedVerify(seed)
+
+Verifies a wallet seed.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String seed = null; // String | Seed to be verified.
+try {
+ Object result = apiInstance.walletSeedVerify(seed);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletSeedVerify");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **seed** | **String**| Seed to be verified. | [optional] [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **walletSpent**
+> Object walletSpent(id, dst, coins, password)
+
+
+
+Creates and broadcasts a transaction sending money from one of our wallets to destination address.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String id = null; // String | Wallet id
+String dst = null; // String | Recipient address
+String coins = null; // String | Number of coins to spend, in droplets. 1 coin equals 1e6 droplets.
+String password = null; // String | Wallet password.
+try {
+ Object result = apiInstance.walletSpent(id, dst, coins, password);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletSpent");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **String**| Wallet id | [default to null]
+ **dst** | **String**| Recipient address | [default to null]
+ **coins** | **String**| Number of coins to spend, in droplets. 1 coin equals 1e6 droplets. | [default to null]
+ **password** | **String**| Wallet password. | [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **walletTransaction**
+> Object walletTransaction(inlineObject)
+
+
+
+Creates a signed transaction
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+InlineObject inlineObject = new InlineObject(); // InlineObject |
+try {
+ Object result = apiInstance.walletTransaction(inlineObject);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletTransaction");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **inlineObject** | [**InlineObject**](InlineObject.md)| | [optional]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: application/json
+
+
+# **walletTransactions**
+> Object walletTransactions(id)
+
+
+
+Returns returns all unconfirmed transactions for all addresses in a given wallet verbose
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String id = null; // String | Wallet id.
+try {
+ Object result = apiInstance.walletTransactions(id);
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletTransactions");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **String**| Wallet id. | [default to null]
+
+### Return type
+
+**Object**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **walletUnload**
+> walletUnload(id)
+
+Unloads wallet from the wallet service.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String id = null; // String | Wallet Id.
+try {
+ apiInstance.walletUnload(id);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletUnload");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **String**| Wallet Id. | [default to null]
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **walletUpdate**
+> walletUpdate(id, label)
+
+Update the wallet.
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+String id = null; // String | Wallet Id.
+String label = null; // String | The label the wallet will be updated to.
+try {
+ apiInstance.walletUpdate(id, label);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#walletUpdate");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **id** | **String**| Wallet Id. | [default to null]
+ **label** | **String**| The label the wallet will be updated to. | [default to null]
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[csrfAuth](../README.md#csrfAuth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **wallets**
+> List<InlineResponse2005> wallets()
+
+
+
+Returns all loaded wallets
+
+### Example
+```java
+// Import classes:
+//import skycoin.DefaultApi;
+
+DefaultApi apiInstance = new DefaultApi();
+try {
+ List result = apiInstance.wallets();
+ System.out.println(result);
+} catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#wallets");
+ e.printStackTrace();
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+[**List<InlineResponse2005>**](InlineResponse2005.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
diff --git a/lib/skyapi/docs/InlineObject.md b/lib/skyapi/docs/InlineObject.md
new file mode 100644
index 0000000..005f518
--- /dev/null
+++ b/lib/skyapi/docs/InlineObject.md
@@ -0,0 +1,14 @@
+
+# InlineObject
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**changeAddress** | **String** | | [optional]
+**hoursSelection** | [**Apiv1wallettransactionHoursSelection**](Apiv1wallettransactionHoursSelection.md) | | [optional]
+**ignoreUnconfirmed** | **Boolean** | | [optional]
+**to** | [**List<Apiv1wallettransactionTo>**](Apiv1wallettransactionTo.md) | | [optional]
+**wallet** | [**Apiv1wallettransactionWallet**](Apiv1wallettransactionWallet.md) | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/InlineResponse200.md b/lib/skyapi/docs/InlineResponse200.md
new file mode 100644
index 0000000..7cec3b8
--- /dev/null
+++ b/lib/skyapi/docs/InlineResponse200.md
@@ -0,0 +1,18 @@
+
+# InlineResponse200
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**hours** | **Long** | | [optional]
+**coins** | **Integer** | | [optional]
+**uxid** | **String** | | [optional]
+**ownerAddress** | **String** | | [optional]
+**spentBlockSeq** | **Integer** | | [optional]
+**spentTx** | **String** | | [optional]
+**time** | **Long** | | [optional]
+**srcBlockSeq** | **Long** | | [optional]
+**srcTx** | **String** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/InlineResponse2001.md b/lib/skyapi/docs/InlineResponse2001.md
new file mode 100644
index 0000000..6eff12e
--- /dev/null
+++ b/lib/skyapi/docs/InlineResponse2001.md
@@ -0,0 +1,10 @@
+
+# InlineResponse2001
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**csrfToken** | **String** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/InlineResponse2002.md b/lib/skyapi/docs/InlineResponse2002.md
new file mode 100644
index 0000000..fb3260c
--- /dev/null
+++ b/lib/skyapi/docs/InlineResponse2002.md
@@ -0,0 +1,19 @@
+
+# InlineResponse2002
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**outputs** | [**List<Apiv1exploreraddressOutputs>**](Apiv1exploreraddressOutputs.md) | | [optional]
+**innerHash** | **String** | | [optional]
+**inputs** | [**List<Apiv1exploreraddressInputs>**](Apiv1exploreraddressInputs.md) | | [optional]
+**fee** | **Integer** | | [optional]
+**sigs** | **List<String>** | | [optional]
+**length** | **Long** | | [optional]
+**txid** | **String** | | [optional]
+**type** | **Integer** | | [optional]
+**status** | [**Apiv1exploreraddressStatus**](Apiv1exploreraddressStatus.md) | | [optional]
+**timestamp** | **Integer** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/InlineResponse2003.md b/lib/skyapi/docs/InlineResponse2003.md
new file mode 100644
index 0000000..9a7435f
--- /dev/null
+++ b/lib/skyapi/docs/InlineResponse2003.md
@@ -0,0 +1,28 @@
+
+# InlineResponse2003
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**lastReceived** | **Long** | | [optional]
+**lastSent** | **Long** | | [optional]
+**outgoing** | **Boolean** | | [optional]
+**mirror** | **Integer** | | [optional]
+**address** | **String** | | [optional]
+**listenPort** | **Integer** | | [optional]
+**isTrustedPeer** | **Boolean** | | [optional]
+**connectedAt** | **Long** | | [optional]
+**unconfirmedVerifyTransaction** | [**InlineResponse2003UnconfirmedVerifyTransaction**](InlineResponse2003UnconfirmedVerifyTransaction.md) | | [optional]
+**id** | **Long** | | [optional]
+**state** | [**StateEnum**](#StateEnum) | | [optional]
+**userAgent** | **String** | | [optional]
+**height** | **Long** | | [optional]
+
+
+
+## Enum: StateEnum
+Name | Value
+---- | -----
+
+
+
diff --git a/lib/skyapi/docs/InlineResponse2003UnconfirmedVerifyTransaction.md b/lib/skyapi/docs/InlineResponse2003UnconfirmedVerifyTransaction.md
new file mode 100644
index 0000000..cca7a9f
--- /dev/null
+++ b/lib/skyapi/docs/InlineResponse2003UnconfirmedVerifyTransaction.md
@@ -0,0 +1,12 @@
+
+# InlineResponse2003UnconfirmedVerifyTransaction
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**burnFactor** | **Integer** | | [optional]
+**maxTransactionSize** | **Integer** | | [optional]
+**maxDecimals** | **Integer** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/InlineResponse2004.md b/lib/skyapi/docs/InlineResponse2004.md
new file mode 100644
index 0000000..1f476d0
--- /dev/null
+++ b/lib/skyapi/docs/InlineResponse2004.md
@@ -0,0 +1,14 @@
+
+# InlineResponse2004
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**announced** | **String** | | [optional]
+**isValid** | **Boolean** | | [optional]
+**checked** | **String** | | [optional]
+**received** | **String** | | [optional]
+**transaction** | [**Apiv1pendingTxsTransaction**](Apiv1pendingTxsTransaction.md) | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/InlineResponse2005.md b/lib/skyapi/docs/InlineResponse2005.md
new file mode 100644
index 0000000..32666ea
--- /dev/null
+++ b/lib/skyapi/docs/InlineResponse2005.md
@@ -0,0 +1,11 @@
+
+# InlineResponse2005
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**entries** | [**List<Apiv1walletsEntries>**](Apiv1walletsEntries.md) | | [optional]
+**meta** | [**Apiv1walletsMeta**](Apiv1walletsMeta.md) | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/InlineResponse2006.md b/lib/skyapi/docs/InlineResponse2006.md
new file mode 100644
index 0000000..16e289e
--- /dev/null
+++ b/lib/skyapi/docs/InlineResponse2006.md
@@ -0,0 +1,10 @@
+
+# InlineResponse2006
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**address** | **String** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/InlineResponse2007.md b/lib/skyapi/docs/InlineResponse2007.md
new file mode 100644
index 0000000..5befffb
--- /dev/null
+++ b/lib/skyapi/docs/InlineResponse2007.md
@@ -0,0 +1,11 @@
+
+# InlineResponse2007
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**data** | [**InlineResponse2007Data**](InlineResponse2007Data.md) | | [optional]
+**error** | [**Object**](.md) | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/InlineResponse2007Data.md b/lib/skyapi/docs/InlineResponse2007Data.md
new file mode 100644
index 0000000..e286b3e
--- /dev/null
+++ b/lib/skyapi/docs/InlineResponse2007Data.md
@@ -0,0 +1,10 @@
+
+# InlineResponse2007Data
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**version** | **Long** | | [optional]
+
+
+
diff --git a/lib/skyapi/docs/InlineResponseDefault.md b/lib/skyapi/docs/InlineResponseDefault.md
new file mode 100644
index 0000000..56a9fe6
--- /dev/null
+++ b/lib/skyapi/docs/InlineResponseDefault.md
@@ -0,0 +1,11 @@
+
+# InlineResponseDefault
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **Integer** | | [optional]
+**message** | **String** | | [optional]
+
+
+
diff --git a/lib/skyapi/git_push.sh b/lib/skyapi/git_push.sh
new file mode 100644
index 0000000..0f406ef
--- /dev/null
+++ b/lib/skyapi/git_push.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
+#
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-pestore-perl "minor update"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+
+if [ "$git_user_id" = "" ]; then
+ git_user_id="GIT_USER_ID"
+ echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
+fi
+
+if [ "$git_repo_id" = "" ]; then
+ git_repo_id="GIT_REPO_ID"
+ echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
+fi
+
+if [ "$release_note" = "" ]; then
+ release_note="Minor update"
+ echo "[INFO] No command line input provided. Set \$release_note to $release_note"
+fi
+
+# Initialize the local directory as a Git repository
+git init
+
+# Adds the files in the local repository and stages them for commit.
+git add .
+
+# Commits the tracked changes and prepares them to be pushed to a remote repository.
+git commit -m "$release_note"
+
+# Sets the new remote
+git_remote=`git remote`
+if [ "$git_remote" = "" ]; then # git remote not defined
+
+ if [ "$GIT_TOKEN" = "" ]; then
+ echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
+ git remote add origin https://github.com/${git_user_id}/${git_repo_id}.git
+ else
+ git remote add origin https://${git_user_id}:${GIT_TOKEN}@github.com/${git_user_id}/${git_repo_id}.git
+ fi
+
+fi
+
+git pull origin master
+
+# Pushes (Forces) the changes in the local repository up to the remote repository
+echo "Git pushing to https://github.com/${git_user_id}/${git_repo_id}.git"
+git push origin master 2>&1 | grep -v 'To https'
diff --git a/lib/skyapi/gradle/wrapper/gradle-wrapper.jar b/lib/skyapi/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..2c6137b
Binary files /dev/null and b/lib/skyapi/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/lib/skyapi/gradle/wrapper/gradle-wrapper.properties b/lib/skyapi/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..fa45252
--- /dev/null
+++ b/lib/skyapi/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Mon May 16 21:00:11 CST 2016
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.6-bin.zip
diff --git a/lib/skyapi/gradlew b/lib/skyapi/gradlew
new file mode 100644
index 0000000..9d82f78
--- /dev/null
+++ b/lib/skyapi/gradlew
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/lib/skyapi/gradlew.bat b/lib/skyapi/gradlew.bat
new file mode 100644
index 0000000..5f19212
--- /dev/null
+++ b/lib/skyapi/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/lib/skyapi/pom.xml b/lib/skyapi/pom.xml
new file mode 100644
index 0000000..3801206
--- /dev/null
+++ b/lib/skyapi/pom.xml
@@ -0,0 +1,67 @@
+
+
+ 4.0.0
+ Skycoin
+ skyapi
+ v0.25.1
+
+
+ io.swagger
+ swagger-annotations
+ ${swagger-annotations-version}
+
+
+ org.apache.httpcomponents
+ httpcore
+ ${httpcomponents-httpcore-version}
+
+
+ org.apache.httpcomponents
+ httpclient-android
+ ${httpcomponents-httpclient-version}
+
+
+ org.apache.httpcomponents
+ httpmime
+ ${httpcomponents-httpmime-version}
+
+
+ com.google.code.gson
+ gson
+ ${google-code-gson-version}
+
+
+ com.mcxiaoke.volley
+ library
+ ${volley-library-version}
+
+
+ com.google.android
+ android
+ ${android-platform-version}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.5.1
+
+ 1.7
+ 1.7
+
+
+
+
+
+ 1.5.8
+ 4.4.4
+ 4.5.2
+ 4.3.3
+ 2.6.2
+ 1.0.19
+ 4.1.1.4
+
+
diff --git a/lib/skyapi/src/main/AndroidManifest.xml b/lib/skyapi/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..90fc37c
--- /dev/null
+++ b/lib/skyapi/src/main/AndroidManifest.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/lib/skyapi/src/main/java/org/openapitools/client/ApiException.java b/lib/skyapi/src/main/java/org/openapitools/client/ApiException.java
new file mode 100644
index 0000000..9d5489c
--- /dev/null
+++ b/lib/skyapi/src/main/java/org/openapitools/client/ApiException.java
@@ -0,0 +1,61 @@
+/**
+ * Skycoin REST API.
+ * Skycoin is a next-generation cryptocurrency.
+ *
+ * OpenAPI spec version: 0.25.1
+ * Contact: skycoin.doe@example.com
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package org.openapitools.client;
+
+public class ApiException extends Exception {
+ int code = 0;
+ String message = null;
+
+ public ApiException() {}
+
+ public ApiException(int code, String message) {
+ this.code = code;
+ this.message = message;
+ }
+
+ /**
+ * Get the HTTP status code.
+ *
+ * @return HTTP status code
+ */
+ public int getCode() {
+ return code;
+ }
+
+ /**
+ * Set the HTTP status code.
+ *
+ * @param code HTTP status code.
+ */
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ /**
+ * Get the error message.
+ *
+ * @return Error message.
+ */
+ public String getMessage() {
+ return message;
+ }
+
+ /**
+ * Set the error messages.
+ *
+ * @param message Error message.
+ */
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}
diff --git a/lib/skyapi/src/main/java/org/openapitools/client/ApiInvoker.java b/lib/skyapi/src/main/java/org/openapitools/client/ApiInvoker.java
new file mode 100644
index 0000000..03969bd
--- /dev/null
+++ b/lib/skyapi/src/main/java/org/openapitools/client/ApiInvoker.java
@@ -0,0 +1,530 @@
+/**
+ * Skycoin REST API.
+ * Skycoin is a next-generation cryptocurrency.
+ *
+ * OpenAPI spec version: 0.25.1
+ * Contact: skycoin.doe@example.com
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package org.openapitools.client;
+
+import com.android.volley.Cache;
+import com.android.volley.DefaultRetryPolicy;
+import com.android.volley.Network;
+import com.android.volley.Request;
+import com.android.volley.RequestQueue;
+import com.android.volley.Response;
+import com.android.volley.ResponseDelivery;
+import com.android.volley.toolbox.BasicNetwork;
+import com.android.volley.toolbox.HttpStack;
+import com.android.volley.toolbox.HurlStack;
+import com.android.volley.toolbox.NoCache;
+import com.android.volley.toolbox.RequestFuture;
+import com.google.gson.JsonParseException;
+
+import org.apache.http.Consts;
+import org.apache.http.HttpEntity;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.StringEntity;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TimeZone;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import org.openapitools.client.auth.Authentication;
+import org.openapitools.client.auth.ApiKeyAuth;
+import org.openapitools.client.auth.HttpBasicAuth;
+import org.openapitools.client.request.GetRequest;
+import org.openapitools.client.request.PostRequest;
+import org.openapitools.client.request.PutRequest;
+import org.openapitools.client.request.DeleteRequest;
+import org.openapitools.client.request.PatchRequest;
+
+public class ApiInvoker {
+ private static ApiInvoker INSTANCE;
+ private Map defaultHeaderMap = new HashMap();
+
+ private RequestQueue mRequestQueue;
+
+ private Map authentications;
+
+ private int connectionTimeout;
+
+ /** Content type "text/plain" with UTF-8 encoding. */
+ public static final ContentType TEXT_PLAIN_UTF8 = ContentType.create("text/plain", Consts.UTF_8);
+
+ /**
+ * ISO 8601 date time format.
+ * @see https://en.wikipedia.org/wiki/ISO_8601
+ */
+ public static final SimpleDateFormat DATE_TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
+
+ /**
+ * ISO 8601 date format.
+ * @see https://en.wikipedia.org/wiki/ISO_8601
+ */
+ public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
+
+ static {
+ // Use UTC as the default time zone.
+ DATE_TIME_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC"));
+ DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("UTC"));
+ }
+
+ public static void setUserAgent(String userAgent) {
+ INSTANCE.addDefaultHeader("User-Agent", userAgent);
+ }
+
+ public static Date parseDateTime(String str) {
+ try {
+ return DATE_TIME_FORMAT.parse(str);
+ } catch (java.text.ParseException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static Date parseDate(String str) {
+ try {
+ return DATE_FORMAT.parse(str);
+ } catch (java.text.ParseException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static String formatDateTime(Date datetime) {
+ return DATE_TIME_FORMAT.format(datetime);
+ }
+
+ public static String formatDate(Date date) {
+ return DATE_FORMAT.format(date);
+ }
+
+ public static String parameterToString(Object param) {
+ if (param == null) {
+ return "";
+ } else if (param instanceof Date) {
+ return formatDateTime((Date) param);
+ } else if (param instanceof Collection) {
+ StringBuilder b = new StringBuilder();
+ for(Object o : (Collection)param) {
+ if(b.length() > 0) {
+ b.append(",");
+ }
+ b.append(String.valueOf(o));
+ }
+ return b.toString();
+ } else {
+ return String.valueOf(param);
+ }
+ }
+
+ /*
+ Format to {@code Pair} objects.
+ */
+ public static List parameterToPairs(String collectionFormat, String name, Object value){
+ List params = new ArrayList();
+
+ // preconditions
+ if (name == null || name.isEmpty() || value == null) return params;
+
+ Collection valueCollection = null;
+ if (value instanceof Collection) {
+ valueCollection = (Collection) value;
+ } else {
+ params.add(new Pair(name, parameterToString(value)));
+ return params;
+ }
+
+ if (valueCollection.isEmpty()){
+ return params;
+ }
+
+ // get the collection format
+ collectionFormat = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat); // default: csv
+
+ // create the params based on the collection format
+ if (collectionFormat.equals("multi")) {
+ for (Object item : valueCollection) {
+ params.add(new Pair(name, parameterToString(item)));
+ }
+
+ return params;
+ }
+
+ String delimiter = ",";
+
+ if (collectionFormat.equals("csv")) {
+ delimiter = ",";
+ } else if (collectionFormat.equals("ssv")) {
+ delimiter = " ";
+ } else if (collectionFormat.equals("tsv")) {
+ delimiter = "\t";
+ } else if (collectionFormat.equals("pipes")) {
+ delimiter = "|";
+ }
+
+ StringBuilder sb = new StringBuilder() ;
+ for (Object item : valueCollection) {
+ sb.append(delimiter);
+ sb.append(parameterToString(item));
+ }
+
+ params.add(new Pair(name, sb.substring(1)));
+
+ return params;
+ }
+
+ public static void initializeInstance() {
+ initializeInstance(null);
+ }
+
+ public static void initializeInstance(Cache cache) {
+ initializeInstance(cache, null, 0, null, 30);
+ }
+
+ public static void initializeInstance(Cache cache, Network network, int threadPoolSize, ResponseDelivery delivery, int connectionTimeout) {
+ INSTANCE = new ApiInvoker(cache, network, threadPoolSize, delivery, connectionTimeout);
+ setUserAgent("OpenAPI-Generator/v0.25.1/android");
+
+ // Setup authentications (key: authentication name, value: authentication).
+ INSTANCE.authentications = new HashMap();
+ INSTANCE.authentications.put("csrfAuth", new ApiKeyAuth("header", "X-CSRF-TOKEN"));
+ // Prevent the authentications from being modified.
+ INSTANCE.authentications = Collections.unmodifiableMap(INSTANCE.authentications);
+ }
+
+ private ApiInvoker(Cache cache, Network network, int threadPoolSize, ResponseDelivery delivery, int connectionTimeout) {
+ if(cache == null) cache = new NoCache();
+ if(network == null) {
+ HttpStack stack = new HurlStack();
+ network = new BasicNetwork(stack);
+ }
+
+ if(delivery == null) {
+ initConnectionRequest(cache, network);
+ } else {
+ initConnectionRequest(cache, network, threadPoolSize, delivery);
+ }
+ this.connectionTimeout = connectionTimeout;
+ }
+
+ public static ApiInvoker getInstance() {
+ if (INSTANCE == null) initializeInstance();
+ return INSTANCE;
+ }
+
+ public void addDefaultHeader(String key, String value) {
+ defaultHeaderMap.put(key, value);
+ }
+
+ public String escapeString(String str) {
+ try {
+ return URLEncoder.encode(str, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ return str;
+ }
+ }
+
+ public static Object deserialize(String json, String containerType, Class cls) throws ApiException {
+ try{
+ if("list".equalsIgnoreCase(containerType) || "array".equalsIgnoreCase(containerType)) {
+ return JsonUtil.deserializeToList(json, cls);
+ }
+ else if(String.class.equals(cls)) {
+ if(json != null && json.startsWith("\"") && json.endsWith("\"") && json.length() > 1)
+ return json.substring(1, json.length() - 1);
+ else
+ return json;
+ }
+ else {
+ return JsonUtil.deserializeToObject(json, cls);
+ }
+ }
+ catch (JsonParseException e) {
+ throw new ApiException(500, e.getMessage());
+ }
+ }
+
+ public static String serialize(Object obj) throws ApiException {
+ try {
+ if (obj != null)
+ return JsonUtil.serialize(obj);
+ else
+ return null;
+ }
+ catch (Exception e) {
+ throw new ApiException(500, e.getMessage());
+ }
+ }
+
+ /**
+ * Get authentications (key: authentication name, value: authentication).
+ */
+ public Map getAuthentications() {
+ return authentications;
+ }
+
+ /**
+ * Get authentication for the given name.
+ *
+ * @param authName The authentication name
+ * @return The authentication, null if not found
+ */
+ public Authentication getAuthentication(String authName) {
+ return authentications.get(authName);
+ }
+
+ /**
+ * Helper method to set username for the first HTTP basic authentication.
+ */
+ public void setUsername(String username) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof HttpBasicAuth) {
+ ((HttpBasicAuth) auth).setUsername(username);
+ return;
+ }
+ }
+ throw new RuntimeException("No HTTP basic authentication configured!");
+ }
+
+ /**
+ * Helper method to set password for the first HTTP basic authentication.
+ */
+ public void setPassword(String password) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof HttpBasicAuth) {
+ ((HttpBasicAuth) auth).setPassword(password);
+ return;
+ }
+ }
+ throw new RuntimeException("No HTTP basic authentication configured!");
+ }
+
+ /**
+ * Helper method to set API key value for the first API key authentication.
+ */
+ public void setApiKey(String apiKey) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof ApiKeyAuth) {
+ ((ApiKeyAuth) auth).setApiKey(apiKey);
+ return;
+ }
+ }
+ throw new RuntimeException("No API key authentication configured!");
+ }
+
+ /**
+ * Helper method to set API key prefix for the first API key authentication.
+ */
+ public void setApiKeyPrefix(String apiKeyPrefix) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof ApiKeyAuth) {
+ ((ApiKeyAuth) auth).setApiKeyPrefix(apiKeyPrefix);
+ return;
+ }
+ }
+ throw new RuntimeException("No API key authentication configured!");
+ }
+
+ public void setConnectionTimeout(int connectionTimeout){
+ this.connectionTimeout = connectionTimeout;
+ }
+
+ public int getConnectionTimeout() {
+ return connectionTimeout;
+ }
+
+ /**
+ * Update query and header parameters based on authentication settings.
+ *
+ * @param authNames The authentications to apply
+ */
+ private void updateParamsForAuth(String[] authNames, List queryParams, Map headerParams) {
+ for (String authName : authNames) {
+ Authentication auth = authentications.get(authName);
+ if (auth == null) throw new RuntimeException("Authentication undefined: " + authName);
+ auth.applyToParams(queryParams, headerParams);
+ }
+ }
+
+ public String invokeAPI(String host, String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String contentType, String[] authNames) throws ApiException, InterruptedException, ExecutionException, TimeoutException {
+ try {
+ RequestFuture future = RequestFuture.newFuture();
+ Request request = createRequest(host, path, method, queryParams, body, headerParams, formParams, contentType, authNames, future, future);
+ if(request != null) {
+ mRequestQueue.add(request);
+ return future.get(connectionTimeout, TimeUnit.SECONDS);
+ } else {
+ return "no data";
+ }
+ } catch (UnsupportedEncodingException ex) {
+ throw new ApiException(0, "UnsupportedEncodingException");
+ }
+ }
+
+ public void invokeAPI(String host, String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String contentType, String[] authNames, Response.Listener stringRequest, Response.ErrorListener errorListener) throws ApiException {
+ try {
+ Request request = createRequest(host, path, method, queryParams, body, headerParams, formParams, contentType, authNames, stringRequest, errorListener);
+ if (request != null) {
+ mRequestQueue.add(request);
+ }
+ } catch (UnsupportedEncodingException ex) {
+ throw new ApiException(0, "UnsupportedEncodingException");
+ }
+ }
+
+ public Request createRequest(String host, String path, String method, List queryParams, Object body, Map headerParams, Map formParams, String contentType, String[] authNames, Response.Listener stringRequest, Response.ErrorListener errorListener) throws ApiException, UnsupportedEncodingException {
+ StringBuilder b = new StringBuilder();
+ b.append("?");
+
+ updateParamsForAuth(authNames, queryParams, headerParams);
+
+ if (queryParams != null){
+ for (Pair queryParam : queryParams){
+ if (!queryParam.getName().isEmpty()) {
+ b.append(escapeString(queryParam.getName()));
+ b.append("=");
+ b.append(escapeString(queryParam.getValue()));
+ b.append("&");
+ }
+ }
+ }
+
+ String querystring = b.substring(0, b.length() - 1);
+ String url = host + path + querystring;
+
+ HashMap headers = new HashMap();
+
+ for(String key : headerParams.keySet()) {
+ headers.put(key, headerParams.get(key));
+ }
+
+ for(String key : defaultHeaderMap.keySet()) {
+ if(!headerParams.containsKey(key)) {
+ headers.put(key, defaultHeaderMap.get(key));
+ }
+ }
+ headers.put("Accept", "application/json");
+
+ // URL encoded string from form parameters
+ String formParamStr = null;
+
+ // for form data
+ if ("application/x-www-form-urlencoded".equals(contentType)) {
+ StringBuilder formParamBuilder = new StringBuilder();
+
+ // encode the form params
+ for (String key : formParams.keySet()) {
+ String value = formParams.get(key);
+ if (value != null && !"".equals(value.trim())) {
+ if (formParamBuilder.length() > 0) {
+ formParamBuilder.append("&");
+ }
+ try {
+ formParamBuilder.append(URLEncoder.encode(key, "utf8")).append("=").append(URLEncoder.encode(value, "utf8"));
+ }
+ catch (Exception e) {
+ // move on to next
+ }
+ }
+ }
+ formParamStr = formParamBuilder.toString();
+ }
+ Request request = null;
+
+ if ("GET".equals(method)) {
+ request = new GetRequest(url, headers, null, stringRequest, errorListener);
+ }
+ else if ("POST".equals(method)) {
+ request = null;
+ if (formParamStr != null) {
+ request = new PostRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener);
+ } else if (body != null) {
+ if (body instanceof HttpEntity) {
+ request = new PostRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener);
+ } else {
+ request = new PostRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener);
+ }
+ } else {
+ request = new PostRequest(url, headers, null, null, stringRequest, errorListener);
+ }
+ }
+ else if ("PUT".equals(method)) {
+ request = null;
+ if (formParamStr != null) {
+ request = new PutRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener);
+ } else if (body != null) {
+ if (body instanceof HttpEntity) {
+ request = new PutRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener);
+ } else {
+ request = new PutRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener);
+ }
+ } else {
+ request = new PutRequest(url, headers, null, null, stringRequest, errorListener);
+ }
+ }
+ else if ("DELETE".equals(method)) {
+ request = null;
+ if (formParamStr != null) {
+ request = new DeleteRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener);
+ } else if (body != null) {
+ if (body instanceof HttpEntity) {
+ request = new DeleteRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener);
+ } else {
+ request = new DeleteRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener);
+ }
+ } else {
+ request = new DeleteRequest(url, headers, null, null, stringRequest, errorListener);
+ }
+ }
+ else if ("PATCH".equals(method)) {
+ request = null;
+ if (formParamStr != null) {
+ request = new PatchRequest(url, headers, contentType, new StringEntity(formParamStr, "UTF-8"), stringRequest, errorListener);
+ } else if (body != null) {
+ if (body instanceof HttpEntity) {
+ request = new PatchRequest(url, headers, null, (HttpEntity) body, stringRequest, errorListener);
+ } else {
+ request = new PatchRequest(url, headers, contentType, new StringEntity(serialize(body), "UTF-8"), stringRequest, errorListener);
+ }
+ } else {
+ request = new PatchRequest(url, headers, null, null, stringRequest, errorListener);
+ }
+ }
+
+ if (request != null) {
+ request.setRetryPolicy(new DefaultRetryPolicy((int)TimeUnit.SECONDS.toMillis(this.connectionTimeout), DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
+ }
+
+ return request;
+ }
+
+ private void initConnectionRequest(Cache cache, Network network) {
+ mRequestQueue = new RequestQueue(cache, network);
+ mRequestQueue.start();
+ }
+
+ private void initConnectionRequest(Cache cache, Network network, int threadPoolSize, ResponseDelivery delivery) {
+ mRequestQueue = new RequestQueue(cache, network, threadPoolSize, delivery);
+ mRequestQueue.start();
+ }
+
+ public void stopQueue() {
+ mRequestQueue.stop();
+ }
+}
diff --git a/lib/skyapi/src/main/java/org/openapitools/client/JsonUtil.java b/lib/skyapi/src/main/java/org/openapitools/client/JsonUtil.java
new file mode 100644
index 0000000..0a2b564
--- /dev/null
+++ b/lib/skyapi/src/main/java/org/openapitools/client/JsonUtil.java
@@ -0,0 +1,237 @@
+/**
+ * Skycoin REST API.
+ * Skycoin is a next-generation cryptocurrency.
+ *
+ * OpenAPI spec version: 0.25.1
+ * Contact: skycoin.doe@example.com
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package org.openapitools.client;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParseException;
+import com.google.gson.reflect.TypeToken;
+import java.lang.reflect.Type;
+import java.util.List;
+import java.util.Date;
+import org.openapitools.client.model.*;
+
+public class JsonUtil {
+ public static GsonBuilder gsonBuilder;
+
+ static {
+ gsonBuilder = new GsonBuilder();
+ gsonBuilder.serializeNulls();
+ gsonBuilder.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
+ gsonBuilder.registerTypeAdapter(Date.class, new JsonDeserializer() {
+ public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
+ return new Date(json.getAsJsonPrimitive().getAsLong());
+ }
+ });
+ }
+
+ public static Gson getGson() {
+ return gsonBuilder.create();
+ }
+
+ public static String serialize(Object obj){
+ return getGson().toJson(obj);
+ }
+
+ public static T deserializeToList(String jsonString, Class cls){
+ return getGson().fromJson(jsonString, getListTypeForDeserialization(cls));
+ }
+
+ public static T deserializeToObject(String jsonString, Class cls){
+ return getGson().fromJson(jsonString, getTypeForDeserialization(cls));
+ }
+
+ public static Type getListTypeForDeserialization(Class cls) {
+ String className = cls.getSimpleName();
+
+ if ("Apiv1exploreraddressInputs".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("Apiv1exploreraddressOutputs".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("Apiv1exploreraddressStatus".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("Apiv1pendingTxsTransaction".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("Apiv1walletsEntries".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("Apiv1walletsMeta".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("Apiv1wallettransactionHoursSelection".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("Apiv1wallettransactionTo".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("Apiv1wallettransactionWallet".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("InlineObject".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("InlineResponse200".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("InlineResponse2001".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("InlineResponse2002".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("InlineResponse2003".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("InlineResponse2003UnconfirmedVerifyTransaction".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("InlineResponse2004".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("InlineResponse2005".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("InlineResponse2006".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("InlineResponse2007".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("InlineResponse2007Data".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ if ("InlineResponseDefault".equalsIgnoreCase(className)) {
+ return new TypeToken>(){}.getType();
+ }
+
+ return new TypeToken>(){}.getType();
+ }
+
+ public static Type getTypeForDeserialization(Class cls) {
+ String className = cls.getSimpleName();
+
+ if ("Apiv1exploreraddressInputs".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("Apiv1exploreraddressOutputs".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("Apiv1exploreraddressStatus".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("Apiv1pendingTxsTransaction".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("Apiv1walletsEntries".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("Apiv1walletsMeta".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("Apiv1wallettransactionHoursSelection".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("Apiv1wallettransactionTo".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("Apiv1wallettransactionWallet".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("InlineObject".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("InlineResponse200".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("InlineResponse2001".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("InlineResponse2002".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("InlineResponse2003".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("InlineResponse2003UnconfirmedVerifyTransaction".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("InlineResponse2004".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("InlineResponse2005".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("InlineResponse2006".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("InlineResponse2007".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("InlineResponse2007Data".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ if ("InlineResponseDefault".equalsIgnoreCase(className)) {
+ return new TypeToken(){}.getType();
+ }
+
+ return new TypeToken