public static PrepareParams fromJson(byte[] json, TenantName tenant, Duration barrierTimeout, boolean verboseOverride) {
        Slime slime = SlimeUtils.jsonToSlimeOrThrow(json);
        Inspector params = slime.get();

        return new Builder()
                .ignoreValidationErrors(booleanValue(params, IGNORE_VALIDATION_PARAM_NAME))
                .dryRun(booleanValue(params, DRY_RUN_PARAM_NAME))
                .verbose(booleanValue(params, VERBOSE_PARAM_NAME) || verboseOverride)
                .timeoutBudget(SessionHandler.getTimeoutBudget(getTimeout(params, barrierTimeout)))
                .applicationId(createApplicationId(params, tenant))
                .vespaVersion(SlimeUtils.optionalString(params.field(VESPA_VERSION_PARAM_NAME)).orElse(null))
                .vespaVersionToBuildFirst(SlimeUtils.optionalString(params.field(VESPA_VERSION_TO_BUILD_FIRST_PARAM_NAME)).orElse(null))
                .containerEndpointList(deserialize(params.field(CONTAINER_ENDPOINTS_PARAM_NAME), ContainerEndpointSerializer::endpointListFromSlime, List.of()))
                .endpointCertificateMetadata(deserialize(params.field(ENDPOINT_CERTIFICATE_METADATA_PARAM_NAME), EndpointCertificateMetadataSerializer::fromSlime))
                .dockerImageRepository(SlimeUtils.optionalString(params.field(DOCKER_IMAGE_REPOSITORY)).orElse(null))
                .athenzDomain(SlimeUtils.optionalString(params.field(ATHENZ_DOMAIN)).orElse(null))
                .quota(deserialize(params.field(QUOTA_PARAM_NAME), Quota::fromSlime))
                .tenantVaults(deserialize(params.field(TENANT_VAULTS_PARAM_NAME), TenantVaultSerializer::listFromSlime, List.of()))
                .tenantSecretStores(deserialize(params.field(TENANT_SECRET_STORES_PARAM_NAME), TenantSecretStoreSerializer::listFromSlime, List.of()))
                .force(booleanValue(params, FORCE_PARAM_NAME))
                .waitForResourcesInPrepare(booleanValue(params, WAIT_FOR_RESOURCES_IN_PREPARE))
                .operatorCertificates(deserialize(params.field(OPERATOR_CERTIFICATES), PrepareParams::readOperatorCertificates, List.of()))
                .cloudAccount(deserialize(params.field(CLOUD_ACCOUNT), CloudAccountSerializer::fromSlime, null))
                .dataplaneTokens(deserialize(params.field(DATAPLANE_TOKENS), DataplaneTokenSerializer::fromSlime, List.of()))
                .build();
    }
Parameters for preparing an application. Immutable.

@author Ulf Lilleengen
configserver/src/main/java/com/yahoo/vespa/config/server/session/PrepareParams.java