openapi: 3.0.3
info:
  title: eMoney Token Factory Control Plane API
  version: 1.0.0
  description: Reference contract for token issuance, lien management, compliance, ISO messaging, and bridge operations.
x-idempotency:
  - POST /tokens
  - POST /liens
  - POST /iso/outbound
  - POST /bridge/lock
  - POST /bridge/unlock
paths:
  /tokens:
    get:
      summary: List tokens
      responses:
        '200':
          description: Token list returned
    post:
      summary: Deploy token
      responses:
        '201':
          description: Token deployed
      security:
        - oauth2: []
        - mtls: []
  /tokens/{code}:
    get:
      summary: Get token by code
      parameters:
        - name: code
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Token returned
  /liens:
    post:
      summary: Place lien
      responses:
        '201':
          description: Lien created
      security:
        - oauth2: []
        - mtls: []
  /liens/{lienId}:
    get:
      summary: Get lien by identifier
      parameters:
        - name: lienId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Lien returned
  /compliance/accounts/{accountRefId}:
    get:
      summary: Get account compliance state
      parameters:
        - name: accountRefId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Compliance record returned
  /triggers:
    get:
      summary: List triggers
      responses:
        '200':
          description: Trigger list returned
  /triggers/{triggerId}:
    get:
      summary: Get trigger by identifier
      parameters:
        - name: triggerId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Trigger returned
  /iso/inbound:
    post:
      summary: Receive inbound ISO 20022 message
      responses:
        '202':
          description: Message accepted
  /iso/outbound:
    post:
      summary: Submit outbound ISO 20022 message
      responses:
        '201':
          description: Outbound trigger created
      security:
        - oauth2: []
        - mtls: []
  /packets:
    get:
      summary: List payment packets
      responses:
        '200':
          description: Packet list returned
  /bridge/lock:
    post:
      summary: Lock assets for bridge dispatch
      responses:
        '201':
          description: Bridge lock recorded
      security:
        - oauth2: []
        - mtls: []
  /bridge/unlock:
    post:
      summary: Unlock assets after settlement
      responses:
        '201':
          description: Bridge unlock recorded
      security:
        - oauth2: []
        - mtls: []
components:
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://auth.example.invalid/oauth/token
          scopes:
            control-plane: Access the control plane API
    mtls:
      type: mutualTLS
