Fixer · Capability

Currency Conversion

Run with Naftiko

Capability Spec

currency-conversion.yaml Raw ↑
apiVersion: capability.naftiko.dev/v1alpha1
kind: Capability
metadata:
  name: currency-conversion
  provider: fixer
  description: |
    Convert an arbitrary monetary amount from one currency to another using the
    Fixer real-time exchange rate, with optional fallback to a historical date.
spec:
  uses:
    - sharedCapability: fixer-shared
      operations: [convertCurrency, getLatest, getSymbols]
  preconditions:
    - description: Caller subscription must include the /convert endpoint (Basic plan or above).
  workflow:
    - step: validateSymbols
      operation: getSymbols
      purpose: Confirm both `from` and `to` ISO 4217 codes are recognized.
    - step: convertAmount
      operation: convertCurrency
      parameters:
        from: "{{ input.from }}"
        to: "{{ input.to }}"
        amount: "{{ input.amount }}"
        date: "{{ input.date | optional }}"
    - step: fallbackLatestRate
      when: convertAmount.error
      operation: getLatest
      purpose: |
        If /convert is unavailable (plan downgrade, transient failure), fall back to
        deriving a conversion locally from /latest rates anchored on the source currency.
  outputs:
    rate: "{{ convertAmount.info.rate }}"
    convertedAmount: "{{ convertAmount.result }}"
    rateTimestamp: "{{ convertAmount.info.timestamp }}"
    historical: "{{ convertAmount.historical }}"
  governance:
    minPlan: Basic
    httpsRequired: true