Skip to content

APEXlang Format

APEXlang is a block-oriented DSL for representing Oracle APEX applications as text files. It ships with Oracle APEX 26.1 and is the native export format understood by uc-apx.

An APEXlang file is a collection of constructs. Each construct has a keyword, an ID, and a body of properties, blocks, and children:

construct ID (
name: Foo
block {
prop: value
nestedBlock { ... }
}
child CHILD_ID (
...
)
)
page 10 (
name: Employees
alias: EMPLOYEES
title: Employees
region EMP_REGION (
name: Employees
type: interactiveReport
source {
type: sqlQuery
sqlQuery: ```sql
select empno, ename, job, sal from emp
```
}
)
)

A construct is keyword ID ( ... ). Common keywords:

KeywordWhat it represents
pageAn APEX page
regionA region on a page (report, form, chart, etc.)
pageItemA page item (text field, select list, etc.)
buttonA button
branchAn after-submit navigation branch
processA page process
validationA page validation
dynamicActionA dynamic action
lovA shared list of values
authorizationA shared authorization scheme

Constructs refer to each other using @ references:

Reference formMeaning
@APEX$123456GUID reference (pre-release 26.1.0-62 format)
@aliasNameName/alias reference (GA 26.1.0+3102 format)
@/template-nameSystem template (built into APEX — e.g. @/standard, @/drawer)

Example:

region breadcrumb-region (
breadcrumb: @SITE_BREADCRUMB
breadcrumbTemplate: @/breadcrumb
)

Inline code uses triple backticks with a language tag:

source {
type: sqlQuery
sqlQuery: ```sql
select empno, ename, deptno
from emp
where deptno = :P10_DEPTNO
```
}

Supported language tags: sql, plsql, javascript-browser, css, html.

Array values are whitespace-separated inside square brackets:

column EMPNO (
queryColumn: EMPNO
queryColumnList: [ EMPNO ENAME JOB SAL DEPTNO ]
)

Special tokens passed through verbatim: #DEFAULT#, #MIN#, #APP_FILES#. These are APEX substitution strings that resolve at runtime.

uc-apx expects the standard APEXlang export structure:

my-app/
├── .apex/
│ └── apexlang.json # mmdVersion + app metadata
├── application.apx # app-level settings
├── page-groups.apx
├── pages/
│ ├── p00001-home.apx
│ ├── p00010-employees.apx
│ └── ...
├── shared-components/
│ ├── lovs.apx
│ ├── lists.apx
│ ├── breadcrumbs.apx
│ ├── authentications.apx
│ └── ...
└── supporting-objects/

The walker picks up every .apx file under the app directory recursively, so plugins, themes, and workspace components are all indexed automatically.

The mmdVersion field in .apex/apexlang.json identifies the export format version. uc-apx supports:

VersionFormat notes
26.1.0+3102GA format — human-readable IDs, name: { ... } block-valued properties, single-quoted IDs allowed
26.1.0-62Pre-release format — APEX$NNN GUID-style IDs