Overview of API callbacks

API callbacks allow you to enhance and extend Orbitera.

There’s more to a marketplace than the look and feel. When a customer signs up for an account, or when a subscription occurs, the marketplace often needs to notify other systems, capture additional metadata, or even kick off complex workflows.

These actions are called account and product "callbacks" and are baked into the Orbitera platform. You can take advantage of callbacks to customize an Orbitera marketplace workflow.

Callback types

These are the types of event-based callbacks:

  • Events that are attached at the account level, such as Cusomter sign up, Product create, and Product update.

  • Events that are attached at the product level, such as Subscription create, Subscription trial end, Subscription change. They can also be post-subscription deployment events.

Account-level callbacks

Account-level callbacks are useful for a variety of scenarios such as:

  • When a new customer signs up, send the information to your internal CRM system.
  • When a new product is created, kick off a separate workflow to process the binary file added to the product.
  • When a product has changed, notify customers if a new version of the binary has been added

To enable these scenarios, you need to specify a service endpoint that Orbitera can call. In the callback UI, you then add the endpoint and associate it with the event.

An example of where this may be used is adding a new customer to a CRM database. Assuming there are several API calls to validate user data and assign customers to appropriate groups, you can create a Cloud Function which is called on the New Customer event. The function call passes in customer data and your Cloud Function validates the information and passes that to your CRM system with the appropriate settings and information so it’s captured as a customer from your white-labeled marketplace.

Product-level callbacks

Product-level callbacks are tied to events that are normally used for product entitlements, provisioning or other actions related to an individual product. For example, customers who subscribe to a SaaS offering will need their account provisioned after the purchase is complete. Orbitera enables our partners to tie the subscription event to call an endpoint that can handle all the necessary actions required to onboard the customer.

If customer-defined parameters are required, the API Deployment UI enables you to define the input and will pass that information as part of the rest API call. There are also system variables such as Product SKU and Product Name that can be used. A full list of system variables is documented later in this blog post.

These product callbacks can also be used to natively deploy AWS infrastructure via CloudFormation. The AWS option enables a wizard at the end of the purchase flow to enable customers to select their AWS Account that a CloudFormation deployment will be tied to.

For example, if you had a product that launched a CloudFormation template that deployed an AWS AMI and a load balancer, you would upload your CloudFormation script in the product deployment configuration. When the subscription flow is complete, the customer would follow a simple wizard to select their AWS Cloud Account and deploy the CloudFormation template using that account.

The product callbacks are available under Deployment Actions in the product details page.

Another feature product callbacks support is chaining of events. This is useful when there are multiple calls to provision a customer or enable an entitlement. The endpoints must return JSON which gets parsed and can be mapped to other variables in the Outputs section. The output can then be used as input in subsequent API calls.

See Configure deployments.

Placeholders

Placeholders are variables for the different event callbacks. You can use placeholders by adding the value in braces in the input fields. For example: {ProductSku}. The variable is then filled in by Orbitera during the API call.

You can also add the parameters in the query string. For example:

https://myserver.com?userName={CustomerName}