Developer Guide

Use the Developer Guide to find the onboarding process steps, information about authentication methods, and a comprehensive list of the available ABC API endpoints.

Developer Guide

API Overview

Introduction

This document serves as your comprehensive guide to integrating with ABC Supply’s suite of APIs. Whether you’re a third-party developer, a customer looking to streamline operations, or a partner seeking deeper integration with ABC Supply’s systems, this overview will help you understand our API ecosystem and how to leverage it effectively.

ABC Supply’s APIs provide programmatic access to our account information, product catalog, pricing data, branch locations, order management, and event notifications. These APIs are designed to help you build robust integrations that enhance your business processes while maintaining the flexibility that characterizes ABC Supply’s business model.


ABC Supply Business Model Considerations

Understanding ABC Supply’s unique business model is essential for effective integration. Keeping the following concepts in mind as you design your integration solution will allow you to work seamlessly with our APIs.

Accounts

ABC Supply’s data model reflects our business hierarchy and operational structure:

  • Sold-To Account: The primary customer account representing the organization purchasing from ABC Supply
  • Bill-To Account: The account responsible for payment, which may be the same as or different from the Sold-To account
  • Ship-To Account: Also known as a “job account,” this is the account used to determine account-branch association for pricing and ordering. This is not to be confused with the delivery address for an order, though delivering to the Ship-To account address is a valid option.

These entities share the following relationships:

  • A Sold-To account may have multiple Bill-To and Ship-To accounts
  • A Bill-To account is associated with one Sold-To account but may serve multiple Ship-To accounts
  • Each Ship-To account links to one Bill-To account and one Sold-To account
  • Accounts have defined relationships with specific ABC Supply branches

Understanding these relationships is crucial when designing your integration, particularly for order placement and account management operations.

Branches

ABC Supply operates hundreds of branch locations across the United States and Canada. Each branch functions as a semi-independent business under a looser franchise model, with the autonomy to:

  • Determine their own product offerings
  • Set their own pricing on items
  • Manage local inventory and fulfillment
  • Establish branch-specific operating procedures

This means that when integrating with our APIs, you’ll need to account for potential variations in product availability, pricing, and fulfillment options across different branch locations. Your integration should be designed to handle this flexibility while maintaining a consistent experience for your users.Understanding these relationships is crucial when designing your integration, particularly for order placement and account management operations.

Products

ABC Supply’s product catalog includes over 200,000 items. The ABC Supply APIs allow integrators to ingest our entire product catalog, search and retrieve specific item details, verify product availability at ABC Supply branch locations, and access recently or frequent ordered items as well as those marked as “Favorites” in myABCSupply.

The following concepts are important to keep in mind as you integrate with the APIs.

Item Availability

ABC Supply uses availability for item management instead of stock or inventory. Inventory at ABC Supply branches is dynamic, as branches can source from multiple locations to fulfill an order. However, not all ABC Supply branches have the same product offering, and each item is set up in their system locally if they choose to carry it. Item availability determines whether or not a given branch offers the item.

If the preferred branch does not offer an item, they can be contacted directly to discuss offering the item in the future.

Product Families

Product families are the lowest level of categorization of items and are a subcategory of brand line. Every item belongs to a product family, often with items of the same type but different colors, dimensions, or finishes.

When items are initially brought into our catalog, or as items are discontinued, they are moved into temporary “parking lot” families that have a product family ID beginning with “PLot_”. The items in these families can be retrieved, priced, and ordered, but searching on “parking lot” family items is limited. You cannot search for items by family ID in our Search Items endpoint if the family ID begins with “PLot_”. “Parking lot” families also do not have a product family name, as they are a miscellaneous collection of items. It is important to note this if you plan to design functionality around family items.

If an integration design includes displaying related family items when an item is selected, it is important to note that the family items returned in the Product API endpoints are not verified for availability at the user’s branches. The integration should filter any family item results by availability of those items at the users branches before display the results to the user.

Units of Measure

Units of measure used for pricing and ordering are costing and stocking. For example, shingles will return the following units of measure:

  • Costing: Square (SQ)
  • Stocking: Bundle (BD)

Additional unit of measure descriptions are provided in the Product API response if your integration calls for different UOM types.

Proposition 65 Requirements and Display

During the ABC Supply item intake process, items go through attribute enrichment. During the process, items may be made available for sale before all attributes are added to the items (see “parking lot” items in Product Families above). One of the attributes that is added to items during this process is Proposition 65 information that satisfies the California state law’s requirements for hazardous materials. If this information has not yet been added to an item’s attributes, ABC Supply is prohibited from selling these items through California branches or to delivery locations in California. Our Order API Place Orders endpoint will verify that items, branches, and delivery addresses meet these requirements prior to submitting an order; if the verification fails, the endpoint will return an error with information about the product in question.

Pricing

The ABC Supply Pricing API provides real-time pricing for items based on several factors:

  • Ship-To account
  • Branch location
  • Item availability at the specified branch
  • Item unit of measure
  • Item quantity
  • Item variation, if applicable
$0 Price For Items

ABC Supply branches decide which items to offer at their stores and the price of those items. Occasionally, items are added to a branch’s offering before pricing is set up in their price system. This results in a successful response from the ABC Supply Pricing API endpoint with a $0 price for the item. When this occurs, integrators should direct users who are attempting to price the item to reach out to the branch location directly to request pricing for the item. The $0 price for the item does not prevent them from ordering the item, but pricing will be adjusted by the branch before the order is fulfilled, and it is customary for the branch to contact the customer prior to accepting the order with the updated price.

Units of Measure

For pricing, the request can optionally include a unit of measure for the item(s) in the request. If a unit of measure is not provided, the request will default to the stocking unit of measure.

Pricing Dimensional Items

As mentioned in the Products section, dimensional items must have a valid variation specified in the pricing call in order to price the item successfully. Variation information included with a non-dimensional item will not affect pricing.

Order

Orders submitted via the ABC Supply APIs are sent to the branch specified in the order using our internal order management system. The order is reviewed by the branch associates for correct pricing, account information, delivery information, item details, and any order notes. The the branch associates have any questions or concerns with the order, they will contact the order submitter to resolve any issues.

Until the branch accepts and submits the order, it has not yet entered our ERP system. While an order is being reviewed, the Order API Get Order endpoints will not return order information. However, the customer will receive an email immediately after the order reached the order management system to confirm receipt of the order and again once the order has been submitted to our ERP system.

Ship-To Object

The Ship-To object in Order API Place Orders endpoint combines two concepts:

  • Ship-To number, which is the Ship-To account number for which the order is placed
  • Ship-To name, address, and contacts, which are the delivery-related fields for the order

Please ensure that the name, address, and contacts correspond to the delivery information for the order and not the Ship-To account information, unless the order is being delivered to the Ship-To account.

Order Comments

Comments can be added to an order as either order-level comments or line-level comments. These will be available for the branch associates to review and will stay with the order as it moves through fulfillment.

Custom Items

Invalid item numbers are allowed to pass through to our order management system, because sometimes customers would like to request an item without knowing the item number. Information can be shared with the branch using the “itemNumber” or “description” fields in the line item section of the order. The branch associate will contact the order submitter if they have any additional questions about the request.

Delivery Methods

Each branch determines their available delivery methods and additional services they provide. In order to offer the most up-to-date options, please check the “services” array in Locations API Get Branch by Branch Number. Services such as “Express Pickup”, “Rooftop Delivery”, and “Covered Ground Drops” will be listed in this section if available.

Incorrect Pricing in Orders

If pricing provided in the order submitted via the Order API does not match the pricing in our system at the time the order was placed, the price of the item is updated automatically in our order management system. To provide the best user experience, it is imperative to validate real-time pricing prior to placing an order. The branch associates can view the price from the original order request within the order management system.

Dimensional Items

Dimensional items must include desired item variation in the line items section of the order. If an order is placed for a dimension item without variation or a non-dimensional item with variation, the order will return an error with information about the item that failed verification.

Items Missing Proposition 65 Attribution

If an order is placed at a California branch or with a California delivery address for an item that has not yet been attributed with Proposition 65 information, the order will return an error with information about the item that failed verification.

Retrieving Order Details

The Order API Get Order History endpoint will return a summary of all orders placed for a given account, regardless of the source system under which the order was placed. For Third-Party integrations, the Get Order endpoints will only return order details for orders that were placed through that integration.

Order Status Notification Webhooks

Notification API allows integrators to register webhooks for receiving order updates when the status of an order changes. These webhooks can be registered using Client Credential authentication and do not need to be linked to any users in order to receive notifications. Only one webhook is needed per integration, and all updates will be sent to that single webhook.


Common API Workflows

Most integrators follow a standard pattern when working with our APIs:

  1. Authentication: Obtain OAuth 2.0 tokens for secure API access
  2. Account Discovery: Query account information to establish the correct hierarchy relationships
  3. Product Exploration: Search for products and check item availability
  4. Item Pricing: Get pricing on items based on Ship-To account and branch number
  5. Order Management: Create orders, check status, and receive updates
  6. Webhook Integration: Subscribe to events for real-time notifications

The following is a description of how to navigate the basic ordering workflow for most orders:

  1. After authenticating, Search Accounts by Ship-To account type will allow the user to select which Ship-To account they want to use for finding products, pricing items, and placing orders.
    • From this endpoint, you will also receive a list of branches at which each Ship-To account is enrolled.
  2. Allow the user to select from the branch list for the Ship-To account the user has chosen.
  3. Items can be browsed, searched, or retrieved using the Product API endpoints, which will also return item availability at the branches to which the user has access (NOTE: Get All Items returns branch availability for all branches, regardless of user access).
  4. Once an item is selected and verified for availability, the Price Items endpoint can be called with the Ship-To account, branch number, item number to determine pricing.
  5. With this information, items can be added to an order and the order can be placed. Once the order is placed, use Order API Get Order by Order Number or Confirmation Number to view order details.
  6. If webhooks are registered for the integration, order status updates will trigger order notifications to be sent to the webhook URL to allow order updates to be communicated to the user.

Integration Process

The typical journey to a successful integration follows these steps:

  1. Planning: Define your integration requirements and identify the ABC Supply APIs you’ll need
  2. Development Environment Setup: Register for API access and set up your sandbox environment
  3. Core Integration: Implement authentication, basic data retrieval, and essential workflows
  4. Testing: Validate your integration in the sandbox environment with test data
  5. Certification: Work with the ABC Supply team to verify your integration meets our standards
  6. Production Deployment: Move your integration to the production environment
  7. Monitoring and Maintenance: Establish ongoing monitoring and support processes

Available Resources

To support your integration efforts, ABC Supply provides:

  • API Documentation: Detailed reference material for each endpoint
  • Postman Collection: A regularly updated collection of our endpoints to assist with integration
  • Sandbox Environment: A testing platform with sample data
  • Support Email: Access to technical assistance during development. Please reach out to [email protected] with any questions or feedback on your experience.