Atlassian uses cookies to improve your browsing experience, perform analytics and research, and conduct advertising. Accept all cookies to indicate that you agree to our use of cookies on your device. Atlassian cookies and tracking notice, (opens new window)
Learn how to use the API Feeds to integrate your live course availability into your website
There are many reasons you might want to integrate your accessplanit platform with your website to display live course availability; you may wish to eliminate the need for manual updates on your website, reduce the chances of errors, or you might be looking to save time by automating course listings, giving employees more time to focus on more critical tasks. Alternatively, your priority could be to provide real-time information to your customers (and potential customers!), ensuring they have the most accurate and up-to-date details when searching for courses.
By integrating live course availability from your accessplanit platform into your website, you can ensure consistency and accuracy in the information presented to your customers. This integration allows for a seamless user experience, where prospective delegates can see your real-time course schedule and availability, leading to better-informed decisions and increased bookings. You can even include your fully booked courses to demonstrate demand! Additionally, as your business grows, the scalability of an integration with your website will enable you to manage a larger number of courses and bookings more easily, without much extra work!
While there are a number of different ways to integrate course availability data between your accessplanit platform and your website, this guide will focus on how to complete this integration using the accessplanit API v2 feeds. APIs give you real-time access to your data, they keep information consistent, and can grow with your needs, supporting custom data elements. Overall, APIs are a reliable and flexible way to link different systems and services together, making everything work together more easily.
Follow this page to learn the steps to integrate the course availability data in your accessplanit platform with your website using the accessplanit v2 API Feeds.
1. Prerequisites
Before you start planning the details your integration, we recommend that you make sure you have everything you need for an integration
The following steps should be followed:
Ensure your website supports Integrations via an API
Explore your options for how your integration will be created (who will be developing it)
Ensure your connecting software supports Integrations via an API
Before you begin planning your integration, we recommend confirming that your website will support the integration.
To confirm that an integration is possible, you should work with an internal expert or product owner, or your key contact from your web team. Here are several areas to confirm:
Check that your website is capable of supporting API integrations, this includes ensuring it can handle HTTP requests, and it supports data in a JSON data format.
Check if there are any additional licences/fees or permissions required to set up an integration using APIs
Explore your options for how your integration will be created (who will be developing it)
Review your options for who could develop this integration for you; you may have an internal development team, an external third party that you have worked with before, or your website team may have developer recommendations or be able to complete the integration themselves.
Here are a few of the considerations when deciding who will work on your integration:
Experience Working with a developer who has worked with websites previously is a benefit, particularly if they have experience with your specific website and/or accessplanit. They should be proficient in JSON and REST.
Quote and pricing models While it is unlikely that you will be able to request a quote at this stage, understanding their pricing model is important to know, some developers will charge a fixed price for a project, whereas others will charge a daily rate. Ensure that you are aware of what this quote includes, as some quotes also factor in additional services and support.
Reputation/reviews If it is your first time working with a third party developer, you may wish to ask for their reviews and/or testimonials.
Development process Understanding what methodology the developer follows helps to ensure their approach will fit into your process, for example if you need to be able to re-evaluate approaches and iterate throughout the project a ‘waterfall’ approach would not be suitable.
Timeline Understanding the developers availability and lead times is the first step to knowing if they will be able to deliver within your project timeframes, once you have scoped the integration during the next phase in 'planning' you will be able to confirm this.
Support Understand what support will be available to you post-launch (this should include technical assistance and bug fixes), and whether there are any additional charges for these services.
2. Planning your integration
In this step you will work with your developer to plan your integration
There are two key steps for planning your website integration:
Understand common set-ups and best practice
Define what and how data will be shared within your integration
Understand common set-ups and best practice
Depending on your preferred website layout, there are typically two key processes that are factored into website integrations:
Course Template / Catalogue integration A Course Template is created or updated in accessplanit, the details of this Course Template is then sent to the website to be available for searching and/or to have a landing page created containing the information about the Course, such as duration, cost, and course aims.
Course & Availability integration When Courses are scheduled or updated, the details of these are sent to the website to keep the live feed of course availability up to date.
Here are recommendations for each of the above processes, including example filters and data to use with each. For your integration planning, please note these examples are not exhaustive and additional data is available in each of the available endpoints.
a. New Course Template advertised
Process triggered
Every hour via a GET request
Filter criteria
Only Course Templates that are ‘advertised’
Example optional filter: Only Course Templates offered by a specific Training Provider
Example optional filter: Only Course Templates that are associated to specific Categories
Data included
Use accessplanit API v2 endpoints:
CourseTemplate
Recommended data fields to include:
CourseLabel (Name of the Course Template e.g. First Aid)
CourseID (Unique ID of the Course Template e.g. FIRS452VR)
ImageUrl (the URL to the image associated to this Course Template)
CourseType (Course format e.g. Class)
CategoryLabels (Categories this Course is assigned to e.g. Compliance)
Overview (Aims of the Course)
Description (Objectives of the Course)
Summary (Summary of the Course)
Duration (Typical duration of the Course e.g. 1)
DurationType (Typical type of duration e.g. Day)
b. Course Template details updated
Process triggered
Every hour via a GET request
Filter criteria
The Course Template’s ‘date updated’ has changed
Only Course Templates that are ‘advertised’
Example optional filter: Only Course Templates offered by a specific Training Provider
Example optional filter: Only Course Templates that are associated to specific Categories
Data included
Use accessplanit API v2 endpoints:
CourseTemplate
Recommended data fields to include:
CourseLabel (Name of the Course Template e.g. First Aid)
CourseID (Unique ID of the Course Template e.g. FIRS452VR)
CourseType (Course format e.g. Class)
CategoryLabels (Categories this Course is assigned to e.g. Compliance)
Overview (Aims of the Course)
Description (Objectives of the Course)
Summary (Summary of the Course)
Duration (Typical duration of the Course e.g. 1)
DurationType (Typical type of duration e.g. Day)
c. Course Template no longer advertised
Process triggered
Every hour via a GET request
Filter criteria
Course Templates that are not ‘advertised’
Data included
Use accessplanit API v2 endpoints:
CourseTemplate
Recommended data fields to include:
CourseID (Unique ID of the Course Template e.g. FIRS452VR)
d. New Classroom & Webinar Course scheduled & advertised
Process triggered
Automatically (via web-hooks - coming soon), as soon as a Course meets the filter criteria
Filter criteria
Only Courses that are ‘advertised’
Only Courses that have a start date in the future
Only Courses that have a status of ‘Available’ and ‘Fully Booked’
Only Courses that do not have a parent Course (they are not a session)
Example optional filter: Only Courses offered by a specific Training Provider
Example optional filter: Only Courses that are associated to specific Categories
Data included
Use accessplanit API v2 endpoints:
CourseDate
Recommended data fields to include:
CourseID (Unique ID of the Course Template e.g. FIRS452VR)
ID (Unique ID of the Course Date e.g. 12368)
Label (Course Alias or Course Template Name e.g. First Aid for Beginners)
StartDate (Course Start Date & Time e.g. 2026-06-10T09:00:00)
EndDate (Course End Date & Time e.g. 2026-06-10T16:00:00)
VenueLabel (Name of the assigned Venue)
VenueTown (Town of the assigned Venue)
Cost (Course Cost e.g. 100.0)
CostType (Type of Cost e.g. per 'Candidate')
Status (Course Status e.g. Available)
SpacesLeft (Remaining places available e.g. 5)
BookingLink
For Sessional courses: include the labels and dates of each of the Sessions by running a GET request on the CourseDate endpoint filtered by ParentCourseDateIDs matching the ID of the Sessional/parent Course)
e. Course details updated
Process triggered
Automatically (via web-hooks - coming soon), as soon as a Course meets the filter criteria
Filter criteria
The Course’s ‘date updated’ has changed
Only Courses that are ‘advertised’
Only Courses that have a start date in the future
Only Courses that have a status of ‘Available’ and ‘Fully Booked’
Only Courses that do not have a parent Course (they are not a session)
Example optional filter: Only Courses offered by a specific Training Provider
Example optional filter: Only Courses that are associated to specific Categories
Data included
Use accessplanit API v2 endpoints:
CourseDate
Recommended data fields to include:
CourseID (Unique ID of the Course Template e.g. FIRS452VR)
ID (Unique ID of the Course Date e.g. 12368)
Label (Course Alias or Course Template Name e.g. First Aid for Beginners)
StartDate (Course Start Date & Time e.g. 2026-06-10T09:00:00)
EndDate (Course End Date & Time e.g. 2026-06-10T16:00:00)
VenueLabel (Name of the assigned Venue)
VenueTown (Town of the assigned Venue)
Cost (Course Cost e.g. 100.0)
CostType (Type of Cost e.g. per 'Candidate')
Status (Course Status e.g. Available)
SpacesLeft (Remaining places available e.g. 5)
f. Course now fully booked
Process triggered
Automatically (via web-hooks - coming soon), as soon as a Course meets the filter criteria
Filter criteria
The Course status has changed to ‘fully booked’ or
SpacesLeft is now less than or equal to 0 and
Waiting Lists are turned off for this Course
Data included
Use accessplanit API v2 endpoints:
CourseDate
Action:
Option 1: Remove the Course from the website
Option 2: Leave the Course on the website, hide the booking link and add a flag to inform users that this Course is no longer available
g. Course no longer available
Process triggered
Automatically (via web-hooks - coming soon), as soon as a Course Template meets the filter criteria
Filter criteria
Course Template is no longer ‘advertised’ or
Course is no longer ‘advertised’ or
Course start date is in the past or
Course status is ‘cancelled’ or ‘on hold’
Data included
Use accessplanit API v2 endpoints:
CourseDate
Action:
Remove the Course from the website
Define what and how data will be shared within your integration
Once you have reviewed the common set-ups and best practice for website integrations integrations above, you should define the inputs and output for integrating your courses into your website.
Work with your web team to define your integration! Here are the steps to follow for each process you want to integrate:
How will your integration for this process be triggered? Will it be triggered based on something being created or updated, e.g. when an Course is marked as ‘Advertised’? Or will it be triggered periodically, such as once a day or once an hour?
Should any filters be applied? Decide how you would like your Courses to be displayed throughout your website. For example, would you like all of your Courses to be displayed on one page of your website as a big list? Or would you prefer to have a page per Course Template with all of the available Courses for the Template to be listed together? As a final example, would you prefer to have a page per course category with a list of available Courses within that category?
What specific data should be shared and in what format? What information about your Course Templates and Courses would you like to have displayed on your website? Consider each of the types of Courses that you offer; Classroom, Webinar, eLearning, Document, and Sessional Courses, what information is useful to your prospective customers?
Where would you like your booking link to be positioned? Your booking link for your available Courses should be a clear call-to-action on the page, consider the positioning and the colour of this button or link in relation to the Course information.
3. Developing & testing your integration
In this step, your developer will create the integration between the two systems
Depending on your development methodology, we recommend to start testing early and continue to test during the development phase, rather than leaving testing to the very end of the project. Incorporating a combination of testing types; including Unit Tests, Integration Tests, and Functionality/UAT testing is important to ensure everything is working as expected.
During your Functional testing phase, you will test your integration against it's specific functionality requirements, this testing can be combined with User Acceptance Testing (UAT) which is where your users will complete tests using real-world data to test the integration. Within this tests you should include both valid and invalid data, to ensure correct information is successful, and incorrect information fails.
FAQs
Here are some common questions that we receive about the APIs and their answers
Is the data provided by the API v2 feeds in real-time? Yes, each API GET request you make will return real time data for that moment.
Can I access historical data in the API v2 feeds? Yes, you can adjust your filters of your request to include or exclude historical data.
What data formats are supported by the API v2? JSON
How is the data transmitted via the API to keep it secure? The APIs can only be accessed by users with API permissions, additionally the range of access is them limited by roles, this means that not every API User can access all endpoints.
How do I get access to the API v2 feeds? Your initial API Access will be granted alongside the module purchase. For any additional API Users please speak to your Optimise CSM and they will ensure your access is set up promptly.
Support
If you need any further support with building an integration with your finance system using the API Feeds, here are the steps to get in touch with us
Contact Our Team
If you can't find what you're looking for, access our Support Portal, and our team of experts will be happy to help!