Cross-Provider Workflow

Amberflo Customer to Stripe Customer

Version 1.0.0

Read an Amberflo billing customer, then provision a matching Stripe customer.

1 workflow 2 source APIs 2 providers
View Spec View on GitHub ArazzoWorkflowsCross-Provider

Providers Orchestrated

amberflo stripe

Workflows

sync-customer-to-stripe
Read an Amberflo customer, then create a Stripe customer.
Reads a customer from Amberflo billing and provisions a matching customer in Stripe.
2 steps inputs: amberfloCustomerId, customerEmail outputs: customerName, stripeCustomerId
1
get-amberflo-customer
$sourceDescriptions.amberfloBillingApi.getCustomerById
Read the Amberflo billing customer record.
2
create-stripe-customer
$sourceDescriptions.stripeCustomersApi.postCustomers
Create a matching Stripe customer.

Source API Descriptions

Arazzo Workflow Specification

fin-amberflo-customer-to-stripe-customer.yml Raw ↑
arazzo: 1.0.1
info:
  title: Amberflo Customer to Stripe Customer
  summary: Read an Amberflo billing customer, then provision a matching Stripe customer.
  description: >-
    A customer-provisioning workflow that reads a customer record from Amberflo
    billing and creates a corresponding customer in Stripe so usage billed in
    Amberflo can be charged through Stripe. Demonstrates synchronizing customer
    identity across a metering provider and a payments provider.
  version: 1.0.0
sourceDescriptions:
  - name: amberfloBillingApi
    url: https://raw.githubusercontent.com/api-evangelist/amberflo/refs/heads/main/openapi/amberflo-billing-openapi.yaml
    type: openapi
  - name: stripeCustomersApi
    url: https://raw.githubusercontent.com/api-evangelist/stripe/refs/heads/main/openapi/stripe-customers-api-openapi.yml
    type: openapi
workflows:
  - workflowId: sync-customer-to-stripe
    summary: Read an Amberflo customer, then create a Stripe customer.
    description: >-
      Reads a customer from Amberflo billing and provisions a matching customer
      in Stripe.
    inputs:
      type: object
      properties:
        amberfloCustomerId:
          type: string
        customerEmail:
          type: string
    steps:
      - stepId: get-amberflo-customer
        description: Read the Amberflo billing customer record.
        operationId: $sourceDescriptions.amberfloBillingApi.getCustomerById
        parameters:
          - name: customerId
            in: query
            value: $inputs.amberfloCustomerId
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          customerName: $response.body#/customerName
          customerId: $response.body#/customerId
      - stepId: create-stripe-customer
        description: Create a matching Stripe customer.
        operationId: $sourceDescriptions.stripeCustomersApi.postCustomers
        requestBody:
          contentType: application/x-www-form-urlencoded
          payload:
            name: $steps.get-amberflo-customer.outputs.customerName
            email: $inputs.customerEmail
            metadata:
              amberflo_customer_id: $steps.get-amberflo-customer.outputs.customerId
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          stripeCustomerId: $response.body#/id
    outputs:
      customerName: $steps.get-amberflo-customer.outputs.customerName
      stripeCustomerId: $steps.create-stripe-customer.outputs.stripeCustomerId