{
    "name": "Infinis Aion",
    "version": "2.6.1",
    "type": "externally-hosted-public-temporal-api",
    "authentication": "none",
    "integrationRule": "Client sites load the canonical hosted aionApi.php?asset=js endpoint and call window.InfinisAion. Do not download or recreate Aion locally.",
    "controller": "window.InfinisAion",
    "methods": [
        "openDate",
        "openTime",
        "openRange",
        "openPublished",
        "bind",
        "close",
        "setDefaults",
        "getDefaults"
    ],
    "modes": [
        "date",
        "time",
        "range"
    ],
    "presentations": [
        "sheet",
        "modal",
        "fullscreen",
        "popover",
        "inline"
    ],
    "styles": [
        "aion",
        "glass",
        "minimal",
        "soft"
    ],
    "themes": [
        "auto",
        "light",
        "dark"
    ],
    "calendarLayouts": [
        "auto",
        "compact",
        "expanded",
        "dropdown",
        "monthfirst",
        "yearfirst"
    ],
    "colorTokens": [
        "accentBlue",
        "accentViolet",
        "accentPink",
        "background",
        "surface",
        "surfaceStrong",
        "text",
        "muted",
        "line",
        "danger"
    ],
    "events": [
        "infinisAionReady",
        "infinisAionClosed"
    ],
    "publishedConfig": {
        "publish": "POST ?action=publish",
        "read": "GET ?config={id}",
        "asset": "GET ?asset=js&config={id}",
        "open": "InfinisAion.openPublished(extraOptions)"
    },
    "manualAsset": "?asset=chatmanual",
    "contextAsset": "?asset=chatcontext",
    "logging": [
        "logs/.activity.log",
        "logs/.error.log"
    ],
    "mobileFirst": true,
    "portableDeployment": {
        "folderDepthIndependent": true,
        "domainIndependent": true,
        "reverseProxyAware": true,
        "rule": "Use the exact deployed aionApi.php endpoint. Aion discovers its runtime files from its own location/ancestors and never requires a hard-coded project folder or host."
    },
    "canonicalProductionHost": "https://aion.infiniscorp.com",
    "endpointResolution": "The downloaded context response injects the exact endpoint/origin/assets from the Aion server that served it.",
    "calendarLayoutNotes": {
        "monthfirst": "Month/year navigation first, then days.",
        "yearfirst": "Guided Year -> Month -> Day flow. Year and month selections auto-advance. The footer becomes Year/Month/Day navigation, and choosing a day completes the picker."
    },
    "ageRestrictions": {
        "minimumAge": "Integer 1-150. Aion calculates the latest eligible birth date automatically and applies it as an effective maxDate.",
        "ageReferenceDate": "Optional YYYY-MM-DD date to measure age on. Defaults to the current date.",
        "combinationRule": "If maxDate is also supplied, Aion uses whichever cutoff is earlier/more restrictive.",
        "yearFirstBehavior": "Year-first omits years outside the effective age/date range instead of rendering them disabled."
    },
    "playbookRevision": "021",
    "playbookFeatures": {
        "studioReader": "Integrate -> Aion playbook -> Read manual. Searchable, chapter-based live manual fetched from ?asset=chatmanual.",
        "fullScreen": "Fixed header and safe-area-aware bottom actions, scrolling middle; Date, Time, Range. For expanded Date use calendarLayout auto or expanded explicitly.",
        "branding": "Ten palette tokens supported by setDefaults({colors}) and per-open colors; gradients derive from accentBlue, accentViolet, accentPink.",
        "colorPrecedence": "Aion theme + style presets -> setDefaults() palette -> per-call colors. Published designs use saved options plus extraOptions/colors.",
        "publisherColors": "Only #RRGGBB hex is retained when publishing. JS direct options use valid CSS colors.",
        "inputBinding": "bind() scans existing date/time inputs. Call again with a root after AJAX additions. Range requires openRange().",
        "resultValues": {
            "date": "YYYY-MM-DD",
            "time": "HH:MM (24-hour format)",
            "range": "object {from,to}, local YYYY-MM-DDTHH:MM:00 strings without offset"
        },
        "rangeDefaults": {
            "minimumHours": 4,
            "min": "current local date and time unless provided"
        },
        "apiVersionUnchanged": "2.6.1"
    },
    "chatPrompt": "Use the Aion manual Playbook 021 and the live capabilities endpoint as source of truth. Load the remotely hosted ?asset=js once, wait for infinisAionReady, select the correct Date, Time or Range method, respect responsive fullscreen and calendarLayout auto, apply host-site branding with the ten colors tokens/setDefaults, preserve callbacks and return formats, and integrate into the existing page without recreating Aion or refreshing the document. For published designs load ?asset=js&config=ID then openPublished.",
    "endpoint": "https://aion.infiniscorp.com/aionApi.php",
    "origin": "https://aion.infiniscorp.com",
    "assets": {
        "js": "https://aion.infiniscorp.com/aionApi.php?asset=js",
        "css": "https://aion.infiniscorp.com/aionApi.php?asset=css",
        "manual": "https://aion.infiniscorp.com/aionApi.php?asset=chatmanual",
        "context": "https://aion.infiniscorp.com/aionApi.php?asset=chatcontext",
        "publish": "https://aion.infiniscorp.com/aionApi.php?action=publish"
    }
}