Grokify
Grokify

Reputation: 16354

How to get a Workday worker / employee web profile URL?

I wish to retrieve a Workday worker (aka employee) web profile URL via the Workday API. The use case is that I'm building a chatbot to retrieve user information and I want to be able to deep link to the worker (employee) web profile.

The issue is that I cannot do either of the following:

  1. get a web profile URL from the API
  2. create a web profile URL from data in the API

A web profile URL looks like the following. The userId looks like 1234 right before the .htmld extension as that is the only number that changes between employee profiles.

https://www.myworkday.com/{myCompany}/d/inst/1$715/247${1234}.htmld

A search URL in the webUI returns a slightly different URL but has the same numerical userId at the end, e.g. the 1234 before .htmld here:

https://www.myworkday.com/{myCompany}/d/inst/autocompletesearch/247${1234}.htmld

A worker API call is like the following with a 32 byte hexadecimal workerId like deadbeefdeadbeefdeadbeefdeadbeef. Searching for the API workerId in the web UI returns no results.

https://services1.myworkday.com/ccx/api/api/v1/{myCompany}/workers/{workerId}

The API result does not have the web profile userId, e.g. 1234, any where in it, or a URL that can render a web page.

{
  "id":"deadbeefdeadbeefdeadbeefdeadbeef",
  "descriptor":"Joe Cool",
  "href":"https://services1.myworkday.com/ccx/api/api/v1/{myCompany}/workers/deadbeefdeadbeefdeadbeefdeadbeef",
  "supervisoryOrganizationsManaged":"https://services1.myworkday.com/ccx/api/api/v1/{myCompany}/workers/deadbeefdeadbeefdeadbeefdeadbeef/supervisoryOrganizationsManaged",
  "yearsOfService":"1",
  "primaryWorkEmail":"[email protected]",
  "isManager":false,
  "location":{
    "descriptor":"Santa Rosa, California",
    "id":"deadbeefdeadbeefdeadbeefdeadbeef"
  },
  "primarySupervisoryOrganization":{
    "descriptor":"Peanuts (Charles 'Sparky' Schulz)",
    "id":"deadbeefdeadbeefdeadbeefdeadbeef",
    "href":"https://services1.myworkday.com/ccx/api/api/v1/{myCompany}/supervisoryOrganizations/deadbeefdeadbeefdeadbeefdeadbeef"
  },
  "businessTitle":"beagle"
}

Can anyone help provide info on how to get a web profile URL from the Workday API?

Upvotes: 5

Views: 6636

Answers (2)

Wyatt Shipman
Wyatt Shipman

Reputation: 1789

It's not a delivered REST API, but you could create a RaaS with the Business Object "Worker from Prompt". There is a field called "Worker Instance URL". When you call the endpoint, you can use the WID (Workday ID), the Employee_ID, or Contingent_Worker_ID for the filter.

https://wd2-impl-services1.workday.com/ccx/service/customreport2/{tenant}/{report owner}/{report name}?Worker!WID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx or https://wd2-impl-services1.workday.com/ccx/service/customreport2/{tenant}/{report owner}/{report name}?Worker!Employee_ID=x

Upvotes: 0

Erik Overflow
Erik Overflow

Reputation: 2306

The ID returned from workday's API is actually the Workday ID, not Worker ID. The Workday ID or WID is a direct reference to any object in Workday. This is often referred to as an "Integration ID". Workday doesn't document this very well, but workday's URLs do have an interesting thing you can take advantage of for deep linking to any Workday Object:

https://www.myworkday.com/{myCompany}/d/inst/{sourceReferenceWID}/{WID}.htmld

As long as you have the Workday ID (WID) of an object, you can deeplink directly. The sourceReferenceWID is just for logging purposes, so you can enter any text you want. I tested this in my own tenant with the text "deeplink" replacing {sourceReferenceWID} just for fun. For your example, the following URL should work for Joe Cool:

https://www.myworkday.com/{myCompany}/d/inst/deeplink/deadbeefdeadbeefdeadbeefdeadbeef.htmld

This is not officially documented, so Workday may change how this works and your mileage may vary.

Upvotes: 4

Related Questions