Ravelin Callbacks API

Outbound webhook callbacks delivered by Ravelin to merchant-configured endpoints when manual reviews, order decisions, or refund decisions are completed in the Ravelin dashboard. Used to keep order-management, fulfillment, and customer-service systems in sync with Ravelin's human-in-the-loop review outcomes.

Ravelin Callbacks API is one of 4 APIs that Ravelin publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Webhooks, Callbacks, Manual Review, and Order Management. The published artifact set on APIs.io includes API documentation, an API reference, and an OpenAPI specification.

OpenAPI Specification

ravelin-callbacks-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Ravelin Callbacks API
  version: '1'
  description: |
    Outbound webhook callbacks that Ravelin POSTs to a merchant-configured HTTPS endpoint when
    a manual review, order decision, or refund decision is completed inside the Ravelin dashboard.
    Used to keep order-management, fulfillment, and customer-service systems in sync with
    human-in-the-loop review outcomes.

    Endpoint patterns are merchant-defined; the schemas below describe the request bodies that
    Ravelin will deliver. Authentication uses an optional shared secret token configured per
    callback.

    Documentation: https://developer.ravelin.com/merchant/api/callbacks/.
  contact:
    name: Ravelin Support
    url: https://support.ravelin.com/
  license:
    name: Proprietary
servers:
- url: https://merchant.example.com
  description: 'Merchant-configured callback endpoint (placeholder — replace with your own URL).'
tags:
- name: Callbacks
  description: Outbound webhook events delivered by Ravelin.
paths:
  /webhooks/ravelin/order-decisions:
    post:
      tags: [Callbacks]
      summary: Receive an Order Decision Callback
      operationId: receiveOrderDecision
      description: Delivered when an order is approved, rejected, or left pending by a reviewer in
        the Ravelin dashboard. Use to update downstream order management state.
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/OrderDecisionEvent' }
      responses:
        '200': { description: Acknowledged. }
  /webhooks/ravelin/manual-reviews:
    post:
      tags: [Callbacks]
      summary: Receive a Manual Review Callback
      operationId: receiveManualReview
      description: Delivered when a manual review case is completed for a customer or event.
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/ManualReviewEvent' }
      responses:
        '200': { description: Acknowledged. }
  /webhooks/ravelin/refund-decisions:
    post:
      tags: [Callbacks]
      summary: Receive a Refund Decision Callback
      operationId: receiveRefundDecision
      description: Delivered when a refund request is approved or rejected by a reviewer in the
        Ravelin dashboard.
      requestBody:
        required: true
        content:
          application/json:
            schema: { $ref: '#/components/schemas/RefundDecisionEvent' }
      responses:
        '200': { description: Acknowledged. }
components:
  schemas:
    Reviewer:
      type: object
      properties:
        name: { type: string }
        email: { type: string, format: email }
    OrderDecisionEvent:
      type: object
      required: [orderId, label, timestamp]
      properties:
        orderId: { type: string }
        label:
          type: string
          enum: [APPROVED, PENDING, REJECTED]
        reviewer: { $ref: '#/components/schemas/Reviewer' }
        timestamp: { type: string, format: date-time }
    ManualReviewEvent:
      type: object
      required: [customerId, label, timestamp]
      properties:
        customerId: { type: string }
        orderId: { type: string }
        label:
          type: string
          enum: [FRAUDULENT, TRUSTED, UNKNOWN]
        reviewer: { $ref: '#/components/schemas/Reviewer' }
        timestamp: { type: string, format: date-time }
    RefundDecisionEvent:
      type: object
      required: [refundId, orderId, label, timestamp]
      properties:
        refundId: { type: string }
        orderId: { type: string }
        label:
          type: string
          enum: [APPROVED, REJECTED, PENDING]
        reviewer: { $ref: '#/components/schemas/Reviewer' }
        timestamp: { type: string, format: date-time }