upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/88.md
blob: 75c3a0498068fd3d87103a9ab3b3acb804f568ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
NIP-88
======

Recurring Subscriptions
-----------------------

`draft` `optional` `author:pablof7z`

This NIP defines a way for a pubkey to create recurring subscription payments to another pubkey.

## Tier Event
A pubkey can create "tiers". These tiers might provide certain benefits to the supporters who subscribe to these.

```json
{
    "kind": 7002,
    "content": "<description of the tier>",
    "tags": [
        [ "title", "..." ],
        [ "amount", "<amount-in-base-unit>", "currency", "<cadence>" ]
    ]
}
```

This event is generated by a pubkey who wants to allow users to support with different tiers.

`.content` SHOULD be a description of what users who subscribe can expect.
Tag `title` is an optional title for the tier.
Tag `amount` MUST specify the payment required for this tier and its cadence.
    * The first argument should be the stringified amount and the second argument the currency
    * The third argument SHOULD be one of `daily`, `monthly`, `yearly`
One or more `amount` tags MUST exist.

#### Examples
* `[ "amount", "100", "usd", "daily" ]`, $1.00 a day.
* `[ "amount", "1000000", "btc", "daily" ]`, 1000000 millisats a day.

## Subscribe Event

```json
{
    "kind": 7001,
    "content": "<optional-message>",
    "tags": [
        [ "p", "<recipient-pubkey>" ],
        [ "e", "<supporting-tier-id>" ],
        [ "amount", "<amount-in-base-unit>", "currency", "<cadence>" ]
    ]
}
```

When a user wants to subscribe to support a user they create a `kind:7001` event.

* `.content` is an optional message the supporter can write.
* The `p` tag MUST tag the pubkey being supported.
* The `e` tag is optional, and should point to a `kind:7001` support tier event. There MUST be exactly 0 or 1 `e` tags.
* The `amount` tag specifies what the supporters is committing to pay to the supported pubkey and the candence.

The `kind:7001` event can be created without an `e` tag so that users can create recurring support events without the pubkey receiving the support having explicitly created a support tier.

## Paying
The supporting user should create a zap p-tagging the receiver and e-tagging the `kind:7001`. There MUST be a single `p` and a single `e` tag in the zap request.

```json
{
    "kind": 9734,
    "content": "",
    "tags": [
        [ "p", "<recipient-pubkey>" ],
        [ "e", "<kind-7001-event-id>" ]
    ]
```

Clients supporting this NIP can check for zaps e-tagging the `kind:7001` event to find the pubkeys that have a valid, paid subscriptions at each different period.

The same `kind:7001` is re-zapped on a regular basis per the cadence specified in the event.

## Stopping a subscription
A user who wants to stop a subscription by publishing a `kind:5` deletion request of the `kind:7001` event.