Skip to main content
Administrator Guide
Last Updated: 2026-08-21
Connect External Agents to Workday Using A2A

Connect External Agents to Workday Using A2A

You can connect AI assistants that run outside Workday, such as Microsoft Copilot and Google Gemini Enterprise, to invoke the Self-Service Agent using the industry Agent2Agent (A2A) protocol. When you register a third-party client in Workday's Agent System of Record, you can enable that agent to discover and call Self-Service Agent on behalf of an authorized user.
For detailed instructions for how to connect Workday to Gemini Enterprise, see Set Up Sana From Workday for Gemini Enterprise.
  1. Example POST Agent Definition.yaml to register your 3P Agent with Self-Service Agent as a tool
    info: name: POST Agent Definition type: http seq: 5 http: method: POST url: https://{{hostname}}/asor/v1/agentDefinition headers: - name: Content-Type value: application/json - name: wd-agent-tenant-alias value: wdaiplatform_wcpdev2 - name: accept-encoding value: identity body: type: json data: | {"name": "Workday Self-Service Agent on XYZ client", "description": "<<enter a short description of the agent>>", "url": "https://your-agent-url.com", "documentationUrl": "https://your-agent-docs-url.com", "provider": { "id": "Provider=Self-Built"}, "iconUrl": "https://<<icon-url>>", "version": "1.0.1", "capabilities": { "streaming": false, "pushNotifications": false, "stateTransitionHistory": false}, "platform": { "id": "Platform=<<platform-id>>" }, "defaultInputModes": [ { "type": "text/plain" "}], "defaultOutputModes": [ { "type": "text/plain" }, {"type": "application/json" } ], "skills": [ { "id": "ssa-agent-as-a-tool", "name": "Workday Self-Service Agent", "description": "Connects to SSA", "tags": [ { "tag": "workday" }, { "tag": "workers" }, { "tag": "staffing" }, { "tag": "hr-operations" } ], "inputModes": [ { "type": "text/plain" } ], "outputModes": [ { "type": "text/plain" }, { "type": "application/json" } ] } ], "workdayConfig": [ { "skillId": "ssa-agent-as-a-tool", "executionMode": { "id": "Mode=Delegate" }, "workdayResources": [ { "tool_name": "Workday Self-Service Agent", "description": "SSA tool", "agent_resource": { "id": "6bfadd7c014610000dffae8d77c00000" } } ] } ] } auth: type: bearer token: <<ISU Token>> runtime: variables: - name: hostname value: <<agent-gateway hostname>> settings: encodeUrl: true timeout: 0 followRedirects: true maxRedirects: 5
  2. Create or reuse an ISU OAuth client:
    1. Log in to Workday as
      System Admin
      .
    2. Access the
      Create Integration System User
      task (if you don’t have a suitable ISU already).
    3. Access the
      Register API Client for Integrations
      task and:
      1. Select
        Agent System of Record
        from the
        Functional Area
        prompt.
      2. Check the
        Include Workday Owned Scopes
        check box.
      3. Save
        Client ID
        and
        Client secret
        .
    4. On the client:
      1. Click
        Related Actions
        Manage Refresh Tokens
        .
      2. Select the ISU that you created.
      3. Generate a new refresh token.
      4. Record the new refresh token.
      You now have:
      • CLIENT_ID / CLIENT_SECRET (integration client)
      • REFRESH_TOKEN (ISU)
      • TENANT_ALIAS (typically your tenant name).
  3. Generate an ISU bearer token.
    1. Send a POST using POST ISU Bearer Token.yaml in your preferred API client.
      Example:
      info: name: POST ISU Bearer Token type: http seq: 7 http: method: POST url: https://<<agent-gateway-hostname>>/auth/oauth2/{{tenant-alias}}/token body: type: text data: grant_type=refresh_token&refresh_token={{refresh-token}}&client_id={{client-id}}&client_secret={{client-secret}} auth: inherit runtime: variables: - name: refresh-token value: <<refresh-token>> - name: tenant-alias value: <<tenant-alias>> - name: client-secret value: <<client-secret>> - name: client-id value: <<client-id>> scripts: - type: after-response code: |- let data = res.getBody(); bru.setEnvVar("bearer-token", data.access_token); bru.setEnvVar("refresh-token", data.refresh_token); settings: encodeUrl:true timeout: 0 followRedirects: true maxRedirects: 5
    2. Save the returned ISU Bearer Token.
    3. Retrieve the Agent Card JSON using the GET Agent Card.yaml in your preferred API Client:
      info: name: GET Agent Card type: http seq: 2 http: method: GET url: https://{{agent-gateway-hostname}}/v1/a2a/{{tenant-alias}}/{{agent-wid}}/.well-known/agent-card.json headers: - name: Accept-Encoding value: identity - name: Content-Type value: application/json - name: Authorization value: Bearer {{bearer-token}} body: type: json data: "" auth: inherit runtime: variables: - name: tenant-alias value: <<tenant-alias>> - name: bearer-token value: <<ISU-bearer-token>> - name: agent-wid value: <<self-service-agent-wid>> settings: encodeUrl: true timeout: 0 followRedirects: true maxRedirects: 5
    4. Save the JSON response. This is your Agent Card.
  4. Configure the external platform.
    1. Import/paste the Agent Card JSON into your external AI platform.
    2. Configure these OAuth settings in the external platform:
      1. Client ID
        and
        Client Secret
        : Use the credentials saved from the
        Configure and Activate the New Agent in Workday
        step above.
      2. PKCE
        : Enable PKCE.
      3. Auth URL
        : https://<region-code>[.agent.workday.com/auth/authorize/](https://.agent.workday.com/auth/authorize/)<tenant-alias>?response_type=code.
      4. Token URL
        : https://<region-code>[.agent.workday.com/auth/oauth2/](https://.agent.workday.com/auth/oauth2/)<tenant-alias>/token.
      5. Redirect URL
        : Ensure it matches the Redirect URI from the
        Configure and Activate the New Agent in Workday
        step above.
  5. Grant end users access.
    1. In Workday: Ensure target end users belong to the security groups assigned in the
      Configure and Activate the New Agent in Workday
      step above.
    2. In the external platform: Assign the Workday Agent configuration, roles, or permissions to the appropriate end-users/groups in the external system.
Your external platform can now retrieve information from Workday and displays it in responses.