npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@fr8/protocol

v1.2.0

Published

EDI X12/EDIFACT NFT Protocol for Supply Chain

Downloads

33

Readme

= TrueNFT - B2B NFT Protocol

=== Overview

TrueNFT enables B2B Messages to be tokenized either through EDI or XML Mappings and Data Ingestion

==== TrueNFT Protocol Diagram

=== Valid Server Setup

. Deploy the NFT and Master Proxy contracts . Deploy the Universal Proxy contract with the Master Proxy's address and an admin address (this should be a human account) as input . Deploy the Controller contract with the Universal Proxy's address and an admin address (the same address as in step 2) an input . Call changeController through the Universal Proxy from the admin address. The controller should be changed to the controller address deployed in step

Steps 1-3 cannot be performed through the API. Step 4 can if the controller_address is originally set to equal the universal_address. This solution is not ideal, so all of the steps 1-4 should be completed during the server setup.

[[security--development]] === Security & Development


These smart contracts will need to be updated for gas efficiency and to verify their security in the upcoming weeks.


The basic smart contract implementation is a functional set of smart contracts that will meet the implementation needs of any company using EDI X12/EDIFACT.

==== API Contract Testing

  • The continuous integration for github is a script that will run the postman and truffle tests on new commits added to the github repository.
  • The truffle tests are a set of javascript unit tests that will verify the modular properties of the codebase to ensure that it always meets the intention of the smart contract architecture. They are designed to have near-complete code coverage and thus should prevent most bugs.
  • The postman api unit tests are a set of tests for each api endpoint that verify that the endpoints will reject on invalid inputs and return the right data types.

In combination with the truffle tests, the postman tests will verify the integrity of the whole codebase.

The javascript endpoint implementation of the endpoints extends the test endpoints from last week. Now, in addition to data sanitation and returning proper values, they will parse the input data, format transactions and make ethereum calls through the infura web3. The new endpoints will also properly validate Corporate signatures of the nonce which protects admin transactions.

=== Usage

SEE link:/postman[API]

=== Deployments

SEE link:/deployments[DEPLOYMENTS]

=== Roadmap

[cols="<,<",options="header",] |=== |Development |Dates |GraphQL |2020 Q4 |Gas Optimizations |2020 Q4 |Composability |2020 Q4 |===

[abstract] .Abstract API reference for the Freight Trust dApp which allows recording, transfering and signing of EDI-based documents such as bills of lading or warehouse receipts.

// markup not found, no include::{specDir}intro.adoc[opts=optional]

== Endpoints

[.Default] === Default

[.getNonce] ==== getNonce

GET /getNonce

Returns the current message Freight Trust needs to sign to verify their next post request

===== Description

// markup not found, no include::{specDir}getNonce/GET/spec.adoc[opts=optional]

===== Parameters

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful query | <>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}getNonce/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}getNonce/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :getNonce/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}getNonce/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.ERC721Token] === ERC721Token

[.approve] ==== approve

POST /nft/approve/

Change or reaffirm the approved address for an NFT

===== Description

// markup not found, no include::{specDir}nft/approve/POST/spec.adoc[opts=optional]

===== Parameters

===== Body Parameter

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| auth | The Freight Trust signature of the nonce <> | X | |

|===

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| approved | The address being approved | X | null |

| tokenId | The id of the token to be approved | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Approve | <>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/approve/POST/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/approve/POST/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/approve/POST/POST.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/approve/POST/implementation.adoc[opts=optional]

endif::internal-generation[]

[.balanceOf] ==== balanceOf

GET /nft/balanceOf/

Count all NFTs assigned to an owner

===== Description

// markup not found, no include::{specDir}nft/balanceOf/GET/spec.adoc[opts=optional]

===== Parameters

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| owner | The address of the owner | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Query | <>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/balanceOf/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/balanceOf/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/balanceOf/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/balanceOf/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.createRecord] ==== createRecord

POST /nft/createRecord/

Creates a new record

===== Description

Allows Freight Trust to create a record with the signature of the owner and of the participant.

// markup not found, no include::{specDir}nft/createRecord/POST/spec.adoc[opts=optional]

===== Parameters

===== Body Parameter

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| auth | <> | X | |

|===

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| recordID | The identifying hash of the record | X | null |

| owner | The owner of the record | X | null |

| participant | The address of the participant in the record | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Creation | <>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/createRecord/POST/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/createRecord/POST/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/createRecord/POST/POST.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/createRecord/POST/implementation.adoc[opts=optional]

endif::internal-generation[]

[.getApprovedById] ==== getApprovedById

GET /nft/getApproved/

Get the approved address for a single NFT

===== Description

The approved address for this NFT, or the zero address if there is none

// markup not found, no include::{specDir}nft/getApproved/GET/spec.adoc[opts=optional]

===== Parameters

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| tokenId | The NFT to find the approved address for | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Query | <>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/getApproved/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/getApproved/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/getApproved/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/getApproved/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.isApprovedForAll] ==== isApprovedForAll

GET /nft/isApprovedForAll/

Query if an address is an authorized operator for another address

===== Description

True if operator is an approved operator for owner, false otherwise

// markup not found, no include::{specDir}nft/isApprovedForAll/GET/spec.adoc[opts=optional]

===== Parameters

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| owner | The address that owns the NFTs | X | null |

| operator | The address that acts on behalf of the owner | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Query | <>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/isApprovedForAll/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/isApprovedForAll/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/isApprovedForAll/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/isApprovedForAll/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.name] ==== name

GET /nft/name

Returns the token contract's name

===== Description

// markup not found, no include::{specDir}nft/name/GET/spec.adoc[opts=optional]

===== Parameters

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful query | <>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/name/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/name/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/name/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/name/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.ownerOf] ==== ownerOf

GET /nft/ownerOf/

Find the owner of an NFT

===== Description

// markup not found, no include::{specDir}nft/ownerOf/GET/spec.adoc[opts=optional]

===== Parameters

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| tokenId | The Id of the token in question | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Query | <>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/ownerOf/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/ownerOf/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/ownerOf/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/ownerOf/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.safeTransferFrom] ==== safeTransferFrom

POST /nft/safeTransferFrom/

Transfers the ownership of an NFT from one address to another address

===== Description

// markup not found, no include::{specDir}nft/safeTransferFrom/POST/spec.adoc[opts=optional]

===== Parameters

===== Body Parameter

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| auth | The Freight Trust signature of the nonce <> | X | |

|===

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| from | The sender of the transfer | X | null |

| to | The recipient of the transfer | X | null |

| tokenId | The id of the token to be transferred | X | null |

| extraData | Optional data to be sent with the transaction | - | null |

|===

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Transfer | <>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/safeTransferFrom/POST/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/safeTransferFrom/POST/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/safeTransferFrom/POST/POST.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/safeTransferFrom/POST/implementation.adoc[opts=optional]

endif::internal-generation[]

[.setApprovalForAll] ==== setApprovalForAll

POST /nft/setApprovalForAll/

Allows Freight Trust to issue univeral approval

===== Description

Enable or disable approval for a third party (operator) to manage all of Freight Trust's assets

// markup not found, no include::{specDir}nft/setApprovalForAll/POST/spec.adoc[opts=optional]

===== Parameters

===== Body Parameter

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| auth | The Freight Trust signature of the nonce <> | X | |

|===

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| operator | Address to add to the set of authorized operators | X | null |

| approved | True if the operator is approved, false to revoke approval | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Approve | <>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/setApprovalForAll/POST/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/setApprovalForAll/POST/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/setApprovalForAll/POST/POST.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/setApprovalForAll/POST/implementation.adoc[opts=optional]

endif::internal-generation[]

[.signedTransfer] ==== signedTransfer

POST /nft/signedTransfer/

Signed Transfer

===== Description

Allows Freight Trust to sign and transfer a ERC721 token on the behalf of its holder

// markup not found, no include::{specDir}nft/signedTransfer/POST/spec.adoc[opts=optional]

===== Parameters

===== Body Parameter

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| auth | <> | X | |

|===

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| from | The sender of the transfer | X | null |

| to | The recipient of the transfer | X | null |

| tokenId | The id of the token to be transferred | X | null |

| data | Optional data to be sent with the transaction | - | null |

|===

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Transfer | <>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/signedTransfer/POST/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/signedTransfer/POST/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/signedTransfer/POST/POST.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/signedTransfer/POST/implementation.adoc[opts=optional]

endif::internal-generation[]

[.supportsInterfaceById] ==== supportsInterfaceById

GET /nft/supportsInterface/

Returns an interface's support status

===== Description

// markup not found, no include::{specDir}nft/supportsInterface/GET/spec.adoc[opts=optional]

===== Parameters

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| interfaceId | The Id of the interface to check | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Query | <>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/supportsInterface/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/supportsInterface/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/supportsInterface/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/supportsInterface/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.symbol] ==== symbol

GET /nft/symbol

Returns the token contract's symbol

===== Description

// markup not found, no include::{specDir}nft/symbol/GET/spec.adoc[opts=optional]

===== Parameters

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful query | <>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/symbol/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/symbol/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/symbol/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/symbol/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.tokenByIndex] ==== tokenByIndex

GET /nft/tokenByIndex/

Returns the token identifier of the index-th nft tracked by the contract

===== Description

// markup not found, no include::{specDir}nft/tokenByIndex/GET/spec.adoc[opts=optional]

===== Parameters

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| index | A counter less than `totalSupply()` | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Query | <>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/tokenByIndex/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/tokenByIndex/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/tokenByIndex/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/tokenByIndex/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.tokenOfOwnerByIndex] ==== tokenOfOwnerByIndex

GET /nft/tokenOfOwnerByIndex/

Returns the token identifier of the index-th nft assigned to the owner

===== Description

// markup not found, no include::{specDir}nft/tokenOfOwnerByIndex/GET/spec.adoc[opts=optional]

===== Parameters

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| owner | The address of the owner | X | null |

| index | The index of the nft assigned to the owner | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Query | <>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/tokenOfOwnerByIndex/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/tokenOfOwnerByIndex/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/tokenOfOwnerByIndex/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/tokenOfOwnerByIndex/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.tokenURIById] ==== tokenURIById

GET /nft/tokenURI/

Enumerate NFTs assigned to an owner

===== Description

// markup not found, no include::{specDir}nft/tokenURI/GET/spec.adoc[opts=optional]

===== Parameters

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| tokenId | | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Query | <>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/tokenURI/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/tokenURI/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/tokenURI/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/tokenURI/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.totalSupply] ==== totalSupply

GET /nft/totalSupply

An API endpoint to get the total supply of tokens in the ERC721 contract

===== Description

Returns the total supply of Non fungible tokens

// markup not found, no include::{specDir}nft/totalSupply/GET/spec.adoc[opts=optional]

===== Parameters

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful query | <>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/totalSupply/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/totalSupply/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/totalSupply/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/totalSupply/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.transferFrom] ==== transferFrom

POST /nft/transferFrom/

Transfer ownership of an NFT without safety checks

===== Description

Allows Freight Trust to tranfer tokens unsafely --

THE CALLER IS RESPONSIBLE TO CONFIRM THAT IS CAPABLE OF RECEIVING NFTS OR ELSE THEY MAY BE PERMANENTLY LOST

===== Parameters

===== Body Parameter

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| auth | The Freight Trust signature of the nonce <> | X | |

|===

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| from | The sender of the transfer | X | null |

| to | The recipient of the transfer | X | null |

| tokenId | The id of the token to be transferred | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Transfer | <>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/transferFrom/POST/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/transferFrom/POST/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/transferFrom/POST/POST.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/transferFrom/POST/implementation.adoc[opts=optional]

endif::internal-generation[]

[.versionRecord] ==== versionRecord

POST /nft/versionRecord/

Versions a record for Freight Trust

===== Description

Allows Freight Trust to version one of the records they own.

// markup not found, no include::{specDir}nft/versionRecord/POST/spec.adoc[opts=optional]

===== Parameters

===== Body Parameter

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| auth | The Freight Trust nonce signature to verify this action <> | X | |

|===

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| current | The identifying hash of the record | X | null |

| new | The new identifying hash of the record | X | null |

|===

===== Return Type

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Edit | <<>>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/versionRecord/POST/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/versionRecord/POST/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/versionRecord/POST/POST.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/versionRecord/POST/implementation.adoc[opts=optional]

endif::internal-generation[]

[.versionRecordSigned] ==== versionRecordSigned

POST /nft/versionRecord/signed/

Versions a record for the owner

===== Description

Allows Freight Trust to version a record for the owner using the owner's signature.

// markup not found, no include::{specDir}nft/versionRecord/signed/POST/spec.adoc[opts=optional]

===== Parameters

===== Body Parameter

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| auth | <> | X | |

|===

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| current | The identifying hash of the record | X | null |

| new | The new identifying hash of the record | X | null |

| owner | The owner of the record which will be updated | - | null |

|===

===== Return Type

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successful Editing | <<>>

| 420 | Bad Request | <<>>

| 428 | Request Timeout | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}nft/versionRecord/signed/POST/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}nft/versionRecord/signed/POST/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :nft/versionRecord/signed/POST/POST.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}nft/versionRecord/signed/POST/implementation.adoc[opts=optional]

endif::internal-generation[]

[.ProxyAndUpgrade] === ProxyAndUpgrade

[.changeController] ==== changeController

POST /proxy/changeController/

Sets the the new controller address

===== Description

Sets the new controller address.

// markup not found, no include::{specDir}proxy/changeController/POST/spec.adoc[opts=optional]

===== Parameters

===== Body Parameter

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| auth | The Freight Trust signature of the nonce <> | X | |

|===

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| newController | The new controller address | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/xml
  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successfuly Changed | <>

| 425 | Invalid Input | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}proxy/changeController/POST/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}proxy/changeController/POST/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :proxy/changeController/POST/POST.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}proxy/changeController/POST/implementation.adoc[opts=optional]

endif::internal-generation[]

[.changeMaster] ==== changeMaster

POST /proxy/changeMaster/

Sets the address of Function

===== Description

Sets address that is delegate called to run a function's logic. This function must be called with an signed nonce from the Freight Trust account in the https body.

// markup not found, no include::{specDir}proxy/changeMaster/POST/spec.adoc[opts=optional]

===== Parameters

===== Body Parameter

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| auth | The Freight Trust signature of the nonce <> | X | |

|===

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| newMaster | The new master address | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/xml
  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successfuly Changed | <>

| 425 | Invalid Input | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}proxy/changeMaster/POST/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}proxy/changeMaster/POST/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :proxy/changeMaster/POST/POST.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}proxy/changeMaster/POST/implementation.adoc[opts=optional]

endif::internal-generation[]

[.getControler] ==== getControler

GET /proxy/getControler

Gets address of the controler Contract

===== Description

Gets the address of the controler contract.

// markup not found, no include::{specDir}proxy/getControler/GET/spec.adoc[opts=optional]

===== Parameters

===== Return Type

<>

===== Content Type

  • application/xml
  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | successful operation | <>

|===

===== Samples

// markup not found, no include::{snippetDir}proxy/getControler/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}proxy/getControler/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :proxy/getControler/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}proxy/getControler/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.getMaster] ==== getMaster

GET /proxy/getMaster

Gets address of the Master Contract

===== Description

Gets the address of the master contract.

// markup not found, no include::{specDir}proxy/getMaster/GET/spec.adoc[opts=optional]

===== Parameters

===== Return Type

<>

===== Content Type

  • application/xml
  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | successful operation | <>

|===

===== Samples

// markup not found, no include::{snippetDir}proxy/getMaster/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}proxy/getMaster/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :proxy/getMaster/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}proxy/getMaster/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.getTarget] ==== getTarget

GET /proxy/getTarget/

Gets address of Function

===== Description

Gets address that is delegate called to run a function's logic.

// markup not found, no include::{specDir}proxy/getTarget/GET/spec.adoc[opts=optional]

===== Parameters

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| id | The function selector the return the target of | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/xml
  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | successful operation | <>

| 425 | Invalid Input | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}proxy/getTarget/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}proxy/getTarget/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :proxy/getTarget/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}proxy/getTarget/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.getUniversalProxy] ==== getUniversalProxy

GET /proxy/getUniversalProxy

Gets address of the Universal Proxy Contract

===== Description

Gets the address of the Universal Proxy contract.

// markup not found, no include::{specDir}proxy/getUniversalProxy/GET/spec.adoc[opts=optional]

===== Parameters

===== Return Type

<>

===== Content Type

  • application/xml
  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | successful operation | <>

|===

===== Samples

// markup not found, no include::{snippetDir}proxy/getUniversalProxy/GET/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}proxy/getUniversalProxy/GET/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :proxy/getUniversalProxy/GET/GET.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}proxy/getUniversalProxy/GET/implementation.adoc[opts=optional]

endif::internal-generation[]

[.pause] ==== pause

POST /proxy/pause

Pauses the execution

===== Description

Calls the pause method in the universal proxy, blocking any state changes while Freight Trust's Network Operations Group updates.

// markup not found, no include::{specDir}proxy/pause/POST/spec.adoc[opts=optional]

===== Parameters

===== Body Parameter

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| auth | The Freight Trust signature of the nonce <> | X | |

|===

===== Return Type

<>

===== Content Type

  • application/xml
  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successfuly Paused | <>

| 425 | Invalid Input | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}proxy/pause/POST/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}proxy/pause/POST/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :proxy/pause/POST/POST.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}proxy/pause/POST/implementation.adoc[opts=optional]

endif::internal-generation[]

[.setTarget] ==== setTarget

POST /proxy/setTarget/

Sets the address of Function

===== Description

Sets address that is delegate called to run a function's logic. This function must be called with an signed nonce from the Freight Trust account in the https body.

// markup not found, no include::{specDir}proxy/setTarget/POST/spec.adoc[opts=optional]

===== Parameters

===== Body Parameter

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| auth | The Freight Trust signature of the nonce <> | X | |

|===

====== Query Parameters

[cols="2,3,1,1,1"] |=== |Name| Description| Required| Default| Pattern

| id | Function selector whose target to change. | X | null |

| target | The address to set the function too | X | null |

|===

===== Return Type

<>

===== Content Type

  • application/xml
  • application/json

===== Responses

.http response codes [cols="2,3,1"] |=== | Code | Message | Datatype

| 200 | Successfuly Changed | <>

| 425 | Invalid Input | <<>>

|===

===== Samples

// markup not found, no include::{snippetDir}proxy/setTarget/POST/http-request.adoc[opts=optional]

// markup not found, no include::{snippetDir}proxy/setTarget/POST/http-response.adoc[opts=optional]

// file not found, no * wiremock data link :proxy/setTarget/POST/POST.json[]

ifdef::internal-generation[] ===== Implementation

// markup not found, no include::{specDir}proxy/setTarget/POST/implementation.adoc[opts=optional]

endif::internal-generation[]

[#models] == Models

[#ApiResponse] === ApiResponse

[.fields-ApiResponse] [cols="2,1,2,4,1"] |=== | Field Name| Required| Type| Description| Format

| code | | Integer | | int32

| type | | String | |

| message | | String | |

|===

[#Auth] === Auth

[.fields-Auth] [cols="2,1,2,4,1"] |=== | Field Name| Required| Type| Description| Format

| signature | X | String | |

|===

[#InlineObject] === InlineObject

[.fields-InlineObject] [cols="2,1,2,4,1"] |=== | Field Name| Required| Type| Description| Format

| freightTrustAuth | | auth | |

| senderAuth | | auth | |

|===

[#InlineObject1] === InlineObject1

[.fields-InlineObject1] [cols="2,1,2,4,1"] |=== | Field Name| Required| Type| Description| Format

| freightTrustAuth | | auth | |

| ownerAuth | | auth | |

| partAuth | | auth | |

|===

[#InlineObject2] === InlineObject2

[.fields-InlineObject2] [cols="2,1,2,4,1"] |=== | Field Name| Required| Type| Description| Format

| freightTrustAuth | | auth | |

| ownerAuth | | auth | |

|===

=== License

Copyright 2020 (C) FreightTrust and Clearing Corporation All Rights Reserved - https://freighttrust.com

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/