OpenSOP API Reference v0.1

Process format

The YAML schema every process is written in. Stable from opensop: "0.1" onward.

Anatomy

customer-onboarding.sop.yaml
opensop: "0.1"
process:
  name: customer-onboarding
  version: "1.0"
  owner: banking-team
  description: Onboard a new business customer
  trigger:
    type: api          # api | schedule | webhook
  inputs:
    - { name: company_name, type: string, required: true }
    - { name: country, type: enum, values: [US, MX], required: true }
  outputs:
    - { name: account_id, type: string }
    - { name: status, type: enum, values: [approved, rejected] }
  steps:
    - id: collect-business-info
      name: Collect business information
      type: form          # form | automated | judgment | webhook
      timeout: 7d
    - id: review-application
      name: Review application
      type: judgment
      judgment:
        allow_agent: true
        confidence_threshold: 0.8
        escalate_to: human

Step types

Type Resolved by Notes
form human Collects structured inputs. Use for kickoff and HITL.
automated worker An external worker polls /steps/pending and submits outputs.
judgment agent or human If allow_agent: true, an LLM decides. Below the confidence threshold, escalates.
webhook third party Engine creates a callback URL; the step waits until something POSTs to it.

References

Anywhere a value is expected, you can use the ${...} syntax to pull from upstream context:

REFERENCES
# Pull a prior step's output into the next step's input
inputs:
  applicant_name: "${steps.collect-business-info.outputs.company_name}"

# Map a webhook trigger payload field to a process input
inputs:
  company_name: "${trigger.payload.data.company}"