Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Langgenius Dify Contract Router

From Leeroopedia
Revision as of 15:30, 16 February 2026 by Admin (talk | contribs) (Auto-imported from implementations/Langgenius_Dify_Contract_Router.md)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Knowledge Sources
Domains Frontend, API, oRPC
Last Updated 2026-02-12 07:00 GMT

Overview

Central oRPC API contract aggregator that composes individual endpoint contracts into two main router objects for the marketplace and console APIs.

Description

web/contract/router.ts serves as the top-level router definition for the Dify frontend's oRPC (type-safe RPC) layer. It imports individual API contracts from subdirectories and assembles them into two exported router contract objects:

marketplaceRouterContract aggregates marketplace-related endpoints:

  • collections - Browse plugin collections
  • collectionPlugins - List plugins within a collection
  • searchAdvanced - Advanced marketplace search

consoleRouterContract aggregates console (admin) endpoints organized into nested groups:

  • systemFeatures - System feature flags and configuration
  • trialApps - Trial app info, datasets, parameters, and workflows
  • billing - Invoices and PartnerStack binding
  • triggers - Comprehensive trigger management including subscriptions (create, update, verify, build, delete), OAuth configuration (config, configure, delete, initiate), provider info, and subscription builder logs

The file also exports two derived types via InferContractRouterInputs:

  • MarketPlaceInputs - Inferred input types for all marketplace endpoints
  • ConsoleInputs - Inferred input types for all console endpoints

Usage

Import these router contracts to set up oRPC clients, or use the inferred input types for type-safe API calls across the frontend.

Code Reference

Source Location

Signature

import type { InferContractRouterInputs } from '@orpc/contract'

export const marketplaceRouterContract = {
  collections: collectionsContract,
  collectionPlugins: collectionPluginsContract,
  searchAdvanced: searchAdvancedContract,
}

export type MarketPlaceInputs = InferContractRouterInputs<typeof marketplaceRouterContract>

export const consoleRouterContract = {
  systemFeatures: systemFeaturesContract,
  trialApps: {
    info: trialAppInfoContract,
    datasets: trialAppDatasetsContract,
    parameters: trialAppParametersContract,
    workflows: trialAppWorkflowsContract,
  },
  billing: {
    invoices: invoicesContract,
    bindPartnerStack: bindPartnerStackContract,
  },
  triggers: {
    list: triggersContract,
    providerInfo: triggerProviderInfoContract,
    subscriptions: triggerSubscriptionsContract,
    // ...14 more trigger-related contracts
  },
}

export type ConsoleInputs = InferContractRouterInputs<typeof consoleRouterContract>

Import

import {
  marketplaceRouterContract,
  consoleRouterContract,
} from '@/contract/router'
import type { MarketPlaceInputs, ConsoleInputs } from '@/contract/router'

I/O Contract

Inputs

Name Type Required Description
N/A N/A N/A This module composes contracts; actual inputs are defined in individual contract files.

Outputs

Name Type Description
marketplaceRouterContract object oRPC router contract for marketplace endpoints
consoleRouterContract object oRPC router contract for console/admin endpoints
MarketPlaceInputs type Inferred input types for marketplace API calls
ConsoleInputs type Inferred input types for console API calls

Usage Examples

Creating a Type-safe API Client

import { consoleRouterContract } from '@/contract/router'
import type { ConsoleInputs } from '@/contract/router'

// Use inferred types for type-safe API calls
type SystemFeaturesInput = ConsoleInputs['systemFeatures']
type TriggerListInput = ConsoleInputs['triggers']['list']

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment