# Stored Transaction JSON Format

The stored transaction format is considered unstable and may change in an incompatible way at any time. It will work if the same version of dnf is used to store and replay (or between versions as long as it stays the same).

## Top-level Object

`version`

  Type: string

  The version of the stored transaction format, in the form `MAJOR.MINOR`.

  `MAJOR` version denotes backwards incompatible changes (old dnf won't work with new transaction JSON).

  `MINOR` version denotes extending the format without breaking backwards compatibility (old dnf can work with new transaction JSON).

`rpms`

  Type: an array of rpm objects

  A list of RPM packages in the transaction.

`groups`

  Type: an array of group objects

  A list of groups in the transaction.

`environments`

  Type: an array of group objects

  A list of environment groups in the transaction.

## rpm Object

`action`

  Type: string

  Possible values: `Downgrade, Downgraded, Install, Obsoleted, Reason Change, Reinstall, Reinstalled, Removed, Upgrade, Upgraded`

  The action performed on the package in the transaction.

`nevra`

  Type: string

  `NEVRA` (`name-epoch:version-release.arch`) of the package.

`reason`

  Type: string

  Possible values: `dependency, clean, group, unknown, user, weak-dependency`

  The reason why the package was pulled into the transaction.

`repo_id`

  Type: string

  The id of the repository this package is coming from. Note repository ids are defined in the local repository configuration and may differ between systems.

## group Object

`action`

  Type: string

  Possible values: `Install, Upgrade, Removed`

  The action performed on the group in the transaction.

`id`

  Type: string

  The id of the group.

`package_types`

  Type: string

  Possible values: `conditional, default, mandatory, optional`

  The types of packages in the group that will be installed. Valid only for the `Install` action.

`packages`

  Type: an array of group-package objects

  The packages belonging to the group in the transaction.

## environment Object

`action`

  Type: string

  Possible values: `Install, Upgrade, Removed`

  The action performed on the environment group in the transaction.

`id`

  Type: string

  The id of the environment group.

`package_types`

  Type: string

  Possible values: `conditional, default, mandatory, optional`

  The types of packages in the environment group that will be installed. Valid only for the `Install` action.

`group`

  Type: an array of environment-group objects

  The groups belonging to the environment in the transaction.

## group-package Object

`installed`

  Type: boolean

  Whether the package is considered installed as part of the group.

`name`

  Type: string

  The name of the package.

`package_type`

  Type: string

  Possible values: `conditional, default, mandatory, optional`

  The type of the package in the group.

## environment-group Object

`group_type`

  Type: string

  Possible values: `mandatory, optional`

  The type of the group in the environment.

`id`

  Type: string

  The id of the group.

`installed`

  Type: boolean

  Whether the group is considered installed as part of the environment.