MemeTemplate meme.template@1

Generated at from openvibe-contracts v0.419.0 and openvibe-sdk v0.161.0.

Version
1.0.0
Owner
meme
Visibility
public
Status
active
Compatibility
backward
Schema
https://openvibe.network/contracts/meme/template.v1.json

meme.template@1: a reusable meme image with its source, reuse licence and caption layout. Public templates have passed any required review.

Fields

FieldTypeRequiredDescriptionConstraints
idstringyes
  • minLength 1
  • maxLength 80
namestringyes
  • minLength 1
  • maxLength 80
image_urlstringyes
  • format uri-reference
  • maxLength 2048
box_countintegeryes
  • minimum 1
  • maximum 8
sourcestringyes
  • maxLength 160
licensestringyes
  • maxLength 200
creditstring
  • maxLength 300
source_urlstring
  • format uri
  • maxLength 2048
attributionstring
  • maxLength 500
created_atstringyes
  • format date-time
layoutobject
layout.widthintegeryes
  • minimum 64
  • maximum 4096
layout.heightintegeryes
  • minimum 64
  • maximum 4096
layout.boxesarray of objectyes
  • minItems 1
  • maxItems 8
captionsinteger
  • minimum 0
uses_todayinteger
  • minimum 0

Examples

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

Valid: commons-template
{
  "id": "tpl_distracted-boyfriend",
  "name": "Distracted Boyfriend",
  "image_url": "https://openvibe.media/o/med_01ARZ3NDEKTSV4RRFFQ69G5FAV",
  "box_count": 3,
  "source": "Wikimedia Commons",
  "license": "CC BY-SA 4.0",
  "credit": "Photographer",
  "source_url": "https://commons.wikimedia.org/wiki/File:Example.jpg",
  "created_at": "2026-11-08T00:00:00.000Z",
  "layout": {
    "width": 440,
    "height": 280,
    "boxes": [
      {
        "x": 4,
        "y": 5,
        "w": 90,
        "h": 20
      }
    ]
  },
  "captions": 10,
  "uses_today": 2
}
Rejected: no-image
{
  "id": "tpl_example",
  "name": "Example",
  "box_count": 2,
  "source": "Commons",
  "license": "CC BY-SA",
  "created_at": "2026-11-08T00:00:00.000Z"
}

Validate

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