ex2-com · Schema

Comparison

HostingSustainabilityWebHostingQuebecGreenTech

Properties

Name Type Description
currency string
lang string
plans array
comparison array
View JSON Schema on GitHub

JSON Schema

ex2-com-comparison-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/ex2-com/json-schema/ex2-com-comparison-schema.json",
  "title": "Comparison",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/ex2-com-openapi.json#/components/schemas/Comparison",
  "type": "object",
  "required": [
    "currency",
    "lang",
    "plans",
    "comparison"
  ],
  "properties": {
    "currency": {
      "type": "string"
    },
    "lang": {
      "type": "string"
    },
    "plans": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Plan"
      }
    },
    "comparison": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "label",
          "values"
        ],
        "properties": {
          "label": {
            "type": "string"
          },
          "values": {
            "type": "object",
            "additionalProperties": {
              "type": [
                "string",
                "boolean",
                "null"
              ]
            },
            "description": "Plan id => value; null where a plan has no such row."
          }
        }
      }
    }
  },
  "$defs": {
    "Plan": {
      "type": "object",
      "required": [
        "id",
        "line",
        "name",
        "url",
        "featured",
        "on_quote",
        "features",
        "pricing",
        "order_url"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Stable plan id: <line>-<key>."
        },
        "line": {
          "type": "string",
          "enum": [
            "green",
            "wordpress",
            "divi",
            "woocommerce",
            "ecommerce",
            "cms",
            "site-builder",
            "n8n",
            "email",
            "reseller",
            "vps",
            "dedicated",
            "server-management"
          ]
        },
        "name": {
          "type": "string"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "The plan's product page."
        },
        "featured": {
          "type": "boolean",
          "description": "The plan the page highlights."
        },
        "on_quote": {
          "type": "boolean",
          "description": "Sold on quote: no price, contact Ex2 through url."
        },
        "features": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Main features, as the page lists them."
        },
        "mailboxes": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 1
            },
            {
              "const": "unlimited"
            }
          ],
          "description": "Email plans only."
        },
        "performance_index": {
          "type": "number",
          "description": "Resources against green hosting Power = 1, where the catalogue has it."
        },
        "pricing": {
          "oneOf": [
            {
              "$ref": "#/$defs/Pricing"
            },
            {
              "type": "null"
            }
          ],
          "description": "null when sold on quote or not priced in this currency."
        },
        "order_url": {
          "oneOf": [
            {
              "type": "string",
              "format": "uri"
            },
            {
              "type": "null"
            }
          ],
          "description": "The cart with this plan, or null without pricing."
        },
        "specs": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Spec"
          },
          "description": "Single plan and compare only: the plan's column of its page's comparison table."
        }
      }
    },
    "Pricing": {
      "type": "object",
      "required": [
        "free",
        "billing_cycles",
        "setup_fees",
        "first_year_discount",
        "from_per_month"
      ],
      "properties": {
        "free": {
          "type": "boolean"
        },
        "billing_cycles": {
          "type": "object",
          "properties": {
            "monthly": {
              "type": "number",
              "minimum": 0,
              "description": "In the answer's currency, excluding taxes."
            },
            "quarterly": {
              "type": "number",
              "minimum": 0,
              "description": "In the answer's currency, excluding taxes."
            },
            "semiannually": {
              "type": "number",
              "minimum": 0,
              "description": "In the answer's currency, excluding taxes."
            },
            "annually": {
              "type": "number",
              "minimum": 0,
              "description": "In the answer's currency, excluding taxes."
            },
            "biennially": {
              "type": "number",
              "minimum": 0,
              "description": "In the answer's currency, excluding taxes."
            },
            "triennially": {
              "type": "number",
              "minimum": 0,
              "description": "In the answer's currency, excluding taxes."
            }
          },
          "additionalProperties": false,
          "description": "Price of each enabled cycle, which is also the renewal price."
        },
        "setup_fees": {
          "type": "object",
          "properties": {
            "monthly": {
              "type": "number",
              "minimum": 0,
              "description": "In the answer's currency, excluding taxes."
            },
            "quarterly": {
              "type": "number",
              "minimum": 0,
              "description": "In the answer's currency, excluding taxes."
            },
            "semiannually": {
              "type": "number",
              "minimum": 0,
              "description": "In the answer's currency, excluding taxes."
            },
            "annually": {
              "type": "number",
              "minimum": 0,
              "description": "In the answer's currency, excluding taxes."
            },
            "biennially": {
              "type": "number",
              "minimum": 0,
              "description": "In the answer's currency, excluding taxes."
            },
            "triennially": {
              "type": "number",
              "minimum": 0,
              "description": "In the answer's currency, excluding taxes."
            }
          },
          "additionalProperties": false,
          "description": "Setup fee per cycle, where there is one."
        },
        "first_year_discount": {
          "oneOf": [
            {
              "type": "object",
              "required": [
                "percent",
                "annually"
              ],
              "properties": {
                "percent": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100
                },
                "annually": {
                  "type": "number",
                  "minimum": 0,
                  "description": "In the answer's currency, excluding taxes."
                }
              }
            },
            {
              "type": "null"
            }
          ]
        },
        "from_per_month": {
          "type": "number",
          "minimum": 0,
          "description": "In the answer's currency, excluding taxes."
        }
      }
    },
    "Spec": {
      "type": "object",
      "required": [
        "label",
        "value"
      ],
      "properties": {
        "label": {
          "type": "string"
        },
        "value": {
          "type": [
            "string",
            "boolean"
          ],
          "description": "true / false for the table's check marks and crosses."
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/ex2-com-comparison"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.