doc: adding schema to create offer requests
This commit is contained in:
parent
5eacb5b22e
commit
d1052e3924
136
.msggen.json
136
.msggen.json
|
@ -1453,6 +1453,42 @@
|
|||
"NewAddr.p2sh-segwit": 2,
|
||||
"NewAddr.p2tr": 3
|
||||
},
|
||||
"OfferRecurrence": {
|
||||
"Offer.recurrence.period": 2,
|
||||
"Offer.recurrence.time_unit": 1,
|
||||
"Offer.recurrence.time_unit_name": 3
|
||||
},
|
||||
"OfferRecurrence_base": {
|
||||
"Offer.recurrence_base.basetime": 1,
|
||||
"Offer.recurrence_base.start_any_period": 2
|
||||
},
|
||||
"OfferRecurrence_paywindow": {
|
||||
"Offer.recurrence_paywindow.proportional_amount": 3,
|
||||
"Offer.recurrence_paywindow.seconds_after": 2,
|
||||
"Offer.recurrence_paywindow.seconds_before": 1
|
||||
},
|
||||
"OfferRequest": {
|
||||
"Offer.absolute_expiry": 6,
|
||||
"Offer.amount": 1,
|
||||
"Offer.description": 2,
|
||||
"Offer.issuer": 3,
|
||||
"Offer.label": 4,
|
||||
"Offer.quantity_max": 5,
|
||||
"Offer.recurrence": 7,
|
||||
"Offer.recurrence_base": 8,
|
||||
"Offer.recurrence_limit": 10,
|
||||
"Offer.recurrence_paywindow": 9,
|
||||
"Offer.single_use": 11
|
||||
},
|
||||
"OfferResponse": {
|
||||
"Offer.active": 2,
|
||||
"Offer.bolt12": 4,
|
||||
"Offer.created": 6,
|
||||
"Offer.label": 7,
|
||||
"Offer.offer_id": 1,
|
||||
"Offer.single_use": 3,
|
||||
"Offer.used": 5
|
||||
},
|
||||
"PayRequest": {
|
||||
"Pay.amount_msat": 13,
|
||||
"Pay.bolt11": 1,
|
||||
|
@ -5290,6 +5326,106 @@
|
|||
"added": "v23.08",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": null
|
||||
},
|
||||
"Offer.absolute_expiry": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.active": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.amount": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.bolt12": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.created": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.description": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.issuer": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.label": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.offer_id": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.quantity_max": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.recurrence": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.recurrence.period": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.recurrence.time_unit": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.recurrence.time_unit_name": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.recurrence_base": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.recurrence_base.basetime": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.recurrence_base.start_any_period": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.recurrence_limit": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.recurrence_paywindow": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.recurrence_paywindow.proportional_amount": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.recurrence_paywindow.seconds_after": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.recurrence_paywindow.seconds_before": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.single_use": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Offer.used": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": false
|
||||
},
|
||||
"Pay": {
|
||||
"added": "pre-v0.10.1",
|
||||
"deprecated": null
|
||||
|
|
|
@ -1804,39 +1804,40 @@ message OfferRequest {
|
|||
string description = 2;
|
||||
optional string issuer = 3;
|
||||
optional string label = 4;
|
||||
optional uint64 absolute_expiry = 5;
|
||||
optional Offer_recurrence recurrence = 6;
|
||||
optional Offer_recurrenceBase recurrence_base = 7;
|
||||
optional Offer_recurrencePaywindow recurrence_paywindow = 8;
|
||||
optional uint64 recurrence_limit = 9;
|
||||
optional bool single_use = 10;
|
||||
}
|
||||
|
||||
message Offer_recurrence {
|
||||
uint32 time_unit = 1;
|
||||
uint32 period = 2;
|
||||
optional string time_unit_name = 3;
|
||||
}
|
||||
|
||||
message Offer_recurrenceBase {
|
||||
uint64 basetime = 1;
|
||||
bool start_any_period = 2;
|
||||
}
|
||||
|
||||
message Offer_recurrencePaywindow {
|
||||
uint32 seconds_before = 1;
|
||||
uint32 seconds_after = 2;
|
||||
optional bool proportional_amount = 3;
|
||||
optional uint64 quantity_max = 5;
|
||||
optional uint64 absolute_expiry = 6;
|
||||
optional OfferRecurrence recurrence = 7;
|
||||
optional OfferRecurrence_base recurrence_base = 8;
|
||||
optional OfferRecurrence_paywindow recurrence_paywindow = 9;
|
||||
optional uint64 recurrence_limit = 10;
|
||||
optional bool single_use = 11;
|
||||
}
|
||||
|
||||
message OfferResponse {
|
||||
bytes offer_id = 1;
|
||||
bool active = 2;
|
||||
bool single_use = 3;
|
||||
string bolt12 = 4;
|
||||
bool used = 5;
|
||||
bool created = 6;
|
||||
optional string label = 7;
|
||||
bool active = 2;
|
||||
bool single_use = 3;
|
||||
string bolt12 = 4;
|
||||
bool used = 5;
|
||||
bool created = 6;
|
||||
optional string label = 7;
|
||||
}
|
||||
|
||||
message OfferRecurrence {
|
||||
uint32 time_unit = 1;
|
||||
uint32 period = 2;
|
||||
optional string time_unit_name = 3;
|
||||
}
|
||||
|
||||
message OfferRecurrence_base {
|
||||
uint64 basetime = 1;
|
||||
bool start_any_period = 2;
|
||||
}
|
||||
|
||||
message OfferRecurrence_paywindow {
|
||||
uint32 seconds_before = 1;
|
||||
uint32 seconds_after = 2;
|
||||
optional bool proportional_amount = 3;
|
||||
}
|
||||
|
||||
message PingRequest {
|
||||
|
|
|
@ -1698,7 +1698,7 @@ impl From<responses::ListhtlcsResponse> for pb::ListhtlcsResponse {
|
|||
impl From<responses::OfferResponse> for pb::OfferResponse {
|
||||
fn from(c: responses::OfferResponse) -> Self {
|
||||
Self {
|
||||
offer_id: c.offer_id, // Rule #2 for type hex
|
||||
offer_id: <Sha256 as AsRef<[u8]>>::as_ref(&c.offer_id).to_vec(), // Rule #2 for type hash
|
||||
active: c.active, // Rule #2 for type boolean
|
||||
single_use: c.single_use, // Rule #2 for type boolean
|
||||
bolt12: c.bolt12, // Rule #2 for type string
|
||||
|
@ -2506,31 +2506,30 @@ impl From<requests::ListhtlcsRequest> for pb::ListhtlcsRequest {
|
|||
impl From<requests::OfferRecurrence> for pb::OfferRecurrence {
|
||||
fn from(c: requests::OfferRecurrence) -> Self {
|
||||
Self {
|
||||
period: c.period, // Rule #2 for type u32
|
||||
time_unit: c.time_unit, // Rule #2 for type u32
|
||||
period: c.period, // Rule #2 for type u32
|
||||
time_unit_name: c.time_unit_name, // Rule #2 for type string?
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[allow(unused_variables)]
|
||||
impl From<requests::OfferRecurrenceBase> for pb::OfferRecurrenceBase {
|
||||
fn from(c: requests::OfferRecurrenceBase) -> Self {
|
||||
impl From<requests::OfferRecurrence_base> for pb::OfferRecurrenceBase {
|
||||
fn from(c: requests::OfferRecurrence_base) -> Self {
|
||||
Self {
|
||||
basetime: c.basetime, // Rule #2 for type u64
|
||||
start_any_period: c.start_any_period, // Rule #2 for type bool
|
||||
basetime: c.basetime, // Rule #2 for type u64
|
||||
start_any_period: c.start_any_period, // Rule #2 for type boolean
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
impl From<requests::OfferRecurrencePaywindow> for pb::OfferRecurrencePaywindow {
|
||||
fn from(c: requests::OfferRecurrencePaywindow) -> Self {
|
||||
impl From<requests::OfferRecurrence_paywindow> for pb::OfferRecurrencePaywindow {
|
||||
fn from(c: requests::OfferRecurrence_paywindow) -> Self {
|
||||
Self {
|
||||
seconds_before: c.seconds_before, // Rule #2 for type u32
|
||||
seconds_after: c.seconds_after, // Rule #2 for type u32
|
||||
proportional_amount: c.proportional_amount, // Rule #2 for type bool?
|
||||
seconds_before: c.seconds_before, // Rule #2 for type u32
|
||||
seconds_after: c.seconds_after, // Rule #2 for type u32
|
||||
proportional_amount: c.proportional_amount, // Rule #2 for type boolean?
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2542,13 +2541,14 @@ impl From<requests::OfferRequest> for pb::OfferRequest {
|
|||
amount: Some(c.amount.into()), // Rule #2 for type msat_or_any
|
||||
description: c.description, // Rule #2 for type string
|
||||
issuer: c.issuer, // Rule #2 for type string?
|
||||
label: c.label, // Rule #2 for type string?
|
||||
label: c.label, // Rule #2 for type string?
|
||||
quantity_max: c.quantity_max, // Rule #2 for type u64?
|
||||
absolute_expiry: c.absolute_expiry, // Rule #2 for type u64?
|
||||
recurrence: c.recurrence.map(|v| v.into()),
|
||||
recurrence_base: c.recurrence_base.map(|v| v.into()),
|
||||
recurrence_paywindow: c.recurrence_paywindow.map(|v| v.into()),
|
||||
recurrence_limit: c.recurrence_limit, // Rule #2 for type u64?
|
||||
single_use: c.single_use // Rule #2 for type bool?
|
||||
single_use: c.single_use, // Rule #2 for type boolean?
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3307,31 +3307,30 @@ impl From<pb::ListhtlcsRequest> for requests::ListhtlcsRequest {
|
|||
impl From<pb::OfferRecurrence> for requests::OfferRecurrence {
|
||||
fn from(c: pb::OfferRecurrence) -> Self {
|
||||
Self {
|
||||
period: c.period, // Rule #1 for type u32
|
||||
time_unit: c.time_unit, // Rule #1 for type u32
|
||||
period: c.period, // Rule #1 for type u32
|
||||
time_unit_name: c.time_unit_name, // Rule #1 for type string?
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[allow(unused_variables)]
|
||||
impl From<pb::OfferRecurrenceBase> for requests::OfferRecurrenceBase {
|
||||
impl From<pb::OfferRecurrenceBase> for requests::OfferRecurrence_base {
|
||||
fn from(c: pb::OfferRecurrenceBase) -> Self {
|
||||
Self {
|
||||
basetime: c.basetime, // Rule #1 for type u64
|
||||
start_any_period: c.start_any_period, // Rule #1 for type bool
|
||||
basetime: c.basetime, // Rule #1 for type u64
|
||||
start_any_period: c.start_any_period, // Rule #1 for type boolean
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
impl From<pb::OfferRecurrencePaywindow> for requests::OfferRecurrencePaywindow {
|
||||
impl From<pb::OfferRecurrencePaywindow> for requests::OfferRecurrence_paywindow {
|
||||
fn from(c: pb::OfferRecurrencePaywindow) -> Self {
|
||||
Self {
|
||||
seconds_before: c.seconds_before, // Rule #1 for type u32
|
||||
seconds_after: c.seconds_after, // Rule #1 for type u32
|
||||
proportional_amount: c.proportional_amount, // Rule #1 for type bool?
|
||||
seconds_before: c.seconds_before, // Rule #1 for type u32
|
||||
seconds_after: c.seconds_after, // Rule #1 for type u32
|
||||
proportional_amount: c.proportional_amount, // Rule #1 for type boolean?
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3343,13 +3342,14 @@ impl From<pb::OfferRequest> for requests::OfferRequest {
|
|||
amount: c.amount.unwrap().into(), // Rule #1 for type msat_or_any
|
||||
description: c.description, // Rule #1 for type string
|
||||
issuer: c.issuer, // Rule #1 for type string?
|
||||
label: c.label, // Rule #1 for type string?
|
||||
label: c.label, // Rule #1 for type string?
|
||||
quantity_max: c.quantity_max, // Rule #1 for type u64?
|
||||
absolute_expiry: c.absolute_expiry, // Rule #1 for type u64?
|
||||
recurrence: c.recurrence.map(|v| v.into()),
|
||||
recurrence_base: c.recurrence_base.map(|v| v.into()),
|
||||
recurrence_paywindow: c.recurrence_paywindow.map(|v| v.into()),
|
||||
recurrence_limit: c.recurrence_limit, // Rule #1 for type u64?
|
||||
single_use: c.single_use // Rule #1 for type bool?
|
||||
single_use: c.single_use, // Rule #1 for type boolean?
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1655,6 +1655,7 @@ async fn offer(
|
|||
)
|
||||
)),
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
async fn ping(
|
||||
|
|
|
@ -1901,44 +1901,48 @@ pub mod requests {
|
|||
}
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
pub struct OfferRecurrence {
|
||||
pub time_unit: u32,
|
||||
pub period: u32,
|
||||
pub time_unit_name: Option<String>,
|
||||
pub time_unit: u32,
|
||||
pub period: u32,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub time_unit_name: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
pub struct OfferRecurrenceBase {
|
||||
pub basetime: u64,
|
||||
pub start_any_period: bool,
|
||||
pub struct OfferRecurrence_base {
|
||||
pub basetime: u64,
|
||||
pub start_any_period: bool,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
pub struct OfferRecurrencePaywindow {
|
||||
pub seconds_before: u32,
|
||||
pub seconds_after: u32,
|
||||
pub proportional_amount: Option<bool>,
|
||||
pub struct OfferRecurrence_paywindow {
|
||||
pub seconds_before: u32,
|
||||
pub seconds_after: u32,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub proportional_amount: Option<bool>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
pub struct OfferRequest {
|
||||
pub amount: AmountOrAny,
|
||||
pub description: String,
|
||||
pub amount: AmountOrAny,
|
||||
pub description: String,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub issuer: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub label: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub absolute_expiry: Option<u64>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub recurrence: Option<OfferRecurrence>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub recurrence_base: Option<OfferRecurrenceBase>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub recurrence_paywindow: Option<OfferRecurrencePaywindow>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub recurrence_limit: Option<u64>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub single_use: Option<bool>,
|
||||
pub issuer: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub label: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub quantity_max: Option<u64>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub absolute_expiry: Option<u64>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub recurrence: Option<OfferRecurrence>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub recurrence_base: Option<OfferRecurrence_base>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub recurrence_paywindow: Option<OfferRecurrence_paywindow>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub recurrence_limit: Option<u64>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub single_use: Option<bool>,
|
||||
}
|
||||
|
||||
impl From<OfferRequest> for Request {
|
||||
|
@ -1951,6 +1955,13 @@ pub mod requests {
|
|||
type Response = super::responses::OfferResponse;
|
||||
}
|
||||
|
||||
impl TypedRequest for OfferRequest {
|
||||
type Response = super::responses::OfferResponse;
|
||||
|
||||
fn method(&self) -> &str {
|
||||
"offer"
|
||||
}
|
||||
}
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
pub struct PingRequest {
|
||||
pub id: PublicKey,
|
||||
|
@ -5714,14 +5725,14 @@ pub mod responses {
|
|||
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
pub struct OfferResponse {
|
||||
pub offer_id: Vec<u8>,
|
||||
pub active: bool,
|
||||
pub single_use: bool,
|
||||
pub bolt12: String,
|
||||
pub used: bool,
|
||||
pub created: bool,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub label: Option<String>,
|
||||
pub offer_id: Sha256,
|
||||
pub active: bool,
|
||||
pub single_use: bool,
|
||||
pub bolt12: String,
|
||||
pub used: bool,
|
||||
pub created: bool,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub label: Option<String>,
|
||||
}
|
||||
|
||||
impl TryFrom<Response> for OfferResponse {
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1423,13 +1423,13 @@ def listhtlcs2py(m):
|
|||
|
||||
def offer2py(m):
|
||||
return remove_default({
|
||||
"offer_id": m.offer_id, # PrimitiveField in generate_composite
|
||||
"offer_id": hexlify(m.offer_id), # PrimitiveField in generate_composite
|
||||
"active": m.active, # PrimitiveField in generate_composite
|
||||
"single_use": m.single_use, # PrimitiveField in generate_composite
|
||||
"bolt12": m.bolt12, # PrimitiveField in generate_composite
|
||||
"used": m.used, # PrimitiveField in generate_composite
|
||||
"created": c.created, # PrimitiveField in generate_composite
|
||||
"label": c.label, # PrimitiveField in generate_composite # PrimitiveField in generate_composite
|
||||
"created": m.created, # PrimitiveField in generate_composite
|
||||
"label": m.label, # PrimitiveField in generate_composite
|
||||
})
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,101 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"type": "object",
|
||||
"required": [
|
||||
"amount",
|
||||
"description"
|
||||
],
|
||||
"properties": {
|
||||
"amount": {
|
||||
"type": "msat_or_any",
|
||||
"description": "either the string \"any\" (e.g. for donations) or a positive value in millisatoshi precision"
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "a short description of purpose of the offer"
|
||||
},
|
||||
"issuer": {
|
||||
"type": "string",
|
||||
"description": "who is issuing this offer"
|
||||
},
|
||||
"label": {
|
||||
"type": "string",
|
||||
"description": "an internal-use name for the offer"
|
||||
},
|
||||
"quantity_max": {
|
||||
"type": "u64",
|
||||
"description": "specifies the number of items up (and including) this maximum"
|
||||
},
|
||||
"absolute_expiry": {
|
||||
"type": "u64",
|
||||
"description": "the time the offer is valid until, in seconds since the first day of 1970 UTC"
|
||||
},
|
||||
"recurrence": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"time_unit",
|
||||
"period"
|
||||
],
|
||||
"properties": {
|
||||
"time_unit": {
|
||||
"type": "u32",
|
||||
"description": "a positive number referring to a time unit - 0 (seconds), 1 (days), 2 (months), 3 (years)"
|
||||
},
|
||||
"period": {
|
||||
"type": "u32",
|
||||
"description": "the positive number which the time unit refers to"
|
||||
},
|
||||
"time_unit_name": {
|
||||
"type": "string",
|
||||
"description": "the name of the specified time unit - either \"seconds\", \"minutes\", \"hours\", \"days\", \"weeks\" or \"years\""
|
||||
}
|
||||
}
|
||||
},
|
||||
"recurrence_base": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"basetime",
|
||||
"start_any_period"
|
||||
],
|
||||
"properties": {
|
||||
"basetime": {
|
||||
"type": "u64",
|
||||
"description": "time in seconds since the first day of 1970 UTC"
|
||||
},
|
||||
"start_any_period": {
|
||||
"type": "boolean",
|
||||
"description": "whether or not the invoice should start at any period"
|
||||
}
|
||||
}
|
||||
},
|
||||
"recurrence_paywindow": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"seconds_before",
|
||||
"seconds_after"
|
||||
],
|
||||
"properties": {
|
||||
"seconds_before": {
|
||||
"type": "u32",
|
||||
"description": "number of seconds before the start of a period in which an invoice and payment is valid"
|
||||
},
|
||||
"seconds_after": {
|
||||
"type": "u32",
|
||||
"description": "number of seconds after the start of a period in which an invoice and payment is valid"
|
||||
},
|
||||
"proportional_amount": {
|
||||
"type": "boolean",
|
||||
"description": "indicates whether the amount of the invoice will be scaled by the time remaining in the period"
|
||||
}
|
||||
}
|
||||
},
|
||||
"recurrence_limit": {
|
||||
"type": "u64",
|
||||
"description": "the maximum recurrence period which exists"
|
||||
},
|
||||
"single_use": {
|
||||
"type": "boolean",
|
||||
"description": "indicates that the offer is only valid once"
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue