Summary

Bullhorn Data Hub is a flexible data structure to store data for reporting, and analytics across Bullhorn, Marketplace Partner and external sources.

Pre-Requisites

All Data Hub API calls must be made with a valid BH REST Token (either via OAuth Client API Authentication or within a valid Bullhorn REST Session within the ATS Application).

Schema Definition and setup must be enabled for the Bullhorn Corporation that is sending data (whether data is sent via client or directly from a custom application owned by the client).

API Endpoints

Type Endpoint* Inputs (request body or url params) Description
POST data-hub/data Request Body:
- sourceSystem
- entityType
- schemaVersion
- Items (Up to 100 items allowed in payload)
Upserts** data to datahub. Payload must be formatted according to schema definition setup for that corp.
POST data-hub/data/find Request Body:
- sourceId
- entityType.name or entityType.id
Must be built using Adaptive Query format, see example
Find is used to query data for viewing with adaptive query restraints

Using Data Hub

Endpoint

Type: POST

  • {rest-url}/data-hub/data

Example Request Body:

[
    {
        "sourceSystem": "sourceSystemName",
        "entityType": "entityTypeName",
        "schemaVersion": "schemaVersionName",
        "items": [
            {
                "sourceId": 1,
                "dateAddedInSourceSystem": "2024-11-31T17:48:17.182+00:00",
                "dateLastModifiedInSourceSystem": "2024-11-31T17:48:17.182+00:00",
                "payload": "{ \"name\": \"bob\", \"age\": 25, \"address\": { \"street\": \"789 Main St\", \"city\": \"New York\", \"state\": \"NY\", \"postalCode\": \"10001\" }, \"hobbies\": [\"reading\", \"running\"] }",
                "isDeleted": false,
                "placementId": 107,
                "candidateId": 123,
                "clientContactId": 55,
                "clientCorporationId": 55,
                "jobOrderId": 123,
                "jobSubmissionId": 123,
                "leadId": 123,
                "opportunityId": 465,
                "corporateUserId": 123,
                "noteId": 123,
                "appointmentId": 123,
                "payableChargeId": 123,
                "billableChargeId": 134
                // up to 100 items
            }
        ]
    }
]

Example 200 Response:

{
    "statusCode": 200,
    "messages": [],
    "data": [
        {
            "entityType": "sourceSystemName",
            "sourceSystem": "entityTypeName",
            "statusIdList": {
                "success": [
                    "1"
                ]
            },
            "dataIds": [
                1234
            ]
        }
    ]
}


Endpoint

Type: POST

  • {rest-url}/data-hub/data/find

Example Request Body:

{
    "criteria": {
        "and": [
            {
                "entityType.name": {
                    "equalTo": "sourceSystemName"
                }
            },
            {
                "sourceId": {
                   "in": ["2","7.2"] 
                }
            },
            {
                "entityType.sourceSystem.name": {
                    "equalTo": "NoCorpIdHeader"
                }
                // add whatever other constraints you want
            }
        ]
    }
}

Example 200 Response:

{
    "statusCode": 200,
    "messages": null,
    "data": {
        "start": 0,
        "count": 1,
        "total": 1,
        "data": [
            {
                "dataId": 1234,
                "sourceId": "2",
                "entityType": {
                    "entityTypeId": 241,
                    "name": "sourceSystemName"
                },
                "entityTypeSchemaVersion": {
                    "entityTypeSchemaVersionId": 441,
                    "name": "schemaVersionName"
                },
                "dateAdded": "2025-01-10T22:56:18.012+00:00",
                "dateLastModified": "2025-01-10T22:56:18.012+00:00",
                "dateAddedInSourceSystem": "2024-12-01T17:48:17.000+00:00",
                "dateLastModifiedInSourceSystem": "2024-12-01T17:48:17.000+00:00",
                "payload": "{ \"name\": \"Update Again\", \"age\": 25, \"address\": { \"street\": \"789 Main St\", \"city\": \"New York\", \"state\": \"NY\", \"postalCode\": \"10001\" }, \"hobbies\": [\"reading\", \"running\"] }",
                "isDeleted": false,
                "candidateId": 123,
                "clientContactId": 10,
                "clientCorporationId": 1105,
                "jobOrderId": 123,
                "jobSubmissionId": 123,
                "placementId": 123,
                "leadId": 123,
                "opportunityId": 123,
                "corporateUserId": 123,
                "noteId": 123,
                "appointmentId": 123,
                "payableChargeId": 123,
                "billableChargeId": 134,
                "entityId": 1234
            }
        ]
    }
}

By following these steps, Data Hub can effectively be used, assuming the schema is already set up for the user’s corporation.