Optimizely · Schema
Extension_2
A/B TestingContent ManagementCustomer DataE-CommerceExperimentationFeature FlagsMarketing
Properties
| Name | Type | Description |
|---|---|---|
| archived | boolean | Whether the extension is archived |
| created | string | The time when the extension was initially created |
| description | string | The description for the extension |
| edit_url | string | The URL to load when editing the extension |
| enabled | boolean | Whether the extension is enabled. A disabled extension won't appear in the editor and won't be built into the snippet |
| experiment_count | integer | Number of experiments that reference this extension across all statuses (running, paused, draft, archived). Computed by the upstream service. |
| fields | array | Array of editable fields in the extension |
| id | integer | The unique identifier for the extension |
| implementation | object | |
| last_modified | string | The last time when the extension was modified |
| name | string | Name of the extension |
| project_id | integer | The project the extension is in |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/optimizely/main/json-schema/optimizely-extension-2-schema.json",
"title": "Extension_2",
"x-generated": "2026-10-12",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/optimizely-extensions-api-openapi.yml#/components/schemas/Extension_2",
"properties": {
"archived": {
"description": "Whether the extension is archived",
"readOnly": true,
"type": "boolean"
},
"created": {
"description": "The time when the extension was initially created",
"format": "date-time",
"readOnly": true,
"type": "string"
},
"description": {
"description": "The description for the extension",
"type": "string"
},
"edit_url": {
"description": "The URL to load when editing the extension",
"type": "string"
},
"enabled": {
"description": "Whether the extension is enabled. A disabled extension won't appear in the editor and won't be built into the snippet",
"type": "boolean"
},
"experiment_count": {
"description": "Number of experiments that reference this extension across all statuses (running, paused, draft, archived). Computed by the upstream service.",
"format": "int64",
"readOnly": true,
"type": "integer"
},
"fields": {
"default": [],
"description": "Array of editable fields in the extension",
"items": {
"$ref": "#/$defs/Field"
},
"type": "array"
},
"id": {
"description": "The unique identifier for the extension",
"format": "int64",
"readOnly": true,
"type": "integer"
},
"implementation": {
"$ref": "#/$defs/Implementation"
},
"last_modified": {
"description": "The last time when the extension was modified",
"format": "date-time",
"readOnly": true,
"type": "string"
},
"name": {
"description": "Name of the extension",
"type": "string"
},
"project_id": {
"description": "The project the extension is in",
"format": "int64",
"type": "integer"
}
},
"required": [
"project_id",
"name",
"edit_url",
"implementation"
],
"type": "object",
"$defs": {
"Choices": {
"properties": {
"label": {
"description": "label of the choice",
"type": "string"
},
"value": {
"description": "value of the choice",
"type": "string"
}
},
"type": "object"
},
"Field": {
"properties": {
"api_name": {
"description": "The API name of the field",
"type": "string"
},
"default_value": {
"description": "A string in JSON format that corresponds to the default_value of the field",
"type": "string"
},
"field_type": {
"description": "The type of the field",
"enum": [
"selector",
"text",
"multi_text",
"rich_text",
"number",
"html",
"css",
"js",
"toggle",
"dropdown",
"multi_select",
"image",
"color",
"slider"
],
"type": "string"
},
"label": {
"description": "The label of the field",
"type": "string"
},
"options": {
"$ref": "#/$defs/Options"
}
},
"required": [
"api_name",
"label",
"default_value",
"field_type"
],
"type": "object"
},
"Implementation": {
"properties": {
"apply_js": {
"default": "",
"description": "The Apply JS code is used to inject the extension onto the page",
"type": "string"
},
"css": {
"default": "",
"description": "Some extensions may not need any CSS because they inherit styles from the page itself. However, you can add additional styling here. This will be injected on the page through a <style> tag",
"type": "string"
},
"html": {
"default": "",
"description": "The html implementation of the field",
"type": "string"
},
"reset_js": {
"default": "",
"description": "Reset JS is used to \"clean up\" after a extension. It's used in the editor, when changing field values or removing an existing extension. Reset JS should remove the element and any other side-effects",
"type": "string"
}
},
"type": "object"
},
"Options": {
"properties": {
"choices": {
"description": "The choices for a field",
"items": {
"$ref": "#/$defs/Choices"
},
"type": "array"
}
},
"type": "object"
}
}
}
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.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/optimizely-extension-2"
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.