> For the complete documentation index, see [llms.txt](https://docs.catalyx.solutions/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.catalyx.solutions/catalyx-blockchain-manager/canton-network/version-1.11/support-and-resources/api-reference.md).

# API Reference

## List validators

> Returns Splice validators visible to this CBM, optionally filtered by name substring and/or lifecycle phase, paginated via \`from\` (offset) and \`limit\`. The response also includes the total count of matching validators.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-controller","description":"Create, list, edit and remove Splice validator deployments, and read their configuration and status."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ValidatorFilterResponseDto":{"type":"object","description":"Paginated list of `ValidatorResponseDto` entries plus the total count of validators matching the filter.","properties":{"validators":{"type":"array","items":{"$ref":"#/components/schemas/ValidatorResponseDto"}},"totalCount":{"type":"integer","format":"int64"}}},"ValidatorResponseDto":{"type":"object","description":"Full validator details returned by GET / list endpoints: cluster and participant configuration, app info for validator / wallet / CNS, contact point and optional Keycloak credentials created on first provisioning.","properties":{"appInfoCantonNameService":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoValidator":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoWallet":{"$ref":"#/components/schemas/AppInfoDto"},"application":{"type":"string"},"applicationCantonNameServer":{"type":"string"},"applicationWallet":{"type":"string"},"contactPoint":{"type":"string"},"createdUser":{"$ref":"#/components/schemas/CreatedUserDto"},"customAuth":{"type":"boolean"},"databaseStorage":{"type":"string"},"disabledWallet":{"type":"boolean"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"exposeLedgerApi":{"type":"boolean"},"imageRepo":{"type":"string"},"imageTag":{"type":"string"},"immutable":{"type":"boolean"},"jsonApiAddress":{"type":"string"},"ledgerApiAddress":{"type":"string"},"validatorApiAddress":{"type":"string"},"migrationId":{"type":"string"},"migrationMigrating":{"type":"boolean"},"name":{"type":"string"},"onboardingSecretName":{"type":"string"},"participant":{"type":"string"},"participantIdentitiesDumpSecretName":{"type":"string"},"participantInfo":{"$ref":"#/components/schemas/AppInfoDto"},"partyId":{"type":"string"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"postgresPassword":{"type":"string","deprecated":true},"postgresUser":{"type":"string","deprecated":true},"privateJsonApi":{"type":"boolean"},"scanAddress":{"type":"string"},"storageSize":{"type":"string"},"disableProbes":{"type":"boolean"},"topUp":{"$ref":"#/components/schemas/TopUpDto"},"databaseConfig":{"$ref":"#/components/schemas/ValidatorDbConfigDto"},"postgresConfig":{"$ref":"#/components/schemas/PostgresConfigDto"},"walletSweeps":{"type":"array","items":{"$ref":"#/components/schemas/WalletSweepDto"}}}},"AppInfoDto":{"type":"object","description":"Application deployment metadata: container environment variables and resource requirements declared for an individual Canton/Splice application component.","properties":{"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"resources":{"$ref":"#/components/schemas/ResourcesDto"}},"required":["envVars"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"CreatedUserDto":{"type":"object","properties":{"id":{"type":"string"},"temporaryPassword":{"type":"string"},"username":{"type":"string"}}},"TopUpDto":{"type":"object","properties":{"enable":{"type":"boolean"},"minTopupInterval":{"type":"string"},"targetThroughput":{"type":"integer","format":"int32"}}},"ValidatorDbConfigDto":{"type":"object","description":"Database configuration for a Splice validator: whether an external Postgres is used and, if so, its connection credentials.","properties":{"external":{"type":"boolean"},"username":{"type":"string"},"password":{"type":"string"},"hostname":{"type":"string"},"port":{"type":"string"}}},"PostgresConfigDto":{"type":"object","description":"Postgres deployment configuration consumed by a participant or domain: container image, JVM args, resources and any extra volumes / volume mounts.","properties":{"args":{"type":"array","items":{"type":"string"}},"image":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/Volume"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/VolumeMount"}}}},"Volume":{"type":"object","properties":{"name":{"type":"string"},"emptyDir":{"$ref":"#/components/schemas/EmptyDirVolumeSource"},"configMap":{"$ref":"#/components/schemas/ConfigMapVolumeSource"},"persistentVolumeClaim":{"$ref":"#/components/schemas/PersistentVolumeClaimVolumeSource"},"secret":{"$ref":"#/components/schemas/SecretVolumeSource"},"hostPath":{"$ref":"#/components/schemas/HostPathVolumeSource"}}},"EmptyDirVolumeSource":{"type":"object","properties":{"medium":{"type":"string"},"sizeLimit":{"$ref":"#/components/schemas/Quantity"}}},"Quantity":{"type":"object","properties":{"amount":{"type":"string"},"format":{"type":"string"}}},"ConfigMapVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean"}}},"KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","format":"int32"},"path":{"type":"string"}}},"PersistentVolumeClaimVolumeSource":{"type":"object","properties":{"claimName":{"type":"string"},"readOnly":{"type":"boolean"}}},"SecretVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"optional":{"type":"boolean"},"secretName":{"type":"string"}}},"HostPathVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string"}}},"VolumeMount":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"subPath":{"type":"string"},"readOnly":{"type":"boolean"}}},"WalletSweepDto":{"type":"object","properties":{"senderPartyId":{"type":"string","minLength":1},"receiverPartyId":{"type":"string","minLength":1},"maxBalanceUSD":{"type":"string","minLength":1},"minBalanceUSD":{"type":"string","minLength":1},"useTransferPreapproval":{"type":"boolean"}},"required":["maxBalanceUSD","minBalanceUSD","receiverPartyId","senderPartyId","useTransferPreapproval"]}}},"paths":{"/validators":{"get":{"tags":["validator-controller"],"summary":"List validators","description":"Returns Splice validators visible to this CBM, optionally filtered by name substring and/or lifecycle phase, paginated via `from` (offset) and `limit`. The response also includes the total count of matching validators.","operationId":"listValidators","parameters":[{"name":"from","in":"query","description":"Zero-based offset of the first result to return.","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"status","in":"query","description":"Filter by validator lifecycle phase.","required":false,"schema":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]}},{"name":"limit","in":"query","description":"Maximum number of results to return.","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"name","in":"query","description":"Substring matched against the validator name.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidatorFilterResponseDto"}}}},"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create validator

> Provisions a new Splice validator (participant, validator app, wallet, CNS) and optionally creates the associated Keycloak user when custom auth is not used. The returned payload includes the initial Keycloak credentials for non-custom-auth validators.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-controller","description":"Create, list, edit and remove Splice validator deployments, and read their configuration and status."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ValidatorDto":{"type":"object","description":"Splice validator definition: cluster and participant configuration, container image, auth and database settings used to provision a new validator deployment and convert it to the underlying CRD.","properties":{"auth":{"$ref":"#/components/schemas/ValidatorAuthDto"},"clusterConfig":{"$ref":"#/components/schemas/ClusterConfigDto"},"clusterParticipantConfig":{"$ref":"#/components/schemas/ClusterParticipantConfigDto"},"customAuth":{"type":"boolean"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"imageRepo":{"type":"string","minLength":1},"imageTag":{"type":"string","minLength":1},"name":{"type":"string","maxLength":33,"minLength":1},"onboardingSecret":{"type":"string"},"participant":{"$ref":"#/components/schemas/AppInfoDto"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"postgresPassword":{"type":"string","deprecated":true},"postgresUser":{"type":"string","deprecated":true},"databaseConfig":{"$ref":"#/components/schemas/ValidatorDbConfigDto"},"postgresConfig":{"$ref":"#/components/schemas/PostgresConfigDto"}},"required":["clusterConfig","clusterParticipantConfig","imageRepo","imageTag","name","participant"]},"ValidatorAuthDto":{"type":"object","description":"Auth configuration for a Splice validator: per-application OIDC client ids / secrets and the OAuth2 issuer / audience to use.","properties":{"cnsClientId":{"type":"string","description":"Client for the Canton Name Service","minLength":1},"walletClientId":{"type":"string","description":"Client for Wallet application","minLength":1},"ledgerApiClientId":{"type":"string","description":"Client for Validator","minLength":1},"ledgerApiClientSecret":{"type":"string","description":"Secret part of Client Credentials Grant Flow for the Validator client","minLength":1},"walletUser":{"type":"string","description":"User that will access the wallet application and receive rewards","minLength":1},"ledgerApiUser":{"type":"string","description":"Subject of the Validator client","minLength":1},"audience":{"type":"string","description":"Audience claim expected by the clients\n","minLength":1},"oidcAuthorityUrl":{"type":"string"},"oidcConfigUrl":{"type":"string"},"jwksUrl":{"type":"string"}},"required":["audience","cnsClientId","ledgerApiClientId","ledgerApiClientSecret","ledgerApiUser","walletClientId","walletUser"]},"ClusterConfigDto":{"type":"object","description":"Cluster-wide Splice / Canton configuration for a validator: shared DARs, application metadata for validator / wallet / CNS, decentralized synchronizer URL, dev-net flags and JVM options.","properties":{"additionalConfigOther":{"type":"string"},"additionalUsersEnvVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"appDars":{"type":"string"},"appInfoValidator":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoCantonNameService":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoWallet":{"$ref":"#/components/schemas/AppInfoDto"},"contactPoint":{"type":"string"},"decentralizedSynchronizerUrl":{"type":"string"},"defaultJvmOptions":{"type":"string","minLength":1},"devNet":{"type":"boolean"},"disabledWallet":{"type":"boolean"},"extraDomains":{"type":"array","items":{"$ref":"#/components/schemas/ExtraDomainDto"}},"failOnAppVersionMismatch":{"type":"boolean"},"fixedTokens":{"type":"boolean"},"metrics":{"$ref":"#/components/schemas/MetricsDto"},"migrateValidatorParty":{"type":"boolean"},"migration":{"$ref":"#/components/schemas/MigrationDto"},"participantIdentitiesDumpBackup":{"$ref":"#/components/schemas/IdentitiesDumpPeriodicBackupDto"},"participantIdentitiesDumpImport":{"$ref":"#/components/schemas/ParticipantIdentitiesImportDto"},"partyHint":{"type":"string","minLength":1},"pvcVolumeStorageClass":{"type":"string"},"scanAddress":{"type":"string","minLength":1},"svSponsorAddress":{"type":"string","minLength":1},"svValidator":{"type":"boolean"},"topUp":{"$ref":"#/components/schemas/TopUpDto"},"useSequencerConnectionsFromScan":{"type":"boolean"},"walletUserName":{"type":"string"},"scheduledPrune":{"$ref":"#/components/schemas/ScheduledValidatorPruneDto"},"disableProbes":{"type":"boolean"}},"required":["appInfoCantonNameService","appInfoValidator","defaultJvmOptions","migration","partyHint","scanAddress","svSponsorAddress"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"AppInfoDto":{"type":"object","description":"Application deployment metadata: container environment variables and resource requirements declared for an individual Canton/Splice application component.","properties":{"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"resources":{"$ref":"#/components/schemas/ResourcesDto"}},"required":["envVars"]},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"ExtraDomainDto":{"type":"object","properties":{"alias":{"type":"string"},"url":{"type":"string"}}},"MetricsDto":{"type":"object","properties":{"enable":{"type":"boolean"},"interval":{"type":"string"},"release":{"type":"string"}}},"MigrationDto":{"type":"object","properties":{"id":{"type":"integer","format":"int32","minimum":0},"migrating":{"type":"boolean"}},"required":["id"]},"IdentitiesDumpPeriodicBackupDto":{"type":"object","properties":{"backupInterval":{"type":"string","minLength":1},"locationBucketName":{"type":"string","minLength":1},"locationBucketProjectId":{"type":"string","minLength":1},"locationBucketSecretName":{"type":"string","minLength":1},"locationPrefix":{"type":"string"}},"required":["backupInterval","locationBucketName","locationBucketProjectId","locationBucketSecretName","locationPrefix"]},"ParticipantIdentitiesImportDto":{"type":"object","properties":{"identitiesSecretName":{"type":"string","description":"The name of the secret participant identities backup file dump.","minLength":1},"newParticipantIdentifier":{"type":"string","minLength":1}},"required":["identitiesSecretName","newParticipantIdentifier"]},"TopUpDto":{"type":"object","properties":{"enable":{"type":"boolean"},"minTopupInterval":{"type":"string"},"targetThroughput":{"type":"integer","format":"int32"}}},"ScheduledValidatorPruneDto":{"type":"object","properties":{"cron":{"type":"string"},"maxDuration":{"type":"string"},"retention":{"type":"string"},"nextRun":{"type":"string"}},"required":["cron","maxDuration","retention"]},"ClusterParticipantConfigDto":{"type":"object","description":"Participant-side cluster configuration: JVM options, KMS settings, exposure of the ledger / JSON API and node identifier.","properties":{"defaultJvmOptions":{"type":"string","deprecated":true},"enableHealthProbes":{"type":"boolean","deprecated":true},"nodeIdentifier":{"type":"string"},"exposeLedgerApi":{"type":"boolean"},"privateJsonApi":{"type":"boolean"},"enableKms":{"type":"boolean"},"kmsValue":{"type":"string"},"kmsServiceAccount":{"type":"string"}}},"ValidatorDbConfigDto":{"type":"object","description":"Database configuration for a Splice validator: whether an external Postgres is used and, if so, its connection credentials.","properties":{"external":{"type":"boolean"},"username":{"type":"string"},"password":{"type":"string"},"hostname":{"type":"string"},"port":{"type":"string"}}},"PostgresConfigDto":{"type":"object","description":"Postgres deployment configuration consumed by a participant or domain: container image, JVM args, resources and any extra volumes / volume mounts.","properties":{"args":{"type":"array","items":{"type":"string"}},"image":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/Volume"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/VolumeMount"}}}},"Volume":{"type":"object","properties":{"name":{"type":"string"},"emptyDir":{"$ref":"#/components/schemas/EmptyDirVolumeSource"},"configMap":{"$ref":"#/components/schemas/ConfigMapVolumeSource"},"persistentVolumeClaim":{"$ref":"#/components/schemas/PersistentVolumeClaimVolumeSource"},"secret":{"$ref":"#/components/schemas/SecretVolumeSource"},"hostPath":{"$ref":"#/components/schemas/HostPathVolumeSource"}}},"EmptyDirVolumeSource":{"type":"object","properties":{"medium":{"type":"string"},"sizeLimit":{"$ref":"#/components/schemas/Quantity"}}},"Quantity":{"type":"object","properties":{"amount":{"type":"string"},"format":{"type":"string"}}},"ConfigMapVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean"}}},"KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","format":"int32"},"path":{"type":"string"}}},"PersistentVolumeClaimVolumeSource":{"type":"object","properties":{"claimName":{"type":"string"},"readOnly":{"type":"boolean"}}},"SecretVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"optional":{"type":"boolean"},"secretName":{"type":"string"}}},"HostPathVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string"}}},"VolumeMount":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"subPath":{"type":"string"},"readOnly":{"type":"boolean"}}},"ValidatorResponseDto":{"type":"object","description":"Full validator details returned by GET / list endpoints: cluster and participant configuration, app info for validator / wallet / CNS, contact point and optional Keycloak credentials created on first provisioning.","properties":{"appInfoCantonNameService":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoValidator":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoWallet":{"$ref":"#/components/schemas/AppInfoDto"},"application":{"type":"string"},"applicationCantonNameServer":{"type":"string"},"applicationWallet":{"type":"string"},"contactPoint":{"type":"string"},"createdUser":{"$ref":"#/components/schemas/CreatedUserDto"},"customAuth":{"type":"boolean"},"databaseStorage":{"type":"string"},"disabledWallet":{"type":"boolean"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"exposeLedgerApi":{"type":"boolean"},"imageRepo":{"type":"string"},"imageTag":{"type":"string"},"immutable":{"type":"boolean"},"jsonApiAddress":{"type":"string"},"ledgerApiAddress":{"type":"string"},"validatorApiAddress":{"type":"string"},"migrationId":{"type":"string"},"migrationMigrating":{"type":"boolean"},"name":{"type":"string"},"onboardingSecretName":{"type":"string"},"participant":{"type":"string"},"participantIdentitiesDumpSecretName":{"type":"string"},"participantInfo":{"$ref":"#/components/schemas/AppInfoDto"},"partyId":{"type":"string"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"postgresPassword":{"type":"string","deprecated":true},"postgresUser":{"type":"string","deprecated":true},"privateJsonApi":{"type":"boolean"},"scanAddress":{"type":"string"},"storageSize":{"type":"string"},"disableProbes":{"type":"boolean"},"topUp":{"$ref":"#/components/schemas/TopUpDto"},"databaseConfig":{"$ref":"#/components/schemas/ValidatorDbConfigDto"},"postgresConfig":{"$ref":"#/components/schemas/PostgresConfigDto"},"walletSweeps":{"type":"array","items":{"$ref":"#/components/schemas/WalletSweepDto"}}}},"CreatedUserDto":{"type":"object","properties":{"id":{"type":"string"},"temporaryPassword":{"type":"string"},"username":{"type":"string"}}},"WalletSweepDto":{"type":"object","properties":{"senderPartyId":{"type":"string","minLength":1},"receiverPartyId":{"type":"string","minLength":1},"maxBalanceUSD":{"type":"string","minLength":1},"minBalanceUSD":{"type":"string","minLength":1},"useTransferPreapproval":{"type":"boolean"}},"required":["maxBalanceUSD","minBalanceUSD","receiverPartyId","senderPartyId","useTransferPreapproval"]}}},"paths":{"/validators":{"post":{"tags":["validator-controller"],"summary":"Create validator","description":"Provisions a new Splice validator (participant, validator app, wallet, CNS) and optionally creates the associated Keycloak user when custom auth is not used. The returned payload includes the initial Keycloak credentials for non-custom-auth validators.","operationId":"createValidator","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidatorDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidatorResponseDto"}}}},"400":{"description":"Validator payload is invalid or references unknown resources.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"409":{"description":"A validator with the same name already exists.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidatorResponseDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Update validator

> Applies an in-place edit to an existing validator (image, env vars, overrides, database/wallet settings, etc.). Immutable fields cannot be changed and validators marked as \`disableUserEdit\` reject updates.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-controller","description":"Create, list, edit and remove Splice validator deployments, and read their configuration and status."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ValidatorEditDto":{"type":"object","description":"Partial update payload for a Splice validator. Non-null fields replace the corresponding section of the existing validator; null fields are left unchanged. Includes a `cleanRestoreData` flag and toggles for ledger-API exposure.","properties":{"clusterConfig":{"$ref":"#/components/schemas/ClusterConfigEditDto"},"imageRepo":{"type":"string"},"imageTag":{"type":"string"},"name":{"type":"string"},"databaseStorage":{"type":"string"},"participant":{"$ref":"#/components/schemas/AppInfoEditDto"},"cleanRestoreData":{"type":"boolean"},"exposeLedgerApi":{"type":"boolean"},"privateJsonApi":{"type":"boolean"},"databaseConfig":{"$ref":"#/components/schemas/ValidatorDbConfigDto"},"postgresConfig":{"$ref":"#/components/schemas/PostgresConfigDto"}}},"ClusterConfigEditDto":{"type":"object","properties":{"scanAddress":{"type":"string"},"contactPoint":{"type":"string"},"migration":{"$ref":"#/components/schemas/MigrationDto"},"topUp":{"$ref":"#/components/schemas/TopUpDto"},"appInfoValidator":{"$ref":"#/components/schemas/AppInfoEditDto"},"appInfoCantonNameService":{"$ref":"#/components/schemas/AppInfoEditDto"},"appInfoWallet":{"$ref":"#/components/schemas/AppInfoEditDto"},"disableProbes":{"type":"boolean"},"walletSweeps":{"type":"array","items":{"$ref":"#/components/schemas/WalletSweepDto"}}},"required":["migration"]},"MigrationDto":{"type":"object","properties":{"id":{"type":"integer","format":"int32","minimum":0},"migrating":{"type":"boolean"}},"required":["id"]},"TopUpDto":{"type":"object","properties":{"enable":{"type":"boolean"},"minTopupInterval":{"type":"string"},"targetThroughput":{"type":"integer","format":"int32"}}},"AppInfoEditDto":{"type":"object","description":"Partial update payload for an application component's deployment metadata; non-null fields replace the existing values and `envVarsDelete` removes specific variables.","properties":{"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"envVarsDelete":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"resources":{"$ref":"#/components/schemas/ResourcesDto"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"WalletSweepDto":{"type":"object","properties":{"senderPartyId":{"type":"string","minLength":1},"receiverPartyId":{"type":"string","minLength":1},"maxBalanceUSD":{"type":"string","minLength":1},"minBalanceUSD":{"type":"string","minLength":1},"useTransferPreapproval":{"type":"boolean"}},"required":["maxBalanceUSD","minBalanceUSD","receiverPartyId","senderPartyId","useTransferPreapproval"]},"ValidatorDbConfigDto":{"type":"object","description":"Database configuration for a Splice validator: whether an external Postgres is used and, if so, its connection credentials.","properties":{"external":{"type":"boolean"},"username":{"type":"string"},"password":{"type":"string"},"hostname":{"type":"string"},"port":{"type":"string"}}},"PostgresConfigDto":{"type":"object","description":"Postgres deployment configuration consumed by a participant or domain: container image, JVM args, resources and any extra volumes / volume mounts.","properties":{"args":{"type":"array","items":{"type":"string"}},"image":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/Volume"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/VolumeMount"}}}},"Volume":{"type":"object","properties":{"name":{"type":"string"},"emptyDir":{"$ref":"#/components/schemas/EmptyDirVolumeSource"},"configMap":{"$ref":"#/components/schemas/ConfigMapVolumeSource"},"persistentVolumeClaim":{"$ref":"#/components/schemas/PersistentVolumeClaimVolumeSource"},"secret":{"$ref":"#/components/schemas/SecretVolumeSource"},"hostPath":{"$ref":"#/components/schemas/HostPathVolumeSource"}}},"EmptyDirVolumeSource":{"type":"object","properties":{"medium":{"type":"string"},"sizeLimit":{"$ref":"#/components/schemas/Quantity"}}},"Quantity":{"type":"object","properties":{"amount":{"type":"string"},"format":{"type":"string"}}},"ConfigMapVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean"}}},"KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","format":"int32"},"path":{"type":"string"}}},"PersistentVolumeClaimVolumeSource":{"type":"object","properties":{"claimName":{"type":"string"},"readOnly":{"type":"boolean"}}},"SecretVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"optional":{"type":"boolean"},"secretName":{"type":"string"}}},"HostPathVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string"}}},"VolumeMount":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"subPath":{"type":"string"},"readOnly":{"type":"boolean"}}}}},"paths":{"/validators":{"put":{"tags":["validator-controller"],"summary":"Update validator","description":"Applies an in-place edit to an existing validator (image, env vars, overrides, database/wallet settings, etc.). Immutable fields cannot be changed and validators marked as `disableUserEdit` reject updates.","operationId":"updateValidator","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidatorEditDto"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"description":"The validator edit payload is invalid or attempts to change immutable fields.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator exists with the name referenced in the payload."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get validator pruning schedule

> Returns the validator's current pruning configuration (cron, retention, max duration) and the computed next run timestamp. Returns an empty DTO when no schedule is set.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-prune-controller","description":"Run pruning on a validator and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledValidatorPruneDto":{"type":"object","properties":{"cron":{"type":"string"},"maxDuration":{"type":"string"},"retention":{"type":"string"},"nextRun":{"type":"string"}},"required":["cron","maxDuration","retention"]}}},"paths":{"/validators/{name}/prune":{"get":{"tags":["validator-prune-controller"],"summary":"Get validator pruning schedule","description":"Returns the validator's current pruning configuration (cron, retention, max duration) and the computed next run timestamp. Returns an empty DTO when no schedule is set.","operationId":"getValidatorPruningSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorPruneDto"}}}},"400":{"description":"The supplied validator name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator exists with the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorPruneDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create validator pruning schedule

> Enables a cron-based ledger pruning schedule on the validator. Fails if a pruning schedule is already configured; use PUT to modify an existing one.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-prune-controller","description":"Run pruning on a validator and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledValidatorPruneDto":{"type":"object","properties":{"cron":{"type":"string"},"maxDuration":{"type":"string"},"retention":{"type":"string"},"nextRun":{"type":"string"}},"required":["cron","maxDuration","retention"]}}},"paths":{"/validators/{name}/prune":{"post":{"tags":["validator-prune-controller"],"summary":"Create validator pruning schedule","description":"Enables a cron-based ledger pruning schedule on the validator. Fails if a pruning schedule is already configured; use PUT to modify an existing one.","operationId":"createValidatorPruningSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorPruneDto"}}},"required":true},"responses":{"201":{"description":"Created"},"400":{"description":"The pruning schedule payload is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator exists with the given name."},"409":{"description":"A pruning schedule already exists for this validator."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Update validator pruning schedule

> Replaces the cron expression, retention and max-duration of the validator's existing pruning schedule. Fails if no schedule has been configured yet.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-prune-controller","description":"Run pruning on a validator and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledValidatorPruneDto":{"type":"object","properties":{"cron":{"type":"string"},"maxDuration":{"type":"string"},"retention":{"type":"string"},"nextRun":{"type":"string"}},"required":["cron","maxDuration","retention"]}}},"paths":{"/validators/{name}/prune":{"put":{"tags":["validator-prune-controller"],"summary":"Update validator pruning schedule","description":"Replaces the cron expression, retention and max-duration of the validator's existing pruning schedule. Fails if no schedule has been configured yet.","operationId":"updateValidatorPruningSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorPruneDto"}}},"required":true},"responses":{"204":{"description":"No Content"},"400":{"description":"The pruning schedule payload is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"The validator does not exist or has no pruning schedule configured."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete validator pruning schedule

> Removes the configured pruning schedule from the validator. Idempotent: succeeds with no-op if no schedule is currently set.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-prune-controller","description":"Run pruning on a validator and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/validators/{name}/prune":{"delete":{"tags":["validator-prune-controller"],"summary":"Delete validator pruning schedule","description":"Removes the configured pruning schedule from the validator. Idempotent: succeeds with no-op if no schedule is currently set.","operationId":"deleteValidatorPruningSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The supplied validator name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator exists with the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create validator backup schedule

> Creates a scheduled (cron-based) database backup job for the validator's internal Postgres. Reactivates the schedule if it was previously soft-deleted. Not supported for validators backed by an external database.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-backup-controller","description":"Trigger validator backups, browse backup history and manage scheduled validator backups."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ValidatorBackupDto":{"type":"object","description":"Request body to trigger or schedule a Splice validator backup: cron expression and retention limit.","properties":{"cron":{"type":"string"},"maxBackups":{"type":"integer","format":"int32","maximum":84,"minimum":2}},"required":["maxBackups"]},"ScheduledValidatorBackupDto":{"type":"object","description":"Persisted backup schedule for a Splice validator: cron expression, retention limit and next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxBackups":{"type":"integer","format":"int32"},"nextRun":{"type":"string"}},"required":["cron"]}}},"paths":{"/validators/{name}/backup":{"post":{"tags":["validator-backup-controller"],"summary":"Create validator backup schedule","description":"Creates a scheduled (cron-based) database backup job for the validator's internal Postgres. Reactivates the schedule if it was previously soft-deleted. Not supported for validators backed by an external database.","operationId":"createBackupSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidatorBackupDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorBackupDto"}}}},"400":{"description":"The backup schedule payload is invalid or the validator uses an external database.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator exists with the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorBackupDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}},"503":{"description":"Validator database is not running so a backup cannot be scheduled.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorBackupDto"}}}}}}}}}
```

## Get validator backup schedule

> Returns the current backup schedule for the validator, including the cron expression and the computed unix timestamp of the next planned run.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-backup-controller","description":"Trigger validator backups, browse backup history and manage scheduled validator backups."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledValidatorBackupDto":{"type":"object","description":"Persisted backup schedule for a Splice validator: cron expression, retention limit and next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxBackups":{"type":"integer","format":"int32"},"nextRun":{"type":"string"}},"required":["cron"]}}},"paths":{"/validators/{name}/backup":{"get":{"tags":["validator-backup-controller"],"summary":"Get validator backup schedule","description":"Returns the current backup schedule for the validator, including the cron expression and the computed unix timestamp of the next planned run.","operationId":"getBackupSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorBackupDto"}}}},"400":{"description":"The supplied validator name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator or backup schedule exists for the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorBackupDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Update validator backup schedule

> Replaces the cron expression and retention settings on the validator's backup schedule. Also clears the soft-deleted flag, effectively reactivating a paused schedule.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-backup-controller","description":"Trigger validator backups, browse backup history and manage scheduled validator backups."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ValidatorBackupDto":{"type":"object","description":"Request body to trigger or schedule a Splice validator backup: cron expression and retention limit.","properties":{"cron":{"type":"string"},"maxBackups":{"type":"integer","format":"int32","maximum":84,"minimum":2}},"required":["maxBackups"]},"ScheduledValidatorBackupDto":{"type":"object","description":"Persisted backup schedule for a Splice validator: cron expression, retention limit and next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxBackups":{"type":"integer","format":"int32"},"nextRun":{"type":"string"}},"required":["cron"]}}},"paths":{"/validators/{name}/backup":{"put":{"tags":["validator-backup-controller"],"summary":"Update validator backup schedule","description":"Replaces the cron expression and retention settings on the validator's backup schedule. Also clears the soft-deleted flag, effectively reactivating a paused schedule.","operationId":"updateBackupSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidatorBackupDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorBackupDto"}}}},"400":{"description":"The backup schedule payload is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No backup schedule exists for the given validator.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorBackupDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete validator backup schedule

> Soft-deletes the validator's backup schedule so that no further backups run. The schedule resource is retained and can be reactivated by re-issuing a POST.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-backup-controller","description":"Trigger validator backups, browse backup history and manage scheduled validator backups."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/validators/{name}/backup":{"delete":{"tags":["validator-backup-controller"],"summary":"Delete validator backup schedule","description":"Soft-deletes the validator's backup schedule so that no further backups run. The schedule resource is retained and can be reactivated by re-issuing a POST.","operationId":"deleteBackupSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The supplied validator name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No backup schedule exists for the given validator."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## List remote participants with filters

> Returns a paginated list of CBM-side remote participant registrations, optionally filtered by health status, lifecycle phase, or name substring. The result also includes the total count of registrations matching the filters.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-controller","description":"Register and manage externally-hosted Canton participants reachable from this CBM instance."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RemoteParticipantFilterResponseDto":{"type":"object","description":"Paginated list of `RemoteParticipantDto` entries plus the total count.","properties":{"participants":{"type":"array","items":{"$ref":"#/components/schemas/RemoteParticipantDto"}},"totalCount":{"type":"integer","format":"int64"}}},"RemoteParticipantDto":{"type":"object","description":"Externally-hosted Canton participant registered in CBM: admin / ledger / JSON-API endpoints, auth provider and identifying metadata.","properties":{"adminAddress":{"type":"string","minLength":1},"adminPort":{"type":"string","minLength":1},"authProvider":{"type":"string","enum":["keycloak","auth0","custom"]},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"jsonApiUrl":{"type":"string","minLength":1},"ledgerAddress":{"type":"string","minLength":1},"ledgerId":{"type":"string","minLength":1},"ledgerPort":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"v3":{"type":"boolean"}},"required":["adminAddress","adminPort","authProvider","image","jsonApiUrl","ledgerAddress","ledgerId","ledgerPort","name"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}},"paths":{"/remote-participants":{"get":{"tags":["remote-participant-controller"],"summary":"List remote participants with filters","description":"Returns a paginated list of CBM-side remote participant registrations, optionally filtered by health status, lifecycle phase, or name substring. The result also includes the total count of registrations matching the filters.","operationId":"listRemoteParticipants","parameters":[{"name":"healthStatus","in":"query","description":"If set, only return participants whose last known health check matches this value.","required":false,"schema":{"type":"boolean"}},{"name":"from","in":"query","description":"Zero-based index of the first registration to return.","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"status","in":"query","description":"Lifecycle phase to filter by (e.g. RUNNING, FAILED).","required":false,"schema":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]}},{"name":"limit","in":"query","description":"Maximum number of registrations to return.","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"name","in":"query","description":"Case-sensitive substring matched against the registration name.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RemoteParticipantFilterResponseDto"}}}},"400":{"description":"Pagination or filter parameters are invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Register a remote participant

> Creates a CBM-side registration for a Canton participant node that runs outside the cluster. Only configuration metadata (endpoints, auth provider, resources) is stored; the remote workload itself is not provisioned by CBM.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-controller","description":"Register and manage externally-hosted Canton participants reachable from this CBM instance."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RemoteParticipantDto":{"type":"object","description":"Externally-hosted Canton participant registered in CBM: admin / ledger / JSON-API endpoints, auth provider and identifying metadata.","properties":{"adminAddress":{"type":"string","minLength":1},"adminPort":{"type":"string","minLength":1},"authProvider":{"type":"string","enum":["keycloak","auth0","custom"]},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"jsonApiUrl":{"type":"string","minLength":1},"ledgerAddress":{"type":"string","minLength":1},"ledgerId":{"type":"string","minLength":1},"ledgerPort":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"v3":{"type":"boolean"}},"required":["adminAddress","adminPort","authProvider","image","jsonApiUrl","ledgerAddress","ledgerId","ledgerPort","name"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}},"paths":{"/remote-participants":{"post":{"tags":["remote-participant-controller"],"summary":"Register a remote participant","description":"Creates a CBM-side registration for a Canton participant node that runs outside the cluster. Only configuration metadata (endpoints, auth provider, resources) is stored; the remote workload itself is not provisioned by CBM.","operationId":"createRemoteParticipant","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteParticipantDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RemoteParticipantDto"}}}},"400":{"description":"The request payload failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"409":{"description":"A remote participant with the same name is already registered in CBM.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RemoteParticipantDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Update a remote participant registration

> Updates the CBM-side configuration (endpoints, auth provider, resources) for an existing remote participant. The remote Canton node is not reconfigured by this call.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-controller","description":"Register and manage externally-hosted Canton participants reachable from this CBM instance."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RemoteParticipantDto":{"type":"object","description":"Externally-hosted Canton participant registered in CBM: admin / ledger / JSON-API endpoints, auth provider and identifying metadata.","properties":{"adminAddress":{"type":"string","minLength":1},"adminPort":{"type":"string","minLength":1},"authProvider":{"type":"string","enum":["keycloak","auth0","custom"]},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"jsonApiUrl":{"type":"string","minLength":1},"ledgerAddress":{"type":"string","minLength":1},"ledgerId":{"type":"string","minLength":1},"ledgerPort":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"v3":{"type":"boolean"}},"required":["adminAddress","adminPort","authProvider","image","jsonApiUrl","ledgerAddress","ledgerId","ledgerPort","name"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}},"paths":{"/remote-participants":{"put":{"tags":["remote-participant-controller"],"summary":"Update a remote participant registration","description":"Updates the CBM-side configuration (endpoints, auth provider, resources) for an existing remote participant. The remote Canton node is not reconfigured by this call.","operationId":"updateRemoteParticipant","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteParticipantDto"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"description":"The request payload failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote participant is registered under the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Connects/Disconnects an already registered domain to a participant

> Proxies an admin-API call to the remote participant to toggle the connection state of a previously registered domain. Use the connect query flag to choose between connect and disconnect.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-connection-controller","description":"Configure, register, connect and disconnect a remote Canton participant against one of its sync domains."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/remote-participants/{name}/connections/{domainAlias}":{"put":{"tags":["remote-participant-connection-controller"],"summary":"Connects/Disconnects an already registered domain to a participant","description":"Proxies an admin-API call to the remote participant to toggle the connection state of a previously registered domain. Use the connect query flag to choose between connect and disconnect.","operationId":"updateRemoteParticipantConnection","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"domainAlias","in":"path","description":"Alias of the domain connection already registered on the participant.","required":true,"schema":{"type":"string"}},{"name":"connect","in":"query","description":"true to connect, false to disconnect","required":true,"schema":{"type":"boolean","description":"true to connect, false to disconnect"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The participant name or domain alias is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"Either the participant is not registered in CBM or the domain alias is unknown on the remote node."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## List remote domains with filtering and pagination

> Returns the CBM-registered remote domains, optionally filtered by health status, lifecycle phase or name. Pagination is controlled via the from/limit query parameters. This call reads local registration metadata and does not query the remote nodes.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-domain-controller","description":"Register and manage externally-hosted Canton sync domains reachable from this CBM instance."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RemoteDomainFilterResponseDto":{"type":"object","description":"Paginated list of `RemoteDomainDto` entries plus the total count.","properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/RemoteDomainDto"}},"totalCount":{"type":"integer","format":"int64"}}},"RemoteDomainDto":{"type":"object","description":"Externally-hosted sync domain registered in CBM: admin / public endpoints, image metadata and lifecycle phase.","properties":{"adminAddress":{"type":"string","minLength":1},"adminPort":{"type":"string","minLength":1},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"publicAddress":{"type":"string","minLength":1},"publicPort":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourcesDto"}},"required":["adminAddress","adminPort","image","name","publicAddress","publicPort"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}},"paths":{"/remote-domains":{"get":{"tags":["remote-domain-controller"],"summary":"List remote domains with filtering and pagination","description":"Returns the CBM-registered remote domains, optionally filtered by health status, lifecycle phase or name. Pagination is controlled via the from/limit query parameters. This call reads local registration metadata and does not query the remote nodes.","operationId":"listRemoteDomains","parameters":[{"name":"healthStatus","in":"query","description":"If set, returns only remote domains whose last observed health matches this value.","required":false,"schema":{"type":"boolean"}},{"name":"from","in":"query","description":"Zero-based offset of the first remote domain to return.","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"status","in":"query","description":"Lifecycle phase to filter by (e.g. running, failed).","required":false,"schema":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]}},{"name":"limit","in":"query","description":"Maximum number of remote domains to return.","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"name","in":"query","description":"Case-insensitive substring filter on the remote domain registration name.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RemoteDomainFilterResponseDto"}}}},"400":{"description":"One of the query parameters has an invalid value.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Register a remote domain

> Stores CBM-side registration metadata for a Canton sync domain that runs outside this cluster. The remote domain workload itself is not created here; CBM only tracks the connection details so subsequent operations can be proxied to it.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-domain-controller","description":"Register and manage externally-hosted Canton sync domains reachable from this CBM instance."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RemoteDomainDto":{"type":"object","description":"Externally-hosted sync domain registered in CBM: admin / public endpoints, image metadata and lifecycle phase.","properties":{"adminAddress":{"type":"string","minLength":1},"adminPort":{"type":"string","minLength":1},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"publicAddress":{"type":"string","minLength":1},"publicPort":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourcesDto"}},"required":["adminAddress","adminPort","image","name","publicAddress","publicPort"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}},"paths":{"/remote-domains":{"post":{"tags":["remote-domain-controller"],"summary":"Register a remote domain","description":"Stores CBM-side registration metadata for a Canton sync domain that runs outside this cluster. The remote domain workload itself is not created here; CBM only tracks the connection details so subsequent operations can be proxied to it.","operationId":"createRemoteDomain","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteDomainDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RemoteDomainDto"}}}},"400":{"description":"Invalid registration payload.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"409":{"description":"A node with the same name is already registered or running in the cluster.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RemoteDomainDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Update a remote domain registration

> Updates the CBM-side connection metadata (addresses, ports, image, resources) for a previously registered remote domain. The remote node itself is not modified by this call.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-domain-controller","description":"Register and manage externally-hosted Canton sync domains reachable from this CBM instance."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RemoteDomainDto":{"type":"object","description":"Externally-hosted sync domain registered in CBM: admin / public endpoints, image metadata and lifecycle phase.","properties":{"adminAddress":{"type":"string","minLength":1},"adminPort":{"type":"string","minLength":1},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"publicAddress":{"type":"string","minLength":1},"publicPort":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourcesDto"}},"required":["adminAddress","adminPort","image","name","publicAddress","publicPort"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}},"paths":{"/remote-domains":{"put":{"tags":["remote-domain-controller"],"summary":"Update a remote domain registration","description":"Updates the CBM-side connection metadata (addresses, ports, image, resources) for a previously registered remote domain. The remote node itself is not modified by this call.","operationId":"updateRemoteDomain","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoteDomainDto"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"description":"Invalid update payload.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote domain is registered under the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## List participants

> Returns the paginated list of participants matching the given filters along with the total count of matches (ignoring pagination). All filter parameters are optional and combined with AND semantics.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-controller","description":"Create, list, edit and remove Canton participant deployments, and read their configuration."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ParticipantFilterResponseDto":{"type":"object","description":"Paginated list of `ParticipantDto` entries plus the total count of participants matching the filter.","properties":{"participants":{"type":"array","items":{"$ref":"#/components/schemas/ParticipantDto"}},"totalCount":{"type":"integer","format":"int64"}}},"ParticipantDto":{"type":"object","description":"Canton participant definition: container image, admin / ledger endpoints, authentication, postgres storage and Canton-specific settings used to provision a new participant deployment.","properties":{"adminAddress":{"type":"string"},"adminPort":{"type":"string","minLength":1},"auth":{"type":"boolean"},"authProvider":{"type":"string","enum":["keycloak","auth0","custom"]},"authorization":{"$ref":"#/components/schemas/AuthorizationDto"},"bootstrap":{"type":"string"},"daemon":{"type":"boolean"},"enterprise":{"type":"boolean","description":"Whether the canton image is enterprise or not"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"jsonapi":{"type":"boolean"},"jsonapiImage":{"type":"string"},"privateJsonapi":{"type":"boolean"},"jsonapiQueryStore":{"type":"boolean"},"exposeLedgerApi":{"type":"boolean"},"ledgerAddress":{"type":"string"},"ledgerPort":{"type":"string","minLength":1},"logLevel":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]},"name":{"type":"string","minLength":1},"navigator":{"type":"boolean"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"storage":{"$ref":"#/components/schemas/StorageDto"},"topology":{"type":"string"},"validatorParent":{"type":"string"},"enableKms":{"type":"boolean"},"kmsValue":{"type":"string"},"kmsServiceAccount":{"type":"string"}},"required":["adminPort","authProvider","image","ledgerPort","name"]},"AuthorizationDto":{"type":"object","description":"Credential and OIDC client descriptor used to obtain tokens for a Canton participant: client id / secret, username / password and JWKS URL.","properties":{"clientId":{"type":"string"},"clientSecret":{"type":"string"},"jwksUrl":{"type":"string"},"password":{"type":"string"},"username":{"type":"string"},"audience":{"type":"string"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"StorageDto":{"type":"object","description":"Persistent storage configuration: type (in-cluster or external Postgres), size, backup size and connection credentials when external.","properties":{"backupSize":{"type":"string"},"hostname":{"type":"string"},"password":{"type":"string"},"port":{"type":"string"},"size":{"type":"string"},"type":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]},"user":{"type":"string"}}}}},"paths":{"/participants":{"get":{"tags":["participant-controller"],"summary":"List participants","description":"Returns the paginated list of participants matching the given filters along with the total count of matches (ignoring pagination). All filter parameters are optional and combined with AND semantics.","operationId":"listParticipants","parameters":[{"name":"healthStatus","in":"query","description":"If true, returns only participants reported as healthy; if false, only unhealthy ones.","required":false,"schema":{"type":"boolean"}},{"name":"from","in":"query","description":"Zero-based offset of the first participant to return.","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"status","in":"query","description":"Lifecycle phase to filter by (e.g. RUNNING, PENDING, FAILED).","required":false,"schema":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]}},{"name":"limit","in":"query","description":"Maximum number of participants to return.","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"name","in":"query","description":"Substring match on the participant Kubernetes resource name.","required":false,"schema":{"type":"string"}},{"name":"storageType","in":"query","description":"Storage backend to filter by (e.g. POSTGRES, EXTERNAL, MEMORY).","required":false,"schema":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ParticipantFilterResponseDto"}}}},"400":{"description":"One or more query parameters failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create participant

> Provisions a new Canton participant in this CBM by creating the underlying Kubernetes Custom Resource. When the storage type is EXTERNAL or POSTGRES, a database secret is recreated with the provided credentials. The operation is asynchronous: a 201 response means the resource has been accepted; lifecycle status must be polled via the GET endpoint.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-controller","description":"Create, list, edit and remove Canton participant deployments, and read their configuration."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ParticipantDto":{"type":"object","description":"Canton participant definition: container image, admin / ledger endpoints, authentication, postgres storage and Canton-specific settings used to provision a new participant deployment.","properties":{"adminAddress":{"type":"string"},"adminPort":{"type":"string","minLength":1},"auth":{"type":"boolean"},"authProvider":{"type":"string","enum":["keycloak","auth0","custom"]},"authorization":{"$ref":"#/components/schemas/AuthorizationDto"},"bootstrap":{"type":"string"},"daemon":{"type":"boolean"},"enterprise":{"type":"boolean","description":"Whether the canton image is enterprise or not"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"jsonapi":{"type":"boolean"},"jsonapiImage":{"type":"string"},"privateJsonapi":{"type":"boolean"},"jsonapiQueryStore":{"type":"boolean"},"exposeLedgerApi":{"type":"boolean"},"ledgerAddress":{"type":"string"},"ledgerPort":{"type":"string","minLength":1},"logLevel":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]},"name":{"type":"string","minLength":1},"navigator":{"type":"boolean"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"storage":{"$ref":"#/components/schemas/StorageDto"},"topology":{"type":"string"},"validatorParent":{"type":"string"},"enableKms":{"type":"boolean"},"kmsValue":{"type":"string"},"kmsServiceAccount":{"type":"string"}},"required":["adminPort","authProvider","image","ledgerPort","name"]},"AuthorizationDto":{"type":"object","description":"Credential and OIDC client descriptor used to obtain tokens for a Canton participant: client id / secret, username / password and JWKS URL.","properties":{"clientId":{"type":"string"},"clientSecret":{"type":"string"},"jwksUrl":{"type":"string"},"password":{"type":"string"},"username":{"type":"string"},"audience":{"type":"string"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"StorageDto":{"type":"object","description":"Persistent storage configuration: type (in-cluster or external Postgres), size, backup size and connection credentials when external.","properties":{"backupSize":{"type":"string"},"hostname":{"type":"string"},"password":{"type":"string"},"port":{"type":"string"},"size":{"type":"string"},"type":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]},"user":{"type":"string"}}}}},"paths":{"/participants":{"post":{"tags":["participant-controller"],"summary":"Create participant","description":"Provisions a new Canton participant in this CBM by creating the underlying Kubernetes Custom Resource. When the storage type is EXTERNAL or POSTGRES, a database secret is recreated with the provided credentials. The operation is asynchronous: a 201 response means the resource has been accepted; lifecycle status must be polled via the GET endpoint.","operationId":"createParticipant","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ParticipantDto"}}}},"400":{"description":"The participant payload failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"409":{"description":"A participant or backing workload with the same name already exists.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ParticipantDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Update participant

> Applies the supplied configuration to the existing participant Custom Resource. The participant is identified by the name field of the body. The operator picks up the change and rolls the workload asynchronously; this endpoint only acknowledges that the CR has been updated.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-controller","description":"Create, list, edit and remove Canton participant deployments, and read their configuration."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ParticipantDto":{"type":"object","description":"Canton participant definition: container image, admin / ledger endpoints, authentication, postgres storage and Canton-specific settings used to provision a new participant deployment.","properties":{"adminAddress":{"type":"string"},"adminPort":{"type":"string","minLength":1},"auth":{"type":"boolean"},"authProvider":{"type":"string","enum":["keycloak","auth0","custom"]},"authorization":{"$ref":"#/components/schemas/AuthorizationDto"},"bootstrap":{"type":"string"},"daemon":{"type":"boolean"},"enterprise":{"type":"boolean","description":"Whether the canton image is enterprise or not"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"jsonapi":{"type":"boolean"},"jsonapiImage":{"type":"string"},"privateJsonapi":{"type":"boolean"},"jsonapiQueryStore":{"type":"boolean"},"exposeLedgerApi":{"type":"boolean"},"ledgerAddress":{"type":"string"},"ledgerPort":{"type":"string","minLength":1},"logLevel":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]},"name":{"type":"string","minLength":1},"navigator":{"type":"boolean"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"storage":{"$ref":"#/components/schemas/StorageDto"},"topology":{"type":"string"},"validatorParent":{"type":"string"},"enableKms":{"type":"boolean"},"kmsValue":{"type":"string"},"kmsServiceAccount":{"type":"string"}},"required":["adminPort","authProvider","image","ledgerPort","name"]},"AuthorizationDto":{"type":"object","description":"Credential and OIDC client descriptor used to obtain tokens for a Canton participant: client id / secret, username / password and JWKS URL.","properties":{"clientId":{"type":"string"},"clientSecret":{"type":"string"},"jwksUrl":{"type":"string"},"password":{"type":"string"},"username":{"type":"string"},"audience":{"type":"string"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"StorageDto":{"type":"object","description":"Persistent storage configuration: type (in-cluster or external Postgres), size, backup size and connection credentials when external.","properties":{"backupSize":{"type":"string"},"hostname":{"type":"string"},"password":{"type":"string"},"port":{"type":"string"},"size":{"type":"string"},"type":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]},"user":{"type":"string"}}}}},"paths":{"/participants":{"put":{"tags":["participant-controller"],"summary":"Update participant","description":"Applies the supplied configuration to the existing participant Custom Resource. The participant is identified by the name field of the body. The operator picks up the change and rolls the workload asynchronously; this endpoint only acknowledges that the CR has been updated.","operationId":"updateParticipant","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParticipantDto"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"description":"The participant payload failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Connects/Disconnects an already registered domain to a participant

> Toggles the connection state of an existing sync-domain registration on the participant. The domain must already be registered via POST; this endpoint does not modify the connection configuration, only its connected/disconnected state.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"connection-controller","description":"Configure, register, connect and disconnect a Canton participant against one of its sync domains."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/participants/{name}/connections/{domainAlias}":{"put":{"tags":["connection-controller"],"summary":"Connects/Disconnects an already registered domain to a participant","description":"Toggles the connection state of an existing sync-domain registration on the participant. The domain must already be registered via POST; this endpoint does not modify the connection configuration, only its connected/disconnected state.","operationId":"updateParticipantConnection","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant holding the connection.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"domainAlias","in":"path","description":"Alias of the previously registered sync domain to (dis)connect.","required":true,"schema":{"type":"string"}},{"name":"connect","in":"query","description":"true to connect, false to disconnect","required":true,"schema":{"type":"boolean","description":"true to connect, false to disconnect"}},{"name":"port","in":"query","description":"Admin gRPC port on which to contact the participant.","required":false,"schema":{"type":"integer","format":"int32","default":5019}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The participant name, domain alias or port failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No such participant exists or the domain alias is not registered."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Set the runtime log level for a node

> Adjusts the log level used by the Canton node at runtime without restarting the pod. Takes effect immediately for subsequent log output.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"log-controller","description":"Stream pod logs and adjust log levels at runtime for the managed workloads."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/logs/{name}/{level}":{"put":{"tags":["log-controller"],"summary":"Set the runtime log level for a node","description":"Adjusts the log level used by the Canton node at runtime without restarting the pod. Takes effect immediately for subsequent log output.","operationId":"updateLogLevel","parameters":[{"name":"name","in":"path","description":"Name of the Canton node whose log level should be updated","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"level","in":"path","description":"New log level to apply","required":true,"schema":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid node name or log level","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"Node or its pod not found"},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get identity dump schedule

> Returns the current identity dump schedule for the validator along with the computed unix timestamp of the next planned run.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-id-dumps-controller","description":"Trigger and schedule validator identity dump jobs and download their artifacts."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledValidatorIdDumpDto":{"type":"object","description":"Persisted identity-dump schedule for a Splice validator: cron expression, retention limit and next-run timestamp.","properties":{"validatorName":{"type":"string"},"cron":{"type":"string"},"nextRun":{"type":"string"},"maxDumps":{"type":"integer","format":"int32"}}}}},"paths":{"/id-dumps/{validatorName}/schedule":{"get":{"tags":["validator-id-dumps-controller"],"summary":"Get identity dump schedule","description":"Returns the current identity dump schedule for the validator along with the computed unix timestamp of the next planned run.","operationId":"getSchedule","parameters":[{"name":"validatorName","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorIdDumpDto"}}}},"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator or identity dump schedule exists for the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorIdDumpDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create identity dump schedule

> Creates a cron-based schedule that periodically produces identity dumps for the validator, retaining at most \`maxDumps\` of them. Reactivates a soft-deleted schedule if one exists.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-id-dumps-controller","description":"Trigger and schedule validator identity dump jobs and download their artifacts."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ValidatorIdDumpScheduleDto":{"type":"object","description":"Request body to schedule recurring identity dumps for a Splice validator (cron expression plus retention limit); converts to the underlying CRD.","properties":{"cron":{"type":"string"},"maxDumps":{"type":"integer","format":"int32","minimum":1}}},"ScheduledValidatorIdDumpDto":{"type":"object","description":"Persisted identity-dump schedule for a Splice validator: cron expression, retention limit and next-run timestamp.","properties":{"validatorName":{"type":"string"},"cron":{"type":"string"},"nextRun":{"type":"string"},"maxDumps":{"type":"integer","format":"int32"}}}}},"paths":{"/id-dumps/{validatorName}/schedule":{"post":{"tags":["validator-id-dumps-controller"],"summary":"Create identity dump schedule","description":"Creates a cron-based schedule that periodically produces identity dumps for the validator, retaining at most `maxDumps` of them. Reactivates a soft-deleted schedule if one exists.","operationId":"createSchedule","parameters":[{"name":"validatorName","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidatorIdDumpScheduleDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorIdDumpDto"}}}},"400":{"description":"The schedule payload is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator exists with the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorIdDumpDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Update identity dump schedule

> Replaces the cron expression and retention (\`maxDumps\`) of the validator's identity dump schedule. Also clears the soft-deleted flag, reactivating a paused schedule.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-id-dumps-controller","description":"Trigger and schedule validator identity dump jobs and download their artifacts."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ValidatorIdDumpScheduleDto":{"type":"object","description":"Request body to schedule recurring identity dumps for a Splice validator (cron expression plus retention limit); converts to the underlying CRD.","properties":{"cron":{"type":"string"},"maxDumps":{"type":"integer","format":"int32","minimum":1}}},"ScheduledValidatorIdDumpDto":{"type":"object","description":"Persisted identity-dump schedule for a Splice validator: cron expression, retention limit and next-run timestamp.","properties":{"validatorName":{"type":"string"},"cron":{"type":"string"},"nextRun":{"type":"string"},"maxDumps":{"type":"integer","format":"int32"}}}}},"paths":{"/id-dumps/{validatorName}/schedule":{"put":{"tags":["validator-id-dumps-controller"],"summary":"Update identity dump schedule","description":"Replaces the cron expression and retention (`maxDumps`) of the validator's identity dump schedule. Also clears the soft-deleted flag, reactivating a paused schedule.","operationId":"updateSchedule","parameters":[{"name":"validatorName","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidatorIdDumpScheduleDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorIdDumpDto"}}}},"400":{"description":"The schedule payload is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No identity dump schedule exists for the given validator.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledValidatorIdDumpDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete identity dump schedule

> Soft-deletes the validator's identity dump schedule so that no further dumps run. The resource is preserved and can be reactivated via POST.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-id-dumps-controller","description":"Trigger and schedule validator identity dump jobs and download their artifacts."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/id-dumps/{validatorName}/schedule":{"delete":{"tags":["validator-id-dumps-controller"],"summary":"Delete identity dump schedule","description":"Soft-deletes the validator's identity dump schedule so that no further dumps run. The resource is preserved and can be reactivated via POST.","operationId":"deleteSchedule","parameters":[{"name":"validatorName","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The supplied validator name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No identity dump schedule exists for the given validator."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## List sync domains with filtering

> Returns a paginated list of sync domains matching the supplied filters together with the total count of matches. All filter parameters are optional and combined with AND.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-controller","description":"Create, list, edit and remove Canton sync domains, and read their configuration."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DomainFilterResponseDto":{"type":"object","description":"Paginated list of `DomainDto` entries plus the total count of sync domains matching the filter.","properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/DomainDto"}},"totalCount":{"type":"integer","format":"int64"}}},"DomainDto":{"type":"object","description":"Canton sync domain definition: name, container image, log level, admin / public endpoints and Canton-specific bootstrap settings used to provision a single-replica sync domain.","properties":{"adminAddress":{"type":"string"},"adminPort":{"type":"string","minLength":1},"bootstrap":{"type":"string"},"daemon":{"type":"boolean"},"enterprise":{"type":"boolean","description":"Whether the canton image is enterprise or not"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"ingress":{"type":"boolean"},"logLevel":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"publicAddress":{"type":"string"},"publicPort":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"storage":{"$ref":"#/components/schemas/StorageDto"},"topology":{"type":"string"}},"required":["adminPort","image","name","publicPort"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"StorageDto":{"type":"object","description":"Persistent storage configuration: type (in-cluster or external Postgres), size, backup size and connection credentials when external.","properties":{"backupSize":{"type":"string"},"hostname":{"type":"string"},"password":{"type":"string"},"port":{"type":"string"},"size":{"type":"string"},"type":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]},"user":{"type":"string"}}}}},"paths":{"/domains":{"get":{"tags":["domain-controller"],"summary":"List sync domains with filtering","description":"Returns a paginated list of sync domains matching the supplied filters together with the total count of matches. All filter parameters are optional and combined with AND.","operationId":"listDomains","parameters":[{"name":"healthStatus","in":"query","description":"Filter by health status; true returns only healthy domains, false only unhealthy.","required":false,"schema":{"type":"boolean"}},{"name":"from","in":"query","description":"Zero-based index of the first domain to return for pagination.","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"status","in":"query","description":"Filter by the lifecycle phase of the domain.","required":false,"schema":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]}},{"name":"limit","in":"query","description":"Maximum number of domains to return.","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"name","in":"query","description":"Filter by domain name (substring match).","required":false,"schema":{"type":"string"}},{"name":"storageType","in":"query","description":"Filter by the configured storage type of the domain.","required":false,"schema":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainFilterResponseDto"}}}},"400":{"description":"One or more query parameters are invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create a new sync domain

> Provisions a new Canton sync domain as a Kubernetes resource. For external or Postgres storage, the database credentials are stored in a dedicated secret and injected as environment variables. The created domain is returned in its initial state.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-controller","description":"Create, list, edit and remove Canton sync domains, and read their configuration."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DomainDto":{"type":"object","description":"Canton sync domain definition: name, container image, log level, admin / public endpoints and Canton-specific bootstrap settings used to provision a single-replica sync domain.","properties":{"adminAddress":{"type":"string"},"adminPort":{"type":"string","minLength":1},"bootstrap":{"type":"string"},"daemon":{"type":"boolean"},"enterprise":{"type":"boolean","description":"Whether the canton image is enterprise or not"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"ingress":{"type":"boolean"},"logLevel":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"publicAddress":{"type":"string"},"publicPort":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"storage":{"$ref":"#/components/schemas/StorageDto"},"topology":{"type":"string"}},"required":["adminPort","image","name","publicPort"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"StorageDto":{"type":"object","description":"Persistent storage configuration: type (in-cluster or external Postgres), size, backup size and connection credentials when external.","properties":{"backupSize":{"type":"string"},"hostname":{"type":"string"},"password":{"type":"string"},"port":{"type":"string"},"size":{"type":"string"},"type":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]},"user":{"type":"string"}}}}},"paths":{"/domains":{"post":{"tags":["domain-controller"],"summary":"Create a new sync domain","description":"Provisions a new Canton sync domain as a Kubernetes resource. For external or Postgres storage, the database credentials are stored in a dedicated secret and injected as environment variables. The created domain is returned in its initial state.","operationId":"createDomain","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainDto"}}}},"400":{"description":"The request payload is invalid or fails validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"409":{"description":"A domain with the same name already exists.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Update an existing sync domain

> Applies the supplied spec changes to the existing sync domain resource. The domain is identified by the name field in the request body.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-controller","description":"Create, list, edit and remove Canton sync domains, and read their configuration."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DomainDto":{"type":"object","description":"Canton sync domain definition: name, container image, log level, admin / public endpoints and Canton-specific bootstrap settings used to provision a single-replica sync domain.","properties":{"adminAddress":{"type":"string"},"adminPort":{"type":"string","minLength":1},"bootstrap":{"type":"string"},"daemon":{"type":"boolean"},"enterprise":{"type":"boolean","description":"Whether the canton image is enterprise or not"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"ingress":{"type":"boolean"},"logLevel":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"publicAddress":{"type":"string"},"publicPort":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"storage":{"$ref":"#/components/schemas/StorageDto"},"topology":{"type":"string"}},"required":["adminPort","image","name","publicPort"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"StorageDto":{"type":"object","description":"Persistent storage configuration: type (in-cluster or external Postgres), size, backup size and connection credentials when external.","properties":{"backupSize":{"type":"string"},"hostname":{"type":"string"},"password":{"type":"string"},"port":{"type":"string"},"size":{"type":"string"},"type":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]},"user":{"type":"string"}}}}},"paths":{"/domains":{"put":{"tags":["domain-controller"],"summary":"Update an existing sync domain","description":"Applies the supplied spec changes to the existing sync domain resource. The domain is identified by the name field in the request body.","operationId":"updateDomain","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainDto"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"description":"The request payload is invalid or fails validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No sync domain exists with the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## List HA sync domains with filtering

> Returns a paginated list of HA sync domains matching the supplied filters together with the total count. All filter parameters are optional.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-ha-controller","description":"Configure and inspect high-availability settings of a Canton sync domain."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DomainHAResponseDto":{"type":"object","description":"Paginated list of HA sync domain entries plus the total count.","properties":{"domainHAs":{"type":"array","items":{"$ref":"#/components/schemas/DomainHAEntry"}},"totalCount":{"type":"integer","format":"int64"}}},"DomainHAEntry":{"type":"object","properties":{"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"status":{"$ref":"#/components/schemas/DomainHAStatusDto"}},"required":["name","status"]},"DomainHAStatusDto":{"type":"object","description":"Runtime status of an HA sync domain split per component (mediator, topology manager, sequencer, in-cluster database, bootstrap).","properties":{"mediator":{"$ref":"#/components/schemas/MediatorStatusDto"},"topologyManager":{"$ref":"#/components/schemas/TopologyManagerStatusDto"},"sequencer":{"$ref":"#/components/schemas/SequencerStatusDto"},"inClusterDatabase":{"$ref":"#/components/schemas/InClusterDatabaseStatusDto"},"bootstrap":{"$ref":"#/components/schemas/BootstrapStatusDto"}}},"MediatorStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"TopologyManagerStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"SequencerStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"InClusterDatabaseStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"BootstrapStatusDto":{"type":"object","properties":{"started":{"type":"boolean"},"completed":{"type":"boolean"},"error":{"type":"string"},"ready":{"type":"boolean"}}}}},"paths":{"/domainha":{"get":{"tags":["domain-ha-controller"],"summary":"List HA sync domains with filtering","description":"Returns a paginated list of HA sync domains matching the supplied filters together with the total count. All filter parameters are optional.","operationId":"list","parameters":[{"name":"from","in":"query","description":"Zero-based index of the first HA domain to return for pagination.","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Maximum number of HA domains to return.","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"name","in":"query","description":"Filter by HA domain name (substring match).","required":false,"schema":{"type":"string"}},{"name":"phase","in":"query","description":"Filter by the lifecycle phase of the HA domain.","required":false,"schema":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainHAResponseDto"}}}},"400":{"description":"One or more query parameters are invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create a highly available sync domain

> Provisions a new sync domain with replicated mediator and sequencer components to support failover. Fails if a HA domain with the same name already exists.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-ha-controller","description":"Configure and inspect high-availability settings of a Canton sync domain."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DomainHADto":{"type":"object","description":"High-availability sync domain definition: per-component (sequencer, mediator, topology manager) specifications plus in-cluster or external storage settings.","properties":{"name":{"type":"string","maxLength":15,"minLength":2},"defaults":{"$ref":"#/components/schemas/DefaultsDto"},"sequencer":{"$ref":"#/components/schemas/SequencerSpecDto"},"mediator":{"$ref":"#/components/schemas/MediatorSpecDto"},"topologyManager":{"$ref":"#/components/schemas/TopologyManagerSpecDto"},"externalStorage":{"$ref":"#/components/schemas/ExternalStorageSpecDto"},"inClusterStorage":{"$ref":"#/components/schemas/InClusterStorageSpecDto"},"validStorage":{"type":"boolean"}},"required":["defaults","mediator","name","sequencer","topologyManager"]},"DefaultsDto":{"type":"object","properties":{"image":{"$ref":"#/components/schemas/ImageDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"}},"required":["image"]},"ImageDto":{"type":"object","description":"Container image reference: registry, repository, tag and the Kubernetes pull secret used to fetch it.","properties":{"registry":{"type":"string","minLength":1},"repository":{"type":"string","minLength":1},"tag":{"type":"string","minLength":1},"pullSecretName":{"type":"string"}},"required":["registry","repository","tag"]},"CantonFlagsDto":{"type":"object","description":"Runtime log-level flags for a Canton workload (root, Canton-specific and stdout log levels).","properties":{"logLevelRoot":{"type":"string"},"logLevelCanton":{"type":"string"},"logLevelStdout":{"type":"string"}}},"SequencerSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"ingress":{"$ref":"#/components/schemas/SequencerIngressConfigDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"ResourceRequirementsDto":{"type":"object","description":"Kubernetes container resource requirements: limits and requests, each composed of CPU and memory values.","properties":{"limits":{"$ref":"#/components/schemas/ContainerResourcesDto"},"requests":{"$ref":"#/components/schemas/ContainerResourcesDto"}},"required":["limits","requests"]},"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]},"SequencerIngressConfigDto":{"type":"object","description":"Per-sequencer ingress flags toggling exposure of the admin and public APIs.","properties":{"adminAPIEnabled":{"type":"boolean"},"publicAPIEnabled":{"type":"boolean"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ExternalStorageOverridesDto":{"type":"object","properties":{"schemaName":{"type":"string"},"dbName":{"type":"string"},"userUsername":{"type":"string"},"userPassword":{"type":"string"}}},"MediatorSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"TopologyManagerSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"ExternalStorageSpecDto":{"type":"object","properties":{"hostname":{"type":"string","minLength":1},"port":{"type":"integer","format":"int32"},"adminUsername":{"type":"string","minLength":1},"adminPassword":{"type":"string","minLength":1},"ssl":{"type":"boolean"},"maxConnections":{"type":"integer","format":"int32"},"schemaName":{"type":"string"}},"required":["adminPassword","adminUsername","hostname","port"]},"InClusterStorageSpecDto":{"type":"object","properties":{"storageSize":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"validStorageSize":{"type":"boolean"}},"required":["resources","storageSize"]}}},"paths":{"/domainha":{"post":{"tags":["domain-ha-controller"],"summary":"Create a highly available sync domain","description":"Provisions a new sync domain with replicated mediator and sequencer components to support failover. Fails if a HA domain with the same name already exists.","operationId":"create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainHADto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainHADto"}}}},"400":{"description":"The request payload is invalid or fails validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"409":{"description":"A HA sync domain with the same name already exists.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainHADto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Update an existing HA sync domain

> Applies the supplied editable changes to the HA sync domain resource and returns the updated DTO. The HA domain is identified by the name in the request body.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-ha-controller","description":"Configure and inspect high-availability settings of a Canton sync domain."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DomainHAEditDto":{"type":"object","description":"Partial update payload for an HA sync domain; non-null sections replace the corresponding configuration on the existing deployment.","properties":{"name":{"type":"string"},"defaults":{"$ref":"#/components/schemas/DefaultsEditDto"},"sequencer":{"$ref":"#/components/schemas/SequencerEditDto"},"mediator":{"$ref":"#/components/schemas/MediatorEditDto"},"topologyManager":{"$ref":"#/components/schemas/TopologyManagerEditDto"},"inClusterStorage":{"$ref":"#/components/schemas/InClusterStorageEditDto"}},"required":["defaults","mediator","name","sequencer","topologyManager"]},"DefaultsEditDto":{"type":"object","properties":{"image":{"$ref":"#/components/schemas/ImageDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"}},"required":["image"]},"ImageDto":{"type":"object","description":"Container image reference: registry, repository, tag and the Kubernetes pull secret used to fetch it.","properties":{"registry":{"type":"string","minLength":1},"repository":{"type":"string","minLength":1},"tag":{"type":"string","minLength":1},"pullSecretName":{"type":"string"}},"required":["registry","repository","tag"]},"CantonFlagsDto":{"type":"object","description":"Runtime log-level flags for a Canton workload (root, Canton-specific and stdout log levels).","properties":{"logLevelRoot":{"type":"string"},"logLevelCanton":{"type":"string"},"logLevelStdout":{"type":"string"}}},"SequencerEditDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}}},"required":["resources"]},"ResourceRequirementsDto":{"type":"object","description":"Kubernetes container resource requirements: limits and requests, each composed of CPU and memory values.","properties":{"limits":{"$ref":"#/components/schemas/ContainerResourcesDto"},"requests":{"$ref":"#/components/schemas/ContainerResourcesDto"}},"required":["limits","requests"]},"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"MediatorEditDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}}},"required":["resources"]},"TopologyManagerEditDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}}},"required":["resources"]},"InClusterStorageEditDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"storageSize":{"type":"string"},"validStorageSize":{"type":"boolean"}},"required":["resources"]},"DomainHADto":{"type":"object","description":"High-availability sync domain definition: per-component (sequencer, mediator, topology manager) specifications plus in-cluster or external storage settings.","properties":{"name":{"type":"string","maxLength":15,"minLength":2},"defaults":{"$ref":"#/components/schemas/DefaultsDto"},"sequencer":{"$ref":"#/components/schemas/SequencerSpecDto"},"mediator":{"$ref":"#/components/schemas/MediatorSpecDto"},"topologyManager":{"$ref":"#/components/schemas/TopologyManagerSpecDto"},"externalStorage":{"$ref":"#/components/schemas/ExternalStorageSpecDto"},"inClusterStorage":{"$ref":"#/components/schemas/InClusterStorageSpecDto"},"validStorage":{"type":"boolean"}},"required":["defaults","mediator","name","sequencer","topologyManager"]},"DefaultsDto":{"type":"object","properties":{"image":{"$ref":"#/components/schemas/ImageDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"}},"required":["image"]},"SequencerSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"ingress":{"$ref":"#/components/schemas/SequencerIngressConfigDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"SequencerIngressConfigDto":{"type":"object","description":"Per-sequencer ingress flags toggling exposure of the admin and public APIs.","properties":{"adminAPIEnabled":{"type":"boolean"},"publicAPIEnabled":{"type":"boolean"}}},"ExternalStorageOverridesDto":{"type":"object","properties":{"schemaName":{"type":"string"},"dbName":{"type":"string"},"userUsername":{"type":"string"},"userPassword":{"type":"string"}}},"MediatorSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"TopologyManagerSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"ExternalStorageSpecDto":{"type":"object","properties":{"hostname":{"type":"string","minLength":1},"port":{"type":"integer","format":"int32"},"adminUsername":{"type":"string","minLength":1},"adminPassword":{"type":"string","minLength":1},"ssl":{"type":"boolean"},"maxConnections":{"type":"integer","format":"int32"},"schemaName":{"type":"string"}},"required":["adminPassword","adminUsername","hostname","port"]},"InClusterStorageSpecDto":{"type":"object","properties":{"storageSize":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"validStorageSize":{"type":"boolean"}},"required":["resources","storageSize"]}}},"paths":{"/domainha":{"put":{"tags":["domain-ha-controller"],"summary":"Update an existing HA sync domain","description":"Applies the supplied editable changes to the HA sync domain resource and returns the updated DTO. The HA domain is identified by the name in the request body.","operationId":"update","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainHAEditDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainHADto"}}}},"400":{"description":"The request payload is invalid or fails validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No HA sync domain exists with the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainHADto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## List applications with filtering and pagination

> Returns a page of deployed applications optionally filtered by status, name and type. Supports offset/limit pagination via the from and limit query parameters.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"application-controller","description":"Manage generic CBM-deployed applications and their lifecycle."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ApplicationFilterResponseDto":{"type":"object","description":"Paginated list of `ApplicationDto` entries plus the total count of applications matching the filter.","properties":{"applications":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationDto"}},"totalCount":{"type":"integer","format":"int64"}}},"ApplicationDto":{"type":"object","description":"Generic CBM-deployed application: name, container image, port, package, parent validator and Kubernetes resource requirements; used both as a request and a response body on the applications endpoints.","properties":{"domain":{"type":"string","minLength":1},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string"},"name":{"type":"string","minLength":1},"packageName":{"type":"string"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"port":{"type":"integer","format":"int32"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"type":{"type":"string","enum":["BACKEND","UI"]},"validatorParent":{"type":"string"}},"required":["domain","name","type"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}},"paths":{"/applications":{"get":{"tags":["application-controller"],"summary":"List applications with filtering and pagination","description":"Returns a page of deployed applications optionally filtered by status, name and type. Supports offset/limit pagination via the from and limit query parameters.","operationId":"listApplications","parameters":[{"name":"from","in":"query","description":"Zero-based index of the first application to return","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"status","in":"query","description":"Filter by current lifecycle phase of the application","required":false,"schema":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]}},{"name":"limit","in":"query","description":"Maximum number of applications to return","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"name","in":"query","description":"Filter by application name (substring match)","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","description":"Filter by application type","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApplicationFilterResponseDto"}}}},"400":{"description":"Invalid filter or pagination parameters","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create a new application

> Deploys a new CBM application CRD onto the Kubernetes cluster. When the target participant uses an OIDC auth provider (e.g. Keycloak), the corresponding auth client and environment variables are provisioned automatically. Fails if a resource with the same name already exists.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"application-controller","description":"Manage generic CBM-deployed applications and their lifecycle."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ApplicationDto":{"type":"object","description":"Generic CBM-deployed application: name, container image, port, package, parent validator and Kubernetes resource requirements; used both as a request and a response body on the applications endpoints.","properties":{"domain":{"type":"string","minLength":1},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string"},"name":{"type":"string","minLength":1},"packageName":{"type":"string"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"port":{"type":"integer","format":"int32"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"type":{"type":"string","enum":["BACKEND","UI"]},"validatorParent":{"type":"string"}},"required":["domain","name","type"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}},"paths":{"/applications":{"post":{"tags":["application-controller"],"summary":"Create a new application","description":"Deploys a new CBM application CRD onto the Kubernetes cluster. When the target participant uses an OIDC auth provider (e.g. Keycloak), the corresponding auth client and environment variables are provisioned automatically. Fails if a resource with the same name already exists.","operationId":"createApplication","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApplicationDto"}}}},"400":{"description":"Invalid application payload","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"409":{"description":"An application or resource with the same name already exists","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApplicationDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Update an existing application

> Applies the provided application spec to the existing CRD, updating image, env vars, resources and other mutable fields.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"application-controller","description":"Manage generic CBM-deployed applications and their lifecycle."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ApplicationDto":{"type":"object","description":"Generic CBM-deployed application: name, container image, port, package, parent validator and Kubernetes resource requirements; used both as a request and a response body on the applications endpoints.","properties":{"domain":{"type":"string","minLength":1},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string"},"name":{"type":"string","minLength":1},"packageName":{"type":"string"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"port":{"type":"integer","format":"int32"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"type":{"type":"string","enum":["BACKEND","UI"]},"validatorParent":{"type":"string"}},"required":["domain","name","type"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}},"paths":{"/applications":{"put":{"tags":["application-controller"],"summary":"Update an existing application","description":"Applies the provided application spec to the existing CRD, updating image, env vars, resources and other mutable fields.","operationId":"updateApplication","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationDto"}}},"required":true},"responses":{"200":{"description":"OK"},"400":{"description":"Invalid application payload","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"Application not found"},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get validator restore job

> Returns the current status and metadata of the validator's most recent restore job. Use this to poll the progress of a previously triggered restore.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-restore-controller","description":"Restore a Splice validator from a previously created backup (database, identity, wallet)."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ValidatorRestoreResponseDto":{"type":"object","description":"Single entry in the validator restore history: filenames restored from, overall status and capture timestamp.","properties":{"filenames":{"type":"array","items":{"type":"string"},"maxItems":2,"minItems":2},"status":{"type":"string"},"timestamp":{"type":"string"}}}}},"paths":{"/validators/{name}/restore":{"get":{"tags":["validator-restore-controller"],"summary":"Get validator restore job","description":"Returns the current status and metadata of the validator's most recent restore job. Use this to poll the progress of a previously triggered restore.","operationId":"getRestoreJob","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidatorRestoreResponseDto"}}}},"400":{"description":"The supplied validator name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No restore job exists for the given validator.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidatorRestoreResponseDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Trigger validator restore

> Starts a long-running restore job that recreates the validator's state from the referenced backup files. Returns immediately with the created job descriptor; poll the GET endpoint for status. Any previous completed restore job for this validator is deleted first.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-restore-controller","description":"Restore a Splice validator from a previously created backup (database, identity, wallet)."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ValidatorRestoreDto":{"type":"object","description":"Request body to start a Splice validator restore from one or more previously captured backup files.","properties":{"filenames":{"type":"array","items":{"type":"string"},"maxItems":2,"minItems":2}}},"ValidatorRestoreResponseDto":{"type":"object","description":"Single entry in the validator restore history: filenames restored from, overall status and capture timestamp.","properties":{"filenames":{"type":"array","items":{"type":"string"},"maxItems":2,"minItems":2},"status":{"type":"string"},"timestamp":{"type":"string"}}}}},"paths":{"/validators/{name}/restore":{"post":{"tags":["validator-restore-controller"],"summary":"Trigger validator restore","description":"Starts a long-running restore job that recreates the validator's state from the referenced backup files. Returns immediately with the created job descriptor; poll the GET endpoint for status. Any previous completed restore job for this validator is deleted first.","operationId":"createRestoreJob","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the validator to restore.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidatorRestoreDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidatorRestoreResponseDto"}}}},"400":{"description":"The restore payload references missing or invalid backup files.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator exists with the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidatorRestoreResponseDto"}}}},"409":{"description":"A restore job is already running for this validator.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidatorRestoreResponseDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Check sponsor scan quorum

> Verifies that the supplied sponsor scan address can reach a quorum of Super Validators on the network. Used as a pre-flight check before launching a prefill.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-prefill-controller","description":"Prefill a Splice validator, check quorum status and perform top-up operations."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"CheckQuorumRequest":{"type":"object","description":"Request body for the Splice prefill quorum check; references the sponsor scan address used during validator on-boarding.","properties":{"sponsorScanAddress":{"type":"string"}}}}},"paths":{"/validators/prefill/check-quorum":{"post":{"tags":["validator-prefill-controller"],"summary":"Check sponsor scan quorum","description":"Verifies that the supplied sponsor scan address can reach a quorum of Super Validators on the network. Used as a pre-flight check before launching a prefill.","operationId":"checkQuorum","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckQuorumRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"boolean"}}}},"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get the pruning schedule of a participant

> Reads the current pruning schedule from the remote enterprise participant and enriches it with the Unix timestamp of the next scheduled cron run, computed in CBM.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-prune-controller","description":"Run pruning on a remote participant and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledPruneDto":{"type":"object","description":"Persisted pruning schedule for a Canton workload: cron expression, retention window, max duration and next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxDurationInSec":{"type":"integer","format":"int64","minimum":1},"nextRun":{"type":"string"},"retentionInSec":{"type":"integer","format":"int64","minimum":1}},"required":["cron","maxDurationInSec","retentionInSec"]}}},"paths":{"/remote-participants/{name}/prune":{"get":{"tags":["remote-participant-prune-controller"],"summary":"Get the pruning schedule of a participant","description":"Reads the current pruning schedule from the remote enterprise participant and enriches it with the Unix timestamp of the next scheduled cron run, computed in CBM.","operationId":"getRemoteParticipantPruningSchedule","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledPruneDto"}}}},"400":{"description":"The supplied participant name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote participant is registered under the given name or no schedule is configured.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledPruneDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create a pruning schedule on a participant

> Validates the cron expression and sends it to the remote enterprise participant's admin API, which will then prune old ledger data on the configured cadence.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-prune-controller","description":"Run pruning on a remote participant and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledPruneDto":{"type":"object","description":"Persisted pruning schedule for a Canton workload: cron expression, retention window, max duration and next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxDurationInSec":{"type":"integer","format":"int64","minimum":1},"nextRun":{"type":"string"},"retentionInSec":{"type":"integer","format":"int64","minimum":1}},"required":["cron","maxDurationInSec","retentionInSec"]}}},"paths":{"/remote-participants/{name}/prune":{"post":{"tags":["remote-participant-prune-controller"],"summary":"Create a pruning schedule on a participant","description":"Validates the cron expression and sends it to the remote enterprise participant's admin API, which will then prune old ledger data on the configured cadence.","operationId":"createRemoteParticipantPruningSchedule","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduledPruneDto"}}},"required":true},"responses":{"201":{"description":"Created"},"400":{"description":"The participant name, cron expression, or retention payload is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote participant is registered under the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Clear the pruning schedule on a participant

> Proxies a clear-schedule call to the remote enterprise participant so that no further automatic pruning runs are triggered. Previously pruned data is not restored.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-prune-controller","description":"Run pruning on a remote participant and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/remote-participants/{name}/prune":{"delete":{"tags":["remote-participant-prune-controller"],"summary":"Clear the pruning schedule on a participant","description":"Proxies a clear-schedule call to the remote enterprise participant so that no further automatic pruning runs are triggered. Previously pruned data is not restored.","operationId":"deleteRemoteParticipantPruningSchedule","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The supplied participant name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote participant is registered under the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Proxy a GET request to the participant JSON Ledger API

> Forwards the incoming GET request (path beyond /jsonapi, query string, headers) to the configured JSON Ledger API endpoint of the remote participant and streams the response back.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-json-api-controller","description":"Proxy requests to the JSON Ledger API of a remote Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/remote-participants/{name}/jsonapi/**":{"get":{"tags":["remote-participant-json-api-controller"],"summary":"Proxy a GET request to the participant JSON Ledger API","description":"Forwards the incoming GET request (path beyond /jsonapi, query string, headers) to the configured JSON Ledger API endpoint of the remote participant and streams the response back.","operationId":"getRemoteParticipantRequest","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote participant is registered under the given name.","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Proxy a POST request to the participant JSON Ledger API

> Forwards the incoming POST request body and path/query to the configured JSON Ledger API endpoint of the remote participant. Used for command submission and similar mutating ledger operations.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-json-api-controller","description":"Proxy requests to the JSON Ledger API of a remote Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/remote-participants/{name}/jsonapi/**":{"post":{"tags":["remote-participant-json-api-controller"],"summary":"Proxy a POST request to the participant JSON Ledger API","description":"Forwards the incoming POST request body and path/query to the configured JSON Ledger API endpoint of the remote participant. Used for command submission and similar mutating ledger operations.","operationId":"postRemoteParticipantRequest","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote participant is registered under the given name.","content":{"*/*":{"schema":{"type":"object"}}}},"409":{"description":"The remote JSON Ledger API rejected the request due to a state conflict (e.g. duplicate command id).","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Proxy a DELETE request to the participant JSON Ledger API

> Forwards the incoming DELETE request to the configured JSON Ledger API endpoint of the remote participant, typically used to cancel or release ledger resources.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-json-api-controller","description":"Proxy requests to the JSON Ledger API of a remote Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/remote-participants/{name}/jsonapi/**":{"delete":{"tags":["remote-participant-json-api-controller"],"summary":"Proxy a DELETE request to the participant JSON Ledger API","description":"Forwards the incoming DELETE request to the configured JSON Ledger API endpoint of the remote participant, typically used to cancel or release ledger resources.","operationId":"deleteRemoteParticipantRequest","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote participant is registered under the given name.","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Lists all configured dars of a participant

> Queries the remote participant's admin API and returns the DARs currently installed on the node, including their hashes and package metadata.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-dar-controller","description":"List, upload and remove DAR packages on a remote Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DarDto":{"type":"object","description":"Reference to a DAR package uploaded to a Canton participant: identifying hash, package name and version.","properties":{"hash":{"type":"string"},"name":{"type":"string"},"version":{"type":"string"}}}}},"paths":{"/remote-participants/{name}/dars":{"get":{"tags":["remote-participant-dar-controller"],"summary":"Lists all configured dars of a participant","description":"Queries the remote participant's admin API and returns the DARs currently installed on the node, including their hashes and package metadata.","operationId":"listRemoteParticipantDars","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DarDto"}}}}},"400":{"description":"The supplied participant name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote participant is registered under the given name.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DarDto"}}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Upload dar file to a participant

> Reads each requested DAR from CBM file storage and uploads it to the remote participant via its admin API. Between 1 and 15 DAR names may be uploaded in a single call.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-dar-controller","description":"List, upload and remove DAR packages on a remote Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/remote-participants/{name}/dars":{"post":{"tags":["remote-participant-dar-controller"],"summary":"Upload dar file to a participant","description":"Reads each requested DAR from CBM file storage and uploads it to the remote participant via its admin API. Between 1 and 15 DAR names may be uploaded in a single call.","operationId":"uploadRemoteParticipantDar","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"darName","in":"query","description":"Names of DAR files (already stored in CBM file storage) to upload to the participant.","required":true,"schema":{"type":"array","items":{"type":"string"},"maxItems":15,"minItems":1}}],"responses":{"200":{"description":"OK"},"400":{"description":"The participant name or the supplied list of DAR names is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"The participant is not registered in CBM or a referenced DAR is missing from CBM file storage."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Remove a dar from a participant

> Proxies an admin-API call to the remote participant to uninstall the DAR identified by its hash. The DAR is only removed from the remote node; CBM file storage is untouched.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-dar-controller","description":"List, upload and remove DAR packages on a remote Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/remote-participants/{name}/dars":{"delete":{"tags":["remote-participant-dar-controller"],"summary":"Remove a dar from a participant","description":"Proxies an admin-API call to the remote participant to uninstall the DAR identified by its hash. The DAR is only removed from the remote node; CBM file storage is untouched.","operationId":"removeRemoteParticipantDar","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"darHash","in":"query","description":"Hash of the DAR to remove, as reported by the participant.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"The participant name or DAR hash is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"Either the participant is not registered in CBM or the DAR hash is unknown on the remote node."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Lists all configured domain connections of a participant

> Calls the remote participant's admin API to retrieve every domain connection it has been configured with, regardless of current connectivity state.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-connection-controller","description":"Configure, register, connect and disconnect a remote Canton participant against one of its sync domains."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ConnectionDto":{"type":"object","description":"The DTO representing a connection to a domain.","properties":{"connected":{"type":"boolean","description":"It represents the connection status. It is true when the connection is established, false otherwise."},"custom":{"type":"boolean","description":"It represents a custom domain.  When it is true the domainUrl should be used, use domainName and port otherwise "},"domainAlias":{"type":"string","description":"This is the alias of the domain to connect to. It does not have to be the same as the actual domain name.","minLength":1},"domainName":{"type":"string","description":"This is name of the domain to connect to. "},"isHADomain":{"type":"boolean","description":"Defines whether the domain name belongs to the HA Domain entity"},"domainUrl":{"type":"string","description":"This is the URL of the domain to connect to. It must be accessible from the participant node. Usage: https://<domain-name>.<namespace>.svc.cluster.local:<public-port>"},"publicPort":{"type":"string","description":"This is public port of the domain to connect to. "}},"required":["domainAlias"]}}},"paths":{"/remote-participants/{name}/connections":{"get":{"tags":["remote-participant-connection-controller"],"summary":"Lists all configured domain connections of a participant","description":"Calls the remote participant's admin API to retrieve every domain connection it has been configured with, regardless of current connectivity state.","operationId":"listRemoteParticipantConnections","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectionDto"}}}}},"400":{"description":"The supplied participant name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote participant is registered under the given name.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectionDto"}}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Configures, registers and connects a domain to a participant

> Proxies an admin-API call to the remote participant to register a new domain connection and immediately connect it. The exact RPC is selected based on the remote node's Canton major version (V0 vs V3).

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-connection-controller","description":"Configure, register, connect and disconnect a remote Canton participant against one of its sync domains."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ConnectionDto":{"type":"object","description":"The DTO representing a connection to a domain.","properties":{"connected":{"type":"boolean","description":"It represents the connection status. It is true when the connection is established, false otherwise."},"custom":{"type":"boolean","description":"It represents a custom domain.  When it is true the domainUrl should be used, use domainName and port otherwise "},"domainAlias":{"type":"string","description":"This is the alias of the domain to connect to. It does not have to be the same as the actual domain name.","minLength":1},"domainName":{"type":"string","description":"This is name of the domain to connect to. "},"isHADomain":{"type":"boolean","description":"Defines whether the domain name belongs to the HA Domain entity"},"domainUrl":{"type":"string","description":"This is the URL of the domain to connect to. It must be accessible from the participant node. Usage: https://<domain-name>.<namespace>.svc.cluster.local:<public-port>"},"publicPort":{"type":"string","description":"This is public port of the domain to connect to. "}},"required":["domainAlias"]}}},"paths":{"/remote-participants/{name}/connections":{"post":{"tags":["remote-participant-connection-controller"],"summary":"Configures, registers and connects a domain to a participant","description":"Proxies an admin-API call to the remote participant to register a new domain connection and immediately connect it. The exact RPC is selected based on the remote node's Canton major version (V0 vs V3).","operationId":"createRemoteParticipantConnection","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionDto"}}},"required":true},"responses":{"201":{"description":"Created"},"400":{"description":"The connection payload or participant name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote participant is registered under the given name."},"409":{"description":"A domain connection with the same alias is already registered on the remote participant."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get the current pruning schedule of a remote domain component

> Fetches the cron-based pruning schedule currently configured on the mediator or sequencer of the remote sync domain, together with the next computed run timestamp. The schedule is read from the remote node via its admin API.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-domain-prune-controller","description":"Run pruning on a remote sync domain and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledPruneDto":{"type":"object","description":"Persisted pruning schedule for a Canton workload: cron expression, retention window, max duration and next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxDurationInSec":{"type":"integer","format":"int64","minimum":1},"nextRun":{"type":"string"},"retentionInSec":{"type":"integer","format":"int64","minimum":1}},"required":["cron","maxDurationInSec","retentionInSec"]}}},"paths":{"/remote-domains/{name}/prune":{"get":{"tags":["remote-domain-prune-controller"],"summary":"Get the current pruning schedule of a remote domain component","description":"Fetches the cron-based pruning schedule currently configured on the mediator or sequencer of the remote sync domain, together with the next computed run timestamp. The schedule is read from the remote node via its admin API.","operationId":"getRemoteDomainPruningSchedule","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the target remote domain.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"component","in":"query","description":"Remote domain component to inspect (mediator or sequencer).","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledPruneDto"}}}},"400":{"description":"Invalid component value.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote domain is registered under the given name, or no schedule is configured.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledPruneDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create a pruning schedule on a remote domain component

> Sends a pruning schedule (cron-based ledger data retention) to the mediator or sequencer of a remote sync domain. The schedule is applied on the remote node via its admin API; CBM only resolves the connection details from its local registration.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-domain-prune-controller","description":"Run pruning on a remote sync domain and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledPruneDto":{"type":"object","description":"Persisted pruning schedule for a Canton workload: cron expression, retention window, max duration and next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxDurationInSec":{"type":"integer","format":"int64","minimum":1},"nextRun":{"type":"string"},"retentionInSec":{"type":"integer","format":"int64","minimum":1}},"required":["cron","maxDurationInSec","retentionInSec"]}}},"paths":{"/remote-domains/{name}/prune":{"post":{"tags":["remote-domain-prune-controller"],"summary":"Create a pruning schedule on a remote domain component","description":"Sends a pruning schedule (cron-based ledger data retention) to the mediator or sequencer of a remote sync domain. The schedule is applied on the remote node via its admin API; CBM only resolves the connection details from its local registration.","operationId":"createRemoteDomainPruningSchedule","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the target remote domain.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"component","in":"query","description":"Remote domain component the schedule applies to (mediator or sequencer).","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduledPruneDto"}}},"required":true},"responses":{"201":{"description":"Created"},"400":{"description":"Invalid cron expression, component, or schedule payload.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote domain is registered under the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Clear the pruning schedule on a remote domain component

> Instructs the mediator or sequencer of the remote sync domain to drop its current pruning schedule. The clear command is proxied to the remote node's admin API.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-domain-prune-controller","description":"Run pruning on a remote sync domain and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/remote-domains/{name}/prune":{"delete":{"tags":["remote-domain-prune-controller"],"summary":"Clear the pruning schedule on a remote domain component","description":"Instructs the mediator or sequencer of the remote sync domain to drop its current pruning schedule. The clear command is proxied to the remote node's admin API.","operationId":"deleteRemoteDomainPruningSchedule","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the target remote domain.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"component","in":"query","description":"Remote domain component whose schedule should be cleared (mediator or sequencer).","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"Invalid component value.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote domain is registered under the given name, or no schedule exists to clear."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get participant restore job

> Returns the descriptor of the current restore job for the participant, including the source backup file and the job's runtime status. Used to poll the progress of a long-running restore initiated via POST.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-restore-controller","description":"Restore a Canton participant from a previously created backup."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RestoreDto":{"type":"object","description":"Request body to start a participant or domain restore from a previously captured backup file.","properties":{"fileName":{"type":"string","minLength":1}},"required":["fileName"]}}},"paths":{"/participants/{name}/restore":{"get":{"tags":["participant-restore-controller"],"summary":"Get participant restore job","description":"Returns the descriptor of the current restore job for the participant, including the source backup file and the job's runtime status. Used to poll the progress of a long-running restore initiated via POST.","operationId":"getParticipantRestoreSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant whose restore job to fetch.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestoreDto"}}}},"400":{"description":"The participant name failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No restore job exists for the given participant.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestoreDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create participant restore job

> Launches a one-shot restore job that recreates the participant's storage from the specified backup file. Any previous restore job for this participant is removed first. This is a long-running operation: the response is a job descriptor whose progress can be polled via the GET endpoint.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-restore-controller","description":"Restore a Canton participant from a previously created backup."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RestoreDto":{"type":"object","description":"Request body to start a participant or domain restore from a previously captured backup file.","properties":{"fileName":{"type":"string","minLength":1}},"required":["fileName"]}}},"paths":{"/participants/{name}/restore":{"post":{"tags":["participant-restore-controller"],"summary":"Create participant restore job","description":"Launches a one-shot restore job that recreates the participant's storage from the specified backup file. Any previous restore job for this participant is removed first. This is a long-running operation: the response is a job descriptor whose progress can be polled via the GET endpoint.","operationId":"createParticipantRestoreSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant to restore.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestoreDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestoreDto"}}}},"400":{"description":"The body, participant name, or backup file failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists or the referenced backup file is missing.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestoreDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete participant restore job

> Removes the restore job descriptor for the participant. If a restore is currently running it will be cancelled. Restored data already written to the participant's storage is not rolled back.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-restore-controller","description":"Restore a Canton participant from a previously created backup."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/participants/{name}/restore":{"delete":{"tags":["participant-restore-controller"],"summary":"Delete participant restore job","description":"Removes the restore job descriptor for the participant. If a restore is currently running it will be cancelled. Restored data already written to the participant's storage is not rolled back.","operationId":"deleteParticipantRestoreSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant whose restore job should be removed.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The participant name failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No restore job exists for the given participant."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get participant pruning schedule

> Returns the current pruning schedule configured on the participant, including the cron expression, retention and the predicted Unix timestamp of the next run.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-prune-controller","description":"Run pruning on a participant and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledPruneDto":{"type":"object","description":"Persisted pruning schedule for a Canton workload: cron expression, retention window, max duration and next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxDurationInSec":{"type":"integer","format":"int64","minimum":1},"nextRun":{"type":"string"},"retentionInSec":{"type":"integer","format":"int64","minimum":1}},"required":["cron","maxDurationInSec","retentionInSec"]}}},"paths":{"/participants/{name}/prune":{"get":{"tags":["participant-prune-controller"],"summary":"Get participant pruning schedule","description":"Returns the current pruning schedule configured on the participant, including the cron expression, retention and the predicted Unix timestamp of the next run.","operationId":"getParticipantPruningSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant whose pruning schedule to fetch.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"port","in":"query","description":"Admin gRPC port on which to contact the participant.","required":false,"schema":{"type":"integer","format":"int32","default":5019}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledPruneDto"}}}},"400":{"description":"The participant name or port failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledPruneDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create participant pruning schedule

> Configures a recurring pruning schedule on the participant via its admin API. Pruning deletes ledger data older than the configured retention. This endpoint is only supported on enterprise participants; a 400 is returned otherwise.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-prune-controller","description":"Run pruning on a participant and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledPruneDto":{"type":"object","description":"Persisted pruning schedule for a Canton workload: cron expression, retention window, max duration and next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxDurationInSec":{"type":"integer","format":"int64","minimum":1},"nextRun":{"type":"string"},"retentionInSec":{"type":"integer","format":"int64","minimum":1}},"required":["cron","maxDurationInSec","retentionInSec"]}}},"paths":{"/participants/{name}/prune":{"post":{"tags":["participant-prune-controller"],"summary":"Create participant pruning schedule","description":"Configures a recurring pruning schedule on the participant via its admin API. Pruning deletes ledger data older than the configured retention. This endpoint is only supported on enterprise participants; a 400 is returned otherwise.","operationId":"createParticipantPruningSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the enterprise participant to schedule pruning on.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"port","in":"query","description":"Admin gRPC port on which to contact the participant.","required":false,"schema":{"type":"integer","format":"int32","default":5019}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduledPruneDto"}}},"required":true},"responses":{"201":{"description":"Created"},"400":{"description":"The body, cron expression, or participant is non-enterprise.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete participant pruning schedule

> Clears the pruning schedule on the participant via its admin API. Already pruned ledger data cannot be recovered; this only stops future scheduled runs.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-prune-controller","description":"Run pruning on a participant and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/participants/{name}/prune":{"delete":{"tags":["participant-prune-controller"],"summary":"Delete participant pruning schedule","description":"Clears the pruning schedule on the participant via its admin API. Already pruned ledger data cannot be recovered; this only stops future scheduled runs.","operationId":"deleteParticipantPruningSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant whose pruning schedule to clear.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"port","in":"query","description":"Admin gRPC port on which to contact the participant.","required":false,"schema":{"type":"integer","format":"int32","default":5019}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The participant name or port failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Refresh and list local parties

> Triggers an asynchronous refresh of the cached local-parties view from the participant's ledger API and immediately returns the current view together with the refresh status. Subsequent calls to the GET endpoint will reflect the refreshed data once the background fetch completes.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"local-party-controller","description":"Fetch and synchronise local parties hosted on a Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"LocalPartyListingDTO":{"type":"object","description":"Local-party listing for a participant: the in-progress fetch flag and the currently-known list of party identifiers.","properties":{"fetching":{"type":"boolean"},"parties":{"type":"array","items":{"type":"string"}}}}}},"paths":{"/participants/{name}/parties/local/fetch":{"post":{"tags":["local-party-controller"],"summary":"Refresh and list local parties","description":"Triggers an asynchronous refresh of the cached local-parties view from the participant's ledger API and immediately returns the current view together with the refresh status. Subsequent calls to the GET endpoint will reflect the refreshed data once the background fetch completes.","operationId":"fetchParties","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant whose local parties to refresh.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LocalPartyListingDTO"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Proxy GET to participant JSON Ledger API

> Forwards a GET request to the participant's JSON Ledger API endpoint, preserving the path suffix, query string and body. CBM authenticates the request with a freshly minted ledger token chosen according to the participant's auth provider (Keycloak, Auth0 or validator).

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"json-api-controller","description":"Proxy requests to the JSON Ledger API of a local Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/participants/{name}/jsonapi/**":{"get":{"tags":["json-api-controller"],"summary":"Proxy GET to participant JSON Ledger API","description":"Forwards a GET request to the participant's JSON Ledger API endpoint, preserving the path suffix, query string and body. CBM authenticates the request with a freshly minted ledger token chosen according to the participant's auth provider (Keycloak, Auth0 or validator).","operationId":"getParticipantRequest","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant to proxy the call to.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Proxy POST to participant JSON Ledger API

> Forwards a POST request (JSON or octet-stream) to the participant's JSON Ledger API. When the call is a party-allocation request (POST /v2/parties) and succeeds, the newly allocated party is added to CBM's local-party cache for the participant.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"json-api-controller","description":"Proxy requests to the JSON Ledger API of a local Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/participants/{name}/jsonapi/**":{"post":{"tags":["json-api-controller"],"summary":"Proxy POST to participant JSON Ledger API","description":"Forwards a POST request (JSON or octet-stream) to the participant's JSON Ledger API. When the call is a party-allocation request (POST /v2/parties) and succeeds, the newly allocated party is added to CBM's local-party cache for the participant.","operationId":"postParticipantRequest","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant to proxy the call to.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"type":"object"}}}},"409":{"description":"The participant rejected the request as conflicting (for example party already exists).","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Proxy DELETE to participant JSON Ledger API

> Forwards a DELETE request to the participant's JSON Ledger API. The path suffix and query string after /jsonapi are passed through unchanged.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"json-api-controller","description":"Proxy requests to the JSON Ledger API of a local Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/participants/{name}/jsonapi/**":{"delete":{"tags":["json-api-controller"],"summary":"Proxy DELETE to participant JSON Ledger API","description":"Forwards a DELETE request to the participant's JSON Ledger API. The path suffix and query string after /jsonapi are passed through unchanged.","operationId":"deleteParticipantRequest","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant to proxy the call to.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Proxy PATCH to participant JSON Ledger API

> Forwards a PATCH request (JSON or octet-stream) to the participant's JSON Ledger API, preserving path, query string and body.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"json-api-controller","description":"Proxy requests to the JSON Ledger API of a local Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/participants/{name}/jsonapi/**":{"patch":{"tags":["json-api-controller"],"summary":"Proxy PATCH to participant JSON Ledger API","description":"Forwards a PATCH request (JSON or octet-stream) to the participant's JSON Ledger API, preserving path, query string and body.","operationId":"patchParticipantRequest","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant to proxy the call to.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"type":"object"}}}},"409":{"description":"The participant rejected the request as conflicting.","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Lists all configured dars of a participant

> Returns the list of Daml Archive (DAR) packages currently uploaded to the given participant by calling its admin API. The package service is dispatched based on the participant's Canton/validator version.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-dar-controller","description":"List, upload and remove DAR packages on a Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DarDto":{"type":"object","description":"Reference to a DAR package uploaded to a Canton participant: identifying hash, package name and version.","properties":{"hash":{"type":"string"},"name":{"type":"string"},"version":{"type":"string"}}}}},"paths":{"/participants/{name}/dars":{"get":{"tags":["participant-dar-controller"],"summary":"Lists all configured dars of a participant","description":"Returns the list of Daml Archive (DAR) packages currently uploaded to the given participant by calling its admin API. The package service is dispatched based on the participant's Canton/validator version.","operationId":"listParticipantDars","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the target participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DarDto"}}}}},"400":{"description":"The participant name failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DarDto"}}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Upload dar file to a participant

> Uploads one or more DAR packages already stored in the CBM file store to the target participant. Between 1 and 15 DAR names can be uploaded in a single request; uploads are performed in order and the call returns when all are accepted by the admin API.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-dar-controller","description":"List, upload and remove DAR packages on a Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/participants/{name}/dars":{"post":{"tags":["participant-dar-controller"],"summary":"Upload dar file to a participant","description":"Uploads one or more DAR packages already stored in the CBM file store to the target participant. Between 1 and 15 DAR names can be uploaded in a single request; uploads are performed in order and the call returns when all are accepted by the admin API.","operationId":"uploadParticipantDar","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the target participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"darName","in":"query","description":"Names of DAR files in the CBM file store to upload (1 to 15 entries).","required":true,"schema":{"type":"array","items":{"type":"string"},"maxItems":15,"minItems":1}}],"responses":{"200":{"description":"OK"},"400":{"description":"Validation failed (participant name, DAR list size, or unknown DAR).","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Remove a dar from a participant

> Unregisters the DAR identified by its content hash from the given participant. The package contents themselves are not deleted from the ledger; only the registration is removed. The operation is idempotent on success.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-dar-controller","description":"List, upload and remove DAR packages on a Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/participants/{name}/dars":{"delete":{"tags":["participant-dar-controller"],"summary":"Remove a dar from a participant","description":"Unregisters the DAR identified by its content hash from the given participant. The package contents themselves are not deleted from the ledger; only the registration is removed. The operation is idempotent on success.","operationId":"removeParticipantDar","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the target participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"darHash","in":"query","description":"Content hash of the DAR to remove, as reported by the list endpoint.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"The participant name or DAR hash failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists or the DAR is not registered."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Lists all configured domain connections of a participant

> Returns the list of sync-domain connections registered on the participant, including each domain's alias, URL, parameters and current connection state.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"connection-controller","description":"Configure, register, connect and disconnect a Canton participant against one of its sync domains."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ConnectionDto":{"type":"object","description":"The DTO representing a connection to a domain.","properties":{"connected":{"type":"boolean","description":"It represents the connection status. It is true when the connection is established, false otherwise."},"custom":{"type":"boolean","description":"It represents a custom domain.  When it is true the domainUrl should be used, use domainName and port otherwise "},"domainAlias":{"type":"string","description":"This is the alias of the domain to connect to. It does not have to be the same as the actual domain name.","minLength":1},"domainName":{"type":"string","description":"This is name of the domain to connect to. "},"isHADomain":{"type":"boolean","description":"Defines whether the domain name belongs to the HA Domain entity"},"domainUrl":{"type":"string","description":"This is the URL of the domain to connect to. It must be accessible from the participant node. Usage: https://<domain-name>.<namespace>.svc.cluster.local:<public-port>"},"publicPort":{"type":"string","description":"This is public port of the domain to connect to. "}},"required":["domainAlias"]}}},"paths":{"/participants/{name}/connections":{"get":{"tags":["connection-controller"],"summary":"Lists all configured domain connections of a participant","description":"Returns the list of sync-domain connections registered on the participant, including each domain's alias, URL, parameters and current connection state.","operationId":"listParticipantConnections","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant whose connections to list.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"port","in":"query","description":"Admin gRPC port on which to contact the participant.","required":false,"schema":{"type":"integer","format":"int32","default":5019}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectionDto"}}}}},"400":{"description":"The participant name or port failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConnectionDto"}}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Configures, registers and connects a domain to a participant

> Registers a new sync-domain connection on the participant and immediately connects to it via the participant's admin API. The combination of domain alias and URL must be unique for the participant; a 409 is returned if the participant is already connected to another incompatible domain.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"connection-controller","description":"Configure, register, connect and disconnect a Canton participant against one of its sync domains."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ConnectionDto":{"type":"object","description":"The DTO representing a connection to a domain.","properties":{"connected":{"type":"boolean","description":"It represents the connection status. It is true when the connection is established, false otherwise."},"custom":{"type":"boolean","description":"It represents a custom domain.  When it is true the domainUrl should be used, use domainName and port otherwise "},"domainAlias":{"type":"string","description":"This is the alias of the domain to connect to. It does not have to be the same as the actual domain name.","minLength":1},"domainName":{"type":"string","description":"This is name of the domain to connect to. "},"isHADomain":{"type":"boolean","description":"Defines whether the domain name belongs to the HA Domain entity"},"domainUrl":{"type":"string","description":"This is the URL of the domain to connect to. It must be accessible from the participant node. Usage: https://<domain-name>.<namespace>.svc.cluster.local:<public-port>"},"publicPort":{"type":"string","description":"This is public port of the domain to connect to. "}},"required":["domainAlias"]}}},"paths":{"/participants/{name}/connections":{"post":{"tags":["connection-controller"],"summary":"Configures, registers and connects a domain to a participant","description":"Registers a new sync-domain connection on the participant and immediately connects to it via the participant's admin API. The combination of domain alias and URL must be unique for the participant; a 409 is returned if the participant is already connected to another incompatible domain.","operationId":"createParticipantConnection","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant on which to register the connection.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"port","in":"query","description":"Admin gRPC port on which to contact the participant.","required":false,"schema":{"type":"integer","format":"int32","default":5019}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionDto"}}},"required":true},"responses":{"201":{"description":"Created"},"400":{"description":"The connection payload or participant name failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists."},"409":{"description":"The participant is already connected to another incompatible domain."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get participant backup schedule

> Returns the current scheduled backup configuration for the participant, including the cron expression and the predicted Unix timestamp of the next run.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-backup-controller","description":"Trigger participant backups, browse backup history and manage scheduled participant backups."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledBackupDto":{"type":"object","description":"Persisted backup schedule for a Canton workload: cron expression, retention limit and the resolved next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxBackups":{"type":"integer","format":"int32"},"nextRun":{"type":"string"}},"required":["cron"]}}},"paths":{"/participants/{name}/backup":{"get":{"tags":["participant-backup-controller"],"summary":"Get participant backup schedule","description":"Returns the current scheduled backup configuration for the participant, including the cron expression and the predicted Unix timestamp of the next run.","operationId":"getParticipantBackupSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant whose schedule to fetch.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledBackupDto"}}}},"400":{"description":"The participant name failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No backup schedule exists for the given participant.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledBackupDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create participant backup schedule

> Creates a recurring backup schedule (Kubernetes CronJob owned by the participant) that periodically dumps the participant's storage to the configured backup location. The cron expression is validated against the platform's non-enterprise allowed schedule.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-backup-controller","description":"Trigger participant backups, browse backup history and manage scheduled participant backups."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"BackupDto":{"type":"object","description":"Schedule definition used to configure a recurring backup job on a Canton workload (participant or domain). Carries the cron expression that drives the schedule and the maximum number of backups to retain.","properties":{"cron":{"type":"string","minLength":1},"maxBackups":{"type":"integer","format":"int32","minimum":1}},"required":["cron","maxBackups"]},"ScheduledBackupDto":{"type":"object","description":"Persisted backup schedule for a Canton workload: cron expression, retention limit and the resolved next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxBackups":{"type":"integer","format":"int32"},"nextRun":{"type":"string"}},"required":["cron"]}}},"paths":{"/participants/{name}/backup":{"post":{"tags":["participant-backup-controller"],"summary":"Create participant backup schedule","description":"Creates a recurring backup schedule (Kubernetes CronJob owned by the participant) that periodically dumps the participant's storage to the configured backup location. The cron expression is validated against the platform's non-enterprise allowed schedule.","operationId":"createParticipantBackupSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant to back up.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackupDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledBackupDto"}}}},"400":{"description":"The body, cron expression, or participant name failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledBackupDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete participant backup schedule

> Removes the scheduled backup CronJob for the participant. Existing backup files already produced in the backup location are not deleted.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-backup-controller","description":"Trigger participant backups, browse backup history and manage scheduled participant backups."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/participants/{name}/backup":{"delete":{"tags":["participant-backup-controller"],"summary":"Delete participant backup schedule","description":"Removes the scheduled backup CronJob for the participant. Existing backup files already produced in the backup location are not deleted.","operationId":"deleteParticipantBackupSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant whose schedule should be removed.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The participant name failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No backup schedule exists for the given participant."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## List validator identity dumps

> Returns the identity dump secrets currently stored for a single validator, ordered by creation time.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-id-dumps-controller","description":"Trigger and schedule validator identity dump jobs and download their artifacts."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"IdDumpDto":{"type":"object","description":"Identity-dump artifact metadata: name of the Kubernetes secret holding the dump, the owning validator name and the timestamp at which it was captured.","properties":{"secretName":{"type":"string"},"validatorName":{"type":"string"},"timestamp":{"type":"integer","format":"int64"},"createdAt":{"type":"string"}}}}},"paths":{"/id-dumps/{validatorName}":{"get":{"tags":["validator-id-dumps-controller"],"summary":"List validator identity dumps","description":"Returns the identity dump secrets currently stored for a single validator, ordered by creation time.","operationId":"listParticipantIdentityDumps","parameters":[{"name":"validatorName","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IdDumpDto"}}}}},"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create validator identity dump

> Synchronously requests an identity dump from the validator's wallet and stores it as a Kubernetes secret. The dump can later be used to recover or transfer the validator's identity.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-id-dumps-controller","description":"Trigger and schedule validator identity dump jobs and download their artifacts."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"IdDumpDto":{"type":"object","description":"Identity-dump artifact metadata: name of the Kubernetes secret holding the dump, the owning validator name and the timestamp at which it was captured.","properties":{"secretName":{"type":"string"},"validatorName":{"type":"string"},"timestamp":{"type":"integer","format":"int64"},"createdAt":{"type":"string"}}}}},"paths":{"/id-dumps/{validatorName}":{"post":{"tags":["validator-id-dumps-controller"],"summary":"Create validator identity dump","description":"Synchronously requests an identity dump from the validator's wallet and stores it as a Kubernetes secret. The dump can later be used to recover or transfer the validator's identity.","operationId":"createIdentityDump","parameters":[{"name":"validatorName","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/IdDumpDto"}}}},"400":{"description":"The supplied validator name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator exists with the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/IdDumpDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Proxy an HTTP request to an internal service

> Forwards the provided HTTP method, URL, headers and body to an internal Canton or Splice service that is not directly exposed outside the cluster, and returns the upstream response. Timestamps in the URL are normalized to ISO-8601 with millisecond precision and a 'Z' suffix.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"proxy-controller","description":"HTTP proxy endpoints used to forward requests to internal Canton / Splice services (including validator API access-token retrieval)."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ProxyRequestDto":{"type":"object","description":"Generic HTTP proxy request: target URL, method, custom headers and body forwarded by the proxy controller.","properties":{"url":{"type":"string"},"method":{"type":"string"},"headers":{"type":"object","additionalProperties":{"type":"string"}},"body":{"type":"string"}}}}},"paths":{"/http-proxy":{"post":{"tags":["proxy-controller"],"summary":"Proxy an HTTP request to an internal service","description":"Forwards the provided HTTP method, URL, headers and body to an internal Canton or Splice service that is not directly exposed outside the cluster, and returns the upstream response. Timestamps in the URL are normalized to ISO-8601 with millisecond precision and a 'Z' suffix.","operationId":"proxyRequest","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProxyRequestDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}},"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Retrieve an access token for the validator API

> Performs an OAuth login against the validator wallet using stored credentials combined with the supplied password, and returns a bearer token usable for validator API calls.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"proxy-controller","description":"HTTP proxy endpoints used to forward requests to internal Canton / Splice services (including validator API access-token retrieval)."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"PasswordDto":{"type":"object","description":"Wrapper around a single password value; used by endpoints that update credentials in isolation.","properties":{"password":{"type":"string","minLength":1}},"required":["password"]},"OauthLoginResponse":{"type":"object","description":"Token response returned by the OAuth2 login flow (access token).","properties":{"access_token":{"type":"string"}}}}},"paths":{"/http-proxy/validator-api-access-token":{"post":{"tags":["proxy-controller"],"summary":"Retrieve an access token for the validator API","description":"Performs an OAuth login against the validator wallet using stored credentials combined with the supplied password, and returns a bearer token usable for validator API calls.","operationId":"getValidatorApiAccessToken","parameters":[{"name":"validator","in":"query","description":"Name of the validator whose wallet credentials should be used","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordDto"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OauthLoginResponse"}}}},"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## List stored files with filtering and pagination

> Returns a page of files in the CBM file storage, optionally filtered by type and name. Supports offset/limit pagination via the from and limit query parameters.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"file-storage-controller","description":"Upload, list and remove files used by validators, participants and domains (DAR packages, identity dumps, configuration archives, …)."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"FileFilterResponseDto":{"type":"object","description":"Paginated list of `FileDto` entries plus the total count of stored files matching the filter.","properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/FileDto"}},"totalCount":{"type":"integer","format":"int64"}}},"FileDto":{"type":"object","description":"File DTO","properties":{"name":{"type":"string","description":"Name of the file"},"sizeInBytes":{"type":"integer","format":"int64","description":"Size of the file in bytes"}}}}},"paths":{"/files":{"get":{"tags":["file-storage-controller"],"summary":"List stored files with filtering and pagination","description":"Returns a page of files in the CBM file storage, optionally filtered by type and name. Supports offset/limit pagination via the from and limit query parameters.","operationId":"listFiles","parameters":[{"name":"fileType","in":"query","description":"Filter by file type/category","required":false,"schema":{"type":"string","enum":["DAR","UI_PACKAGE"]}},{"name":"from","in":"query","description":"Zero-based index of the first file to return","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Maximum number of files to return","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"name","in":"query","description":"Filter by file name (substring match)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FileFilterResponseDto"}}}},"400":{"description":"Invalid filter or pagination parameters","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Upload files to server-side storage

> Uploads one or more files of the given type (DAR, identity dump, config, etc.) into the CBM-managed file storage so they can later be consumed by Canton workloads. File extensions are validated against the declared file type.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"file-storage-controller","description":"Upload, list and remove files used by validators, participants and domains (DAR packages, identity dumps, configuration archives, …)."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/files":{"post":{"tags":["file-storage-controller"],"summary":"Upload files to server-side storage","description":"Uploads one or more files of the given type (DAR, identity dump, config, etc.) into the CBM-managed file storage so they can later be consumed by Canton workloads. File extensions are validated against the declared file type.","operationId":"createFile","parameters":[{"name":"fileType","in":"query","description":"Type/category of the uploaded files (controls allowed extension and storage location)","required":true,"schema":{"type":"string","enum":["DAR","UI_PACKAGE"]}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"files":{"type":"array","description":"Multipart files to upload","items":{"type":"string","format":"binary"}}},"required":["files"]}}}},"responses":{"201":{"description":"Created"},"400":{"description":"Invalid file or extension does not match the declared file type","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"409":{"description":"A file with the same name already exists"},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get the current domain restore job

> Returns the restore job descriptor for the sync domain, including its current status. Use this endpoint to poll the progress of an in-flight restore.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-restore-controller","description":"Restore a Canton sync domain from a previously created backup."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RestoreDto":{"type":"object","description":"Request body to start a participant or domain restore from a previously captured backup file.","properties":{"fileName":{"type":"string","minLength":1}},"required":["fileName"]}}},"paths":{"/domains/{name}/restore":{"get":{"tags":["domain-restore-controller"],"summary":"Get the current domain restore job","description":"Returns the restore job descriptor for the sync domain, including its current status. Use this endpoint to poll the progress of an in-flight restore.","operationId":"getDomainRestoreSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain whose restore job should be returned.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestoreDto"}}}},"400":{"description":"The supplied domain name is invalid or backup is not supported.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No restore job exists for the given domain.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestoreDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Trigger a domain restore job

> Starts an asynchronous restore of the sync domain from a previously produced backup file. Any existing restore job for the domain is replaced; progress can be polled via the corresponding GET endpoint.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-restore-controller","description":"Restore a Canton sync domain from a previously created backup."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RestoreDto":{"type":"object","description":"Request body to start a participant or domain restore from a previously captured backup file.","properties":{"fileName":{"type":"string","minLength":1}},"required":["fileName"]}}},"paths":{"/domains/{name}/restore":{"post":{"tags":["domain-restore-controller"],"summary":"Trigger a domain restore job","description":"Starts an asynchronous restore of the sync domain from a previously produced backup file. Any existing restore job for the domain is replaced; progress can be polled via the corresponding GET endpoint.","operationId":"createDomainRestoreSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain to restore into.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestoreDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestoreDto"}}}},"400":{"description":"The request payload is invalid or backup is not supported.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"The sync domain or referenced backup file does not exist.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestoreDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete the domain restore job

> Removes the restore job for the sync domain. Any in-progress restore work is cancelled as the underlying Kubernetes job is deleted.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-restore-controller","description":"Restore a Canton sync domain from a previously created backup."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/domains/{name}/restore":{"delete":{"tags":["domain-restore-controller"],"summary":"Delete the domain restore job","description":"Removes the restore job for the sync domain. Any in-progress restore work is cancelled as the underlying Kubernetes job is deleted.","operationId":"deleteDomainRestoreSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain whose restore job should be removed.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The supplied domain name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No restore job exists for the given domain."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get the domain pruning schedule

> Returns the active pruning schedule for the targeted component (mediator or sequencer), including the cron expression and a computed Unix timestamp for the next run.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-prune-controller","description":"Run pruning on a sync domain and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledPruneDto":{"type":"object","description":"Persisted pruning schedule for a Canton workload: cron expression, retention window, max duration and next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxDurationInSec":{"type":"integer","format":"int64","minimum":1},"nextRun":{"type":"string"},"retentionInSec":{"type":"integer","format":"int64","minimum":1}},"required":["cron","maxDurationInSec","retentionInSec"]}}},"paths":{"/domains/{name}/prune":{"get":{"tags":["domain-prune-controller"],"summary":"Get the domain pruning schedule","description":"Returns the active pruning schedule for the targeted component (mediator or sequencer), including the cron expression and a computed Unix timestamp for the next run.","operationId":"getDomainPruningSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain whose schedule should be returned.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"port","in":"query","description":"Admin gRPC port of the domain to call; defaults to the standard admin port.","required":false,"schema":{"type":"integer","format":"int32","default":5019}},{"name":"component","in":"query","description":"Domain component to read the pruning schedule from; either MEDIATOR or SEQUENCER.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledPruneDto"}}}},"400":{"description":"The supplied domain name or component is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No sync domain exists with the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledPruneDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create a domain pruning schedule

> Schedules recurring pruning of old ledger data for the targeted component (mediator or sequencer) of an enterprise sync domain. Pruning is only available on enterprise nodes; the schedule is enforced by the node itself.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-prune-controller","description":"Run pruning on a sync domain and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledPruneDto":{"type":"object","description":"Persisted pruning schedule for a Canton workload: cron expression, retention window, max duration and next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxDurationInSec":{"type":"integer","format":"int64","minimum":1},"nextRun":{"type":"string"},"retentionInSec":{"type":"integer","format":"int64","minimum":1}},"required":["cron","maxDurationInSec","retentionInSec"]}}},"paths":{"/domains/{name}/prune":{"post":{"tags":["domain-prune-controller"],"summary":"Create a domain pruning schedule","description":"Schedules recurring pruning of old ledger data for the targeted component (mediator or sequencer) of an enterprise sync domain. Pruning is only available on enterprise nodes; the schedule is enforced by the node itself.","operationId":"createDomainPruningSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain to prune.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"port","in":"query","description":"Admin gRPC port of the domain to call; defaults to the standard admin port.","required":false,"schema":{"type":"integer","format":"int32","default":5019}},{"name":"component","in":"query","description":"Domain component to prune; either MEDIATOR or SEQUENCER.","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduledPruneDto"}}},"required":true},"responses":{"201":{"description":"Created"},"400":{"description":"The cron expression, payload or component is invalid, or the domain is not enterprise.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No sync domain exists with the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete the domain pruning schedule

> Clears the pruning schedule on the targeted component (mediator or sequencer) of the sync domain. Already pruned data is not affected.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-prune-controller","description":"Run pruning on a sync domain and manage its pruning schedule."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/domains/{name}/prune":{"delete":{"tags":["domain-prune-controller"],"summary":"Delete the domain pruning schedule","description":"Clears the pruning schedule on the targeted component (mediator or sequencer) of the sync domain. Already pruned data is not affected.","operationId":"deleteDomainPruningSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain whose schedule should be cleared.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"port","in":"query","description":"Admin gRPC port of the domain to call; defaults to the standard admin port.","required":false,"schema":{"type":"integer","format":"int32","default":5019}},{"name":"component","in":"query","description":"Domain component to clear the pruning schedule from; either MEDIATOR or SEQUENCER.","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The supplied domain name or component is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No sync domain exists with the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get the domain backup schedule

> Returns the current backup schedule for the sync domain, including the cron expression and a calculated Unix timestamp for the next planned run.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-backup-controller","description":"Trigger domain backups, browse backup history and manage scheduled domain backups."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ScheduledBackupDto":{"type":"object","description":"Persisted backup schedule for a Canton workload: cron expression, retention limit and the resolved next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxBackups":{"type":"integer","format":"int32"},"nextRun":{"type":"string"}},"required":["cron"]}}},"paths":{"/domains/{name}/backup":{"get":{"tags":["domain-backup-controller"],"summary":"Get the domain backup schedule","description":"Returns the current backup schedule for the sync domain, including the cron expression and a calculated Unix timestamp for the next planned run.","operationId":"getDomainBackupSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain whose schedule should be returned.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledBackupDto"}}}},"400":{"description":"The supplied domain name is invalid or backup is not supported.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No backup schedule exists for the given domain.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledBackupDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Create or replace a domain backup schedule

> Provisions a recurring backup job for the sync domain using the supplied cron expression. The created schedule is owned by the domain resource and produces backup artifacts asynchronously on each cron tick.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-backup-controller","description":"Trigger domain backups, browse backup history and manage scheduled domain backups."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"BackupDto":{"type":"object","description":"Schedule definition used to configure a recurring backup job on a Canton workload (participant or domain). Carries the cron expression that drives the schedule and the maximum number of backups to retain.","properties":{"cron":{"type":"string","minLength":1},"maxBackups":{"type":"integer","format":"int32","minimum":1}},"required":["cron","maxBackups"]},"ScheduledBackupDto":{"type":"object","description":"Persisted backup schedule for a Canton workload: cron expression, retention limit and the resolved next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxBackups":{"type":"integer","format":"int32"},"nextRun":{"type":"string"}},"required":["cron"]}}},"paths":{"/domains/{name}/backup":{"post":{"tags":["domain-backup-controller"],"summary":"Create or replace a domain backup schedule","description":"Provisions a recurring backup job for the sync domain using the supplied cron expression. The created schedule is owned by the domain resource and produces backup artifacts asynchronously on each cron tick.","operationId":"createDomainBackupSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain to back up.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackupDto"}}},"required":true},"responses":{"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledBackupDto"}}}},"400":{"description":"The cron expression or payload is invalid, or backup is not supported.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No sync domain exists with the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ScheduledBackupDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete the domain backup schedule

> Removes the recurring backup job associated with the sync domain. Existing backup artifacts already produced are not affected.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-backup-controller","description":"Trigger domain backups, browse backup history and manage scheduled domain backups."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/domains/{name}/backup":{"delete":{"tags":["domain-backup-controller"],"summary":"Delete the domain backup schedule","description":"Removes the recurring backup job associated with the sync domain. Existing backup artifacts already produced are not affected.","operationId":"deleteDomainBackupSchedule","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain whose schedule should be removed.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The supplied domain name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No backup schedule exists for the given domain."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Execute a Canton console command

> Runs an ad-hoc Canton console script against the target participant or domain node identified by name. The command is executed synchronously and produces no response body.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"command-controller","description":"Execute and manage ad-hoc Canton console commands against a participant or domain."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"CommandDto":{"type":"object","description":"Canton console script to be executed as a one-shot command against a participant or domain.","properties":{"script":{"type":"string","minLength":1}},"required":["script"]}}},"paths":{"/commands/{name}":{"post":{"tags":["command-controller"],"summary":"Execute a Canton console command","description":"Runs an ad-hoc Canton console script against the target participant or domain node identified by name. The command is executed synchronously and produces no response body.","operationId":"executeCommand","parameters":[{"name":"name","in":"path","description":"Name of the Canton node (participant or domain) to execute the command against","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommandDto"}}},"required":true},"responses":{"204":{"description":"No Content"},"400":{"description":"Invalid node name or command payload","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"Target node not found"},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get validator

> Returns the full details of a single Splice validator, including its applications, participant, database and wallet configuration, and the resolved validator party id.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-controller","description":"Create, list, edit and remove Splice validator deployments, and read their configuration and status."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ValidatorResponseDto":{"type":"object","description":"Full validator details returned by GET / list endpoints: cluster and participant configuration, app info for validator / wallet / CNS, contact point and optional Keycloak credentials created on first provisioning.","properties":{"appInfoCantonNameService":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoValidator":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoWallet":{"$ref":"#/components/schemas/AppInfoDto"},"application":{"type":"string"},"applicationCantonNameServer":{"type":"string"},"applicationWallet":{"type":"string"},"contactPoint":{"type":"string"},"createdUser":{"$ref":"#/components/schemas/CreatedUserDto"},"customAuth":{"type":"boolean"},"databaseStorage":{"type":"string"},"disabledWallet":{"type":"boolean"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"exposeLedgerApi":{"type":"boolean"},"imageRepo":{"type":"string"},"imageTag":{"type":"string"},"immutable":{"type":"boolean"},"jsonApiAddress":{"type":"string"},"ledgerApiAddress":{"type":"string"},"validatorApiAddress":{"type":"string"},"migrationId":{"type":"string"},"migrationMigrating":{"type":"boolean"},"name":{"type":"string"},"onboardingSecretName":{"type":"string"},"participant":{"type":"string"},"participantIdentitiesDumpSecretName":{"type":"string"},"participantInfo":{"$ref":"#/components/schemas/AppInfoDto"},"partyId":{"type":"string"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"postgresPassword":{"type":"string","deprecated":true},"postgresUser":{"type":"string","deprecated":true},"privateJsonApi":{"type":"boolean"},"scanAddress":{"type":"string"},"storageSize":{"type":"string"},"disableProbes":{"type":"boolean"},"topUp":{"$ref":"#/components/schemas/TopUpDto"},"databaseConfig":{"$ref":"#/components/schemas/ValidatorDbConfigDto"},"postgresConfig":{"$ref":"#/components/schemas/PostgresConfigDto"},"walletSweeps":{"type":"array","items":{"$ref":"#/components/schemas/WalletSweepDto"}}}},"AppInfoDto":{"type":"object","description":"Application deployment metadata: container environment variables and resource requirements declared for an individual Canton/Splice application component.","properties":{"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"resources":{"$ref":"#/components/schemas/ResourcesDto"}},"required":["envVars"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"CreatedUserDto":{"type":"object","properties":{"id":{"type":"string"},"temporaryPassword":{"type":"string"},"username":{"type":"string"}}},"TopUpDto":{"type":"object","properties":{"enable":{"type":"boolean"},"minTopupInterval":{"type":"string"},"targetThroughput":{"type":"integer","format":"int32"}}},"ValidatorDbConfigDto":{"type":"object","description":"Database configuration for a Splice validator: whether an external Postgres is used and, if so, its connection credentials.","properties":{"external":{"type":"boolean"},"username":{"type":"string"},"password":{"type":"string"},"hostname":{"type":"string"},"port":{"type":"string"}}},"PostgresConfigDto":{"type":"object","description":"Postgres deployment configuration consumed by a participant or domain: container image, JVM args, resources and any extra volumes / volume mounts.","properties":{"args":{"type":"array","items":{"type":"string"}},"image":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/Volume"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/VolumeMount"}}}},"Volume":{"type":"object","properties":{"name":{"type":"string"},"emptyDir":{"$ref":"#/components/schemas/EmptyDirVolumeSource"},"configMap":{"$ref":"#/components/schemas/ConfigMapVolumeSource"},"persistentVolumeClaim":{"$ref":"#/components/schemas/PersistentVolumeClaimVolumeSource"},"secret":{"$ref":"#/components/schemas/SecretVolumeSource"},"hostPath":{"$ref":"#/components/schemas/HostPathVolumeSource"}}},"EmptyDirVolumeSource":{"type":"object","properties":{"medium":{"type":"string"},"sizeLimit":{"$ref":"#/components/schemas/Quantity"}}},"Quantity":{"type":"object","properties":{"amount":{"type":"string"},"format":{"type":"string"}}},"ConfigMapVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean"}}},"KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","format":"int32"},"path":{"type":"string"}}},"PersistentVolumeClaimVolumeSource":{"type":"object","properties":{"claimName":{"type":"string"},"readOnly":{"type":"boolean"}}},"SecretVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"optional":{"type":"boolean"},"secretName":{"type":"string"}}},"HostPathVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string"}}},"VolumeMount":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"subPath":{"type":"string"},"readOnly":{"type":"boolean"}}},"WalletSweepDto":{"type":"object","properties":{"senderPartyId":{"type":"string","minLength":1},"receiverPartyId":{"type":"string","minLength":1},"maxBalanceUSD":{"type":"string","minLength":1},"minBalanceUSD":{"type":"string","minLength":1},"useTransferPreapproval":{"type":"boolean"}},"required":["maxBalanceUSD","minBalanceUSD","receiverPartyId","senderPartyId","useTransferPreapproval"]}}},"paths":{"/validators/{name}":{"get":{"tags":["validator-controller"],"summary":"Get validator","description":"Returns the full details of a single Splice validator, including its applications, participant, database and wallet configuration, and the resolved validator party id.","operationId":"getValidator","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidatorResponseDto"}}}},"400":{"description":"The supplied validator name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator exists with the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidatorResponseDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete validator

> Deletes the validator CRD and, when \`deleteResources\` is true, cleans up associated identity dumps, wallet/CNS/ledger-auth/onboarding secrets and Keycloak resources. Always removes the participant entry from the local party finder cache.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-controller","description":"Create, list, edit and remove Splice validator deployments, and read their configuration and status."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/validators/{name}":{"delete":{"tags":["validator-controller"],"summary":"Delete validator","description":"Deletes the validator CRD and, when `deleteResources` is true, cleans up associated identity dumps, wallet/CNS/ledger-auth/onboarding secrets and Keycloak resources. Always removes the participant entry from the local party finder cache.","operationId":"deleteValidator","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"deleteResources","in":"query","description":"Whether to also remove related secrets, identity dumps and Keycloak resources.","required":false,"schema":{"type":"boolean","default":true}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The supplied validator name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator exists with the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get validator backup history

> Returns the list of recorded backup runs (and their status / artifacts) produced by the validator's scheduled backup job.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-backup-controller","description":"Trigger validator backups, browse backup history and manage scheduled validator backups."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ValidatorBackupHistoryDto":{"type":"object","description":"Validator backup history: ordered list of previously captured backups with their files and statuses.","properties":{"backupList":{"type":"array","items":{"$ref":"#/components/schemas/ValidatorBackupPropertiesDto"}}}},"ValidatorBackupPropertiesDto":{"type":"object","description":"Single validator backup entry: list of captured backup files, overall status and capture timestamp.","properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/FilePropertiesDto"}},"status":{"type":"string"},"timestamp":{"type":"string"}}},"FilePropertiesDto":{"type":"object","description":"File metadata: filename, size and timestamp (split into separate date and time fields).","properties":{"date":{"type":"string"},"filename":{"type":"string"},"size":{"type":"integer","format":"int32"},"time":{"type":"string"}}}}},"paths":{"/validators/{name}/backup/history":{"get":{"tags":["validator-backup-controller"],"summary":"Get validator backup history","description":"Returns the list of recorded backup runs (and their status / artifacts) produced by the validator's scheduled backup job.","operationId":"getBackupHistory","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidatorBackupHistoryDto"}}}},"400":{"description":"The supplied validator name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator or backup schedule exists for the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidatorBackupHistoryDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get prefill network info

> Returns network metadata used by the validator prefill / top-up flow, such as the discovered sponsor scan addresses and migration parameters. Read-only.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-prefill-controller","description":"Prefill a Splice validator, check quorum status and perform top-up operations."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"NetworkInfoDto":{"type":"object","description":"Splice network endpoints split by environment: devnet, testnet and mainnet.","properties":{"devnet":{"$ref":"#/components/schemas/NetworkInfoDetails"},"testnet":{"$ref":"#/components/schemas/NetworkInfoDetails"},"mainnet":{"$ref":"#/components/schemas/NetworkInfoDetails"}}},"NetworkInfoDetails":{"type":"object","properties":{"version":{"type":"string"},"migrationId":{"type":"integer","format":"int32"},"svDetailsList":{"type":"array","items":{"$ref":"#/components/schemas/SVDetails"}}}},"SVDetails":{"type":"object","properties":{"name":{"type":"string"},"sponsorAddress":{"type":"string"},"scanAddress":{"type":"string"}}}}},"paths":{"/validators/prefill/network-info":{"get":{"tags":["validator-prefill-controller"],"summary":"Get prefill network info","description":"Returns network metadata used by the validator prefill / top-up flow, such as the discovered sponsor scan addresses and migration parameters. Read-only.","operationId":"getNetworkInfo","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NetworkInfoDto"}}}},"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## List image pull secret names

> Returns the names of all Kubernetes image pull secrets available in the CBM namespace that can be referenced by Canton or Splice workloads.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"secrets-controller","description":"Manage Kubernetes secrets consumed by Canton / Splice workloads."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/secrets":{"get":{"tags":["secrets-controller"],"summary":"List image pull secret names","description":"Returns the names of all Kubernetes image pull secrets available in the CBM namespace that can be referenced by Canton or Splice workloads.","operationId":"getSecrets","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"string"}}}}},"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get a remote participant registration

> Returns the local CBM registration data (endpoints, auth provider, resources, phase) for the remote participant identified by name. No call is made to the remote node.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-controller","description":"Register and manage externally-hosted Canton participants reachable from this CBM instance."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RemoteParticipantDto":{"type":"object","description":"Externally-hosted Canton participant registered in CBM: admin / ledger / JSON-API endpoints, auth provider and identifying metadata.","properties":{"adminAddress":{"type":"string","minLength":1},"adminPort":{"type":"string","minLength":1},"authProvider":{"type":"string","enum":["keycloak","auth0","custom"]},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"jsonApiUrl":{"type":"string","minLength":1},"ledgerAddress":{"type":"string","minLength":1},"ledgerId":{"type":"string","minLength":1},"ledgerPort":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"v3":{"type":"boolean"}},"required":["adminAddress","adminPort","authProvider","image","jsonApiUrl","ledgerAddress","ledgerId","ledgerPort","name"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}},"paths":{"/remote-participants/{name}":{"get":{"tags":["remote-participant-controller"],"summary":"Get a remote participant registration","description":"Returns the local CBM registration data (endpoints, auth provider, resources, phase) for the remote participant identified by name. No call is made to the remote node.","operationId":"getRemoteParticipant","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RemoteParticipantDto"}}}},"400":{"description":"The supplied name does not satisfy node-name constraints.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote participant is registered under the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RemoteParticipantDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete a remote participant registration

> Removes the CBM-side registration of the remote participant. The remote Canton node itself is not stopped or modified; only the local configuration entry is deleted.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-controller","description":"Register and manage externally-hosted Canton participants reachable from this CBM instance."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/remote-participants/{name}":{"delete":{"tags":["remote-participant-controller"],"summary":"Delete a remote participant registration","description":"Removes the CBM-side registration of the remote participant. The remote Canton node itself is not stopped or modified; only the local configuration entry is deleted.","operationId":"deleteRemoteParticipant","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The supplied name does not satisfy node-name constraints.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote participant is registered under the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Check status of a participant

> Queries the admin API of the remote Canton participant and returns its current status (identity, active/connected domains, version). CBM proxies the call to the remote node's admin address using the version-appropriate client.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-participant-status-controller","description":"Inspect the runtime status of a remote Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ParticipantStatusDto":{"type":"object","description":"Runtime status of a Canton participant: active flag, id, uptime and the lists of currently connected and unhealthy sync domains.","properties":{"active":{"type":"boolean"},"connectedDomains":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"unhealthyDomains":{"type":"array","items":{"type":"string"}},"uptime":{"type":"integer","format":"int64"}}}}},"paths":{"/remote-participants/{name}/status":{"get":{"tags":["remote-participant-status-controller"],"summary":"Check status of a participant","description":"Queries the admin API of the remote Canton participant and returns its current status (identity, active/connected domains, version). CBM proxies the call to the remote node's admin address using the version-appropriate client.","operationId":"getRemoteParticipantHealthStatus","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote participant.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ParticipantStatusDto"}}}},"400":{"description":"The supplied name does not satisfy node-name constraints.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote participant is registered under the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ParticipantStatusDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get a single remote domain registration

> Returns CBM-side registration metadata for the remote domain identified by name. This call reads local state only and does not contact the remote node.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-domain-controller","description":"Register and manage externally-hosted Canton sync domains reachable from this CBM instance."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RemoteDomainDto":{"type":"object","description":"Externally-hosted sync domain registered in CBM: admin / public endpoints, image metadata and lifecycle phase.","properties":{"adminAddress":{"type":"string","minLength":1},"adminPort":{"type":"string","minLength":1},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"publicAddress":{"type":"string","minLength":1},"publicPort":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourcesDto"}},"required":["adminAddress","adminPort","image","name","publicAddress","publicPort"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}},"paths":{"/remote-domains/{name}":{"get":{"tags":["remote-domain-controller"],"summary":"Get a single remote domain registration","description":"Returns CBM-side registration metadata for the remote domain identified by name. This call reads local state only and does not contact the remote node.","operationId":"getRemoteDomain","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote domain.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RemoteDomainDto"}}}},"400":{"description":"The supplied name is not a valid node identifier.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote domain is registered under the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RemoteDomainDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Deregister a remote domain

> Removes the CBM-side registration of the remote domain. The remote node itself is not stopped or deleted; only its local registration metadata is dropped.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-domain-controller","description":"Register and manage externally-hosted Canton sync domains reachable from this CBM instance."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/remote-domains/{name}":{"delete":{"tags":["remote-domain-controller"],"summary":"Deregister a remote domain","description":"Removes the CBM-side registration of the remote domain. The remote node itself is not stopped or deleted; only its local registration metadata is dropped.","operationId":"deleteRemoteDomain","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote domain.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The supplied name is not a valid node identifier.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote domain is registered under the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Check status of a remote domain

> Looks up the CBM-side registration for the given remote domain and proxies a status probe to its admin endpoint. Returns the health information reported by the remote node.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"remote-domain-status-controller","description":"Inspect the runtime status of a remote Canton sync domain."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DomainStatusDto":{"type":"object","description":"Runtime status of a single-replica sync domain: active flag, id, uptime, sequencer state and the list of currently connected participants.","properties":{"active":{"type":"boolean"},"connectedParticipants":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"sequencer":{"$ref":"#/components/schemas/SequencerDto"},"uptime":{"type":"integer","format":"int64"}}},"SequencerDto":{"type":"object","description":"Compact status of a Canton sequencer: active flag and free-form details string.","properties":{"active":{"type":"boolean"},"details":{"type":"string"}}}}},"paths":{"/remote-domains/{name}/status":{"get":{"tags":["remote-domain-status-controller"],"summary":"Check status of a remote domain","description":"Looks up the CBM-side registration for the given remote domain and proxies a status probe to its admin endpoint. Returns the health information reported by the remote node.","operationId":"getRemoteDomainHealthStatus","parameters":[{"name":"name","in":"path","description":"CBM-side registration name of the remote domain to probe.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainStatusDto"}}}},"400":{"description":"The supplied name is not a valid node identifier.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No remote domain is registered under the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainStatusDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get participant

> Returns the configuration and current lifecycle phase of a single participant, including storage, ports, ledger/admin addresses, authorization and resource settings.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-controller","description":"Create, list, edit and remove Canton participant deployments, and read their configuration."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ParticipantDto":{"type":"object","description":"Canton participant definition: container image, admin / ledger endpoints, authentication, postgres storage and Canton-specific settings used to provision a new participant deployment.","properties":{"adminAddress":{"type":"string"},"adminPort":{"type":"string","minLength":1},"auth":{"type":"boolean"},"authProvider":{"type":"string","enum":["keycloak","auth0","custom"]},"authorization":{"$ref":"#/components/schemas/AuthorizationDto"},"bootstrap":{"type":"string"},"daemon":{"type":"boolean"},"enterprise":{"type":"boolean","description":"Whether the canton image is enterprise or not"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"jsonapi":{"type":"boolean"},"jsonapiImage":{"type":"string"},"privateJsonapi":{"type":"boolean"},"jsonapiQueryStore":{"type":"boolean"},"exposeLedgerApi":{"type":"boolean"},"ledgerAddress":{"type":"string"},"ledgerPort":{"type":"string","minLength":1},"logLevel":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]},"name":{"type":"string","minLength":1},"navigator":{"type":"boolean"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"storage":{"$ref":"#/components/schemas/StorageDto"},"topology":{"type":"string"},"validatorParent":{"type":"string"},"enableKms":{"type":"boolean"},"kmsValue":{"type":"string"},"kmsServiceAccount":{"type":"string"}},"required":["adminPort","authProvider","image","ledgerPort","name"]},"AuthorizationDto":{"type":"object","description":"Credential and OIDC client descriptor used to obtain tokens for a Canton participant: client id / secret, username / password and JWKS URL.","properties":{"clientId":{"type":"string"},"clientSecret":{"type":"string"},"jwksUrl":{"type":"string"},"password":{"type":"string"},"username":{"type":"string"},"audience":{"type":"string"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"StorageDto":{"type":"object","description":"Persistent storage configuration: type (in-cluster or external Postgres), size, backup size and connection credentials when external.","properties":{"backupSize":{"type":"string"},"hostname":{"type":"string"},"password":{"type":"string"},"port":{"type":"string"},"size":{"type":"string"},"type":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]},"user":{"type":"string"}}}}},"paths":{"/participants/{name}":{"get":{"tags":["participant-controller"],"summary":"Get participant","description":"Returns the configuration and current lifecycle phase of a single participant, including storage, ports, ledger/admin addresses, authorization and resource settings.","operationId":"getParticipant","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant to fetch.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ParticipantDto"}}}},"400":{"description":"The participant name failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ParticipantDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete participant

> Removes the participant Custom Resource together with its database secret, Keycloak client scopes and any cached local-party state. The underlying Kubernetes workload is torn down asynchronously by the operator.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-controller","description":"Create, list, edit and remove Canton participant deployments, and read their configuration."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/participants/{name}":{"delete":{"tags":["participant-controller"],"summary":"Delete participant","description":"Removes the participant Custom Resource together with its database secret, Keycloak client scopes and any cached local-party state. The underlying Kubernetes workload is torn down asynchronously by the operator.","operationId":"deleteParticipant","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant to delete.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The participant name failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Check status of a participant

> Queries the participant's admin API and returns its live runtime status, including whether it is initialized, active and connected to its sync domains. The participant is selected dynamically depending on whether it is a Canton or validator-backed participant.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-status-controller","description":"Inspect the runtime status of a Canton participant (health, sync state, connected domains)."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ParticipantStatusDto":{"type":"object","description":"Runtime status of a Canton participant: active flag, id, uptime and the lists of currently connected and unhealthy sync domains.","properties":{"active":{"type":"boolean"},"connectedDomains":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"unhealthyDomains":{"type":"array","items":{"type":"string"}},"uptime":{"type":"integer","format":"int64"}}}}},"paths":{"/participants/{name}/status":{"get":{"tags":["participant-status-controller"],"summary":"Check status of a participant","description":"Queries the participant's admin API and returns its live runtime status, including whether it is initialized, active and connected to its sync domains. The participant is selected dynamically depending on whether it is a Canton or validator-backed participant.","operationId":"getParticipantHealthStatus","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant to query.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"port","in":"query","description":"Admin gRPC port on which to contact the participant.","required":false,"schema":{"type":"integer","format":"int32","default":5019}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ParticipantStatusDto"}}}},"400":{"description":"The participant name or port failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ParticipantStatusDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## List backup files available for restore

> Lists the backup files in the participant's backup location that can be used as the source for a restore. Names returned here can be passed to the create restore endpoint.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-restore-controller","description":"Restore a Canton participant from a previously created backup."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"BackupHistoryDto":{"type":"object","description":"Entry in the backup history of a Canton workload describing a single backup artifact: file name, size in bytes, status of the backup operation and the timestamp at which it was produced.","properties":{"filename":{"type":"string"},"size":{"type":"integer","format":"int32","description":"File size in bytes"},"status":{"type":"string"},"timestamp":{"type":"string"}}}}},"paths":{"/participants/{name}/restore/listFiles":{"get":{"tags":["participant-restore-controller"],"summary":"List backup files available for restore","description":"Lists the backup files in the participant's backup location that can be used as the source for a restore. Names returned here can be passed to the create restore endpoint.","operationId":"getParticipantRestoreFiles","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant whose available backup files to list.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BackupHistoryDto"}}}}},"400":{"description":"The participant name failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BackupHistoryDto"}}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get participant restore history

> Returns the history of restore operations previously executed for the participant, including their source backup file, completion time and final status.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-restore-controller","description":"Restore a Canton participant from a previously created backup."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RestoreHistoryDto":{"type":"object","description":"Single entry in a restore history: filename, status, timestamp and any log captured during the restore.","properties":{"filename":{"type":"string"},"log":{"type":"string"},"status":{"type":"string"},"timestamp":{"type":"string"}}}}},"paths":{"/participants/{name}/restore/history":{"get":{"tags":["participant-restore-controller"],"summary":"Get participant restore history","description":"Returns the history of restore operations previously executed for the participant, including their source backup file, completion time and final status.","operationId":"getParticipantRestoreHistory","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant whose restore history to fetch.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RestoreHistoryDto"}}}}},"400":{"description":"The participant name failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RestoreHistoryDto"}}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## List local parties

> Returns the cached view of parties hosted on the given participant, along with the status of the latest background refresh. The data is served from CBM's in-memory cache and may lag the ledger; use the fetch endpoint to force a refresh.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"local-party-controller","description":"Fetch and synchronise local parties hosted on a Canton participant."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"LocalPartyListingDTO":{"type":"object","description":"Local-party listing for a participant: the in-progress fetch flag and the currently-known list of party identifiers.","properties":{"fetching":{"type":"boolean"},"parties":{"type":"array","items":{"type":"string"}}}}}},"paths":{"/participants/{name}/parties/local":{"get":{"tags":["local-party-controller"],"summary":"List local parties","description":"Returns the cached view of parties hosted on the given participant, along with the status of the latest background refresh. The data is served from CBM's in-memory cache and may lag the ledger; use the fetch endpoint to force a refresh.","operationId":"getLocalParties","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant whose local parties to list.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LocalPartyListingDTO"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get participant backup history

> Returns the list of previously produced backup files for the participant, as reported by the backup CronJob's history, including their filenames and creation timestamps.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"participant-backup-controller","description":"Trigger participant backups, browse backup history and manage scheduled participant backups."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"BackupHistoryDto":{"type":"object","description":"Entry in the backup history of a Canton workload describing a single backup artifact: file name, size in bytes, status of the backup operation and the timestamp at which it was produced.","properties":{"filename":{"type":"string"},"size":{"type":"integer","format":"int32","description":"File size in bytes"},"status":{"type":"string"},"timestamp":{"type":"string"}}}}},"paths":{"/participants/{name}/backup/history":{"get":{"tags":["participant-backup-controller"],"summary":"Get participant backup history","description":"Returns the list of previously produced backup files for the participant, as reported by the backup CronJob's history, including their filenames and creation timestamps.","operationId":"getParticipantBackupHistory","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the participant whose backup history to fetch.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BackupHistoryDto"}}}}},"400":{"description":"The participant name failed validation.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No participant with the given name exists.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BackupHistoryDto"}}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get cluster observability information

> Returns information about the cluster-level observability stack, in particular the URL of the cluster dashboard used to inspect metrics and health of managed workloads.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"observability-controller","description":"Expose observability data such as metrics endpoints for the managed workloads."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ClusterInformationDto":{"type":"object","description":"Connection metadata describing the Canton / Splice cluster CBM is attached to (URL of the cluster control plane).","properties":{"url":{"type":"string"}}}}},"paths":{"/observability/cluster":{"get":{"tags":["observability-controller"],"summary":"Get cluster observability information","description":"Returns information about the cluster-level observability stack, in particular the URL of the cluster dashboard used to inspect metrics and health of managed workloads.","operationId":"getCluster","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ClusterInformationDto"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Fetch a window of log lines for a node

> Returns up to numLogs parsed log lines around the given reference timestamp, filtered by minimum log level and a free-text filter. Use prevLogs to fetch lines older than the reference timestamp.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"log-controller","description":"Stream pod logs and adjust log levels at runtime for the managed workloads."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"LogLineDto":{"type":"object","description":"Single Canton-formatted log line: parsed timestamp, log level and message content.","properties":{"content":{"type":"string"},"level":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]},"timeStamp":{"type":"string"}}}}},"paths":{"/logs/{name}":{"get":{"tags":["log-controller"],"summary":"Fetch a window of log lines for a node","description":"Returns up to numLogs parsed log lines around the given reference timestamp, filtered by minimum log level and a free-text filter. Use prevLogs to fetch lines older than the reference timestamp.","operationId":"printLogs","parameters":[{"name":"name","in":"path","description":"Name of the Canton node whose logs should be returned","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"referenceTimestamp","in":"query","description":"Reference timestamp (ISO-8601) used as the anchor of the log window","required":true,"schema":{"type":"string"}},{"name":"prevLogs","in":"query","description":"If true, fetch lines older than the reference timestamp; otherwise newer","required":true,"schema":{"type":"boolean"}},{"name":"numLogs","in":"query","description":"Number of log lines to return (between 20 and 100)","required":true,"schema":{"type":"integer","format":"int32","maximum":100,"minimum":20}},{"name":"level","in":"query","description":"Minimum log level to include","required":true,"schema":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]}},{"name":"filter","in":"query","description":"Free-text substring filter applied to log messages","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LogLineDto"}}}}},"400":{"description":"Invalid node name or query parameters","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"Node or its pod not found","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LogLineDto"}}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Download node logs as a streamed file

> Streams up to tailLines most recent log lines from the node's pod as a plain text attachment. When previous=true, logs are pulled from the previously terminated container instance. The response uses a streaming body so the connection remains open while logs are written.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"log-controller","description":"Stream pod logs and adjust log levels at runtime for the managed workloads."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"StreamingResponseBody":{}}},"paths":{"/logs/{name}/download":{"get":{"tags":["log-controller"],"summary":"Download node logs as a streamed file","description":"Streams up to tailLines most recent log lines from the node's pod as a plain text attachment. When previous=true, logs are pulled from the previously terminated container instance. The response uses a streaming body so the connection remains open while logs are written.","operationId":"downloadLogs","parameters":[{"name":"name","in":"path","description":"Name of the Canton node whose logs should be downloaded","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"tailLines","in":"query","description":"Number of most recent log lines to include (100-100000, default 10000)","required":false,"schema":{"type":"integer","format":"int32","default":10000,"maximum":100000,"minimum":100}},{"name":"previous","in":"query","description":"If true, fetch logs from the previous (terminated) container instance","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"400":{"description":"Invalid node name or query parameters","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"Node, pod or previous container instance not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/StreamingResponseBody"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## List all identity dumps

> Returns identity dump secrets for every validator managed by this CBM, across all validators.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-id-dumps-controller","description":"Trigger and schedule validator identity dump jobs and download their artifacts."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"IdDumpDto":{"type":"object","description":"Identity-dump artifact metadata: name of the Kubernetes secret holding the dump, the owning validator name and the timestamp at which it was captured.","properties":{"secretName":{"type":"string"},"validatorName":{"type":"string"},"timestamp":{"type":"integer","format":"int64"},"createdAt":{"type":"string"}}}}},"paths":{"/id-dumps":{"get":{"tags":["validator-id-dumps-controller"],"summary":"List all identity dumps","description":"Returns identity dump secrets for every validator managed by this CBM, across all validators.","operationId":"listAllParticipantIdentityDumps","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IdDumpDto"}}}}},"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## List available health dump files on a node

> Returns the names of health dump files that currently exist on the target node and can be downloaded via the download endpoint.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"health-dump-controller","description":"Trigger and download Canton health dumps for diagnostic purposes."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/health-dumps/{name}":{"get":{"tags":["health-dump-controller"],"summary":"List available health dump files on a node","description":"Returns the names of health dump files that currently exist on the target node and can be downloaded via the download endpoint.","operationId":"listHealthDumpFiles","parameters":[{"name":"name","in":"path","description":"Name of the Canton node whose health dump files should be listed","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"string"}}}}},"400":{"description":"Invalid node name","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"Node not found","content":{"*/*":{"schema":{"type":"array","items":{"type":"string"}}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Generate and download a node health dump

> Triggers the Canton health dump command on the target node and returns the resulting diagnostics file as an application/octet-stream attachment. The version of the health dump API used depends on whether the node is a validator (V3) or a classic Canton node (V0).

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"health-dump-controller","description":"Trigger and download Canton health dumps for diagnostic purposes."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/health-dumps/{name}/execute":{"get":{"tags":["health-dump-controller"],"summary":"Generate and download a node health dump","description":"Triggers the Canton health dump command on the target node and returns the resulting diagnostics file as an application/octet-stream attachment. The version of the health dump API used depends on whether the node is a validator (V3) or a classic Canton node (V0).","operationId":"executeHealthDump","parameters":[{"name":"name","in":"path","description":"Name of the Canton node to generate a health dump for","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid node name","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"Node not found","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"500":{"description":"Internal server error while creating or writing health dump file","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Download an existing health dump file

> Streams a previously generated health dump file from the target node by its path as an application/octet-stream attachment.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"health-dump-controller","description":"Trigger and download Canton health dumps for diagnostic purposes."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/health-dumps/{name}/download":{"get":{"tags":["health-dump-controller"],"summary":"Download an existing health dump file","description":"Streams a previously generated health dump file from the target node by its path as an application/octet-stream attachment.","operationId":"getHealthDumpFile","parameters":[{"name":"name","in":"path","description":"Name of the Canton node that owns the health dump file","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"filePath","in":"query","description":"Path of the health dump file on the node to download","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid node name or file path","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"Node or health dump file not found","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Download a stored file

> Returns the raw binary contents of a previously uploaded file of the given type as an application/octet-stream response.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"file-storage-controller","description":"Upload, list and remove files used by validators, participants and domains (DAR packages, identity dumps, configuration archives, …)."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/files/{name}":{"get":{"tags":["file-storage-controller"],"summary":"Download a stored file","description":"Returns the raw binary contents of a previously uploaded file of the given type as an application/octet-stream response.","operationId":"getFile","parameters":[{"name":"name","in":"path","description":"Name of the file to download","required":true,"schema":{"type":"string"}},{"name":"fileType","in":"query","description":"Type/category of the file to download","required":true,"schema":{"type":"string","enum":["DAR","UI_PACKAGE"]}}],"responses":{"200":{"description":"OK","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid file name or type","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"File not found in storage","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete a stored file

> Removes a previously uploaded file of the given type from server-side storage.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"file-storage-controller","description":"Upload, list and remove files used by validators, participants and domains (DAR packages, identity dumps, configuration archives, …)."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/files/{name}":{"delete":{"tags":["file-storage-controller"],"summary":"Delete a stored file","description":"Removes a previously uploaded file of the given type from server-side storage.","operationId":"deleteFile","parameters":[{"name":"name","in":"path","description":"Name of the file to delete","required":true,"schema":{"type":"string"}},{"name":"fileType","in":"query","description":"Type/category of the file to delete","required":true,"schema":{"type":"string","enum":["DAR","UI_PACKAGE"]}}],"responses":{"204":{"description":"No Content"},"400":{"description":"Invalid file name or type","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"File not found in storage"},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get a sync domain by name

> Returns the full DTO of a single sync domain, including its current phase, storage configuration, resources, and topology.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-controller","description":"Create, list, edit and remove Canton sync domains, and read their configuration."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DomainDto":{"type":"object","description":"Canton sync domain definition: name, container image, log level, admin / public endpoints and Canton-specific bootstrap settings used to provision a single-replica sync domain.","properties":{"adminAddress":{"type":"string"},"adminPort":{"type":"string","minLength":1},"bootstrap":{"type":"string"},"daemon":{"type":"boolean"},"enterprise":{"type":"boolean","description":"Whether the canton image is enterprise or not"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"ingress":{"type":"boolean"},"logLevel":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"publicAddress":{"type":"string"},"publicPort":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"storage":{"$ref":"#/components/schemas/StorageDto"},"topology":{"type":"string"}},"required":["adminPort","image","name","publicPort"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"StorageDto":{"type":"object","description":"Persistent storage configuration: type (in-cluster or external Postgres), size, backup size and connection credentials when external.","properties":{"backupSize":{"type":"string"},"hostname":{"type":"string"},"password":{"type":"string"},"port":{"type":"string"},"size":{"type":"string"},"type":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]},"user":{"type":"string"}}}}},"paths":{"/domains/{name}":{"get":{"tags":["domain-controller"],"summary":"Get a sync domain by name","description":"Returns the full DTO of a single sync domain, including its current phase, storage configuration, resources, and topology.","operationId":"getDomain","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainDto"}}}},"400":{"description":"The supplied domain name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No sync domain exists with the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete a sync domain

> Removes the sync domain Kubernetes resource and its associated database secret. The underlying resources are cleaned up asynchronously by the operator.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-controller","description":"Create, list, edit and remove Canton sync domains, and read their configuration."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/domains/{name}":{"delete":{"tags":["domain-controller"],"summary":"Delete a sync domain","description":"Removes the sync domain Kubernetes resource and its associated database secret. The underlying resources are cleaned up asynchronously by the operator.","operationId":"deleteDomain","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain to delete.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The supplied domain name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No sync domain exists with the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Check status of a domain

> Queries the live admin API of the sync domain and returns its current health and runtime status. The domain pod must be reachable for the call to succeed.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-status-controller","description":"Inspect the runtime status of a Canton sync domain."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DomainStatusDto":{"type":"object","description":"Runtime status of a single-replica sync domain: active flag, id, uptime, sequencer state and the list of currently connected participants.","properties":{"active":{"type":"boolean"},"connectedParticipants":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"sequencer":{"$ref":"#/components/schemas/SequencerDto"},"uptime":{"type":"integer","format":"int64"}}},"SequencerDto":{"type":"object","description":"Compact status of a Canton sequencer: active flag and free-form details string.","properties":{"active":{"type":"boolean"},"details":{"type":"string"}}}}},"paths":{"/domains/{name}/status":{"get":{"tags":["domain-status-controller"],"summary":"Check status of a domain","description":"Queries the live admin API of the sync domain and returns its current health and runtime status. The domain pod must be reachable for the call to succeed.","operationId":"getDomainHealthStatus","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"port","in":"query","description":"Admin gRPC port of the domain to query; defaults to the standard admin port.","required":false,"schema":{"type":"integer","format":"int32","default":5019}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainStatusDto"}}}},"400":{"description":"The supplied domain name or port is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No sync domain exists with the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainStatusDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## List available backup files for restore

> Returns the list of backup artifacts currently available on the domain's backup storage. Any returned file name can be used as the source of a restore job.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-restore-controller","description":"Restore a Canton sync domain from a previously created backup."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"BackupHistoryDto":{"type":"object","description":"Entry in the backup history of a Canton workload describing a single backup artifact: file name, size in bytes, status of the backup operation and the timestamp at which it was produced.","properties":{"filename":{"type":"string"},"size":{"type":"integer","format":"int32","description":"File size in bytes"},"status":{"type":"string"},"timestamp":{"type":"string"}}}}},"paths":{"/domains/{name}/restore/listFiles":{"get":{"tags":["domain-restore-controller"],"summary":"List available backup files for restore","description":"Returns the list of backup artifacts currently available on the domain's backup storage. Any returned file name can be used as the source of a restore job.","operationId":"getDomainRestoreFiles","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain whose backup files should be listed.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BackupHistoryDto"}}}}},"400":{"description":"The supplied domain name is invalid or backup is not supported.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No sync domain exists with the given name.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BackupHistoryDto"}}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get domain restore history

> Returns the history of past restore runs for the sync domain, including the status and metadata of each completed or failed attempt.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-restore-controller","description":"Restore a Canton sync domain from a previously created backup."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"RestoreHistoryDto":{"type":"object","description":"Single entry in a restore history: filename, status, timestamp and any log captured during the restore.","properties":{"filename":{"type":"string"},"log":{"type":"string"},"status":{"type":"string"},"timestamp":{"type":"string"}}}}},"paths":{"/domains/{name}/restore/history":{"get":{"tags":["domain-restore-controller"],"summary":"Get domain restore history","description":"Returns the history of past restore runs for the sync domain, including the status and metadata of each completed or failed attempt.","operationId":"getDomainRestoreHistory","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain to query history for.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RestoreHistoryDto"}}}}},"400":{"description":"The supplied domain name is invalid or backup is not supported.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No sync domain exists with the given name.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RestoreHistoryDto"}}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get domain backup history

> Returns the history of past backup runs for the sync domain, including status and metadata for each produced artifact.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-backup-controller","description":"Trigger domain backups, browse backup history and manage scheduled domain backups."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"BackupHistoryDto":{"type":"object","description":"Entry in the backup history of a Canton workload describing a single backup artifact: file name, size in bytes, status of the backup operation and the timestamp at which it was produced.","properties":{"filename":{"type":"string"},"size":{"type":"integer","format":"int32","description":"File size in bytes"},"status":{"type":"string"},"timestamp":{"type":"string"}}}}},"paths":{"/domains/{name}/backup/history":{"get":{"tags":["domain-backup-controller"],"summary":"Get domain backup history","description":"Returns the history of past backup runs for the sync domain, including status and metadata for each produced artifact.","operationId":"getDomainBackupHistory","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the sync domain to query history for.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BackupHistoryDto"}}}}},"400":{"description":"The supplied domain name is invalid or backup is not supported.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No sync domain exists with the given name.","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BackupHistoryDto"}}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get a HA sync domain by name

> Returns the full DTO of a single HA sync domain, including replication configuration and the current phase.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-ha-controller","description":"Configure and inspect high-availability settings of a Canton sync domain."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"DomainHADto":{"type":"object","description":"High-availability sync domain definition: per-component (sequencer, mediator, topology manager) specifications plus in-cluster or external storage settings.","properties":{"name":{"type":"string","maxLength":15,"minLength":2},"defaults":{"$ref":"#/components/schemas/DefaultsDto"},"sequencer":{"$ref":"#/components/schemas/SequencerSpecDto"},"mediator":{"$ref":"#/components/schemas/MediatorSpecDto"},"topologyManager":{"$ref":"#/components/schemas/TopologyManagerSpecDto"},"externalStorage":{"$ref":"#/components/schemas/ExternalStorageSpecDto"},"inClusterStorage":{"$ref":"#/components/schemas/InClusterStorageSpecDto"},"validStorage":{"type":"boolean"}},"required":["defaults","mediator","name","sequencer","topologyManager"]},"DefaultsDto":{"type":"object","properties":{"image":{"$ref":"#/components/schemas/ImageDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"}},"required":["image"]},"ImageDto":{"type":"object","description":"Container image reference: registry, repository, tag and the Kubernetes pull secret used to fetch it.","properties":{"registry":{"type":"string","minLength":1},"repository":{"type":"string","minLength":1},"tag":{"type":"string","minLength":1},"pullSecretName":{"type":"string"}},"required":["registry","repository","tag"]},"CantonFlagsDto":{"type":"object","description":"Runtime log-level flags for a Canton workload (root, Canton-specific and stdout log levels).","properties":{"logLevelRoot":{"type":"string"},"logLevelCanton":{"type":"string"},"logLevelStdout":{"type":"string"}}},"SequencerSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"ingress":{"$ref":"#/components/schemas/SequencerIngressConfigDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"ResourceRequirementsDto":{"type":"object","description":"Kubernetes container resource requirements: limits and requests, each composed of CPU and memory values.","properties":{"limits":{"$ref":"#/components/schemas/ContainerResourcesDto"},"requests":{"$ref":"#/components/schemas/ContainerResourcesDto"}},"required":["limits","requests"]},"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]},"SequencerIngressConfigDto":{"type":"object","description":"Per-sequencer ingress flags toggling exposure of the admin and public APIs.","properties":{"adminAPIEnabled":{"type":"boolean"},"publicAPIEnabled":{"type":"boolean"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ExternalStorageOverridesDto":{"type":"object","properties":{"schemaName":{"type":"string"},"dbName":{"type":"string"},"userUsername":{"type":"string"},"userPassword":{"type":"string"}}},"MediatorSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"TopologyManagerSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"ExternalStorageSpecDto":{"type":"object","properties":{"hostname":{"type":"string","minLength":1},"port":{"type":"integer","format":"int32"},"adminUsername":{"type":"string","minLength":1},"adminPassword":{"type":"string","minLength":1},"ssl":{"type":"boolean"},"maxConnections":{"type":"integer","format":"int32"},"schemaName":{"type":"string"}},"required":["adminPassword","adminUsername","hostname","port"]},"InClusterStorageSpecDto":{"type":"object","properties":{"storageSize":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"validStorageSize":{"type":"boolean"}},"required":["resources","storageSize"]}}},"paths":{"/domainha/{name}":{"get":{"tags":["domain-ha-controller"],"summary":"Get a HA sync domain by name","description":"Returns the full DTO of a single HA sync domain, including replication configuration and the current phase.","operationId":"get","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the HA sync domain.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainHADto"}}}},"400":{"description":"The supplied HA domain name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No HA sync domain exists with the given name.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DomainHADto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete a HA sync domain

> Removes the HA sync domain Kubernetes resource. The replicated components are torn down asynchronously by the operator.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"domain-ha-controller","description":"Configure and inspect high-availability settings of a Canton sync domain."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/domainha/{name}":{"delete":{"tags":["domain-ha-controller"],"summary":"Delete a HA sync domain","description":"Removes the HA sync domain Kubernetes resource. The replicated components are torn down asynchronously by the operator.","operationId":"delete","parameters":[{"name":"name","in":"path","description":"Kubernetes resource name of the HA sync domain to delete.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"The supplied HA domain name is invalid.","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No HA sync domain exists with the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get Canton console output for a node

> Returns the buffered Canton console (stdout) output collected from the pod backing the given node, useful for inspecting results of previously executed commands.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"log-controller","description":"Stream pod logs and adjust log levels at runtime for the managed workloads."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/console/{name}":{"get":{"tags":["log-controller"],"summary":"Get Canton console output for a node","description":"Returns the buffered Canton console (stdout) output collected from the pod backing the given node, useful for inspecting results of previously executed commands.","operationId":"printConsoleOutput","parameters":[{"name":"name","in":"path","description":"Name of the Canton node whose console output should be returned","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"type":"string"}}}}},"400":{"description":"Invalid node name","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"Node or its pod not found","content":{"*/*":{"schema":{"type":"array","items":{"type":"string"}}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Get an application by name

> Returns the current spec and status of the application identified by the given name.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"application-controller","description":"Manage generic CBM-deployed applications and their lifecycle."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"ApplicationDto":{"type":"object","description":"Generic CBM-deployed application: name, container image, port, package, parent validator and Kubernetes resource requirements; used both as a request and a response body on the applications endpoints.","properties":{"domain":{"type":"string","minLength":1},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string"},"name":{"type":"string","minLength":1},"packageName":{"type":"string"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"port":{"type":"integer","format":"int32"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"type":{"type":"string","enum":["BACKEND","UI"]},"validatorParent":{"type":"string"}},"required":["domain","name","type"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}},"paths":{"/applications/{name}":{"get":{"tags":["application-controller"],"summary":"Get an application by name","description":"Returns the current spec and status of the application identified by the given name.","operationId":"getApplication","parameters":[{"name":"name","in":"path","description":"Name of the application to retrieve","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApplicationDto"}}}},"400":{"description":"Invalid application name","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"Application not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApplicationDto"}}}},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete an application

> Removes the application CRD identified by name and cleans up any associated auth provider clients (e.g. Keycloak) that were created for it.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"application-controller","description":"Manage generic CBM-deployed applications and their lifecycle."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/applications/{name}":{"delete":{"tags":["application-controller"],"summary":"Delete an application","description":"Removes the application CRD identified by name and cleans up any associated auth provider clients (e.g. Keycloak) that were created for it.","operationId":"deleteApplication","parameters":[{"name":"name","in":"path","description":"Name of the application to delete","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"Invalid application name","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"Application not found"},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete all identity dumps

> Removes every identity dump secret currently stored for the validator. The schedule (if any) is not affected.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-id-dumps-controller","description":"Trigger and schedule validator identity dump jobs and download their artifacts."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/id-dumps/{validatorName}/dumps":{"delete":{"tags":["validator-id-dumps-controller"],"summary":"Delete all identity dumps","description":"Removes every identity dump secret currently stored for the validator. The schedule (if any) is not affected.","operationId":"deleteAllIdentityDumps","parameters":[{"name":"validatorName","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator exists with the given name."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## Delete a single identity dump

> Removes a single identity dump secret belonging to the validator, identified by the secret's name. Other dumps and the schedule are left untouched.

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"tags":[{"name":"validator-id-dumps-controller","description":"Trigger and schedule validator identity dump jobs and download their artifacts."}],"servers":[{"url":"http://localhost:8080/api","description":"Generated server url"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","description":"Bearer JWT issued by the configured OAuth2 / OIDC provider (typically Keycloak or Auth0). Pass as `Authorization: Bearer <access_token>`.","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}},"paths":{"/id-dumps/{validatorName}/dumps/{secretName}":{"delete":{"tags":["validator-id-dumps-controller"],"summary":"Delete a single identity dump","description":"Removes a single identity dump secret belonging to the validator, identified by the secret's name. Other dumps and the schedule are left untouched.","operationId":"deleteIdentityDump","parameters":[{"name":"validatorName","in":"path","description":"Kubernetes resource name of the validator.","required":true,"schema":{"type":"string","maxLength":47,"minLength":1,"pattern":"[a-z]([-a-z0-9]*[a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*"}},{"name":"secretName","in":"path","description":"Name of the Kubernetes secret holding the identity dump to delete.","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"No Content"},"400":{"description":"Bad Request","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"object"}}}},"404":{"description":"No validator or identity dump secret matches the given names."},"500":{"description":"Internal Server Error","content":{"*/*":{"schema":{"type":"object"}}}}}}}}}
```

## The AppInfoEditDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"AppInfoEditDto":{"type":"object","description":"Partial update payload for an application component's deployment metadata; non-null fields replace the existing values and `envVarsDelete` removes specific variables.","properties":{"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"envVarsDelete":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"resources":{"$ref":"#/components/schemas/ResourcesDto"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}}}
```

## The ClusterConfigEditDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ClusterConfigEditDto":{"type":"object","properties":{"scanAddress":{"type":"string"},"contactPoint":{"type":"string"},"migration":{"$ref":"#/components/schemas/MigrationDto"},"topUp":{"$ref":"#/components/schemas/TopUpDto"},"appInfoValidator":{"$ref":"#/components/schemas/AppInfoEditDto"},"appInfoCantonNameService":{"$ref":"#/components/schemas/AppInfoEditDto"},"appInfoWallet":{"$ref":"#/components/schemas/AppInfoEditDto"},"disableProbes":{"type":"boolean"},"walletSweeps":{"type":"array","items":{"$ref":"#/components/schemas/WalletSweepDto"}}},"required":["migration"]},"MigrationDto":{"type":"object","properties":{"id":{"type":"integer","format":"int32","minimum":0},"migrating":{"type":"boolean"}},"required":["id"]},"TopUpDto":{"type":"object","properties":{"enable":{"type":"boolean"},"minTopupInterval":{"type":"string"},"targetThroughput":{"type":"integer","format":"int32"}}},"AppInfoEditDto":{"type":"object","description":"Partial update payload for an application component's deployment metadata; non-null fields replace the existing values and `envVarsDelete` removes specific variables.","properties":{"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"envVarsDelete":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"resources":{"$ref":"#/components/schemas/ResourcesDto"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"WalletSweepDto":{"type":"object","properties":{"senderPartyId":{"type":"string","minLength":1},"receiverPartyId":{"type":"string","minLength":1},"maxBalanceUSD":{"type":"string","minLength":1},"minBalanceUSD":{"type":"string","minLength":1},"useTransferPreapproval":{"type":"boolean"}},"required":["maxBalanceUSD","minBalanceUSD","receiverPartyId","senderPartyId","useTransferPreapproval"]}}}}
```

## The ConfigMapVolumeSource object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ConfigMapVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean"}}},"KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","format":"int32"},"path":{"type":"string"}}}}}}
```

## The EmptyDirVolumeSource object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"EmptyDirVolumeSource":{"type":"object","properties":{"medium":{"type":"string"},"sizeLimit":{"$ref":"#/components/schemas/Quantity"}}},"Quantity":{"type":"object","properties":{"amount":{"type":"string"},"format":{"type":"string"}}}}}}
```

## The EnvVar object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}}}}}
```

## The EnvVarSource object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}}}}}
```

## The HostPathVolumeSource object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"HostPathVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string"}}}}}}
```

## The KeyToPath object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","format":"int32"},"path":{"type":"string"}}}}}}
```

## The MigrationDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"MigrationDto":{"type":"object","properties":{"id":{"type":"integer","format":"int32","minimum":0},"migrating":{"type":"boolean"}},"required":["id"]}}}}
```

## The PersistentVolumeClaimVolumeSource object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"PersistentVolumeClaimVolumeSource":{"type":"object","properties":{"claimName":{"type":"string"},"readOnly":{"type":"boolean"}}}}}}
```

## The PostgresConfigDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"PostgresConfigDto":{"type":"object","description":"Postgres deployment configuration consumed by a participant or domain: container image, JVM args, resources and any extra volumes / volume mounts.","properties":{"args":{"type":"array","items":{"type":"string"}},"image":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/Volume"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/VolumeMount"}}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"Volume":{"type":"object","properties":{"name":{"type":"string"},"emptyDir":{"$ref":"#/components/schemas/EmptyDirVolumeSource"},"configMap":{"$ref":"#/components/schemas/ConfigMapVolumeSource"},"persistentVolumeClaim":{"$ref":"#/components/schemas/PersistentVolumeClaimVolumeSource"},"secret":{"$ref":"#/components/schemas/SecretVolumeSource"},"hostPath":{"$ref":"#/components/schemas/HostPathVolumeSource"}}},"EmptyDirVolumeSource":{"type":"object","properties":{"medium":{"type":"string"},"sizeLimit":{"$ref":"#/components/schemas/Quantity"}}},"Quantity":{"type":"object","properties":{"amount":{"type":"string"},"format":{"type":"string"}}},"ConfigMapVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean"}}},"KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","format":"int32"},"path":{"type":"string"}}},"PersistentVolumeClaimVolumeSource":{"type":"object","properties":{"claimName":{"type":"string"},"readOnly":{"type":"boolean"}}},"SecretVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"optional":{"type":"boolean"},"secretName":{"type":"string"}}},"HostPathVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string"}}},"VolumeMount":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"subPath":{"type":"string"},"readOnly":{"type":"boolean"}}}}}}
```

## The Quantity object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"Quantity":{"type":"object","properties":{"amount":{"type":"string"},"format":{"type":"string"}}}}}}
```

## The ResourcesDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}}}
```

## The SecretKeySelector object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}}}}}
```

## The SecretVolumeSource object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"SecretVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"optional":{"type":"boolean"},"secretName":{"type":"string"}}},"KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","format":"int32"},"path":{"type":"string"}}}}}}
```

## The TopUpDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"TopUpDto":{"type":"object","properties":{"enable":{"type":"boolean"},"minTopupInterval":{"type":"string"},"targetThroughput":{"type":"integer","format":"int32"}}}}}}
```

## The ValidatorDbConfigDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ValidatorDbConfigDto":{"type":"object","description":"Database configuration for a Splice validator: whether an external Postgres is used and, if so, its connection credentials.","properties":{"external":{"type":"boolean"},"username":{"type":"string"},"password":{"type":"string"},"hostname":{"type":"string"},"port":{"type":"string"}}}}}}
```

## The ValidatorEditDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ValidatorEditDto":{"type":"object","description":"Partial update payload for a Splice validator. Non-null fields replace the corresponding section of the existing validator; null fields are left unchanged. Includes a `cleanRestoreData` flag and toggles for ledger-API exposure.","properties":{"clusterConfig":{"$ref":"#/components/schemas/ClusterConfigEditDto"},"imageRepo":{"type":"string"},"imageTag":{"type":"string"},"name":{"type":"string"},"databaseStorage":{"type":"string"},"participant":{"$ref":"#/components/schemas/AppInfoEditDto"},"cleanRestoreData":{"type":"boolean"},"exposeLedgerApi":{"type":"boolean"},"privateJsonApi":{"type":"boolean"},"databaseConfig":{"$ref":"#/components/schemas/ValidatorDbConfigDto"},"postgresConfig":{"$ref":"#/components/schemas/PostgresConfigDto"}}},"ClusterConfigEditDto":{"type":"object","properties":{"scanAddress":{"type":"string"},"contactPoint":{"type":"string"},"migration":{"$ref":"#/components/schemas/MigrationDto"},"topUp":{"$ref":"#/components/schemas/TopUpDto"},"appInfoValidator":{"$ref":"#/components/schemas/AppInfoEditDto"},"appInfoCantonNameService":{"$ref":"#/components/schemas/AppInfoEditDto"},"appInfoWallet":{"$ref":"#/components/schemas/AppInfoEditDto"},"disableProbes":{"type":"boolean"},"walletSweeps":{"type":"array","items":{"$ref":"#/components/schemas/WalletSweepDto"}}},"required":["migration"]},"MigrationDto":{"type":"object","properties":{"id":{"type":"integer","format":"int32","minimum":0},"migrating":{"type":"boolean"}},"required":["id"]},"TopUpDto":{"type":"object","properties":{"enable":{"type":"boolean"},"minTopupInterval":{"type":"string"},"targetThroughput":{"type":"integer","format":"int32"}}},"AppInfoEditDto":{"type":"object","description":"Partial update payload for an application component's deployment metadata; non-null fields replace the existing values and `envVarsDelete` removes specific variables.","properties":{"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"envVarsDelete":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"resources":{"$ref":"#/components/schemas/ResourcesDto"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"WalletSweepDto":{"type":"object","properties":{"senderPartyId":{"type":"string","minLength":1},"receiverPartyId":{"type":"string","minLength":1},"maxBalanceUSD":{"type":"string","minLength":1},"minBalanceUSD":{"type":"string","minLength":1},"useTransferPreapproval":{"type":"boolean"}},"required":["maxBalanceUSD","minBalanceUSD","receiverPartyId","senderPartyId","useTransferPreapproval"]},"ValidatorDbConfigDto":{"type":"object","description":"Database configuration for a Splice validator: whether an external Postgres is used and, if so, its connection credentials.","properties":{"external":{"type":"boolean"},"username":{"type":"string"},"password":{"type":"string"},"hostname":{"type":"string"},"port":{"type":"string"}}},"PostgresConfigDto":{"type":"object","description":"Postgres deployment configuration consumed by a participant or domain: container image, JVM args, resources and any extra volumes / volume mounts.","properties":{"args":{"type":"array","items":{"type":"string"}},"image":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/Volume"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/VolumeMount"}}}},"Volume":{"type":"object","properties":{"name":{"type":"string"},"emptyDir":{"$ref":"#/components/schemas/EmptyDirVolumeSource"},"configMap":{"$ref":"#/components/schemas/ConfigMapVolumeSource"},"persistentVolumeClaim":{"$ref":"#/components/schemas/PersistentVolumeClaimVolumeSource"},"secret":{"$ref":"#/components/schemas/SecretVolumeSource"},"hostPath":{"$ref":"#/components/schemas/HostPathVolumeSource"}}},"EmptyDirVolumeSource":{"type":"object","properties":{"medium":{"type":"string"},"sizeLimit":{"$ref":"#/components/schemas/Quantity"}}},"Quantity":{"type":"object","properties":{"amount":{"type":"string"},"format":{"type":"string"}}},"ConfigMapVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean"}}},"KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","format":"int32"},"path":{"type":"string"}}},"PersistentVolumeClaimVolumeSource":{"type":"object","properties":{"claimName":{"type":"string"},"readOnly":{"type":"boolean"}}},"SecretVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"optional":{"type":"boolean"},"secretName":{"type":"string"}}},"HostPathVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string"}}},"VolumeMount":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"subPath":{"type":"string"},"readOnly":{"type":"boolean"}}}}}}
```

## The Volume object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"Volume":{"type":"object","properties":{"name":{"type":"string"},"emptyDir":{"$ref":"#/components/schemas/EmptyDirVolumeSource"},"configMap":{"$ref":"#/components/schemas/ConfigMapVolumeSource"},"persistentVolumeClaim":{"$ref":"#/components/schemas/PersistentVolumeClaimVolumeSource"},"secret":{"$ref":"#/components/schemas/SecretVolumeSource"},"hostPath":{"$ref":"#/components/schemas/HostPathVolumeSource"}}},"EmptyDirVolumeSource":{"type":"object","properties":{"medium":{"type":"string"},"sizeLimit":{"$ref":"#/components/schemas/Quantity"}}},"Quantity":{"type":"object","properties":{"amount":{"type":"string"},"format":{"type":"string"}}},"ConfigMapVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean"}}},"KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","format":"int32"},"path":{"type":"string"}}},"PersistentVolumeClaimVolumeSource":{"type":"object","properties":{"claimName":{"type":"string"},"readOnly":{"type":"boolean"}}},"SecretVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"optional":{"type":"boolean"},"secretName":{"type":"string"}}},"HostPathVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string"}}}}}}
```

## The VolumeMount object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"VolumeMount":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"subPath":{"type":"string"},"readOnly":{"type":"boolean"}}}}}}
```

## The WalletSweepDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"WalletSweepDto":{"type":"object","properties":{"senderPartyId":{"type":"string","minLength":1},"receiverPartyId":{"type":"string","minLength":1},"maxBalanceUSD":{"type":"string","minLength":1},"minBalanceUSD":{"type":"string","minLength":1},"useTransferPreapproval":{"type":"boolean"}},"required":["maxBalanceUSD","minBalanceUSD","receiverPartyId","senderPartyId","useTransferPreapproval"]}}}}
```

## The ScheduledValidatorPruneDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ScheduledValidatorPruneDto":{"type":"object","properties":{"cron":{"type":"string"},"maxDuration":{"type":"string"},"retention":{"type":"string"},"nextRun":{"type":"string"}},"required":["cron","maxDuration","retention"]}}}}
```

## The ValidatorBackupDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ValidatorBackupDto":{"type":"object","description":"Request body to trigger or schedule a Splice validator backup: cron expression and retention limit.","properties":{"cron":{"type":"string"},"maxBackups":{"type":"integer","format":"int32","maximum":84,"minimum":2}},"required":["maxBackups"]}}}}
```

## The ScheduledValidatorBackupDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ScheduledValidatorBackupDto":{"type":"object","description":"Persisted backup schedule for a Splice validator: cron expression, retention limit and next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxBackups":{"type":"integer","format":"int32"},"nextRun":{"type":"string"}},"required":["cron"]}}}}
```

## The RemoteParticipantDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"RemoteParticipantDto":{"type":"object","description":"Externally-hosted Canton participant registered in CBM: admin / ledger / JSON-API endpoints, auth provider and identifying metadata.","properties":{"adminAddress":{"type":"string","minLength":1},"adminPort":{"type":"string","minLength":1},"authProvider":{"type":"string","enum":["keycloak","auth0","custom"]},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"jsonApiUrl":{"type":"string","minLength":1},"ledgerAddress":{"type":"string","minLength":1},"ledgerId":{"type":"string","minLength":1},"ledgerPort":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"v3":{"type":"boolean"}},"required":["adminAddress","adminPort","authProvider","image","jsonApiUrl","ledgerAddress","ledgerId","ledgerPort","name"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}}}
```

## The RemoteDomainDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"RemoteDomainDto":{"type":"object","description":"Externally-hosted sync domain registered in CBM: admin / public endpoints, image metadata and lifecycle phase.","properties":{"adminAddress":{"type":"string","minLength":1},"adminPort":{"type":"string","minLength":1},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"publicAddress":{"type":"string","minLength":1},"publicPort":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourcesDto"}},"required":["adminAddress","adminPort","image","name","publicAddress","publicPort"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}}}
```

## The AuthorizationDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"AuthorizationDto":{"type":"object","description":"Credential and OIDC client descriptor used to obtain tokens for a Canton participant: client id / secret, username / password and JWKS URL.","properties":{"clientId":{"type":"string"},"clientSecret":{"type":"string"},"jwksUrl":{"type":"string"},"password":{"type":"string"},"username":{"type":"string"},"audience":{"type":"string"}}}}}}
```

## The ParticipantDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ParticipantDto":{"type":"object","description":"Canton participant definition: container image, admin / ledger endpoints, authentication, postgres storage and Canton-specific settings used to provision a new participant deployment.","properties":{"adminAddress":{"type":"string"},"adminPort":{"type":"string","minLength":1},"auth":{"type":"boolean"},"authProvider":{"type":"string","enum":["keycloak","auth0","custom"]},"authorization":{"$ref":"#/components/schemas/AuthorizationDto"},"bootstrap":{"type":"string"},"daemon":{"type":"boolean"},"enterprise":{"type":"boolean","description":"Whether the canton image is enterprise or not"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"jsonapi":{"type":"boolean"},"jsonapiImage":{"type":"string"},"privateJsonapi":{"type":"boolean"},"jsonapiQueryStore":{"type":"boolean"},"exposeLedgerApi":{"type":"boolean"},"ledgerAddress":{"type":"string"},"ledgerPort":{"type":"string","minLength":1},"logLevel":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]},"name":{"type":"string","minLength":1},"navigator":{"type":"boolean"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"storage":{"$ref":"#/components/schemas/StorageDto"},"topology":{"type":"string"},"validatorParent":{"type":"string"},"enableKms":{"type":"boolean"},"kmsValue":{"type":"string"},"kmsServiceAccount":{"type":"string"}},"required":["adminPort","authProvider","image","ledgerPort","name"]},"AuthorizationDto":{"type":"object","description":"Credential and OIDC client descriptor used to obtain tokens for a Canton participant: client id / secret, username / password and JWKS URL.","properties":{"clientId":{"type":"string"},"clientSecret":{"type":"string"},"jwksUrl":{"type":"string"},"password":{"type":"string"},"username":{"type":"string"},"audience":{"type":"string"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"StorageDto":{"type":"object","description":"Persistent storage configuration: type (in-cluster or external Postgres), size, backup size and connection credentials when external.","properties":{"backupSize":{"type":"string"},"hostname":{"type":"string"},"password":{"type":"string"},"port":{"type":"string"},"size":{"type":"string"},"type":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]},"user":{"type":"string"}}}}}}
```

## The StorageDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"StorageDto":{"type":"object","description":"Persistent storage configuration: type (in-cluster or external Postgres), size, backup size and connection credentials when external.","properties":{"backupSize":{"type":"string"},"hostname":{"type":"string"},"password":{"type":"string"},"port":{"type":"string"},"size":{"type":"string"},"type":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]},"user":{"type":"string"}}}}}}
```

## The ValidatorIdDumpScheduleDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ValidatorIdDumpScheduleDto":{"type":"object","description":"Request body to schedule recurring identity dumps for a Splice validator (cron expression plus retention limit); converts to the underlying CRD.","properties":{"cron":{"type":"string"},"maxDumps":{"type":"integer","format":"int32","minimum":1}}}}}}
```

## The ScheduledValidatorIdDumpDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ScheduledValidatorIdDumpDto":{"type":"object","description":"Persisted identity-dump schedule for a Splice validator: cron expression, retention limit and next-run timestamp.","properties":{"validatorName":{"type":"string"},"cron":{"type":"string"},"nextRun":{"type":"string"},"maxDumps":{"type":"integer","format":"int32"}}}}}}
```

## The DomainDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"DomainDto":{"type":"object","description":"Canton sync domain definition: name, container image, log level, admin / public endpoints and Canton-specific bootstrap settings used to provision a single-replica sync domain.","properties":{"adminAddress":{"type":"string"},"adminPort":{"type":"string","minLength":1},"bootstrap":{"type":"string"},"daemon":{"type":"boolean"},"enterprise":{"type":"boolean","description":"Whether the canton image is enterprise or not"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"ingress":{"type":"boolean"},"logLevel":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"publicAddress":{"type":"string"},"publicPort":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"storage":{"$ref":"#/components/schemas/StorageDto"},"topology":{"type":"string"}},"required":["adminPort","image","name","publicPort"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"StorageDto":{"type":"object","description":"Persistent storage configuration: type (in-cluster or external Postgres), size, backup size and connection credentials when external.","properties":{"backupSize":{"type":"string"},"hostname":{"type":"string"},"password":{"type":"string"},"port":{"type":"string"},"size":{"type":"string"},"type":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]},"user":{"type":"string"}}}}}}
```

## The CantonFlagsDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"CantonFlagsDto":{"type":"object","description":"Runtime log-level flags for a Canton workload (root, Canton-specific and stdout log levels).","properties":{"logLevelRoot":{"type":"string"},"logLevelCanton":{"type":"string"},"logLevelStdout":{"type":"string"}}}}}}
```

## The ContainerResourcesDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]}}}}
```

## The DefaultsEditDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"DefaultsEditDto":{"type":"object","properties":{"image":{"$ref":"#/components/schemas/ImageDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"}},"required":["image"]},"ImageDto":{"type":"object","description":"Container image reference: registry, repository, tag and the Kubernetes pull secret used to fetch it.","properties":{"registry":{"type":"string","minLength":1},"repository":{"type":"string","minLength":1},"tag":{"type":"string","minLength":1},"pullSecretName":{"type":"string"}},"required":["registry","repository","tag"]},"CantonFlagsDto":{"type":"object","description":"Runtime log-level flags for a Canton workload (root, Canton-specific and stdout log levels).","properties":{"logLevelRoot":{"type":"string"},"logLevelCanton":{"type":"string"},"logLevelStdout":{"type":"string"}}}}}}
```

## The DomainHAEditDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"DomainHAEditDto":{"type":"object","description":"Partial update payload for an HA sync domain; non-null sections replace the corresponding configuration on the existing deployment.","properties":{"name":{"type":"string"},"defaults":{"$ref":"#/components/schemas/DefaultsEditDto"},"sequencer":{"$ref":"#/components/schemas/SequencerEditDto"},"mediator":{"$ref":"#/components/schemas/MediatorEditDto"},"topologyManager":{"$ref":"#/components/schemas/TopologyManagerEditDto"},"inClusterStorage":{"$ref":"#/components/schemas/InClusterStorageEditDto"}},"required":["defaults","mediator","name","sequencer","topologyManager"]},"DefaultsEditDto":{"type":"object","properties":{"image":{"$ref":"#/components/schemas/ImageDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"}},"required":["image"]},"ImageDto":{"type":"object","description":"Container image reference: registry, repository, tag and the Kubernetes pull secret used to fetch it.","properties":{"registry":{"type":"string","minLength":1},"repository":{"type":"string","minLength":1},"tag":{"type":"string","minLength":1},"pullSecretName":{"type":"string"}},"required":["registry","repository","tag"]},"CantonFlagsDto":{"type":"object","description":"Runtime log-level flags for a Canton workload (root, Canton-specific and stdout log levels).","properties":{"logLevelRoot":{"type":"string"},"logLevelCanton":{"type":"string"},"logLevelStdout":{"type":"string"}}},"SequencerEditDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}}},"required":["resources"]},"ResourceRequirementsDto":{"type":"object","description":"Kubernetes container resource requirements: limits and requests, each composed of CPU and memory values.","properties":{"limits":{"$ref":"#/components/schemas/ContainerResourcesDto"},"requests":{"$ref":"#/components/schemas/ContainerResourcesDto"}},"required":["limits","requests"]},"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"MediatorEditDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}}},"required":["resources"]},"TopologyManagerEditDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}}},"required":["resources"]},"InClusterStorageEditDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"storageSize":{"type":"string"},"validStorageSize":{"type":"boolean"}},"required":["resources"]}}}}
```

## The ImageDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ImageDto":{"type":"object","description":"Container image reference: registry, repository, tag and the Kubernetes pull secret used to fetch it.","properties":{"registry":{"type":"string","minLength":1},"repository":{"type":"string","minLength":1},"tag":{"type":"string","minLength":1},"pullSecretName":{"type":"string"}},"required":["registry","repository","tag"]}}}}
```

## The InClusterStorageEditDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"InClusterStorageEditDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"storageSize":{"type":"string"},"validStorageSize":{"type":"boolean"}},"required":["resources"]},"ResourceRequirementsDto":{"type":"object","description":"Kubernetes container resource requirements: limits and requests, each composed of CPU and memory values.","properties":{"limits":{"$ref":"#/components/schemas/ContainerResourcesDto"},"requests":{"$ref":"#/components/schemas/ContainerResourcesDto"}},"required":["limits","requests"]},"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]}}}}
```

## The MediatorEditDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"MediatorEditDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}}},"required":["resources"]},"ResourceRequirementsDto":{"type":"object","description":"Kubernetes container resource requirements: limits and requests, each composed of CPU and memory values.","properties":{"limits":{"$ref":"#/components/schemas/ContainerResourcesDto"},"requests":{"$ref":"#/components/schemas/ContainerResourcesDto"}},"required":["limits","requests"]},"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]},"CantonFlagsDto":{"type":"object","description":"Runtime log-level flags for a Canton workload (root, Canton-specific and stdout log levels).","properties":{"logLevelRoot":{"type":"string"},"logLevelCanton":{"type":"string"},"logLevelStdout":{"type":"string"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}}}}}
```

## The ResourceRequirementsDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ResourceRequirementsDto":{"type":"object","description":"Kubernetes container resource requirements: limits and requests, each composed of CPU and memory values.","properties":{"limits":{"$ref":"#/components/schemas/ContainerResourcesDto"},"requests":{"$ref":"#/components/schemas/ContainerResourcesDto"}},"required":["limits","requests"]},"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]}}}}
```

## The SequencerEditDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"SequencerEditDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}}},"required":["resources"]},"ResourceRequirementsDto":{"type":"object","description":"Kubernetes container resource requirements: limits and requests, each composed of CPU and memory values.","properties":{"limits":{"$ref":"#/components/schemas/ContainerResourcesDto"},"requests":{"$ref":"#/components/schemas/ContainerResourcesDto"}},"required":["limits","requests"]},"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]},"CantonFlagsDto":{"type":"object","description":"Runtime log-level flags for a Canton workload (root, Canton-specific and stdout log levels).","properties":{"logLevelRoot":{"type":"string"},"logLevelCanton":{"type":"string"},"logLevelStdout":{"type":"string"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}}}}}
```

## The TopologyManagerEditDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"TopologyManagerEditDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}}},"required":["resources"]},"ResourceRequirementsDto":{"type":"object","description":"Kubernetes container resource requirements: limits and requests, each composed of CPU and memory values.","properties":{"limits":{"$ref":"#/components/schemas/ContainerResourcesDto"},"requests":{"$ref":"#/components/schemas/ContainerResourcesDto"}},"required":["limits","requests"]},"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]},"CantonFlagsDto":{"type":"object","description":"Runtime log-level flags for a Canton workload (root, Canton-specific and stdout log levels).","properties":{"logLevelRoot":{"type":"string"},"logLevelCanton":{"type":"string"},"logLevelStdout":{"type":"string"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}}}}}
```

## The DefaultsDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"DefaultsDto":{"type":"object","properties":{"image":{"$ref":"#/components/schemas/ImageDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"}},"required":["image"]},"ImageDto":{"type":"object","description":"Container image reference: registry, repository, tag and the Kubernetes pull secret used to fetch it.","properties":{"registry":{"type":"string","minLength":1},"repository":{"type":"string","minLength":1},"tag":{"type":"string","minLength":1},"pullSecretName":{"type":"string"}},"required":["registry","repository","tag"]},"CantonFlagsDto":{"type":"object","description":"Runtime log-level flags for a Canton workload (root, Canton-specific and stdout log levels).","properties":{"logLevelRoot":{"type":"string"},"logLevelCanton":{"type":"string"},"logLevelStdout":{"type":"string"}}}}}}
```

## The DomainHADto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"DomainHADto":{"type":"object","description":"High-availability sync domain definition: per-component (sequencer, mediator, topology manager) specifications plus in-cluster or external storage settings.","properties":{"name":{"type":"string","maxLength":15,"minLength":2},"defaults":{"$ref":"#/components/schemas/DefaultsDto"},"sequencer":{"$ref":"#/components/schemas/SequencerSpecDto"},"mediator":{"$ref":"#/components/schemas/MediatorSpecDto"},"topologyManager":{"$ref":"#/components/schemas/TopologyManagerSpecDto"},"externalStorage":{"$ref":"#/components/schemas/ExternalStorageSpecDto"},"inClusterStorage":{"$ref":"#/components/schemas/InClusterStorageSpecDto"},"validStorage":{"type":"boolean"}},"required":["defaults","mediator","name","sequencer","topologyManager"]},"DefaultsDto":{"type":"object","properties":{"image":{"$ref":"#/components/schemas/ImageDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"}},"required":["image"]},"ImageDto":{"type":"object","description":"Container image reference: registry, repository, tag and the Kubernetes pull secret used to fetch it.","properties":{"registry":{"type":"string","minLength":1},"repository":{"type":"string","minLength":1},"tag":{"type":"string","minLength":1},"pullSecretName":{"type":"string"}},"required":["registry","repository","tag"]},"CantonFlagsDto":{"type":"object","description":"Runtime log-level flags for a Canton workload (root, Canton-specific and stdout log levels).","properties":{"logLevelRoot":{"type":"string"},"logLevelCanton":{"type":"string"},"logLevelStdout":{"type":"string"}}},"SequencerSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"ingress":{"$ref":"#/components/schemas/SequencerIngressConfigDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"ResourceRequirementsDto":{"type":"object","description":"Kubernetes container resource requirements: limits and requests, each composed of CPU and memory values.","properties":{"limits":{"$ref":"#/components/schemas/ContainerResourcesDto"},"requests":{"$ref":"#/components/schemas/ContainerResourcesDto"}},"required":["limits","requests"]},"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]},"SequencerIngressConfigDto":{"type":"object","description":"Per-sequencer ingress flags toggling exposure of the admin and public APIs.","properties":{"adminAPIEnabled":{"type":"boolean"},"publicAPIEnabled":{"type":"boolean"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ExternalStorageOverridesDto":{"type":"object","properties":{"schemaName":{"type":"string"},"dbName":{"type":"string"},"userUsername":{"type":"string"},"userPassword":{"type":"string"}}},"MediatorSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"TopologyManagerSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"ExternalStorageSpecDto":{"type":"object","properties":{"hostname":{"type":"string","minLength":1},"port":{"type":"integer","format":"int32"},"adminUsername":{"type":"string","minLength":1},"adminPassword":{"type":"string","minLength":1},"ssl":{"type":"boolean"},"maxConnections":{"type":"integer","format":"int32"},"schemaName":{"type":"string"}},"required":["adminPassword","adminUsername","hostname","port"]},"InClusterStorageSpecDto":{"type":"object","properties":{"storageSize":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"validStorageSize":{"type":"boolean"}},"required":["resources","storageSize"]}}}}
```

## The ExternalStorageOverridesDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ExternalStorageOverridesDto":{"type":"object","properties":{"schemaName":{"type":"string"},"dbName":{"type":"string"},"userUsername":{"type":"string"},"userPassword":{"type":"string"}}}}}}
```

## The ExternalStorageSpecDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ExternalStorageSpecDto":{"type":"object","properties":{"hostname":{"type":"string","minLength":1},"port":{"type":"integer","format":"int32"},"adminUsername":{"type":"string","minLength":1},"adminPassword":{"type":"string","minLength":1},"ssl":{"type":"boolean"},"maxConnections":{"type":"integer","format":"int32"},"schemaName":{"type":"string"}},"required":["adminPassword","adminUsername","hostname","port"]}}}}
```

## The InClusterStorageSpecDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"InClusterStorageSpecDto":{"type":"object","properties":{"storageSize":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"validStorageSize":{"type":"boolean"}},"required":["resources","storageSize"]},"ResourceRequirementsDto":{"type":"object","description":"Kubernetes container resource requirements: limits and requests, each composed of CPU and memory values.","properties":{"limits":{"$ref":"#/components/schemas/ContainerResourcesDto"},"requests":{"$ref":"#/components/schemas/ContainerResourcesDto"}},"required":["limits","requests"]},"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]}}}}
```

## The MediatorSpecDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"MediatorSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"ResourceRequirementsDto":{"type":"object","description":"Kubernetes container resource requirements: limits and requests, each composed of CPU and memory values.","properties":{"limits":{"$ref":"#/components/schemas/ContainerResourcesDto"},"requests":{"$ref":"#/components/schemas/ContainerResourcesDto"}},"required":["limits","requests"]},"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]},"CantonFlagsDto":{"type":"object","description":"Runtime log-level flags for a Canton workload (root, Canton-specific and stdout log levels).","properties":{"logLevelRoot":{"type":"string"},"logLevelCanton":{"type":"string"},"logLevelStdout":{"type":"string"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ExternalStorageOverridesDto":{"type":"object","properties":{"schemaName":{"type":"string"},"dbName":{"type":"string"},"userUsername":{"type":"string"},"userPassword":{"type":"string"}}}}}}
```

## The SequencerIngressConfigDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"SequencerIngressConfigDto":{"type":"object","description":"Per-sequencer ingress flags toggling exposure of the admin and public APIs.","properties":{"adminAPIEnabled":{"type":"boolean"},"publicAPIEnabled":{"type":"boolean"}}}}}}
```

## The SequencerSpecDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"SequencerSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"ingress":{"$ref":"#/components/schemas/SequencerIngressConfigDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"ResourceRequirementsDto":{"type":"object","description":"Kubernetes container resource requirements: limits and requests, each composed of CPU and memory values.","properties":{"limits":{"$ref":"#/components/schemas/ContainerResourcesDto"},"requests":{"$ref":"#/components/schemas/ContainerResourcesDto"}},"required":["limits","requests"]},"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]},"SequencerIngressConfigDto":{"type":"object","description":"Per-sequencer ingress flags toggling exposure of the admin and public APIs.","properties":{"adminAPIEnabled":{"type":"boolean"},"publicAPIEnabled":{"type":"boolean"}}},"CantonFlagsDto":{"type":"object","description":"Runtime log-level flags for a Canton workload (root, Canton-specific and stdout log levels).","properties":{"logLevelRoot":{"type":"string"},"logLevelCanton":{"type":"string"},"logLevelStdout":{"type":"string"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ExternalStorageOverridesDto":{"type":"object","properties":{"schemaName":{"type":"string"},"dbName":{"type":"string"},"userUsername":{"type":"string"},"userPassword":{"type":"string"}}}}}}
```

## The TopologyManagerSpecDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"TopologyManagerSpecDto":{"type":"object","properties":{"resources":{"$ref":"#/components/schemas/ResourceRequirementsDto"},"cantonFlags":{"$ref":"#/components/schemas/CantonFlagsDto"},"env":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"storageOverrides":{"$ref":"#/components/schemas/ExternalStorageOverridesDto"}},"required":["resources"]},"ResourceRequirementsDto":{"type":"object","description":"Kubernetes container resource requirements: limits and requests, each composed of CPU and memory values.","properties":{"limits":{"$ref":"#/components/schemas/ContainerResourcesDto"},"requests":{"$ref":"#/components/schemas/ContainerResourcesDto"}},"required":["limits","requests"]},"ContainerResourcesDto":{"type":"object","description":"Kubernetes container CPU and memory values (used as either limits or requests).","properties":{"cpu":{"type":"string","minLength":1},"memory":{"type":"string","minLength":1}},"required":["cpu","memory"]},"CantonFlagsDto":{"type":"object","description":"Runtime log-level flags for a Canton workload (root, Canton-specific and stdout log levels).","properties":{"logLevelRoot":{"type":"string"},"logLevelCanton":{"type":"string"},"logLevelStdout":{"type":"string"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ExternalStorageOverridesDto":{"type":"object","properties":{"schemaName":{"type":"string"},"dbName":{"type":"string"},"userUsername":{"type":"string"},"userPassword":{"type":"string"}}}}}}
```

## The ApplicationDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ApplicationDto":{"type":"object","description":"Generic CBM-deployed application: name, container image, port, package, parent validator and Kubernetes resource requirements; used both as a request and a response body on the applications endpoints.","properties":{"domain":{"type":"string","minLength":1},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string"},"name":{"type":"string","minLength":1},"packageName":{"type":"string"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"port":{"type":"integer","format":"int32"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"type":{"type":"string","enum":["BACKEND","UI"]},"validatorParent":{"type":"string"}},"required":["domain","name","type"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}}}
```

## The AppInfoDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"AppInfoDto":{"type":"object","description":"Application deployment metadata: container environment variables and resource requirements declared for an individual Canton/Splice application component.","properties":{"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"resources":{"$ref":"#/components/schemas/ResourcesDto"}},"required":["envVars"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}}}
```

## The ClusterConfigDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ClusterConfigDto":{"type":"object","description":"Cluster-wide Splice / Canton configuration for a validator: shared DARs, application metadata for validator / wallet / CNS, decentralized synchronizer URL, dev-net flags and JVM options.","properties":{"additionalConfigOther":{"type":"string"},"additionalUsersEnvVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"appDars":{"type":"string"},"appInfoValidator":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoCantonNameService":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoWallet":{"$ref":"#/components/schemas/AppInfoDto"},"contactPoint":{"type":"string"},"decentralizedSynchronizerUrl":{"type":"string"},"defaultJvmOptions":{"type":"string","minLength":1},"devNet":{"type":"boolean"},"disabledWallet":{"type":"boolean"},"extraDomains":{"type":"array","items":{"$ref":"#/components/schemas/ExtraDomainDto"}},"failOnAppVersionMismatch":{"type":"boolean"},"fixedTokens":{"type":"boolean"},"metrics":{"$ref":"#/components/schemas/MetricsDto"},"migrateValidatorParty":{"type":"boolean"},"migration":{"$ref":"#/components/schemas/MigrationDto"},"participantIdentitiesDumpBackup":{"$ref":"#/components/schemas/IdentitiesDumpPeriodicBackupDto"},"participantIdentitiesDumpImport":{"$ref":"#/components/schemas/ParticipantIdentitiesImportDto"},"partyHint":{"type":"string","minLength":1},"pvcVolumeStorageClass":{"type":"string"},"scanAddress":{"type":"string","minLength":1},"svSponsorAddress":{"type":"string","minLength":1},"svValidator":{"type":"boolean"},"topUp":{"$ref":"#/components/schemas/TopUpDto"},"useSequencerConnectionsFromScan":{"type":"boolean"},"walletUserName":{"type":"string"},"scheduledPrune":{"$ref":"#/components/schemas/ScheduledValidatorPruneDto"},"disableProbes":{"type":"boolean"}},"required":["appInfoCantonNameService","appInfoValidator","defaultJvmOptions","migration","partyHint","scanAddress","svSponsorAddress"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"AppInfoDto":{"type":"object","description":"Application deployment metadata: container environment variables and resource requirements declared for an individual Canton/Splice application component.","properties":{"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"resources":{"$ref":"#/components/schemas/ResourcesDto"}},"required":["envVars"]},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"ExtraDomainDto":{"type":"object","properties":{"alias":{"type":"string"},"url":{"type":"string"}}},"MetricsDto":{"type":"object","properties":{"enable":{"type":"boolean"},"interval":{"type":"string"},"release":{"type":"string"}}},"MigrationDto":{"type":"object","properties":{"id":{"type":"integer","format":"int32","minimum":0},"migrating":{"type":"boolean"}},"required":["id"]},"IdentitiesDumpPeriodicBackupDto":{"type":"object","properties":{"backupInterval":{"type":"string","minLength":1},"locationBucketName":{"type":"string","minLength":1},"locationBucketProjectId":{"type":"string","minLength":1},"locationBucketSecretName":{"type":"string","minLength":1},"locationPrefix":{"type":"string"}},"required":["backupInterval","locationBucketName","locationBucketProjectId","locationBucketSecretName","locationPrefix"]},"ParticipantIdentitiesImportDto":{"type":"object","properties":{"identitiesSecretName":{"type":"string","description":"The name of the secret participant identities backup file dump.","minLength":1},"newParticipantIdentifier":{"type":"string","minLength":1}},"required":["identitiesSecretName","newParticipantIdentifier"]},"TopUpDto":{"type":"object","properties":{"enable":{"type":"boolean"},"minTopupInterval":{"type":"string"},"targetThroughput":{"type":"integer","format":"int32"}}},"ScheduledValidatorPruneDto":{"type":"object","properties":{"cron":{"type":"string"},"maxDuration":{"type":"string"},"retention":{"type":"string"},"nextRun":{"type":"string"}},"required":["cron","maxDuration","retention"]}}}}
```

## The ClusterParticipantConfigDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ClusterParticipantConfigDto":{"type":"object","description":"Participant-side cluster configuration: JVM options, KMS settings, exposure of the ledger / JSON API and node identifier.","properties":{"defaultJvmOptions":{"type":"string","deprecated":true},"enableHealthProbes":{"type":"boolean","deprecated":true},"nodeIdentifier":{"type":"string"},"exposeLedgerApi":{"type":"boolean"},"privateJsonApi":{"type":"boolean"},"enableKms":{"type":"boolean"},"kmsValue":{"type":"string"},"kmsServiceAccount":{"type":"string"}}}}}}
```

## The ExtraDomainDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ExtraDomainDto":{"type":"object","properties":{"alias":{"type":"string"},"url":{"type":"string"}}}}}}
```

## The IdentitiesDumpPeriodicBackupDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"IdentitiesDumpPeriodicBackupDto":{"type":"object","properties":{"backupInterval":{"type":"string","minLength":1},"locationBucketName":{"type":"string","minLength":1},"locationBucketProjectId":{"type":"string","minLength":1},"locationBucketSecretName":{"type":"string","minLength":1},"locationPrefix":{"type":"string"}},"required":["backupInterval","locationBucketName","locationBucketProjectId","locationBucketSecretName","locationPrefix"]}}}}
```

## The MetricsDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"MetricsDto":{"type":"object","properties":{"enable":{"type":"boolean"},"interval":{"type":"string"},"release":{"type":"string"}}}}}}
```

## The ParticipantIdentitiesImportDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ParticipantIdentitiesImportDto":{"type":"object","properties":{"identitiesSecretName":{"type":"string","description":"The name of the secret participant identities backup file dump.","minLength":1},"newParticipantIdentifier":{"type":"string","minLength":1}},"required":["identitiesSecretName","newParticipantIdentifier"]}}}}
```

## The ValidatorAuthDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ValidatorAuthDto":{"type":"object","description":"Auth configuration for a Splice validator: per-application OIDC client ids / secrets and the OAuth2 issuer / audience to use.","properties":{"cnsClientId":{"type":"string","description":"Client for the Canton Name Service","minLength":1},"walletClientId":{"type":"string","description":"Client for Wallet application","minLength":1},"ledgerApiClientId":{"type":"string","description":"Client for Validator","minLength":1},"ledgerApiClientSecret":{"type":"string","description":"Secret part of Client Credentials Grant Flow for the Validator client","minLength":1},"walletUser":{"type":"string","description":"User that will access the wallet application and receive rewards","minLength":1},"ledgerApiUser":{"type":"string","description":"Subject of the Validator client","minLength":1},"audience":{"type":"string","description":"Audience claim expected by the clients\n","minLength":1},"oidcAuthorityUrl":{"type":"string"},"oidcConfigUrl":{"type":"string"},"jwksUrl":{"type":"string"}},"required":["audience","cnsClientId","ledgerApiClientId","ledgerApiClientSecret","ledgerApiUser","walletClientId","walletUser"]}}}}
```

## The ValidatorDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ValidatorDto":{"type":"object","description":"Splice validator definition: cluster and participant configuration, container image, auth and database settings used to provision a new validator deployment and convert it to the underlying CRD.","properties":{"auth":{"$ref":"#/components/schemas/ValidatorAuthDto"},"clusterConfig":{"$ref":"#/components/schemas/ClusterConfigDto"},"clusterParticipantConfig":{"$ref":"#/components/schemas/ClusterParticipantConfigDto"},"customAuth":{"type":"boolean"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"imageRepo":{"type":"string","minLength":1},"imageTag":{"type":"string","minLength":1},"name":{"type":"string","maxLength":33,"minLength":1},"onboardingSecret":{"type":"string"},"participant":{"$ref":"#/components/schemas/AppInfoDto"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"postgresPassword":{"type":"string","deprecated":true},"postgresUser":{"type":"string","deprecated":true},"databaseConfig":{"$ref":"#/components/schemas/ValidatorDbConfigDto"},"postgresConfig":{"$ref":"#/components/schemas/PostgresConfigDto"}},"required":["clusterConfig","clusterParticipantConfig","imageRepo","imageTag","name","participant"]},"ValidatorAuthDto":{"type":"object","description":"Auth configuration for a Splice validator: per-application OIDC client ids / secrets and the OAuth2 issuer / audience to use.","properties":{"cnsClientId":{"type":"string","description":"Client for the Canton Name Service","minLength":1},"walletClientId":{"type":"string","description":"Client for Wallet application","minLength":1},"ledgerApiClientId":{"type":"string","description":"Client for Validator","minLength":1},"ledgerApiClientSecret":{"type":"string","description":"Secret part of Client Credentials Grant Flow for the Validator client","minLength":1},"walletUser":{"type":"string","description":"User that will access the wallet application and receive rewards","minLength":1},"ledgerApiUser":{"type":"string","description":"Subject of the Validator client","minLength":1},"audience":{"type":"string","description":"Audience claim expected by the clients\n","minLength":1},"oidcAuthorityUrl":{"type":"string"},"oidcConfigUrl":{"type":"string"},"jwksUrl":{"type":"string"}},"required":["audience","cnsClientId","ledgerApiClientId","ledgerApiClientSecret","ledgerApiUser","walletClientId","walletUser"]},"ClusterConfigDto":{"type":"object","description":"Cluster-wide Splice / Canton configuration for a validator: shared DARs, application metadata for validator / wallet / CNS, decentralized synchronizer URL, dev-net flags and JVM options.","properties":{"additionalConfigOther":{"type":"string"},"additionalUsersEnvVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"appDars":{"type":"string"},"appInfoValidator":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoCantonNameService":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoWallet":{"$ref":"#/components/schemas/AppInfoDto"},"contactPoint":{"type":"string"},"decentralizedSynchronizerUrl":{"type":"string"},"defaultJvmOptions":{"type":"string","minLength":1},"devNet":{"type":"boolean"},"disabledWallet":{"type":"boolean"},"extraDomains":{"type":"array","items":{"$ref":"#/components/schemas/ExtraDomainDto"}},"failOnAppVersionMismatch":{"type":"boolean"},"fixedTokens":{"type":"boolean"},"metrics":{"$ref":"#/components/schemas/MetricsDto"},"migrateValidatorParty":{"type":"boolean"},"migration":{"$ref":"#/components/schemas/MigrationDto"},"participantIdentitiesDumpBackup":{"$ref":"#/components/schemas/IdentitiesDumpPeriodicBackupDto"},"participantIdentitiesDumpImport":{"$ref":"#/components/schemas/ParticipantIdentitiesImportDto"},"partyHint":{"type":"string","minLength":1},"pvcVolumeStorageClass":{"type":"string"},"scanAddress":{"type":"string","minLength":1},"svSponsorAddress":{"type":"string","minLength":1},"svValidator":{"type":"boolean"},"topUp":{"$ref":"#/components/schemas/TopUpDto"},"useSequencerConnectionsFromScan":{"type":"boolean"},"walletUserName":{"type":"string"},"scheduledPrune":{"$ref":"#/components/schemas/ScheduledValidatorPruneDto"},"disableProbes":{"type":"boolean"}},"required":["appInfoCantonNameService","appInfoValidator","defaultJvmOptions","migration","partyHint","scanAddress","svSponsorAddress"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"AppInfoDto":{"type":"object","description":"Application deployment metadata: container environment variables and resource requirements declared for an individual Canton/Splice application component.","properties":{"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"resources":{"$ref":"#/components/schemas/ResourcesDto"}},"required":["envVars"]},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"ExtraDomainDto":{"type":"object","properties":{"alias":{"type":"string"},"url":{"type":"string"}}},"MetricsDto":{"type":"object","properties":{"enable":{"type":"boolean"},"interval":{"type":"string"},"release":{"type":"string"}}},"MigrationDto":{"type":"object","properties":{"id":{"type":"integer","format":"int32","minimum":0},"migrating":{"type":"boolean"}},"required":["id"]},"IdentitiesDumpPeriodicBackupDto":{"type":"object","properties":{"backupInterval":{"type":"string","minLength":1},"locationBucketName":{"type":"string","minLength":1},"locationBucketProjectId":{"type":"string","minLength":1},"locationBucketSecretName":{"type":"string","minLength":1},"locationPrefix":{"type":"string"}},"required":["backupInterval","locationBucketName","locationBucketProjectId","locationBucketSecretName","locationPrefix"]},"ParticipantIdentitiesImportDto":{"type":"object","properties":{"identitiesSecretName":{"type":"string","description":"The name of the secret participant identities backup file dump.","minLength":1},"newParticipantIdentifier":{"type":"string","minLength":1}},"required":["identitiesSecretName","newParticipantIdentifier"]},"TopUpDto":{"type":"object","properties":{"enable":{"type":"boolean"},"minTopupInterval":{"type":"string"},"targetThroughput":{"type":"integer","format":"int32"}}},"ScheduledValidatorPruneDto":{"type":"object","properties":{"cron":{"type":"string"},"maxDuration":{"type":"string"},"retention":{"type":"string"},"nextRun":{"type":"string"}},"required":["cron","maxDuration","retention"]},"ClusterParticipantConfigDto":{"type":"object","description":"Participant-side cluster configuration: JVM options, KMS settings, exposure of the ledger / JSON API and node identifier.","properties":{"defaultJvmOptions":{"type":"string","deprecated":true},"enableHealthProbes":{"type":"boolean","deprecated":true},"nodeIdentifier":{"type":"string"},"exposeLedgerApi":{"type":"boolean"},"privateJsonApi":{"type":"boolean"},"enableKms":{"type":"boolean"},"kmsValue":{"type":"string"},"kmsServiceAccount":{"type":"string"}}},"ValidatorDbConfigDto":{"type":"object","description":"Database configuration for a Splice validator: whether an external Postgres is used and, if so, its connection credentials.","properties":{"external":{"type":"boolean"},"username":{"type":"string"},"password":{"type":"string"},"hostname":{"type":"string"},"port":{"type":"string"}}},"PostgresConfigDto":{"type":"object","description":"Postgres deployment configuration consumed by a participant or domain: container image, JVM args, resources and any extra volumes / volume mounts.","properties":{"args":{"type":"array","items":{"type":"string"}},"image":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/Volume"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/VolumeMount"}}}},"Volume":{"type":"object","properties":{"name":{"type":"string"},"emptyDir":{"$ref":"#/components/schemas/EmptyDirVolumeSource"},"configMap":{"$ref":"#/components/schemas/ConfigMapVolumeSource"},"persistentVolumeClaim":{"$ref":"#/components/schemas/PersistentVolumeClaimVolumeSource"},"secret":{"$ref":"#/components/schemas/SecretVolumeSource"},"hostPath":{"$ref":"#/components/schemas/HostPathVolumeSource"}}},"EmptyDirVolumeSource":{"type":"object","properties":{"medium":{"type":"string"},"sizeLimit":{"$ref":"#/components/schemas/Quantity"}}},"Quantity":{"type":"object","properties":{"amount":{"type":"string"},"format":{"type":"string"}}},"ConfigMapVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean"}}},"KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","format":"int32"},"path":{"type":"string"}}},"PersistentVolumeClaimVolumeSource":{"type":"object","properties":{"claimName":{"type":"string"},"readOnly":{"type":"boolean"}}},"SecretVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"optional":{"type":"boolean"},"secretName":{"type":"string"}}},"HostPathVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string"}}},"VolumeMount":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"subPath":{"type":"string"},"readOnly":{"type":"boolean"}}}}}}
```

## The CreatedUserDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"CreatedUserDto":{"type":"object","properties":{"id":{"type":"string"},"temporaryPassword":{"type":"string"},"username":{"type":"string"}}}}}}
```

## The ValidatorResponseDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ValidatorResponseDto":{"type":"object","description":"Full validator details returned by GET / list endpoints: cluster and participant configuration, app info for validator / wallet / CNS, contact point and optional Keycloak credentials created on first provisioning.","properties":{"appInfoCantonNameService":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoValidator":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoWallet":{"$ref":"#/components/schemas/AppInfoDto"},"application":{"type":"string"},"applicationCantonNameServer":{"type":"string"},"applicationWallet":{"type":"string"},"contactPoint":{"type":"string"},"createdUser":{"$ref":"#/components/schemas/CreatedUserDto"},"customAuth":{"type":"boolean"},"databaseStorage":{"type":"string"},"disabledWallet":{"type":"boolean"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"exposeLedgerApi":{"type":"boolean"},"imageRepo":{"type":"string"},"imageTag":{"type":"string"},"immutable":{"type":"boolean"},"jsonApiAddress":{"type":"string"},"ledgerApiAddress":{"type":"string"},"validatorApiAddress":{"type":"string"},"migrationId":{"type":"string"},"migrationMigrating":{"type":"boolean"},"name":{"type":"string"},"onboardingSecretName":{"type":"string"},"participant":{"type":"string"},"participantIdentitiesDumpSecretName":{"type":"string"},"participantInfo":{"$ref":"#/components/schemas/AppInfoDto"},"partyId":{"type":"string"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"postgresPassword":{"type":"string","deprecated":true},"postgresUser":{"type":"string","deprecated":true},"privateJsonApi":{"type":"boolean"},"scanAddress":{"type":"string"},"storageSize":{"type":"string"},"disableProbes":{"type":"boolean"},"topUp":{"$ref":"#/components/schemas/TopUpDto"},"databaseConfig":{"$ref":"#/components/schemas/ValidatorDbConfigDto"},"postgresConfig":{"$ref":"#/components/schemas/PostgresConfigDto"},"walletSweeps":{"type":"array","items":{"$ref":"#/components/schemas/WalletSweepDto"}}}},"AppInfoDto":{"type":"object","description":"Application deployment metadata: container environment variables and resource requirements declared for an individual Canton/Splice application component.","properties":{"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"resources":{"$ref":"#/components/schemas/ResourcesDto"}},"required":["envVars"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"CreatedUserDto":{"type":"object","properties":{"id":{"type":"string"},"temporaryPassword":{"type":"string"},"username":{"type":"string"}}},"TopUpDto":{"type":"object","properties":{"enable":{"type":"boolean"},"minTopupInterval":{"type":"string"},"targetThroughput":{"type":"integer","format":"int32"}}},"ValidatorDbConfigDto":{"type":"object","description":"Database configuration for a Splice validator: whether an external Postgres is used and, if so, its connection credentials.","properties":{"external":{"type":"boolean"},"username":{"type":"string"},"password":{"type":"string"},"hostname":{"type":"string"},"port":{"type":"string"}}},"PostgresConfigDto":{"type":"object","description":"Postgres deployment configuration consumed by a participant or domain: container image, JVM args, resources and any extra volumes / volume mounts.","properties":{"args":{"type":"array","items":{"type":"string"}},"image":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/Volume"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/VolumeMount"}}}},"Volume":{"type":"object","properties":{"name":{"type":"string"},"emptyDir":{"$ref":"#/components/schemas/EmptyDirVolumeSource"},"configMap":{"$ref":"#/components/schemas/ConfigMapVolumeSource"},"persistentVolumeClaim":{"$ref":"#/components/schemas/PersistentVolumeClaimVolumeSource"},"secret":{"$ref":"#/components/schemas/SecretVolumeSource"},"hostPath":{"$ref":"#/components/schemas/HostPathVolumeSource"}}},"EmptyDirVolumeSource":{"type":"object","properties":{"medium":{"type":"string"},"sizeLimit":{"$ref":"#/components/schemas/Quantity"}}},"Quantity":{"type":"object","properties":{"amount":{"type":"string"},"format":{"type":"string"}}},"ConfigMapVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean"}}},"KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","format":"int32"},"path":{"type":"string"}}},"PersistentVolumeClaimVolumeSource":{"type":"object","properties":{"claimName":{"type":"string"},"readOnly":{"type":"boolean"}}},"SecretVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"optional":{"type":"boolean"},"secretName":{"type":"string"}}},"HostPathVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string"}}},"VolumeMount":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"subPath":{"type":"string"},"readOnly":{"type":"boolean"}}},"WalletSweepDto":{"type":"object","properties":{"senderPartyId":{"type":"string","minLength":1},"receiverPartyId":{"type":"string","minLength":1},"maxBalanceUSD":{"type":"string","minLength":1},"minBalanceUSD":{"type":"string","minLength":1},"useTransferPreapproval":{"type":"boolean"}},"required":["maxBalanceUSD","minBalanceUSD","receiverPartyId","senderPartyId","useTransferPreapproval"]}}}}
```

## The ValidatorRestoreDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ValidatorRestoreDto":{"type":"object","description":"Request body to start a Splice validator restore from one or more previously captured backup files.","properties":{"filenames":{"type":"array","items":{"type":"string"},"maxItems":2,"minItems":2}}}}}}
```

## The ValidatorRestoreResponseDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ValidatorRestoreResponseDto":{"type":"object","description":"Single entry in the validator restore history: filenames restored from, overall status and capture timestamp.","properties":{"filenames":{"type":"array","items":{"type":"string"},"maxItems":2,"minItems":2},"status":{"type":"string"},"timestamp":{"type":"string"}}}}}}
```

## The CheckQuorumRequest object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"CheckQuorumRequest":{"type":"object","description":"Request body for the Splice prefill quorum check; references the sponsor scan address used during validator on-boarding.","properties":{"sponsorScanAddress":{"type":"string"}}}}}}
```

## The ScheduledPruneDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ScheduledPruneDto":{"type":"object","description":"Persisted pruning schedule for a Canton workload: cron expression, retention window, max duration and next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxDurationInSec":{"type":"integer","format":"int64","minimum":1},"nextRun":{"type":"string"},"retentionInSec":{"type":"integer","format":"int64","minimum":1}},"required":["cron","maxDurationInSec","retentionInSec"]}}}}
```

## The ConnectionDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ConnectionDto":{"type":"object","description":"The DTO representing a connection to a domain.","properties":{"connected":{"type":"boolean","description":"It represents the connection status. It is true when the connection is established, false otherwise."},"custom":{"type":"boolean","description":"It represents a custom domain.  When it is true the domainUrl should be used, use domainName and port otherwise "},"domainAlias":{"type":"string","description":"This is the alias of the domain to connect to. It does not have to be the same as the actual domain name.","minLength":1},"domainName":{"type":"string","description":"This is name of the domain to connect to. "},"isHADomain":{"type":"boolean","description":"Defines whether the domain name belongs to the HA Domain entity"},"domainUrl":{"type":"string","description":"This is the URL of the domain to connect to. It must be accessible from the participant node. Usage: https://<domain-name>.<namespace>.svc.cluster.local:<public-port>"},"publicPort":{"type":"string","description":"This is public port of the domain to connect to. "}},"required":["domainAlias"]}}}}
```

## The RestoreDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"RestoreDto":{"type":"object","description":"Request body to start a participant or domain restore from a previously captured backup file.","properties":{"fileName":{"type":"string","minLength":1}},"required":["fileName"]}}}}
```

## The LocalPartyListingDTO object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"LocalPartyListingDTO":{"type":"object","description":"Local-party listing for a participant: the in-progress fetch flag and the currently-known list of party identifiers.","properties":{"fetching":{"type":"boolean"},"parties":{"type":"array","items":{"type":"string"}}}}}}}
```

## The BackupDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"BackupDto":{"type":"object","description":"Schedule definition used to configure a recurring backup job on a Canton workload (participant or domain). Carries the cron expression that drives the schedule and the maximum number of backups to retain.","properties":{"cron":{"type":"string","minLength":1},"maxBackups":{"type":"integer","format":"int32","minimum":1}},"required":["cron","maxBackups"]}}}}
```

## The ScheduledBackupDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ScheduledBackupDto":{"type":"object","description":"Persisted backup schedule for a Canton workload: cron expression, retention limit and the resolved next-run timestamp.","properties":{"cron":{"type":"string","minLength":1},"maxBackups":{"type":"integer","format":"int32"},"nextRun":{"type":"string"}},"required":["cron"]}}}}
```

## The IdDumpDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"IdDumpDto":{"type":"object","description":"Identity-dump artifact metadata: name of the Kubernetes secret holding the dump, the owning validator name and the timestamp at which it was captured.","properties":{"secretName":{"type":"string"},"validatorName":{"type":"string"},"timestamp":{"type":"integer","format":"int64"},"createdAt":{"type":"string"}}}}}}
```

## The ProxyRequestDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ProxyRequestDto":{"type":"object","description":"Generic HTTP proxy request: target URL, method, custom headers and body forwarded by the proxy controller.","properties":{"url":{"type":"string"},"method":{"type":"string"},"headers":{"type":"object","additionalProperties":{"type":"string"}},"body":{"type":"string"}}}}}}
```

## The PasswordDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"PasswordDto":{"type":"object","description":"Wrapper around a single password value; used by endpoints that update credentials in isolation.","properties":{"password":{"type":"string","minLength":1}},"required":["password"]}}}}
```

## The OauthLoginResponse object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"OauthLoginResponse":{"type":"object","description":"Token response returned by the OAuth2 login flow (access token).","properties":{"access_token":{"type":"string"}}}}}}
```

## The CommandDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"CommandDto":{"type":"object","description":"Canton console script to be executed as a one-shot command against a participant or domain.","properties":{"script":{"type":"string","minLength":1}},"required":["script"]}}}}
```

## The ValidatorFilterResponseDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ValidatorFilterResponseDto":{"type":"object","description":"Paginated list of `ValidatorResponseDto` entries plus the total count of validators matching the filter.","properties":{"validators":{"type":"array","items":{"$ref":"#/components/schemas/ValidatorResponseDto"}},"totalCount":{"type":"integer","format":"int64"}}},"ValidatorResponseDto":{"type":"object","description":"Full validator details returned by GET / list endpoints: cluster and participant configuration, app info for validator / wallet / CNS, contact point and optional Keycloak credentials created on first provisioning.","properties":{"appInfoCantonNameService":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoValidator":{"$ref":"#/components/schemas/AppInfoDto"},"appInfoWallet":{"$ref":"#/components/schemas/AppInfoDto"},"application":{"type":"string"},"applicationCantonNameServer":{"type":"string"},"applicationWallet":{"type":"string"},"contactPoint":{"type":"string"},"createdUser":{"$ref":"#/components/schemas/CreatedUserDto"},"customAuth":{"type":"boolean"},"databaseStorage":{"type":"string"},"disabledWallet":{"type":"boolean"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"exposeLedgerApi":{"type":"boolean"},"imageRepo":{"type":"string"},"imageTag":{"type":"string"},"immutable":{"type":"boolean"},"jsonApiAddress":{"type":"string"},"ledgerApiAddress":{"type":"string"},"validatorApiAddress":{"type":"string"},"migrationId":{"type":"string"},"migrationMigrating":{"type":"boolean"},"name":{"type":"string"},"onboardingSecretName":{"type":"string"},"participant":{"type":"string"},"participantIdentitiesDumpSecretName":{"type":"string"},"participantInfo":{"$ref":"#/components/schemas/AppInfoDto"},"partyId":{"type":"string"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"postgresPassword":{"type":"string","deprecated":true},"postgresUser":{"type":"string","deprecated":true},"privateJsonApi":{"type":"boolean"},"scanAddress":{"type":"string"},"storageSize":{"type":"string"},"disableProbes":{"type":"boolean"},"topUp":{"$ref":"#/components/schemas/TopUpDto"},"databaseConfig":{"$ref":"#/components/schemas/ValidatorDbConfigDto"},"postgresConfig":{"$ref":"#/components/schemas/PostgresConfigDto"},"walletSweeps":{"type":"array","items":{"$ref":"#/components/schemas/WalletSweepDto"}}}},"AppInfoDto":{"type":"object","description":"Application deployment metadata: container environment variables and resource requirements declared for an individual Canton/Splice application component.","properties":{"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"resources":{"$ref":"#/components/schemas/ResourcesDto"}},"required":["envVars"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"CreatedUserDto":{"type":"object","properties":{"id":{"type":"string"},"temporaryPassword":{"type":"string"},"username":{"type":"string"}}},"TopUpDto":{"type":"object","properties":{"enable":{"type":"boolean"},"minTopupInterval":{"type":"string"},"targetThroughput":{"type":"integer","format":"int32"}}},"ValidatorDbConfigDto":{"type":"object","description":"Database configuration for a Splice validator: whether an external Postgres is used and, if so, its connection credentials.","properties":{"external":{"type":"boolean"},"username":{"type":"string"},"password":{"type":"string"},"hostname":{"type":"string"},"port":{"type":"string"}}},"PostgresConfigDto":{"type":"object","description":"Postgres deployment configuration consumed by a participant or domain: container image, JVM args, resources and any extra volumes / volume mounts.","properties":{"args":{"type":"array","items":{"type":"string"}},"image":{"type":"string"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/Volume"}},"volumeMounts":{"type":"array","items":{"$ref":"#/components/schemas/VolumeMount"}}}},"Volume":{"type":"object","properties":{"name":{"type":"string"},"emptyDir":{"$ref":"#/components/schemas/EmptyDirVolumeSource"},"configMap":{"$ref":"#/components/schemas/ConfigMapVolumeSource"},"persistentVolumeClaim":{"$ref":"#/components/schemas/PersistentVolumeClaimVolumeSource"},"secret":{"$ref":"#/components/schemas/SecretVolumeSource"},"hostPath":{"$ref":"#/components/schemas/HostPathVolumeSource"}}},"EmptyDirVolumeSource":{"type":"object","properties":{"medium":{"type":"string"},"sizeLimit":{"$ref":"#/components/schemas/Quantity"}}},"Quantity":{"type":"object","properties":{"amount":{"type":"string"},"format":{"type":"string"}}},"ConfigMapVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"name":{"type":"string"},"optional":{"type":"boolean"}}},"KeyToPath":{"type":"object","properties":{"key":{"type":"string"},"mode":{"type":"integer","format":"int32"},"path":{"type":"string"}}},"PersistentVolumeClaimVolumeSource":{"type":"object","properties":{"claimName":{"type":"string"},"readOnly":{"type":"boolean"}}},"SecretVolumeSource":{"type":"object","properties":{"defaultMode":{"type":"integer","format":"int32"},"items":{"type":"array","items":{"$ref":"#/components/schemas/KeyToPath"}},"optional":{"type":"boolean"},"secretName":{"type":"string"}}},"HostPathVolumeSource":{"type":"object","properties":{"path":{"type":"string"},"type":{"type":"string"}}},"VolumeMount":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"subPath":{"type":"string"},"readOnly":{"type":"boolean"}}},"WalletSweepDto":{"type":"object","properties":{"senderPartyId":{"type":"string","minLength":1},"receiverPartyId":{"type":"string","minLength":1},"maxBalanceUSD":{"type":"string","minLength":1},"minBalanceUSD":{"type":"string","minLength":1},"useTransferPreapproval":{"type":"boolean"}},"required":["maxBalanceUSD","minBalanceUSD","receiverPartyId","senderPartyId","useTransferPreapproval"]}}}}
```

## The FilePropertiesDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"FilePropertiesDto":{"type":"object","description":"File metadata: filename, size and timestamp (split into separate date and time fields).","properties":{"date":{"type":"string"},"filename":{"type":"string"},"size":{"type":"integer","format":"int32"},"time":{"type":"string"}}}}}}
```

## The ValidatorBackupHistoryDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ValidatorBackupHistoryDto":{"type":"object","description":"Validator backup history: ordered list of previously captured backups with their files and statuses.","properties":{"backupList":{"type":"array","items":{"$ref":"#/components/schemas/ValidatorBackupPropertiesDto"}}}},"ValidatorBackupPropertiesDto":{"type":"object","description":"Single validator backup entry: list of captured backup files, overall status and capture timestamp.","properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/FilePropertiesDto"}},"status":{"type":"string"},"timestamp":{"type":"string"}}},"FilePropertiesDto":{"type":"object","description":"File metadata: filename, size and timestamp (split into separate date and time fields).","properties":{"date":{"type":"string"},"filename":{"type":"string"},"size":{"type":"integer","format":"int32"},"time":{"type":"string"}}}}}}
```

## The ValidatorBackupPropertiesDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ValidatorBackupPropertiesDto":{"type":"object","description":"Single validator backup entry: list of captured backup files, overall status and capture timestamp.","properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/FilePropertiesDto"}},"status":{"type":"string"},"timestamp":{"type":"string"}}},"FilePropertiesDto":{"type":"object","description":"File metadata: filename, size and timestamp (split into separate date and time fields).","properties":{"date":{"type":"string"},"filename":{"type":"string"},"size":{"type":"integer","format":"int32"},"time":{"type":"string"}}}}}}
```

## The NetworkInfoDetails object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"NetworkInfoDetails":{"type":"object","properties":{"version":{"type":"string"},"migrationId":{"type":"integer","format":"int32"},"svDetailsList":{"type":"array","items":{"$ref":"#/components/schemas/SVDetails"}}}},"SVDetails":{"type":"object","properties":{"name":{"type":"string"},"sponsorAddress":{"type":"string"},"scanAddress":{"type":"string"}}}}}}
```

## The NetworkInfoDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"NetworkInfoDto":{"type":"object","description":"Splice network endpoints split by environment: devnet, testnet and mainnet.","properties":{"devnet":{"$ref":"#/components/schemas/NetworkInfoDetails"},"testnet":{"$ref":"#/components/schemas/NetworkInfoDetails"},"mainnet":{"$ref":"#/components/schemas/NetworkInfoDetails"}}},"NetworkInfoDetails":{"type":"object","properties":{"version":{"type":"string"},"migrationId":{"type":"integer","format":"int32"},"svDetailsList":{"type":"array","items":{"$ref":"#/components/schemas/SVDetails"}}}},"SVDetails":{"type":"object","properties":{"name":{"type":"string"},"sponsorAddress":{"type":"string"},"scanAddress":{"type":"string"}}}}}}
```

## The SVDetails object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"SVDetails":{"type":"object","properties":{"name":{"type":"string"},"sponsorAddress":{"type":"string"},"scanAddress":{"type":"string"}}}}}}
```

## The RemoteParticipantFilterResponseDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"RemoteParticipantFilterResponseDto":{"type":"object","description":"Paginated list of `RemoteParticipantDto` entries plus the total count.","properties":{"participants":{"type":"array","items":{"$ref":"#/components/schemas/RemoteParticipantDto"}},"totalCount":{"type":"integer","format":"int64"}}},"RemoteParticipantDto":{"type":"object","description":"Externally-hosted Canton participant registered in CBM: admin / ledger / JSON-API endpoints, auth provider and identifying metadata.","properties":{"adminAddress":{"type":"string","minLength":1},"adminPort":{"type":"string","minLength":1},"authProvider":{"type":"string","enum":["keycloak","auth0","custom"]},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"jsonApiUrl":{"type":"string","minLength":1},"ledgerAddress":{"type":"string","minLength":1},"ledgerId":{"type":"string","minLength":1},"ledgerPort":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"v3":{"type":"boolean"}},"required":["adminAddress","adminPort","authProvider","image","jsonApiUrl","ledgerAddress","ledgerId","ledgerPort","name"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}}}
```

## The ParticipantStatusDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ParticipantStatusDto":{"type":"object","description":"Runtime status of a Canton participant: active flag, id, uptime and the lists of currently connected and unhealthy sync domains.","properties":{"active":{"type":"boolean"},"connectedDomains":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"unhealthyDomains":{"type":"array","items":{"type":"string"}},"uptime":{"type":"integer","format":"int64"}}}}}}
```

## The DarDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"DarDto":{"type":"object","description":"Reference to a DAR package uploaded to a Canton participant: identifying hash, package name and version.","properties":{"hash":{"type":"string"},"name":{"type":"string"},"version":{"type":"string"}}}}}}
```

## The RemoteDomainFilterResponseDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"RemoteDomainFilterResponseDto":{"type":"object","description":"Paginated list of `RemoteDomainDto` entries plus the total count.","properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/RemoteDomainDto"}},"totalCount":{"type":"integer","format":"int64"}}},"RemoteDomainDto":{"type":"object","description":"Externally-hosted sync domain registered in CBM: admin / public endpoints, image metadata and lifecycle phase.","properties":{"adminAddress":{"type":"string","minLength":1},"adminPort":{"type":"string","minLength":1},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"publicAddress":{"type":"string","minLength":1},"publicPort":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourcesDto"}},"required":["adminAddress","adminPort","image","name","publicAddress","publicPort"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}}}
```

## The DomainStatusDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"DomainStatusDto":{"type":"object","description":"Runtime status of a single-replica sync domain: active flag, id, uptime, sequencer state and the list of currently connected participants.","properties":{"active":{"type":"boolean"},"connectedParticipants":{"type":"array","items":{"type":"string"}},"id":{"type":"string"},"sequencer":{"$ref":"#/components/schemas/SequencerDto"},"uptime":{"type":"integer","format":"int64"}}},"SequencerDto":{"type":"object","description":"Compact status of a Canton sequencer: active flag and free-form details string.","properties":{"active":{"type":"boolean"},"details":{"type":"string"}}}}}}
```

## The SequencerDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"SequencerDto":{"type":"object","description":"Compact status of a Canton sequencer: active flag and free-form details string.","properties":{"active":{"type":"boolean"},"details":{"type":"string"}}}}}}
```

## The ParticipantFilterResponseDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ParticipantFilterResponseDto":{"type":"object","description":"Paginated list of `ParticipantDto` entries plus the total count of participants matching the filter.","properties":{"participants":{"type":"array","items":{"$ref":"#/components/schemas/ParticipantDto"}},"totalCount":{"type":"integer","format":"int64"}}},"ParticipantDto":{"type":"object","description":"Canton participant definition: container image, admin / ledger endpoints, authentication, postgres storage and Canton-specific settings used to provision a new participant deployment.","properties":{"adminAddress":{"type":"string"},"adminPort":{"type":"string","minLength":1},"auth":{"type":"boolean"},"authProvider":{"type":"string","enum":["keycloak","auth0","custom"]},"authorization":{"$ref":"#/components/schemas/AuthorizationDto"},"bootstrap":{"type":"string"},"daemon":{"type":"boolean"},"enterprise":{"type":"boolean","description":"Whether the canton image is enterprise or not"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"jsonapi":{"type":"boolean"},"jsonapiImage":{"type":"string"},"privateJsonapi":{"type":"boolean"},"jsonapiQueryStore":{"type":"boolean"},"exposeLedgerApi":{"type":"boolean"},"ledgerAddress":{"type":"string"},"ledgerPort":{"type":"string","minLength":1},"logLevel":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]},"name":{"type":"string","minLength":1},"navigator":{"type":"boolean"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"storage":{"$ref":"#/components/schemas/StorageDto"},"topology":{"type":"string"},"validatorParent":{"type":"string"},"enableKms":{"type":"boolean"},"kmsValue":{"type":"string"},"kmsServiceAccount":{"type":"string"}},"required":["adminPort","authProvider","image","ledgerPort","name"]},"AuthorizationDto":{"type":"object","description":"Credential and OIDC client descriptor used to obtain tokens for a Canton participant: client id / secret, username / password and JWKS URL.","properties":{"clientId":{"type":"string"},"clientSecret":{"type":"string"},"jwksUrl":{"type":"string"},"password":{"type":"string"},"username":{"type":"string"},"audience":{"type":"string"}}},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"StorageDto":{"type":"object","description":"Persistent storage configuration: type (in-cluster or external Postgres), size, backup size and connection credentials when external.","properties":{"backupSize":{"type":"string"},"hostname":{"type":"string"},"password":{"type":"string"},"port":{"type":"string"},"size":{"type":"string"},"type":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]},"user":{"type":"string"}}}}}}
```

## The BackupHistoryDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"BackupHistoryDto":{"type":"object","description":"Entry in the backup history of a Canton workload describing a single backup artifact: file name, size in bytes, status of the backup operation and the timestamp at which it was produced.","properties":{"filename":{"type":"string"},"size":{"type":"integer","format":"int32","description":"File size in bytes"},"status":{"type":"string"},"timestamp":{"type":"string"}}}}}}
```

## The RestoreHistoryDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"RestoreHistoryDto":{"type":"object","description":"Single entry in a restore history: filename, status, timestamp and any log captured during the restore.","properties":{"filename":{"type":"string"},"log":{"type":"string"},"status":{"type":"string"},"timestamp":{"type":"string"}}}}}}
```

## The ClusterInformationDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ClusterInformationDto":{"type":"object","description":"Connection metadata describing the Canton / Splice cluster CBM is attached to (URL of the cluster control plane).","properties":{"url":{"type":"string"}}}}}}
```

## The LogLineDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"LogLineDto":{"type":"object","description":"Single Canton-formatted log line: parsed timestamp, log level and message content.","properties":{"content":{"type":"string"},"level":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]},"timeStamp":{"type":"string"}}}}}}
```

## The StreamingResponseBody object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"StreamingResponseBody":{}}}}
```

## The FileDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"FileDto":{"type":"object","description":"File DTO","properties":{"name":{"type":"string","description":"Name of the file"},"sizeInBytes":{"type":"integer","format":"int64","description":"Size of the file in bytes"}}}}}}
```

## The FileFilterResponseDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"FileFilterResponseDto":{"type":"object","description":"Paginated list of `FileDto` entries plus the total count of stored files matching the filter.","properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/FileDto"}},"totalCount":{"type":"integer","format":"int64"}}},"FileDto":{"type":"object","description":"File DTO","properties":{"name":{"type":"string","description":"Name of the file"},"sizeInBytes":{"type":"integer","format":"int64","description":"Size of the file in bytes"}}}}}}
```

## The DomainFilterResponseDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"DomainFilterResponseDto":{"type":"object","description":"Paginated list of `DomainDto` entries plus the total count of sync domains matching the filter.","properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/DomainDto"}},"totalCount":{"type":"integer","format":"int64"}}},"DomainDto":{"type":"object","description":"Canton sync domain definition: name, container image, log level, admin / public endpoints and Canton-specific bootstrap settings used to provision a single-replica sync domain.","properties":{"adminAddress":{"type":"string"},"adminPort":{"type":"string","minLength":1},"bootstrap":{"type":"string"},"daemon":{"type":"boolean"},"enterprise":{"type":"boolean","description":"Whether the canton image is enterprise or not"},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string","minLength":1},"ingress":{"type":"boolean"},"logLevel":{"type":"string","enum":["TRACE","DEBUG","INFO","WARN","ERROR"]},"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"publicAddress":{"type":"string"},"publicPort":{"type":"string","minLength":1},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"storage":{"$ref":"#/components/schemas/StorageDto"},"topology":{"type":"string"}},"required":["adminPort","image","name","publicPort"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}},"StorageDto":{"type":"object","description":"Persistent storage configuration: type (in-cluster or external Postgres), size, backup size and connection credentials when external.","properties":{"backupSize":{"type":"string"},"hostname":{"type":"string"},"password":{"type":"string"},"port":{"type":"string"},"size":{"type":"string"},"type":{"type":"string","enum":["Memory","Postgres","Shared Postgres","External"]},"user":{"type":"string"}}}}}}
```

## The BootstrapStatusDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"BootstrapStatusDto":{"type":"object","properties":{"started":{"type":"boolean"},"completed":{"type":"boolean"},"error":{"type":"string"},"ready":{"type":"boolean"}}}}}}
```

## The DomainHAEntry object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"DomainHAEntry":{"type":"object","properties":{"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"status":{"$ref":"#/components/schemas/DomainHAStatusDto"}},"required":["name","status"]},"DomainHAStatusDto":{"type":"object","description":"Runtime status of an HA sync domain split per component (mediator, topology manager, sequencer, in-cluster database, bootstrap).","properties":{"mediator":{"$ref":"#/components/schemas/MediatorStatusDto"},"topologyManager":{"$ref":"#/components/schemas/TopologyManagerStatusDto"},"sequencer":{"$ref":"#/components/schemas/SequencerStatusDto"},"inClusterDatabase":{"$ref":"#/components/schemas/InClusterDatabaseStatusDto"},"bootstrap":{"$ref":"#/components/schemas/BootstrapStatusDto"}}},"MediatorStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"TopologyManagerStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"SequencerStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"InClusterDatabaseStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"BootstrapStatusDto":{"type":"object","properties":{"started":{"type":"boolean"},"completed":{"type":"boolean"},"error":{"type":"string"},"ready":{"type":"boolean"}}}}}}
```

## The DomainHAResponseDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"DomainHAResponseDto":{"type":"object","description":"Paginated list of HA sync domain entries plus the total count.","properties":{"domainHAs":{"type":"array","items":{"$ref":"#/components/schemas/DomainHAEntry"}},"totalCount":{"type":"integer","format":"int64"}}},"DomainHAEntry":{"type":"object","properties":{"name":{"type":"string","minLength":1},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"status":{"$ref":"#/components/schemas/DomainHAStatusDto"}},"required":["name","status"]},"DomainHAStatusDto":{"type":"object","description":"Runtime status of an HA sync domain split per component (mediator, topology manager, sequencer, in-cluster database, bootstrap).","properties":{"mediator":{"$ref":"#/components/schemas/MediatorStatusDto"},"topologyManager":{"$ref":"#/components/schemas/TopologyManagerStatusDto"},"sequencer":{"$ref":"#/components/schemas/SequencerStatusDto"},"inClusterDatabase":{"$ref":"#/components/schemas/InClusterDatabaseStatusDto"},"bootstrap":{"$ref":"#/components/schemas/BootstrapStatusDto"}}},"MediatorStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"TopologyManagerStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"SequencerStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"InClusterDatabaseStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"BootstrapStatusDto":{"type":"object","properties":{"started":{"type":"boolean"},"completed":{"type":"boolean"},"error":{"type":"string"},"ready":{"type":"boolean"}}}}}}
```

## The DomainHAStatusDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"DomainHAStatusDto":{"type":"object","description":"Runtime status of an HA sync domain split per component (mediator, topology manager, sequencer, in-cluster database, bootstrap).","properties":{"mediator":{"$ref":"#/components/schemas/MediatorStatusDto"},"topologyManager":{"$ref":"#/components/schemas/TopologyManagerStatusDto"},"sequencer":{"$ref":"#/components/schemas/SequencerStatusDto"},"inClusterDatabase":{"$ref":"#/components/schemas/InClusterDatabaseStatusDto"},"bootstrap":{"$ref":"#/components/schemas/BootstrapStatusDto"}}},"MediatorStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"TopologyManagerStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"SequencerStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"InClusterDatabaseStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}},"BootstrapStatusDto":{"type":"object","properties":{"started":{"type":"boolean"},"completed":{"type":"boolean"},"error":{"type":"string"},"ready":{"type":"boolean"}}}}}}
```

## The InClusterDatabaseStatusDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"InClusterDatabaseStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}}}}}
```

## The MediatorStatusDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"MediatorStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}}}}}
```

## The SequencerStatusDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"SequencerStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}}}}}
```

## The TopologyManagerStatusDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"TopologyManagerStatusDto":{"type":"object","properties":{"ready":{"type":"boolean"}}}}}}
```

## The ApplicationFilterResponseDto object

```json
{"openapi":"3.1.0","info":{"title":"Catalyst Blockchain Manager: Canton Console API","version":"1.0.0-local"},"components":{"schemas":{"ApplicationFilterResponseDto":{"type":"object","description":"Paginated list of `ApplicationDto` entries plus the total count of applications matching the filter.","properties":{"applications":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationDto"}},"totalCount":{"type":"integer","format":"int64"}}},"ApplicationDto":{"type":"object","description":"Generic CBM-deployed application: name, container image, port, package, parent validator and Kubernetes resource requirements; used both as a request and a response body on the applications endpoints.","properties":{"domain":{"type":"string","minLength":1},"envVars":{"type":"array","items":{"$ref":"#/components/schemas/EnvVar"}},"image":{"type":"string"},"name":{"type":"string","minLength":1},"packageName":{"type":"string"},"phase":{"type":"string","enum":["COMPLETED","PENDING","RUNNING"]},"port":{"type":"integer","format":"int32"},"resources":{"$ref":"#/components/schemas/ResourcesDto"},"type":{"type":"string","enum":["BACKEND","UI"]},"validatorParent":{"type":"string"}},"required":["domain","name","type"]},"EnvVar":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"valueFrom":{"$ref":"#/components/schemas/EnvVarSource"}}},"EnvVarSource":{"type":"object","properties":{"secretKeyRef":{"$ref":"#/components/schemas/SecretKeySelector"}}},"SecretKeySelector":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"},"optional":{"type":"boolean"}}},"ResourcesDto":{"type":"object","description":"Container/Pod related fields.","properties":{"cpuLimit":{"type":"string","description":"The maximum amount of CPU allowed for a container. The value is a string with a suffix of milliCPU, e.g. 500m. The value can also be given in CPU units, e.g. 0.5. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-cpu"},"cpuRequested":{"type":"string","description":"The requested amount of CPU for a container. See cpuLimit for details."},"imagePullSecret":{"type":"string","description":"The name of the image pull secret to use for the container. The secret must be present in the same namespace as the pod."},"memoryLimit":{"type":"string","description":"The maximum amount of memory allowed for a container. The value is a string with a quantity suffix, e.g. 123Mi. The value can also be given in bytes, e.g. 128974848. See: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory"},"memoryRequested":{"type":"string","description":"The requested amount of memory for a container. See memoryLimit for details."},"replicas":{"type":"integer","format":"int32","description":"The requested replicas for a container."}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.catalyx.solutions/catalyx-blockchain-manager/canton-network/version-1.11/support-and-resources/api-reference.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
