Kickstart config file is a json format with following possible parameters:

"additional_files": (optional)
	Contains list of pairs { source file (or directory), destination file
	(or directory) } to copy to the target system. Source file
	(directory) will be looked up in "search_path" list.
	Example: { "additional_files": [
		{"resizefs.sh": "/usr/local/bin/resizefs.sh"},
		{"resizefs.service": "/lib/systemd/system/resizefs.service"}]}

"additional_packages" same as "packages"

"additional_rpms_path" (optional)
	Provide a path containing additional RPMS that are to be bundled into
	the image.

"arch" (optional)
	Target system architecture. Should be set if target architecture is
	different from host one, for instance x86_64 machine building RPi
	image.
	Acceptable values are: "x86_64", "aarch64"
	Default value: autodetected host architecture
	Example: { "arch": "aarch64" }

"bootmode" (optional)
	Sets the boot type to suppot: EFI, BIOS or both.
	Acceptable values are: "bios", "efi", "dualboot"
	"bios" will add special partition (very first) for first stage grub.
	"efi" will add ESP (Efi Special Partition), format is as FAT and copy
	there EFI binaries including grub.efi
	"dualboot" will add two extra partitions for "bios" and "efi" modes.
	This target will support both modes that can be switched in bios
	settings without extra actions in the OS.
	Default value: "dualboot" for x86_64 and "efi" for aarch64
	Example: { "bootmode": "bios" }

"disk" (required)
	Target"s disk device file path to install into, such as "/dev/sda".
	Loop device is also supported.
	Example: { "disk": "/dev/sdb" }

"eject_cdrom" (optional)
	Eject or not cdrom after installation completed.
	Boolean: true or false
	Default value: true
	Example: { "eject_cdrom": false }

"hostname" (optional)
	Set target host name.
	Default value: "photon-<randomized string>"
	Example: { "hostname": "photon-machine" }

"live" (optional)
	Should be set to flase if target system will not be run on
	host machine. When it set to false, installer will not add EFI boot
	entries, and will not generate unique machine-id.
	Default value: false if "disk" is /dev/loop and true otherwise.
	Example: { "live": false }

"log_level" (optional)
	Set installer logging level.
	Acceptable values are: "error", "warning", "info", "debug"
	Default value: "info"
	Example: { "log_level": "debug" }

"ostree" (optional)
        Atomic flavour of Photon OS.
        "default_repo" (required)
                 Define the type of repo data used for installing the OS
                 There are two type: 1. Default Repo(comes with ISO) 2. Custom Repo (Remote server)
                 Boolean: true or false
                   where true : Default Repo is selected
                         false: Custom Repo is selected
                 Default value: true
        Example: { "ostree": {"default_repo": true}}
        "repo_url" (Required, Only If Custom Repo is selected)
                 Supported Value: Valid "repo" URL of remote server where repo data exists
        "repo_ref" (Required, Only If Custom Repo is selected)
                 Supported Value: Valid "ref" path which was mentioned for
                                  creation of Base Tree on remote server
        Example: { "ostree": {
                              "default_repo": false,
                              "repo_url": "http://<ip>:<port>/repo",
                              "repo_ref": "photon/3.0/x86_64/minimal"
                             }
                 }

"packagelist_file" (optional if "packages" set)
	Contains file name which has list of packages to install.
	Example: { "packagelist_file": "packages_minimal.json" }

"packages" (optional if "packagelist_file" set)
	Contains list of packages to install.
	Example: { "packages": ["minimal", "linux", "initramfs"] }

"partition_type" (optional)
	Set partition table type. Supported values are: "gpt", "msdos".
	Default value: "gpt"
	Example: { "partition_type": "msdos" }

"partitions" (optional)
	Contains list of partitions to create.
	Each partition is a dictionary of the following items:
	"filesystem" (required)
		Filesystem type. Supported values are: "swap", "ext4", "vfat".
	"disk" (optional if single disk device is available,
                required if multiple disk devices are available)
               Target disk device will have the defined partition
               Supported values are:
               "/dev/loop": loop devices
               "/dev/sdX" : scsi drives based devices
               "/dev/hdX" : IDE drives based devices
	"mountpoint" (required for non "swap" partitions)
		Mount point for the partition.
	"size" (required)
		Size of the partition in MB. If 0 then partition is considered
		as expansible to fill rest of the disk. Only one expansible
		partition is allowed.
	"fs_options" (optional)
		Additional parameters for the mkfs command as a string
	"lvm" (optional)
		Will logical volume (LVM) for this partition.
		Value is a dictionary with 2 required keys:
		"vg_name" (required)
			Name of a virtual group to put current partition into.
			Several partitions may have same "vg_name"
		"lv_name" (required)
			Unique logical volume name of the partition.
	Default value: [{"mountpoint": "/", "size": 0, "filesystem": "ext4"}]
	Example: { "partitions" : [
			{ "mountpoint": "/", "size": 0, "filesystem": "ext4",
			  "lvm": {
				   "vg_name": "VirtualGroup1",
				   "lv_name": "root"
				 }
			},
			{
				"mountpoint": "/boot/efi",
				"size": 12,
				"filesystem": "vfat",
				"fs_options": "-n EFI"
			},
			{"size": 128, "filesystem": "swap"} ] }
	Example: Multiple Disk device partition table
		{ "partitions": [
					{
					"disk": "/dev/sda",
					"mountpoint": "/",
					"size": 0,
					"filesystem": "ext4"
					},
					{
					"disk": "/dev/sdb",
					"mountpoint": "/sdb",
					"size": 0,
					"filesystem": "ext4"
					},
					{
					"disk": "/dev/sdc",
					"mountpoint": "/sdc",
					"size": 0,
					"filesystem": "ext4"
					},
				]
		}

"network" (optional)
	Used to configure network in live/installed system.
	"type" (required)
		String; must be one of dhcp/static/vlan. Indicates how the network
		is being configured.
	"hostname" (optional; when type == dhcp)
		String; DHCP client hostname
	"ip_addr" (required; when type == static)
		IP String; IP address to be configured
	"netmask" (required; when type == static)
		IP String; Netmask to be configured
	"gateway" (required; when type == static)
		IP String; Gateway IP address to be configured
	"nameserver" (required; when type == static)
		IP String; Name server IP address to be configured
	"vlan_id" (required; when type == vlan)
		ID String. (1-4094); VLAN ID number expressed as string

"password" (optional)
	Set root password. It is dictionary of the following items:
	"text" (required) password plain text ("crypted" : false)
		of encrypted ("crypted": true)
	"crypted" (required) Hint on how to interpret "text" content.
	"age" (optional) Set password expiration date. If not set, then
		used Photon OS default password aging value.
		Value: integer. Meanings:
		- Any positive number - password will be expired in
		  so many days from today.
		- Zero (0) - marks password as already expired. root
		  will be asked to change current password during the
		  first login.
		- Minus one (-1) - removes root password expiration date.
	Default value: { "crypted": true, "text": "*"} }
	    which means root is not allowed to login.
	Example: { "password": {
			"crypted": false,
			"text": "changeme",
			"age": 0 } }

"postinstall" (optional)
	Contains list of lines to be executed as a single script on
	the target after installation.
	Example: { "postinstall": [
			"#!/bin/sh",
			"echo \"Hello World\" > /etc/postinstall" ] }
"postinstallscripts" (optional)
	Contains list of scripts to execute on the target after installation.
	Scripts will be looked up in "search_path" list.
	Example: { "postinstallscripts": ["rpi3-custom-patch.sh"] }

"public_key" (optional)
	To inject entry to authorized_keys as a string. Setting this variable
	enables root login in sshd config.

"search_path" (optional)
	List of directories to search for additional files and scripts.
	Example: { "search_path": ["/home/user", "/tmp"] }

"shadow_password" (optional)
	Contains encrypted root password <encrypted password here>.
	Short form of: { "password": {
				"crypted": true,
				"text": "<encrypted password here>"} }

"ui" (optional)
	Installer will show UI for progress status if it set to true.
	Or logging output will be printed to console - default behavior.
	Boolean: true or false
	Default value: false
	Example: { "ui": true }

"linux_flavor" (optional)
	Contains the flavor of linux to install, if multiple linux flavors
	are present in "packages" or "packagelist_file"
	Acceptable values are: "linux", "linux-esx", "linux-rt", "linux-aws", and "linux-secure"
	Example: { "linux_flavor": "linux-esx" }

"photon_docker_image" (optional)
	Contains the docker image <name:tag>
	are present in "packages" or "packagelist_file"
	Acceptable values are: "photon:1.0", "photon:2.0", "photon:3.0", "photon" etc.
        Default value: "photon:latest"
	Example: { "photon_docker_image": "photon:3.0" }

For reference, look at "sample_ks.cfg" file