Skip to content

Registry Reference

This page documents the root object of extensions_registry.json, the file at your repository root that declares the widgets, scripts, and stylesheets arrays; each entry type has its own reference page linked below.

Root Object

FieldTypeRequiredDefaultDescription
widgetsarrayNo[]Widget definitions — see Widget Definition Reference
scriptsarrayNo[]Script definitions — see Script Definition Reference
stylesheetsarrayNo[]Stylesheet definitions — see Stylesheet Definition Reference

All three arrays are optional. A registry with only widgets publishes no scripts or stylesheets; a registry with only scripts publishes no widgets. An empty array is valid and publishes nothing of that type.

json
{
  "widgets": [ ... ],
  "scripts": [ ... ],
  "stylesheets": [ ... ]
}

Minimal Example

The smallest valid registry:

json
{
  "widgets": [],
  "scripts": [],
  "stylesheets": []
}

This publishes nothing but passes validation. Use it to verify your repository connection before adding entries.

File Location

  • The file must be at the root of your repository.
  • Filename must be extensions_registry.json.

Migration from widget_registry.json

If your repository uses the old widget_registry.json filename, it still works during the migration window. Rename it to extensions_registry.json at your earliest convenience — the old name is deprecated and will be removed in a future release.

Validation

  • The root must be a JSON object.
  • widgets, scripts, and stylesheets must be arrays if present.
  • Each entry follows its own schema — see the per-type reference pages.

For validation errors, see Error Codes.

Extension Naming

Widget type fields and script or stylesheet name fields must be unique across every repository connected to a community. When a community connects multiple GitHub organizations (see Multiple Organizations), each organization's extensions share the same registry namespace, so a naming collision in one repository can shadow an extension from another.

The recommended convention prefixes each name with an organization identifier:

{org_name}_{extension_purpose}
ExtensionFieldExample
Widgettypeacme_corp_welcome_banner
Scriptnameacme_corp_analytics
Stylesheetnameacme_corp_theme
json
{
  "widgets": [
    {
      "type": "acme_corp_welcome_banner",
      "title": "Welcome Banner"
    }
  ],
  "scripts": [
    {
      "name": "acme_corp_analytics",
      "path": "scripts/analytics/script.js"
    }
  ],
  "stylesheets": [
    {
      "name": "acme_corp_theme",
      "path": "stylesheets/theme/style.css"
    }
  ]
}

Next Steps

Gainsight CC Developer Portal