Tutorials
-
Sep 2, 2024

Quickbooks Online API Integration Guide (In-Depth)

1. Introduction to QuickBooks Online

Force behind QuickBooks Online: Intuit

Forbes listed QuickBooks as one of the best accounting software tools in the world. Many

organizations and individual accounting professionals rely on QuickBooks for their accounting

tasks.

At the heart of QuickBooks is Intuit, a company that people recognize for its most popular

product.

What does QuickBooks Online do?

QuickBooks Online is a hero for small businesses. It is a cloud-based accounting software that

manages and keeps track of all your accounting needs, from expenses to income. It organizes

your financial information, provides insights into project profitability reports, and encourages you

to make informed decisions.

QuickBooks is significantly popular for its bookkeeping software but offers more than this. It

is a solution to many financial problems, making it prominent among businesses of all sizes.

QuickBooks Online users are present in diverse industries such as construction and real estate,

education, retail, non-profit, healthcare, hospitality, and many others. 

Professionals in the services industry widely use QuickBooks Online, and it is a popular option

for government contractors to meet the accounting and auditing requirements of DCAA.

Overview of QuickBooks Online API integration

Businesses often use multiple software or tools to fulfill their requirements. QuickBooks Online API integration benefits businesses as it allows proper management of finances and automates tasks such as payroll, invoice, expense tracking, and reporting. You can create custom workflows for your integration and synchronize data among all your platforms—which enhances overall efficiency.

Key features of QuickBooks Online

When it comes to accounting, keeping track of cash flow, debt, payroll, and expenses and

driving real-time insights are crucial for the smooth running of a business. Let’s look at some of

the key features that QuickBooks Online offers to fulfill these requirements  in detail:

  • Expense tracking

It is an unsung hero. QuickBooks expense tracking captures receipts on the go, which makes reporting and reimbursements easy! 

  • Invoice tracking

Companies emphasize tracking their invoices, as it is important for record-keeping, but it is more of a strategic tool for accurate accounting and is crucial for business success. QuickBooks Online can simplify the process of invoices as it creates, sends, and tracks invoices with ease.

  • Bank integration

It is not feasible to keep track of daily business transactions manually. QuickBooks integration with banks allows you to track and categorize transactions.

  • Payroll processing

This feature is developed to smartly manage employee compensation in a unified platform (payroll and accounting in one place), such that it has automated calculations for gross pay, tax deductions, and net pay.

  • Financial reporting

With accurate reporting, you can monitor performance, ensure compliance with regulatory requirements, maintain investor relations, allocate resources, plan long-term, and make informed decisions based on insights. 

Unveiling the Benefits of Unified API Integration With QuickBooks Online API

Businesses all over the world use QuickBooks because it streamlines their accounting processes.

  • Data consistency

Direct integration with the QuickBooks Online API leads to various points of data interaction, which increases the chances of incorrect or uneven data flow. With a Unified API, there is a single source of truth and a single point of data interaction, ensuring consistency. 

  • Build once, scale perpetually

Direct integration with the QuickBooks Online API requires managing various aspects, but with a unified API like Knit, you gain immediate access and synchronization capability for new integrations without writing additional code.

  • Integrated workflows

Integrated workflows are important for maintaining harmony between multiple systems. It reduces human intervention and automates data transfer between systems, eliminating the need for manual data re-entry.

  • Security

Unified APIs like Knit abstract the complexities of data integration, providing a simplistic interface that shields users from the underlying data structure and minimizes potential security hazards.

2. QuickBooks Online API: Authorization and Authentication

Authentication and Authorization are important steps you must ensure before you start your integration. Authentication, in simple terms, is verifying the user's identity, and authorization is verifying if the user has access and permissions to what they are accessing.

QuickBooks Developer Account Creation

First, you need to sign up with Intuit to create a developer account. Once you sign in, you can access the developer portal and tools required to develop your app.

Authenticate Using OAuth 2.0

Authentication and Authorization using OAuth 2.0 is a standard industry protocol. OAuth 2.0 allows users to log into their QuickBooks account via the OAuth 2.0 flow.

  • Create your app on the developer portal

Once you log in to your Intuit developer account, create an app and select the QuickBooks Online Accounting scope. This app will provide the credentials you’ll need for authorization requests. 

  • How does OAuth 2.0 authorize your application

Once the user grants permission, Intuit sends the user back to the application with an authorization code. Check out the OAuth Playground to preview each step.

  • OpenID Connect (OIDC)

OpenID Connect is an identity layer that provides an extra layer of protection for your app, giving user information such as name and email address. It is an optional step, but we recommend it for extra security.

     Set Up Authentication With Intuit Single Sign-On

Setting up authentication with Intuit single sign-on is an alternative way to handle the UI for authorization to simplify the user signing-in experience. You need to implement the following steps:

  • Set up OpenID Connect
  • Design your app’s sign-in experience
  • Add multiple company connections

3. Understanding QuickBooks Online API Data Model

It is important to understand the data models of the API we are going to integrate, as they are the backbone of accurate integration.

What Are Data Models, and Why Are They Important?

Data models are abstract representations of data structures. Data models show you the format for storing and retrieving data from the database. Understanding the structure of data before API integration is crucial for several reasons: 

  • Data integrity and consistency

The data model encapsulates business rules and logic, ensuring that data exchange follows these rules and logic.

  • Better API design

The API endpoint structure and parameter definitions (data types, optional or required) become clear with data models.

Key Components of QuickBooks Online API Data Model

Key components of a data model include entities, attributes, relationships, and constraints. QuickBooks has many entities; some of the most commonly used are:

  • Accounts

Businesses use accounts to track transactions of income and expenses. It also includes assets and liabilities. Accountants often call accounts "ledgers". 

Attributes: AcctNum, SubAccount, AccountType, and many more.

  • Bills

It is an Accounts Payable (AP) transaction that represents a request for payment from a third party for goods or services they render, receive, or both.

Attributes: VendorRef, TotalAmt, Balance, and more.

  • Customer

Customers are the consumers of services or products offered by businesses. QuickBooks includes parent and sub-customer entities for simple and detailed classification.

Attributes: DisplayName, GivenName, PrimaryEmailAddr, etc.

  • Payment

It records the payment for customers against single or multiple invoices and credit memos in QuickBooks. It can be a full update or a sparse update.

Attributes: TotalAmt, PaymentMethodRef, Unapplied Amt, and more.

  • Vendor

It is a seller from whom the company purchases any service or product. QuickBooks applies certain business rules to this entity.

Attributes: DisplayName, GivenName, PrimaryEmailAddr, etc.

  • Invoice

An invoice represents a sales form where customers pay for a product or service. QuickBooks applies specific business rules to this entity in QuickBooks.

Attributes: DocNumber, BillEmail, TrackingNum, etc.

  • ProfitAndLoss

The Profit and Loss Summary report from the QuickBooks Online Report Service provides information regarding profit and loss through the object named ProfitAndLoss.

Attributes: Customer, item, vendor, and more.

4. Integrating QuickBooks Online With Knit’s API: Introduction and Data  Mapping

There are various benefits of API integration with a Unified API. Let’s look into one such Unified

API that is ruling the market.

Introduction to Knit’s API

Knit covers all your integration needs in one API. It is rated number one for ease of integration. QuickBooks API integration with a Unified API bridges gaps between multiple platforms and enables synchronized data flow. Knit helps you build your QuickBooks integration 10X faster using the Unified Accounting API.

Map QuickBooks Objects and Fields to Knit’s API

To correctly implement the integration, you should have an understanding of QuickBooks Objects and their corresponding Knit Objects. Get an overview with the below examples:

Examples of Common Object Mappings

Common Object Mappings in Quickbooks API

5. Building Custom Workflows With the QuickBooks Online API

QuickBooks offers both pre-built and custom workflows that automate repetitive tasks related to accounting requirements.

QuickBooks Workflows: Pre-Built vs. Custom

Pre-Built vs Custom Workflows in Quickbooks API

Create Custom Workflows (Step-by-Step)

Pre-built workflows automate common business needs, while users design custom workflows to

fulfill conditions and logic specific to their business needs.

  • Create and update records: When a sales order is approved, we construct a workflow to create a customer invoice. To create a record for this, you need to set a trigger and apply a condition (criteria for the workflow to activate) as per the condition once it's triggered. You then perform a pre-defined action set in the workflow.
  •  Send reminders and push notifications with QuickBooks
    • You can create tasks with QuickBooks to alert users (Set Reminders for deadlines) and
    • use specific features to deliver real-time notifications with the help of Custom Workflows.

6. QuickBooks Online API Integration Case Studies

The QuickBooks Online API offers effective financial management and automation in several time-consuming, repetitive tasks, giving you more time to focus on what matters.

How Businesses Utilize the QuickBooks Online API

As companies grow, managing data becomes harder, leading to human errors and data inaccuracies. These inaccuracies can result in misleading insights that might cause problems for businesses. Companies use the QuickBooks API to solve these issues at their core. Integrating with a Unified API simplifies the process, as you only need to manage one API integration, saving you time.

Use the API To Streamline Invoicing and Payments

Managing invoices and payments is essential for smooth accounting in any business. Creating invoices quickly leads to faster payments from customers, and offering flexible payment options improves customer relations and cash flow, enhancing the overall financial health of the business.

Automate Data Flow Using QuickBooks Online API

QuickBooks Online API understands your business needs and ensures real-time data synchronization across all your systems. For example:   

  • Inventory management

Sync inventory levels between QuickBooks and warehouse management systems.   

  • Expense tracking

Automatically import expense data from corporate cards or receipt capture apps.

  • Financial reporting

Generate custom reports and visualizations based on QuickBooks data.

  • Payroll integration

Seamlessly integrate payroll data with QuickBooks for accurate calculations and tax filings.

7. Implementation Steps for QuickBooks Online API Integration

For the Implementation steps, we will implement the Accounting API use case.

Getting Started: QuickBooks Accounting API Integration (use case)

QuickBooks Online Accounting API offers various features such as create, send, read invoices in user’s QuickBooks online companies. 

  1. Design and analyze workflows

The first step is to outline integration goals, identify specific QuickBooks data, actions, endpoints and map workflows (visualize how data will flow between your application and QuickBooks).

  1. Data identificationsome text
    • Determine the required data: For creating an invoice, include Customer, Product, and Invoice.
    • Define data fields: For a Customer entity, you might need CustomerId, DisplayName, PrimaryEmail, and BillAddr.
    • Data mapping: Transform data between systems. For instance, a 'ProductCode' in your system might map to the 'Sku' field in QuickBooks.
  2. Construct your API requests

The core components of API requests include:

  • Endpoint: The specific URL path where the request is sent.
  • HTTP Method: The action to be performed (GET, POST, PUT, DELETE).
  • Headers: Metadata about the request, such as content type, authorization, and API version.
  • Request Body: Data sent to the server, typically in JSON or XML format.

Learn more about body parameters, rules or conditions, request and response body

for Customers and Invoices.

  1. Authorization and headers:some text
    • Obtain credentials: Acquire the necessary client ID, client secret, and access token.
    • Implement authentication: Use OAuth 2.0 for secure authorization.
    • Set request headers: Include authentication headers in your API requests.
  2. Send requests and handle responses:some text
    • Make API calls: Send constructed requests to the QuickBooks API endpoints.
    • Parse responses: Extract required data from API responses.
  3. CRUD for invoices and customers:some text
    • [POST] Invoices: Generate new invoices with relevant details.
    • [READ] Invoices: Retrieve existing invoice information.
    • [DELETE] Invoices: Remove unnecessary invoices.
    • Query Invoices: Retrieving with searching and filtering of multiple invoices.
    • Fully [UPDATE] Invoices: Modify invoice data as needed
    • Sparse [UPDATE] Invoices: Modify a subset of invoice data as needed.
    • Void Invoices: Cancels a previously created invoice. This action is typically taken when an invoice was created in error or needs to be corrected.
    • [POST] Customers: Add new customers to QuickBooks.
    • [READ] Customers: Access specific customer information.
    • Query Customers: Retrieving with searching and filtering of multiple customers.
    • Fully [UPDATE] Customers: Modify customer details.
    • Sparse [UPDATE] Customers: Modify a subset of customer details.
  4. Test your integration:

You can test your integration in different testing environments which QuickBooks support. 

8. QuickBooks Online API Webhooks: Event-Driven Integrations

Webhooks are a cost-efficient way to reduce constant API calls, as they provide real-time information (in the form of notifications) when your event occurs.

Understand How Webhooks Drive Event-Based Integrations

Webhooks can automatically notify you whenever data changes in your end-users QuickBooks

Online company files. Webhooks allow QuickBooks to proactively send notifications when the event occurs. 

Webhook Applications (Examples)

  • Invoice processing

Once an invoice is created, webhook sends a notification with details of the invoice, which in turn triggers the invoice processing workflow.

  • Payment reminders

Get payment reminders when invoice status becomes overdue.

9. Bulk Data Operations With the QuickBooks Online API

Benefits of Bulk Data Operations

Processing large datasets efficiently is crucial for many applications. QuickBooks API offers features to handle bulk operations, providing several advantages:

  • Improved performance

Reduces API call overhead by processing multiple records in a single request.

  • Enhanced efficiency

Streamlines data transfer and processing.

  • Cost savings

Optimizes API usage and potentially reduces costs.

Perform Bulk Data Operations 

With growing business, it’s essential to work with smart tools that save you time. Batch processing is one such tool that QuickBooks Online Advanced offers. 

  • Batch invoicing

You can generate multiple invoices from a single-entry input.

  • Batch expenses

You can create an expense once and duplicate it while changing some of the underlying details, like vendor or amount.

  • Batch checks

You can create templates for those you write often. It gives you more control over the company’s check writing.

  • Pagination of large datasets

When dealing with extensive data, pagination is essential. QuickBooks API provides mechanisms to retrieve data in manageable chunks. Use pagination to fetch data in pages, allowing you to process it incrementally without overwhelming your application.

Efficiently Managing Large Datasets

  • Data chunking

To optimize performance, divide large datasets into smaller, manageable chunks. Process these chunks sequentially, avoiding overwhelming the API or your application.

  • Optimizing API calls

You can minimize requests by planning to make API calls to fetch only necessary data and utilize filters to refine your data requests.

10. Handling QuickBooks Online API Rate Limits and Errors

Performance is key for any successful API integration. To control the load on the system and ensure great performance, rate limits are applied to APIs.

QuickBooks Online API Rate Limits Explained

QuickBooks applies rate limits to restrict the number of requests in a specified timeframe. If you exceed these limits, your application requests may be temporarily blocked due to throttling.

Best Practices for Error Handling and Retries

Effective error handling significantly improves your API integration. Here are some best practices:

  • Rate limits

QuickBooks Online API imposes rate limits, so you need to adjust your application's request frequency accordingly.

  • Handle error codes

Understand your error codes and look for them in QuickBooks-defined Error Codes.

  • Batch requests

To optimize API usage and reduce the number of API calls, group multiple requests into a single batch.

  • Asynchronous processing

Offload time-consuming tasks to background jobs or queues to avoid blocking the main application thread.

11. QuickBooks Online API Security Best Practices

Once you complete your QuickBooks API integration, you must actively secure the financial data and integration.

Secure Your Data (Mitigating Vulnerabilities)

To secure your data, make sure to use data encryption methods to encrypt data both at rest and in transit. Enhance security by adding proper input validation to prevent incorrect data from being entered into your database.

Manage Your Credentials (Cookies and Tokens)

Unauthorized access due to poorly managed credentials poses a threat to your application and integration. To ensure that your users are authorized, implement regular token rotation, avoid hard-coding credentials, and utilize multifactor authentication.

Perform Security Scans and Audits

Conduct vulnerability scans, simulate attacks with penetration testing, and perform regular security audits.

References for Verification

1. Security Requirements for QuickBooks API Integration

2. QuickBooks Online Accounting API 

3. Creating a Custom Workflow 

4. QuickBooks API Data Model

5. QuickBooks Account

6. Schema & Data formats for QuickBooks

7. Use Cases

8. All about Webhooks

9. Implement Intuit Single Sign-On

10. OAuth 2.0

11. QuickBooks Integration Basics

12. Basics of QuickBooks

13. Overview of QuickBooks API integration

14. QuickBooks API Data models

15. Batch Processing

16. Accounting Processes with QuickBooks

17. Benefits of QuickBooks

18. Features

19. Features of Quickbooks 

20. QuickBook Developer Doc

21. Quickbooks Payment 

22. More about features and benefits

Tutorials
-
Sep 2, 2024

Workday API Integration Guide (In-Depth)

Workday unlocks a powerful HR ecosystem, but integrating it with your existing tools can be complex. endeavor. This guide empowers developers to navigate those challenges and unlock the full potential of Workday integrations.

Benefits of Workday API Integration: 

  • Streamlined Workflows: Automate data exchange, saving HR professionals valuable time and boosting efficiency.
  • Real-Time Business Insights: Gain access to a unified view of your data, enabling data-driven decisions for business leaders.
  • Scalability and Flexibility: Integrate new applications as your needs evolve, ensuring your systems grow with your organization.

While this guide equips developers with the skills to build robust Workday integrations through clear explanations and practical examples, the benefits extend beyond the development team. You can also expand your HRIS integrations with the Workday API integration and automate tedious tasks like data entry, freeing up valuable time to focus on other important work. Business leaders gain access to real-time insights across their entire organization, empowering them to make data-driven decisions that drive growth and profitability. This guide empowers developers to build integrations that streamline HR workflows, unlock real-time data for leaders, and ultimately unlock Workday's full potential for your organization.

Overview of Workday

Ever wondered why Gartner named Workday  Leader for Cloud ERP for Service-Centric Enterprise and why top companies use it. Workday is a cloud-based enterprise management platform designed to simplify workforce management. From HR to Payroll to finance and analytics processes, all in one integrated system. Workday Integration API streamlines data exchange, enabling seamless integration between Workday and external systems.

Importance of Integrating with Workday

  1. Streamlined Processes: Manual data entry is a persistent challenge, but it can be very well tackled by Workday. It automates workflows, minimizes errors, and reduces manual data entry.
  2. Real-Time Data Sync: Real-time synchronization of data via integration helps improve decision-making.
  3. Enhanced Analytics and Reporting: Deeper insights into business performance is the heart of growth for an organization, which Workday can easily help you with.
  4. Scalability and Flexibility: Workday can scale with your needs, which allows easy addition of new features as per our requirements. 

Prerequisites

The most basic requirement is to authenticate your Workday account. Proper authentication ensures secure and reliable access to Workday's APIs. 

To ensure a secure and reliable connection with Workday's APIs, this section outlines the essential prerequisites. These steps will lay the groundwork for a successful integration, enabling seamless data exchange and unlocking the full potential of Workday within your existing technological infrastructure.

  1. Workday Tenant Setup: Workday tenant (it is an instance of the Workday software) and its credentials such as name, username and password.
  2. API Access Configuration: Once the Workday tenant is set up, you will need to enable API access in it. It includes configuring API clients in workday system, appropriate security roles need to be assigned and also generating API Keys or tokens is necessary.
  3. OAuth 2.0 Authentication: Secured authentication is always necessary, therefore, Workday supports OAuth 2.0. You will just need to register your application in the Workday system to obtain client ID and client secret. Then just use these credentials to request access tokens, which are required for making API calls.

Preliminary Setup

Integrating with Workday requires a solid initial setup to ensure an easygoing process. Here are the steps:-

Setting Up a Developer Account with Workday

  1. Unlock Your Workday Resources: Sign up for a Worday developer account.
  2. Secure Your API Calls: Obtain API credentials (client ID & secret) to authenticate your application. Think of them as a secure handshake for API access.
  3. Define Granular Permissions: Create an Integration System User (ISU) within Workday Security. Assign this user the minimum permissions required to interact with the APIs your integration needs. This keeps things secure and avoids unauthorized access.
  4. Detailed Setup Steps: Refer to the "Implementation Guidelines" section for configuration instructions.

Overview of Workday API Documentation

1. API Types: Workday offers REST and SOAP APIs, which serve different purposes. REST APIs are commonly used for web-based integrations, while SOAP APIs are often utilized for complex transactions.

2. Endpoint Structure: You must familiarize yourself with the Workday API structure as each endpoint corresponds to a specific function. A common workday API example would be retrieving employee data or updating payroll information. You can find a comprehensive listing of the Workday API endpoints and directory here.

3. API Documentation: Workday API documentation provides a comprehensive overview of both REST and SOAP APIs. 

  • Workday REST API: The REST API allows developers to interact with Workday's services using standard HTTP methods. It is well-documented and provides a straightforward way to integrate with Workday.

  • Workday REST API Documentation: Workday's REST API documentation provides detailed information on using the API, including endpoints, parameters, and response formats. It is a valuable resource for developers looking to integrate with Workday.

  • Workday SOAP API Documentation: Workday's SOAP API documentation provides information on how to use the SOAP API for more complex transactions. SOAP APIs are often used for integrations that require a higher level of security and reliability.

  • Workday SOAP API Example: An example of using Workday's SOAP API could be retrieving employee information from Workday's HR system to update a payroll system. This example demonstrates the use of SOAP APIs for complex transactions.

 

Accessing Workday Sandbox

  1. Safe Testing: A sandbox creates a secure testing environment to avoid risks in production.
  2. Mimics Production: Configure the sandbox to mirror your real Workday environment with test data.
  3. Validates Integration: Test your integration's functionality within the sandbox, ensuring data exchange works as expected.
  4. Early Issue Detection: Identify and resolve any problems with your integration before impacting real data.
  5. Detailed Setup Steps: Refer to the "Setting Up and Using a Workday Sandbox" section for configuration instructions.

Important Terminology 

Understanding key terms is essential for effective integration with Workday. Let’s look upon few of them, that will be frequently used ahead - 

Workday Tenant: Imagine your Workday tenant as your company’s own secure vault within the workday system. It’s a self-contained environment, and it will contain all your company’s data and configuration. Companies typically have separate tenants for development, testing, and production.

Integration System User (ISU): An ISU is a user account in Workday specifically designed for integrations to access and manipulate data. Setting up an ISU involves creating the user, assigning security roles, and generating API credentials.

For more detailed information, you can refer to the official Workday documentation:

- Workday Tenant Overview

- Setting Up an ISU

Authentication and Authorization

Secure access in Workday integrations plays a crucial role in protecting sensitive employee and financial data. It ensures compliance with regulations and prevents unauthorized changes that could disrupt business functions. 

By implementing strong security measures, you safeguard data, adhere to legal standards, and maintain business stability.

To achieve this, follow these essential steps for your Workday integration: 

  1. Prep Your Workday Base: Ensure access to your Workday tenant, your company’s secured data zone.
  2. ISU : Create an ISU with specific permissions to access Workday APIs.
  3. Authentication : Use Workday’s built-in OAuth 2.0 to exchange credentials for an access token (your temporary pass) and get our ISU Username and Password.
  4. Test Playground (Sandbox): Develop and test your integration in the safe sandbox environment.
  5. Deployment (Production): Once tested, deploy to the production environment for real-world use.

Authentication Lingo:

Workday offers different authentication methods. Here, we'll focus on OAuth 2.0, a secure way for applications to gain access through an ISU (Integrated System User).  An ISU acts like a dedicated user account for your integration, eliminating the need to share individual user credentials.

Security Best Practices:

  1. Store Secrets Safely: Keep sensitive info like client secrets in environment variables, not in your code.
  2. Encryption is Key: Encrypting credentials for added protection is a must for integration.
  3. Rotate Regularly: Keep changing credentials periodically to reduce risk.
  4. Least Privilege: Assign the ISU only the minimum permissions needed.

SOAP vs. REST: Picking the Right Workday API for the Job

Choosing between SOAP and REST for your Workday integration can feel incredibly challenging. Let's break it down to help you decide:

The Structured Side: SOAP

  1. Security First: SOAP's rigid rules guarantee iron-clad reliability and top-notch security. Perfect for handling sensitive stuff like payroll.
  2. Extensible Powerhouse: Need extra security layers? SOAP's got your back with WS-Security. 
  3. Precise Communication: WSDL acts like a detailed contract, ensuring your app and Workday are always on the same page.

Working with SOAP:

  1. Grab the WSDL: This file is your roadmap to Workday's SOAP services, telling you everything available. You can find the WSDL documentation on the Workday community site.
  2. Craft Your Requests: Tools like SOAP UI let you send requests with authentication and data, following the WSDL specs.

The Flexible Friend: REST

  1. Simplicity is King: REST keeps things easy with standard HTTP verbs (GET, POST, PUT, DELETE) you already know and love.
  2. Stateless Speed: No need to sweat past requests – each one has everything the server needs. Plus, REST is generally faster due to its lightweight design.
  3. JSON Advantage: Responses are typically in JSON, a human-readable format that your application can easily understand.

Working with REST:

  1. Talk HTTP: Use familiar HTTP methods to interact with Workday's resources.
  2. Hit the Endpoints: Access Workday's REST endpoints directly using their URLs. You can find the REST API documentation for your specific Workday version on the Workday community site.  Tools like Postman are great for testing requests.

Pick what you need : 

  1. Performance Matters: SOAP's complex structure can lead to slower speeds. For web applications, REST's lightweight design is a clear winner.
  2. Use Cases in Mind: High-security transactions and complex operations like payroll are a perfect fit for SOAP. For web apps and simple data access, REST is the way to go.

Use Cases:

  • SOAP: Best for scenarios requiring high security, transactional reliability, and complex operations (e.g., financial transactions, payroll).
  • REST: Ideal for web and mobile applications, simpler integrations, and scenarios needing quick, lightweight data access.

When you need a feature-rich environment that empowers developers for complex tasks, SOAP is the ideal choice (and the one I opted for in this guide).

Performing Basic Operations with Workday APIs

Let's proceed to utilize Workday HCM APIs effectively. We'll walk through creating a new employee and fetching a list of all employees – essential building blocks for your integration.

Constructing a SOAP Request Body

SOAP requests follow a specific format and use XML to structure the data. Here's an example of a SOAP request body to fetch employees using the Get Workers endpoint:

```xml

<soapenv:Envelope

xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:bsvc="urn:com.workday/bsvc">

    <soapenv:Header>

        <wsse:Security>

            <wsse:UsernameToken>

                <wsse:Username>{ISU USERNAME}</wsse:Username>

                <wsse:Password>{ISU PASSWORD}</wsse:Password>

            </wsse:UsernameToken>

        </wsse:Security>

    </soapenv:Header>

    <soapenv:Body>

        <bsvc:Get_Workers_Request xmlns:bsvc="urn:com.workday/bsvc" bsvc:version="v40.1">

        </bsvc:Get_Workers_Request>

    </soapenv:Body>

</soapenv:Envelope>

SOAP requests use XML to structure data. They have a main envelope containing a header and a body. The header includes authentication details, while the body specifies the function being called (e.g., Get Workers) and any parameters it needs.

Creating a New Employee: Hire Employee API

Let's add a new team member. For this we will use the Hire Employee API! It lets you send employee details like name, job title, and salary to Workday. Here's a breakdown:

  1. What it Does: Adds a new employee to your Workday system.
  2. What it Needs: Employee details like name, job information.

Let's Code (cURL Example):

curl --location 'https://wd2-impl-services1.workday.com/ccx/service/{TENANT}/Staffing/v42.0' \

--header 'Content-Type: application/xml' \

--data-raw '<soapenv:Envelope xmlns:bsvc="urn:com.workday/bsvc" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

    <soapenv:Header>

        <wsse:Security>

            <wsse:UsernameToken>

                <wsse:Username>{ISU_USERNAME}</wsse:Username>

                <wsse:Password>{ISU_PASSWORD}</wsse:Password>

            </wsse:UsernameToken>

        </wsse:Security>

        <bsvc:Workday_Common_Header>

            <bsvc:Include_Reference_Descriptors_In_Response>true</bsvc:Include_Reference_Descriptors_In_Response>

        </bsvc:Workday_Common_Header>

    </soapenv:Header>

    <soapenv:Body>

        <bsvc:Hire_Employee_Request bsvc:version="v42.0">

            <bsvc:Business_Process_Parameters>

                <bsvc:Auto_Complete>true</bsvc:Auto_Complete>

                <bsvc:Run_Now>true</bsvc:Run_Now>

            </bsvc:Business_Process_Parameters>

            <bsvc:Hire_Employee_Data>

                <bsvc:Applicant_Data>

                    <bsvc:Personal_Data>

                        <bsvc:Name_Data>

                            <bsvc:Legal_Name_Data>

                                <bsvc:Name_Detail_Data>

                                    <bsvc:Country_Reference>

                                        <bsvc:ID bsvc:type="ISO_3166-1_Alpha-3_Code">USA</bsvc:ID>

                                    </bsvc:Country_Reference>

                                    <bsvc:First_Name>Employee</bsvc:First_Name>

                                    <bsvc:Last_Name>New</bsvc:Last_Name>

                                </bsvc:Name_Detail_Data>

                            </bsvc:Legal_Name_Data>

                        </bsvc:Name_Data>

                        <bsvc:Contact_Data>

                            <bsvc:Email_Address_Data bsvc:Delete="false" bsvc:Do_Not_Replace_All="true">

                                <bsvc:Email_Address>employee@work.com</bsvc:Email_Address>

                                <bsvc:Usage_Data bsvc:Public="true">

                                    <bsvc:Type_Data bsvc:Primary="true">

                                        <bsvc:Type_Reference>

                                            <bsvc:ID bsvc:type="Communication_Usage_Type_ID">WORK</bsvc:ID>

                                        </bsvc:Type_Reference>

                                    </bsvc:Type_Data>

                                </bsvc:Usage_Data>

                            </bsvc:Email_Address_Data>

                        </bsvc:Contact_Data>

                    </bsvc:Personal_Data>

                </bsvc:Applicant_Data>

                <bsvc:Position_Reference>

                    <bsvc:ID bsvc:type="Position_ID">P-SDE</bsvc:ID>

                </bsvc:Position_Reference>

                <bsvc:Hire_Date>2024-04-27Z</bsvc:Hire_Date>

            </bsvc:Hire_Employee_Data>

        </bsvc:Hire_Employee_Request>

    </soapenv:Body>

</soapenv:Envelope>'

Elaboration:

1. We use `curl` to send a POST request (because we're creating something new).

2. The URL points to the specific Workday endpoint for hiring employees.We include our tenant name in the URL to point the API to our corresponding tenant.

3. We include the ISU Username and Password in the <wsse:Security> header in the SOAP envelope to authenticate our API call

4. The `Content-Type` header specifies we're sending xml data.

5. The actual employee data goes in the request body, including details like first name, position, work email.

Response:

<bsvc:Hire_Employee_Event_Response

xmlns:bsvc="urn:com.workday/bsvc" bsvc:version="string">

<bsvc:Employee_Reference bsvc:Descriptor="string">

<bsvc:ID bsvc:type="ID">EMP123</bsvc:ID>

</bsvc:Employee_Reference>

</bsvc:Hire_Employee_Event_Response>

If everything goes well, you'll get a success message and the ID of the newly created employee!

Fetching All Employees: Get Workers API

Now, if you want to grab a list of all your existing employees. The Get Workers API is your friend!

  1. What it Does: Retrieves a list of all employees in your Workday system.
  2. What it Needs: Your ISU username and password
  3. Where it's Used: The Workday Get Workers API is part of the Workday Developer API suite, which allows developers to interact with Workday's Human Capital Management (HCM) system programmatically. These APIs are commonly used for integrating Workday data and functionality into other applications and systems.

Below is workday API get workers example: 

Let's Code (cURL Example):

curl --location 'https://wd2-impl-services1.workday.com/ccx/service/{TENANT}/Human_Resources/v40.1' \

--header 'Content-Type: application/xml' \

--data '<soapenv:Envelope

xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:bsvc="urn:com.workday/bsvc">

    <soapenv:Header>

        <wsse:Security>

            <wsse:UsernameToken>

                <wsse:Username>{ISU_USERNAME}</wsse:Username>

                <wsse:Password>{ISU_USERNAME}</wsse:Password>

            </wsse:UsernameToken>

        </wsse:Security>

    </soapenv:Header>

    <soapenv:Body>

        <bsvc:Get_Workers_Request xmlns:bsvc="urn:com.workday/bsvc" bsvc:version="v40.1">

            <bsvc:Response_Filter>

                <bsvc:Count>10</bsvc:Count>

                <bsvc:Page>1</bsvc:Page>

            </bsvc:Response_Filter>

            <bsvc:Response_Group>

                <bsvc:Include_Reference>true</bsvc:Include_Reference>

                <bsvc:Include_Personal_Information>true</bsvc:Include_Personal_Information>

            </bsvc:Response_Group>

        </bsvc:Get_Workers_Request>

    </soapenv:Body>

</soapenv:Envelope>'

This is a simple GET request to the Get Workers endpoint. 

Elaboration:

1. The URL points to the specific Workday endpoint for retrieving employees.We include our tenant name in the URL to point the API to our corresponding tenant.

2. We include the ISU Username and Password in the <wsse:Security> header in the SOAP envelope to authenticate our API call

3. The `Content-Type` header specifies we're sending xml data.

4. We include the Count and Page Number parameters in the request to paginate the results. This technique can be used to optimize the results so that we process a batch of data at once. 

Response:

<?xml version='1.0' encoding='UTF-8'?>

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">

    <env:Body>

        <wd:Get_Workers_Response xmlns:wd="urn:com.workday/bsvc" wd:version="v40.1">

            <wd:Response_Filter>

                <wd:Page>1</wd:Page>

                <wd:Count>1</wd:Count>

            </wd:Response_Filter>

            <wd:Response_Data>

                <wd:Worker>

                    <wd:Worker_Data>

                        <wd:Worker_ID>21001</wd:Worker_ID>

                        <wd:User_ID>lmcneil</wd:User_ID>

                        <wd:Personal_Data>

                            <wd:Name_Data>

                                <wd:Legal_Name_Data>

                                    <wd:Name_Detail_Data wd:Formatted_Name="Logan McNeil" wd:Reporting_Name="McNeil, Logan">

                                        <wd:Country_Reference>

                                            <wd:ID wd:type="WID">bc33aa3152ec42d4995f4791a106ed09</wd:ID>

                                            <wd:ID wd:type="ISO_3166-1_Alpha-2_Code">US</wd:ID>

                                            <wd:ID wd:type="ISO_3166-1_Alpha-3_Code">USA</wd:ID>

                                            <wd:ID wd:type="ISO_3166-1_Numeric-3_Code">840</wd:ID>

                                        </wd:Country_Reference>

                                        <wd:First_Name>Logan</wd:First_Name>

                                        <wd:Last_Name>McNeil</wd:Last_Name>

                                    </wd:Name_Detail_Data>

                                </wd:Legal_Name_Data>

                            </wd:Name_Data>

                            <wd:Contact_Data>

                                <wd:Address_Data wd:Effective_Date="2008-03-25" wd:Address_Format_Type="Basic" wd:Formatted_Address="42 Laurel Street&amp;#xa;San Francisco, CA 94118&amp;#xa;United States of America" wd:Defaulted_Business_Site_Address="0">

                                </wd:Address_Data>

                                <wd:Phone_Data wd:Area_Code="415" wd:Phone_Number_Without_Area_Code="441-7842" wd:E164_Formatted_Phone="+14154417842" wd:Workday_Traditional_Formatted_Phone="+1 (415) 441-7842" wd:National_Formatted_Phone="(415) 441-7842" wd:International_Formatted_Phone="+1 415-441-7842" wd:Tenant_Formatted_Phone="+1 (415) 441-7842">

                                </wd:Phone_Data>

                    </wd:Worker_Data>

                </wd:Worker>

            </wd:Response_Data>

        </wd:Get_Workers_Response>

    </env:Body>

</env:Envelope>

This JSON array gives you details of all your employees including details like the name, email, phone number and more.

Setting Up and Using a Workday Sandbox

To avoid risking any glitches in production, isn’t it amazing to first test our code on test data?  A sandbox is your safe zone to test your code before takeoff. As we already had a summarized view of the importance of using sandbox in our preliminary steps, let’s move to detailed steps to execute these steps.

 

  1. Request Your Sandbox:  Talk to your Workday admin and request a sandbox environment (specify the type you need).
  2. Prep Your Sandbox: Log in and configure your sandbox to mimic your production environment (company data, user roles).
  3. Create an ISU: In Security, create a special user (ISU) for your integration testing. Assign it the necessary permissions.
  4. Secure Your Calls: Register your application in the sandbox to get unique credentials (client ID & secret) for secure API calls.
  5. Test : Use tools like Postman to bombard your integration with test requests within the sandbox. Iron out any wrinkles before going live.
  6. Monitor & Debug: Keep an eye on your sandbox and use Workday logs to identify and fix any issues.

PECI: Streamline Your Workday Payroll

PECI (Payroll Effective Change Interface): lets you transmit employee data changes (like new hires, raises, or terminations) directly to your payroll provider, slashing manual work and errors. 

Feature

PECI

Web Services

Data Flow

Outbound

Inbound and Outbound

Use Cases

READ (Employee data updates like new hires, raises or terminations)

CREATE, UPDATE, DELETE (Any CRUD operation on employee data)

Country Specificity

Up to 3 similar countries

Global

Multi-Geography Support

Requires multiple PECI syncs (manual setup)

Single integration works for all geographies

Setup Complexity

Requires Workday expertise

Can be programmatic (easier setup)

Let's get started :-

  1. Enable PECI:  Talk to your Workday admin and get PECI activated for your tenant. 
  2. Set Up Your Payroll Provider:  Configure your external payroll system within Workday, including details and data transfer protocols.
  3. Define Your Data:  Identify the specific data your payroll provider needs (think employee details, compensation, etc.).
  4. Create an ISU: Just like other integrations, create a special user (ISU) with permissions to access and move payroll data.
  5. Transform Your Data:  Set up Workday to transform your data into the format your payroll provider expects. Think of it as translating languages!
  6. Schedule Transfers: Automate the process! Set up a schedule to regularly send payroll changes to your provider (e.g., daily or after each payroll run).
  7. Test It Out:  Before going live, use the Workday sandbox to thoroughly test the PECI integration. Make sure all changes get sent correctly.
  8. Monitor & Maintain: Keep an eye on things! Regularly monitor the integration and use Workday's reports to track data transfers and fix any errors.

Implementation Guidelines

Follow the detailed step-by-step process below to integrate with Workday.

Step-by-step Integration Process.

  1. Register for a Developer Account:  Sign up for a Workday developer account and get verified.
  2. Explore Workday's API Playground:  Get familiar with Workday API endpoints and resources. Download the API docs – they'll be your roadmap.
  3. Craft Your Integration System User (ISU):  Head to Workday Security and create a special ISU for your integration. Don't forget to assign it the permissions it needs to access the API.
  4. Secure Your Credentials:  Register your application within Workday to get a unique client ID and secret (like a secret handshake) for secure API calls.  Store these credentials safely!
  5. Go OAuth 2.0:  Set up OAuth 2.0 to securely connect your integration to Workday. Use your client ID and secret to obtain access tokens, which act as temporary passes for making API calls.
  6. Develop & Test Like a boss:  Use tools like Postman to test your API calls before going live.  Build your integration using the correct endpoints and data models. Make sure everything works as expected.
  7. Monitor & Maintain:  Keep an eye on your integration – implement logging and monitoring for API calls.  Review and update your integration settings as needed.

Security Matters:

  1. Craft Security Groups:  In Workday Security, create a security group specifically tailored for your integration.  Think of it as a club with specific access rules.
  2. Assign Permissions Wisely:  Add the necessary permissions to your security group.  Make sure your ISU has access to everything it needs, but nothing it doesn't.
  3. Set Up Security Policies:  Define security policies to control how data can be accessed and modified.  Assign these policies to your security group for an extra layer of protection.
  4. Activate & Audit:  Activate your newly defined security policies and regularly review their effectiveness.  Conduct security audits to ensure everything is running smoothly.

Common Hiccups & How to Fix Them:

  1. Facing Authentication Errors?  Double-check your OAuth setup – make sure your client ID, secret, and redirect URLs are all correct.
  2. Permission Denied?  Verify that your ISU has the necessary permissions and is assigned to the right security group.
  3. Data Not Matching Up?  Check your data mappings to ensure they align perfectly with Workday's data models.
  4. Fixing Your Issues:  If you run into authentication errors, adjust your OAuth configuration.  For permission issues, update permissions for the ISU and security groups.  And for data mismatches, correct your data transformations and mappings.

Common Pitfalls and Troubleshooting

Getting stuck with errors can be frustrating and time-consuming. Although many times we face errors that someone else has already faced, and to avoid giving in hours to handle such errors,We have put some common errors below and solutions to how you can handle them. 

Error Diffusion Toolkit:

  1. Authentication Woes: Error Message:  "Invalid client ID or secret."  Defuse:  Double-check your OAuth setup. Are your client ID, secret, and redirect URLs all correct?  Ensure your tokens aren't expired!
  2. Permission Denied: Error Message:  "Access denied!"  Defuse:  Verify your ISU has the right permissions. Check security group settings and policies. It might not have the key to the data vault!
  3. Data Mismatch Blues: Error Message:  "Incorrect or missing data fields."  Defuse:  Ensure your data mappings are on point and match Workday's data model. Validate your input data before making those API calls. Garbage in, garbage out!
  4. Rate Limiting Roadblock: Error Message:  "Whoa there! Too many requests!"  Defuse:  Implement throttling and retry logic in your integration. Respect Workday's API rate limits – don't be a data hog!

Pro Tips for Smooth Sailing:

  1. Log It All: Use detailed logs for API calls and responses. Logs are like breadcrumbs – they help you find your way back when you get lost. 
  2. Sandbox First: Always test in Workday's sandbox environment. Catch issues early on before your code goes live and wreaks havoc on real data.
  3. Monitor Your Performance: Keep an eye on your integration's performance. Use monitoring tools to track API response times and error rates. Don't let errors become silent assassins!
  4. The Power of Community: Connect with the Workday developer community. Forums and user groups can be lifesavers – share your war stories and learn from others' battles.

How can Knit help you with Workday Integration?

We know you're here to conquer Workday integrations, and at Knit (rated #1 for ease of use as of 2024!), we're here to help! Over 9,500 organizations have already used Knit for Workday integrations. Knit, as a unified HRIS API, ensures a high ROI for companies that seek to integrate their diverse HRIS applications to make their HR processes effective without sinking their organizational budgets.

Why Knit? We Speak Your Language:

  1. Unified APIs: Our APIs are like a Rosetta Stone for Workday – perform multiple integrations with just one set. Less code, less complexity, happy developer!
  2. Developer Friendly: We make things easy. Our APIs are clear, concise, and well-documented. No wrestling with cryptic instructions here.
  3. Rock-Solid Reliability: Robust error handling and comprehensive documentation ensure a smooth integration experience. We've got your back!
  4. Support When You Need It: Our crack support team is here to answer your questions and help you troubleshoot any issues. 
  5. Unified Integration Platform: We handle both SOAP and REST APIs, so you don't have to worry about the underlying protocol. Knit takes care of the complexities, allowing you to focus on building your integration

Appendix

A. Key Terms

  • API:  Lets applications talk to Workday (RESTful or SOAP).
  • Authentication: Verifies you're who you say you are (login).
  • Authorization: Grants access to specific Workday data (permissions).
  • Client ID & Secret:  Uniquely identify your application (secure handshake).
  • Data Model:  Structure of Workday data (like fields in a form).
  • Endpoint:  Specific URL to access Workday functions (like a door to a room).
  • ISU:  Special user for integrations (low access, high security).
  • OAuth 2.0:  Secure way to get temporary access tokens (like a one-time pass).
  • REST API:  Flexible API using regular commands (GET, POST, PUT, DELETE).
  • Sandbox:  Test environment with dummy data (safe zone for experimentation).
  • SOAP API:  Structured API using XML (more complex, more secure).
  • Token:  Temporary permission to access Workday (like a short-term pass).
  • Workday Tenant:  Your company's secure space within Workday (separate for dev, test, production).

B. Sample Code

  • Adapted from Workday API documentation. Remember to replace placeholders like "your_workday_tenant", "isu_username", “isu_password” with your actual details. For comprehensive API reference and code samples, visit the Workday Developer Center

Tutorials
-
Aug 27, 2024

Get employee details from Peronio API

Introduction

This article is a part of a series of articles covering the Personio API in depth, and covers the specific use case of using the Personio API to Get employee details from Peronio API.
You can find all the other use cases we have covered for the Personio API along with a comprehensive deep dive on its various aspects like authentication, rate limits etc here.

Get Employee Details from Personio API

Overview

To retrieve employee details such as first name, last name, and date of joining from the Personio API, you can utilize the listEmployees endpoint. Below is a step-by-step guide with Python code snippets to achieve this.

Step-by-Step Guide

1. Set Up Your Environment

Ensure you have the necessary libraries installed:

pip install requests

2. Define API Credentials

Set your API credentials for authentication:

api_url = "https://api.personio.de/v1/company/employees"
headers = {
    "X-Personio-Partner-ID": "your_partner_id",
    "X-Personio-App-ID": "your_app_id",
    "accept": "application/json"
}

3. Make the API Request

Send a GET request to the listEmployees endpoint to fetch the required details:

import requests

params = {
    "attributes[]": ["first_name", "last_name", "hire_date"]
}

response = requests.get(api_url, headers=headers, params=params)

if response.status_code == 200:
    employees = response.json().get("data", [])
    for employee in employees:
        first_name = employee["attributes"].get("first_name")
        last_name = employee["attributes"].get("last_name")
        hire_date = employee["attributes"].get("hire_date")
        print(f"First Name: {first_name}, Last Name: {last_name}, Date of Joining: {hire_date}")
else:
    print(f"Failed to retrieve data: {response.status_code}")

4. Handle the Response

Process the response to extract and display the employee details:

if response.status_code == 200:
    employees = response.json().get("data", [])
    for employee in employees:
        first_name = employee["attributes"].get("first_name")
        last_name = employee["attributes"].get("last_name")
        hire_date = employee["attributes"].get("hire_date")
        print(f"First Name: {first_name}, Last Name: {last_name}, Date of Joining: {hire_date}")
else:
    print(f"Failed to retrieve data: {response.status_code}")

Knit for Personio API Integration

For quick and seamless access to Personio API, Knit API offers a convenient solution. By integrating with Knit just once, you can streamline the entire process. Knit takes care of all the authentication, authorization, and ongoing integration maintenance, this approach not only saves time but also ensures a smooth and reliable connection to your Personio API.

Tutorials
-
Aug 13, 2024

ADP API Integration Guide (In-Depth)

Overview of ADP

Automatic Data Processing (ADP) is a cloud-based software that provides services that cover all needs in human resource information systems (HRIS). Whether your company needs to manage payroll, hire new employees, track employee performance, calculate taxes, manage benefit information such as health insurance and retirement plans, or attract your employees to complete training on time, it has everything covered. The ADP system remains updated with all the latest HR regulations, so outdated information is not an issue here.

Managing payroll and HR manually can lead to many issues, such as high probability of manual data entry errors, issues due to duplicate data entry, difficulty of keeping up with changing labor laws and regulations is time-consuming and difficult which may also lead to compliance issues. Handling consistent payroll accurately for the employees can be challenging at times.

ADP API integration not just tackles these issues, but makes the process efficient so you can work on tasks that are more important.

Importance of ADP Integration

  1. Improved Efficiency and Automation: Automating tasks such as onboarding, offboarding, and status changes eliminates manual data entry errors, saving HR teams significant time.
  2. Real Time Data Sync & Streamlined Processes : Connecting ADP with other applications can automate workflows like payroll and benefits administration, and data flows between ADP and other systems reduce inconsistency by providing access to accurate employee information.
  3. Ensure Compliance : ADP takes care of latest labor laws. By integrating with ADP, you can ensure that you are HR practices are complaint.
  4. Simplify Complex Processes : Some processes are tedious and challenging like consistent payroll management, ADP automates payroll calculations ensuring accuracy and timely payments for all employees.

Developer Primer

This guide gets you started with the entire process of ADP API integration covering prerequisites, authentication, use case for this guide, operations, testing, deployment and troubleshooting—all the essentials.

You will find more about ADP API, use cases, endpoints in ADP API Events and Endpoints.

There are various modules for which ADP provides APIs for integration, you can find your specific use case for integration in ADP API Documentation.

In case you are looking for a quick and easy way to build your ADP API integration along with multiple other HRIS an payroll systems in one go, checkout Knit. Knit provides a unified HRIS API covering the ADP API along with 40+ other HRIS & Payroll connectors.

Prerequisites & Initial Steps

Setting Up ADP Developer Account

  • As a developer, you will register for a developer account. Your employer will have to provide you access for that. 
  • You will get your self-service registration code from your HR department or payroll administrator. 
  • You can now enter your registration code ADP registration page. If you already have an account with ADP, you can directly log in with your user ID and password login page.

Prerequisites for Obtaining Credentials & Setting Up Authentication

It is important that we establish a secure connection before we start our ADP API integration process. It involves the following: 

  • Obtain Credentials: You will need credentials like client ID, client secret and CSR.
  • Authentication: Understanding authentication process for API Integration is essential.

Use of Sandbox & Postman

It’s important to test your integration before making it live. You can use sandbox and postman.

The safe environment of sandbox will allow you to refine your integration wherever changes are needed, with sample data and thus not affecting your real data without risking security. 

Important Terminology & Use Case for This Guide

ADP Workforce Now API

  • ADP Workforce Now is a cloud based Human Capital Management (HCM) platform that streamlines HR processes from comprehensive reporting and analytics to payroll, benefits administration, payroll and much more. It works on a monthly subscription model.
  • ADP Workforce Now subscribers benefit from streamlined data flow between payroll and other HR functions, reducing manual data entry errors. 
  • Another benefit of ADP Workforce Now, is it integrates with other HR business applications and has flexible service options.
  • Being in the market from past 70 years and serving more than 90,000 clients, ADP has its strong base when it comes to needs related to overall HR management.
  • For this guide, we will focus on API integration with ADP Workforce Now subscription.

All About ADP REST API

  • REST (Representational State Transfer) API is standardized software architecture style, which is used for communication between client and server. A few benefits of REST APIs are: some text
    • They are simple and standardized
    • They are scalable and stateless
    • The performance stays very high, and it supports caching.
  • ADP REST API uses event-based pattern for resource management. Retrieving resources (GET API), modifying resources (POST API) and staying informed by setting up alerts whenever there is a change in GET/POST requests.

API Integration Methods

There are three methods to integrate ADP Payroll Integration API: 

  1. Pre-built Data Connector: It is an available solution that can reduce development time, providing pre-configured settings and user-friendly interface ensuring faster setup.
  2. Customized Integration: If integration needs are very specific, requiring complete control over functionality and data, and have very specific security requirements, then customized integration is the best choice.
  3. Building own Integration for Workforce Now From Scratch: In this integration, you will directly integrate ADP Payroll API (likely the Payroll Data Input API v1) with your system. It requires higher development expertise.

ADP Integration Methods

Getting Started With ADP Payroll API

For this guide, we will work on building our own integration for ADP Workforce Now APIs for payroll. You will find several solutions under the Payroll Management section. ADP offers APIs for Earnings, Deductions, Tax Withholdings, and Payroll Results.

Getting Started With ADP HR API

We will also look into integration for ADP Workforce Now APIs for HR. APIs in HR are divided into various sections such as Workers, Workers Lifecycle, Data Integration Management, Workers Demographics, Compensation Management, Business Communication Management, and additional HR modules.

Obtain API Credentials & Set Up Authentication

Client Credentials

Follow the below steps to get client credentials:

  • ADP Marketplace Account: You will need to register for an ADP Marketplace account on registration page if you already don't have one.
  • Application Creation : Once registered, log in to your account and create a new application for your ADP API integration.some text
    • Define application name, description, target ADP Product (in our case Workforce Now), type of integration (ex: Data Integration).
  • Retrieve Credentials : In the application, find development API credentials.

All About CSR (Certificate Signing Request)

  • CSR is specifically required if you plan to use a client certificate for mutual TLS authentication with the ADP API server. In that case, you can generate it using OpenSSL Library. Specific commands to run on the command line, can be found OpenSSL Documentation.
  • The most common authentication method for Workforce Now API integrations involves OAuth 2.0. This will require a Client ID and Client Secret, which we can get by following this section.

OAuth 2.0 Authorization Flow & Access Tokens for Authorization.

  1. OAuth 2.0 Authorization Flow: Get Authorization Server URL from ADP Payroll Data Input API v1 documentation. Now your application will send a request with Client ID, Client Secret (Secure), and User Consent (if applicable). Upon user consent accepted (if asked), you will be redirected to a URL with an authorization code. 
  2. Access tokens for authorization : Now your application sends another request to Authorization Server URL with: Client ID, Client Secret (Secure), and Authorization Code (if applicable). The server responds an access token for authorized API access. 

Now this token can be used while accessing API of ADP Workforce Now resource server, by including token in authorization header.

Performing Basic Operations

Response & Request Exchange

  • API Endpoints: Specific endpoints for various operations (such as GET/POST) are provided in the ADP developer documentation for the Payroll Data Input API v1.
  • Request Response Exchange Format: The medium for communication between application and the ADP servers is JSON (JavaScript Object Notation). Request and Response data will be exchanged using JSON format.
  • You can check Sample Response JSON for [GET] /events/payroll/v1/pay-data-input.modify/meta Pay Data Input ADP Doc.
  • Note : You will need to enter the access token obtained from the OAuth 2.0 flow in the authorization header.

Setting Up Development Environment for Integration

  • Choose your development language: You can select any programming language and development environment as per your comfort (e.g., Python, Java, etc.).
  • Install libraries: Installation of necessary libraries or frameworks for making HTTP requests and handling JSON data is a must (e.g., requests library in Python).

Implementing ADP Payroll API Integration

Get API Credentials

You can get API Credentials that are Client ID and Client Secret by following this section. Once you have the API credentials, we can move on to the next step to understand the data structure, necessary for integration.

Data Mapping and Transformation for Integration Adaption

  • Review Data Structures: Review the data structures provided in the ADP API documentation and compare them to your own internal data structures.
  • Transformation Logic: If there are discrepancies, implement logic to transform your data to match the ADP API format before sending requests (e.g., converting dates or formatting names).
  • For Example : Pay Data Input - [Pay Data Input Modify] section
    [POST] /events/payroll/v2/worker-general-deduction-instruction.changesome text
    • Request JSON
      {

 "events": [

    {

      "data": {

        "eventContext": {

          "worker": {

            "associateOID": "{{employeeAOID}}"

          },

          "payrollInstruction": {

            "payrollGroupCode": {

              "codeValue": "{{payrollGroupCode}}",

              "shortName": "94N"

            },

            "payrollFileNumber": "{{payrollFileNumber}}",

            "payrollAgreementID": "{{payrollAgreementID}}",

            "itemID": "169749147863_1",

            "generalDeductionInstruction": {

              "deductionCode": {

                "codeValue": "M"

              }

            }

          }

        },

        "transform": {

          "effectiveDateTime": "2020-05-08",

          "payrollInstruction": {

            "generalDeductionInstruction": {

              "inactiveIndicator": true,

              "deductionRate": {

                "rateValue": "20"

              }

            }

          }

        }

      }

    }

  ]

}

Response JSON with status code 200
{

  "events": [

    {

      "data": {

        "eventContext": {

          "worker": {

            "associateOID": "G34YJ69EMRR7N4VJ"

          },

          "payrollInstruction": {

            "payrollGroupCode": {

              "codeValue": "94N",

              "shortName": "94N"

            },

            "payrollFileNumber": "4567",

            "payrollAgreementID": "CC1_169737547546",

            "itemID": "169749147863_1",

            "generalDeductionInstruction": {

              "deductionCode": {

                "codeValue": "M"

              }

            }

          }

        },

        "transform": {

          "effectiveDateTime": "2020-05-08",

          "payrollInstruction": {

            "generalDeductionInstruction": {

              "inactiveIndicator": true,

              "deductionRate": {

                "rateValue": "20"

              }

            }

          }

        }

      }

    }

  ]

}

Basic Read, Write API Calls 

  • API Endpoints: In this documentation you will find various payroll management APIs. You will also get data formats for the desired operations (e.g., reading employee information, updating pay elements).
  • Construct Requests: Construct HTTP requests using the provided endpoints and request formats (typically JSON). Include the access token in the authorization header.
  • Parse Responses: Parse the JSON response data from the ADP API and handle it according to your needs.
  • In summary of the endpoint documentation of API you want to integrate, you will find important details for writing APIs like method path, content type, token type, and required scope.
  • For example : some text
    • Worker Pay Distributions - [Change Pay Distribution] section has one POST & GET API. 
    • [GET] /events/payroll/v1/worker.pay-distribution.change/meta : some text
      • Optional parameters : ADP-Acting-SessionID , Sm_transactionid, SiteMinder transaction ID, $filter
    • [POST] /events/payroll/v1/worker.pay-distribution.change : some text
      • Optional parameters : ADP-Acting-SessionID, sm_transactionid

Implementing ADP HR API Integration

Follow Similar Steps to Payroll

  • The steps to get API Credentials : Client ID and Client Secret can be found in this section
  • After getting the API Credentials, you can check for the API you are looking for ADP API Explorer.
  • For this guide, we will go ahead with Workers APIs of HR section. The worker's management section, looks into how application can manage and access information about the workers in ADP Workforce Now application.
  • One section of Workers is ‘Workers Data Retrieval’ and you can use the Workers v2 API to generate a full list of workers in your organization. It contains three GET request for retrieval of either single or collection of workers.

Examples of Read, Write API Calls With Data Transformation for HR API

Below are a few endpoints and information related to them : 

  • [GET] /hr/v2/workers some text
    • Optional parameters : $skip, $top, ADP-Acting-SessionID, $filter, $select, $count, sm_transactionid.
  • [POST] /events/hr/v1/worker.photo.uploadsome text
    • Optional parameters : ADP-Acting-SessionID , sm_transactionid

Response :
{

  "events": [

    {

      "data": {

        "transform": {

          "worker": {

            "photo": {

              "nameCode": {

                "shortName": "photo",

                "longName": "photo"

              },

              "links": [

                {

                  "href": "/hr/v2/workers/G310YGK80NSS9D2N/worker-images/photo",

                  "mediaType": "image/jpg",

                  "method": "GET"

                }

              ]

            }

          },

          "effectiveDateTime": null

        }

      },

      "links": []

    }

  ]

}

Important Last Steps: Testing and Deployment

Testing API in Sandbox.

  • ADP Sandbox Environment: Testing API in sandbox before making it live is important for several reasons such as : some text
    • Performance Check & Safety :When you test your integration with fake data, you ensure your real data is safe, and you can also check the performance of your API. If you find that the integration is slow, you can optimize your integration before deployment.
  • Error detection: While testing in the sandbox you can easily catch bugs and other error early on, thus fixing them before deployment to the live environment.
  • Simulate Scenarios: Sandbox environment very well mimic the live environment, and thus it gives a clear picture of how your integration will behave in live environment.

Testing API in Postman

  • API Testing: It provides a user-friendly interface, where you can easily test your GET, POST, PUT API’s request and response exchanges. This helps you get more clear picture of what get missed in your request and response and thus can lead to quick fixes.
  • Automation: One widely used feature of Postman is automated test cases, reducing repeated actions of testing API behavior and thus reducing chances of human error.
  • Collaboration: Postman allows team members to access same API collections, allowing your team to test API’s ensuring everyone is on same page.

Deployment Initiation of API’s

  • Deployment Strategy: Your deployment strategy depends on your environment in which you have built the integration and other needs specific to your integration. 
  • Configuration Management: It is always a good practice to use configuration management tools, this ensures fewer chances of bugs in production (e.g., development, staging, production).
  • Security Measures: Security should not be compromised, ensure security by implementing necessary security measures during deployment, for example: restricting access to sensitive data and APIs.

Troubleshooting and Support

Common Errors and Their Resolutions

  • 401 Unauthorized: You are likely to receive this error due to issues with your access token. Check the following again:some text
    • Client ID and Client Secret: Chances can be that they got expired or are wrong, ensure they are correct and haven't expired.
    • OAuth 2.0 Flow: If you have more than one application in your marketplace, it is easy to get access token of wrong application, verify you’ve obtained valid access token.
    • Token Expiration: Access tokens are temporary and expires in minutes or hours (for security purposes). Refresh them before they expire.
    • 403 Forbidden: You will face this error when your application lacks the necessary permissions to access specific data or perform actions.
    • Review API Scopes: Incomplete permissions for your application are very common issues faced by developers.
  • 400 Bad Request: This indicates a problem with your request structure or data.some text
    • Data Validation: Most of the time you will receive specific error messages regarding the data format or missing required fields.
    • API Endpoints: Ensure you're using the correct API endpoint URL for the desired operation.
  • 4xx or 5xx Errors: These can indicate various issues on the ADP server side.some text
    • ADP Documentation: Refer to the ADP documentation for specific error code meanings and suggested resolutions.

Common Debugging Techniques

  • Logging: It is always a good idea to do logging, it captures request/response details to track integration flow.
  • Breakpoints: Sometimes errors can be logical, step through code to identify such errors.
  • Network Inspection: Verify requests and responses using network tools.
  • Postman: Isolating and testing APIs can be very useful in finding errors when you are working with a complex integration.
  • ADP Support: If any of above doesn’t work, you can seek help from ADP Developer support.

Ensure Integration Smoothness

Integration Smoothness depends upon how well you are aware of issues you are facing while integration, if the issues are standard you will mostly be able to find their resolution in this section.

If you face specific errors, you can reach out to ADP developer support for clarification on error messages encountered during testing or deployment.

Appendix

A. Key Terms

  • API: Lets applications talk to Workday (RESTful or SOAP).
  • Authentication: Verifies you're who you say you are (login).
  • Authorization: Grants access to specific Workday data (permissions).
  • Client ID & Secret: Uniquely identify your application (secure handshake).
  • Endpoint: Specific URL to access Workday functions (like a door to a room).
  • OAuth 2.0: Secure way to get temporary access tokens (like a one-time pass).
  • REST API: Flexible API using regular commands (GET, POST, PUT, DELETE).
  • Sandbox: Test environment with dummy data (safe zone for experimentation).
  • Token: Temporary permission to access Workday (like a short-term pass).
  • Workforce Now : HR Software suite that helps businesses with HR, time, benefits, payroll

B. References

  1. Login & Registration for ADP Account
  2. ADP Restful API
  3. ADP Workforce Now products
  4. Workforce Now ADP API Integration
  5. Payroll Data Input API
  6. Payroll Data Input API Guide for ADP Workforce Now
  7. Oauth documentation
  8. Access Tokens
  9. Pay Data Input
  10. Forbes ADP Workforce Review

Tutorials
-
Aug 13, 2024

eSignature API Integration Guides & Resources

Introduction to eSignature API

From wet ink on the Declaration of Independence to secure digital clicks, signatures have ensured binding contracts for centuries. A study found that businesses can spend an average of 5 days collecting physical signatures for a single contract. This time-consuming process not only hinders business agility but also creates geographical limitations. In this internet-centric world, signatures have also gone digital. Electronic signatures (eSignatures) or digital signatures offer a compelling solution. The traditional paper-based signing process can be frustrating and time-consuming for customers. But with just a few clicks, contracts and proposals can be signed from anywhere in the world with the help of eSignatures. eSignature API is user-friendly as it allows customers to sign documents conveniently from any device. With the rise of remote work, businesses need an efficient and secure document signing process regardless of location, and that's where eSignature serves its purpose.

What is an eSignature API?

Why eSignatures Rule the Modern Business Deal?

An eSignature API is like a digital signing service. Your system/software interacts with the API as a client, sending a document and signing instructions (request) to the service (server). The service handles the signing process (with security) and returns the signed document to you (response). Just like any API, it's all about sending and receiving data. eSignature benefits businesses in several ways:

  • Electronic security protects your documents, reducing the risk of data loss.
  • You get instant signatures, increasing speed.
  • Save money by eliminating physical printing and delivery.
  • With eSignatures, businesses and organizations efficiently manage to complete their signing process of legal documents and agreements, regardless of location or device.

Core Functionality of eSignature APIs

An eSignature API offers various functions that simplify the electronic signature process. Some of the key functionalities are:

  • Upload and Manage Documents: The API allows you to upload documents to the eSignature platform for signing, sending, and tracking. You can also manage document versions and access signed documents after completion.
  • Define Signing Fields: To make it simpler and user-friendly, you can use the API to specify where signers need to provide their signatures, initials, or other data on the document, ensuring all the necessary information is captured electronically.
  • Track Signature Status: eSignature API also provides real-time status updates on the signing process. You can see who has signed, who is pending, and any outstanding actions.
  • Download Signed Documents: The API also allows you to download the final signed document with an audit trail for record-keeping purposes.

Types of eSignature API

There are two types of eSignature APIs: 

  • REST APIs: Representational State Transfer standardized software architecture style, which is used for communication between client and server via a web-based approach. The eSignature service leverages HTTP requests and responses for the signing process. They are widely used because they are scalable, stateless, and offer high performance.
  • SOAP APIs (Simple Object Access Protocol): SOAP APIs offer a more structured communication approach. They use XML messaging and are specifically preferred for complex tasks that require detailed information.

Although SOAP APIs were commonly used in the past and are still employed to maintain legacy systems, most API providers now extensively use REST APIs for their modern applications.

Benefits of Integrating Knit’s Unified eSignature API

Knits Unified eSignature APIs offer many benefits for eSignature integrations. 

  1. Single API, Endless Possibilities: If your company or clients use multiple API providers for eSignature, integrating with each can be complex. A Unified API simplifies this by handling all these needs through a single integration.   
  2. Effortless Scalability: As your business grows, so will your eSignature needs. Knit’s infrastructure manages increased signing volume without extra integrations. This lets you focus on growth, confident that Knit will meet your eSignature demands.
  3. Customer Satisfaction: Knit eliminates complex download-print-sign-scan-email cycles by integrating directly with your customer's existing systems, such as their online portal or mobile app. This integration allows customers to access and sign documents electronically within a familiar environment with just a few clicks. By removing manual steps, Knit creates a seamless signing experience, significantly enhancing customer satisfaction.
  4. Expanded Customer Base: Businesses often look for eSignature solutions that integrate seamlessly with various document management and workflow tools. Knit’s unified API supports a broad range of integrations, making it highly attractive to organizations seeking comprehensive eSignature capabilities. This extensive compatibility increases your total addressable market (TAM) and attracts a broader range of potential customers.

Key Features To Look For in an eSignature API

When choosing an eSignature API for your SaaS, consider these key features for a smooth and secure integration experience.

  • Comprehensive Signing Workflow: In today's tech-savvy world, finding all your API integration needs in one place is not too much to ask for. Looking for an API that manages the entire signing process, which includes uploading documents, defining signing fields, sending requests with personalized messages, specifying signing orders, and tracking completion status. 
  • Multiple Signature Options & Bulk Send Functionality: Ensure your API supports various signature methods (e.g., typed, drawn, mobile app integration) to meet security and legal requirements. Additionally, provides a bulk send feature to streamline sending signature requests to multiple recipients, enhancing efficiency for handling numerous documents.
  • Authentication Tools: Strong user authentication is crucial as it ensures fraud prevention and compliance with regulations and builds trust. Therefore, consider features like email verification, access codes, SMS authentication, or Knowledge-Based Authentication (KBA).
  • Branding Customization: The ability to customize the signing experience by tailoring your brand needs, such as logo and colors, can enhance brand recognition.
  • Detailed Audit Trails: A robust audit trail is essential for record-keeping and compliance purposes. The API should capture a detailed history of the signing process, including timestamps, signer information, and any changes made to the document.

Know About eSign API Data Models

Effective data management within your eSignature SaaS application hinges on well-defined data models. These models act as blueprints, accurately organizing and structuring the information crucial for eSignature functionality. These models typically include:

Signers/Recipient: The person who will sign the contract.

Documents: This is the contract itself.

Signing Fields: These are the locations on the document where signatures, initials, or other data need to be captured.

Envelopes: They function as self-contained packages. They actively bundle all the documents requiring signatures, recipient details, completion status, and a unique identifier for easy tracking.

Top eSign API Providers

There are various eSignature API providers in the market today. You must choose which caters best to your needs, workflows, budget, and security considerations. This comparison provides features and API pricing for leading digital signature platforms, thus helping you choose the best eSignature API that fits your needs.

DocuSign

Strengths - Robust API, secure, compliant, workflow automation

Weaknesses - Complex setup, higher pricing

Ideal For - Enterprise, high-volume signing, complex workflows

DocuSign API Documentation Link: https://developers.docusign.com/

Adobe Sign

Strengths - User-friendly, branding, Adobe integration

Weaknesses - Limited features, potentially high pricing

Ideal For - User-friendly signing, Adobe ecosystem

Acrobat Sign API Documentation: https://developer.adobe.com/document-services/apis/sign-api/

HelloSign (Dropbox Sign)

Strengths - Simple API, Dropbox integration, budget-friendly

Weaknesses - Limited features, basic workflows

Ideal For - Existing Dropbox users, budget-conscious businesses

Dropbox Sign API Documentation: https://developers.hellosign.com/

PandaDoc

Strengths - Interactive proposals, sales-oriented

Weaknesses - eSignature focus might be secondary, potentially higher pricing

Ideal For - Proposal creation, sales workflows

PandaDoc API Documentation: https://developers.pandadoc.com/reference/about

SignNow

Strengths - Mobile-friendly, ease of use, competitive pricing

Weaknesses - Security concerns for some industries, limited automation

Ideal For - Easy mobile signing, cost-effective

SignNow API Documentation: https://www.signnow.com/developers

Building Your First E-Signature Integration with Knit

Knit provides a unified eSign API that streamlines the integration of eSignature solutions. Instead of connecting directly with multiple eSignature APIs, Knit allows you to connect with top providers like DocuSign and Adobe Acrobat Sign through a single integration. Choose Your eSignature Provider and API after evaluating which eSignature provider best meets your needs, such as DocuSign or Adobe Acrobat Sign, you can proceed with integration. Knit simplifies this process by supporting various providers, allowing you to connect with your chosen eSignature service through one API. By using Knit, integrating with popular eSignature providers becomes straightforward, making it a practical choice for your eSignature integration needs. Knit offers a unified API that simplifies integrating eSignature solutions. Instead of working directly with multiple eSignature APIs, you can use Knit to connect with top providers like DocuSign, Adobe Acrobat Sign, and many others through a single integration. Learn more about the benefits of using a unified API. Steps Overview:

  1. Create a Knit Account: Sign up for Knit to get started with their unified API.
  2. Choose Your eSignature Provider: Select a provider (e.g., DocuSign, Adobe Acrobat Sign). Knit handles the integration with these providers.
  3. Obtain API Credentials: Get the necessary credentials from your chosen provider (e.g., DocuSign integration key and JWT secret).
  4. Build Your Workflow in Knit:
    • Define the document and signer details.
    • Use Knit’s HTTP Request nodes to send signature requests and handle responses.
    • Optionally, track the signing status and download the signed document.

For detailed integration steps with specific eSignature providers via Knit, visit:

You can learn about the body parameters, such as signers, documentName, content Type, senderEmailId, redirectURL, and other request body parameters, and responses for various eSignature actions on Knit. Here are a few eSignature reference documents to review.

Each of these links provides detailed information on the body parameters and responses. You can also test the request and response bodies in different programming languages, such as Node.js, Ruby, Python, Swift, Java, C++, C#, Go, and PHP. Knit simplifies the eSignature integration process, letting you focus on your core application development.

Knit’s E-Signature API vs. Direct Connector APIs: A Comparison

Benefits of building ESign Integrations with Knit Unified ESignature API

Best Practices for Implementing eSignature APIs

Optimizing e-signature Integrations for Performance and Scalability

Below are a few points on how you can optimize your integration for better performance and increase scalability.

  • Batch Processing: Instead of sending individual requests, consider batch processing to send multiple signature requests simultaneously.
  • Asynchronous Workflows: Waiting for the eSignature response can slow things down. By using asynchronous workflows, your app can keep working on other tasks while it waits for the eSignature response to come back. 
  • Monitoring and Alerting:  Without knowing what's wrong, API maintenance is challenging, and it's much harder to debug when we do not know where to start. Therefore, setting up monitoring tools to track response times and error rates is advisable.

Security Considerations: Authentication methods, Data encryption & compliance standards

  • Authentication Methods: Well-built authentication methods are necessary to prevent unauthorized access and thus avoid fraudulent activities. Implementing techniques like two-factor authentication or Knowledge-Based Authentication (KBA) ensures the verification of signer identities.
  • Data Encryption:  Ensure the eSignature API utilizes robust encryption protocols (e.g., AES-256) to protect sensitive document data both in transit and at rest.
  • Compliance Standards: Choose an eSignature provider that adheres to relevant eSignature regulations like eIDAS (Europe) and ESIGN (US) to ensure the legal validity of electronically signed documents.  
  • Access Controls: Implement granular access controls within your application to restrict who can send signature requests, view documents, or manage the signing process.

eSignature API Use Cases (With Real-World Examples)

eSignature API Integration for Loan Applications

With the increasing demand for entrepreneurship, housing, and college applications, there has also been a rise in loan applications. The end-to-end loan application process involves hefty paperwork. To streamline this process, many financial institutions such as JPMorgan Chase, Citibank, and Wells Fargo have started using eSignature APIs for signing, creating an easy and secure loan application experience. Loan applicants now sign documents from their devices, anywhere.

eSignature API Integration for Onboarding

Today, organizations of all sizes, from small to large, use Human Resources Information Systems (HRIS) to manage their human resources. The onboarding process requires signing an offer letter and several agreements. Due to fast-paced and advanced technology, companies are no longer spending their resources on manual work for tasks that can be automated. Many HRIS are integrating eSignature APIs into their systems. Companies like Salesforce use the DocuSign API Provider for eSignature, benefiting extensively from this integration. New hires electronically sign their offer letters and agreements, which are required during onboarding. This approach minimizes the risk of misplacing physical documents and accelerates the process.

eSignature API Integration for Real Estate

This industry involves several documents, including Offer to Purchase Agreements, Sales Contracts, Disclosure Documents, Mortgage Documents, Deeds, and Closing Statements. Storing and retrieving all these documents is a significant concern due to the constant threat of theft, loss, or damage. The authenticity of these documents can also be questioned due to increasing fraud in the industry. With eSignature API integration, many of these issues are resolved, as documents can be signed digitally, eliminating the stress of physically storing and retrieving them. Mortgage lenders like Quicken Loans leverage eSignatures to revolutionize real estate transactions. Both homebuyers and sellers can sign all documents electronically, eliminating the need for physical documents and signatures.

Real-life examples

IBM Uses eSignature for Emptoris Contract Management

IBM serves as a prime example of how eSignatures can supercharge contract management. Their Emptoris Contract Management system utilizes eSignatures for contract execution. When a contract is electronically signed, it is securely attached to a PDF document and includes a public key for verification alongside a private key held by the signer. This method ensures the legally binding nature of contracts while significantly reducing the reliance on paper-based processes. Additionally, it empowers IBM to efficiently track contract approvals, leading to a smoother and more efficient overall process.

eSignature API Integration for ADP

Payroll and HR Service Provider ADP is a cloud-based software that provides services that cover all needs in human resource information systems (HRIS). The all-in-one native eSignature for ADP Workforce Now is used by ADP to manage its eSignature-related requirements such as HR documents, benefits enrollment, onboarding, and offboarding paperwork.

eSignature API Integration for eBay

eBay sellers can now skip the printing and scanning! eSignatures allow them to electronically send and have buyers sign essential documents related to their sales, like invoices or return agreements. This streamlines the process for both sellers and buyers.

Challenges & Troubleshooting Techniques

Integrating APIs in your system can be tricky but understanding common authentication errors and request/response issues can help ensure a smooth connection.

Authentication Errors 

Some most common errors are: 

  • Incorrect API credentials: Double-check your API credentials for typos or errors.
  • Expired tokens: Ensure your tokens are valid and refreshed before expiration.
  • Permission issues: Verify that your API user has the necessary permissions to perform the requested actions.

API Request & Response Errors

Higher chances that your errors fall in this category. These can be caused by invalid data formats, missing required fields, or unsupported functionalities in your request. Some most common errors are: 

  • Signature Invalid: Recalculate the signature using your API key and request data. Ensure you're using the correct signing algorithm.
  • Delivery Failure: Verify email addresses and sender permissions.
  • Unable to receive a verification code: Review the recipient's phone number and ensure they have signal/can receive SMS/calls. 

Find other error codes of DocuSign

Effective Debugging Techniques

Ensuring a smooth integration requires thorough debugging. Here are two key strategies to pinpoint and resolve integration challenges:

  • Logging: Implement detailed logging throughout your integration workflow. It helps capture errors encountered during API requests and responses and, thus, helps identify the root cause. 

Learn more about efficient logging practices here.

  • Testing: Unit testing can be a game changer, especially for a complex integration, as it helps to identify the root cause faster.

Future of eSignature APIs

Emerging Trends and Technologies in eSignatures:

As eSignature technology continues to evolve, several trends are shaping the future of eSignature API integration, including:

  • Biometric Authentication: To make the process more secure, multi-factor authentication (Fingerprint scanning, facial recognition) is required in many companies, while implementing eSignature adds an extra security layer.
  • Blockchain Integration: Blockchain technology can improve the security and efficiency of the signing process. It can maintain permanent and auditable records of the process, thus enhancing transparency and avoiding compliance, proving how blockchain eSignature can serve us better.
  • Mobile Signing: Users prefer the ease of signing documents through their mobile devices, and as a result, many mobiles come with built-in or downloadable eSignature software.
  • Global Expansion: As eSignature regulations become more standardized globally, eSignature APIs will facilitate seamless document signing across borders.

eSignature Integration with Artificial Intelligence and Machine Learning

AI-powered eSignatures offer numerous benefits, including:

  • Signature Verification: By analyzing handwritten signatures against electronic references, it detects forgeries and enhances verification.
  • Authentication: AI also helps in the identity validation of signatories using facial recognition technology.
  • Intelligent Document Review:  While humans can make mistakes or overlook details during proofreading, ML algorithms can thoroughly analyze documents, identify missing information, and highlight potential issues. This ensures accuracy and completeness before documents are sent for signing.

Appendix

  • Glossary of Terms
    • Digital Signature (eSignature): An electronic equivalent of a handwritten signature that verifies the signer's identity.
    • SOAP API (Simple Object Access Protocol): A type of API that uses XML messaging for communication. SOAP APIs are more complex than REST APIs but can be helpful for tasks that require detailed information.
    • Envelope: A digital package that contains all the documents and information needed for a signing ceremony.
    • Signer: The person who needs to sign the document.
    • Signing Order: The order in which signers need to sign the document.
    • Signing Field: A designated place on the document where a signer needs to provide their signature, initials, or other data.
    • Audit Trail: A record of all the actions taken during the signing process, including timestamps, signer information, and any changes made to the document.
Tutorials
-
Aug 7, 2024

Get all open jobs from Workable API

Introduction

This article is a part of a series of articles covering the workable API in depth, and covers the specific use case of using the workable API to Get all open jobs from Workable API.
You can find all the other use cases we have covered for the workable API along with a comprehensive deep dive on its various aspects like authentication, rate limits etc here.

Get all open jobs from Workable API

Overview

The Workable API allows you to retrieve a collection of open jobs from your account. This can be achieved using the GET method on the /spi/v3/jobs endpoint. The required scope for this operation is r_jobs, and it is accessible with all token types.

API Endpoint

https://{subdomain}.workable.com/spi/v3/jobs

Authorization

Header: Bearer {Access Token}

Query Parameters

  • state (string): Returns jobs with the current state. Possible values are draft, published, archived, and closed.
  • limit (int32): Specifies the number of jobs to try and retrieve per page (optional).
  • since_id (string): Returns results with an ID greater than or equal to the specified ID (optional).
  • max_id (string): Returns results with an ID less than or equal to the specified ID (optional).
  • created_after (date-time): Returns results created after the specified timestamp (optional).
  • updated_after (date-time): Returns results updated after the specified timestamp (optional).
  • include_fields (string): Includes additional fields in each job (description, full_description, requirements, and benefits).

Example Request

import requests

subdomain = 'your_subdomain'
access_token = 'your_access_token'
url = f'https://{subdomain}.workable.com/spi/v3/jobs'
headers = {
    'Content-Type': 'application/json',
    'Authorization': f'Bearer {access_token}'
}
params = {
    'state': 'published'
}

response = requests.get(url, headers=headers, params=params)
print(response.json())

Example Response

{
  "jobs": [
    {
      "id": "61884e2",
      "title": "Sales Intern",
      "full_title": "Sales Intern - US/3/SI",
      "shortcode": "GROOV003",
      "code": "US/3/SI",
      "state": "published",
      "department": "Sales",
      "department_hierarchy": [
        {
          "id": 792289334,
          "name": "Sales"
        }
      ],
      "url": "https://groove-tech.workable.com/jobs/102268944",
      "application_url": "https://groove-tech.workable.com/jobs/102268944/candidates/new",
      "shortlink": "https://groove-tech.workable.com/j/GROOV003",
      "location": {
        "location_str": "Portland, Oregon, United States",
        "country": "United States",
        "country_code": "US",
        "region": "Oregon",
        "region_code": "OR",
        "city": "Portland",
        "zip_code": "97201",
        "telecommuting": false
      },
      "salary": {
        "salary_from": 10000,
        "salary_to": 20000,
        "salary_currency": "eur"
      },
      "created_at": "2015-07-01T00:00:00Z"
    }
  ],
  "paging": {
    "next": "https://www.workable.com/spi/v3/accounts/groove-tech/jobs?limit=3&since_id=2700d6df"
  }
}

Knit for Workable API Integration

For quick and seamless access to workable API, Knit API offers a convenient solution. By integrating with Knit just once, you can streamline the entire process. Knit takes care of all the authentication, authorization, and ongoing integration maintenance, this approach not only saves time but also ensures a smooth and reliable connection to your workable API.

Tutorials
-
Aug 7, 2024

Get all candidates for a job from Workable API

Introduction

This article is a part of a series of articles covering the workable API in depth, and covers the specific use case of using the workable API to Get all candidates for a job from Workable API.
You can find all the other use cases we have covered for the workable API along with a comprehensive deep dive on its various aspects like authentication, rate limits etc here.

Get all candidates for a job from Workable API

To retrieve all candidates for a specific job using the Workable API, you can follow these steps. This guide will help you fetch the first name, last name, and email of each candidate who has applied for a particular job.

Step 1: Set up your environment

Ensure you have the necessary libraries installed. You can install the required libraries using pip:

pip install requests

Step 2: Define the API endpoint and parameters

Use the /candidates endpoint to get a list of candidates for a specific job. You will need to provide the job's shortcode as a query parameter.

Example Request:

import requests

subdomain = 'your_subdomain'
shortcode = 'your_job_shortcode'
access_token = 'your_access_token'

url = f'https://{subdomain}.workable.com/spi/v3/candidates'
headers = {
    'Content-Type': 'application/json',
    'Authorization': f'Bearer {access_token}'
}
params = {
    'shortcode': shortcode,
    'stage': 'applied'
}

response = requests.get(url, headers=headers, params=params)
candidates = response.json().get('candidates', [])

for candidate in candidates:
    print(f"First Name: {candidate.get('firstname')}, Last Name: {candidate.get('lastname')}, Email: {candidate.get('email')}")

Step 3: Handle the response

The response will contain a list of candidates. Each candidate object will have keys such as firstname, lastname, and email. You can iterate through the list and extract the required information.

Example Response:

{
    "candidates": [
        {
            "id": "ce4da98",
            "firstname": "Lakita",
            "lastname": "Marrero",
            "email": "lakita_marrero@gmail.com",
            "stage": "applied"
        },
        {
            "id": "108d1748",
            "firstname": "Cindy",
            "lastname": "Sawyers",
            "email": "cindy_sawyers@gmail.com",
            "stage": "applied"
        }
    ]
}

By following these steps, you can efficiently retrieve and display the first name, last name, and email of each candidate who has applied for a specific job using the Workable API.

Knit for Workable API Integration

For quick and seamless access to workable API, Knit API offers a convenient solution. By integrating with Knit just once, you can streamline the entire process. Knit takes care of all the authentication, authorization, and ongoing integration maintenance, this approach not only saves time but also ensures a smooth and reliable connection to your workable API.

Tutorials
-
Aug 7, 2024

Get all candidates for a job from Greenhouse API

Introduction

This article is a part of a series of articles covering the Greenhouse API in depth, and covers the specific use case of using the Greenhouse API to Get all candidates for a job from Greenhouse API.
You can find all the other use cases we have covered for the Greenhouse API along with a comprehensive deep dive on its various aspects like authentication, rate limits etc here.

Get all candidates for a job from Greenhouse API

Overview

To retrieve all candidates who have applied to a specific job using the Greenhouse API, you will need to utilize multiple API endpoints. This guide provides a step-by-step approach to achieve this using Python code snippets.

Step-by-Step Guide

1. Set Up Authorization

Greenhouse API uses Basic Auth for authorization. Ensure you have your API key ready.

import requests
from requests.auth import HTTPBasicAuth

api_key = 'YOUR_API_KEY'
auth = HTTPBasicAuth(api_key, '')

2. Fetch Candidates for a Specific Job

Use the GET /v1/candidates endpoint to fetch candidates who have applied to a specific job by providing the job_id parameter.

job_id = 'YOUR_JOB_ID'
url = 'https://harvest.greenhouse.io/v1/candidates'
params = {
    'job_id': job_id,
    'per_page': 100,
    'page': 1
}

response = requests.get(url, auth=auth, params=params)
candidates = response.json()

3. Extract Candidate Information

Iterate through the response to extract the first name, last name, and email of each candidate.

candidate_info = []

for candidate in candidates:
    first_name = candidate.get('first_name')
    last_name = candidate.get('last_name')
    email_addresses = candidate.get('email_addresses', [])
    email = email_addresses[0]['value'] if email_addresses else None
    
    candidate_info.append({
        'first_name': first_name,
        'last_name': last_name,
        'email': email
    })

print(candidate_info)

4. Handle Pagination

If there are more candidates than can be returned in a single response, handle pagination by iterating through pages.

all_candidates = []
page = 1

while True:
    params['page'] = page
    response = requests.get(url, auth=auth, params=params)
    candidates = response.json()
    
    if not candidates:
        break
    
    for candidate in candidates:
        first_name = candidate.get('first_name')
        last_name = candidate.get('last_name')
        email_addresses = candidate.get('email_addresses', [])
        email = email_addresses[0]['value'] if email_addresses else None
        
        all_candidates.append({
            'first_name': first_name,
            'last_name': last_name,
            'email': email
        })
    
    page += 1

print(all_candidates)

Knit for Greenhouse API Integration

For quick and seamless access to Greenhouse API, Knit API offers a convenient solution. By integrating with Knit just once, you can streamline the entire process. Knit takes care of all the authentication, authorization, and ongoing integration maintenance, this approach not only saves time but also ensures a smooth and reliable connection to your Greenhouse API.

Tutorials
-
Aug 7, 2024

Get all open jobs from Greenhouse API

Introduction

This article is a part of a series of articles covering the Greenhouse API in depth, and covers the specific use case of using the Greenhouse API to Get all open jobs from Greenhouse API.
You can find all the other use cases we have covered for the Greenhouse API along with a comprehensive deep dive on its various aspects like authentication, rate limits etc here.

Get all open jobs from Greenhouse API

Overview

To retrieve all open jobs from the Greenhouse API, you need to utilize two endpoints: one to list all jobs and another to get the openings for each job. Below is a step-by-step guide with Python code snippets to achieve this.

Step-by-Step Guide

1. List All Jobs

First, use the GET /v1/jobs endpoint to list all jobs in the organization.

import requests
import base64

# Replace with your Greenhouse API key
api_key = 'YOUR_API_KEY'
auth = base64.b64encode(f'{api_key}:'.encode()).decode()

url = 'https://harvest.greenhouse.io/v1/jobs'
headers = {
'Authorization': f'Basic {auth}'
}

response = requests.get(url, headers=headers)
jobs = response.json()

2. Filter Open Jobs

Filter the jobs to include only those with the status 'open'.

open_jobs = [job for job in jobs if job['status'] == 'open']

3. Get Openings for Each Job

For each open job, use the GET /v1/jobs/{job_id}/openings endpoint to retrieve the openings.

openings_url_template = 'https://harvest.greenhouse.io/v1/jobs/{job_id}/openings'
open_jobs_with_openings = []

for job in open_jobs:
job_id = job['id']
openings_url = openings_url_template.format(job_id=job_id)
response = requests.get(openings_url, headers=headers)
openings = response.json()
open_jobs_with_openings.append({
'job': job,
'openings': [opening for opening in openings if opening['status'] == 'open']
})

4. Result

The open_jobs_with_openings list now contains all open jobs along with their open openings.

Knit for Greenhouse API Integration

For quick and seamless access to Greenhouse API, Knit API offers a convenient solution. By integrating with Knit just once, you can streamline the entire process. Knit takes care of all the authentication, authorization, and ongoing integration maintenance, this approach not only saves time but also ensures a smooth and reliable connection to your Greenhouse API.

Tutorials
-
Aug 7, 2024

Get employee details from BreatheHR API

Introduction

This article is a part of a series of articles covering the BreatheHR API in depth, and covers the specific use case of using the BreatheHR API to Get employee details from BreatheHR API.
You can find all the other use cases we have covered for the BreatheHR API along with a comprehensive deep dive on its various aspects like authentication, rate limits etc here.

Get Employee Details from BreatheHR API

Overview

The BreatheHR API allows you to retrieve detailed information about employees. This section will guide you through the process of obtaining the first name, last name, and date of joining for all employees using the BreatheHR API.

API Endpoints

  • Get All Employees: GET /v1/employees
  • Get Employee by ID: GET /v1/employees/{id}

Step-by-Step Guide

1. Fetch All Employees

First, you need to fetch the list of all employees using the GET /v1/employees endpoint.

import requests

url = "https://api.breathehr.com/v1/employees"
headers = {
    "Authorization": "Bearer YOUR_ACCESS_TOKEN",
    "Content-Type": "application/json"
}
params = {
    "page": 1,
    "per_page": 100
}

response = requests.get(url, headers=headers, params=params)
employees = response.json()

2. Extract Required Details

Next, extract the first name, last name, and date of joining from the response.

employee_details = []
for employee in employees:
    details = {
        "first_name": employee.get("first_name"),
        "last_name": employee.get("last_name"),
        "join_date": employee.get("join_date")
    }
    employee_details.append(details)

print(employee_details)

3. Handle Pagination (if necessary)

If there are more employees than can be returned in a single response, handle pagination by iterating through the pages.

employee_details = []
page = 1
while True:
    params["page"] = page
    response = requests.get(url, headers=headers, params=params)
    employees = response.json()
    if not employees:
        break
    for employee in employees:
        details = {
            "first_name": employee.get("first_name"),
            "last_name": employee.get("last_name"),
            "join_date": employee.get("join_date")
        }
        employee_details.append(details)
    page += 1

print(employee_details)

Knit for BreatheHR API Integration

For quick and seamless access to BreatheHR API, Knit API offers a convenient solution. By integrating with Knit just once, you can streamline the entire process. Knit takes care of all the authentication, authorization, and ongoing integration maintenance, this approach not only saves time but also ensures a smooth and reliable connection to your BreatheHR API.

Tutorials
-
Aug 7, 2024

Get all open jobs from Sage Recruitment API

Introduction

This article is a part of a series of articles covering the Sage Recruitment API in depth, and covers the specific use case of using the Sage Recruitment API to Get all open jobs from Sage Recruitment API.
You can find all the other use cases we have covered for the Sage Recruitment API along with a comprehensive deep dive on its various aspects like authentication, rate limits etc here.

Get all open jobs from Sage Recruitment API

Overview

To retrieve all open jobs from the Sage Recruitment API, you need to make a GET request to the /api/recruitment/positions endpoint with the appropriate query parameters. Below is a step-by-step guide on how to achieve this using Python.

Step-by-Step Guide

1. Set Up Your Environment

Ensure you have the requests library installed. You can install it using pip:

pip install requests

2. Define the API Endpoint and Parameters

Set the API endpoint and the required headers, including the authorization token. Use the query parameter status=open to filter for open jobs.

import requests

# Define the API endpoint
url = "https://subdomain.sage.hr/api/recruitment/positions"

# Set the headers
headers = {
    "X-Auth-Token": "your_auth_token_here"
}

# Set the query parameters
params = {
    "status": "open",
    "per_page": 100  # Adjust as needed
}

# Make the GET request
response = requests.get(url, headers=headers, params=params)

# Check if the request was successful
if response.status_code == 200:
    open_jobs = response.json()
    print(open_jobs)
else:
    print(f"Failed to retrieve open jobs: {response.status_code}")

3. Handle Pagination

If there are multiple pages of results, you need to handle pagination to retrieve all open jobs. Below is an example of how to do this:

import requests

# Define the API endpoint
url = "https://subdomain.sage.hr/api/recruitment/positions"

# Set the headers
headers = {
    "X-Auth-Token": "your_auth_token_here"
}

# Initialize parameters
params = {
    "status": "open",
    "per_page": 100,  # Adjust as needed
    "page": 1
}

# Initialize a list to store all open jobs
all_open_jobs = []

while True:
    # Make the GET request
    response = requests.get(url, headers=headers, params=params)
    
    # Check if the request was successful
    if response.status_code == 200:
        data = response.json()
        all_open_jobs.extend(data["data"])
        
        # Check if there are more pages
        if data["meta"]["next_page"]:
            params["page"] = data["meta"]["next_page"]
        else:
            break
    else:
        print(f"Failed to retrieve open jobs: {response.status_code}")
        break

print(all_open_jobs)

Conclusion

By following these steps, you can retrieve all open jobs from the Sage Recruitment API. Adjust the parameters as needed to fit your specific requirements.

Knit for Sage Recruitment API Integration

For quick and seamless access to Sage Recruitment API, Knit API offers a convenient solution. By integrating with Knit just once, you can streamline the entire process. Knit takes care of all the authentication, authorization, and ongoing integration maintenance, this approach not only saves time but also ensures a smooth and reliable connection to your Sage Recruitment API.

Tutorials
-
Aug 7, 2024

Get job applications from Sage Recruitment API

Introduction

This article is a part of a series of articles covering the Sage Recruitment API in depth, and covers the specific use case of using the Sage Recruitment API to Get job applications from Sage Recruitment API.
You can find all the other use cases we have covered for the Sage Recruitment API along with a comprehensive deep dive on its various aspects like authentication, rate limits etc here.

Get job applications from Sage Recruitment API

Overview

To retrieve job applications from the Sage Recruitment API, you can utilize the listApplicants and applicantDetails endpoints. This guide provides a step-by-step approach to fetch the first name, last name, and email of each candidate who has applied to a specific job.

Step-by-Step Guide

1. List Applicants for a Specific Job

First, use the listApplicants endpoint to get a list of applicants for a specific job position.

import requests

# Define the endpoint and parameters
position_id = 123  # Replace with your specific job position ID
url = f"https://subdomain.sage.hr/api/recruitment/positions/{position_id}/applicants"
headers = {
    "X-Auth-Token": "your_auth_token"  # Replace with your actual auth token
}

# Make the GET request
response = requests.get(url, headers=headers)
applicants = response.json().get('data', [])

# Extract applicant IDs
applicant_ids = [applicant['id'] for applicant in applicants]

2. Get Details for Each Applicant

Next, use the applicantDetails endpoint to fetch detailed information for each applicant.

applicant_details = []

for applicant_id in applicant_ids:
    url = f"https://subdomain.sage.hr/api/recruitment/applicants/{applicant_id}"
    response = requests.get(url, headers=headers)
    data = response.json().get('data', {})
    applicant_details.append({
        "first_name": data.get("first_name"),
        "last_name": data.get("last_name"),
        "email": data.get("email")
    })

# Print the applicant details
for detail in applicant_details:
    print(detail)

3. Example Output

The output will be a list of dictionaries containing the first name, last name, and email of each applicant.

[
    {"first_name": "Jon", "last_name": "Vondrak", "email": "jon.vondrak@example.com"},
    {"first_name": "Samantha", "last_name": "Cross", "email": "sam.cross@example.com"}
]

Knit for Sage Recruitment API Integration

For quick and seamless access to Sage Recruitment API, Knit API offers a convenient solution. By integrating with Knit just once, you can streamline the entire process. Knit takes care of all the authentication, authorization, and ongoing integration maintenance, this approach not only saves time but also ensures a smooth and reliable connection to your Sage Recruitment API.

Tutorials
-
Aug 2, 2024

Get employee details from Zenefits API

Introduction

This article is a part of a series of articles covering the Zenefits API in depth, and covers the specific use case of using the Zenefits API to Get employee details from Zenefits API.
You can find all the other use cases we have covered for the Zenefits API along with a comprehensive deep dive on its various aspects like authentication, rate limits etc here.

Get Employee Details from Zenefits API

Overview

The Zenefits API allows you to retrieve detailed information about employees within a company. To get the first name, last name, manager name, and date of joining for each employee, you will need to use multiple API endpoints. Below is a step-by-step guide with Python code snippets to achieve this.

Step-by-Step Guide

1. Get All Employees

First, you need to retrieve the list of all employees in the company using the /core/companies/{company_id}/people endpoint.

import requests

def get_employees(company_id, access_token):
    url = f"https://api.zenefits.com/core/companies/{company_id}/people"
    headers = {
        "Authorization": f"Bearer {access_token}"
    }
    response = requests.get(url, headers=headers)
    return response.json()["data"]["data"]

company_id = "your_company_id"
access_token = "your_access_token"
employees = get_employees(company_id, access_token)

2. Get Employee Details

For each employee, retrieve detailed information using the /core/people/{id} endpoint.

def get_employee_details(employee_id, access_token):
    url = f"https://api.zenefits.com/core/people/{employee_id}"
    headers = {
        "Authorization": f"Bearer {access_token}"
    }
    response = requests.get(url, headers=headers)
    return response.json()["data"]

employee_details = [get_employee_details(emp["id"], access_token) for emp in employees]

3. Extract Required Information

Extract the first name, last name, manager name, and date of joining from the employee details.

def extract_employee_info(employee):
    first_name = employee.get("first_name")
    last_name = employee.get("last_name")
    manager_url = employee.get("manager", {}).get("url")
    date_of_joining = employee.get("employments", {}).get("data", [{}])[0].get("hire_date")
    
    manager_name = None
    if manager_url:
        manager_id = manager_url.split("/")[-1]
        manager_details = get_employee_details(manager_id, access_token)
        manager_name = f"{manager_details.get('first_name')} {manager_details.get('last_name')}"
    
    return {
        "first_name": first_name,
        "last_name": last_name,
        "manager_name": manager_name,
        "date_of_joining": date_of_joining
    }

employee_info_list = [extract_employee_info(emp) for emp in employee_details]

4. Display the Information

Finally, display the extracted information.

for info in employee_info_list:
    print(f"First Name: {info['first_name']}, Last Name: {info['last_name']}, Manager: {info['manager_name']}, Date of Joining: {info['date_of_joining']}")

Knit for Zenefits API Integration

For quick and seamless access to Zenefits API, Knit API offers a convenient solution. By integrating with Knit just once, you can streamline the entire process. Knit takes care of all the authentication, authorization, and ongoing integration maintenance, this approach not only saves time but also ensures a smooth and reliable connection to your Zenefits API.

Tutorials
-
Aug 2, 2024

Get employee details from Namely API

Introduction

This article is a part of a series of articles covering the Namely API in depth, and covers the specific use case of using the Namely API to Get employee details from Namely API.
You can find all the other use cases we have covered for the Namely API along with a comprehensive deep dive on its various aspects like authentication, rate limits etc here.

Get Employee Details from Namely API

Overview

To retrieve employee details such as first name, last name, and date of birth from the Namely API, you can use the GET /profiles endpoint. This endpoint returns all active and inactive employee profiles. Below is a step-by-step guide to achieve this using Python.

Step-by-Step Guide

1. Set Up Your Environment

Ensure you have the necessary Python packages installed. You can install the requests library using pip:

pip install requests

2. Define the API Endpoint and Headers

Set up the API endpoint and headers, including your API key for authorization.

import requests

sub_domain = 'your_sub_domain'
api_key = 'your_api_key'
url = f'https://{sub_domain}.namely.com/api/v1/profiles'
headers = {
    'Accept': 'application/json',
    'Authorization': f'Bearer {api_key}'
}

3. Make the API Request

Make a GET request to the Namely API to retrieve the profiles.

response = requests.get(url, headers=headers)
profiles = response.json().get('profiles', [])

4. Extract Required Information

Extract the first name, last name, and date of birth from the profiles.

employee_details = []
for profile in profiles:
    first_name = profile.get('first_name')
    last_name = profile.get('last_name')
    dob = profile.get('dob')
    employee_details.append({
        'first_name': first_name,
        'last_name': last_name,
        'dob': dob
    })

5. Print or Use the Extracted Data

You can now print or use the extracted employee details as needed.

for employee in employee_details:
    print(f"First Name: {employee['first_name']}, Last Name: {employee['last_name']}, Date of Birth: {employee['dob']}")

Knit for Namely API Integration

For quick and seamless access to Namely API, Knit API offers a convenient solution. By integrating with Knit just once, you can streamline the entire process. Knit takes care of all the authentication, authorization, and ongoing integration maintenance, this approach not only saves time but also ensures a smooth and reliable connection to your Namely API.

Tutorials
-
Aug 2, 2024

Get employee details from BambooHR API

Introduction

This article is a part of a series of articles covering the BambooHR API in depth, and covers the specific use case of using the BambooHR API to Get employee details .
You can find all the other use cases we have covered for the BambooHR API along with a comprehensive deep dive on its various aspects like authentication, rate limits etc here.

BambooHR API: Get Employee Details

Overview

To retrieve detailed information about employees in BambooHR, you can utilize multiple APIs. This guide provides a step-by-step approach to get the first name and last name of all employees using the BambooHR API.

Step-by-Step Guide

Step 1: Get Employee Directory

First, you need to fetch the employee directory, which contains basic information about all employees.

Endpoint

GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/directory

Headers
  • Accept: application/json
Path Parameters
  • companyDomain: The subdomain used to access BambooHR. For example, if you access BambooHR at https://mycompany.bamboohr.com, then the companyDomain is mycompany.
Sample Python Code
import requests

company_domain = 'your_company_domain'
url = f'https://api.bamboohr.com/api/gateway.php/{company_domain}/v1/employees/directory'
headers = {
    'Accept': 'application/json',
    'Authorization': 'Basic YOUR_API_KEY'
}

response = requests.get(url, headers=headers)
if response.status_code == 200:
    employees = response.json().get('employees', [])
    for employee in employees:
        print(f"First Name: {employee.get('firstName')}, Last Name: {employee.get('lastName')}")
else:
    print(f"Failed to retrieve employee directory: {response.status_code}")

Step 2: Get Employee Dependents (Optional)

If you need additional details such as employee dependents, you can use the following endpoint.

Endpoint

GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employeedependents

Headers
  • Accept: application/json
Path Parameters
  • companyDomain: The subdomain used to access BambooHR.
Query Parameters
  • employeeid: The employee ID to limit the response to a specific employee.
Sample Python Code
employee_id = 'specific_employee_id'
url = f'https://api.bamboohr.com/api/gateway.php/{company_domain}/v1/employeedependents?employeeid={employee_id}'
response = requests.get(url, headers=headers)
if response.status_code == 200:
    dependents = response.json().get('Employee Dependents', [])
    for dependent in dependents:
        print(f"Dependent Name: {dependent.get('firstName')} {dependent.get('lastName')}")
else:
    print(f"Failed to retrieve employee dependents: {response.status_code}")

Knit for BambooHR API Integration

For quick and seamless access to BambooHR API, Knit API offers a convenient solution. By integrating with Knit just once, you can streamline the entire process. Knit takes care of all the authentication, authorization, and ongoing integration maintenance, this approach not only saves time but also ensures a smooth and reliable connection to your BambooHR API.

Tutorials
-
Jul 23, 2024

Get Employee Details from Workline API

Introduction

This article is a part of a series of articles covering the Workline API in depth, and covers the specific use case of using the Workline API to Get Employee Details from Workline API.
You can find all the other use cases we have covered for the Workline API along with a comprehensive deep dive on its various aspects like authentication, rate limits etc here.

Get Employee Details from Workline API

Overview

The Workline API provides various endpoints to retrieve detailed information about employees. To get the first name, last name, and email for all employees, you can utilize multiple APIs provided by Workline. Below is a step-by-step guide using Python to achieve this.

Step-by-Step Guide

1. Set Up Basic Authentication

All API requests require basic authentication. Ensure you have your AppID, Username, and Password ready.

2. Define API Endpoints

We will use the following API endpoints:

  • https://{domain}.workline.hr/api/GetEmployeesData
  • https://{domain}.workline.hr/api/GetEmpDetails

3. Fetch Employee Data

First, we will fetch the basic employee data using the GetEmployeesData endpoint.

import requests
from requests.auth import HTTPBasicAuth

domain = 'your_domain'
app_id = 'your_app_id'
username = 'your_username'
password = 'your_password'
start_date = '10-Apr-2019'
end_date = '25-May-2019'

url = f'https://{domain}.workline.hr/api/GetEmployeesData'
headers = {
    'AppID': app_id,
    'StartDate': start_date,
    'EndDate': end_date
}

response = requests.post(url, headers=headers, auth=HTTPBasicAuth(username, password))
employees = response.json()

for employee in employees:
    print(employee['FirstName'], employee['LastName'], employee['Emailid'])

4. Fetch Additional Employee Details

For more detailed information, you can use the GetEmpDetails endpoint.

for employee in employees:
    email_id = employee['Emailid']
    url = f'https://{domain}.workline.hr/api/GetEmpDetails'
    headers = {
        'AppID': app_id,
        'EmailID': email_id
    }
    
    response = requests.post(url, headers=headers, auth=HTTPBasicAuth(username, password))
    emp_details = response.json()
    
    for detail in emp_details:
        print(detail['FirstName'], detail['LastName'], detail['Emailid'])

5. Combine Data

To combine data from both endpoints, you can store the results in a list or a dictionary.

combined_data = []

for employee in employees:
    email_id = employee['Emailid']
    url = f'https://{domain}.workline.hr/api/GetEmpDetails'
    headers = {
        'AppID': app_id,
        'EmailID': email_id
    }
    
    response = requests.post(url, headers=headers, auth=HTTPBasicAuth(username, password))
    emp_details = response.json()
    
    for detail in emp_details:
        combined_data.append({
            'FirstName': detail['FirstName'],
            'LastName': detail['LastName'],
            'Emailid': detail['Emailid']
        })

print(combined_data)

Conclusion

By following the above steps, you can efficiently retrieve the first name, last name, and email of all employees using the Workline API.

Knit for Workline API Integration

For quick and seamless access to Workline API, Knit API offers a convenient solution. By integrating with Knit just once, you can streamline the entire process. Knit takes care of all the authentication, authorization, and ongoing integration maintenance, this approach not only saves time but also ensures a smooth and reliable connection to your Workline API.

Tutorials
-
Jul 19, 2024

Fetch all Employee Details from Rippling API

Introduction

This article is a part of a series of articles covering the Rippling API in depth, and covers the specific use case of using the Rippling API to Fetch all Employee Details from Rippling API.
You can find all the other use cases we have covered for the Rippling API along with a comprehensive deep dive on its various aspects like authentication, rate limits etc here.

Fetch all Employee Details from Rippling API

Step 1: Get Current User Information

First, retrieve the current user information to ensure you have the correct access token and company ID.

import requests

url = "https://api.rippling.com/platform/api/me"
headers = {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_ACCESS_TOKEN"
}

response = requests.get(url, headers=headers)
current_user = response.json()
company_id = current_user['company']

Step 2: Fetch All Employees Including Terminated

Next, use the company ID to fetch all employees, including terminated ones. Ensure pagination for optimal performance.

def fetch_employees(company_id, limit=100, offset=0):
    url = "https://api.rippling.com/platform/api/employees/include_terminated"
    headers = {
        "Accept": "application/json",
        "Authorization": "Bearer YOUR_ACCESS_TOKEN"
    }
    params = {
        "EIN": company_id,
        "limit": limit,
        "offset": offset
    }
    response = requests.get(url, headers=headers, params=params)
    return response.json()

employees = []
offset = 0
while True:
    batch = fetch_employees(company_id, limit=100, offset=offset)
    if not batch:
        break
    employees.extend(batch)
    offset += 100

Step 3: Extract Required Employee Details

Finally, extract the first name, last name, email ID, and manager name for each employee.

employee_details = []
for employee in employees:
    details = {
        "first_name": employee.get("firstName"),
        "last_name": employee.get("lastName"),
        "email_id": employee.get("workEmail"),
        "manager_name": None
    }
    manager_id = employee.get("manager")
    if manager_id:
        manager_response = requests.get(f"https://api.rippling.com/platform/api/employees/{manager_id}", headers=headers)
        manager = manager_response.json()
        details["manager_name"] = manager.get("name")
    employee_details.append(details)

print(employee_details)

Knit for Rippling API Integration

For quick and seamless access to Rippling data, the Knit API offers a convenient solution. By integrating with Knit just once, you can streamline the entire process. Knit takes care of all the authentication, authorization, and ongoing integration maintenance, this approach not only saves time but also ensures a smooth and reliable connection to your Rippling data.

Tutorials
-
Jul 19, 2024

Get All Employees Details from Freshteam API

Introduction

This article is a part of a series of articles covering the Freshteam API in depth, and covers the specific use case of using the Freshteam API to Get All Employees Details from Freshteam API.
You can find all the other use cases we have covered for the Freshteam API along with a comprehensive deep dive on its various aspects like authentication, rate limits etc here.

Get All Employees Details from Freshteam API

Overview

To retrieve the first name, last name, email ID, and employee ID of all employees from the Freshteam API, you can use the GET /api/employees endpoint. This endpoint allows you to list all employees and filter the response based on various query parameters.

Step-by-Step Guide

1. Set Up Authentication

Ensure you have your Freshteam API key. You will need to include this key in the authorization header of your requests.

2. Make the API Request

Use the GET /api/employees endpoint to retrieve the list of employees. You can filter the response using query parameters if needed.

3. Extract Required Information

From the response, extract the first name, last name, email ID, and employee ID of each employee.

Python Code Snippet
import requests

# Define the API endpoint and headers
url = "https://.freshteam.com/api/employees"
headers = {
    "accept": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"
}

# Make the API request
response = requests.get(url, headers=headers)

# Check if the request was successful
if response.status_code == 200:
    employees = response.json()
    for employee in employees:
        first_name = employee.get('first_name')
        last_name = employee.get('last_name')
        email_id = employee.get('official_email')
        employee_id = employee.get('employee_id')
        print(f"First Name: {first_name}, Last Name: {last_name}, Email ID: {email_id}, Employee ID: {employee_id}")
else:
    print(f"Failed to retrieve employees: {response.status_code}")

Knit for Freshteam API Integration

For quick and seamless access to Freshteam data, the Knit API offers a convenient solution. By integrating with Knit just once, you can streamline the entire process. Knit takes care of all the authentication, authorization, and ongoing integration maintenance, this approach not only saves time but also ensures a smooth and reliable connection to your Freshteam data.

Tutorials
-
Jul 9, 2024

How to get employee data from BambooHR API

If you are looking to connect with multiple apps, try Knit universal API to integrate with 20+ HRIS apps with a single API key. Sign up for free trial by clicking here. If you are looking to do connect with BambooHR API yourself, keep reading

BambooHR is a popular cloud-based human resource management software that helps businesses manage their HR operations, including employee data management, onboarding, performance tracking, and more. In addition to its user-friendly interface, BambooHR also provides an API that allows developers to programmatically access and update employee data.

Employee data is a critical component of HR operations, providing valuable insights into employee performance, engagement, and overall organizational health. 

With the increasing emphasis on data-driven decision making, businesses are looking for ways to harness the power of employee data to drive growth and productivity.

In this article, we will provide a comprehensive guide to using the BambooHR API to retrieve and manage employee data in more than one way.

BambooHR API Rate Limit and Documentation Reference

When working with the BambooHR API, it's essential to understand the rate limits and have access to comprehensive documentation to ensure smooth integration and usage. While specific details on the API rate limit for BambooHR were not explicitly found, we encourage you to refer to the official documentation for the most accurate and up-to-date information.

BambooHR API Documentation

For detailed guidance and reference, you can access the BambooHR API documentation through the following URLs:

These resources provide extensive information on how to use the BambooHR API, including endpoints, request formats, and examples. Whether you are looking to integrate employee data, manage hours, or perform other HR-related tasks, the documentation will be invaluable.

For any specific queries or further assistance, it is always a good idea to reach out to BambooHR support or consult the community forums.

Overview of BambooHR API endpoints for employee data

BambooHR uses a RESTful API, which is a web-based architectural style and approach to communications that is often used in web services development. The BambooHR API provides various endpoints for employee data, including:

  • Employee information: this includes data such as the employee's name, email address, job title, department, and other personal information.
  • Job information: This includes data such as the employee's job title, job description, start date, and other job-related information.
  • Time off: This includes data such as the employee's vacation, sick days, and other time off.
  • Company directory: This includes data on all employees in the company, including their contact information and job titles.
  • Reports: This allows you to generate reports on employee data, such as a report on employee turnover or employee performance.

Authorization in BambooHR API

When working with the BambooHR API, understanding the authorization mechanism is crucial for ensuring secure and efficient access to the data and functionalities provided by the API. This step-by-step guide will walk you through the process of authorizing your application to interact with the BambooHR API.

Step-by-Step Guide to Authorization in BambooHR API
  1. API Key Generation:
    • The first step in the authorization process is generating an API key. This key acts as a unique identifier that allows your application to authenticate with the BambooHR API.
    • To generate an API key, log in to your BambooHR account and navigate to the API settings. Here, you can create a new API key specifically for your application.
  2. Include API Key in Requests:
    • Once you have your API key, you need to include it in the header of every API request you make. The API key should be included as a Basic Authentication header.
    • The format for the header is as follows:Authorization: Basic {base64encoded_api_key}
    • Note that the API key must be base64 encoded before being included in the header.
  3. Base64 Encoding:
    • To encode your API key in base64, you can use various online tools or programming libraries. For example, in Python, you can use the base64 library:
      import base64

      api_key = 'your_api_key_here'

      encoded_key = base64.b64encode(api_key.encode('utf-8')).decode('utf-8')
                     
    • This encoded key is then used in the Authorization header of your API requests.
  4. Making Authorized Requests:
    • With your API key properly encoded and included in the header, you can now make authorized requests to the BambooHR API.
    • Here is an example of how to structure an authorized GET request using Python's requests library:
      import requests



      url = 'https://api.bamboohr.com/api/gateway.php/your_company_domain/v1/employees'

      headers = {

         'Authorization': f'Basic {encoded_key}',

         'Accept': 'application/json'

      }



      response = requests.get(url, headers=headers)



      if response.status_code == 200:

         print('Request was successful')

         print(response.json())

      else:

         print('Failed to retrieve data')

         print(response.status_code)

                     
  5. Handling Errors and Permissions:
    • Ensure that your API key has the necessary permissions to access the endpoints you are targeting. If you encounter authorization errors, double-check the permissions associated with your API key.
    • Common HTTP status codes to watch for include:
      • 401 Unauthorized: Indicates that the API key is missing or incorrect.
      • 403 Forbidden: Indicates that the API key does not have permission to access the requested resource.

By following these steps, you can securely authorize your application to interact with the BambooHR API, ensuring that your data transactions are both secure and efficient.

Setting Up BambooHR Account

To get started with using the BambooHR API, you'll first need to set up a BambooHR account and enable API access. Here's how:

Sign up for a BambooHR account

To sign up for a BambooHR account, go to the BambooHR website and click on the "Try It Free" button. 

Follow the step-by-step instructions to set up your account. You'll need to provide some basic information, such as your company name, email address, and password. You'll also need to select a pricing plan based on the number of employees in your organization and the features you need.

However, in this demo, we are “trying it for free” so we do not have to select the pricing plan. Once you have filled in the information click on “Get Free Trial”.

When you see this screen, click on “We’re Ready!” button.

From here, follow the subsequent instructions (provide a strong password, accept terms and conditions) to finish your sign up process using the email and password you supplied earlier.

When you see the following screen, click next.

Check all of these or at least what you need and click“Done” button.

If you have followed the necessary steps of signing up for your BambooHR account, you should land here:

How to create a BambooHR API key

Once you have a BambooHR account, you can create an API key to access the data associated with your BambooHR API. To create the API key, log in to your BambooHR account and navigate to the "API Keys" page in the "Account" section.

Click on the "Add a New Key" button.

You will need to provide a name for your API key, which will help you identify it later and click “Generate Key”.

A key will be displayed. You can copy it and save it somewhere safe. After successfully saving your key, click “Done”.

After successfully saving your API key, your API key would be listed under My API Keys:

In the next section, we will discuss multiple use cases for the the BambooHR API.

Get employee data using BambooHR API

BambooHR allows you to access and update employee data for individual employees as well as in bulk. 

Retrieve All Employees Information

Copy to clipboard
        
import requests
           	
subdomain = 'syncflowsolutions'
 
# Replace {subdomain} with your BambooHR credentials
url = f"https://api.bamboohr.com/api/gateway.php/{subdomain}/v1/employees/directory"
 
headers = {
    "Accept": "application/json",
    "Authorization": "Basic ZTgyOGU3YzUyNGRlNmNkMmMxZTc0YWUxNDY1YmI0NDQ5NmY0YjVhNTpKRDg2UXA4ZS4qTHNKUXA="
}
 
response = requests.get(url, headers=headers)
 
if response.status_code == 200:
    employee_data = response.json()
    # Do something with the employee data
    print(employee_data)
else:
    print('Error retrieving employee data')
        
    

The code snippet above will retrieve records for all employees from the feature called directory.

Pitfall to avoid

One common pitfall to avoid here involves the use of the Company Directory feature. While this feature can be managed and disabled by individual companies in their account settings, it can lead to issues when calling the corresponding endpoint. This is because the feature may be disabled, or its behavior may vary across different companies.

Instead, the recommended approach is to use the "request a custom report" API to retrieve bulk employee data, which is a more reliable and consistent method.

Retrieve information for one employee

To retrieve information about a specific employee, you can make a GET request to this endpoint:

Copy to clipboard
        
https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/
        
    

 where {id} is the ID of the employee you want to retrieve and {companyDomain} is the company subdomain.

This endpoint allows you to retrieve employee data by specifying a set of fields. It is ideal for retrieving basic employee information, including current values for fields that are part of a historical table such as job title or compensation information.

Extract data from BambooHR API using Python

Copy to clipboard
        
	
 import requests
# Set the API URL and headers
subdomain = 'syncflowsolutions'
# Replace {subdomain} with your BambooHR credentials
id = 0
url = f"https://api.bamboohr.com/api/gateway.php/{subdomain}/v1/employees/{id}/"
headers = {
    "Accept": "application/json",
    "Authorization": "Basic ZTgyOGU3YzUyNGRlNmNkMmMxZTc0YWUxNDY1YmI0NDQ5NmY0YjVhNTpKRDg2UXA4ZS4qTHNKUXA="
}
# Specify the fields to retrieve and only retrieve current data
params = {
    "fields": "firstName,lastName",
    "onlyCurrent": "true"
}
# Send the GET request and print the response
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
    employee_data = response.json()
    print(employee_data)
else:
    print("Error retrieving employee data")
        
    

This retrieves the data for the employee with ID 0. Make sure to replace {subdomain} with your actual BambooHR credentials.

How to create a new employee with BambooHR API

To create a new employee, you can make a POST request:

Copy to clipboard
        
https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/
        
    

The endpoint allows for the addition of a new employee. It is mandatory to provide at least the first and last names of the new employee. Upon successful creation, the ID of the newly created employee can be found in the response's Location header.

Create a new employee with BambooHR API using Python

Copy to clipboard
        
import requests
subdomain = 'syncflowsolutions'        	
# Replace {subdomain} with your BambooHR credentials
url = f"https://api.bamboohr.com/api/gateway.php/{subdomain}/v1/employees/"
payload = {
    "firstName": "Tiberius",
    "lastName": "Mairura"
}
headers = {               	
    "content-type": "application/json",
    "authorization": "Basic ZTgyOGU3YzUyNGRlNmNkMmMxZTc0YWUxNDY1YmI0NDQ5NmY0YjVhNTpKRDg2UXA4ZS4qTHNKUXA="
}
try:
    response = requests.post(url, json=payload, headers=headers)
    response.raise_for_status()
    print(response.text)
except requests.exceptions.HTTPError as error:
    print(f"HTTP error occurred: {error}")
except Exception as error:
    print(f"An error occurred: {error}")
        
    

This creates a new employee with the specified data. Make sure to replace `{subdomain}` with your actual BambooHR credentials.

Update employee data from BambooHR API using Python

To update an existing employee's data, you can make a PUT request to the `/employees/{id}` endpoint with a JSON payload containing the updated employee data.

Here's an example using Python requests library:

Copy to clipboard
        
	 
import requests
id = 134
url = f"https://api.bamboohr.com/api/gateway.php/syncflowsolutions/v1/employees/{id}/"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Basic ZTgyOGU3YzUyNGRlNmNkMmMxZTc0YWUxNDY1YmI0NDQ5NmY0YjVhNTpKRDg2UXA4ZS4qTHNKUXA="
}
payload = {
    "firstName": "Tiberius .O",
    "lastName": "Mairura"
}
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
    print('Employee updated successfully!')
else:
    print(f"Error: {response.status_code} - {response.text}")
         
    

This updates the data for the employee with ID 134 with the specified data. Make sure to replace {subdomain} with your actual BambooHR credentials.

How to handle pagination

Pagination for BambooHR API is case-specific. 

  • BambooHR does not support pagination in the employee directory API, so when retrieving employee data, the BambooHR API will return all the results in one go. The default number of records per response is 50, but you can specify a different number of records using the limit query parameter.
  • However, for some other APIs in BambooHR, such as the time-off requests and time-off balances APIs, pagination is supported. To handle pagination, you can use the page and per_page query parameters. The page parameter specifies which page of results to return, and the per_page parameter specifies the number of results per page.

To navigate to the next page of results, you can use the next URL provided in the Link header of the response.

Get started with BambooHR API

In conclusion, the BambooHR API is a valuable tool for any organization looking to streamline their HR and employee data management processes. By leveraging the power of the API, organizations can improve their operations, reduce manual data entry, and gain deeper insights into their workforce.

If you need to quickly get access to BambooHR data, Knit unified API can make it easier for you. Knit is a unified API that connects 40+ HR and ATS APIs via a single, unified API. All you need to do is to integrate once with Knit, and all the authentication, authorization and integration maintenance will be done by Knit.

Talk to our sales team to learn more or get you free API key today

Tutorials
-
Sep 21, 2023

How to Build and Deploy a Microsoft Teams Bot

Using Knit's Communication APIs, you can send text as well as interactive messages to any Teams channel or user either using Knit's Bot or your own Bot. In this guide, we will help you understand which kind of bot to use for development and production.

Using Knit's Teams Bot

The Knit Unified API's Teams Bot is for only testing and getting familiar with communication APIs. For the production use cases, organizations must setup their own bots.

Using Knit MS Teams bot for communication purpose mainly requires two steps-

Step I: Adding the Teams link during setup

  1. First, you click on the MS Teams icon in the communication section of Knit apps.
  2. On clicking the MS Teams icon you have to add your Teams link in which the bot needs to be installed [Check this out How to get teams link]
how to build a MS Teams Bot

Step II: Installing Knit's Bot in the team

1. The Knit Bot will be installed via a package file provided by us. Click on the _**Upload an app**_

2. Then choose_**Upload a custom app**_ . Add Knit's Package here. [Knit's Bot Package]

3. After successful upload a pop-up will open where you click on - _**Add to a team**_

4. Then select the _**General**_ channel in the populated channels list.

👍 Congratulations your setup is complete. You can use this Bot for development or testing purpose.

Using Your own Bot

You should use your own Bot in production. Do not use Knit's Bot for production use cases.

This involves a two step process -

  1. Create your Bot with the MS Teams.
  2. Provide OAuth credentials to knit using [Register OAuth Cred]

Create your Bot with MS Teams

1. First, you need _Developer Portal_ App from Microsoft Teams Store to build MS Teams Bot.

create your own bot with Microsoft Teams

2.After Installing it, open and navigate to the _ Apps_ section.

3. Now, select the **+** icon to create a new app.

4. When you add the name of your app, you will be asked to provide the Developer name, terms of use etc in the _Basic Information_ section. Fill out all the details carefully and then click on the  _Save_ button.

 5. Next, visit the _Branding_  section to add your icon and other display information.

6. Click on the _App Features_ section and select _Bot_.

7. Next, create one Bot by selecting _Create a new Bot_.

create MS Teams bot

8. Here, you will see the **+** icon to add a new Bot.

9. After giving Name to the Bot, you need to configure the endpoint address. Set this to [Teams Bot End Point]

10. Click on the _Client Secrets_ option and then _Generate Client Secret_. (Keep this information handy it will be required during OAuth Registration with Knit.)

11. Now, copy this key as it is a one time secret. After clicking _OK _ you will be shown the below screen and your Bot would have been configured.

MS teams bot

12.Now you need to link this bot to your newly created App in _Step 6_. You will see this bot in the dropdown. Select this Bot, then select _Team_ scope and click on _Save_ button.

Distributing your app to clients

1. Click on the _Publish_ button on the top right corner in the app home page.

2. You will see the following options.

To use within your org, select publish to org. For distributing to clients download the package.

3. If you have followed the right steps and filled in all the necessary information correctly, you will be able to download it.

If you have missed any of mandatory fields, errors will be listed for missing fields shown in the image below

4. In the example above, the developer website URL, privacy terms etc. are missing. You need to fix all errors before you can download the package. It can be used to install in any team using steps described in the section _Using Knit's Teams Bot_.

Tutorials
-
Sep 21, 2023

What Should You Look For in A Unified API Platform?

Every SaaS company knows the difficulty of building and managing all integrations in-house. It  not only puts unnecessary strain on your engineering teams and resources but also leads to (avoidable) financial cost. 

Using a unified API platform can help you achieve integration success without spending unnecessary bandwidth or money. Let’s have a look at what a unified API platform is and what things you must check to make the right choice.

What is a unified API?

A unified API platform helps companies integrate the various applications, systems and software they use in a single, centralized platform. Such a platform makes the communication and exchange of data between the different applications seamless, quick and effective. With a unified API, data flow gets extremely streamlined, and it eliminates the need to manage multiple points of contacts for integrations. 

Of course, building all integrations in-house  is an alternative solution, when the number of integrations increase exponentially, individual connections can be difficult (and impractical) to manage and maintain from a technical standpoint. A unified API platform takes the friction out of such integration management with low-code or no-code solutions to reduce complexities and centralize integration management.  

Why do you need a unified API

 In any SaaS company, developers should focus on the core product roadmap – enhancing its features and usability Everything else, including building and maintaining integrations, becomes a non-core activity. 

Before we move onto the factors that should influence your unified API choice, let’s look at some of the real life advantages: 

1. Ease of extraction & transformation 

An integral part of data exchange that integrations rely on revolves around ETL or extraction, transformation and load. When performed manually for disparate applications, the processes can be highly time consuming. However, a unified integration platform can centralize the processes together and enable real-time data insights. It can automatically facilitate the extraction of data from operating systems like the ERP or the CRM and simultaneously transform it for effective use by different applications and systems within the platform. It reduces the burden on engineering teams to extract legacy data and automates the process of cleansing it to improve data quality and consistency for use by different applications. 

2. Improved efficiency

In addition to the ease of extraction and transformation, a unified API platform adds efficiency to the way businesses or developers leverage integrations. On the one hand, as it automates the process and reduces manual data entry, the incidence of errors and data contamination become significantly low. On the other hand, unified APIs facilitate data flow in real-time in different formats and protocols  while maintaining accuracy and timeliness, allowing applications and systems to exchange and access different data sets instantly. Companies no longer have to focus on data format similarity.

3. Reduced time-to-market and costs

A unified API  can help companies significantly reduce their time to market with new integrations that are needed with changing business realities. It can enable business agility by ensuring that new applications and systems are integrated in real-time with pre-built connectors without the need to build the integration API from scratch.

At the same time, costs associated with integrations also come down when companies use unified APIs. On the one hand, the cost of manual data entry and costs associated with errors is significantly reduced with automated data exchange. On the other hand, without a unified API , companies have to bear the monetary burden of maintaining multiple point-to-point connectors for data exchange between applications. Building an in-house integration can take anywhere between 2 weeks to 3 months. With a developer salary ranging from USD 80K to USD 125K, each integration can cost USD 10K to companies. At the same time, building it in-house can delay your core product offering by 3-6 months, putting you at a market disadvantage. 

What to look for in  a unified API solution 

Now that you understand how a unified integration platform can assist your product roadmap journey and facilitate business success, let’s look at some of the features your unified API tool must have .

1. Security and resilience

Start by understanding the security protocols in place for the unified API to ensure the confidentiality and security of your and your client’s data. 

Since the API tool  will have access to all the data that goes through your different applications, you need to ensure that the platform has robust security measures like risk based security, data encryption at rest/ in transit, least privilege security, continuous logging and access controls. Lack of effective security measures can render you vulnerable to security threats and data breaches. 

At the same time, check out whether or not the platform meets the security norms and compliances for your industry. Check the necessary certifications. Additionally, you must understand the security considerations and data access the platform has for your end customers, for how long it stores their data, what data it stores, etc. 

From a security lens, focus on the security posture of the platform for your as well as your end customer’s data, as they may not consent to data storage by a third-party application. Thus, be cognizant of these considerations and understand the security measures to address the same. 

2. Scalability

The main purpose behind using a unified APIis to ensure that you are able to efficiently manage large numbers of integrations and high volumes of data. Therefore, a key feature to look out for is scalability. There are two forces at play here. 

First, you need to check if the platform is able to take the load of your current and future integrations. This suggests you must ensure if it can manage the complexities of managing multiple integrations, a situation that may arise when you add a lot of integrations based on customer expectations. At the same time, you should gauge the number of integrations it is able to manage at once and the potential to add more as time passes. 

Second, the scalability test must understand the volume of data being processed by the platform. As data comes in from diverse sources at a high pace, the platform must support processing of high volume data in seconds. This can be accomplished with batch processing. You must ensure that the platform can easily support high volume requests. 

3. Compatibility 

When you use multiple applications and systems, the data and protocols you receive can be in a variety of types and formats. To facilitate real-time processing and data flow, the unified API platform must be compatible with different formats and should be able to process information accurately. Various protocols could include HTTP, FTP, and SFTP, and there can be different data formats, such as XML, CSV, and JSON. The objective is to ensure that while the sources of data might be different, leading to differences in the types of data you receive, the data which is loaded to other applications must be compatible with their understanding for processing and decision making. 

4. Ease of use and customer experience

The unified API platform that you choose should be easy to deploy, use and manage with a user-friendly and intuitive interface. If the tool requires a lot of technical knowledge to run, it will again eat into the bandwidth of your engineering team. Look for an API that is extremely low-code or nearly no-code to ensure that you don’t have to hire an entire technical team to run your integrations. Most unified APIs have a drag and drop UI, which makes the implementation of integrations very easy and reduces the dependency on technical teams for execution. 

Another factor is the customer experience that the unified API brings along. Since your end customers will be using the integrations, the experience they have will make a lot of difference when it comes to choosing the right platform. How well the customers are able to engage with the integrations and how well the integrations serve their business purposes via the unified platform can be a big defining factor.

At the same time, in case an integration breaks down, i.e. when either the API key becomes invalid or API experiences time out, your unified API platform must be able to seamlessly manage the customer experience flow. Before making a decision, you need to check how well the API tool in consideration ensures uninterrupted customer business even in times of integration breakdown or how quickly it is able to resolve the breakdown. 

Thus, when it comes to choosing the right unified API, make sure that it is easy to use, with low or no-code functionalities and preferably with a drag and drop interface. And look for options that have a proven track record of great customer experience to get an idea of whether or not the platform is able to meet expectations. 

5. Cost 

Another important parameter to look out for while choosing a unified API is the cost. There are several cost components for any platform and you need to check how much will the platform cost you in total, from deployment to end customer use. 

  • Some of the costs include an upfront cost for set up and implementation. 
  • Next, there may be subscription or monthly charges that you will pay to the platform vendor for using the services for providing integrations to your customers. 
  • Finally, there might be some additional or incremental charges for some integrations that you might wish to add later in your product journey. At the same time, you might want to check if the platform has extra costs or charges for providing technical support that your team, especially non-technical persons, might need. 

The cost can be based on connectors being used or CPU usages or data volume or number of users. Understand the pricing structure of the platform and do an in-depth study of your needs as well. Depending on the pricing structure, select the one which suits your budget the most. In general, it is a good practice to choose the platform which does not have constraints on the data volume or where cost is not a direct function of the data volume. 

Also Read: ROI of Unified API and Build vs Buy: What is the ideal approach to SaaS integration (for you)

6. API / SDK documentation

The platform should provide adequate API or SDK (software development kit) documentation. The SDK documentation is important to ensure that your engineering team has the right information to get started. While the unified API tool  is likely to be low-code with a drag and drop interface, you will still need information about the APIs, other components and even simple example codes to help you get started. 

The SDK documentation will help you understand how you can use the various components and functionalities of the API platform to run the various integrations you need. It will also have information on how to configure the platform and integrations as well as the APIs. 

7. Customer support 

A unified API solution  must offer robust support to help you address any challenges that you might face with the various integrations you use. There are many examples of this support here. 

  • First, if there is any error during any process for any integration, the error message should be displayed very clearly and appropriately. It should be in a language you understand and should be easy to communicate to others in the team as well. 
  • Second, once the error becomes clear, the customer support should help you with very clear solutions. It should have crisp directions or guidance on the next steps to address the challenges. The idea is to ensure that all errors are addressed quickly without any lag to ensure good customer experience.
  • Third, the dashboard must have adequate technical resources and documents which can help you stay on top of common errors and ways to resolve them on your end without contacting the customer support team every time. This will help reduce glitches and bugs in minimum time. 
  • Finally, the platform’s technical assistance must be present 24/7 as reliable customer support to assist you in case the shared solution is unclear or your team is unable to implement it. 

Thus, the customer support should ensure that you do not have to deploy additional engineering bandwidth and any error is solved without any friction in a timely manner to reduce lag or delays. 

8. Future roadmap and past record

At a macro level, the unified API solution is itself an application or a software that will get upgraded from time to time. You need to understand the impact of such upgrades on your business. Consider two major factors here. 

First, try to understand the future roadmap of the product. As a platform, are there any expansion plans on the map? Check if the platform has any plan to add more functionalities or support any new integrations that you might want to implement for your company as well. You would want to choose a platform that has a robust plan for growth in the future and not one which has reached its potential, since the market and customer expectations will keep growing. Furthermore, you might want to check if you can influence the product roadmap for the platform in some way to better meet your business needs. 

Second, you need to be equally focused on the historical records of the platform whenever it underwent an upgrade. When an application adds new functionalities or upgrades, there is a chance that existing processes or functionalities get impacted. It could be the addition of new connectors or security upgrades, etc. However, the best platforms ensure negligible or no impact on existing integrations. Therefore, choose a platform which has had a successful history of upgrades to prevent any negative impact on integrations you are using. 

These are some of the things you should look out for while choosing a unified integration platform. You can fall back on customer reviews, case studies and delve into technical assistance for better decision making. Try to research which successful companies are using the unified integration platform in question and how it has enabled them to scale their business with integrations. Also, check which platforms are being used by companies in your domain or the ones that use applications like yours. Finally, it is always best to try and see it for yourself. So, opt for API tools that offer free trials to review and recheck everything you have seen or read about the tool so far.

Wrapping up: TL:DR

As we conclude, it is clear that a unified API platform helps organizations deploy, manage and use different applications and systems from a single, centralized dashboard. It enables:

  • Easy data extraction and transformation
  • Improved efficiency by real-time and error free data exchange
  • Reduced time to market and cost savings

However, the key to integration success lies in choosing the right API tool. When choosing one, look out for:

  • Security and resilience to ensure that the data exchange for your company and your customers is safe and secure and is not vulnerable to unauthorized access
  • Scalability to check if the platform can meet high volume processing for your current and future integration needs
  • Compatibility with different types of data formats and protocols to ensure accuracy during data exchange
  • Ease of use for deployment and implementation with a drag and drop interface and low to no-code functionalities
  • Pleasant customer experience for your end users
  • Overall costs including upfront set up, monthly subscription and additional costs for future integrations/ customer support
  • SDK documentation with information of APIs and other components to successfully configure and use platform without reliance on technical skills
  • Robust customer support with online resources, technical assistance and clear error messages with appropriate solutions to prevent any lag
  • Future roadmap and records to ensure that platform upgrades lead to no or minimal impact on existing integrations

If you keenly look out for these factors, you will easily be able to compare the various platforms and select the right one for your needs. Make sure you have a clear idea of the integrations you need for your customers to map the scope for factors like cost, documentation, scalability, security, etc.

Tutorials
-
Sep 21, 2023

How to Create a Slack Bot in 5 Minutes: A to Z Guide

Using Knit's Communication APIs, you can send text as well as interactive messages to any Slack channel or user either using Knit's Bot or your own Bot. In this guide, we will help you understand which kind of bot to use for development and which one to use for production.

Using Knit's Slack Bot

Knit Slack Bot is meant for testing only. It will help you get familiar with the communication APIs. For the production use cases, you must setup your own bots.

If you wish to use Knit Slack Bot then it is a simple one step process. You just need to select Slack, after which a typical question (similar to other apps) will be asked. You need to follow the OAuth flow and the app will be installed in your workspace. 

However, this should be done only for development/testing. **Please do not use Knit's Bot in production!**

Using your own Bot

You should use your own Bot in production. Do not use Knit's Bot for production use cases.

There are two simple steps to get started with your own Bot.

  1. Create your Bot with Slack.
  2. Register the OAuth creds like client ID and secret of your Bot with Knit.

1. Create your Bot with Slack

Follow these steps below to create a Bot on Slack.

1. Visit Your Apps and sign in with your account to create App.

2. Click on the option: _Create new App_

create a slack bot

3. Select the option: _From scratch_

4. You will be asked to provide a Name of App. You can choose a workspace linked to the signed in account in which you wish to create the app. Click on: _Create App_

5. On clicking _Basic Information_ in the left panel, at the end of page you can add _Display Information_ such as App Image, Description etc.

6.Now, configure the redirect URL .

Things to consider:

1. Use https://app.getknit.dev/oauth/authorize for Production

2. Use https://app.sandbox.getknit.dev/oauth/authorize for Sandbox

3. Do not forget to click on _Save URLs_

building a slack bot

7. Now, add the following scopes

  • channels:read
  • chat:write
  • chat:write.customize
  • chat:write.public
  • groups:read
  • users:read
  • users:read.email
slack bot scopes

8. If you want to subscribe to other Slack events, click here and do the steps mentioned in this guide.

9. Congratulations! Your Bot setup is done. Next, you must enable public distribution of the Bot for your users to discover and use this new Bot. To begin, click on _Manage Distribution_ on the left panel

create a slack bot distribution

10. To finally enable public distribution, just tick the checkbox for _I’ve reviewed and removed any hard-coded information_ and then click on _Activate Public Distribution_ button

11. Congratulations! Your Bot is now available for others to install.

launch your own Slack bot

You have now created your own Slack Bot! However, there's one small step to do before you can use Knit's API on your new Bot.

2. Register the OAuth creds like client ID and secret of your Bot with Knit

Share Bot's client ID and client secret with Knit via Register OAuth Cred API and that's it. You're all set to use Knit's API! 😀