Schemas

AuthenticationChallenge:
type: object
properties:
text:
type: string
description: Welcome text explaining how to proceed
enum:
- "Welcome to Kchannels MVP! Please sign this message to authenticate."
client_unpredictable_number:
type: string
description: The client's unpredictable number (provided in the request). This is an integer represented as a string.
unpredictable_number:
type: string
description: A large random number generated by the Kchannels backend. This is an integer represented as a string.
client_ip:
type: string
description: IP address of the client
issued_at:
type: string
description: Unix epoch timestamp for when the challenge was issued. This is an integer represented as a string.
expires_at:
type: string
description: Unix epoch timestamp for when the challenge expires. This is an integer represented as a string.
signing_identity:
type: string
description: Ethereum address of the channel owner (claimed)
issuer_signature:
type: string
description: EIP-712 signature of the issuer (inside the Kchannels backend)
AuthenticationSuccess:
type: object
properties:
jwt:
type: string
description: JWT token
exp:
type: string
description: Expiration date of JWT token (Unix epoch timestamp). This is an integer represented as a string.
ChannelDefinition:
type: object
properties:
channel_uuid:
type: string
description: Hyphenated UUID of the channel (36 characters)
definition_version:
type: string
description: Version of the channel definition, starting at 1. This is an integer represented as a string.
channel_rating_id:
type: string
description: A "rating ID" determines how to assess fees. This is a free-form string, so make no assumptions about its format.
zone_address:
type: string
description: Address of the zone to which this channel is assigned (prefixed with `0x`)
owner_address:
type: string
description: Address of the channel owner (prefixed with `0x`)
deposit_address:
type: string
description: Address from which deposits to Kchannels are sent (prefixed with `0x`). For normal accounts (i.e. those derived from a private key), this field is the same as the owner address (most Ethereum accounts use this approach). For smart contract-based wallets, this is the address of the smart contract.
validator_address:
type: string
description: Address of the watchtower (aka validator). Currently, it's always the same as the `zone_address`.
sender_address_list:
type: array
description: A list of addresses that are able to transfer assets using this channel, always including the `owner_address` (items prefixed with `0x`).
items:
type: string
initial_state_hash:
type: string
description: Keccak-256 hash of the channel's initial state (prefixed with `0x`)
signature_list:
type: array
description: List of signatures on this channel definition. A valid channel definition is signed by the channel owner and twice by the Kchannels backend.
items:
type: string
Transaction:
type: object
properties:
request_uuid:
type: string
description: Hyphenated UUID of the transaction (36 characters)
reference_data:
type: string
description: Reference data (an empty string... for now)
value_list:
type: array
description: List of assets and their amounts transferred in this transaction
items:
type: TransactionValue
sender_party:
type: TransactionParty
description: Description of this transaction's sender
recipient_party:
type: TransactionParty
description: Description of this transaction's recipient
signature_list:
type: array
description: List of signatures on this transaction
items:
type: string
metadata:
type: TransactionMetadata
description: Transaction metadata
TransactionValue:
type: object
properties:
smart_contract:
type: string
description: When transferring Ether, this is the address of the Kchannels smart contract. For ERC-20 tokens (in development), this is the address of the ERC-20 smart contract.
value:
type: string
description: When transferring Ether, this is the amount to transfer **in wei**. This (typically very large) integer is represented as a string.
kind:
type: string
description: "Value" for assets that are transferred, "Fee" for transaction fees
TransactionParty:
type: object
properties:
nonce:
type: string
description: Nonce for the party's channel. This is an integer represented as a string.
state_hash:
type: string
description: Keccak-256 hash of the party's channel state (prefixed with `0x`)
timestamp:
type: string
description: Unix epoch in seconds. This is an integer represented as a string.
channel_definition:
type: ChannelDefinition
description: The party's channel definition
fee_list:
type: array
description: List of fees for this transaction
items:
type: TransactionValue
summary:
type: TransactionSummary
description: Transaction summary
TransactionMetadata:
type: object
properties:
request_uuid:
type: string
description: Hyphenated UUID of the transaction (36 characters)
channel_uuid:
type: string
description: Hyphenated UUID of the channel (36 characters)
definition_version:
type: string
description: Version of the channel definition, starting at 1. This is an integer represented as a string.
reversal_nonce:
type: string
description: Reversal nonce, starting at 0. This is an integer represented as a string.
external_tx_reference_list:
type: array
description: List of hyphenated UUIDs
items:
type: string
signature_list:
type: array
description: List of signatures
items:
type: string
TransactionSummary:
type: object
properties:
request_uuid:
type: string
description: Hyphenated UUID of the transaction (36 characters)
channel_uuid:
type: string
description: Hyphenated UUID of the channel (36 characters)
definition_version:
type: string
description: Version of the channel definition, starting at 1. This is an integer represented as a string.
client_signer_address:
type: string
description: FOO
zone_signer_address:
type: string
description: FOO
final_state_hash:
type: string
description: Final (post-transaction) Keccak-256 hash of the channel state (prefixed with `0x`)
external_tx_reference:
type: string
description: External transaction reference
recipient_address:
type: string
description: Address of the recipient (prefixed with `0x`)
peer_last_seen_state_hash:
type: string
description: Last known Keccak-256 hash of the peer's (i.e. counterparty's) state
timestamp:
type: string
description: Unix epoch in seconds. This is an integer represented as a string.
value_list:
type: array
description: List of assets and their amounts transferred in this transaction (including fees)
items:
type: TransactionValue
signature_list:
type: array
description: List of signatures (sender, sender's zone, recipient's zone)
Client:
type: object
properties:
client_address:
type: string
description: Ethereum address of the client (prefixed with `0x`)
first_name:
type: string
description: First name of the client (not required, and typically `null`)
last_name:
type: string
description: Last name of the client (not required, and typically `null`)
email:
type: string
description: Email of the client (not required, and typically `null`)
ZoneLocation:
type: object
properties:
zone_address:
type: string
description: Ethereum address of the zone (prefixed with `0x`)
zone_public_key:
type: string
description: Public key of the zone (prefixed with `0x`)
zone_client_endpoint:
type: string
description: Client's URL for accessing the zone
ClientInfo:
type: object
properties:
client:
type: Client
description: Client information
channel_definition:
type: ChannelDefinition
description: Client's channel definition
zone_location:
type: ZoneLocation
description: Information about the zone which holds the client's channel
TransactionInfo:
type: object
properties:
transaction:
type: Transaction
description: Transaction data
transaction_status:
type: string
description: Status of the transaction
ChannelAsset:
type: object
properties:
smart_contract:
type: string
description: When transferring Ether, this is the address of the Kchannels smart contract. For ERC-20 tokens (in development), this is the address of the ERC-20 smart contract. Prefixed with `0x`.
value:
type: string
description: Value of the asset. This is an integer represented as a string.
ChannelState:
type: object
properties:
nonce:
type: string
description: Nonce of the channel that increments on transactions
channel_asset_list:
type: array
description: List of channel assets
items:
type: ChannelAsset
ChannelInfo:
type: object
properties:
channel_state:
type:
description:
channel_state_hash:
type: string
description: Keccak-256 hash of the channel's state (prefixed with `0x`)
channel_status:
type: string
description: Status of the channel