Skip to content

Subscription intent for (project, device); returns the gasless bond payloads to sign

POST
/v1/subscriptions
curl --request POST \
--url https://testnet-rpc.necter.network/v1/subscriptions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "project_id": "example", "node_id": "example", "collateral": "example" }'
Media typeapplication/json
object
project_id
required
string
/^0x[0-9a-f]{64}$/
node_id
required
string
/^ndsr-[0-9a-f]{16}$/
collateral
required

Token base units

string
/^(0|[1-9][0-9]{0,77})$/

Example generated

{
"project_id": "example",
"node_id": "example",
"collateral": "example"
}

Intent stored (pending_collateral)

Media typeapplication/json
object
subscription
required
object
subscription_id
required
string
/^0x[0-9a-f]{64}$/
project_id
required
string
/^0x[0-9a-f]{64}$/
project_name
string
node_id
required
string
/^ndsr-[0-9a-f]{16}$/
owner
required

Lowercase EVM address

string
/^0x[0-9a-f]{40}$/
payout_address

Lowercase EVM address

string
/^0x[0-9a-f]{40}$/
status
required
string
Allowed values: pending_collateral active paused jailed unbonding withdrawable closed
collateral
required

Token base units

string
/^(0|[1-9][0-9]{0,77})$/
min_collateral

Token base units

string
/^(0|[1-9][0-9]{0,77})$/
collateral_health
string
Allowed values: healthy warning critical
release_at
One of:
integer
pending_slashes
integer
slashed_total

Token base units

string
/^(0|[1-9][0-9]{0,77})$/
reputation
integer
uptime_bp
integer
leases_completed
integer
units_total
integer
earned_total

Token base units

string
/^(0|[1-9][0-9]{0,77})$/
token
object
address
required

Lowercase EVM address

string
/^0x[0-9a-f]{40}$/
symbol
required
string
name
string
decimals
required
integer
<= 36
last_proof_at
One of:
integer
started_at
One of:
integer
created_at
integer
compatibility
object
compatible
required
boolean
tier
required
string
Allowed values: compatible marginal incompatible
match_bp
required
integer
missing
required
Array<string>
warnings
required
Array<string>
performance
string
Allowed values: excellent good fair poor
est_monthly_reward

Token base units

string
/^(0|[1-9][0-9]{0,77})$/
bond
required

Typed data the owner signs (eth_signTypedData_v4); then POST it back as SignedGasless

object
action
required
string
Allowed values: bond unbond withdraw set_payout register_project publish_version
typed_data
required
object
domain
required
object
key
additional properties
any
types
required
object
key
additional properties
any
primaryType
required
string
message
required
object
key
additional properties
any
permit
One of:
object
domain
required
object
key
additional properties
any
types
required
object
key
additional properties
any
primaryType
required
string
message
required
object
key
additional properties
any
direct_tx
object
chain_id
required
integer
to
required

Lowercase EVM address

string
/^0x[0-9a-f]{40}$/
data
required
string
/^0x([0-9a-f]{2})*$/
value

Token base units

string
/^(0|[1-9][0-9]{0,77})$/
description
string
expires_at
required
integer

Example

{
"subscription": {
"status": "pending_collateral",
"collateral_health": "healthy"
},
"compatibility": {
"tier": "compatible",
"performance": "excellent"
},
"bond": {
"action": "bond"
}
}

Malformed request (bad_request, invalid_field)

Media typeapplication/json
object
error
required

Stable machine code

string
message
required
string
details
object
key
additional properties
any
request_id
required
string

Example generated

{
"error": "example",
"message": "example",
"details": {},
"request_id": "example"
}

Authenticated but not allowed (forbidden, not_owner, not_enrolled, not_verified, scope_missing)

Media typeapplication/json
object
error
required

Stable machine code

string
message
required
string
details
object
key
additional properties
any
request_id
required
string

Example generated

{
"error": "example",
"message": "example",
"details": {},
"request_id": "example"
}

conflict, duplicate, already_exists, invalid_state

Media typeapplication/json
object
error
required

Stable machine code

string
message
required
string
details
object
key
additional properties
any
request_id
required
string

Example generated

{
"error": "example",
"message": "example",
"details": {},
"request_id": "example"
}

Semantically invalid (invalid_manifest, invalid_binding, invalid_evidence, incompatible, insufficient_collateral)

Media typeapplication/json
object
error
required

Stable machine code

string
message
required
string
details
object
key
additional properties
any
request_id
required
string

Example generated

{
"error": "example",
"message": "example",
"details": {},
"request_id": "example"
}