{
  "openapi": "3.1.0",
  "info": {
    "title": "Canton Wallet API",
    "version": "0.0.1",
    "description": "Independent multisig API surface backed by @0xsend/cws store semantics."
  },
  "components": {
    "schemas": {
      "Health": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "package": {
            "type": "string",
            "enum": [
              "@0xsend/cws"
            ]
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "ok",
          "package",
          "version"
        ]
      },
      "MultisigMember": {
        "type": "object",
        "properties": {
          "partyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "role": {
            "type": "string",
            "enum": [
              "signer"
            ]
          }
        },
        "required": [
          "partyId",
          "role"
        ]
      },
      "MultisigListItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "threshold": {
            "type": "integer",
            "minimum": 1
          },
          "totalSigners": {
            "type": "integer",
            "minimum": 1
          },
          "partyId": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending_submission",
              "pending_topology_confirmation",
              "pending_authorization",
              "active",
              "failed",
              "expired",
              "rejected"
            ]
          },
          "createdBy": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "createdAt": {
            "type": "integer"
          },
          "expiresAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "signedCount": {
            "type": "integer",
            "minimum": 0
          },
          "thresholdMet": {
            "type": "boolean"
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MultisigMember"
            }
          }
        },
        "required": [
          "id",
          "name",
          "threshold",
          "totalSigners",
          "partyId",
          "status",
          "createdBy",
          "createdAt",
          "expiresAt",
          "signedCount",
          "thresholdMet",
          "members"
        ]
      },
      "MultisigListResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "multisigs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MultisigListItem"
            }
          }
        },
        "required": [
          "success",
          "multisigs"
        ]
      },
      "ApiError": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "example": "Unauthorized"
          },
          "details": {}
        },
        "required": [
          "error"
        ]
      },
      "MultisigTopologyChangeAddMember": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "add_member"
            ]
          },
          "partyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "publicKeyDER": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "description": "Base64-encoded bytes",
                "example": "AQID"
              },
              {
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 255
                },
                "description": "Raw bytes as an array of integers",
                "example": [
                  1,
                  2,
                  3
                ]
              }
            ]
          }
        },
        "required": [
          "type",
          "partyId"
        ]
      },
      "MultisigTopologyChangeRemoveMember": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "remove_member"
            ]
          },
          "partyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          }
        },
        "required": [
          "type",
          "partyId"
        ]
      },
      "MultisigTopologyChangeThresholdChange": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "threshold_change"
            ]
          },
          "from": {
            "type": "integer",
            "minimum": 1
          },
          "to": {
            "type": "integer",
            "minimum": 1
          }
        },
        "required": [
          "type",
          "from",
          "to"
        ]
      },
      "MultisigTopologyChange": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/MultisigTopologyChangeAddMember"
          },
          {
            "$ref": "#/components/schemas/MultisigTopologyChangeRemoveMember"
          },
          {
            "$ref": "#/components/schemas/MultisigTopologyChangeThresholdChange"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "add_member": "#/components/schemas/MultisigTopologyChangeAddMember",
            "remove_member": "#/components/schemas/MultisigTopologyChangeRemoveMember",
            "threshold_change": "#/components/schemas/MultisigTopologyChangeThresholdChange"
          }
        }
      },
      "MultisigTopologyUpdateMetadata": {
        "type": "object",
        "properties": {
          "currentOwnerCount": {
            "type": "integer",
            "minimum": 0
          },
          "currentThreshold": {
            "type": "integer",
            "minimum": 0
          },
          "newOwnerCount": {
            "type": "integer",
            "minimum": 0
          },
          "newThreshold": {
            "type": "integer",
            "minimum": 0
          },
          "changes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MultisigTopologyChange"
            }
          },
          "addMemberCount": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "currentOwnerCount",
          "currentThreshold",
          "newOwnerCount",
          "newThreshold",
          "changes",
          "addMemberCount"
        ]
      },
      "EnrichedMultisigTopologyUpdate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "transactionType": {
            "type": "string",
            "enum": [
              "creation",
              "update"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "creation",
              "update"
            ]
          },
          "sequenceNumber": {
            "type": "integer"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending_submission",
              "pending_topology_confirmation",
              "pending_authorization",
              "active",
              "failed",
              "expired",
              "rejected"
            ]
          },
          "createdBy": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "createdAt": {
            "type": "integer"
          },
          "expiresAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "submittedAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "rejectedAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "transactionHash": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "multiTransactionHash": {
            "type": "string"
          },
          "partyId": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "metadata": {
            "$ref": "#/components/schemas/MultisigTopologyUpdateMetadata"
          },
          "signedCount": {
            "type": "integer",
            "minimum": 0
          },
          "rejectionCount": {
            "type": "integer",
            "minimum": 0
          },
          "hasApproved": {
            "type": "boolean"
          },
          "hasRejected": {
            "type": "boolean"
          },
          "hasSigned": {
            "type": "boolean"
          },
          "thresholdMet": {
            "type": "boolean"
          },
          "awaitingSignature": {
            "type": "boolean"
          },
          "canSubmit": {
            "type": "boolean"
          },
          "requiredSignatures": {
            "type": "integer",
            "minimum": 1
          },
          "members": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "partyId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 255,
                  "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
                },
                "hasApproved": {
                  "type": "boolean"
                },
                "hasRejected": {
                  "type": "boolean"
                }
              },
              "required": [
                "partyId",
                "hasApproved",
                "hasRejected"
              ]
            }
          }
        },
        "required": [
          "id",
          "transactionType",
          "type",
          "sequenceNumber",
          "status",
          "createdBy",
          "createdAt",
          "expiresAt",
          "submittedAt",
          "rejectedAt",
          "transactionHash",
          "summary",
          "multiTransactionHash",
          "partyId",
          "metadata",
          "signedCount",
          "rejectionCount",
          "hasApproved",
          "hasRejected",
          "hasSigned",
          "thresholdMet",
          "awaitingSignature",
          "canSubmit",
          "requiredSignatures",
          "members"
        ]
      },
      "MultisigTransactionMetadata": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "additionalProperties": {}
      },
      "EnrichedMultisigTransaction": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "multisigPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "transactionHash": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255
            },
            "description": "Transaction hash as a byte array (number[] per byte).",
            "example": [
              1,
              2,
              3
            ]
          },
          "threshold": {
            "type": "integer",
            "minimum": 1
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "submitting",
              "submitted",
              "failed",
              "expired",
              "rejected"
            ]
          },
          "createdBy": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "createdAt": {
            "type": "integer"
          },
          "expiresAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "submittedAt": {
            "type": "integer"
          },
          "sequenceNumber": {
            "type": "integer"
          },
          "signedCount": {
            "type": "integer",
            "minimum": 0
          },
          "rejectionCount": {
            "type": "integer",
            "minimum": 0
          },
          "hasApproved": {
            "type": "boolean"
          },
          "hasRejected": {
            "type": "boolean"
          },
          "hasSigned": {
            "type": "boolean"
          },
          "thresholdMet": {
            "type": "boolean"
          },
          "awaitingSignature": {
            "type": "boolean"
          },
          "canSubmit": {
            "type": "boolean"
          },
          "members": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "partyId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 255,
                  "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
                },
                "hasApproved": {
                  "type": "boolean"
                },
                "hasRejected": {
                  "type": "boolean"
                }
              },
              "required": [
                "partyId",
                "hasApproved",
                "hasRejected"
              ]
            }
          },
          "metadata": {
            "$ref": "#/components/schemas/MultisigTransactionMetadata"
          }
        },
        "required": [
          "id",
          "multisigPartyId",
          "transactionHash",
          "threshold",
          "status",
          "createdBy",
          "createdAt",
          "expiresAt",
          "sequenceNumber",
          "signedCount",
          "rejectionCount",
          "hasApproved",
          "hasRejected",
          "hasSigned",
          "thresholdMet",
          "awaitingSignature",
          "canSubmit",
          "members"
        ]
      },
      "MultisigPendingMultisigGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "partyId": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending_submission",
              "pending_topology_confirmation",
              "pending_authorization",
              "active",
              "failed",
              "expired",
              "rejected"
            ]
          },
          "threshold": {
            "type": "integer",
            "minimum": 1
          },
          "totalSigners": {
            "type": "integer",
            "minimum": 1
          },
          "topologyItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EnrichedMultisigTopologyUpdate"
            }
          },
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EnrichedMultisigTransaction"
            }
          },
          "mostRecentTimestamp": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "name",
          "partyId",
          "status",
          "threshold",
          "totalSigners",
          "topologyItems",
          "transactions",
          "mostRecentTimestamp"
        ]
      },
      "MultisigPendingActionsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "multisigs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MultisigPendingMultisigGroup"
            }
          },
          "count": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "success",
          "multisigs",
          "count"
        ]
      },
      "MultisigDetails": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "partyId": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending_submission",
              "pending_topology_confirmation",
              "pending_authorization",
              "active",
              "failed",
              "expired",
              "rejected"
            ]
          },
          "createdBy": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "createdAt": {
            "type": "integer"
          },
          "expiresAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "threshold": {
            "type": "integer",
            "minimum": 1
          },
          "totalSigners": {
            "type": "integer",
            "minimum": 1
          },
          "signedCount": {
            "type": "integer",
            "minimum": 0
          },
          "thresholdMet": {
            "type": "boolean"
          },
          "allSignersSigned": {
            "type": "boolean"
          },
          "canSubmit": {
            "type": "boolean"
          },
          "multiTransactionHash": {
            "type": [
              "string",
              "null"
            ]
          },
          "members": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "partyId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 255,
                  "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
                },
                "hasApproved": {
                  "type": "boolean"
                },
                "hasRejected": {
                  "type": "boolean"
                }
              },
              "required": [
                "partyId",
                "hasApproved",
                "hasRejected"
              ]
            }
          }
        },
        "required": [
          "id",
          "name",
          "partyId",
          "status",
          "createdBy",
          "createdAt",
          "expiresAt",
          "threshold",
          "totalSigners",
          "signedCount",
          "thresholdMet",
          "allSignersSigned",
          "canSubmit",
          "multiTransactionHash",
          "members"
        ]
      },
      "MultisigDetailsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "multisig": {
            "$ref": "#/components/schemas/MultisigDetails"
          }
        },
        "required": [
          "success",
          "multisig"
        ]
      },
      "CreateMultisigResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "multisigId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending_submission",
              "pending_topology_confirmation",
              "pending_authorization",
              "active",
              "failed",
              "expired",
              "rejected"
            ]
          },
          "partyId": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "creationTopologyId": {
            "type": "string"
          },
          "multiTransactionHash": {
            "type": "string"
          },
          "requiredSignatures": {
            "type": "integer",
            "minimum": 1
          },
          "expiresAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "totalSigners": {
            "type": "integer",
            "minimum": 1
          },
          "threshold": {
            "type": "integer",
            "minimum": 1
          },
          "message": {
            "type": "string"
          },
          "nextSteps": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "success",
          "multisigId",
          "status",
          "partyId",
          "creationTopologyId",
          "multiTransactionHash",
          "requiredSignatures",
          "expiresAt"
        ]
      },
      "RefreshMultisigResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "multisigId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending_submission",
              "pending_topology_confirmation",
              "pending_authorization",
              "pending_activation",
              "active",
              "failed",
              "expired",
              "rejected"
            ]
          },
          "partyId": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "success",
          "multisigId",
          "status",
          "partyId"
        ]
      },
      "SyncMultisigMembersResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "multisigId": {
            "type": "string"
          },
          "memberCount": {
            "type": "integer",
            "minimum": 0
          },
          "threshold": {
            "type": "integer",
            "minimum": 1
          },
          "totalSigners": {
            "type": "integer",
            "minimum": 1
          },
          "lastMembersSyncAt": {
            "type": "integer"
          }
        },
        "required": [
          "success",
          "multisigId",
          "memberCount",
          "threshold",
          "totalSigners",
          "lastMembersSyncAt"
        ]
      },
      "ResolveMultisigResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "partyId": {
            "type": [
              "string",
              "null"
            ],
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending_submission",
              "pending_topology_confirmation",
              "pending_authorization",
              "active",
              "failed",
              "expired",
              "rejected"
            ]
          }
        },
        "required": [
          "id",
          "partyId",
          "slug",
          "name",
          "status"
        ]
      },
      "UpdateMultisigConfigResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          }
        },
        "required": [
          "error"
        ]
      },
      "MultisigApiPagination": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1
          },
          "limit": {
            "type": "integer",
            "minimum": 1
          },
          "total": {
            "type": "integer",
            "minimum": 0
          },
          "totalPages": {
            "type": "integer",
            "minimum": 1
          }
        },
        "required": [
          "page",
          "limit",
          "total",
          "totalPages"
        ]
      },
      "MultisigTransactionListResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EnrichedMultisigTransaction"
            }
          },
          "pagination": {
            "$ref": "#/components/schemas/MultisigApiPagination"
          }
        },
        "required": [
          "success",
          "transactions",
          "pagination"
        ]
      },
      "ResolveMultisigTransactionResponse": {
        "type": "object",
        "properties": {
          "transactionId": {
            "type": "string"
          }
        },
        "required": [
          "transactionId"
        ]
      },
      "MultisigTransactionDetailsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "transaction": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnrichedMultisigTransaction"
              },
              {
                "type": "object",
                "properties": {
                  "multisig": {
                    "type": "object",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "partyId": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "minLength": 1,
                        "maxLength": 255,
                        "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
                      },
                      "threshold": {
                        "type": "integer",
                        "minimum": 1
                      }
                    },
                    "required": [
                      "id",
                      "name",
                      "partyId",
                      "threshold"
                    ]
                  }
                },
                "required": [
                  "multisig"
                ]
              }
            ]
          }
        },
        "required": [
          "success",
          "transaction"
        ]
      },
      "QueueMultisigTransactionResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "transactionId": {
            "type": "string"
          },
          "threshold": {
            "type": "integer",
            "minimum": 1
          },
          "totalSigners": {
            "type": "integer",
            "minimum": 1
          },
          "isExisting": {
            "type": "boolean"
          }
        },
        "required": [
          "success",
          "transactionId",
          "threshold",
          "totalSigners",
          "isExisting"
        ]
      },
      "PreparedTransactionSigningTask": {
        "type": "object",
        "properties": {
          "actAsMultisigPartyId": {
            "type": "string"
          },
          "threshold": {
            "type": "integer",
            "minimum": 0
          },
          "totalSigners": {
            "type": "integer",
            "minimum": 0
          },
          "status": {
            "type": "string"
          }
        },
        "required": [
          "actAsMultisigPartyId",
          "threshold",
          "totalSigners",
          "status"
        ]
      },
      "PreparedTransactionWithTasksResponse": {
        "type": "object",
        "properties": {
          "preparedTransactionId": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "transactionHash": {
            "type": "string",
            "description": "Hex-encoded transaction hash."
          },
          "preparedTransaction": {
            "type": "string",
            "description": "Base64-encoded protobuf bytes."
          },
          "createdBy": {
            "type": "string"
          },
          "createdAt": {
            "type": "integer"
          },
          "expiresAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "submittedAt": {
            "type": "integer"
          },
          "submissionId": {
            "type": "string"
          },
          "signingTasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PreparedTransactionSigningTask"
            }
          }
        },
        "required": [
          "preparedTransactionId",
          "status",
          "transactionHash",
          "preparedTransaction",
          "createdBy",
          "createdAt",
          "expiresAt",
          "signingTasks"
        ]
      },
      "TransactionSignRequest": {
        "type": "object",
        "properties": {
          "actAsMultisigPartyId": {
            "type": "string",
            "minLength": 1,
            "description": "The multisig party ID whose signing task the caller is acting on.",
            "example": "cantonwallet-company-treasury::1220abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
          },
          "signature": {
            "type": "string",
            "minLength": 1,
            "description": "Base64-encoded DER-encoded ECDSA signature over the transaction hash.",
            "example": "MEYCIQDn..."
          }
        },
        "required": [
          "actAsMultisigPartyId",
          "signature"
        ]
      },
      "TransactionRejectRequest": {
        "type": "object",
        "properties": {
          "actAsMultisigPartyId": {
            "type": "string",
            "minLength": 1,
            "description": "The multisig party ID whose signing task the caller is rejecting.",
            "example": "cantonwallet-company-treasury::1220abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
          },
          "signature": {
            "type": "string",
            "minLength": 1,
            "description": "Base64-encoded DER-encoded ECDSA rejection signature over sha256(\"REJECT:\" + transactionId).",
            "example": "MEYCIQDn..."
          }
        },
        "required": [
          "actAsMultisigPartyId",
          "signature"
        ]
      },
      "TransactionCancelRequest": {
        "type": "object",
        "properties": {
          "actAsMultisigPartyId": {
            "type": "string",
            "minLength": 1,
            "description": "The multisig party ID on whose behalf the creator is cancelling.",
            "example": "cantonwallet-company-treasury::1220abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
          }
        },
        "required": [
          "actAsMultisigPartyId"
        ]
      },
      "TransactionSubmitRequest": {
        "type": "object",
        "properties": {
          "actAsMultisigPartyId": {
            "type": "string",
            "minLength": 1,
            "description": "The multisig party ID whose signing task has reached quorum.",
            "example": "cantonwallet-company-treasury::1220abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
          },
          "extraSignatures": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "partyId": {
                  "type": "string",
                  "minLength": 1
                },
                "signature": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "required": [
                "partyId",
                "signature"
              ]
            },
            "description": "Base64 DER ECDSA-SHA256 signatures from EC_SECP256K1 keys for non-multisig actAs parties in the prepared transaction. Other key specs are not supported on this path."
          }
        },
        "required": [
          "actAsMultisigPartyId"
        ]
      },
      "SubmitMultisigTransactionResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "transactionId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "submitted"
            ]
          },
          "submittedAt": {
            "type": "integer"
          },
          "submissionId": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "success",
          "transactionId",
          "status"
        ]
      },
      "SubmitSingleResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "updateId": {
            "type": "string"
          },
          "commandId": {
            "type": "string"
          },
          "submissionId": {
            "type": "string"
          },
          "isExisting": {
            "type": "boolean"
          }
        },
        "required": [
          "success",
          "updateId",
          "commandId",
          "submissionId"
        ]
      },
      "SubmitSingleRequest": {
        "type": "object",
        "properties": {
          "prepareToken": {
            "type": "string",
            "minLength": 1
          },
          "preparedTransactionBase64": {
            "type": "string",
            "minLength": 1,
            "description": "base64-encoded PreparedTransaction protobuf",
            "example": "AQID"
          },
          "signatureBase64": {
            "type": "string",
            "minLength": 1,
            "description": "base64-encoded signature over the multiTransactionHash",
            "example": "AQID"
          }
        },
        "required": [
          "prepareToken",
          "preparedTransactionBase64",
          "signatureBase64"
        ]
      },
      "MultisigTransactionStatusResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "transactionId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "submitting",
              "submitted",
              "failed",
              "expired",
              "rejected"
            ]
          },
          "transactionHash": {
            "type": "string",
            "description": "Hex-encoded transaction hash."
          },
          "preparedTransaction": {
            "type": "string",
            "description": "Base64-encoded protobuf bytes."
          },
          "signedCount": {
            "type": "integer",
            "minimum": 0
          },
          "threshold": {
            "type": "integer",
            "minimum": 1
          },
          "thresholdMet": {
            "type": "boolean"
          },
          "canSubmit": {
            "type": "boolean"
          },
          "createdBy": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "createdAt": {
            "type": "integer"
          },
          "expiresAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "members": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "partyId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 255,
                  "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
                },
                "fingerprint": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "hasApproved": {
                  "type": "boolean"
                },
                "hasRejected": {
                  "type": "boolean"
                }
              },
              "required": [
                "partyId",
                "fingerprint",
                "hasApproved",
                "hasRejected"
              ]
            }
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "success",
          "transactionId",
          "status",
          "transactionHash",
          "preparedTransaction",
          "signedCount",
          "threshold",
          "thresholdMet",
          "canSubmit",
          "createdBy",
          "createdAt",
          "expiresAt",
          "members",
          "message"
        ]
      },
      "MultisigTopologyUpdateListResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "updates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EnrichedMultisigTopologyUpdate"
            }
          },
          "pagination": {
            "$ref": "#/components/schemas/MultisigApiPagination"
          }
        },
        "required": [
          "success",
          "updates",
          "pagination"
        ]
      },
      "ResolveMultisigTopologyUpdateResponse": {
        "type": "object",
        "properties": {
          "topologyId": {
            "type": "string"
          }
        },
        "required": [
          "topologyId"
        ]
      },
      "MultisigTopologyUpdateDetailsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "update": {
            "$ref": "#/components/schemas/EnrichedMultisigTopologyUpdate"
          }
        },
        "required": [
          "success",
          "update"
        ]
      },
      "ProposeMultisigTopologyUpdateResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "multisigId": {
            "type": "string"
          },
          "updateId": {
            "type": "string"
          },
          "multiTransactionHash": {
            "type": "string"
          },
          "requiredSignatures": {
            "type": "integer",
            "minimum": 1
          },
          "expiresAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "summary": {
            "type": "string"
          }
        },
        "required": [
          "success",
          "multisigId",
          "updateId",
          "multiTransactionHash",
          "requiredSignatures",
          "expiresAt"
        ]
      },
      "MultisigTopologyUpdateVoteResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "updateId": {
            "type": "string"
          },
          "multisigId": {
            "type": "string"
          },
          "partyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "signatureCount": {
            "type": "integer",
            "minimum": 0
          },
          "requiredSignatures": {
            "type": "integer",
            "minimum": 1
          },
          "allSignaturesCollected": {
            "type": "boolean"
          },
          "rejectedBy": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "rejectedAt": {
            "type": "integer"
          },
          "reason": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "success",
          "updateId",
          "multisigId"
        ]
      },
      "SubmitMultisigTopologyUpdateResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "multisigId": {
            "type": "string"
          },
          "updateId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending_submission",
              "pending_topology_confirmation",
              "pending_authorization",
              "active",
              "failed",
              "expired",
              "rejected"
            ]
          },
          "submittedAt": {
            "type": "integer"
          },
          "newThreshold": {
            "type": "integer",
            "minimum": 1
          },
          "newTotalSigners": {
            "type": "integer",
            "minimum": 1
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "success",
          "multisigId",
          "updateId",
          "status"
        ]
      },
      "Instrument": {
        "type": "object",
        "properties": {
          "instrumentId": {
            "type": "string"
          },
          "registrar": {
            "type": "string"
          },
          "packageId": {
            "type": "string"
          },
          "templateId": {
            "type": "string"
          },
          "configurationContract": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "contractId": {
                "type": "string"
              },
              "templateId": {
                "type": "string"
              },
              "createdEventBlob": {
                "type": "string"
              },
              "synchronizerId": {
                "type": "string"
              },
              "registrar": {
                "type": "string"
              }
            },
            "required": [
              "contractId",
              "templateId",
              "createdEventBlob"
            ]
          }
        },
        "required": [
          "instrumentId",
          "packageId",
          "templateId",
          "configurationContract"
        ]
      },
      "ListInstrumentsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "instruments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Instrument"
            }
          }
        },
        "required": [
          "success",
          "instruments"
        ]
      },
      "Holding": {
        "type": "object",
        "properties": {
          "contractId": {
            "type": "string"
          },
          "templateId": {
            "type": "string"
          },
          "createdEventBlob": {
            "type": "string"
          },
          "synchronizerId": {
            "type": "string"
          },
          "amountCc": {
            "type": "string"
          },
          "registrar": {
            "type": "string"
          },
          "operator": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          }
        },
        "required": [
          "contractId",
          "templateId",
          "createdEventBlob",
          "synchronizerId",
          "amountCc"
        ]
      },
      "ListHoldingsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "partyId": {
            "type": "string"
          },
          "instrumentId": {
            "type": "string"
          },
          "holdings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Holding"
            }
          }
        },
        "required": [
          "success",
          "partyId",
          "holdings"
        ]
      },
      "TransferInstruction": {
        "type": "object",
        "properties": {
          "contractId": {
            "type": "string"
          },
          "templateId": {
            "type": "string"
          },
          "createdEventBlob": {
            "type": "string"
          },
          "synchronizerId": {
            "type": "string"
          },
          "sender": {
            "type": "string"
          },
          "receiver": {
            "type": "string"
          },
          "amount": {
            "type": "string"
          },
          "instrumentId": {
            "type": "string"
          }
        },
        "required": [
          "contractId",
          "templateId",
          "createdEventBlob",
          "synchronizerId",
          "sender",
          "receiver",
          "amount",
          "instrumentId"
        ]
      },
      "ListTransferInstructionsResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "partyId": {
            "type": "string"
          },
          "direction": {
            "type": "string",
            "enum": [
              "incoming",
              "outgoing",
              "all"
            ]
          },
          "transferInstructions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransferInstruction"
            }
          }
        },
        "required": [
          "success",
          "partyId",
          "direction",
          "transferInstructions"
        ]
      },
      "CostEstimationWire": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "totalTrafficCostEstimation": {
            "type": "string"
          },
          "confirmationRequestTrafficCostEstimation": {
            "type": "string"
          },
          "confirmationResponseTrafficCostEstimation": {
            "type": "string"
          },
          "estimationTimestamp": {
            "type": "string"
          }
        },
        "required": [
          "totalTrafficCostEstimation",
          "confirmationRequestTrafficCostEstimation",
          "confirmationResponseTrafficCostEstimation"
        ]
      },
      "TransferFeeMetadata": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "none",
              "fixed",
              "traffic-cost"
            ],
            "example": "none"
          },
          "amountCc": {
            "type": "string",
            "example": "0"
          },
          "recipientPartyId": {
            "type": [
              "string",
              "null"
            ],
            "example": null
          }
        },
        "required": [
          "mode",
          "amountCc",
          "recipientPartyId"
        ]
      },
      "BasePreparedSubmission": {
        "type": "object",
        "properties": {
          "preparedTransactionBase64": {
            "type": "string",
            "example": "AQID"
          },
          "transactionHash": {
            "type": "string",
            "example": "deadbeef"
          },
          "prepareToken": {
            "type": "string",
            "minLength": 1,
            "example": "header.payload.signature"
          },
          "commandId": {
            "type": "string",
            "example": "transfer-1712345678-abc1234"
          }
        },
        "required": [
          "preparedTransactionBase64",
          "transactionHash",
          "prepareToken",
          "commandId"
        ]
      },
      "TransferInstructionPreparedSubmission": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BasePreparedSubmission"
          },
          {
            "type": "object",
            "properties": {
              "transferKind": {
                "type": "string",
                "enum": [
                  "self",
                  "direct",
                  "offer"
                ],
                "example": "direct"
              },
              "costEstimation": {
                "$ref": "#/components/schemas/CostEstimationWire"
              },
              "fee": {
                "$ref": "#/components/schemas/TransferFeeMetadata"
              }
            },
            "required": [
              "transferKind",
              "costEstimation",
              "fee"
            ]
          }
        ]
      },
      "TransferInstructionIntent": {
        "type": "object",
        "properties": {
          "multisigPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "receiverPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "amount": {
            "type": "string",
            "pattern": "^\\d+(\\.\\d+)?$"
          },
          "instrumentId": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": "string"
          },
          "nonce": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$"
          },
          "retryGeneration": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "receiverPartyId",
          "amount",
          "instrumentId"
        ]
      },
      "TransferInstructionAcceptIntent": {
        "type": "object",
        "properties": {
          "multisigPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "transferInstructionContractId": {
            "type": "string",
            "minLength": 1
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "nonce": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$"
          },
          "retryGeneration": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "transferInstructionContractId"
        ]
      },
      "TransferInstructionRejectIntent": {
        "type": "object",
        "properties": {
          "multisigPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "transferInstructionContractId": {
            "type": "string",
            "minLength": 1
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "nonce": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$"
          },
          "retryGeneration": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "transferInstructionContractId"
        ]
      },
      "TransferInstructionWithdrawIntent": {
        "type": "object",
        "properties": {
          "multisigPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "transferInstructionContractId": {
            "type": "string",
            "minLength": 1
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "nonce": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$"
          },
          "retryGeneration": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "transferInstructionContractId"
        ]
      },
      "BulkTransferPreparedSubmission": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BasePreparedSubmission"
          },
          {
            "type": "object",
            "properties": {
              "costEstimation": {
                "$ref": "#/components/schemas/CostEstimationWire"
              },
              "fee": {
                "$ref": "#/components/schemas/TransferFeeMetadata"
              }
            },
            "required": [
              "costEstimation",
              "fee"
            ]
          }
        ]
      },
      "BulkTransferIntent": {
        "type": "object",
        "properties": {
          "multisigPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "bulkTransferVersion": {
            "type": "string",
            "enum": [
              "v2",
              "v3"
            ]
          },
          "recipients": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "receiverPartyId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 255,
                  "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
                },
                "amount": {
                  "type": "string",
                  "pattern": "^\\d+(\\.\\d+)?$"
                },
                "instrumentId": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "required": [
                "receiverPartyId",
                "amount",
                "instrumentId"
              ]
            },
            "minItems": 1
          },
          "description": {
            "type": "string"
          },
          "nonce": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$"
          },
          "retryGeneration": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "recipients"
        ]
      },
      "BulkTransferSetupIntent": {
        "type": "object",
        "properties": {
          "multisigPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "totalRecipientCount": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "description": {
            "type": "string"
          },
          "nonce": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$"
          },
          "retryGeneration": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "totalRecipientCount"
        ]
      },
      "PreapprovalIntent": {
        "type": "object",
        "properties": {
          "multisigPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "instrumentId": {
            "type": "string",
            "minLength": 1
          },
          "retryGeneration": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          }
        },
        "additionalProperties": false
      },
      "PreapprovalRevokeIntent": {
        "type": "object",
        "properties": {
          "multisigPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "preapprovalContractId": {
            "type": "string",
            "minLength": 1
          },
          "nonce": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$"
          },
          "retryGeneration": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "preapprovalContractId"
        ]
      },
      "AutoMergeIntent": {
        "type": "object",
        "properties": {
          "multisigPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "providerPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "instrumentId": {
            "type": "string",
            "minLength": 1
          },
          "nonce": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$"
          },
          "retryGeneration": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "providerPartyId",
          "instrumentId"
        ]
      },
      "AutoMergeRevokeIntent": {
        "type": "object",
        "properties": {
          "multisigPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "delegationContractId": {
            "type": "string",
            "minLength": 1
          },
          "nonce": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$"
          },
          "retryGeneration": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "delegationContractId"
        ]
      },
      "CreateMultisigPreparedTopology": {
        "type": "object",
        "properties": {
          "partyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "namespace": {
            "type": "string",
            "pattern": "^1220[0-9a-fA-F]{64}$"
          },
          "ownerFingerprints": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^1220[0-9a-fA-F]{64}$"
            },
            "minItems": 1
          },
          "memberPartyIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
            },
            "minItems": 1
          },
          "serializedTransactions": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "description": "Base64-encoded bytes",
                  "example": "AQID"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "description": "Raw bytes as an array of integers",
                  "example": [
                    1,
                    2,
                    3
                  ]
                }
              ]
            },
            "minItems": 1
          },
          "transactionHashes": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "description": "Base64-encoded bytes",
                  "example": "AQID"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "description": "Raw bytes as an array of integers",
                  "example": [
                    1,
                    2,
                    3
                  ]
                }
              ]
            },
            "minItems": 1
          },
          "multiTransactionHash": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "description": "Base64-encoded bytes",
                "example": "AQID"
              },
              {
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 255
                },
                "description": "Raw bytes as an array of integers",
                "example": [
                  1,
                  2,
                  3
                ]
              }
            ]
          },
          "threshold": {
            "type": "integer",
            "minimum": 1
          },
          "totalSigners": {
            "type": "integer",
            "minimum": 1
          },
          "participantIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "minItems": 1
          },
          "confirmationThreshold": {
            "type": "integer",
            "minimum": 1
          },
          "synchronizerId": {
            "type": "string",
            "minLength": 1
          },
          "prepareToken": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "partyId",
          "namespace",
          "ownerFingerprints",
          "memberPartyIds",
          "serializedTransactions",
          "transactionHashes",
          "multiTransactionHash",
          "threshold",
          "totalSigners",
          "participantIds",
          "confirmationThreshold",
          "synchronizerId",
          "prepareToken"
        ]
      },
      "CreateMultisigIntent": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1
          },
          "threshold": {
            "type": "integer",
            "minimum": 1
          },
          "memberPartyIds": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
            },
            "minItems": 1
          },
          "expiryHours": {
            "type": "integer",
            "minimum": 0
          },
          "nonce": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$"
          },
          "retryGeneration": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "name",
          "threshold",
          "memberPartyIds"
        ]
      },
      "TopologyUpdatePrepared": {
        "type": "object",
        "properties": {
          "multisigId": {
            "type": "string",
            "format": "uuid"
          },
          "multisigPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "partyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "serializedTransactions": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "description": "Base64-encoded bytes",
                  "example": "AQID"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "description": "Raw bytes as an array of integers",
                  "example": [
                    1,
                    2,
                    3
                  ]
                }
              ]
            },
            "minItems": 1
          },
          "transactionHashes": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "string",
                  "minLength": 1,
                  "description": "Base64-encoded bytes",
                  "example": "AQID"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "description": "Raw bytes as an array of integers",
                  "example": [
                    1,
                    2,
                    3
                  ]
                }
              ]
            },
            "minItems": 1
          },
          "multiTransactionHash": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "description": "Base64-encoded bytes",
                "example": "AQID"
              },
              {
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 255
                },
                "description": "Raw bytes as an array of integers",
                "example": [
                  1,
                  2,
                  3
                ]
              }
            ]
          },
          "currentOwnerFingerprints": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^1220[0-9a-fA-F]{64}$"
            },
            "minItems": 1
          },
          "newOwnerFingerprints": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^1220[0-9a-fA-F]{64}$"
            },
            "minItems": 1
          },
          "currentThreshold": {
            "type": "integer",
            "minimum": 1
          },
          "newThreshold": {
            "type": "integer",
            "minimum": 1
          },
          "summary": {
            "type": "string"
          },
          "normalizedChanges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MultisigTopologyChange"
            }
          },
          "requiredSignatures": {
            "type": "integer",
            "minimum": 1
          },
          "prepareToken": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "multisigId",
          "multisigPartyId",
          "partyId",
          "serializedTransactions",
          "transactionHashes",
          "multiTransactionHash",
          "currentOwnerFingerprints",
          "newOwnerFingerprints",
          "currentThreshold",
          "newThreshold",
          "summary",
          "normalizedChanges",
          "requiredSignatures",
          "prepareToken"
        ]
      },
      "TopologyUpdateIntent": {
        "type": "object",
        "properties": {
          "multisigPartyId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
          },
          "changes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MultisigTopologyChange"
            },
            "minItems": 1
          },
          "expiryHours": {
            "type": "integer",
            "minimum": 0
          },
          "nonce": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$"
          },
          "retryGeneration": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "changes"
        ]
      },
      "TapIntent": {
        "type": "object",
        "properties": {
          "amountCc": {
            "type": "string",
            "pattern": "^\\d+(\\.\\d+)?$"
          },
          "nonce": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$"
          },
          "retryGeneration": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "amountCc"
        ]
      },
      "ExerciseResponse": {
        "type": "object",
        "properties": {
          "commandId": {
            "type": "string",
            "description": "Server-derived idempotency key in the form `<commandIdPrefix>-<first32hex_of_sha256>`. Two callers issuing the same canonical request receive the same commandId.",
            "example": "dep-12345-a1b2c3d4e5f60718293a4b5c6d7e8f90"
          },
          "preparedTransaction": {
            "type": "string",
            "description": "Base64-encoded protobuf bytes of the PreparedTransaction."
          },
          "transactionHash": {
            "type": "string",
            "description": "Hex-encoded transaction hash for signing."
          },
          "prepareToken": {
            "type": "string",
            "description": "HS256 JWT bound to (commandId, transactionHash, partyId, endpoint=exercise-submit). Required when subsequently queueing the prepared transaction for submission."
          }
        },
        "required": [
          "commandId",
          "preparedTransaction",
          "transactionHash",
          "prepareToken"
        ]
      },
      "ExerciseRequest": {
        "type": "object",
        "properties": {
          "templateId": {
            "type": "string",
            "minLength": 1,
            "description": "DAML template identifier in \"pkgId::Module:Entity\" format",
            "example": "abc123::Splice.Amulet:Amulet"
          },
          "contractId": {
            "type": "string",
            "minLength": 1,
            "example": "0066e...#0:0"
          },
          "choice": {
            "type": "string",
            "minLength": 1,
            "example": "Archive"
          },
          "choiceArgument": {
            "description": "Canonical Canton Value protobuf, JSON-encoded via @bufbuild/protobuf toJson. Deserialized server-side via fromJson(ValueSchema, ...)."
          },
          "actAsParties": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "minItems": 1,
            "description": "Parties that act as submitters. Each non-multisig party must equal the caller.",
            "example": [
              "cantonwallet-treasury::1220abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
            ]
          },
          "disclosedContracts": {
            "type": "array",
            "items": {},
            "description": "Optional disclosed contracts (DisclosedContract protobuf, JSON-encoded). Deserialized server-side."
          },
          "commandIdPrefix": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,32}$",
            "description": "Required label for log searchability and operational namespacing. The full commandId is server-derived as `<commandIdPrefix>-<sha256_32hex>`.",
            "example": "dep-12345"
          },
          "retryGeneration": {
            "type": "integer",
            "minimum": 0,
            "description": "Optional retry counter (default 0). Increment to force a fresh prepared transaction for the same logical request after a terminal-state previous attempt.",
            "example": 0
          },
          "nonce": {
            "type": "string",
            "description": "Optional opaque per-intent idempotency token. Defaults to empty string when omitted; passing a fresh nonce produces a fresh commandId.",
            "example": ""
          },
          "packagePreference": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional package ID selection preference list."
          },
          "synchronizerId": {
            "type": "string",
            "minLength": 1,
            "example": "synchronizer::1220..."
          }
        },
        "required": [
          "templateId",
          "contractId",
          "choice",
          "actAsParties",
          "commandIdPrefix",
          "synchronizerId"
        ]
      },
      "MintOnboardingSecretResponse": {
        "type": "object",
        "properties": {
          "secret": {
            "type": "string",
            "description": "Plaintext onboarding secret. Returned once at mint time.",
            "example": "os_…"
          },
          "expiresAt": {
            "type": "integer",
            "description": "Unix epoch milliseconds at which the secret expires."
          },
          "username": {
            "type": "string",
            "example": "acme-prod-01"
          }
        },
        "required": [
          "secret",
          "expiresAt",
          "username"
        ]
      },
      "MintOnboardingSecretRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "example": "acme-prod-01"
          },
          "label": {
            "type": "string",
            "maxLength": 200,
            "example": "Acme Corp prod"
          },
          "expiresInSeconds": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 2592000,
            "example": 604800
          }
        },
        "required": [
          "username"
        ]
      },
      "OnboardingConfig": {
        "type": "object",
        "properties": {
          "participantId": {
            "type": "string",
            "example": "send-test-cantonwallet-1::1220…"
          },
          "synchronizerId": {
            "type": "string",
            "example": "global-domain::1220…"
          },
          "partyHint": {
            "type": "string",
            "example": "acme-prod-01"
          },
          "signingKeyFingerprint": {
            "type": "string",
            "example": "1220abcd…"
          }
        },
        "required": [
          "participantId",
          "synchronizerId",
          "partyHint",
          "signingKeyFingerprint"
        ]
      },
      "RedeemOnboardingSecretResponse": {
        "type": "object",
        "properties": {
          "apiKey": {
            "type": "string",
            "description": "Plaintext CWS API key. Returned once at redeem time.",
            "example": "sk_…"
          },
          "onboardingConfig": {
            "$ref": "#/components/schemas/OnboardingConfig"
          }
        },
        "required": [
          "apiKey",
          "onboardingConfig"
        ]
      },
      "SigningPublicKey": {
        "type": "object",
        "properties": {
          "keyType": {
            "type": "string",
            "enum": [
              "secp256k1",
              "p256",
              "ed25519"
            ],
            "example": "secp256k1"
          },
          "format": {
            "type": "string",
            "enum": [
              "hex",
              "pem",
              "der-b64"
            ],
            "example": "der-b64"
          },
          "value": {
            "type": "string",
            "minLength": 1,
            "description": "Public key bytes encoded per `format`",
            "example": "MFkwEwYHK…"
          }
        },
        "required": [
          "keyType",
          "format",
          "value"
        ]
      },
      "RedeemOnboardingSecretRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64
          },
          "secret": {
            "type": "string",
            "minLength": 4,
            "pattern": "^os_",
            "description": "Onboarding secret. Must start with `os_`."
          },
          "signingPublicKey": {
            "$ref": "#/components/schemas/SigningPublicKey"
          }
        },
        "required": [
          "username",
          "secret",
          "signingPublicKey"
        ]
      },
      "PreparedOnboardingTopology": {
        "type": "object",
        "properties": {
          "partyId": {
            "type": "string",
            "example": "cantonwallet-acme-prod-01::1220abcd…"
          },
          "transactions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Base64-encoded SignedTopologyTransaction protobuf wire bytes."
          },
          "transactionHashes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Hex-encoded per-transaction topology hashes (multihash)."
          },
          "multiTransactionHash": {
            "type": "string",
            "description": "Hex-encoded combined multi-transaction hash that the caller signs."
          },
          "fingerprint": {
            "type": "string",
            "description": "Hex-encoded multihash fingerprint of the signing key."
          },
          "signingAlgorithm": {
            "type": "string",
            "example": "EC_DSA_SHA_256"
          },
          "signatureFormat": {
            "type": "string",
            "example": "DER"
          },
          "rawHashForSigning": {
            "type": "string",
            "description": "Hex-encoded raw hash bytes the caller must sign (without the 1220 multihash prefix)."
          },
          "proposals": {
            "type": "array",
            "items": {
              "type": "boolean"
            },
            "description": "Per-transaction `proposal` flag from canton-client `prepareTopologyTransactions`. Round-trips unchanged through `submit`; Canton rejects messages built with the wrong value."
          }
        },
        "required": [
          "partyId",
          "transactions",
          "transactionHashes",
          "multiTransactionHash",
          "fingerprint",
          "signingAlgorithm",
          "signatureFormat",
          "rawHashForSigning",
          "proposals"
        ]
      },
      "PrepareOnboardingRequest": {
        "type": "object",
        "properties": {
          "signingPublicKey": {
            "$ref": "#/components/schemas/SigningPublicKey"
          }
        },
        "required": [
          "signingPublicKey"
        ]
      },
      "SubmitOnboardingResponse": {
        "type": "object",
        "properties": {
          "partyId": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "enum": [
              "party_submitted",
              "party_active"
            ],
            "description": "`party_active` (200) — topology landed and party is usable. `party_submitted` (202) — topology submitted, poll `GET /onboarding/status`."
          },
          "refreshToken": {
            "type": "boolean",
            "description": "When true, the caller should refresh its API-key JWT to pick up the new `canton_party_id` claim."
          }
        },
        "required": [
          "partyId",
          "state"
        ]
      },
      "SubmitOnboardingPreparedEcho": {
        "type": "object",
        "properties": {
          "transactions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "transactionHashes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "multiTransactionHash": {
            "type": "string",
            "minLength": 1
          },
          "fingerprint": {
            "type": "string",
            "minLength": 1
          },
          "signingAlgorithm": {
            "type": "string",
            "minLength": 1
          },
          "signatureFormat": {
            "type": "string",
            "minLength": 1
          },
          "proposals": {
            "type": "array",
            "items": {
              "type": "boolean"
            },
            "minItems": 1
          }
        },
        "required": [
          "transactions",
          "transactionHashes",
          "multiTransactionHash",
          "fingerprint",
          "signingAlgorithm",
          "signatureFormat",
          "proposals"
        ]
      },
      "SubmitOnboardingRequest": {
        "type": "object",
        "properties": {
          "partyId": {
            "type": "string",
            "minLength": 1
          },
          "prepared": {
            "$ref": "#/components/schemas/SubmitOnboardingPreparedEcho"
          },
          "signature": {
            "type": "string",
            "minLength": 1,
            "description": "Base64-encoded signature over `prepared.multiTransactionHash`."
          }
        },
        "required": [
          "partyId",
          "prepared",
          "signature"
        ]
      },
      "OnboardingStatusResponse": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string",
            "enum": [
              "pending_redemption",
              "bootstrapped",
              "party_submitted",
              "party_active",
              "abandoned"
            ],
            "example": "party_active"
          },
          "partyId": {
            "type": [
              "string",
              "null"
            ]
          },
          "partySubmittedAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "partyActivatedAt": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "state"
        ]
      }
    },
    "parameters": {}
  },
  "paths": {
    "/health": {
      "get": {
        "operationId": "meta.getHealth",
        "tags": [
          "Meta"
        ],
        "summary": "Health check",
        "responses": {
          "200": {
            "description": "Package health metadata",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Health"
                }
              }
            }
          }
        }
      }
    },
    "/multisigs": {
      "get": {
        "operationId": "multisigs.list",
        "tags": [
          "Multisigs"
        ],
        "summary": "List multisigs available to the authenticated party",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "enum": [
                "pending_submission",
                "pending_topology_confirmation",
                "pending_authorization",
                "active",
                "failed",
                "expired",
                "rejected"
              ],
              "example": "active"
            },
            "required": false,
            "name": "status",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Multisigs visible to the authenticated user",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultisigListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "multisigs.create",
        "tags": [
          "Multisigs"
        ],
        "summary": "Create a new multisig",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "prepareToken": {
                    "type": "string",
                    "minLength": 1
                  },
                  "serializedTransactions": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "Base64-encoded bytes",
                          "example": "AQID"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 255
                          },
                          "description": "Raw bytes as an array of integers",
                          "example": [
                            1,
                            2,
                            3
                          ]
                        }
                      ]
                    },
                    "minItems": 1
                  },
                  "transactionHashes": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "Base64-encoded bytes",
                          "example": "AQID"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 255
                          },
                          "description": "Raw bytes as an array of integers",
                          "example": [
                            1,
                            2,
                            3
                          ]
                        }
                      ]
                    },
                    "minItems": 1
                  }
                },
                "required": [
                  "prepareToken",
                  "serializedTransactions",
                  "transactionHashes"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Multisig created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateMultisigResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/multisigs/pending-actions": {
      "get": {
        "operationId": "multisigs.listPendingActions",
        "tags": [
          "Multisigs"
        ],
        "summary": "List pending actions grouped by multisig",
        "responses": {
          "200": {
            "description": "Pending actions grouped by multisig",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultisigPendingActionsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/multisigs/{multisigId}": {
      "get": {
        "operationId": "multisigs.get",
        "tags": [
          "Multisigs"
        ],
        "summary": "Get multisig details",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "3b654e85-df15-41e7-8cdd-f2fe9d9872fb"
            },
            "required": true,
            "name": "multisigId",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Multisig details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultisigDetailsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/multisigs/{multisigId}/refresh-authorization-status": {
      "post": {
        "operationId": "multisigs.refreshAuthorization",
        "tags": [
          "Multisigs"
        ],
        "summary": "Refresh multisig authorization status",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "3b654e85-df15-41e7-8cdd-f2fe9d9872fb"
            },
            "required": true,
            "name": "multisigId",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Authorization status refreshed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RefreshMultisigResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/multisigs/{multisigId}/sync-members": {
      "post": {
        "operationId": "multisigs.syncMembers",
        "tags": [
          "Multisigs"
        ],
        "summary": "Sync multisig members from topology",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "3b654e85-df15-41e7-8cdd-f2fe9d9872fb"
            },
            "required": true,
            "name": "multisigId",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Multisig members synced",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SyncMultisigMembersResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/multisigs/resolve/{identifier}": {
      "get": {
        "operationId": "multisigs.resolve",
        "tags": [
          "Multisigs"
        ],
        "summary": "Resolve a multisig identifier (UUID or pretty slug) to multisig details",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "example": "my-treasury-k3m6t5qz"
            },
            "required": true,
            "name": "identifier",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved multisig",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResolveMultisigResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/multisigs/{multisigId}/update-config": {
      "post": {
        "operationId": "multisigs.updateConfig",
        "tags": [
          "Multisigs"
        ],
        "summary": "Update multisig configuration (threshold, members) — currently disabled",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "3b654e85-df15-41e7-8cdd-f2fe9d9872fb"
            },
            "required": true,
            "name": "multisigId",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "threshold": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "members": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "partyId": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 255,
                          "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
                        },
                        "publicKeyDER": {
                          "anyOf": [
                            {
                              "type": "string",
                              "minLength": 1,
                              "description": "Base64-encoded bytes",
                              "example": "AQID"
                            },
                            {
                              "type": "array",
                              "items": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 255
                              },
                              "description": "Raw bytes as an array of integers",
                              "example": [
                                1,
                                2,
                                3
                              ]
                            }
                          ]
                        }
                      },
                      "required": [
                        "partyId"
                      ]
                    },
                    "minItems": 1
                  }
                },
                "required": [
                  "threshold",
                  "members"
                ]
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Topology updates are handled via dedicated topology-update endpoints",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateMultisigConfigResponse"
                }
              }
            }
          }
        }
      }
    },
    "/transactions": {
      "get": {
        "operationId": "transactions.list",
        "tags": [
          "Transactions"
        ],
        "summary": "List transactions for a multisig party",
        "parameters": [
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "example": 1
            },
            "required": false,
            "name": "page",
            "in": "query"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "example": 10
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "example": "cantonwallet-company-treasury::1220abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
            },
            "required": true,
            "name": "multisigPartyId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "example": "pending,submitted"
            },
            "required": false,
            "name": "status",
            "in": "query"
          },
          {
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "string",
                  "enum": [
                    "true",
                    "false"
                  ]
                }
              ]
            },
            "required": false,
            "name": "actionRequired",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Transactions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultisigTransactionListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "transactions.queue",
        "tags": [
          "Transactions"
        ],
        "summary": "Queue a prepared transaction for multisig signing",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "transactionId": {
                    "type": "string",
                    "example": "b5d425a3-3c1a-4f13-b167-61e95ced92f9"
                  },
                  "multisigPartyId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "pattern": "^[a-zA-Z0-9_-]+::1220[0-9a-fA-F]{64}$"
                  },
                  "preparedTransactionBase64": {
                    "type": "string",
                    "example": "AQID"
                  },
                  "transactionHash": {
                    "type": "string",
                    "example": "deadbeef"
                  },
                  "prepareToken": {
                    "type": "string",
                    "minLength": 1,
                    "example": "header.payload.signature"
                  }
                },
                "required": [
                  "transactionId",
                  "multisigPartyId",
                  "preparedTransactionBase64",
                  "transactionHash",
                  "prepareToken"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Transaction queued",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueueMultisigTransactionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/transactions/resolve": {
      "get": {
        "operationId": "transactions.resolve",
        "tags": [
          "Transactions"
        ],
        "summary": "Resolve a transaction short ID within a multisig to its UUID",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "550e8400-e29b-41d4-a716-446655440000"
            },
            "required": true,
            "name": "multisigId",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "example": "send-k3m6t5qz"
            },
            "required": true,
            "name": "shortId",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved transaction",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResolveMultisigTransactionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/transactions/{transactionId}": {
      "get": {
        "operationId": "transactions.get",
        "tags": [
          "Transactions"
        ],
        "summary": "Get transaction details",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "b5d425a3-3c1a-4f13-b167-61e95ced92f9"
            },
            "required": true,
            "name": "transactionId",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Transaction details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultisigTransactionDetailsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/transactions/{transactionId}/approve": {
      "post": {
        "operationId": "multisig.approveTransaction",
        "tags": [
          "Multisig"
        ],
        "summary": "Approve a pending transaction (sign on behalf of a multisig party)",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "b5d425a3-3c1a-4f13-b167-61e95ced92f9"
            },
            "required": true,
            "name": "transactionId",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionSignRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Transaction approval recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreparedTransactionWithTasksResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/transactions/{transactionId}/reject": {
      "post": {
        "operationId": "multisig.rejectTransaction",
        "tags": [
          "Multisig"
        ],
        "summary": "Reject a pending transaction (on behalf of a multisig party)",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "b5d425a3-3c1a-4f13-b167-61e95ced92f9"
            },
            "required": true,
            "name": "transactionId",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionRejectRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Transaction rejection recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreparedTransactionWithTasksResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/transactions/{transactionId}/cancel": {
      "post": {
        "operationId": "transactions.cancel",
        "tags": [
          "Transactions"
        ],
        "summary": "Cancel a pending transaction (only the creator can cancel)",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "b5d425a3-3c1a-4f13-b167-61e95ced92f9"
            },
            "required": true,
            "name": "transactionId",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionCancelRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Transaction cancelled",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreparedTransactionWithTasksResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/transactions/{transactionId}/submit": {
      "post": {
        "operationId": "transactions.submitPrepared",
        "tags": [
          "Transactions"
        ],
        "summary": "Submit a prepared transaction to Canton once all signing tasks are at quorum",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "b5d425a3-3c1a-4f13-b167-61e95ced92f9"
            },
            "required": true,
            "name": "transactionId",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionSubmitRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Transaction submitted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreparedTransactionWithTasksResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/multisig/transactions/{transactionId}/submit": {
      "post": {
        "operationId": "multisig.submit",
        "tags": [
          "Multisig"
        ],
        "summary": "Submit a threshold-approved multisig transaction to the host Canton integration",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "b5d425a3-3c1a-4f13-b167-61e95ced92f9"
            },
            "required": true,
            "name": "transactionId",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Transaction submitted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubmitMultisigTransactionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/transactions/submit": {
      "post": {
        "operationId": "transactions.submit",
        "tags": [
          "Transactions"
        ],
        "summary": "Submit a prepared + signed single-signer transaction to the Canton ledger",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitSingleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Transaction submitted and completion confirmed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubmitSingleResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/transactions/{transactionId}/status": {
      "get": {
        "operationId": "transactions.getStatus",
        "tags": [
          "Transactions"
        ],
        "summary": "Get current signature / submission status for a transaction",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "b5d425a3-3c1a-4f13-b167-61e95ced92f9"
            },
            "required": true,
            "name": "transactionId",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Transaction status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultisigTransactionStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/multisigs/{multisigId}/topology-updates": {
      "get": {
        "operationId": "topology.list",
        "tags": [
          "Topology"
        ],
        "summary": "List topology transactions for a multisig",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "3b654e85-df15-41e7-8cdd-f2fe9d9872fb"
            },
            "required": true,
            "name": "multisigId",
            "in": "path"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "example": 1
            },
            "required": false,
            "name": "page",
            "in": "query"
          },
          {
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "example": 10
            },
            "required": false,
            "name": "limit",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "creation",
                "update"
              ],
              "example": "update"
            },
            "required": false,
            "name": "transactionType",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Topology transactions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultisigTopologyUpdateListResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "topology.propose",
        "tags": [
          "Topology"
        ],
        "summary": "Propose a topology transaction through the host Canton integration",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "3b654e85-df15-41e7-8cdd-f2fe9d9872fb"
            },
            "required": true,
            "name": "multisigId",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "prepareToken": {
                    "type": "string",
                    "minLength": 1
                  },
                  "serializedTransactions": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "Base64-encoded bytes",
                          "example": "AQID"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 255
                          },
                          "description": "Raw bytes as an array of integers",
                          "example": [
                            1,
                            2,
                            3
                          ]
                        }
                      ]
                    },
                    "minItems": 1
                  },
                  "transactionHashes": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "string",
                          "minLength": 1,
                          "description": "Base64-encoded bytes",
                          "example": "AQID"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 255
                          },
                          "description": "Raw bytes as an array of integers",
                          "example": [
                            1,
                            2,
                            3
                          ]
                        }
                      ]
                    },
                    "minItems": 1
                  }
                },
                "required": [
                  "prepareToken",
                  "serializedTransactions",
                  "transactionHashes"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Topology transaction proposed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProposeMultisigTopologyUpdateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/multisigs/{multisigId}/topology-updates/resolve": {
      "get": {
        "operationId": "topology.resolve",
        "tags": [
          "Topology"
        ],
        "summary": "Resolve a topology-update short ID to its UUID",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "3b654e85-df15-41e7-8cdd-f2fe9d9872fb"
            },
            "required": true,
            "name": "multisigId",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "example": "add-k3m6t5qz"
            },
            "required": true,
            "name": "shortId",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Resolved topology update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResolveMultisigTopologyUpdateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/multisigs/{multisigId}/topology-updates/{updateId}": {
      "get": {
        "operationId": "topology.get",
        "tags": [
          "Topology"
        ],
        "summary": "Get topology transaction details",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "3b654e85-df15-41e7-8cdd-f2fe9d9872fb"
            },
            "required": true,
            "name": "multisigId",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "example": "0cff315f-89b8-4014-a1d8-db7b8d958099"
            },
            "required": true,
            "name": "updateId",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Topology transaction details",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultisigTopologyUpdateDetailsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/multisigs/{multisigId}/topology-updates/{updateId}/approve": {
      "post": {
        "operationId": "multisig.approveTopologyUpdate",
        "tags": [
          "Multisig"
        ],
        "summary": "Approve a topology transaction",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "3b654e85-df15-41e7-8cdd-f2fe9d9872fb"
            },
            "required": true,
            "name": "multisigId",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "example": "0cff315f-89b8-4014-a1d8-db7b8d958099"
            },
            "required": true,
            "name": "updateId",
            "in": "path"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "signature": {
                    "type": "string",
                    "minLength": 1,
                    "example": "MEYCIQDn..."
                  }
                },
                "required": [
                  "signature"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Topology approval recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultisigTopologyUpdateVoteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/multisigs/{multisigId}/topology-updates/{updateId}/reject": {
      "post": {
        "operationId": "multisig.rejectTopologyUpdate",
        "tags": [
          "Multisig"
        ],
        "summary": "Reject a topology transaction",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "3b654e85-df15-41e7-8cdd-f2fe9d9872fb"
            },
            "required": true,
            "name": "multisigId",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "example": "0cff315f-89b8-4014-a1d8-db7b8d958099"
            },
            "required": true,
            "name": "updateId",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Topology transaction rejected",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MultisigTopologyUpdateVoteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/multisigs/{multisigId}/topology-updates/{updateId}/submit": {
      "post": {
        "operationId": "topology.submit",
        "tags": [
          "Topology"
        ],
        "summary": "Submit a topology transaction to the host Canton integration",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "example": "3b654e85-df15-41e7-8cdd-f2fe9d9872fb"
            },
            "required": true,
            "name": "multisigId",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "example": "0cff315f-89b8-4014-a1d8-db7b8d958099"
            },
            "required": true,
            "name": "updateId",
            "in": "path"
          }
        ],
        "responses": {
          "200": {
            "description": "Topology transaction submitted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubmitMultisigTopologyUpdateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/instruments": {
      "get": {
        "operationId": "instruments.list",
        "tags": [
          "Instruments"
        ],
        "summary": "List every digitalassets registry instrument",
        "responses": {
          "200": {
            "description": "All registry instruments with resolved package + configuration data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListInstrumentsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/holdings/{partyId}": {
      "get": {
        "operationId": "holdings.list",
        "tags": [
          "Holdings"
        ],
        "summary": "List holdings for a party (caller must be the party or a member of that multisig)",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "example": "alice::1220abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd"
            },
            "required": true,
            "name": "partyId",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "example": "Amulet",
              "description": "Filter to a single instrument. `CC` is accepted as an alias for `Amulet`."
            },
            "required": false,
            "description": "Filter to a single instrument. `CC` is accepted as an alias for `Amulet`.",
            "name": "instrumentId",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Party holdings (optionally filtered to a single instrumentId)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListHoldingsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/transfer-instructions/{partyId}": {
      "get": {
        "operationId": "transferInstructions.list",
        "tags": [
          "TransferInstructions"
        ],
        "summary": "List transfer instructions for a party (caller must be the party or a member of that multisig)",
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "example": "alice::1220abcdabcd"
            },
            "required": true,
            "name": "partyId",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "incoming",
                "outgoing",
                "all"
              ],
              "default": "incoming",
              "description": "incoming = party is receiver; outgoing = party is sender; all = both"
            },
            "required": false,
            "description": "incoming = party is receiver; outgoing = party is sender; all = both",
            "name": "direction",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Transfer instructions filtered by direction",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListTransferInstructionsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/prepare/transfer-instruction": {
      "post": {
        "operationId": "transactions.prepareTransferInstruction",
        "tags": [
          "Prepare"
        ],
        "summary": "Prepare a Token Standard V2 transfer-instruction submission",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferInstructionIntent"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared submission ready to queue",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransferInstructionPreparedSubmission"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Canton ISS prepareSubmission failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/prepare/transfer-instruction-accept": {
      "post": {
        "operationId": "transactions.prepareTransferInstructionAccept",
        "tags": [
          "Prepare"
        ],
        "summary": "Prepare a Token Standard V2 transfer-instruction accept submission",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferInstructionAcceptIntent"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared submission ready to queue",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasePreparedSubmission"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Canton ISS prepareSubmission failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/prepare/transfer-instruction-reject": {
      "post": {
        "operationId": "transactions.prepareTransferInstructionReject",
        "tags": [
          "Prepare"
        ],
        "summary": "Prepare a Token Standard V2 transfer-instruction reject submission",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferInstructionRejectIntent"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared submission ready to queue",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasePreparedSubmission"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Canton ISS prepareSubmission failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/prepare/transfer-instruction-withdraw": {
      "post": {
        "operationId": "transactions.prepareTransferInstructionWithdraw",
        "tags": [
          "Prepare"
        ],
        "summary": "Prepare a Token Standard V2 transfer-instruction withdraw submission",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransferInstructionWithdrawIntent"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared submission ready to queue",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasePreparedSubmission"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Canton ISS prepareSubmission failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/prepare/bulk-transfer": {
      "post": {
        "operationId": "transactions.prepareBulkTransfer",
        "tags": [
          "Prepare"
        ],
        "summary": "Prepare a bulk-transfer submission",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkTransferIntent"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared submission ready to queue",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkTransferPreparedSubmission"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Canton ISS prepareSubmission failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/prepare/bulk-transfer-setup": {
      "post": {
        "operationId": "transactions.prepareBulkTransferSetup",
        "tags": [
          "Prepare"
        ],
        "summary": "Prepare a bulk-transfer-setup submission",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkTransferSetupIntent"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared submission ready to queue",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasePreparedSubmission"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Canton ISS prepareSubmission failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/prepare/preapproval": {
      "post": {
        "operationId": "transactions.preparePreapproval",
        "tags": [
          "Prepare"
        ],
        "summary": "Prepare a client-built transfer-preapproval submission",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PreapprovalIntent"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared submission ready to queue",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasePreparedSubmission"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Canton ISS prepareSubmission failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/prepare/preapproval-revoke": {
      "post": {
        "operationId": "transactions.preparePreapprovalRevoke",
        "tags": [
          "Prepare"
        ],
        "summary": "Prepare a transfer-preapproval revoke submission",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PreapprovalRevokeIntent"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared submission ready to queue",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasePreparedSubmission"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Canton ISS prepareSubmission failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/prepare/auto-merge": {
      "post": {
        "operationId": "transactions.prepareAutoMerge",
        "tags": [
          "Prepare"
        ],
        "summary": "Prepare an auto-merge delegation submission",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AutoMergeIntent"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared submission ready to queue",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasePreparedSubmission"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Canton ISS prepareSubmission failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/prepare/auto-merge-revoke": {
      "post": {
        "operationId": "transactions.prepareAutoMergeRevoke",
        "tags": [
          "Prepare"
        ],
        "summary": "Prepare an auto-merge delegation revoke submission",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AutoMergeRevokeIntent"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared submission ready to queue",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasePreparedSubmission"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Canton ISS prepareSubmission failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/prepare/create-multisig": {
      "post": {
        "operationId": "transactions.prepareCreateMultisig",
        "tags": [
          "Prepare"
        ],
        "summary": "Prepare a server-authored multisig creation topology",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMultisigIntent"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared topology ready for submission",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateMultisigPreparedTopology"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Canton ISS prepareSubmission failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/prepare/topology-update": {
      "post": {
        "operationId": "transactions.prepareTopologyUpdate",
        "tags": [
          "Prepare"
        ],
        "summary": "Prepare a server-authored multisig topology update",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TopologyUpdateIntent"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared topology update ready for review and signing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TopologyUpdatePrepared"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Canton ISS prepareSubmission failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/prepare/tap": {
      "post": {
        "operationId": "transactions.prepareTap",
        "tags": [
          "Prepare"
        ],
        "summary": "Prepare a dev-only AmuletRules_DevNet_Tap submission (mints CC to the caller)",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TapIntent"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared submission ready to submit via /transactions/submit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BasePreparedSubmission"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Canton ISS prepareSubmission failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/prepare/exercise": {
      "post": {
        "operationId": "transactions.prepareExercise",
        "tags": [
          "Prepare"
        ],
        "summary": "Prepare an arbitrary DAML choice for multisig co-signing",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExerciseRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared transaction with per-multisig signing tasks",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExerciseResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "501": {
            "description": "Not implemented",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Canton ISS prepareSubmission failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/onboarding-secrets": {
      "post": {
        "operationId": "onboarding.mintSecret",
        "tags": [
          "Onboarding"
        ],
        "summary": "Mint a single-use onboarding secret for a new integrator username",
        "description": "Admin-only. Requires a bearer JWT carrying the `canton_wallet_admin` realm role. Returns the plaintext secret once; persist it out-of-band and deliver to the integrator.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MintOnboardingSecretRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Secret minted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MintOnboardingSecretResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (e.g. username already provisioned)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Upstream failure (Keycloak admin or Canton topology submission)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/onboarding/redeem": {
      "post": {
        "operationId": "onboarding.redeem",
        "tags": [
          "Onboarding"
        ],
        "summary": "Redeem an onboarding secret and bootstrap a Keycloak user + API key",
        "description": "Anonymous (no bearer auth). The caller proves control of the submitted signing public key out-of-band by holding the secret. Returns an API key and onboarding config used to drive `/onboarding/prepare` and `/onboarding/submit`.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RedeemOnboardingSecretRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Keycloak user + API key bootstrapped",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RedeemOnboardingSecretResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (e.g. username already provisioned)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Upstream failure (Keycloak admin or Canton topology submission)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/onboarding/prepare": {
      "post": {
        "operationId": "onboarding.prepare",
        "tags": [
          "Onboarding"
        ],
        "summary": "Build the Canton topology transactions for the bootstrapped integrator party",
        "description": "Authenticated as the bootstrapped user (API-key JWT). The server constructs the topology; the caller verifies and signs `multiTransactionHash` locally before calling `/onboarding/submit`.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrepareOnboardingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Prepared topology ready to verify and sign",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreparedOnboardingTopology"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (e.g. username already provisioned)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Upstream failure (Keycloak admin or Canton topology submission)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/onboarding/submit": {
      "post": {
        "operationId": "onboarding.submit",
        "tags": [
          "Onboarding"
        ],
        "summary": "Submit the signed topology, co-authorize as the hosting participant, and activate the party",
        "description": "Authenticated as the bootstrapped user. Returns `party_active` (200) once Canton activation is observed, or `party_submitted` (202) if activation is still pending; in the 202 case poll `GET /onboarding/status`.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubmitOnboardingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Party activated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubmitOnboardingResponse"
                }
              }
            }
          },
          "202": {
            "description": "Topology submitted, awaiting Canton activation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubmitOnboardingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (e.g. username already provisioned)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Upstream failure (Keycloak admin or Canton topology submission)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/onboarding/status": {
      "get": {
        "operationId": "onboarding.status",
        "tags": [
          "Onboarding"
        ],
        "summary": "Read the onboarding lifecycle state for the authenticated bootstrapped user",
        "description": "Authenticated as the bootstrapped user. Returns the canonical state machine value; transitions party_submitted → party_active when Canton activation is observed.",
        "responses": {
          "200": {
            "description": "Onboarding lifecycle state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OnboardingStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "409": {
            "description": "Conflict (e.g. username already provisioned)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "502": {
            "description": "Upstream failure (Keycloak admin or Canton topology submission)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    }
  },
  "webhooks": {}
}
