VipMembershipStatusResult vip.membership-status-result@1

Generated at from openvibe-contracts v0.53.0 and openvibe-sdk v0.11.0.

Version
1.0.0
Owner
vip
Visibility
first-party
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/vip/membership-status-result.v1.json

vip.membership-status-result@1: the answer of vip.membership.status on OpenVibe.VIP. GET /api/v1/memberships/:subject?mode=projection|authoritative → { member, memberships }: every membership VIP has filed for the member, newest first, each with its creator, the member's preferences for it and the entitlement answer (mode auto by default: the projection when fresh, else Billing). A person may only ask about themselves (403 vip.not_yours); a service needs vip.membership.status.

Fields

FieldTypeRequiredDescriptionConstraints
memberidentity.subject-refyes
membershipsarray of anyyes

Examples

From the contract's own test fixtures: valid ones validate, rejected ones must fail.

Valid: none
{
  "member": {
    "type": "user",
    "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPR"
  },
  "memberships": []
}
Valid: one
{
  "member": {
    "type": "user",
    "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPR"
  },
  "memberships": [
    {
      "id": "vms_01JAB2C3D4E5F6G7H8J9K0MNPX",
      "member": {
        "type": "user",
        "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPR"
      },
      "creator_id": "vcr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
      "plan_id": "vpl_01JAB2C3D4E5F6G7H8J9K0MNPW",
      "plan_version": {
        "id": "vpv_01JAB2C3D4E5F6G7H8J9K0MNPT",
        "version": 2,
        "name": "Supporter",
        "terms": {
          "name": "Supporter",
          "description": "Back the stream every month.",
          "benefits": [
            "Supporter badge in chat",
            "Members-only VOD chapters"
          ],
          "perks": [
            {
              "key": "chat-badge",
              "name": "Chat badge",
              "kind": "badge",
              "scope": "creator"
            }
          ],
          "billing_kind": "channel_subscription",
          "price": "set and charged by OpenVibe.Billing",
          "digest": "3fa9c0d27e5b8814"
        }
      },
      "perks": [
        "chat-badge"
      ],
      "origin": "checkout",
      "joined_at": "2026-09-20T18:04:11.402Z",
      "terms_since": "2026-09-20T18:04:11.402Z",
      "creator": {
        "id": "vcr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
        "kind": "creator",
        "subject": {
          "type": "user",
          "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
        },
        "username": "moosefan",
        "display_name": "Moose Fan",
        "bio": "Late-night builds and chill.",
        "status": "active"
      },
      "entitlement": {
        "member": {
          "type": "user",
          "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPR"
        },
        "creator": {
          "type": "user",
          "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
        },
        "kind": "channel_subscription",
        "status": "active",
        "active": true,
        "expires_at": "2026-10-20T18:04:11.000Z",
        "cancel_at_period_end": false,
        "source": "projection",
        "stale": false,
        "valid_until": "2026-09-25T09:17:40.118Z",
        "checked_at": "2026-09-25T09:12:40.118Z",
        "membership": {
          "id": "vms_01JAB2C3D4E5F6G7H8J9K0MNPX",
          "member": {
            "type": "user",
            "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPR"
          },
          "creator_id": "vcr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
          "plan_id": "vpl_01JAB2C3D4E5F6G7H8J9K0MNPW",
          "plan_version": {
            "id": "vpv_01JAB2C3D4E5F6G7H8J9K0MNPT",
            "version": 2,
            "name": "Supporter",
            "terms": {
              "name": "Supporter",
              "description": "Back the stream every month.",
              "benefits": [
                "Supporter badge in chat",
                "Members-only VOD chapters"
              ],
              "perks": [
                {
                  "key": "chat-badge",
                  "name": "Chat badge",
                  "kind": "badge",
                  "scope": "creator"
                }
              ],
              "billing_kind": "channel_subscription",
              "price": "set and charged by OpenVibe.Billing",
              "digest": "3fa9c0d27e5b8814"
            }
          },
          "perks": [
            "chat-badge"
          ],
          "origin": "checkout",
          "joined_at": "2026-09-20T18:04:11.402Z",
          "terms_since": "2026-09-20T18:04:11.402Z"
        }
      },
      "preferences": {
        "show_badge": true,
        "listed": false
      }
    }
  ]
}
Rejected: no-preferences
{
  "member": {
    "type": "user",
    "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPR"
  },
  "memberships": [
    {
      "id": "vms_01JAB2C3D4E5F6G7H8J9K0MNPX",
      "member": {
        "type": "user",
        "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPR"
      },
      "creator_id": "vcr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
      "plan_id": "vpl_01JAB2C3D4E5F6G7H8J9K0MNPW",
      "plan_version": {
        "id": "vpv_01JAB2C3D4E5F6G7H8J9K0MNPT",
        "version": 2,
        "name": "Supporter",
        "terms": {
          "name": "Supporter",
          "description": "Back the stream every month.",
          "benefits": [
            "Supporter badge in chat",
            "Members-only VOD chapters"
          ],
          "perks": [
            {
              "key": "chat-badge",
              "name": "Chat badge",
              "kind": "badge",
              "scope": "creator"
            }
          ],
          "billing_kind": "channel_subscription",
          "price": "set and charged by OpenVibe.Billing",
          "digest": "3fa9c0d27e5b8814"
        }
      },
      "perks": [
        "chat-badge"
      ],
      "origin": "checkout",
      "joined_at": "2026-09-20T18:04:11.402Z",
      "terms_since": "2026-09-20T18:04:11.402Z",
      "creator": {
        "id": "vcr_01JAB2C3D4E5F6G7H8J9K0MNPQ",
        "kind": "creator",
        "subject": {
          "type": "user",
          "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
        },
        "username": "moosefan",
        "display_name": "Moose Fan",
        "bio": "Late-night builds and chill.",
        "status": "active"
      },
      "entitlement": null
    }
  ]
}

Validate

const contracts = require('openvibe-contracts');
contracts.validate('vip.membership-status-result@1', value);   // { valid, errors: [{ path, message }] }