Workday Report-as-a-Service (RaaS) REST API

REST API that exposes custom Workday reports as web service endpoints. Advanced-type reports enabled as web services can be consumed via RESTful endpoints, returning data in JSON, CSV, XML, and other formats. Supports query parameters for report prompts and filtering.

OpenAPI Specification

workday-report-writer-raas-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Workday Report Writer Workday Report-as-a-Service (RaaS) REST API
  description: >-
    REST API that exposes custom Workday reports as web service endpoints.
    Advanced-type reports enabled as web services can be consumed via RESTful
    endpoints, returning data in JSON, CSV, XML, and other formats. Supports
    query parameters for report prompts and filtering, enabling programmatic
    data extraction from Workday HCM and Financial Management modules.
  version: v45.2
  contact:
    name: Workday Support
    url: https://www.workday.com/en-us/company/contact-us.html
  termsOfService: https://www.workday.com/en-us/legal.html
externalDocs:
  description: Workday API Documentation
  url: https://community.workday.com/api
servers:
  - url: https://{hostname}/ccx/service/customreport2/{tenant}
    description: Workday RaaS Production
    variables:
      hostname:
        description: >-
          Workday data center hostname, varies by tenant deployment
          (e.g., wd2-impl-services1.workday.com)
        default: wd2-impl-services1.workday.com
      tenant:
        description: Workday tenant name
        default: your-tenant
tags:
  - name: Custom Reports
    description: >-
      Execute custom reports exposed as web service endpoints, returning data
      in multiple formats including JSON, CSV, and XML
security:
  - basicAuth: []
paths:
  /{reportOwner}/{reportName}:
    get:
      operationId: executeCustomReportAsService
      summary: Workday Report Writer Execute a Custom Report via RaaS
      description: >-
        Executes a custom Workday report that has been enabled as a web
        service and returns the report data in the specified format. Report
        prompts can be passed as query parameters to filter results. Only
        Advanced-type reports with the Enable As Web Service option selected
        are accessible through this endpoint.
      tags:
        - Custom Reports
      parameters:
        - $ref: '#/components/parameters/reportOwner'
        - $ref: '#/components/parameters/reportName'
        - name: format
          in: query
          description: >-
            Output format for the report data. Determines the content type
            of the response.
          schema:
            type: string
            enum:
              - json
              - csv
              - simplexml
              - xml
              - rss
              - gdata
            default: json
        - name: Worker_Type!WID
          in: query
          description: >-
            Example prompt parameter for filtering by worker type using the
            Workday ID (WID). Actual prompt parameters vary per report
            definition.
          schema:
            type: string
      responses:
        '200':
          description: Report data retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RaaSReportResponse'
            text/csv:
              schema:
                type: string
                description: Report data in CSV format
            application/xml:
              schema:
                type: string
                description: Report data in XML format
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '408':
          description: >-
            Request timed out. Workday enforces a 30-minute timeout for
            report execution. Consider reducing the data set size or using
            prompt parameters to filter results.
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        HTTP Basic authentication using an Integration System User (ISU)
        username and password configured in Workday
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        OAuth 2.0 bearer token obtained from Workday token endpoint
  parameters:
    reportOwner:
      name: reportOwner
      in: path
      required: true
      description: >-
        Username of the Integration System User (ISU) that owns the report
      schema:
        type: string
    reportName:
      name: reportName
      in: path
      required: true
      description: >-
        Name of the custom report as defined in Workday Report Writer. Must
        be an Advanced-type report enabled as a web service.
      schema:
        type: string
  responses:
    BadRequest:
      description: >-
        The request was malformed, contained invalid prompt values, or
        referenced an invalid report
    Unauthorized:
      description: >-
        Authentication credentials are missing, invalid, or the Integration
        System User lacks the required security group permissions
    NotFound:
      description: >-
        The specified report was not found or has not been enabled as a
        web service
  schemas:
    RaaSReportResponse:
      type: object
      description: >-
        JSON response wrapper for a RaaS report execution containing the
        report data and metadata
      properties:
        Report_Entry:
          type: array
          items:
            type: object
            additionalProperties: true
          description: >-
            Array of report rows, where each object represents a row with
            property names matching the report column XML aliases
    RaaSReportRow:
      type: object
      description: >-
        A single row from a RaaS report result. Properties correspond to
        the report columns defined in Report Writer.
      additionalProperties: true
      properties:
        Worker:
          type: string
          description: >-
            Example field representing a worker name. Actual fields depend
            on the specific report definition.
        Employee_ID:
          type: string
          description: >-
            Example field representing an employee identifier. Actual fields
            depend on the specific report definition.