openrpc: 1.3.2
info:
title: Calculator API
version: 1.0.0
description: |
A simple calculator API that performs basic arithmetic operations
using JSON-RPC 2.0 protocol.
servers:
- name: production
url: https://api.calculator.com/rpc
description: Production JSON-RPC server
- name: development
url: http://localhost:8080/rpc
description: Development server
methods:
- name: add
summary: Add two numbers
description: Performs addition of two numeric values
params:
- name: a
schema:
type: number
required: true
description: First number to add
- name: b
schema:
type: number
required: true
description: Second number to add
result:
name: sum
schema:
type: number
description: The sum of the two numbers
examples:
- name: AddExample
description: Example of adding two numbers
params:
a: 5
b: 3
result: 8
- name: divide
summary: Divide two numbers
description: Performs division of two numeric values
params:
- name: dividend
schema:
type: number
required: true
description: Number to be divided
- name: divisor
schema:
type: number
required: true
description: Number to divide by
result:
name: quotient
schema:
type: number
description: The result of the division
errors:
- code: -32602
message: Division by zero
data:
type: object
properties:
error:
type: string
const: "Cannot divide by zero"
examples:
- name: DivideExample
description: Example of dividing two numbers
params:
dividend: 10
divisor: 2
result: 5
- name: notify_calculation
summary: Notify about calculation
description: Send a notification about a completed calculation (no response expected)
params:
- name: operation
schema:
type: string
enum: [add, subtract, multiply, divide]
required: true
- name: result
schema:
type: number
required: true
- name: timestamp
schema:
type: string
format: date-time
required: true
components:
schemas:
CalculationRequest:
type: object
properties:
operation:
type: string
enum: [add, subtract, multiply, divide]
operands:
type: array
items:
type: number
minItems: 2
maxItems: 2
precision:
type: integer
minimum: 0
maximum: 10
default: 2
required:
- operation
- operands
CalculationResult:
type: object
properties:
result:
type: number
operation:
type: string
timestamp:
type: string
format: date-time
required:
- result
- operation
- timestamp