Workday Extend · Capability

Workday Extend App Development

Unified capability for building, deploying, and managing custom Workday Extend applications. Combines app lifecycle management, orchestration automation, and custom object data modeling into a single developer workflow.

Run with Naftiko WorkdayExtendCustom ApplicationsOrchestrationCustom ObjectsPlatform Development

What You Can Do

GET
List apps — List all Extend applications
/v1/apps
POST
Create app — Register a new Extend application
/v1/apps
GET
Get app — Retrieve an Extend application
/v1/apps/{appId}
PATCH
Update app — Update an Extend application
/v1/apps/{appId}
DELETE
Delete app — Delete an Extend application
/v1/apps/{appId}
GET
List app versions — List application versions
/v1/apps/{appId}/versions
POST
Create app version — Create a new application version
/v1/apps/{appId}/versions
GET
List app deployments — List application deployments
/v1/apps/{appId}/deployments
POST
Deploy app — Deploy an Extend application
/v1/apps/{appId}/deployments
GET
List app configurations — List application configurations
/v1/apps/{appId}/configurations
PUT
Update app configurations — Update application configurations
/v1/apps/{appId}/configurations
GET
List orchestrations — List orchestrations
/v1/orchestrations
POST
Create orchestration — Create an orchestration
/v1/orchestrations
GET
List executions — List orchestration executions
/v1/orchestrations/{orchestrationId}/executions
POST
Launch execution — Launch an orchestration execution
/v1/orchestrations/{orchestrationId}/executions
GET
List custom object definitions — List custom object definitions
/v1/custom-object-definitions
GET
Get worker custom object data — Retrieve custom object data for a worker
/v1/workers/{workerId}/custom-objects/{objectType}
PUT
Upsert worker custom object data — Create or update custom object data for a worker
/v1/workers/{workerId}/custom-objects/{objectType}

MCP Tools

list-apps

List all Extend applications registered in the Workday tenant

read-only
create-app

Register a new Workday Extend custom application

get-app

Get details of a specific Extend application including status and version

read-only
update-app

Update metadata or configuration of an Extend application

idempotent
delete-app

Remove an Extend application from the tenant

idempotent
list-app-versions

List all versions of an Extend application

read-only
create-app-version

Create a new version of an Extend application

list-app-deployments

List deployment history for an Extend application

read-only
deploy-app

Deploy an Extend application version to sandbox or production

list-app-configurations

List configuration settings for an Extend application

read-only
update-app-configurations

Update configuration settings for an Extend application

idempotent
list-orchestrations

List all orchestration definitions in the tenant

read-only
create-orchestration

Create a new business process orchestration

list-executions

List executions for a specific orchestration

read-only
launch-execution

Launch a new orchestration execution with input data

list-custom-object-definitions

List all custom object type definitions in the tenant

read-only
get-worker-custom-object-data

Retrieve custom object data attached to a worker record

read-only
upsert-worker-custom-object-data

Create or update custom object data for a worker

idempotent

APIs Used

extend orchestration custom-objects

Capability Spec

app-development.yaml Raw ↑
naftiko: "1.0.0-alpha1"

info:
  label: "Workday Extend App Development"
  description: "Unified capability for building, deploying, and managing custom Workday Extend applications. Combines app lifecycle management, orchestration automation, and custom object data modeling into a single developer workflow."
  tags:
    - Workday
    - Extend
    - Custom Applications
    - Orchestration
    - Custom Objects
    - Platform Development
  created: "2026-05-03"
  modified: "2026-05-03"

binds:
  - namespace: env
    keys:
      WORKDAY_EXTEND_ACCESS_TOKEN: WORKDAY_EXTEND_ACCESS_TOKEN
      WORKDAY_TENANT: WORKDAY_TENANT

capability:
  consumes:
    - import: extend
      location: ./shared/extend-rest-api.yaml
    - import: orchestration
      location: ./shared/orchestration.yaml
    - import: custom-objects
      location: ./shared/custom-objects.yaml

  exposes:
    - type: rest
      port: 8080
      namespace: workday-extend-api
      description: "Unified REST API for Workday Extend app development lifecycle."
      resources:
        - path: /v1/apps
          name: apps
          description: "Manage Extend application registrations"
          operations:
            - method: GET
              name: list-apps
              description: "List all Extend applications"
              call: "extend.list-apps"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: create-app
              description: "Register a new Extend application"
              call: "extend.create-app"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/apps/{appId}
          name: app-detail
          description: "Manage a specific Extend application"
          operations:
            - method: GET
              name: get-app
              description: "Retrieve an Extend application"
              call: "extend.get-app"
              with:
                appId: "rest.appId"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: PATCH
              name: update-app
              description: "Update an Extend application"
              call: "extend.update-app"
              with:
                appId: "rest.appId"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: DELETE
              name: delete-app
              description: "Delete an Extend application"
              call: "extend.delete-app"
              with:
                appId: "rest.appId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/apps/{appId}/versions
          name: app-versions
          description: "Manage application versions"
          operations:
            - method: GET
              name: list-app-versions
              description: "List application versions"
              call: "extend.list-app-versions"
              with:
                appId: "rest.appId"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: create-app-version
              description: "Create a new application version"
              call: "extend.create-app-version"
              with:
                appId: "rest.appId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/apps/{appId}/deployments
          name: app-deployments
          description: "Manage application deployments"
          operations:
            - method: GET
              name: list-app-deployments
              description: "List application deployments"
              call: "extend.list-app-deployments"
              with:
                appId: "rest.appId"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: deploy-app
              description: "Deploy an Extend application"
              call: "extend.deploy-app"
              with:
                appId: "rest.appId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/apps/{appId}/configurations
          name: app-configurations
          description: "Manage application configuration settings"
          operations:
            - method: GET
              name: list-app-configurations
              description: "List application configurations"
              call: "extend.list-app-configurations"
              with:
                appId: "rest.appId"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: PUT
              name: update-app-configurations
              description: "Update application configurations"
              call: "extend.update-app-configurations"
              with:
                appId: "rest.appId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/orchestrations
          name: orchestrations
          description: "Manage business process orchestrations"
          operations:
            - method: GET
              name: list-orchestrations
              description: "List orchestrations"
              call: "orchestration.list-orchestrations"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: create-orchestration
              description: "Create an orchestration"
              call: "orchestration.create-orchestration"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/orchestrations/{orchestrationId}/executions
          name: orchestration-executions
          description: "Orchestration execution management"
          operations:
            - method: GET
              name: list-executions
              description: "List orchestration executions"
              call: "orchestration.list-executions"
              with:
                orchestrationId: "rest.orchestrationId"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: launch-execution
              description: "Launch an orchestration execution"
              call: "orchestration.launch-execution"
              with:
                orchestrationId: "rest.orchestrationId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/custom-object-definitions
          name: custom-object-definitions
          description: "Custom object type definitions"
          operations:
            - method: GET
              name: list-custom-object-definitions
              description: "List custom object definitions"
              call: "custom-objects.list-custom-object-definitions"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/workers/{workerId}/custom-objects/{objectType}
          name: worker-custom-objects
          description: "Custom object data for workers"
          operations:
            - method: GET
              name: get-worker-custom-object-data
              description: "Retrieve custom object data for a worker"
              call: "custom-objects.get-worker-custom-object-data"
              with:
                workerId: "rest.workerId"
                objectType: "rest.objectType"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: PUT
              name: upsert-worker-custom-object-data
              description: "Create or update custom object data for a worker"
              call: "custom-objects.upsert-worker-custom-object-data"
              with:
                workerId: "rest.workerId"
                objectType: "rest.objectType"
              outputParameters:
                - type: object
                  mapping: "$."

    - type: mcp
      port: 9090
      namespace: workday-extend-mcp
      transport: http
      description: "MCP server for AI-assisted Workday Extend application development and orchestration."
      tools:
        - name: list-apps
          description: "List all Extend applications registered in the Workday tenant"
          hints:
            readOnly: true
            openWorld: true
          call: "extend.list-apps"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-app
          description: "Register a new Workday Extend custom application"
          hints:
            readOnly: false
            destructive: false
          call: "extend.create-app"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-app
          description: "Get details of a specific Extend application including status and version"
          hints:
            readOnly: true
            openWorld: true
          call: "extend.get-app"
          with:
            appId: "tools.appId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: update-app
          description: "Update metadata or configuration of an Extend application"
          hints:
            readOnly: false
            destructive: false
            idempotent: true
          call: "extend.update-app"
          with:
            appId: "tools.appId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: delete-app
          description: "Remove an Extend application from the tenant"
          hints:
            readOnly: false
            destructive: true
            idempotent: true
          call: "extend.delete-app"
          with:
            appId: "tools.appId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-app-versions
          description: "List all versions of an Extend application"
          hints:
            readOnly: true
            openWorld: true
          call: "extend.list-app-versions"
          with:
            appId: "tools.appId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-app-version
          description: "Create a new version of an Extend application"
          hints:
            readOnly: false
            destructive: false
          call: "extend.create-app-version"
          with:
            appId: "tools.appId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-app-deployments
          description: "List deployment history for an Extend application"
          hints:
            readOnly: true
            openWorld: true
          call: "extend.list-app-deployments"
          with:
            appId: "tools.appId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: deploy-app
          description: "Deploy an Extend application version to sandbox or production"
          hints:
            readOnly: false
            destructive: false
          call: "extend.deploy-app"
          with:
            appId: "tools.appId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-app-configurations
          description: "List configuration settings for an Extend application"
          hints:
            readOnly: true
            openWorld: true
          call: "extend.list-app-configurations"
          with:
            appId: "tools.appId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: update-app-configurations
          description: "Update configuration settings for an Extend application"
          hints:
            readOnly: false
            destructive: false
            idempotent: true
          call: "extend.update-app-configurations"
          with:
            appId: "tools.appId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-orchestrations
          description: "List all orchestration definitions in the tenant"
          hints:
            readOnly: true
            openWorld: true
          call: "orchestration.list-orchestrations"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-orchestration
          description: "Create a new business process orchestration"
          hints:
            readOnly: false
            destructive: false
          call: "orchestration.create-orchestration"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-executions
          description: "List executions for a specific orchestration"
          hints:
            readOnly: true
            openWorld: true
          call: "orchestration.list-executions"
          with:
            orchestrationId: "tools.orchestrationId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: launch-execution
          description: "Launch a new orchestration execution with input data"
          hints:
            readOnly: false
            destructive: false
          call: "orchestration.launch-execution"
          with:
            orchestrationId: "tools.orchestrationId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-custom-object-definitions
          description: "List all custom object type definitions in the tenant"
          hints:
            readOnly: true
            openWorld: true
          call: "custom-objects.list-custom-object-definitions"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-worker-custom-object-data
          description: "Retrieve custom object data attached to a worker record"
          hints:
            readOnly: true
            openWorld: true
          call: "custom-objects.get-worker-custom-object-data"
          with:
            workerId: "tools.workerId"
            objectType: "tools.objectType"
          outputParameters:
            - type: object
              mapping: "$."
        - name: upsert-worker-custom-object-data
          description: "Create or update custom object data for a worker"
          hints:
            readOnly: false
            destructive: false
            idempotent: true
          call: "custom-objects.upsert-worker-custom-object-data"
          with:
            workerId: "tools.workerId"
            objectType: "tools.objectType"
          outputParameters:
            - type: object
              mapping: "$."