<turbo-stream action="update" target="wiki_card"><template>

<h1>Workday Schema Structure and Field Management</h1>
<div class="trix-content"><p>Alongside the REST WebService connection, every Workday integration uses a JSON schema that describes the objects and fields available in the customer's Workday environment. This schema is what makes the integration flexible: it's read by the integration layer, and it can be extended by the customer without any development work.</p><h3>Why a schema instead of hardcoded mappings</h3><p>Workday customers frequently add custom fields to their reports over time (a new cost center attribute, a new custom ID, and so on). If field mappings were hardcoded, every such change would need a developer to update and redeploy the integration. Instead, the schema acts as a live contract: as long as it accurately describes the report, new fields become available to map as soon as the schema says they exist.</p><h3>How the schema is structured</h3><p>The schema has one definition per Workday report/endpoint, named to match the endpoint exactly. Each definition contains a <code>definitions</code> block listing every field in that report, and a <code>properties</code> block that references them.</p><p>Each field entry typically includes:</p><ul><li><strong>description</strong> – what the field represents</li><li><strong>example</strong> – a sample value, useful for documentation and for anyone mapping the field later</li><li><strong>type</strong> – e.g. <code>string</code></li><li><strong>format</strong> – where relevant, e.g. <code>date</code></li><li><strong>readOnly</strong> – whether the field is read-only (true for essentially all Workday report output, since these are read-only report rows)</li></ul><p>Example field definition:</p><pre><code>"Hire_Date": {<br>&nbsp; "description": "Employee's hire date.",<br>&nbsp; "example": "2022-03-14",<br>&nbsp; "readOnly": true,<br>&nbsp; "format": "date",<br>&nbsp; "type": ["string"]<br>}<br></code><br></pre><p>There is also a shared <code>context</code> definition (tenant alias and report path) used for connection-level metadata rather than report data itself.</p><h3>One schema for all endpoints</h3><p>There is only <strong>one schema per tenant</strong>, covering every object/endpoint in use, not a separate schema per report or table. Each one just gets its own definition inside that same schema file. This is what allows the whole integration to run through a <strong>single REST WebService connection</strong>: since one Metadata URL already describes everything, there's no need to set up a separate connection for each endpoint.</p><h3>The customer's workflow for adding a new field</h3><p>This is the core benefit of the approach:</p><ol><li>Customer's Workday admin adds a new field to the relevant custom report in Workday.</li><li>Customer (or whoever manages the schema) adds a matching field definition to the JSON schema: name, description, type, format, example.</li><li>The schema is saved back to its hosted location (referenced by the REST WebService's Metadata URL).</li><li>The integration picks up the new field automatically on the next read of the schema. It's now available for mapping into the target system, no code change, no new release, no ticket to Rapidi.</li></ol><p>The only requirement is that the schema stays in sync with the actual report output. If a field is removed from the Workday report but left in the schema, or vice versa, mapping will fail or return unexpected results, so schema maintenance is a shared discipline rather than a one-time setup step.</p><h3>Where the schema is hosted</h3><p>The schema is hosted as a static JSON file on GitHub and referenced by URL in the REST WebService's Metadata URL field. Any stable, publicly (or securely) reachable JSON endpoint works; GitHub Pages is convenient because it's version-controlled and easy for a customer's technical team to edit and publish changes to.</p></div>
</template></turbo-stream>

