GraphQL Schema

The GraphQL API is served at POST /graphql via Apollo Server 4.9.5 on the API Gateway. Authentication is required (Bearer JWT or session cookie).

All operations verified at commit 4b572c2 from services/api-gateway/src/schema.ts.

Custom Scalars

Scalar Description
DateTime ISO 8601 timestamp
JSON Arbitrary JSON object

Queries

Customer Data

customer(id: ID!): Customer
customers(filter: CustomerFilter, pagination: PaginationInput): CustomerConnection!

Account Data

account(id: ID!): Account
accounts(customerId: ID, filter: AccountFilter, pagination: PaginationInput): AccountConnection!

Transaction Data

transaction(id: ID!): Transaction
transactions(
  accountId: ID
  customerId: ID
  filter: TransactionFilter
  pagination: PaginationInput
): TransactionConnection!

Insights and Recommendations

insight(id: ID!): Insight
insights(
  customerId: ID
  filter: InsightFilter
  pagination: PaginationInput
): InsightConnection!

recommendation(id: ID!): Recommendation
recommendations(
  customerId: ID
  status: ApprovalStatus
  pagination: PaginationInput
): RecommendationConnection!

Agent Tasks

task(id: ID!): AgentTask
tasks(status: TaskStatus, pagination: PaginationInput): TaskConnection!
activeTasks: [AgentTask!]!

Workflows

workflow(id: ID!): Workflow
workflows(pagination: PaginationInput): WorkflowConnection!
workflowRuns(workflowId: ID, pagination: PaginationInput): WorkflowRunConnection!

Scenario Simulation

scenarioRun(id: ID!): ScenarioRun
scenarioRuns(
  customerId: ID
  status: ScenarioStatus
  pagination: PaginationInput
): ScenarioRunConnection!
scenarioPresets: [ScenarioPresetInfo!]!

SME Guidance

guidanceItem(id: ID!): GuidanceItem
guidanceItems(filter: GuidanceFilter, pagination: PaginationInput): GuidanceItemConnection!
guidanceSummary(customerId: ID): GuidanceSummary!
customerGuidance(customerId: ID!): [GuidanceItem!]!

Credit Line Management

creditLineProposal(id: ID!): CreditLineProposal
creditLineProposals(
  filter: CreditProposalFilter
  pagination: PaginationInput
): CreditLineProposalConnection!
creditPortfolioSummary: CreditPortfolioSummary!
customerCreditProposals(customerId: ID!): [CreditLineProposal!]!

Portfolio Analytics

portfolioMetrics: PortfolioMetrics!

Mutations

Agent Task Operations

createTask(input: CreateTaskInput!): AgentTask!
executeTask(input: CreateTaskInput!): AgentTask!
cancelTask(id: ID!): AgentTask

Recommendation Review

reviewRecommendation(id: ID!, input: ReviewRecommendationInput!): Recommendation!

Human approval is required for all credit, retention, and treasury actions. The ReviewRecommendationInput includes an approved boolean and optional notes.

Workflow Execution

triggerWorkflow(workflowId: ID!, context: JSON): WorkflowRun!

Scenario Simulation

runScenario(input: RunScenarioInput!): ScenarioRun!
cancelScenario(id: ID!): ScenarioRun

SME Guidance

acknowledgeGuidance(id: ID!): GuidanceItem!
dismissGuidance(id: ID!, reason: String): GuidanceItem!
refreshGuidance(customerId: ID!): [GuidanceItem!]!

Credit Line Adjuster

approveCreditProposal(id: ID!, input: ReviewCreditProposalInput!): CreditLineProposal!
rejectCreditProposal(id: ID!, input: ReviewCreditProposalInput!): CreditLineProposal!
requestCreditReview(customerId: ID!): CreditLineProposal
runPortfolioCreditReview: CreditPortfolioSummary!

Subscriptions

Real-time updates via GraphQL subscriptions:

taskUpdated(taskId: ID!): AgentTask!
insightCreated: Insight!
recommendationCreated: Recommendation!
scenarioCompleted(scenarioId: ID): ScenarioRun!
guidanceCreated(customerId: ID): GuidanceItem!
creditProposalCreated: CreditLineProposal!

Connection Types

All list queries return Connection types following the Relay specification pattern:

type CustomerConnection {
  edges: [CustomerEdge!]!
  pageInfo: PageInfo!
  totalCount: Int!
}

type CustomerEdge {
  node: Customer!
  cursor: String!
}

type PageInfo {
  hasNextPage: Boolean!
  hasPreviousPage: Boolean!
  startCursor: String
  endCursor: String
}

Implemented in services/api-gateway/src/schema.ts at commit 4b572c2.

results matching ""

    No results matching ""