Indeed Interview ALPHA

Indeed provide a live video interviewing service that can be used alongside Zoom, Teams, etc with the Cronofy API.

Authorizing Indeed #

There are two approaches authorizing Indeed Interview for use by an Application.

  1. Individual Authorization - for authorizing use for a single Account.
  2. Organizational Unit Authorization - for authorizing a group of Accounts

Individual Authorization #

Individual authorization uses the same approach as other Cronofy Conferencing authorizations.

You can opt-in to including Indeed in the list of options by adding the Recruiting conferencing category for your Application.

Organizational Unit Authorization #

Organizational Unit Authorization is a new model we’re introducing. A grouping entity called an Organizational Unit acts as the nexus for linking integrations like Indeed Interview together with a new kind of Application Calendar called Virtual Calendars.

This will further form the foundation of additional capabilities our API customers have been asking for. For example: auto provisioning enterprise video conferencing to all Accounts under a Service Account, or auto provisioning accounts based on Active Directory membership.

Like Individual Connect and Enterprise Connect, you will redirect the user (likely an admin) through an OAuth2 flow in order to gain the appropriate permissions.

https://app.cronofy.com/oauth/authorize?response_type=code
  &client_id={CLIENT_ID}
  &redirect_uri={REDIRECT_URI}
  &scope={SCOPE}
  &state={STATE}
  &capabilities[]=conferencing

For the purpose of authorizing Indeed Interview, the key differences with the standard Individual Connect auth flow are

  1. The scope you provide is organizational_unit_use_integrations
  2. An additional capabilities[] query string parameter is used with the value of conferencing

You redirect the user to this URL and on return, redeem the code passed in the usual way.

The credentials you receive back will relate to an Organizational Unit. You will be able to use these credentials to create Virtual Calendars that will automatically have an Indeed Conferencing Profile available on them.

Coming Soon #

  • Linking Indeed Interview conferencing to a Service Account authorization to automatically provision Indeed Conferecing on all Accounts authorized via the Service Account.
  • Support for authorizing specific, named integrations.

Indeed Conferencing Profile #

Once an individual has authorized, the profile will be available in the UserInfo for the user alongside any other conferencing profiles authorized. For example:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{
  "sub": "acc_5700a00eb0ccd07000000000",
  "email": "janed@company.com",
  "name": "Jane Doe",
  "zoneinfo": "Europe/London",
  "cronofy.type": "account",
  "cronofy.data": {
    "authorization": {
      "scope": "read_write"
    },
    "profiles": [
      ...
    ],
    "conferencing_profiles": [
      {
        "provider_name": "zoom",
        "profile_id": "pro_jknsdfk234",
        "profile_name": "example@cronofy.com",
        "profile_connected": true
      },
      {
        "provider_name": "indeed",
        "profile_id": "pro_gfmdsg51qa",
        "profile_name": "example@cronofy.com",
        "profile_connected": true,
      }
    ]
  }
}

Adding Indeed Interview to a Calendar Event #

Once you have the authorization, you can then just use the profile_id for the Indeed profile.

POST /v1/calendars/cal_n23kjnwrw2_jsdfjksn234/events HTTP/1.1
Host: {data_center_url}
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json; charset=utf-8

{
  "event_id": "qTtZdczOccgaPncGJaCiLg",
  "summary": "Interview for Apprentice Time Traveller",
  "description": "Bring sandwiches, it could be a long one.",
  "start": "2024-07-27T15:30:00Z",
  "end": "2024-07-27T17:00:00Z",
  "conferencing": {
    "profile_id": "pro_gfmdsg51qa"
  }
}

Adding additional metadata to improve the experience #

As a dedicated video interview solution, Indeed supports additional context that improves the experience for both candidates and interviewers. To allow the capture of this information Cronofy now supports adding this context to calendar events.

The new event_classes attribute supports a key of interview with, in turn, several relevant attributes.

{
  "interview": {
    "job_name": "Apprentice Time Traveller",
    "employer_name": "Hill Valley Science Services",
    "interviewers": [
      {
        "email": "doc.brown@hill-valley-science.com"
      },
      {
        "email": "einstein@hill-valley-science.com"
      }
    ],
    "candidates": [
      {
        "name": "Marty McFly",
        "email": "marty@hill-valley-high.com"
      }
    ]
  }
}

All attributes are optional and you can add them, or update them when creating or updating the event in the calendar. The following example just providing one interviewer and one candidate.

POST /v1/calendars/cal_n23kjnwrw2_jsdfjksn234/events HTTP/1.1
Host: {data_center_url}
Authorization: Bearer {ACCESS_TOKEN}
Content-Type: application/json; charset=utf-8

{
  "event_id": "qTtZdczOccgaPncGJaCiLg",
  "summary": "Interview for Apprentice Time Traveller",
  "description": "Bring sandwiches, it could be a long one.",
  "start": "2024-07-27T15:30:00Z",
  "end": "2024-07-27T17:00:00Z",
  "conferencing": {
    "profile_id": "pro_gfmdsg51qa"
  },
  "event_classes": {
    "interview": {
      "interviewers": [
        {
          "email": "doc.brown@hill-valley-science.com"
        }
      ],
      "candidates": [
        {
          "name": "Marty McFly",
          "email": "marty@hill-valley-high.com"
        }
      ]
    }
  }
}

Virtual Calendars #

With the Organizational Unit credentials obtained earlier, you will be able to create Virtual Calendars that will automatically have Indeed Inteview provisioned. Very similiar in concept to Application Calendars

They are created with a name using the access_token for the Organizational Unit authorization.

POST /v1/organizational_unit_virtual_calendars HTTP/1.1
Host: {data_center_url}
Authorization: Bearer {ORGANIZATIONAL_UNIT_ACCESS_TOKEN}
Content-Type: application/json; charset=utf-8

{
  "name": "Name for the calendar"
}

The response again is similar in that you will receive credentials for the Virtual Calendar to allow you to add events.

{
  "token_type": "bearer",
  "access_token": {RANDOM_TOKEN},
  "expires_in": 3600,
  "refresh_token": {RANDOM_TOKEN},
  "scope": "read_write",
  "sub": "vrt_XXXX",
  "name": "Name for the calendar",
  "linking_profile": {
    "provider_name": "cronofy",
    "profile_id": "pro_YYYYY"
  }
}

When calling the UserInfo end point with the access_token for the Virtual Calendar, you will receive the conferencing profiles for any conferencing integrations for the Organizational Unit that the Application is authorized to use.

You can also create events in Virtual Calendars in the same way that you would in any other Calendar. The calendar_id is also available in the UserInfo response.