SlideShare a Scribd company logo
API Developer Training: Insights for
Integrations
Ted
Soper
ted.soper@bullhorn.com
Barry
Shevlin
barry.shevlin@bullhorn.com
Ethan
Schroeder
ethan.schroeder@bullhorn.com
Bullhorn API Overview
API Features
& Code Examples
BULLHORN API AUTHENTICATION
● OAUTH 2.0
● Registration
● Shared key - Best practice
● Individual Key - Per case basis
only
BULLHORN OAUTH
Use username, password redirect URI
to get AuthCode
Get Auth Code
Use Auth Code to get
Access Token & Refresh Token
Use Access Token to get Rest Token
Get Rest Token
Use Refresh token to get new Rest Token
Refresh Rest Token
Send Username to get Oauth URL & Rest URL
Get Rest URL
Get Access Token
BULLHORN OAUTH
rest.bullhornstaffing.com/rest-
services/loginInfo?username=username
Get Rest URL
1. Get Rest URL
2. Get Auth Code
3. Get Access Token
4. Get Rest Token
> Refresh Rest Token
● Returns the Rest URL & Auth URL for the Account
● Check for Datacenter API URLS
http://bullhorn.github.io/Data-Center-URLs/
BULLHORN OAUTH
/authorize?client_id=clientId&response_type=code
&action=Login&username=username&password=password
&redirect_uri=redirectUrl
GET Auth Code
/token?grant_type=authorization_code&code=authCod
e&client_id=clientId&client_secret=clientSecret&r
edirect_uri=redirectUrl
POST for Access Token
1. Get Rest URL
2. Get Auth Code
3. Get Access Token
4. Get Rest Token
> Refresh Rest Token
/login?version=*&access_token=accessToken
GET Rest Token
BULLHORN OAUTH
/token?grant_type=refresh_token
&refresh_token=refreshToken&client_id=clientId
&client_secret=clientSecret
Refresh Rest Token
1. Get Rest URL
2. Get Auth Code
3. Get Access Token
4. Get Rest Token
> Refresh Rest Token
● Default REST token lasts for 10 minutes
● Get a new REST token with a Refresh request
Entities & Metadata
Best Practices
Entity Lookup
● /search
○ Lucene-based search
○ Available for most common entities
○ Faster than Query
● /query
○ JPQL (SQL-like) querying
○ Use when search isn’t available
● /find (FastFind)
○ Searches several entities in one request
○ Useful with user input
/search/ClientContact
?query=(clientCorporation.id:123)
&fields=name,id,status
/query/CorporateUser
?where=(name='Ted Soper’)
&fields=id,email
/find
?query=monster
&countPerEntity=3
Entity Pagination
/search/...&count=500&start=0
Get first page
{
data: [500],
total: 1700
}
Get total from response
/search/...&count=500&start=500
Get remaining pages in parallel
/search/...&count=500&start=1000
/search/...&count=500&start=1500
● Count
○ How many objects to return
○ Default: 30
○ Max: 500
● Start
○ How many objects to skip
○ Default: 0
1
2
3
Efficient Lookups
● Only get the fields you need
● Avoid “fields=*”
● Exception: one-time metadata
calls
● Don’t duplicate requests
● Use /search if possible
● If you only need the count, leave
off fields/layout
/entity/JobOrder/1234/notes
?fields=comments,action
Get notes for one entity
/search/ClientContact
?query=firstName:Barry
Search for list of IDs & count
Metadata Lookup
● Full structural data about an entity
● Field constraints
● Reference types
● Custom field definitions
● Job track information
/meta/Candidate
?fields=*
&meta=basic
Lookup before creation
/entity/JobOrder/12345
?layout=RecordEdit
&meta=track
Add to another request
Metadata Example Responses
[
{
"name": "assignedUsers",
"type": "TO_MANY",
"label": "Assigned to",
"optionsType": "CorporateUser",
"optionsUrl": "/options/CorporateUser",
"associatedEntity": {
"entity": "CorporateUser",
"entityMetaUrl": "/meta/CorporateUser",
"label": "Corporate User",
"fields": [...]
}
},
{...},
{...}
]
Reference Field [
{
"name": "customText3",
"type": "SCALAR",
"dataType": "String",
"maxLength": 100,
"label": "Primary Department",
"options": [
{
"value": "Boston MA Dept",
"label": "Boston MA Dept"
}, {
"value" : "Orlando FL Dept",
"label" : "Orlando FL Dept"
}
]
},
{...}
]
Custom Field w/ Options
Subscriptions
Overview
Subscriptions for data sync
PUT
Subscription
New
Change Events
get logged
against sub
GET
Subscription
updates
GET
Subscription
updates
New
Change Events
get logged
against sub
● Create a Subscription
based on data change
events
○ Entity create/update
○ Field map change
○ Job match search
Subscriptions for data sync
...event/subscription/MySubName?type=entity&names=Candidate
&eventTypes=INSERTED,UPDATED,DELETED
Example
● Parameters
○ type
○ (entity)names
○ eventTypes
Custom Tabs
Custom Tabs
● Custom Tab
○ Pulls in an iframe application
○ Appbridge user send request from extension to Bullhorn
○ Through appbridge make requests to the bullhorn api
BULLHORN OAUTH & Custom Tabs
/token?grant_type=authorization_code&code=authCod
e&client_id=clientId&client_secret=clientSecret&r
edirect_uri=redirectUrl
POST for Access Token1. Get Access Token
2. Get Rest Token
> Refresh Rest Token
/login?version=*&access_token=accessToken
GET Rest Token
Grab Auth Code from the CustomComponent/redirect
Use Auth Code from App Bridge
API Rate Limiting
Rate Limiting
429 - “Too Many Requests”
● You have a bucket of API requests per minute
● Don't throw your request away, just wait 1 second and retry!
● Multiple apps should have multiple keys.
*This is NEW! - if you have an existing app talk to Bullhorn support if you have questions.
Questions?

More Related Content

What's hot

Deep dive into Salesforce Connected App
Deep dive into Salesforce Connected AppDeep dive into Salesforce Connected App
Deep dive into Salesforce Connected App
Dhanik Sahni
 
Interview preparation presentation 2
Interview preparation presentation 2Interview preparation presentation 2
Interview preparation presentation 2
Grace Gilbert A.A.T
 
Who is BIRT
Who is BIRTWho is BIRT
Who is BIRT
Raghavan Mohan
 
Microsoft dynamics ax2012 : forms and tables methods call sequences, How To?
Microsoft dynamics ax2012 : forms and tables methods call sequences, How To?Microsoft dynamics ax2012 : forms and tables methods call sequences, How To?
Microsoft dynamics ax2012 : forms and tables methods call sequences, How To?
Mohamed Amine HAMDAOUI
 
Projektarbeit der Geprüften Berufspädagogen
Projektarbeit der Geprüften BerufspädagogenProjektarbeit der Geprüften Berufspädagogen
Projektarbeit der Geprüften Berufspädagogen
Susanne Plaumann
 
Salesforce implementation guide 2021 here’s everything business owner should ...
Salesforce implementation guide 2021 here’s everything business owner should ...Salesforce implementation guide 2021 here’s everything business owner should ...
Salesforce implementation guide 2021 here’s everything business owner should ...
Katy Slemon
 
The job application process interview
The job application process interviewThe job application process interview
The job application process interview
Salman Vadsarya
 
2b writing good use cases
2b writing good use cases2b writing good use cases
2b writing good use cases
Châu Thanh Chương
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code Games
Mike Clement
 

What's hot (9)

Deep dive into Salesforce Connected App
Deep dive into Salesforce Connected AppDeep dive into Salesforce Connected App
Deep dive into Salesforce Connected App
 
Interview preparation presentation 2
Interview preparation presentation 2Interview preparation presentation 2
Interview preparation presentation 2
 
Who is BIRT
Who is BIRTWho is BIRT
Who is BIRT
 
Microsoft dynamics ax2012 : forms and tables methods call sequences, How To?
Microsoft dynamics ax2012 : forms and tables methods call sequences, How To?Microsoft dynamics ax2012 : forms and tables methods call sequences, How To?
Microsoft dynamics ax2012 : forms and tables methods call sequences, How To?
 
Projektarbeit der Geprüften Berufspädagogen
Projektarbeit der Geprüften BerufspädagogenProjektarbeit der Geprüften Berufspädagogen
Projektarbeit der Geprüften Berufspädagogen
 
Salesforce implementation guide 2021 here’s everything business owner should ...
Salesforce implementation guide 2021 here’s everything business owner should ...Salesforce implementation guide 2021 here’s everything business owner should ...
Salesforce implementation guide 2021 here’s everything business owner should ...
 
The job application process interview
The job application process interviewThe job application process interview
The job application process interview
 
2b writing good use cases
2b writing good use cases2b writing good use cases
2b writing good use cases
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code Games
 

Similar to API Developer Training: Insights for Integrations

What the Heck is OAuth and OIDC - UberConf 2018
What the Heck is OAuth and OIDC - UberConf 2018What the Heck is OAuth and OIDC - UberConf 2018
What the Heck is OAuth and OIDC - UberConf 2018
Matt Raible
 
UC2013 Speed Geeking: Intro to OAuth2
UC2013 Speed Geeking: Intro to OAuth2UC2013 Speed Geeking: Intro to OAuth2
UC2013 Speed Geeking: Intro to OAuth2
Aaron Parecki
 
RefCard RESTful API Design
RefCard RESTful API DesignRefCard RESTful API Design
RefCard RESTful API Design
OCTO Technology
 
What the Heck is OAuth and OIDC - Denver Developer Identity Workshop 2020
What the Heck is OAuth and OIDC - Denver Developer Identity Workshop 2020What the Heck is OAuth and OIDC - Denver Developer Identity Workshop 2020
What the Heck is OAuth and OIDC - Denver Developer Identity Workshop 2020
Matt Raible
 
Api xml technical reference for integration
Api xml technical reference for integrationApi xml technical reference for integration
Api xml technical reference for integration
Halldis
 
AAD B2C custom policies
AAD B2C custom policiesAAD B2C custom policies
AAD B2C custom policies
Rory Braybrook
 
Azure AD B2C Webinar Series: Custom Policies Part 2 Policy Walkthrough
Azure AD B2C Webinar Series: Custom Policies Part 2 Policy WalkthroughAzure AD B2C Webinar Series: Custom Policies Part 2 Policy Walkthrough
Azure AD B2C Webinar Series: Custom Policies Part 2 Policy Walkthrough
Vinu Gunasekaran
 
Integrating OAuth and Social Login Into Wordpress
Integrating OAuth and Social Login Into WordpressIntegrating OAuth and Social Login Into Wordpress
Integrating OAuth and Social Login Into Wordpress
William Tam
 
OAuth and OEmbed
OAuth and OEmbedOAuth and OEmbed
OAuth and OEmbed
leahculver
 
How to build Simple yet powerful API.pptx
How to build Simple yet powerful API.pptxHow to build Simple yet powerful API.pptx
How to build Simple yet powerful API.pptx
Channa Ly
 
Getting Started with FIDO2
Getting Started with FIDO2Getting Started with FIDO2
Getting Started with FIDO2
FIDO Alliance
 
Shibboleth 2.0 SP slides - Installfest
Shibboleth 2.0 SP slides - InstallfestShibboleth 2.0 SP slides - Installfest
Shibboleth 2.0 SP slides - Installfest
JISC.AM
 
SFDC Data Models For Pros - Simplifying The Complexities
SFDC Data Models For Pros - Simplifying The ComplexitiesSFDC Data Models For Pros - Simplifying The Complexities
SFDC Data Models For Pros - Simplifying The Complexities
Baruch Oxman
 
Live Identity Services Drilldown - PDC 2008
Live Identity Services Drilldown - PDC 2008Live Identity Services Drilldown - PDC 2008
Live Identity Services Drilldown - PDC 2008
Jorgen Thelin
 
Frappe ERPNext Open Day February 2014
Frappe ERPNext Open Day February 2014Frappe ERPNext Open Day February 2014
Frappe ERPNext Open Day February 2014
rushabh_mehta
 
Linkedin & OAuth
Linkedin & OAuthLinkedin & OAuth
Linkedin & OAuth
Umang Goyal
 
SharePoint 2010 authentications
SharePoint 2010 authenticationsSharePoint 2010 authentications
SharePoint 2010 authentications
Wyngate Solutions
 
Understanding and testing restful web services
Understanding and testing restful web servicesUnderstanding and testing restful web services
Understanding and testing restful web services
mwinteringham
 
07. feeds update
07. feeds update07. feeds update
07. feeds update
marcwan
 
I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop
I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop
I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop
Apigee | Google Cloud
 

Similar to API Developer Training: Insights for Integrations (20)

What the Heck is OAuth and OIDC - UberConf 2018
What the Heck is OAuth and OIDC - UberConf 2018What the Heck is OAuth and OIDC - UberConf 2018
What the Heck is OAuth and OIDC - UberConf 2018
 
UC2013 Speed Geeking: Intro to OAuth2
UC2013 Speed Geeking: Intro to OAuth2UC2013 Speed Geeking: Intro to OAuth2
UC2013 Speed Geeking: Intro to OAuth2
 
RefCard RESTful API Design
RefCard RESTful API DesignRefCard RESTful API Design
RefCard RESTful API Design
 
What the Heck is OAuth and OIDC - Denver Developer Identity Workshop 2020
What the Heck is OAuth and OIDC - Denver Developer Identity Workshop 2020What the Heck is OAuth and OIDC - Denver Developer Identity Workshop 2020
What the Heck is OAuth and OIDC - Denver Developer Identity Workshop 2020
 
Api xml technical reference for integration
Api xml technical reference for integrationApi xml technical reference for integration
Api xml technical reference for integration
 
AAD B2C custom policies
AAD B2C custom policiesAAD B2C custom policies
AAD B2C custom policies
 
Azure AD B2C Webinar Series: Custom Policies Part 2 Policy Walkthrough
Azure AD B2C Webinar Series: Custom Policies Part 2 Policy WalkthroughAzure AD B2C Webinar Series: Custom Policies Part 2 Policy Walkthrough
Azure AD B2C Webinar Series: Custom Policies Part 2 Policy Walkthrough
 
Integrating OAuth and Social Login Into Wordpress
Integrating OAuth and Social Login Into WordpressIntegrating OAuth and Social Login Into Wordpress
Integrating OAuth and Social Login Into Wordpress
 
OAuth and OEmbed
OAuth and OEmbedOAuth and OEmbed
OAuth and OEmbed
 
How to build Simple yet powerful API.pptx
How to build Simple yet powerful API.pptxHow to build Simple yet powerful API.pptx
How to build Simple yet powerful API.pptx
 
Getting Started with FIDO2
Getting Started with FIDO2Getting Started with FIDO2
Getting Started with FIDO2
 
Shibboleth 2.0 SP slides - Installfest
Shibboleth 2.0 SP slides - InstallfestShibboleth 2.0 SP slides - Installfest
Shibboleth 2.0 SP slides - Installfest
 
SFDC Data Models For Pros - Simplifying The Complexities
SFDC Data Models For Pros - Simplifying The ComplexitiesSFDC Data Models For Pros - Simplifying The Complexities
SFDC Data Models For Pros - Simplifying The Complexities
 
Live Identity Services Drilldown - PDC 2008
Live Identity Services Drilldown - PDC 2008Live Identity Services Drilldown - PDC 2008
Live Identity Services Drilldown - PDC 2008
 
Frappe ERPNext Open Day February 2014
Frappe ERPNext Open Day February 2014Frappe ERPNext Open Day February 2014
Frappe ERPNext Open Day February 2014
 
Linkedin & OAuth
Linkedin & OAuthLinkedin & OAuth
Linkedin & OAuth
 
SharePoint 2010 authentications
SharePoint 2010 authenticationsSharePoint 2010 authentications
SharePoint 2010 authentications
 
Understanding and testing restful web services
Understanding and testing restful web servicesUnderstanding and testing restful web services
Understanding and testing restful web services
 
07. feeds update
07. feeds update07. feeds update
07. feeds update
 
I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop
I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop
I Love APIs 2015: Advanced Crash Course in Apigee Edge Workshop
 

More from JeremyOtt5

Start to Finish: Bullhorn One and its Benefits for Staffing
Start to Finish: Bullhorn One and its Benefits for StaffingStart to Finish: Bullhorn One and its Benefits for Staffing
Start to Finish: Bullhorn One and its Benefits for Staffing
JeremyOtt5
 
Moving to the Lightning Experience: An Action Plan
Moving to the Lightning Experience: An Action PlanMoving to the Lightning Experience: An Action Plan
Moving to the Lightning Experience: An Action Plan
JeremyOtt5
 
The Latest and Greatest: Updates to Bullhorn for Salesforce
The Latest and Greatest: Updates to Bullhorn for SalesforceThe Latest and Greatest: Updates to Bullhorn for Salesforce
The Latest and Greatest: Updates to Bullhorn for Salesforce
JeremyOtt5
 
The Business Case for Social Innovation from Market Leaders
The Business Case for Social Innovation from Market LeadersThe Business Case for Social Innovation from Market Leaders
The Business Case for Social Innovation from Market Leaders
JeremyOtt5
 
Practical Applications of AI: Real World Examples
Practical Applications of AI: Real World ExamplesPractical Applications of AI: Real World Examples
Practical Applications of AI: Real World Examples
JeremyOtt5
 
Onboarding Revisited: Understanding the Latest Release
Onboarding Revisited: Understanding the Latest ReleaseOnboarding Revisited: Understanding the Latest Release
Onboarding Revisited: Understanding the Latest Release
JeremyOtt5
 
Navigating the Changing Staffing Industry Landscape: Threats and Opportunities
Navigating the Changing Staffing Industry Landscape:  Threats and OpportunitiesNavigating the Changing Staffing Industry Landscape:  Threats and Opportunities
Navigating the Changing Staffing Industry Landscape: Threats and Opportunities
JeremyOtt5
 
Make Your Data Work For You
Make Your Data Work For YouMake Your Data Work For You
Make Your Data Work For You
JeremyOtt5
 
Invenias Update: Roadmap and Vision
Invenias Update: Roadmap and VisionInvenias Update: Roadmap and Vision
Invenias Update: Roadmap and Vision
JeremyOtt5
 
Introducing the Bullhorn Onboarding API
Introducing the Bullhorn Onboarding APIIntroducing the Bullhorn Onboarding API
Introducing the Bullhorn Onboarding API
JeremyOtt5
 
How to Get the Best MoBull Experience
How to Get the Best MoBull ExperienceHow to Get the Best MoBull Experience
How to Get the Best MoBull Experience
JeremyOtt5
 
Extending Your Reach with Career Portal and Search Engine Optimization
Extending Your Reach with Career Portal and Search Engine OptimizationExtending Your Reach with Career Portal and Search Engine Optimization
Extending Your Reach with Career Portal and Search Engine Optimization
JeremyOtt5
 
Evolution of the REST API
Evolution of the REST APIEvolution of the REST API
Evolution of the REST API
JeremyOtt5
 
Digital Transformation Through Change Management: Overcoming Fear and Risk
Digital Transformation Through Change Management: Overcoming Fear and RiskDigital Transformation Through Change Management: Overcoming Fear and Risk
Digital Transformation Through Change Management: Overcoming Fear and Risk
JeremyOtt5
 
Beyond Lip Service: Turning Culture into a Business Driver
Beyond Lip Service: Turning Culture into a Business DriverBeyond Lip Service: Turning Culture into a Business Driver
Beyond Lip Service: Turning Culture into a Business Driver
JeremyOtt5
 
Automated Data Synchronization: Data Loader, Data Mirror & Beyond
Automated Data Synchronization: Data Loader, Data Mirror & BeyondAutomated Data Synchronization: Data Loader, Data Mirror & Beyond
Automated Data Synchronization: Data Loader, Data Mirror & Beyond
JeremyOtt5
 

More from JeremyOtt5 (16)

Start to Finish: Bullhorn One and its Benefits for Staffing
Start to Finish: Bullhorn One and its Benefits for StaffingStart to Finish: Bullhorn One and its Benefits for Staffing
Start to Finish: Bullhorn One and its Benefits for Staffing
 
Moving to the Lightning Experience: An Action Plan
Moving to the Lightning Experience: An Action PlanMoving to the Lightning Experience: An Action Plan
Moving to the Lightning Experience: An Action Plan
 
The Latest and Greatest: Updates to Bullhorn for Salesforce
The Latest and Greatest: Updates to Bullhorn for SalesforceThe Latest and Greatest: Updates to Bullhorn for Salesforce
The Latest and Greatest: Updates to Bullhorn for Salesforce
 
The Business Case for Social Innovation from Market Leaders
The Business Case for Social Innovation from Market LeadersThe Business Case for Social Innovation from Market Leaders
The Business Case for Social Innovation from Market Leaders
 
Practical Applications of AI: Real World Examples
Practical Applications of AI: Real World ExamplesPractical Applications of AI: Real World Examples
Practical Applications of AI: Real World Examples
 
Onboarding Revisited: Understanding the Latest Release
Onboarding Revisited: Understanding the Latest ReleaseOnboarding Revisited: Understanding the Latest Release
Onboarding Revisited: Understanding the Latest Release
 
Navigating the Changing Staffing Industry Landscape: Threats and Opportunities
Navigating the Changing Staffing Industry Landscape:  Threats and OpportunitiesNavigating the Changing Staffing Industry Landscape:  Threats and Opportunities
Navigating the Changing Staffing Industry Landscape: Threats and Opportunities
 
Make Your Data Work For You
Make Your Data Work For YouMake Your Data Work For You
Make Your Data Work For You
 
Invenias Update: Roadmap and Vision
Invenias Update: Roadmap and VisionInvenias Update: Roadmap and Vision
Invenias Update: Roadmap and Vision
 
Introducing the Bullhorn Onboarding API
Introducing the Bullhorn Onboarding APIIntroducing the Bullhorn Onboarding API
Introducing the Bullhorn Onboarding API
 
How to Get the Best MoBull Experience
How to Get the Best MoBull ExperienceHow to Get the Best MoBull Experience
How to Get the Best MoBull Experience
 
Extending Your Reach with Career Portal and Search Engine Optimization
Extending Your Reach with Career Portal and Search Engine OptimizationExtending Your Reach with Career Portal and Search Engine Optimization
Extending Your Reach with Career Portal and Search Engine Optimization
 
Evolution of the REST API
Evolution of the REST APIEvolution of the REST API
Evolution of the REST API
 
Digital Transformation Through Change Management: Overcoming Fear and Risk
Digital Transformation Through Change Management: Overcoming Fear and RiskDigital Transformation Through Change Management: Overcoming Fear and Risk
Digital Transformation Through Change Management: Overcoming Fear and Risk
 
Beyond Lip Service: Turning Culture into a Business Driver
Beyond Lip Service: Turning Culture into a Business DriverBeyond Lip Service: Turning Culture into a Business Driver
Beyond Lip Service: Turning Culture into a Business Driver
 
Automated Data Synchronization: Data Loader, Data Mirror & Beyond
Automated Data Synchronization: Data Loader, Data Mirror & BeyondAutomated Data Synchronization: Data Loader, Data Mirror & Beyond
Automated Data Synchronization: Data Loader, Data Mirror & Beyond
 

Recently uploaded

加急制作美国密歇根州立大学毕业证(msu毕业证书)本科文凭原版一模一样
加急制作美国密歇根州立大学毕业证(msu毕业证书)本科文凭原版一模一样加急制作美国密歇根州立大学毕业证(msu毕业证书)本科文凭原版一模一样
加急制作美国密歇根州立大学毕业证(msu毕业证书)本科文凭原版一模一样
mshd9m30
 
What is Stroke and Its Impact in organization.
What is Stroke and Its Impact in organization.What is Stroke and Its Impact in organization.
What is Stroke and Its Impact in organization.
Banker and Adjunct Lecturer
 
Team Building Activities for Introverts.pdf
Team Building Activities for Introverts.pdfTeam Building Activities for Introverts.pdf
Team Building Activities for Introverts.pdf
Confetti
 
学校原版(curtin毕业证书)澳洲科廷科技大学毕业证双学位证书原版一模一样
学校原版(curtin毕业证书)澳洲科廷科技大学毕业证双学位证书原版一模一样学校原版(curtin毕业证书)澳洲科廷科技大学毕业证双学位证书原版一模一样
学校原版(curtin毕业证书)澳洲科廷科技大学毕业证双学位证书原版一模一样
akhxc
 
一比一原版(ncsta毕业证书)美国北卡罗莱纳州立大学毕业证如何办理
一比一原版(ncsta毕业证书)美国北卡罗莱纳州立大学毕业证如何办理一比一原版(ncsta毕业证书)美国北卡罗莱纳州立大学毕业证如何办理
一比一原版(ncsta毕业证书)美国北卡罗莱纳州立大学毕业证如何办理
teksuf
 
Webinar - How to Craft a Winning Compensation Strategy
Webinar - How to Craft a Winning Compensation StrategyWebinar - How to Craft a Winning Compensation Strategy
Webinar - How to Craft a Winning Compensation Strategy
PayScale, Inc.
 
Top 11 HR Trends for 2024 That Will Change Future of Work
Top 11 HR Trends for 2024 That Will Change Future of WorkTop 11 HR Trends for 2024 That Will Change Future of Work
Top 11 HR Trends for 2024 That Will Change Future of Work
Vantage Circle
 
Tobinski_Breeden_Denny.pdfTobinski_Breeden_Denny.pdf
Tobinski_Breeden_Denny.pdfTobinski_Breeden_Denny.pdfTobinski_Breeden_Denny.pdfTobinski_Breeden_Denny.pdf
Tobinski_Breeden_Denny.pdfTobinski_Breeden_Denny.pdf
inforeverwetrust
 
原版制作英属哥伦比亚大学毕业证研究生文凭证书原版一模一样
原版制作英属哥伦比亚大学毕业证研究生文凭证书原版一模一样原版制作英属哥伦比亚大学毕业证研究生文凭证书原版一模一样
原版制作英属哥伦比亚大学毕业证研究生文凭证书原版一模一样
mshd9m30
 
高仿迈阿密大学毕业证(um毕业证)硕士文凭证书原版一模一样
高仿迈阿密大学毕业证(um毕业证)硕士文凭证书原版一模一样高仿迈阿密大学毕业证(um毕业证)硕士文凭证书原版一模一样
高仿迈阿密大学毕业证(um毕业证)硕士文凭证书原版一模一样
mshd9m30
 
HRMantra: AI-Powered HR Automation for the Modern Workplace
HRMantra: AI-Powered HR Automation for the Modern WorkplaceHRMantra: AI-Powered HR Automation for the Modern Workplace
HRMantra: AI-Powered HR Automation for the Modern Workplace
HRMantra Software Pvt. Ltd
 
Why you need to recognize your employees? (15 reasons + tips)
Why you need to recognize your employees? (15 reasons + tips)Why you need to recognize your employees? (15 reasons + tips)
Why you need to recognize your employees? (15 reasons + tips)
Vantage Circle
 
GUIA_LEGAL_CHAPTER_5_LABORAL_REGIMEN.pdf
GUIA_LEGAL_CHAPTER_5_LABORAL_REGIMEN.pdfGUIA_LEGAL_CHAPTER_5_LABORAL_REGIMEN.pdf
GUIA_LEGAL_CHAPTER_5_LABORAL_REGIMEN.pdf
ProexportColombia1
 
Rhavi santosa Portfolio until june 2024 .pptx
Rhavi santosa Portfolio until june 2024 .pptxRhavi santosa Portfolio until june 2024 .pptx
Rhavi santosa Portfolio until june 2024 .pptx
RhaviSantosa
 

Recently uploaded (14)

加急制作美国密歇根州立大学毕业证(msu毕业证书)本科文凭原版一模一样
加急制作美国密歇根州立大学毕业证(msu毕业证书)本科文凭原版一模一样加急制作美国密歇根州立大学毕业证(msu毕业证书)本科文凭原版一模一样
加急制作美国密歇根州立大学毕业证(msu毕业证书)本科文凭原版一模一样
 
What is Stroke and Its Impact in organization.
What is Stroke and Its Impact in organization.What is Stroke and Its Impact in organization.
What is Stroke and Its Impact in organization.
 
Team Building Activities for Introverts.pdf
Team Building Activities for Introverts.pdfTeam Building Activities for Introverts.pdf
Team Building Activities for Introverts.pdf
 
学校原版(curtin毕业证书)澳洲科廷科技大学毕业证双学位证书原版一模一样
学校原版(curtin毕业证书)澳洲科廷科技大学毕业证双学位证书原版一模一样学校原版(curtin毕业证书)澳洲科廷科技大学毕业证双学位证书原版一模一样
学校原版(curtin毕业证书)澳洲科廷科技大学毕业证双学位证书原版一模一样
 
一比一原版(ncsta毕业证书)美国北卡罗莱纳州立大学毕业证如何办理
一比一原版(ncsta毕业证书)美国北卡罗莱纳州立大学毕业证如何办理一比一原版(ncsta毕业证书)美国北卡罗莱纳州立大学毕业证如何办理
一比一原版(ncsta毕业证书)美国北卡罗莱纳州立大学毕业证如何办理
 
Webinar - How to Craft a Winning Compensation Strategy
Webinar - How to Craft a Winning Compensation StrategyWebinar - How to Craft a Winning Compensation Strategy
Webinar - How to Craft a Winning Compensation Strategy
 
Top 11 HR Trends for 2024 That Will Change Future of Work
Top 11 HR Trends for 2024 That Will Change Future of WorkTop 11 HR Trends for 2024 That Will Change Future of Work
Top 11 HR Trends for 2024 That Will Change Future of Work
 
Tobinski_Breeden_Denny.pdfTobinski_Breeden_Denny.pdf
Tobinski_Breeden_Denny.pdfTobinski_Breeden_Denny.pdfTobinski_Breeden_Denny.pdfTobinski_Breeden_Denny.pdf
Tobinski_Breeden_Denny.pdfTobinski_Breeden_Denny.pdf
 
原版制作英属哥伦比亚大学毕业证研究生文凭证书原版一模一样
原版制作英属哥伦比亚大学毕业证研究生文凭证书原版一模一样原版制作英属哥伦比亚大学毕业证研究生文凭证书原版一模一样
原版制作英属哥伦比亚大学毕业证研究生文凭证书原版一模一样
 
高仿迈阿密大学毕业证(um毕业证)硕士文凭证书原版一模一样
高仿迈阿密大学毕业证(um毕业证)硕士文凭证书原版一模一样高仿迈阿密大学毕业证(um毕业证)硕士文凭证书原版一模一样
高仿迈阿密大学毕业证(um毕业证)硕士文凭证书原版一模一样
 
HRMantra: AI-Powered HR Automation for the Modern Workplace
HRMantra: AI-Powered HR Automation for the Modern WorkplaceHRMantra: AI-Powered HR Automation for the Modern Workplace
HRMantra: AI-Powered HR Automation for the Modern Workplace
 
Why you need to recognize your employees? (15 reasons + tips)
Why you need to recognize your employees? (15 reasons + tips)Why you need to recognize your employees? (15 reasons + tips)
Why you need to recognize your employees? (15 reasons + tips)
 
GUIA_LEGAL_CHAPTER_5_LABORAL_REGIMEN.pdf
GUIA_LEGAL_CHAPTER_5_LABORAL_REGIMEN.pdfGUIA_LEGAL_CHAPTER_5_LABORAL_REGIMEN.pdf
GUIA_LEGAL_CHAPTER_5_LABORAL_REGIMEN.pdf
 
Rhavi santosa Portfolio until june 2024 .pptx
Rhavi santosa Portfolio until june 2024 .pptxRhavi santosa Portfolio until june 2024 .pptx
Rhavi santosa Portfolio until june 2024 .pptx
 

API Developer Training: Insights for Integrations

  • 1. API Developer Training: Insights for Integrations Ted Soper ted.soper@bullhorn.com Barry Shevlin barry.shevlin@bullhorn.com Ethan Schroeder ethan.schroeder@bullhorn.com
  • 4. BULLHORN API AUTHENTICATION ● OAUTH 2.0 ● Registration ● Shared key - Best practice ● Individual Key - Per case basis only
  • 5. BULLHORN OAUTH Use username, password redirect URI to get AuthCode Get Auth Code Use Auth Code to get Access Token & Refresh Token Use Access Token to get Rest Token Get Rest Token Use Refresh token to get new Rest Token Refresh Rest Token Send Username to get Oauth URL & Rest URL Get Rest URL Get Access Token
  • 6. BULLHORN OAUTH rest.bullhornstaffing.com/rest- services/loginInfo?username=username Get Rest URL 1. Get Rest URL 2. Get Auth Code 3. Get Access Token 4. Get Rest Token > Refresh Rest Token ● Returns the Rest URL & Auth URL for the Account ● Check for Datacenter API URLS http://bullhorn.github.io/Data-Center-URLs/
  • 7. BULLHORN OAUTH /authorize?client_id=clientId&response_type=code &action=Login&username=username&password=password &redirect_uri=redirectUrl GET Auth Code /token?grant_type=authorization_code&code=authCod e&client_id=clientId&client_secret=clientSecret&r edirect_uri=redirectUrl POST for Access Token 1. Get Rest URL 2. Get Auth Code 3. Get Access Token 4. Get Rest Token > Refresh Rest Token /login?version=*&access_token=accessToken GET Rest Token
  • 8. BULLHORN OAUTH /token?grant_type=refresh_token &refresh_token=refreshToken&client_id=clientId &client_secret=clientSecret Refresh Rest Token 1. Get Rest URL 2. Get Auth Code 3. Get Access Token 4. Get Rest Token > Refresh Rest Token ● Default REST token lasts for 10 minutes ● Get a new REST token with a Refresh request
  • 10. Entity Lookup ● /search ○ Lucene-based search ○ Available for most common entities ○ Faster than Query ● /query ○ JPQL (SQL-like) querying ○ Use when search isn’t available ● /find (FastFind) ○ Searches several entities in one request ○ Useful with user input /search/ClientContact ?query=(clientCorporation.id:123) &fields=name,id,status /query/CorporateUser ?where=(name='Ted Soper’) &fields=id,email /find ?query=monster &countPerEntity=3
  • 11. Entity Pagination /search/...&count=500&start=0 Get first page { data: [500], total: 1700 } Get total from response /search/...&count=500&start=500 Get remaining pages in parallel /search/...&count=500&start=1000 /search/...&count=500&start=1500 ● Count ○ How many objects to return ○ Default: 30 ○ Max: 500 ● Start ○ How many objects to skip ○ Default: 0 1 2 3
  • 12. Efficient Lookups ● Only get the fields you need ● Avoid “fields=*” ● Exception: one-time metadata calls ● Don’t duplicate requests ● Use /search if possible ● If you only need the count, leave off fields/layout /entity/JobOrder/1234/notes ?fields=comments,action Get notes for one entity /search/ClientContact ?query=firstName:Barry Search for list of IDs & count
  • 13. Metadata Lookup ● Full structural data about an entity ● Field constraints ● Reference types ● Custom field definitions ● Job track information /meta/Candidate ?fields=* &meta=basic Lookup before creation /entity/JobOrder/12345 ?layout=RecordEdit &meta=track Add to another request
  • 14. Metadata Example Responses [ { "name": "assignedUsers", "type": "TO_MANY", "label": "Assigned to", "optionsType": "CorporateUser", "optionsUrl": "/options/CorporateUser", "associatedEntity": { "entity": "CorporateUser", "entityMetaUrl": "/meta/CorporateUser", "label": "Corporate User", "fields": [...] } }, {...}, {...} ] Reference Field [ { "name": "customText3", "type": "SCALAR", "dataType": "String", "maxLength": 100, "label": "Primary Department", "options": [ { "value": "Boston MA Dept", "label": "Boston MA Dept" }, { "value" : "Orlando FL Dept", "label" : "Orlando FL Dept" } ] }, {...} ] Custom Field w/ Options
  • 16. Subscriptions for data sync PUT Subscription New Change Events get logged against sub GET Subscription updates GET Subscription updates New Change Events get logged against sub ● Create a Subscription based on data change events ○ Entity create/update ○ Field map change ○ Job match search
  • 17. Subscriptions for data sync ...event/subscription/MySubName?type=entity&names=Candidate &eventTypes=INSERTED,UPDATED,DELETED Example ● Parameters ○ type ○ (entity)names ○ eventTypes
  • 19. Custom Tabs ● Custom Tab ○ Pulls in an iframe application ○ Appbridge user send request from extension to Bullhorn ○ Through appbridge make requests to the bullhorn api
  • 20. BULLHORN OAUTH & Custom Tabs /token?grant_type=authorization_code&code=authCod e&client_id=clientId&client_secret=clientSecret&r edirect_uri=redirectUrl POST for Access Token1. Get Access Token 2. Get Rest Token > Refresh Rest Token /login?version=*&access_token=accessToken GET Rest Token Grab Auth Code from the CustomComponent/redirect Use Auth Code from App Bridge
  • 22. Rate Limiting 429 - “Too Many Requests” ● You have a bucket of API requests per minute ● Don't throw your request away, just wait 1 second and retry! ● Multiple apps should have multiple keys. *This is NEW! - if you have an existing app talk to Bullhorn support if you have questions.

Editor's Notes

  1. Schedule: 00-7: Intro & REST Overview (Ted) 7-40: Code Examples (5-6 mins per) (Ted & Barry) 40-45: QA (Ethan Lead as SME) Intros: Ted Soper: original employee of Fyre, Principle Engineer over many of the Addon & Customer Experience products working with Barry Shevlin: First intern (and only) at Fyre and now Backend Software engineer working on Fyre Sync, Sync Submittals Ethan Schroeder: Enterprise Software Arch at Bullhorn, 5.5yrs Our Time at Fyre Between us we’ve integrated 25 different ATS systems, including BUllhorn and Bullhorn for Force 1 sentence on Fyre and how much integration we have done with bullhorn Ethan has touch every part of the API and core system at bullhorn
  2. @ted Lead Why It is Great Depth of Features Same API Bullhorn Internal Engineering Teams use it for all our addons including Novo is the same API you all have access to Metadata API allows you to make intelligent and thorough solutions The powerful Subscription service allows you to set watchers on all sorts of data in the bullhorn ats Activity logs means users can audit what Application partners update/add to their system Documentation & Resources Open and detailed API Docs Currently 44 Public repositories on github including libraries and examples Support Forum History of thousands of posts with Bullhorn technical staff available to answer API use questions
  3. *Roughly 5 minutes per example
  4. TED Shared key: Each app has one client Key All corps using partner app use the same API key Best practice for integrator Don't share across apps Individual keys per corp More bookkeeping for you & us Able to silo troubled accounts/deployments Shared key Best practice for integrator Don't share across apps Individual Key More bookkeeping for you & us Able to silo troubled accounts/deployments Per case basis only
  5. TED I still see some ATS APIs using basic auth, static auth or even no auth. OAUTH 2 requires a little extra work but bullhorn makes it easy and secure
  6. TED Ted: First thing to do is get the Rest URL and Auth URL that you will use for all other API calls. To do this you send the API User Username to the login Info Endpoint
  7. TED Next up is the core of the process Getting the Auth Code with ClientId, Username, password and the redirect URL of your APP With the AUthcode you’ll send it and the ClientId & Client Secret to get your Access Token Lastly you’ll get a short lived REST Token to actually make you API calls
  8. TED By default the REST Token lasts for 10 minutes, instead of going through steps 2-4 again you can just use your refresh token from step #3 and get a new REST token with 1 call. If all goes right you wont need to do steps 1-4 again.
  9. BARRY The bulk of a lot of integrations with the Bullhorn API will be centered around entity lookup and modification. API is full of so many features, it’s hard to know when to use each one
  10. BARRY Search is best practice most often Query is very limited use case, used for small entities like Skills or candidateEducation Find when you don’t know what entity you want to lookup
  11. BARRY Normally you receive 30 results When querying for a large number of objects, your results might not fit into one response. With count parameter it can be expanded up to 500 in one request (300 for options). For more than 500, pagination is needed Total on first response Subsequent pages can be parallel in groups of 500
  12. BARRY Making efficient Entity requests Talk about performance degradation with * Sends every single field, even custom fields that aren’t used A lot more strain on the network layer Especially important if you’re retrieving a large number of objects Leaving off fields/layout returns a list of IDs and count, and is significantly faster For a single candidate you can populate all associated records lookup Instead of sending fields you can hand in a layout; show exactly the fields that appear in the UI
  13. BARRY One of the most powerful features of the API What Novo uses to determine what to display Field constraints see type of a field, (number, string, date, etc.), as well as valid ranges Can see field specialty, like currencies Reference types - see if a field references another entity URL to retrieve options Custom field definitions Labels, Types, references, etc. Job track information `meta=track` to retrieve metadata for a JobOrder’s job track Retrieve an entity with its metadata attached, see the object as it is in the UI - more or less
  14. BARRY Reference field Field label Url to retrieve options Reference metadata Custom field w/ options Field label Constraints List of all options for scalars
  15. Ted TODO add intro
  16. TED Set watcher lists to collect change events Lets you get entity events, field map change events, and job match search events. //OLD NOTES *Suggested by Sam Emmons - Ted is dumb on this topic. Will work with Barry till we hit a road block. Subscriptions for data sync vs. selecting everything by date range Talk about subscription model and how to use it Talk about how to coordinate with support on initial data seeds / bootstrap operations. Candidate update events - all the updates that came through since your last request. Reget allows you to pull items you already got. Transaction ID will allow you to query edit history
  17. TED Set the Name: Create a unique name to identify the subscription Set the type=entity And names of the typesnames=Candidate And the events you care about&eventTypes=INSERTED,UPDATED,DELETED
  18. Ted TODO add intro
  19. TED Custom Component Redirect When navigating to the custom component in Bullhorn, a call will be made to the CustomComponent/redirectservice. That service will generate the proper endpoint for the custom component. The generated endpoint will include the following: EntityType UserID CorporationID PrivateLabelID EntityID currentBullhornUrl authCode Use the authcode to establish connection http://bullhorn.github.io/REST-Backed-Custom-Components/ Preview panels Custom component - suggested
  20. TED Next up is the core of the process Getting the Auth Code with ClientId, Username, password and the redirect URL of your APP With the AUthcode you’ll send it and the ClientId & Client Secret to get your Access Token Lastly you’ll get a short lived REST Token to actually make you API calls
  21. Ted TODO add intro
  22. Talk up the controls You have a bucket of requests per your licensing model If you are a marketplace partner you have a budget per org Don't throw your request away, just wait 1 second! Multiple apps should have multiple keys.
  23. Put links to resources in this deck at the end