# 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. If not specified, a default internal login will be created.

  - `rootDomainSetup.users.loginIds.id` (string, required)
    User name. For internal login, set to the user alias. For external identity providers, must match the external provider user name.

  - `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.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", "Cardano", "Ethereum", "Hedera", "Solana", "Stellar", "Substrate", "Tezos", "XRPL"

  - `tickers.description` (string)

  - `systemProperties` (array)

  - `systemProperties.value` (object, required)

  - `systemProperties.value.publicKey` (any, required)

  - `systemProperties.value.publicKey.value` (string, required)

  - `systemProperties.value.publicKey.type` (string, required)
    Enum: "PublicKey"

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

## 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)

