// generated from contracts/integrations/kbx.integrations.json; do not edit.
import type { KbxIntegrationDefinition } from '../integration'
export const kbxIntegrationSourceSha256 = '607853e43ab35fdacc1adea7d5b470dfad791f6718afba215b5600c974b0642e' as const
export const kbxIntegrationCatalog = {
  "integration.oms.wms.dispatch": {
    "id": "integration.oms.wms.dispatch",
    "title": "OMS → WMS 출고지시 전달",
    "ownerModule": "OMS",
    "direction": "outbound",
    "transport": "outbox-http",
    "criticality": "high",
    "sourceEvent": "OrderShipmentRequested",
    "target": "WMS",
    "delivery": "at-least-once",
    "ordering": "per-aggregate",
    "idempotency": "event-id",
    "timeoutMs": 3000,
    "shortRetry": {
      "maxRetryAttempts": 2,
      "baseDelayMs": 250,
      "backoff": "exponential"
    },
    "longRetry": {
      "scheduler": "hangfire",
      "maxAttempts": 8,
      "scheduleSeconds": [
        10,
        30,
        120,
        300,
        900,
        1800,
        3600,
        7200
      ]
    },
    "circuitBreaker": {
      "failureRatio": 0.5,
      "samplingSeconds": 30,
      "minimumThroughput": 10,
      "breakSeconds": 30
    },
    "retryable": [
      "network",
      "timeout",
      "http-408",
      "http-429",
      "http-5xx",
      "circuit-open"
    ],
    "permanent": [
      "contract-invalid",
      "http-400",
      "http-401",
      "http-403",
      "http-404",
      "domain-rejected"
    ],
    "terminalAction": "operations-exception",
    "userVisible": true
  },
  "integration.wms.oms.picking-result": {
    "id": "integration.wms.oms.picking-result",
    "title": "WMS → OMS 피킹결과 전달",
    "ownerModule": "WMS",
    "direction": "outbound",
    "transport": "outbox-http",
    "criticality": "high",
    "sourceEvent": "PickingCompleted",
    "target": "OMS",
    "delivery": "at-least-once",
    "ordering": "per-aggregate",
    "idempotency": "event-id",
    "timeoutMs": 3000,
    "shortRetry": {
      "maxRetryAttempts": 2,
      "baseDelayMs": 250,
      "backoff": "exponential"
    },
    "longRetry": {
      "scheduler": "hangfire",
      "maxAttempts": 8,
      "scheduleSeconds": [
        10,
        30,
        120,
        300,
        900,
        1800,
        3600,
        7200
      ]
    },
    "circuitBreaker": {
      "failureRatio": 0.5,
      "samplingSeconds": 30,
      "minimumThroughput": 10,
      "breakSeconds": 30
    },
    "retryable": [
      "network",
      "timeout",
      "http-408",
      "http-429",
      "http-5xx",
      "circuit-open"
    ],
    "permanent": [
      "contract-invalid",
      "http-400",
      "http-401",
      "http-403",
      "http-404",
      "domain-rejected"
    ],
    "terminalAction": "operations-exception",
    "userVisible": true
  },
  "integration.carrier.tracking": {
    "id": "integration.carrier.tracking",
    "title": "배송사 송장/배송상태 연계",
    "ownerModule": "OMS",
    "direction": "outbound",
    "transport": "outbox-http",
    "criticality": "medium",
    "sourceEvent": "TrackingSubmissionRequested",
    "target": "CarrierGateway",
    "delivery": "at-least-once",
    "ordering": "none",
    "idempotency": "business-key",
    "timeoutMs": 5000,
    "shortRetry": {
      "maxRetryAttempts": 2,
      "baseDelayMs": 500,
      "backoff": "exponential"
    },
    "longRetry": {
      "scheduler": "hangfire",
      "maxAttempts": 6,
      "scheduleSeconds": [
        30,
        120,
        600,
        1800,
        3600,
        7200
      ]
    },
    "circuitBreaker": {
      "failureRatio": 0.5,
      "samplingSeconds": 60,
      "minimumThroughput": 10,
      "breakSeconds": 60
    },
    "retryable": [
      "network",
      "timeout",
      "http-408",
      "http-429",
      "http-5xx",
      "circuit-open"
    ],
    "permanent": [
      "contract-invalid",
      "http-400",
      "http-401",
      "http-403",
      "http-404",
      "domain-rejected"
    ],
    "terminalAction": "operations-exception",
    "userVisible": true
  }
} as const satisfies Record<string,KbxIntegrationDefinition>
export type KbxIntegrationId = keyof typeof kbxIntegrationCatalog
