# net.wireservice.plan

> Published by [wireservice.net](https://lexicon.garden/identity/did:plc:lktj64hp7lc3fzuf6iyy7lwj)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:lktj64hp7lc3fzuf6iyy7lwj/net.wireservice.plan)
- [Documentation](https://lexicon.garden/lexicon/did:plc:lktj64hp7lc3fzuf6iyy7lwj/net.wireservice.plan/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:lktj64hp7lc3fzuf6iyy7lwj/net.wireservice.plan/examples)

## Definitions

### `net.wireservice.plan`

**Type**: `record`

A paid offering: subscription, membership, or donation. Public, so renderers and other apps can display offers. The CMS mirrors each plan to the payment processor.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `active` | `boolean` | No | Whether new readers can sign up. Existing entitlements are unaffected. |
| `amount` | `integer` | No | Price in the currency's minor unit (e.g., cents). Omit for donor-chosen amounts. |
| `createdAt` | `string` (datetime) | Yes |  |
| `currency` | `string` | Yes | ISO 4217 currency code, lowercase (e.g., 'usd'). |
| `description` | `string` | No |  |
| `interval` | `string` | Yes |  |
| `kind` | `string` | Yes |  |
| `name` | `string` | Yes |  |
| `spaces` | `array` | No | Spaces an active entitlement to this plan grants access to. Empty for plans that grant no access. |
| `stripePriceId` | `string` | No | Stripe price this plan is sold through. Stripe prices are immutable, so changing amount or interval means a new price. |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A paid offering: subscription, membership, or donation. Public, so renderers and other apps can display offers. The CMS mirrors each plan to the payment processor.",
      "key": "tid",
      "record": {
        "properties": {
          "active": {
            "description": "Whether new readers can sign up. Existing entitlements are unaffected.",
            "type": "boolean"
          },
          "amount": {
            "description": "Price in the currency's minor unit (e.g., cents). Omit for donor-chosen amounts.",
            "minimum": 0,
            "type": "integer"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "currency": {
            "description": "ISO 4217 currency code, lowercase (e.g., 'usd').",
            "maxLength": 3,
            "type": "string"
          },
          "description": {
            "maxGraphemes": 3000,
            "maxLength": 30000,
            "type": "string"
          },
          "interval": {
            "knownValues": [
              "month",
              "year",
              "once"
            ],
            "maxLength": 64,
            "type": "string"
          },
          "kind": {
            "knownValues": [
              "subscription",
              "membership",
              "donation"
            ],
            "maxLength": 64,
            "type": "string"
          },
          "name": {
            "maxGraphemes": 200,
            "maxLength": 2000,
            "type": "string"
          },
          "spaces": {
            "description": "Spaces an active entitlement to this plan grants access to. Empty for plans that grant no access.",
            "items": {
              "format": "space-ref",
              "type": "string"
            },
            "type": "array"
          },
          "stripePriceId": {
            "description": "Stripe price this plan is sold through. Stripe prices are immutable, so changing amount or interval means a new price.",
            "maxLength": 256,
            "type": "string"
          }
        },
        "required": [
          "name",
          "kind",
          "currency",
          "interval",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "net.wireservice.plan",
  "lexicon": 1
}
```
