Workday Resource Management API

SOAP API exposing Workday Financials Resource Management data, including suppliers, supplier accounts, procurement, purchase orders, invoicing, business assets, asset depreciation, and travel and entertainment operations. Supports the full procure-to-pay lifecycle and asset management workflows.

OpenAPI Specification

workday-finance-procurement-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Workday Finance Procurement API
  description: >-
    API for procurement operations including purchase requisitions, purchase orders,
    supplier management, supplier invoices, business assets, and the procure-to-pay
    lifecycle within Workday Financial Management.
  version: v45.2
  contact:
    name: Workday API Support
    email: [email protected]
  termsOfService: https://www.workday.com/en-us/legal.html
externalDocs:
  description: Workday Resource Management API Documentation
  url: https://community.workday.com/sites/default/files/file-hosting/productionapi/Resource_Management/v45.2/index.html
servers:
  - url: https://wd2-impl-services1.workday.com/ccx/api/resource-management/v45.2/{tenant}
    description: Workday Procurement API Server
    variables:
      tenant:
        default: mycompany
        description: Workday tenant name
security:
  - bearerAuth: []
tags:
  - name: Suppliers
    description: Supplier account management
  - name: Purchase Orders
    description: Purchase order creation and management
  - name: Supplier Invoices
    description: Supplier invoice processing
  - name: Requisitions
    description: Purchase requisition management
paths:
  /suppliers:
    get:
      operationId: listSuppliers
      summary: List Suppliers
      description: Returns a collection of supplier accounts in the tenant.
      tags:
        - Suppliers
      parameters:
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: Collection of suppliers returned successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Supplier'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /suppliers/{supplierId}:
    get:
      operationId: getSupplier
      summary: Get Supplier
      description: Returns details of a specific supplier account.
      tags:
        - Suppliers
      parameters:
        - $ref: '#/components/parameters/supplierId'
      responses:
        '200':
          description: Supplier details returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Supplier'
        '404':
          $ref: '#/components/responses/NotFound'
  /purchaseOrders:
    get:
      operationId: listPurchaseOrders
      summary: List Purchase Orders
      description: Returns a collection of purchase orders.
      tags:
        - Purchase Orders
      parameters:
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
        - name: status
          in: query
          description: Filter by purchase order status
          schema:
            type: string
      responses:
        '200':
          description: Collection of purchase orders returned successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PurchaseOrder'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createPurchaseOrder
      summary: Create Purchase Order
      description: Creates a new purchase order.
      tags:
        - Purchase Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PurchaseOrderCreate'
      responses:
        '201':
          description: Purchase order created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseOrder'
        '400':
          $ref: '#/components/responses/BadRequest'
  /purchaseOrders/{purchaseOrderId}:
    get:
      operationId: getPurchaseOrder
      summary: Get Purchase Order
      description: Returns details of a specific purchase order.
      tags:
        - Purchase Orders
      parameters:
        - $ref: '#/components/parameters/purchaseOrderId'
      responses:
        '200':
          description: Purchase order details returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PurchaseOrder'
        '404':
          $ref: '#/components/responses/NotFound'
  /supplierInvoices:
    get:
      operationId: listSupplierInvoices
      summary: List Supplier Invoices
      description: Returns a collection of supplier invoices.
      tags:
        - Supplier Invoices
      parameters:
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
        - name: status
          in: query
          description: Filter by invoice status
          schema:
            type: string
      responses:
        '200':
          description: Collection of supplier invoices returned successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/SupplierInvoice'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createSupplierInvoice
      summary: Create Supplier Invoice
      description: Creates a new supplier invoice for processing.
      tags:
        - Supplier Invoices
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SupplierInvoiceCreate'
      responses:
        '201':
          description: Supplier invoice created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SupplierInvoice'
        '400':
          $ref: '#/components/responses/BadRequest'
  /requisitions:
    get:
      operationId: listRequisitions
      summary: List Purchase Requisitions
      description: Returns a collection of purchase requisitions.
      tags:
        - Requisitions
      parameters:
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        '200':
          description: Collection of requisitions returned successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Requisition'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  parameters:
    limit:
      name: limit
      in: query
      description: Maximum number of results to return
      schema:
        type: integer
        default: 20
        maximum: 100
    offset:
      name: offset
      in: query
      description: Number of results to skip for pagination
      schema:
        type: integer
        default: 0
    supplierId:
      name: supplierId
      in: path
      required: true
      description: The unique identifier of the supplier
      schema:
        type: string
    purchaseOrderId:
      name: purchaseOrderId
      in: path
      required: true
      description: The unique identifier of the purchase order
      schema:
        type: string
  responses:
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
    ResourceReference:
      type: object
      properties:
        id:
          type: string
        descriptor:
          type: string
        href:
          type: string
          format: uri
    Supplier:
      type: object
      properties:
        id:
          type: string
          description: Supplier unique identifier
        descriptor:
          type: string
          description: Supplier display name
        name:
          type: string
        supplierNumber:
          type: string
        status:
          type: string
          enum: [active, inactive]
        taxId:
          type: string
        paymentTerms:
          type: string
        href:
          type: string
          format: uri
    PurchaseOrder:
      type: object
      properties:
        id:
          type: string
        descriptor:
          type: string
        purchaseOrderNumber:
          type: string
        status:
          type: string
          enum: [draft, submitted, approved, received, closed]
        supplier:
          $ref: '#/components/schemas/ResourceReference'
        totalAmount:
          type: number
          format: double
        currency:
          type: string
        orderDate:
          type: string
          format: date
        lines:
          type: array
          items:
            type: object
            properties:
              lineNumber:
                type: integer
              item:
                type: string
              quantity:
                type: number
              unitCost:
                type: number
              totalCost:
                type: number
        href:
          type: string
          format: uri
    PurchaseOrderCreate:
      type: object
      required: [supplier]
      properties:
        supplier:
          type: string
          description: Supplier identifier
        orderDate:
          type: string
          format: date
        lines:
          type: array
          items:
            type: object
            properties:
              item:
                type: string
              quantity:
                type: number
              unitCost:
                type: number
    SupplierInvoice:
      type: object
      properties:
        id:
          type: string
        descriptor:
          type: string
        invoiceNumber:
          type: string
        status:
          type: string
          enum: [draft, submitted, approved, paid, cancelled]
        supplier:
          $ref: '#/components/schemas/ResourceReference'
        invoiceDate:
          type: string
          format: date
        dueDate:
          type: string
          format: date
        totalAmount:
          type: number
          format: double
        currency:
          type: string
        purchaseOrder:
          $ref: '#/components/schemas/ResourceReference'
        href:
          type: string
          format: uri
    SupplierInvoiceCreate:
      type: object
      required: [supplier, invoiceNumber, totalAmount]
      properties:
        supplier:
          type: string
        invoiceNumber:
          type: string
        invoiceDate:
          type: string
          format: date
        dueDate:
          type: string
          format: date
        totalAmount:
          type: number
        currency:
          type: string
    Requisition:
      type: object
      properties:
        id:
          type: string
        descriptor:
          type: string
        requisitionNumber:
          type: string
        status:
          type: string
          enum: [draft, submitted, approved, ordered, received]
        requester:
          $ref: '#/components/schemas/ResourceReference'
        submitDate:
          type: string
          format: date
        totalAmount:
          type: number
          format: double
        currency:
          type: string
        href:
          type: string
          format: uri