TipsProfileResult tips.profile-result@1

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

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

tips.profile-result@1: a creator's tip profile on OpenVibe.Tips (tips.profile.get, tips.profile.update). GET /api/v1/profiles/:creator → { profile, goals }: the profile and its active goals, in full for the creator and services holding tips.profile.get, else in the public shape (a page that is switched off is 404 tips.creator_not_found to everyone else). PATCH /api/v1/profiles/:creator → { profile } in the creator's view.

Fields

FieldTypeRequiredDescriptionConstraints
profiletips.profileyes
goalstips.goalGET only (always there): the active goals.

Examples

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

Valid: get
{
  "profile": {
    "creator": {
      "type": "user",
      "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
    },
    "handle": "moosefan",
    "display_name": "Moose Fan",
    "avatar_url": "https://openvibe.media/avatar/moosefan",
    "headline": "Late-night builds and chill.",
    "page_enabled": true,
    "accepting": true,
    "url": "https://openvibe.tips/moosefan",
    "minimums": {
      "tip": 1,
      "paid_message": 100,
      "tts": 100,
      "media_request": null
    },
    "tts": {
      "enabled": true,
      "max_chars": 200,
      "voice": "gary"
    },
    "media_requests": {
      "enabled": false,
      "max_seconds": 600
    },
    "page": {
      "goal_amounts": true,
      "goal_supporters": false,
      "supporters_page": true,
      "supporters_amounts": false,
      "supporters_messages": true
    },
    "supporters_url": "https://openvibe.tips/moosefan/supporters",
    "currency": "vibes-bits"
  },
  "goals": [
    {
      "id": "tgoal_01JAB2C3D4E5F6G7H8J9K0MNQ9",
      "creator": {
        "type": "user",
        "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
      },
      "title": "New microphone",
      "description": "Help me sound less like a tin can.",
      "target_amount": 20000,
      "current_amount": 7350,
      "currency": "vibes-bits",
      "supporters_count": 12,
      "carried_over_amount": 0,
      "percent": 36,
      "reached": false,
      "reached_at": null,
      "image_url": null,
      "status": "active",
      "sort_order": 0,
      "revision": 13,
      "created_at": "2026-09-10T20:00:00.000Z",
      "updated_at": "2026-09-25T09:12:41.530Z",
      "closed_at": null
    }
  ]
}
Valid: update
{
  "profile": {
    "creator": {
      "type": "user",
      "id": "usr_01JAB2C3D4E5F6G7H8J9K0MNPQ"
    },
    "handle": "moosefan",
    "display_name": "Moose Fan",
    "avatar_url": "https://openvibe.media/avatar/moosefan",
    "headline": "Late-night builds and chill.",
    "page_enabled": true,
    "accepting": true,
    "url": "https://openvibe.tips/moosefan",
    "minimums": {
      "tip": 1,
      "paid_message": 100,
      "tts": 100,
      "media_request": null
    },
    "tts": {
      "enabled": true,
      "max_chars": 200,
      "voice": "gary"
    },
    "media_requests": {
      "enabled": false,
      "max_seconds": 600
    },
    "page": {
      "goal_amounts": true,
      "goal_supporters": false,
      "supporters_page": true,
      "supporters_amounts": false,
      "supporters_messages": true
    },
    "supporters_url": "https://openvibe.tips/moosefan/supporters",
    "currency": "vibes-bits",
    "filter": {
      "words": [
        "spoiler"
      ],
      "action": "mask",
      "links": true
    },
    "revision": 4,
    "created_at": "2026-09-01T12:00:00.000Z",
    "updated_at": "2026-09-25T09:12:40.118Z"
  }
}
Rejected: goals-only
{
  "goals": []
}

Validate

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