Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rest server #839

Closed
wants to merge 111 commits into from
Closed
Show file tree
Hide file tree
Changes from 110 commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
26da86d
Add new project for restserver
Aug 16, 2023
b47eb05
Added Utils, Node and contract controllers
Aug 16, 2023
f8b28c3
updated license for each file.
Aug 16, 2023
a4f0793
Added plugin support for plugins to add dependencies via dependency i…
Aug 17, 2023
ff95dda
Update to allow MaxPageSize
Aug 17, 2023
9110fe9
Added new settings for configuration.
cschuchardt88 Aug 18, 2023
28a64b6
Added CORS misconfiguation message to the user if auth and cors is en…
cschuchardt88 Aug 18, 2023
8ab3ce5
Added Wallet API (untested)
cschuchardt88 Aug 19, 2023
fac1217
Added Nep17 tokens controller.
cschuchardt88 Aug 19, 2023
9a04a55
Added invoke gas max amount
cschuchardt88 Aug 19, 2023
bfbecd6
Added blockchain controller
cschuchardt88 Aug 19, 2023
bb4f4da
Changed controllers to show error if is invalid node protocol network
cschuchardt88 Aug 19, 2023
89ffcd8
Fixed RestServerMiddleware crashing if malformed basic auth is sent f…
cschuchardt88 Aug 19, 2023
ea8b90d
Changed json converter for UInt160 to validate Address and scripthash…
cschuchardt88 Aug 19, 2023
28c8bc3
Changes Namespaces
cschuchardt88 Aug 19, 2023
0a26c15
Fixed Wallet Transfers
cschuchardt88 Aug 19, 2023
3e60b80
Error Codes
cschuchardt88 Aug 20, 2023
ee36f48
Added Custom Exceptions
Aug 21, 2023
33b010f
Merge branch 'master' into RestServer
vncoelho Aug 21, 2023
6f8eefc
Added swagger support
Aug 21, 2023
ae89734
Merge branch 'RestServer' of https://github.com/cschuchardt88/neo-mod…
Aug 21, 2023
0382984
Made RestServer more generic and plugin friendly
Aug 22, 2023
5a97e6b
Changed now when wallets expire they will be terminated on time.
Aug 23, 2023
21bc035
Fixed Block, transaction json converters for null values.
Aug 23, 2023
8745fd7
Fixed UInt160 and UInt256 with null values
Aug 23, 2023
92e01d3
Added full wallet functionality
Aug 23, 2023
a2853ed
Added Transactions with scripts
Aug 24, 2023
c5382ff
Fixed typos with json properties in json converters.
cschuchardt88 Aug 26, 2023
f5c97ee
Changed Nep11 and Nep17 token classes to be more sounds on logic
cschuchardt88 Aug 26, 2023
459e7cb
Added swagger server discriptions for wallet controller.
cschuchardt88 Aug 26, 2023
5ca3ca1
Fixes the transaction model for swagger
cschuchardt88 Aug 26, 2023
50f409d
Added Swagger service descriptions
cschuchardt88 Aug 26, 2023
162b036
Fixed typos in swagger descriptions
cschuchardt88 Aug 26, 2023
96a5536
Changed xml commecnts to RestServer only Because you can only use one…
cschuchardt88 Aug 26, 2023
66d2239
Removed GenerateDocumentationFile kind of point if other plugins cant…
cschuchardt88 Aug 26, 2023
333e09c
Changed ExecutionEngineModel to be more swagger friendly
cschuchardt88 Aug 26, 2023
4964664
Fixed all the swagger json objects descriptions, types are now readab…
cschuchardt88 Aug 27, 2023
7959bca
Removed unnecessary namespaces from file(s)
cschuchardt88 Aug 27, 2023
cc9493f
Changed WalletController to have expose more information for some errors
cschuchardt88 Aug 27, 2023
ec1bb83
Changed to Swagger to support only OpenAPI version 2.0 for DotNet Sta…
cschuchardt88 Aug 27, 2023
e29b213
Fixed CORS wasnt being set.
Aug 28, 2023
ac0ddc2
Changed WalletTimeout to WalletSessionTimeout
Aug 28, 2023
bf4fca7
Code clean up
Aug 28, 2023
6f62641
Merge branch 'master' into RestServer
cschuchardt88 Aug 30, 2023
370e855
Changed names of controller from token to tokens
cschuchardt88 Sep 4, 2023
5cfd7f8
Merge branch 'master' into RestServer
cschuchardt88 Sep 6, 2023
6651d32
Merge branch 'master' into RestServer
cschuchardt88 Sep 13, 2023
654ef49
Merge branch 'master' into RestServer
cschuchardt88 Sep 20, 2023
efa90bb
Added basic auth handler
cschuchardt88 Sep 20, 2023
f281516
Merge branch 'master' into RestServer
cschuchardt88 Sep 26, 2023
2c0391d
Update timer to not be runaway timer
cschuchardt88 Sep 26, 2023
ef1f3db
Updated Json Converter Settings
cschuchardt88 Nov 7, 2023
e6e9aac
Merge branch 'master' into RestServer
cschuchardt88 Nov 7, 2023
f6e1249
Added RestServer Docs
cschuchardt88 Nov 8, 2023
0e32449
Merge branch 'master' into RestServer
cschuchardt88 Nov 8, 2023
bc6f89e
Merge branch 'neo-project:master' into RestServer
cschuchardt88 Nov 8, 2023
2c18b6d
Merge branch 'master' into RestServer
cschuchardt88 Nov 20, 2023
61f53cb
Remove nativeupdatehistory from protocolsettingmodel
cschuchardt88 Nov 20, 2023
3679add
fix
cschuchardt88 Nov 20, 2023
1eefc6c
removed dupe neo package for CodeQL to work
cschuchardt88 Nov 20, 2023
46bc7c7
Revert "removed dupe neo package for CodeQL to work"
cschuchardt88 Nov 23, 2023
e68a7fd
Merge branch 'master' into RestServer
cschuchardt88 Dec 3, 2023
ee26faf
Merge branch 'master' into RestServer
superboyiii Dec 7, 2023
475b4fe
Update src/RestServer/RestServer.csproj
cschuchardt88 Dec 7, 2023
79176e3
Update docs/RestServer/README.md
cschuchardt88 Dec 7, 2023
287cf07
Update src/RestServer/Extensions/LedgerContractExtensions.cs
cschuchardt88 Dec 7, 2023
b2dbc9e
Update src/RestServer/Extensions/LedgerContractExtensions.cs
cschuchardt88 Dec 7, 2023
ce61674
Update src/RestServer/Models/Blockchain/AccountDetails.cs
cschuchardt88 Dec 7, 2023
8fbe605
Update src/RestServer/Controllers/v1/LedgerController.cs
cschuchardt88 Dec 11, 2023
d1bcc57
Update src/RestServer/Controllers/v1/LedgerController.cs
cschuchardt88 Dec 11, 2023
77a2a7a
Updated page size defaults to 50
cschuchardt88 Dec 11, 2023
117b1bb
Fixed hardfork names
cschuchardt88 Dec 11, 2023
4d817cf
Updated transaction attributes
cschuchardt88 Dec 11, 2023
27a7592
Fixed GetTransaction; returned 404 on invalid trasnaction.
cschuchardt88 Dec 11, 2023
22ad417
Fixed Manifest extra null exception
cschuchardt88 Dec 11, 2023
decd24a
Apply suggestions from code review
cschuchardt88 Dec 25, 2023
73276da
Update src/RestServer/Controllers/v1/WalletController.cs
cschuchardt88 Dec 27, 2023
8c2e23f
Update src/RestServer/Models/Wallet/WalletAddressModel.cs
cschuchardt88 Dec 27, 2023
459938f
Update src/RestServer/Controllers/v1/WalletController.cs
cschuchardt88 Dec 27, 2023
6b82940
Update src/RestServer/Controllers/v1/WalletController.cs
cschuchardt88 Dec 27, 2023
e6f3215
Update src/RestServer/Controllers/v1/WalletController.cs
cschuchardt88 Dec 27, 2023
76194d7
Update src/RestServer/RestServerUtility.JTokens.cs
superboyiii Dec 27, 2023
784c7db
fix rules
superboyiii Dec 28, 2023
35741f6
Fixes
cschuchardt88 Dec 29, 2023
8c588bb
Fixed OpenWallet base path
cschuchardt88 Jan 3, 2024
f46ddbf
Merge branch 'master' into RestServer
shargon Jan 4, 2024
a072dc1
Added AspNetCore
cschuchardt88 Jan 6, 2024
8c06289
Merge branch 'RestServer' of https://github.com/cschuchardt88/neo-mod…
cschuchardt88 Jan 6, 2024
26170fc
Merge branch 'master' into RestServer
cschuchardt88 Jan 6, 2024
10c6655
Prevent DateTime issues
shargon Jan 8, 2024
b9613a9
OnKillWalletSession (rest kill all)
shargon Jan 8, 2024
c60c7a7
Clean code
shargon Jan 8, 2024
1076496
Merge branch 'RestServer' of https://github.com/cschuchardt88/neo-mod…
shargon Jan 8, 2024
c5aeee4
case insensitive check
shargon Jan 8, 2024
a5a968b
Clean empty lines
shargon Jan 8, 2024
668feb3
Clean
shargon Jan 8, 2024
c5c2f5c
Extend `BigDecimalJsonConverter`
shargon Jan 8, 2024
68c4dfe
Update src/RestServer/Controllers/v1/WalletController.cs
shargon Jan 8, 2024
e915ad0
Nullable and some fixes
shargon Jan 9, 2024
10de333
format
shargon Jan 9, 2024
87949e7
clean using added by error
shargon Jan 9, 2024
16c669e
fix LFI
shargon Jan 9, 2024
35ff01b
Merge branch 'master' into RestServer
vncoelho Jan 10, 2024
3971f5f
Removed wallets
cschuchardt88 Jan 10, 2024
a8d378a
Code Format
cschuchardt88 Jan 10, 2024
2beb17e
Remove more wallet stuff
cschuchardt88 Jan 12, 2024
aded6ed
Merge branch 'master' into RestServer
cschuchardt88 Jan 12, 2024
26d0b17
Merge branch 'master' into RestServer
Jim8y Feb 15, 2024
724b10b
Merge branch 'master' into RestServer
cschuchardt88 Mar 19, 2024
6cbea40
Merge branch 'master' into RestServer
cschuchardt88 Mar 30, 2024
0c96908
Merge branch 'master' into RestServer
superboyiii Apr 7, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 108 additions & 0 deletions docs/RestServer/Addons.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
## RestServer Plugin
In this section of you will learn how to make a `neo-cli` plugin that integrates with `RestServer`
plugin. Lets take a look at [Example Plugin](/examples/RestServerPlugin).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we still have an example? Because currently an example plugin link navigates to nowhere.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is a start https://github.com/cschuchardt88/neo-modules/blob/RestServer/docs/RestServer/Addons.md however looks like some stuff is missing.


- No reference to `RestServer` is required.
- Requires DotNet 7.0

## Folder Structure
```bash
Project
├── Controllers
│ └── ExampleController.cs
├── ExamplePlugin.cs
├── ExamplePlugin.csproj
├── Exceptions
│ └── CustomException.cs
└── Models
└── ErrorModel.cs
```
The only thing that is important here is the `controllers` folder. This folder is required for the `RestServer`
plugin to register the controllers in its web server. This location is where you put all your controllers.

## Controllers
The `controller` class is the same as ASP.Net Core's. Controllers must have their attribute set
as `[ApiController]` and inherent from `ControllerBase`.

## Swagger Controller
A `Swagger` controller uses special attributes that are set on your controller's class.

**Controller Class Attributes**
- `[Produces(MediaTypeNames.Application.Json)]` (_Required_)
- `[Consumes(MediaTypeNames.Application.Json)]` (_Required_)
- `[ApiExplorerSettings(GroupName = "v1")]`
- **GroupName** - _is which version of the API you are targeting._
- `[ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ErrorModel))]` (_Required_)
- **Type** - _Must have a base class of [error](#error-class)._

## Error Class
Needs to be the same as `RestServer` of else there will be some inconsistencies
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/of else/otherwise

with end users not knowing which type to use. This class can be `public` or `internal`.
Properties `Code`, `Name` and `Message` values can be whatever you desire.

**Model**
```csharp
public class ErrorModel
{
public int Code { get; set; };
public string Name { get; set; };
public string Message { get; set; };
}
Comment on lines +41 to +50
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The case is they can't. We have neo-project/proposals#156 for RPC errors, and if we're merging this PR, then I think we need some unified set of error codes for REST as far.

```

## Controller Actions
Controller actions need to have special attributes as well as code comments.

- `[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(string))]`

HTTP status code `200 (OK)` is required with return type defined. You can use more than one attribute. One per HTTP status code.

### Action Example
```csharp
[HttpGet("contracts/{hash:required}/sayHello", Name = "GetSayHello")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(string))]
public IActionResult GetSayHello(
[FromRoute(Name = "hash")]
UInt160 scripthash)
{
if (scripthash == UInt160.Zero)
return NoContent();
return Ok($"Hello, {scripthash}");
}
```
Notice that the _above_ example also returns with HTTP status code of `204 No Content`.
This action `route` also extends the `contracts` API. Adding method `sayHello`. Routes
can be what you like as well. But if you want to extend on any existing controller you
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/extend on/extend

must use existing routes paths.

### Path(s)
- `/api/v1/contracts/`
- `/api/v1/ledger/`
- `/api/v1/node/`
- `/api/v1/tokens`
- `/api/v1/Utils/`

### Excluded Path(s)
- `/api/v1/wallet/`

_for security reasons_.

### Code Comments for Swagger
```csharp
/// <summary>
///
/// </summary>
/// <param name="" example=""></param>
/// <returns></returns>
/// <response code="200">Successful</response>
/// <response code="400">An error occurred. See Response for details.</response>
```

Also note that you need to have `GenerateDocumentationFile` enabled in your
`.csproj` file. The `xml` file that is generated; in our case would be `RestServerPlugin.xml`.
This file gets put in same directory `Plugins/RestServerPlugin/` which is in the root of `neo-node`
executable folder. Where you will see `neo-cli.exe`.

File `RestServerPlugin.xml` will get added to `Swagger` automatically by the `RestServer`
plugin.
54 changes: 54 additions & 0 deletions docs/RestServer/ConfigFile.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
## Table

| Name | Type | Description |
| :--- | :---: | :--- |
|**Network**|_uint32_|_Network you would like the `RestServer` to be enabled on._|
|**BindAddress**|_string_|_Ip address of the interface you want to bind too._|
|**Port**|_uint32_|_Port number to bind too._|
|**KeepAliveTimeout**|_uint32_|_Time to keep the request alive, in seconds._|
|**SslCertFile**|_string_|_Is the path and file name of a certificate file, relative to the directory that contains the node's executable files._|
|**SslCertPassword**|_string_|_Is the password required to access the `X.509` certificate data._|
|**TrustedAuthorities**|_StringArray_|_Tumbprints of the of the last certificate authority in the chain._|
|**EnableBasicAuthentication**|_boolean_|_enables basic authentication._|
|**RestUser**|_string_|_Basic authentication's `username`._|
|**RestPass**|_string_|_Basic authentication's `password`._|
|**EnableCors**|_boolean_|_Enables Cross-origin resource sharing (`CORS`). Note by default it enables `*` any origin._|
|**AllowOrigins**|_StringArray_|_A list of the origins to allow. Note needs to add origins for basic auth to work with `CORS`._|
|**DisableControllers**|_StringArray_|_A list of `controllers` to be disabled. Requires restart of the node, if changed._|
|**EnableCompression**|_boolean_|_Enables `GZip` data compression._|
|**CompressionLevel**|_enum_|_Compression level. Values can be `Fastest`, `Optimal`, `NoCompression` or `SmallestSize`_|
|**EnableForwardedHeaders**|_boolean_|_Enables response/request headers for proxy forwarding. (data center usage)_|
|**EnableSwagger**|_boolean_|_Enables `Swagger` with `Swagger UI` for the rest services._|
|**MaxPageSize**|_uint32_|_Max page size for searches on `Ledger`/`Contracts` route._|
|**MaxConcurrentConnections**|_int64_|_Max allow concurrent HTTP connections._|
|**MaxInvokeGas**|_int64_|_Max gas to be invoked on the `Neo` virtual machine._|

## Default "Config.json" file
```json
{
"PluginConfiguration": {
"Network": 860833102,
"BindAddress": "127.0.0.1",
"Port": 10339,
"KeepAliveTimeout": 120,
"SslCertFile": "",
"SslCertPassword": "",
"TrustedAuthorities": [],
"EnableBasicAuthentication": false,
"RestUser": "",
"RestPass": "",
"EnableCors": true,
"AllowOrigins": [],
"DisableControllers": [ "WalletController" ],
"EnableCompression": true,
"CompressionLevel": "SmallestSize",
"EnableForwardedHeaders": false,
"EnableSwagger": true,
"MaxPageSize": 50,
"MaxConcurrentConnections": 40,
"MaxTransactionFee": 10000000,
"MaxInvokeGas": 20000000,
"WalletSessionTimeout": 120
}
}
```
144 changes: 144 additions & 0 deletions docs/RestServer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
## RestServer
In this section you will learn about `RestServer` plugin and how it works.

See [config.json](ConfigFile.md) for information about the configurations.

## Dependencies
- **Microsoft.AspNetCore.JsonPatch.dll** `Required`
- **Microsoft.AspNetCore.Mvc.NewtonsoftJson.dll** `Required`
- **Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer.dll** `Required`
- **Microsoft.AspNetCore.Mvc.Versioning.dll** `Required`
- **Microsoft.OpenApi.dll** `Required`
- **Newtonsoft.Json.Bson.dll** `Required`
- **Newtonsoft.Json.dll** `Required`
- **System.ServiceProcess.ServiceController.dll** `Required`
- **Microsoft.AspNetCore.Mvc.Versioning.dll** `Required`
- **Microsoft.AspNetCore.Mvc.Versioning.dll** `Required`
- **Microsoft.AspNetCore.Mvc.Versioning.dll** `Required`
- **Microsoft.OpenApi.dll** `Swagger`
- **Swashbuckle.AspNetCore.Swagger.dll** `Swagger`
- **Swashbuckle.AspNetCore.SwaggerGen.dll** `Swagger`
- **Swashbuckle.AspNetCore.SwaggerUI.dll** `Swagger`
- **Swashbuckle.AspNetCore.Newtonsoft.dll** `Swagger`
- **RestServer.xml** `Swagger UI`

These files go in the same directory as the `RestServer.dll`. In neo-cli
`plugins/RestServer/` folder.

## Response Headers
| Name | Value(s) | Description |
| :---: | --- | :--- |
|**server**|_neo-cli/3.6.0 RestServer/3.6.0_|_`neo-cli` and `RestServer` version._|

Custom headers can be added by [Neo RestServer Plugins](Addons.md).

## JSON Serializer
`RestServer` uses custom NewtonSoft JSON Converters to serialize controller action
responses and `route` parameters.

**One Way Binding** - `Write` only.
- `Neo.SmartContract.ContractState`
- `Neo.SmartContract.NefFile`
- `Neo.SmartContract.MethodToken`
- `Neo.SmartContract.Native.TrimmedBlock`
- `Neo.SmartContract.Manifest.ContractAbi`
- `Neo.SmartContract.Manifest.ContractGroup`
- `Neo.SmartContract.Manifest.ContractManifest`
- `Neo.SmartContract.Manifest.ContractPermission`
- `Neo.SmartContract.Manifest.ContractPermissionDescriptor`
- `Neo.Network.P2P.Payloads.Block`
- `Neo.Network.P2P.Payloads.Header`
- `Neo.Network.P2P.Payloads.Signer`
- `Neo.Network.P2P.Payloads.TransactionAttribute`
- `Neo.Network.P2P.Payloads.Transaction`
- `Neo.Network.P2P.Payloads.Witness`

**Two Way Binding** - `Read` & `Write`
- `System.Guid`
- `System.ReadOnlyMemory<T>`
- `Neo.BigDecimal`
- `Neo.UInt160`
- `Neo.UInt256`
- `Neo.Cryptography.ECC.ECPoint`
- `Neo.VM.Types.Array`
- `Neo.VM.Types.Boolean`
- `Neo.VM.Types.Buffer`
- `Neo.VM.Types.ByteString`
- `Neo.VM.Types.Integer`
- `Neo.VM.Types.InteropInterface`
- `Neo.VM.Types.Null`
- `Neo.VM.Types.Map`
- `Neo.VM.Types.Pointer`
- `Neo.VM.Types.StackItem`
- `Neo.VM.Types.Struct`

## Remote Endpoints
Parametes `{hash}` can be any Neo N3 address or scripthash; `{address}` can be any Neo N3 address **only**; `{number}` and `{index}` can be any _**uint32**_.

**Parameter Examples**
- `{hash}` - _0xef4073a0f2b305a38ec4050e4d3d28bc40ea63f5_ **or** _NiHURyS83nX2mpxtA7xq84cGxVbHojj5Wc_
- `{address}` - _NiHURyS83nX2mpxtA7xq84cGxVbHojj5Wc_
- `{number}` - _1_
- `{index}` - _2500000_

**Paths**
- Utils
- `[GET]` `/api/v1/utils/{hash}/address`
- `[GET]` `/api/v1/utils/{address}/scripthash`
- `[GET]` `/api/v1/utils/{hash}/{address}/validate`
- Node
- `[GET]` `/api/v1/node/peers`
- `[GET]` `/api/v1/node/plugins`
- `[GET]` `/api/v1/node/settings`
- Ledger
- `[GET]` `/api/v1/ledger/neo/accounts`
- `[GET]` `/api/v1/ledger/gas/accounts`
- `[GET]` `/api/v1/ledger/blocks?page={number}&size={number}`
- `[GET]` `/api/v1/ledger/blocks/height`
- `[GET]` `/api/v1/ledger/blocks/{index}`
- `[GET]` `/api/v1/ledger/blocks/{index}/header`
- `[GET]` `/api/v1/ledger/blocks/{index}/witness`
- `[GET]` `/api/v1/ledger/blocks/{index}/transactions?page={number}&size={number}`
- `[GET]` `/api/v1/ledger/transactions/{hash}`
- `[GET]` `/api/v1/ledger/transactions/{hash}/witnesses`
- `[GET]` `/api/v1/ledger/transactions/{hash}/signers`
- `[GET]` `/api/v1/ledger/transactions/{hash}/atributes`
- `[GET]` `/api/v1/ledger/memorypool?page={number}&size={number}`
- `[GET]` `/api/v1/ledger/memorypool/verified?page={number}&size={number}`
- `[GET]` `/api/v1/ledger/memorypool/unverified?page={number}&size={number}`
- `[GET]` `/api/v1/ledger/memorypool/count`
- Tokens
- `[GET]` `/api/v1/tokens/balanceof/{address}`
- NFTs
- `[GET]` `/api/v1/tokens/nep-11?page={number}&size={number}`
- `[GET]` `/api/v1/tokens/nep-11/count`
- `[GET]` `/api/v1/tokens/nep-11/{hash}/balanceof/{address}`
- NEP-17
- `[GET]` `/api/v1/tokens/nep-17?page={number}&size={number}`
- `[GET]` `/api/v1/tokens/nep-17/count`
- `[GET]` `/api/v1/tokens/nep-17/{hash}/balanceof/{address}`
- Contracts
- `[GET]` `/api/v1/contracts?page={number}&size={number}`
- `[GET]` `/api/v1/contracts/count`
- `[GET]` `/api/v1/contracts/{hash}`
- `[GET]` `/api/v1/contracts/{hash}/abi`
- `[GET]` `/api/v1/contracts/{hash}/manifest`
- `[GET]` `/api/v1/contracts/{hash}/nef`
- `[GET]` `/api/v1/contracts/{hash}/storage`
- Wallet
- `[POST]` `/api/v1/wallet/open`
- `[POST]` `/api/v1/wallet/create`
- `[POST]` `/api/v1/wallet/{session}/address/create`
- `[GET]` `/api/v1/wallet/{session}/address/list`
- `[GET]` `/api/v1/wallet/{session}/asset/list`
- `[GET]` `/api/v1/wallet/{session}/balance/list`
- `[POST]` `/api/v1/wallet/{session}/changepassword`
- `[GET]` `/api/v1/wallet/{session}/close`
- `[GET]` `/api/v1/wallet/{session}/delete/{address}`
- `[GET]` `/api/v1/wallet/{session}/export/{address}`
- `[GET]` `/api/v1/wallet/{session}/export`
- `[GET]` `/api/v1/wallet/{session}/gas/unclaimed`
- `[GET]` `/api/v1/wallet/{session}/key/list`
- `[POST]` `/api/v1/wallet/{session}/import`
- `[POST]` `/api/v1/wallet/{session}/import/multisigaddress`
- `[POST]` `/api/v1/wallet/{session}/transfer`
7 changes: 6 additions & 1 deletion neo-modules.sln
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32819.101
Expand Down Expand Up @@ -43,6 +42,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SQLiteWallet", "src\SQLiteW
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StorageDumper", "src\StorageDumper\StorageDumper.csproj", "{938D86EA-0F48-436B-9255-4AD9A8E6B9AC}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RestServer", "src\RestServer\RestServer.csproj", "{A893825D-65FF-4FA9-85EF-16F3AC626A29}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Neo", "neo\src\Neo\Neo.csproj", "{A00FC746-1351-4275-B2D9-489477B409C0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Neo.IO", "neo\src\Neo.IO\Neo.IO.csproj", "{FEC96A32-38AB-426B-A93E-D37583BEE901}"
Expand Down Expand Up @@ -137,6 +137,10 @@ Global
{938D86EA-0F48-436B-9255-4AD9A8E6B9AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{938D86EA-0F48-436B-9255-4AD9A8E6B9AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{938D86EA-0F48-436B-9255-4AD9A8E6B9AC}.Release|Any CPU.Build.0 = Release|Any CPU
{A893825D-65FF-4FA9-85EF-16F3AC626A29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A893825D-65FF-4FA9-85EF-16F3AC626A29}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A893825D-65FF-4FA9-85EF-16F3AC626A29}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A893825D-65FF-4FA9-85EF-16F3AC626A29}.Release|Any CPU.Build.0 = Release|Any CPU
{A00FC746-1351-4275-B2D9-489477B409C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A00FC746-1351-4275-B2D9-489477B409C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A00FC746-1351-4275-B2D9-489477B409C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand Down Expand Up @@ -188,6 +192,7 @@ Global
{8D2EE375-2E2D-45FE-A4E9-0254D12C7554} = {59D802AB-C552-422A-B9C3-64D329FBCDCC}
{D121D57A-512E-4F74-ADA1-24482BF5C42B} = {97E81C78-1637-481F-9485-DA1225E94C23}
{938D86EA-0F48-436B-9255-4AD9A8E6B9AC} = {97E81C78-1637-481F-9485-DA1225E94C23}
{A893825D-65FF-4FA9-85EF-16F3AC626A29} = {97E81C78-1637-481F-9485-DA1225E94C23}
{A00FC746-1351-4275-B2D9-489477B409C0} = {997874E0-C2A7-4EB2-85AA-180AF592DC6D}
{FEC96A32-38AB-426B-A93E-D37583BEE901} = {997874E0-C2A7-4EB2-85AA-180AF592DC6D}
{188D043E-393D-4E5B-A216-4274BF9AFB23} = {997874E0-C2A7-4EB2-85AA-180AF592DC6D}
Expand Down
Loading
Loading