# Run the genesis

Endpoint: POST /v1/genesis

## Request fields (application/json):

  - `rootDomainSetup` (object, required)

  - `rootDomainSetup.id` (string, required)

  - `rootDomainSetup.alias` (string, required)

  - `rootDomainSetup.lock` (string, required)
    Enum: "Unlocked", "Locked"

  - `rootDomainSetup.governingStrategy` (string)
    Enum: "ConsiderDescendants", "CoerceDescendants"

  - `rootDomainSetup.permissions` (object, required)

  - `rootDomainSetup.permissions.readAccess` (object, required)

  - `rootDomainSetup.permissions.readAccess.domains` (array, required)

  - `rootDomainSetup.permissions.readAccess.users` (array, required)

  - `rootDomainSetup.permissions.readAccess.endpoints` (array, required)

  - `rootDomainSetup.permissions.readAccess.policies` (array, required)

  - `rootDomainSetup.permissions.readAccess.accounts` (array, required)

  - `rootDomainSetup.permissions.readAccess.transactions` (array, required)

  - `rootDomainSetup.permissions.readAccess.requests` (array, required)

  - `rootDomainSetup.permissions.readAccess.events` (array, required)

  - `rootDomainSetup.description` (string)

  - `rootDomainSetup.customProperties` (object, required)

  - `rootDomainSetup.users` (array, required)

  - `rootDomainSetup.users.id` (string, required)

  - `rootDomainSetup.users.alias` (string, required)

  - `rootDomainSetup.users.publicKey` (string, required)

  - `rootDomainSetup.users.roles` (array, required)

  - `rootDomainSetup.users.description` (string)

  - `rootDomainSetup.users.loginIds` (array)
    Domain-unique `loginId`-`loginProviderId` pairs. Must be specified for login and match pre-configured values.

  - `rootDomainSetup.users.loginIds.id` (string, required)
    User identifier used by the provider.

  - `rootDomainSetup.users.loginIds.providerId` (string, required)
    Login provider. For internal login, set to `harmonize`. For external identity providers, must match the provider name.

  - `rootDomainSetup.policies` (array, required)

  - `rootDomainSetup.policies.id` (string, required)

  - `rootDomainSetup.policies.alias` (string, required)

  - `rootDomainSetup.policies.rank` (integer, required)

  - `rootDomainSetup.policies.intentTypes` (array)

  - `rootDomainSetup.policies.scope` (string, required)
    Enum: "Self", "Descendants", "SelfAndDescendants"

  - `rootDomainSetup.policies.scriptingEngine` (string, required)
    Enum: "Javascript_v0"

  - `rootDomainSetup.policies.condition` (any)
    Example: {"left":{"left":{"expression":"true == true","type":"Expression"},"right":{"expression":"false == true","type":"Expression"},"type":"And"},"right":{"left":{"expression":"true == false","type":"Express…

  - `rootDomainSetup.policies.condition.type` (string, required)
    Enum: "And", "Expression", "Or"

  - `rootDomainSetup.policies.condition.expression` (string, required)

  - `rootDomainSetup.policies.workflow` (array)

  - `rootDomainSetup.policies.workflow.type` (string, required)
    Enum: "And", "Or", "RoleQuorum"

  - `rootDomainSetup.policies.workflow.role` (string, required)

  - `rootDomainSetup.policies.workflow.quorum` (integer, required)

  - `rootDomainSetup.policies.description` (string)

  - `rootDomainSetup.policies.intentOrigin` (string)
    Enum: "UserSigned", "SystemSigned"

  - `rootDomainSetup.descendants` (array)

  - `rootDomainSetup.descendants.id` (string, required)

  - `rootDomainSetup.descendants.alias` (string, required)

  - `rootDomainSetup.descendants.description` (string)

  - `rootDomainSetup.descendants.users` (array, required)

  - `rootDomainSetup.descendants.policies` (array, required)

  - `rootDomainSetup.descendants.descendants` (array, required)

  - `cryptoSetup` (object)

  - `cryptoSetup.apiSigning` (string, required)
    Enum: "Secp256r1", "Secp256k1", "Ed25519"

  - `tickers` (array)

  - `tickers.id` (string, required)

  - `tickers.ledgerId` (string, required)

  - `tickers.kind` (string, required)
    Enum: "Native", "Contract", "Token"

  - `tickers.name` (string, required)

  - `tickers.decimals` (integer)

  - `tickers.symbol` (string)

  - `tickers.ledgerDetails` (any, required)

  - `tickers.ledgerDetails.properties` (any, required)

  - `tickers.ledgerDetails.properties.type` (string, required)
    Enum: "Native"

  - `tickers.ledgerDetails.type` (string, required)
    Enum: "Algorand", "Bitcoin", "Canton", "Cardano", "Ethereum", "Hedera", "Solana", "Stellar", "Substrate", "Sui", "Tezos", "Tron", "XRPL"

  - `tickers.description` (string)

  - `systemProperties` (array)

  - `systemProperties.value` (object, required)

  - `systemProperties.value.mode` (string, required)
    Enum: "STRICT", "BALANCED", "DISABLED"

  - `systemProperties.type` (string, required)
    Enum: "AntiRewindModeProperty", "NotarySystemSignedIntentsEnabledProperty", "StateReviewAuthorityProperty"

  - `ledgers` (array)

  - `ledgers.id` (string, required)

  - `ledgers.alias` (string, required)

  - `ledgers.parameters` (any, required)

  - `ledgers.parameters.genesisId` (string, required)

  - `ledgers.parameters.genesisHash` (string, required)

  - `ledgers.parameters.nativeTickerSymbol` (string, required)

  - `ledgers.parameters.nativeTickerName` (string, required)

  - `ledgers.parameters.nativeTickerDecimals` (integer, required)

  - `ledgers.parameters.type` (string, required)
    Enum: "Algorand", "Bitcoin", "Canton", "Cardano", "Ethereum", "Hedera", "Solana", "Stellar", "Substrate", "Sui", "Tezos", "Tron", "XRPL"

  - `ledgers.parameters.supportsSegWit` (boolean, required)

  - `ledgers.parameters.vaultLedgerIdentifier` (string, required)
    Enum: "btc", "ltc", "bch", "doge", "dash"

  - `ledgers.parameters.network` (string, required)
    Enum: "mainnet", "testnet", "regtest"

  - `ledgers.parameters.tickerSymbol` (string, required)

  - `ledgers.parameters.tickerName` (string, required)

  - `ledgers.parameters.dustLimit` (string, required)
    This field is a large integer that can be positive or zero. It is represented as a string because it may contain value that cannot be expressed with JSON number without a loss of precision.

  - `ledgers.parameters.synchronizerId` (string, required)

  - `ledgers.parameters.operatorId` (string, required)

  - `ledgers.parameters.dsoPartyId` (string, required)

  - `ledgers.parameters.daRegistryOperator` (string, required)

  - `ledgers.parameters.testnetMagic` (integer)

  - `ledgers.parameters.chainId` (integer, required)

  - `ledgers.parameters.vaultLedgerIdentifier` (string, required)
    Enum: "eth", "etc"

  - `ledgers.parameters.supportsEIP1559` (boolean, required)

  - `ledgers.parameters.lamportsPerSignature` (string, required)
    This field is a large integer that can be positive or zero. It is represented as a string because it may contain value that cannot be expressed with JSON number without a loss of precision.

  - `ledgers.parameters.networkPassphrase` (string, required)

  - `ledgers.parameters.addressPrefix` (integer, required)

  - `ledgers.parameters.supportedRuntimeVersions` (array, required)

  - `ledgers.parameters.supportedRuntimeVersions.transactionVersion` (integer, required)

  - `ledgers.parameters.supportedRuntimeVersions.feeParameters` (any, required)

  - `ledgers.parameters.supportedRuntimeVersions.feeParameters.baseExtrinsic` (integer, required)

  - `ledgers.parameters.supportedRuntimeVersions.feeParameters.readWeight` (integer, required)

  - `ledgers.parameters.supportedRuntimeVersions.feeParameters.writeWeight` (integer, required)

  - `ledgers.parameters.supportedRuntimeVersions.feeParameters.transactionByteFee` (string, required)
    This field is a large integer that can be positive or zero. It is represented as a string because it may contain value that cannot be expressed with JSON number without a loss of precision.

  - `ledgers.parameters.supportedRuntimeVersions.feeParameters.weightToFeePolynomial` (array, required)

  - `ledgers.parameters.supportedRuntimeVersions.feeParameters.type` (string, required)
    Enum: "TransactionPayment"

  - `ledgers.parameters.supportedRuntimeVersions.pallets` (array, required)

  - `ledgers.parameters.supportedRuntimeVersions.pallets.name` (string, required)

  - `ledgers.parameters.supportedRuntimeVersions.pallets.moduleId` (integer, required)

  - `ledgers.parameters.supportedRuntimeVersions.pallets.methods` (array, required)

  - `ledgers.parameters.supportedRuntimeVersions.pallets.methods.name` (string, required)

  - `ledgers.parameters.supportedRuntimeVersions.pallets.methods.methodId` (integer, required)

  - `ledgers.parameters.supportedRuntimeVersions.pallets.methods.feeParameters` (any, required)

  - `ledgers.parameters.supportedRuntimeVersions.chainType` (string)
    Enum: "RelayChain", "AssetHub"

  - `ledgers.parameters.networkId` (integer, required)

  - `ledgers.description` (string)

  - `systemSignaturesPublicKey` (string)

## Response 400:

  - `400` (unknown)
    Invalid value for: body

## Response 401:

  - `401` (unknown)
    One of: Invalid JWT (InvalidJwtError); User not authorized (PermissionDeniedError)

## Response 401 fields (application/json):

  - `reason` (string, required)

  - `message` (string)

## Response 409:

  - `409` (unknown)
    Genesis already applied (GenesisCantBeLaunchedTwiceError)

## Response 409 fields (application/json):

  - `reason` (string, required)

  - `message` (string)

## Response 500:

  - `500` (unknown)
    (SystemError)

## Response 500 fields (application/json):

  - `reason` (string, required)

  - `message` (string)

