# Tangle-Accelerator Core API
### Architecture

Resource: `Address`, `Transaction`, `Bundle`, `Tag`, `Tips`
For `POST`, `PATCH`, `PUT`, and `DELETE` requests, parameters not included in the URL should be encoded as JSON with a Content-Type of `application/json:`
## Errors
### Client Bad Request
#### Response
```
Status: 400 Bad Request
```
```json=
{
"message": "Invalid path"
}
```
### Resource Not Found
#### Response
```json=
Status: 404 Not found
Location: https://localhost/transaction/QXYDRDCFUFQJUCZXJXZKLCSSOLCWUSTJU9GEMITMHFPM9WYZGQXTENAYMCRX99ID9IAJNZICORHYA9999
```
```json
{
"message": "Transaction Not Found"
}
```
==We return null message for now==
#### Reference
* [Client Errors | GitHub API v3](https://developer.github.com/v3/#client-errors)
## Address
### Get New Addresses
```
GET /address
```
#### Response
```json=
{
"address": ["TGYNOYSQBEXICMVAMLJSBBKUCWNMVLRLLBGYLAAIJSFIMEGAOGRXTMILPOXNYMWAL9XTONTO9BOOA9999"]
}
```
## Transaction
### Fetch Transaction Information
```
GET /transaction/<transaction hash>
```
#### Response
```
Status: 200 OK
Location: https://localhost/transaction/TGYNOYSQBEXICMVAMLJSBBKUCWNMVLRLLBGYLAAIJSFIMEGAOGRXTMILPOXNYMWAL9XTONTO9BOOA9999
```
```json=
{
"hash": "TGYNOYSQBEXICMVAMLJSBBKUCWNMVLRLLBGYLAAIJSFIMEGAOGRXTMILPOXNYMWAL9XTONTO9BOOA9999",
"signature_message_fragment": "999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999",
"address": "BNLEIEZKULDXRIIJLDUOQAWZFHU9BHPHIQZWVUYJF9XPSVDDQWV9KKKKMUYLBXSZZZOTVPIUVOLSGMSQZKENBJH9DB",
"value": 2,
"obsoleteTag": "",
"timestamp": 1546436542,
"current_index": 0,
"last_index": 2,
"bundle_hash": "MEWNHACVJNEUEGSEDUYRZSKUIWCYQIEFDGSJBIABBNVCZBSXGIXVIAOSRLDYYQLDSBIABUSHCHQYSZHBY",
"trunk_transaction_hash": "9UCGMOKCVXNZQOARKHMEH9YLXMTRMIWOTWSXSQOTHGCJNTFJLEZBFFAW9QLWCYAGCLPORDBTAAEUA9999",
"branch_transaction_hash": "QUTHNIURTHVHHJYMRBDSZSQFMFTPBARGHH9SAUHTCGWWQYHVWBXNUJVRXCBWRLFFEDBZDIPUDUAQA9999"
"tag": "TANGLE9BEAT9999999999999999",
"attachment_timestamp": 1546436542,
"attachment_timestamp_lower_bound": 1546436542,
"attachment_timestamp_upper_bound": 1546436542
"nonce": "POWSRVIO9GD99999OGTNGPMMMMM"
}
```
#### Reference
* [Transaction | PyOTA](https://pyota.readthedocs.io/en/latest/types.html#transaction)
* [Transaction | iotaledger/iota.js](https://github.com/iotaledger/iota.js/blob/next/packages/transaction-converter/src/index.ts)
* [Transaction | iotaledger/entangled](https://github.com/iotaledger/entangled/blob/develop/common/model/transaction.h)
* [Transaction Sample | theTangle.org](https://thetangle.org/transaction/QXYDRDCFUFQJUCZXJXZKLCSSOLCWUSTJU9GEMITMHFPM9WYZGQXTENAYMCRX99ID9IAJNZICORHYA9999)
### Create Transaction
```
POST /transaction
```
#### Input
| Name | Type | Description |
| --------------- | ------- | ----------------------------------------------------------------------------------------------------------------- |
| message | string | A message of the transaction. |
| is_utf8_message | boolean | Either `true` to encode the message from UTF-8 string or `false` encode the message from ASCII. Default: `false` |
#### Response
```
Status: 201 Created
Location: https://localhost/transaction
```
```json=
{
"hash": "TGYNOYSQBEXICMVAMLJSBBKUCWNMVLRLLBGYLAAIJSFIMEGAOGRXTMILPOXNYMWAL9XTONTO9BOOA9999",
"signature_message_fragment": "999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999",
"address": "BNLEIEZKULDXRIIJLDUOQAWZFHU9BHPHIQZWVUYJF9XPSVDDQWV9KKKKMUYLBXSZZZOTVPIUVOLSGMSQZKENBJH9DB",
"value": 2,
"obsoleteTag": "",
"timestamp": 1546436542,
"current_index": 0,
"last_index": 2,
"bundle_hash": "MEWNHACVJNEUEGSEDUYRZSKUIWCYQIEFDGSJBIABBNVCZBSXGIXVIAOSRLDYYQLDSBIABUSHCHQYSZHBY",
"trunk_transaction_hash": "9UCGMOKCVXNZQOARKHMEH9YLXMTRMIWOTWSXSQOTHGCJNTFJLEZBFFAW9QLWCYAGCLPORDBTAAEUA9999",
"branch_transaction_hash": "QUTHNIURTHVHHJYMRBDSZSQFMFTPBARGHH9SAUHTCGWWQYHVWBXNUJVRXCBWRLFFEDBZDIPUDUAQA9999"
"tag": "TANGLE9BEAT9999999999999999",
"attachment_timestamp": 1546436542,
"attachment_timestamp_lower_bound": 1546436542,
"attachment_timestamp_upper_bound": 1546436542
"nonce": "POWSRVIO9GD99999OGTNGPMMMMM"
}
```
==How to encode the UTF-8 string into Trytes?==
- Candidates:
- [Tryte-UTF8-JSON-Codec/codec.js at master ยท pRizz/Tryte-UTF8-JSON-Codec](https://github.com/pRizz/Tryte-UTF8-JSON-Codec/blob/master/lib/codec.js)
- [trytes - npm](https://www.npmjs.com/package/trytes)
## Bundle
### Fetch Bundle Transactions
```
GET /bundle/<bundle hash>
```
#### Response
```
Status: 200 OK
Location: https://localhost/bundle/MEWNHACVJNEUEGSEDUYRZSKUIWCYQIEFDGSJBIABBNVCZBSXGIXVIAOSRLDYYQLDSBIABUSHCHQYSZHBY
```
```json=
[
{
"hash": "TGYNOYSQBEXICMVAMLJSBBKUCWNMVLRLLBGYLAAIJSFIMEGAOGRXTMILPOXNYMWAL9XTONTO9BOOA9999",
"signature_message_fragment": "999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999",
"address": "BNLEIEZKULDXRIIJLDUOQAWZFHU9BHPHIQZWVUYJF9XPSVDDQWV9KKKKMUYLBXSZZZOTVPIUVOLSGMSQZKENBJH9DB",
"value": 2,
"obsoleteTag": "",
"timestamp": 1546436542,
...
},
{
"hash": "TGYNOYSQBEXICMVAMLJSBBKUCWNMVLRLLBGYLAAIJSFIMEGAOGRXTMILPOXNYMWAL9XTONTO9BOOA9999",
"signature_message_fragment": "999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999",
"address": "BNLEIEZKULDXRIIJLDUOQAWZFHU9BHPHIQZWVUYJF9XPSVDDQWV9KKKKMUYLBXSZZZOTVPIUVOLSGMSQZKENBJH9DB",
"value": 2,
"obsoleteTag": "",
"timestamp": 1546436542,
...
},
...
]
```
#### Reference
* [Bundle | iotaledger/iota.js](https://github.com/iotaledger/iota.js/blob/next/packages/types.ts)
* [BundleEntry | iotaledger/iota.js](https://github.com/iotaledger/iota.js/blob/next/packages/bundle/src/index.ts)
* [Bundle Sample | TheTangle.org](https://thetangle.org/bundle/MEWNHACVJNEUEGSEDUYRZSKUIWCYQIEFDGSJBIABBNVCZBSXGIXVIAOSRLDYYQLDSBIABUSHCHQYSZHBY)
### Fetch Bundle Transaction Hashes
```
GET /bundle/<bundle hash>/hashes
```
#### Response
```
Status: 200 OK
Location: https://localhost/bundle/MEWNHACVJNEUEGSEDUYRZSKUIWCYQIEFDGSJBIABBNVCZBSXGIXVIAOSRLDYYQLDSBIABUSHCHQYSZHBY/hashes
```
```json=
[
"TGYNOYSQBEXICMVAMLJSBBKUCWNMVLRLLBGYLAAIJSFIMEGAOGRXTMILPOXNYMWAL9XTONTO9BOOA9999",
"9UCGMOKCVXNZQOARKHMEH9YLXMTRMIWOTWSXSQOTHGCJNTFJLEZBFFAW9QLWCYAGCLPORDBTAAEUA9999",
"CFJITMBJXDGTOGJNRKEJTTOGCCPB9AMKOPZZONKAXYUWOEPAGRAWAPQYJIHWZI9KYWZHZOZCVCPZ99999"
]
```
## Tag
### Fetch Tag Transactions
```
GET /tag/<tag hash>
```
==Fetch transaction hashes only? or transaction information==
#### Response
```json=
[
{
}
]
```
---
## Tips
### Fetch Pair Tips
Based on `GetTransactionToApproved`
* ~~Includes: Mode 0(GetTransactionToApproved) and Mode 1(Empty Transaction)~~
```
GET /tips/pair
```
#### Response
```
Status: 200 OK
Location: https://localhost/tips/pair
```
```json=
{
"tips":
[
"TGYNOYSQBEXICMVAMLJSBBKUCWNMVLRLLBGYLAAIJSFIMEGAOGRXTMILPOXNYMWAL9XTONTO9BOOA9999",
"CFJITMBJXDGTOGJNRKEJTTOGCCPB9AMKOPZZONKAXYUWOEPAGRAWAPQYJIHWZI9KYWZHZOZCVCPZ99999"
]
}
```
### Fetch All Tips
Return tips list from fullnode
```
GET /tips
```
#### Response
```
Status: 200 OK
Location: https://localhost/tips
```
```json=
{
"tips":
[
"TGYNOYSQBEXICMVAMLJSBBKUCWNMVLRLLBGYLAAIJSFIMEGAOGRXTMILPOXNYMWAL9XTONTO9BOOA9999",
"9UCGMOKCVXNZQOARKHMEH9YLXMTRMIWOTWSXSQOTHGCJNTFJLEZBFFAW9QLWCYAGCLPORDBTAAEUA9999",
"CFJITMBJXDGTOGJNRKEJTTOGCCPB9AMKOPZZONKAXYUWOEPAGRAWAPQYJIHWZI9KYWZHZOZCVCPZ99999"
]
}
```