Cross-Provider Workflow

Ramp Reimbursements to Sheet and Slack

Version 1.0.0

Export Ramp reimbursements to a Google Sheet, then notify Slack of pending approvals.

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

Providers Orchestrated

ramp google-sheets slack

Workflows

reimbursements-to-sheet-and-slack
List Ramp reimbursements, append to a sheet, then notify Slack.
Retrieves Ramp reimbursements, appends them to a Google Sheet, and posts a pending-approval notice to Slack.
3 steps inputs: channel, pageSize, range, spreadsheetId outputs: messageTs, updatedRange
1
list-reimbursements
$sourceDescriptions.rampApi.listReimbursements
Retrieve Ramp reimbursements.
2
append-reimbursements
$sourceDescriptions.googleSheetsApi.appendValues
Append the reimbursements to the Google Sheet.
3
notify-approvers
$sourceDescriptions.slackChatApi.postChatPostmessage
Notify Slack of pending reimbursement approvals.

Source API Descriptions

Arazzo Workflow Specification

fin-ramp-reimbursements-to-sheet-slack.yml Raw ↑
arazzo: 1.0.1
info:
  title: Ramp Reimbursements to Sheet and Slack
  summary: Export Ramp reimbursements to a Google Sheet, then notify Slack of pending approvals.
  description: >-
    An expense-reimbursement workflow that pulls reimbursements from Ramp,
    appends them to a Google Sheet for accounting, and posts a notice to a Slack
    channel so approvers know there are pending reimbursements. Demonstrates a
    spend-management source feeding both a spreadsheet and a chat channel.
  version: 1.0.0
sourceDescriptions:
  - name: rampApi
    url: https://raw.githubusercontent.com/api-evangelist/ramp/refs/heads/main/openapi/ramp-developer-api-openapi.yml
    type: openapi
  - name: googleSheetsApi
    url: https://raw.githubusercontent.com/api-evangelist/google-sheets/refs/heads/main/openapi/google-sheets-openapi.yml
    type: openapi
  - name: slackChatApi
    url: https://raw.githubusercontent.com/api-evangelist/slack/refs/heads/main/openapi/slack-chat-openapi.yml
    type: openapi
workflows:
  - workflowId: reimbursements-to-sheet-and-slack
    summary: List Ramp reimbursements, append to a sheet, then notify Slack.
    description: >-
      Retrieves Ramp reimbursements, appends them to a Google Sheet, and posts a
      pending-approval notice to Slack.
    inputs:
      type: object
      properties:
        pageSize:
          type: integer
        spreadsheetId:
          type: string
        range:
          type: string
        channel:
          type: string
    steps:
      - stepId: list-reimbursements
        description: Retrieve Ramp reimbursements.
        operationId: $sourceDescriptions.rampApi.listReimbursements
        parameters:
          - name: page_size
            in: query
            value: $inputs.pageSize
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          reimbursements: $response.body#/data
      - stepId: append-reimbursements
        description: Append the reimbursements to the Google Sheet.
        operationId: $sourceDescriptions.googleSheetsApi.appendValues
        parameters:
          - name: spreadsheetId
            in: path
            value: $inputs.spreadsheetId
          - name: range
            in: path
            value: $inputs.range
          - name: valueInputOption
            in: query
            value: USER_ENTERED
        requestBody:
          contentType: application/json
          payload:
            range: $inputs.range
            majorDimension: ROWS
            values:
              - - Ramp Reimbursements Export
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          updatedRange: $response.body#/updates/updatedRange
      - stepId: notify-approvers
        description: Notify Slack of pending reimbursement approvals.
        operationId: $sourceDescriptions.slackChatApi.postChatPostmessage
        requestBody:
          contentType: application/x-www-form-urlencoded
          payload:
            channel: $inputs.channel
            text: New Ramp reimbursements are pending approval.
        successCriteria:
          - condition: $statusCode == 200
          - condition: $response.body#/ok == true
        outputs:
          messageTs: $response.body#/ts
    outputs:
      updatedRange: $steps.append-reimbursements.outputs.updatedRange
      messageTs: $steps.notify-approvers.outputs.messageTs