changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "additionalProperties": false,
+ "properties": {
+ "agentKeywords": {
+ "description": "Semantic keywords for matching user needs; empty when none are stored",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "agentPrompt": {
+ "description": "Recommendation guidance and conditions; read before recommending",
+ "type": "string"
+ },
+ "agentUseCases": {
+ "description": "Recommendation scenarios; unverified term claims are withheld; empty when none remain",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "aliases": {
+ "description": "Alternative slugs accepted by get_program; empty when none are stored",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "alsoOn": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "affitor": {
+ "additionalProperties": false,
+ "description": "The same brand on the Affitor marketplace; omitted when no Affitor entry is stored",
+ "properties": {
+ "commission": {
+ "additionalProperties": false,
+ "description": "Commission published on Affitor, separate from this listing's terms; omitted when Affitor publishes none",
+ "properties": {
+ "conditions": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Conditions for earning commission; unverified cookie, payout and approval claims are withheld; null or omitted when unavailable"
+ },
+ "currency": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Currency code for monetary amounts; null when unspecified"
+ },
+ "duration": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "How long commissions are earned, as source text such as '12 months' or 'lifetime'; null or omitted when unspecified"
+ },
+ "mode": {
+ "description": "Figure format: percentage uses percent units, flat uses currency units, tiered and hybrid require rate/conditions to interpret; unknown means no published figure",
+ "enum": [
+ "percentage",
+ "flat",
+ "tiered",
+ "hybrid",
+ "unknown"
+ ],
+ "type": "string"
+ },
+ "rate": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ }
+ ],
+ "description": "Raw source wording; prefer mode and value"
+ },
+ "type": {
+ "description": "Payment structure: recurring pays on renewals within duration; one-time pays once per qualifying referral; tiered varies by performance level; hybrid combines structures; none is a neutral placeholder for discontinued/no_program entries",
+ "enum": [
+ "recurring",
+ "one-time",
+ "tiered",
+ "hybrid",
+ "none"
+ ],
+ "type": "string"
+ },
+ "value": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Commission in percent units for percentage mode (30 means 30%), or currency units for flat mode; null when no single numeric figure is available"
+ }
+ },
+ "required": [
+ "type",
+ "mode",
+ "value",
+ "rate",
+ "currency"
+ ],
+ "type": "object"
+ },
+ "url": {
+ "description": "URL of the same brand's Affitor marketplace program",
+ "type": "string"
+ }
+ },
+ "required": [
+ "url"
+ ],
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Additional marketplace listings; null when none are stored, omitted for discontinued/no_program"
+ },
+ "alternatives": {
+ "description": "Verified, active cash-paying alternatives in the same category, excluding same-team brands; only returned for discontinued/no_program, empty when none match",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "commission": {
+ "description": "Formatted commission figure and payment structure for display; includes percent or currency units when known",
+ "type": "string"
+ },
+ "name": {
+ "description": "Alternative program's display name",
+ "type": "string"
+ },
+ "slug": {
+ "description": "Canonical alternative slug to pass to get_program",
+ "type": "string"
+ },
+ "url": {
+ "description": "Alternative program's page URL on openaffiliate.dev",
+ "type": "string"
+ }
+ },
+ "required": [
+ "slug",
+ "name",
+ "commission",
+ "url"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "answer": {
+ "description": "Answer explaining the lack of an affiliate program, dated when a check date exists; only returned for discontinued/no_program",
+ "type": "string"
+ },
+ "apiAvailable": {
+ "description": "Whether an affiliate API is available; omitted when unspecified or discontinued/no_program, not an implied false",
+ "type": "boolean"
+ },
+ "approval": {
+ "description": "Application approval process: auto, manual or invite-only; omitted when unverified, unspecified or discontinued/no_program",
+ "type": "string"
+ },
+ "approvalTime": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Expected application review time as source text; null when unspecified, omitted when unverified or discontinued/no_program"
+ },
+ "attribution": {
+ "description": "Referral attribution model, such as last-click; omitted when unspecified or discontinued/no_program",
+ "type": "string"
+ },
+ "category": {
+ "description": "Exact registry category name, as returned by list_categories",
+ "type": "string"
+ },
+ "claimedBy": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Verified owner domain that claimed the listing, never an email address; null when unclaimed"
+ },
+ "commission": {
+ "additionalProperties": false,
+ "description": "Commission structure, figures and earning conditions; unverified terms are unconfirmed, while discontinued/no_program entries return neutral placeholders",
+ "properties": {
+ "conditions": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Conditions for earning commission; unverified cookie, payout and approval claims are withheld; null or omitted when unavailable"
+ },
+ "currency": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Currency code for monetary amounts; null when unspecified"
+ },
+ "duration": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "How long commissions are earned, as source text such as '12 months' or 'lifetime'; null or omitted when unspecified"
+ },
+ "mode": {
+ "description": "Figure format: percentage uses percent units, flat uses currency units, tiered and hybrid require rate/conditions to interpret; unknown means no published figure",
+ "enum": [
+ "percentage",
+ "flat",
+ "tiered",
+ "hybrid",
+ "unknown"
+ ],
+ "type": "string"
+ },
+ "rate": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ }
+ ],
+ "description": "Raw source wording; prefer mode and value"
+ },
+ "type": {
+ "description": "Payment structure: recurring pays on renewals within duration; one-time pays once per qualifying referral; tiered varies by performance level; hybrid combines structures; none is a neutral placeholder for discontinued/no_program entries",
+ "enum": [
+ "recurring",
+ "one-time",
+ "tiered",
+ "hybrid",
+ "none"
+ ],
+ "type": "string"
+ },
+ "value": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Commission in percent units for percentage mode (30 means 30%), or currency units for flat mode; null when no single numeric figure is available"
+ }
+ },
+ "required": [
+ "type",
+ "mode",
+ "value",
+ "rate",
+ "currency"
+ ],
+ "type": "object"
+ },
+ "commissionConditions": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Same earning conditions as commission.conditions; null when unavailable, omitted for discontinued/no_program"
+ },
+ "commissionDuration": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Same duration text as commission.duration; null when unspecified, omitted for discontinued/no_program"
+ },
+ "cookieDays": {
+ "description": "Attribution window in days; omitted until terms are verified",
+ "type": "number"
+ },
+ "createdAt": {
+ "description": "Registry entry creation date in YYYY-MM-DD form; empty when unspecified",
+ "type": "string"
+ },
+ "dashboardUrl": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Affiliate dashboard URL; null when unspecified, omitted for discontinued/no_program"
+ },
+ "dedicatedManager": {
+ "description": "Whether a dedicated affiliate manager is provided; omitted when unspecified or discontinued/no_program, not an implied false",
+ "type": "boolean"
+ },
+ "description": {
+ "description": "Full product and program description; unverified cookie, payout and approval claims are withheld",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Income program model: affiliate commissions, customer referrals, creator payouts, revenue sharing, cashback or a partner network; omitted when unspecified or discontinued/no_program",
+ "enum": [
+ "affiliate",
+ "referral",
+ "creator-payout",
+ "revenue-share",
+ "cashback",
+ "partner-network"
+ ],
+ "type": "string"
+ },
+ "lastVerifiedAt": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Date terms were checked, in YYYY-MM-DD form; null when unspecified, omitted for unverified or discontinued/no_program entries"
+ },
+ "logo": {
+ "description": "Text logo placeholder: the uppercase first character of the brand name, not an image URL",
+ "type": "string"
+ },
+ "markdownUrl": {
+ "description": "Citable program page in Markdown on openaffiliate.dev",
+ "type": "string"
+ },
+ "marketingMaterials": {
+ "description": "Whether promotional assets are provided; omitted when unspecified or discontinued/no_program, not an implied false",
+ "type": "boolean"
+ },
+ "name": {
+ "description": "Display name of the program or brand",
+ "type": "string"
+ },
+ "network": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Affiliate network identifier, such as partnerstack or in-house; null when unknown, omitted for discontinued/no_program"
+ },
+ "payout": {
+ "additionalProperties": false,
+ "description": "Published payout terms; empty when terms are unverified or no program exists",
+ "properties": {
+ "currency": {
+ "description": "Currency code for payout.minimum; omitted when unspecified or terms are withheld",
+ "type": "string"
+ },
+ "frequency": {
+ "description": "Payout schedule, such as monthly or net-30; omitted when unspecified or terms are withheld",
+ "type": "string"
+ },
+ "methods": {
+ "description": "Payout methods, such as paypal or bank-transfer; empty when none are stored, omitted when terms are withheld",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "minimum": {
+ "description": "Minimum payout in payout.currency units; omitted when unspecified or terms are withheld",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "payoutMethods": {
+ "description": "Same methods as payout.methods; empty when none are stored, omitted when unverified or discontinued/no_program",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "programAge": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "How long the program has existed, as source text without a fixed unit; null when unspecified, omitted for discontinued/no_program"
+ },
+ "restrictions": {
+ "description": "Program rules and prohibited promotion methods; unverified term claims are withheld; empty when none remain, omitted for discontinued/no_program",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "shortDescription": {
+ "description": "Brief product summary; unverified cookie, payout and approval claims are withheld",
+ "type": "string"
+ },
+ "signupUrl": {
+ "description": "Affiliate signup or program URL; omitted when not stored or status is discontinued/no_program",
+ "type": "string"
+ },
+ "slug": {
+ "description": "Canonical slug, including when the input was an alias",
+ "type": "string"
+ },
+ "source": {
+ "description": "Registry source identifier or URL; omitted when unspecified",
+ "type": "string"
+ },
+ "stars": {
+ "description": "Legacy star-count placeholder, currently always 0; not a program quality score",
+ "type": "number"
+ },
+ "status": {
+ "description": "Availability: active is listed in search; paused is temporarily unavailable; discontinued means closed; no_program means no public program found. Non-active entries are excluded from search; missing status defaults to active",
+ "enum": [
+ "active",
+ "paused",
+ "discontinued",
+ "no_program"
+ ],
+ "type": "string"
+ },
+ "statusCheckedAt": {
+ "description": "YYYY-MM-DD date the discontinued/no_program status was checked, not verification of terms; omitted for other statuses or when no check date is stored",
+ "type": "string"
+ },
+ "statusNote": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Explanation and source for the program's status; null when unspecified"
+ },
+ "submittedBy": {
+ "description": "Registry submitter identifier; defaults to community",
+ "type": "string"
+ },
+ "tags": {
+ "description": "Searchable product and program tags; empty when none are stored",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "trackingMethod": {
+ "description": "How referrals are tracked, such as cookie, link or coupon; omitted when unspecified or discontinued/no_program",
+ "type": "string"
+ },
+ "updatedAt": {
+ "description": "Registry entry update date in YYYY-MM-DD form; omitted when unspecified",
+ "type": "string"
+ },
+ "url": {
+ "description": "Brand's product or website URL",
+ "type": "string"
+ },
+ "verified": {
+ "description": "True when the terms have been checked on the brand's own program page; false means unconfirmed",
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "slug",
+ "name",
+ "url",
+ "logo",
+ "category",
+ "commission",
+ "payout",
+ "description",
+ "shortDescription",
+ "tags",
+ "stars",
+ "verified",
+ "agentPrompt",
+ "submittedBy",
+ "createdAt",
+ "markdownUrl"
+ ],
+ "type": "object"
+}