[[reference-shared-types-snapshot]]

////////
===========================================================================================================================
||                                                                                                                       ||
||                                                                                                                       ||
||                                                                                                                       ||
||        ██████╗ ███████╗ █████╗ ██████╗ ███╗   ███╗███████╗                                                            ||
||        ██╔══██╗██╔════╝██╔══██╗██╔══██╗████╗ ████║██╔════╝                                                            ||
||        ██████╔╝█████╗  ███████║██║  ██║██╔████╔██║█████╗                                                              ||
||        ██╔══██╗██╔══╝  ██╔══██║██║  ██║██║╚██╔╝██║██╔══╝                                                              ||
||        ██║  ██║███████╗██║  ██║██████╔╝██║ ╚═╝ ██║███████╗                                                            ||
||        ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝╚═════╝ ╚═╝     ╚═╝╚══════╝                                                            ||
||                                                                                                                       ||
||                                                                                                                       ||
||    This file is autogenerated, DO NOT send pull requests that changes this file directly.                             ||
||    You should update the script that does the generation, which can be found in:                                      ||
||    https://github.com/elastic/elastic-client-generator-js                                                             ||
||                                                                                                                       ||
||    You can run the script with the following command:                                                                 ||
||       npm run elasticsearch -- --version <version>                                                                    ||
||                                                                                                                       ||
||                                                                                                                       ||
||                                                                                                                       ||
===========================================================================================================================
////////



== Shared Snapshot types


[discrete]
[[SnapshotAzureRepository]]
=== SnapshotAzureRepository

[pass]
++++
<pre>
++++
interface SnapshotAzureRepository extends <<SnapshotRepositoryBase>> {
  type: 'azure'
  settings: <<SnapshotAzureRepositorySettings>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotAzureRepositorySettings]]
=== SnapshotAzureRepositorySettings

[pass]
++++
<pre>
++++
interface SnapshotAzureRepositorySettings extends <<SnapshotRepositorySettingsBase>> {
  client?: string
  container?: string
  base_path?: string
  readonly?: boolean
  location_mode?: string
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotFileCountSnapshotStats]]
=== SnapshotFileCountSnapshotStats

[pass]
++++
<pre>
++++
interface SnapshotFileCountSnapshotStats {
  file_count: <<integer>>
  size_in_bytes: <<long>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotGcsRepository]]
=== SnapshotGcsRepository

[pass]
++++
<pre>
++++
interface SnapshotGcsRepository extends <<SnapshotRepositoryBase>> {
  type: 'gcs'
  settings: <<SnapshotGcsRepositorySettings>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotGcsRepositorySettings]]
=== SnapshotGcsRepositorySettings

[pass]
++++
<pre>
++++
interface SnapshotGcsRepositorySettings extends <<SnapshotRepositorySettingsBase>> {
  bucket: string
  client?: string
  base_path?: string
  readonly?: boolean
  application_name?: string
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotIndexDetails]]
=== SnapshotIndexDetails

[pass]
++++
<pre>
++++
interface SnapshotIndexDetails {
  shard_count: <<integer>>
  size?: <<ByteSize>>
  size_in_bytes: <<long>>
  max_segments_per_shard: <<long>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotInfoFeatureState]]
=== SnapshotInfoFeatureState

[pass]
++++
<pre>
++++
interface SnapshotInfoFeatureState {
  feature_name: string
  indices: <<Indices>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotReadOnlyUrlRepository]]
=== SnapshotReadOnlyUrlRepository

[pass]
++++
<pre>
++++
interface SnapshotReadOnlyUrlRepository extends <<SnapshotRepositoryBase>> {
  type: 'url'
  settings: <<SnapshotReadOnlyUrlRepositorySettings>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotReadOnlyUrlRepositorySettings]]
=== SnapshotReadOnlyUrlRepositorySettings

[pass]
++++
<pre>
++++
interface SnapshotReadOnlyUrlRepositorySettings extends <<SnapshotRepositorySettingsBase>> {
  http_max_retries?: <<integer>>
  http_socket_timeout?: <<Duration>>
  max_number_of_snapshots?: <<integer>>
  url: string
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotRepository]]
=== SnapshotRepository

[pass]
++++
<pre>
++++
type SnapshotRepository = <<SnapshotAzureRepository>> | <<SnapshotGcsRepository>> | SnapshotS3<<Repository>> | <<SnapshotSharedFileSystemRepository>> | <<SnapshotReadOnlyUrlRepository>> | <<SnapshotSourceOnlyRepository>>
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotRepositoryBase]]
=== SnapshotRepositoryBase

[pass]
++++
<pre>
++++
interface SnapshotRepositoryBase {
  uuid?: <<Uuid>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotRepositorySettingsBase]]
=== SnapshotRepositorySettingsBase

[pass]
++++
<pre>
++++
interface SnapshotRepositorySettingsBase {
  chunk_size?: <<ByteSize>>
  compress?: boolean
  max_restore_bytes_per_sec?: <<ByteSize>>
  max_snapshot_bytes_per_sec?: <<ByteSize>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotS3Repository]]
=== SnapshotS3Repository

[pass]
++++
<pre>
++++
interface SnapshotS3<<Repository>> extends <<SnapshotRepositoryBase>> {
  type: 's3'
  settings: SnapshotS3RepositorySettings
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotS3RepositorySettings]]
=== SnapshotS3RepositorySettings

[pass]
++++
<pre>
++++
interface SnapshotS3RepositorySettings extends <<SnapshotRepositorySettingsBase>> {
  bucket: string
  client?: string
  base_path?: string
  readonly?: boolean
  server_side_encryption?: boolean
  buffer_size?: <<ByteSize>>
  canned_acl?: string
  storage_class?: string
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotShardsStats]]
=== SnapshotShardsStats

[pass]
++++
<pre>
++++
interface SnapshotShardsStats {
  done: <<long>>
  failed: <<long>>
  finalizing: <<long>>
  initializing: <<long>>
  started: <<long>>
  total: <<long>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotShardsStatsStage]]
=== SnapshotShardsStatsStage

[pass]
++++
<pre>
++++
type SnapshotShardsStatsStage = 'DONE' | 'FAILURE' | 'FINALIZE' | 'INIT' | 'STARTED'
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotShardsStatsSummary]]
=== SnapshotShardsStatsSummary

[pass]
++++
<pre>
++++
interface SnapshotShardsStatsSummary {
  incremental: <<SnapshotShardsStatsSummaryItem>>
  total: <<SnapshotShardsStatsSummaryItem>>
  start_time_in_millis: <<EpochTime>><<<UnitMillis>>>
  time?: <<Duration>>
  time_in_millis: <<DurationValue>><<<UnitMillis>>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotShardsStatsSummaryItem]]
=== SnapshotShardsStatsSummaryItem

[pass]
++++
<pre>
++++
interface SnapshotShardsStatsSummaryItem {
  file_count: <<long>>
  size_in_bytes: <<long>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotSharedFileSystemRepository]]
=== SnapshotSharedFileSystemRepository

[pass]
++++
<pre>
++++
interface SnapshotSharedFileSystemRepository extends <<SnapshotRepositoryBase>> {
  type: 'fs'
  settings: <<SnapshotSharedFileSystemRepositorySettings>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotSharedFileSystemRepositorySettings]]
=== SnapshotSharedFileSystemRepositorySettings

[pass]
++++
<pre>
++++
interface SnapshotSharedFileSystemRepositorySettings extends <<SnapshotRepositorySettingsBase>> {
  location: string
  max_number_of_snapshots?: <<integer>>
  readonly?: boolean
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotSnapshotIndexStats]]
=== SnapshotSnapshotIndexStats

[pass]
++++
<pre>
++++
interface SnapshotSnapshotIndexStats {
  shards: Record<string, <<SnapshotSnapshotShardsStatus>>>
  shards_stats: <<SnapshotShardsStats>>
  stats: <<SnapshotSnapshotStats>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotSnapshotInfo]]
=== SnapshotSnapshotInfo

[pass]
++++
<pre>
++++
interface SnapshotSnapshotInfo {
  data_streams: string[]
  duration?: <<Duration>>
  duration_in_millis?: <<DurationValue>><<<UnitMillis>>>
  end_time?: <<DateTime>>
  end_time_in_millis?: <<EpochTime>><<<UnitMillis>>>
  failures?: <<SnapshotSnapshotShardFailure>>[]
  include_global_state?: boolean
  indices?: <<IndexName>>[]
  index_details?: Record<<<IndexName>>, <<SnapshotIndexDetails>>>
  metadata?: <<Metadata>>
  reason?: string
  repository?: <<Name>>
  snapshot: <<Name>>
  shards?: <<ShardStatistics>>
  start_time?: <<DateTime>>
  start_time_in_millis?: <<EpochTime>><<<UnitMillis>>>
  state?: string
  uuid: <<Uuid>>
  version?: <<VersionString>>
  version_id?: <<VersionNumber>>
  feature_states?: <<SnapshotInfoFeatureState>>[]
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotSnapshotShardFailure]]
=== SnapshotSnapshotShardFailure

[pass]
++++
<pre>
++++
interface SnapshotSnapshotShardFailure {
  index: <<IndexName>>
  node_id?: <<Id>>
  reason: string
  shard_id: <<Id>>
  index_uuid: <<Id>>
  status: string
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotSnapshotShardsStatus]]
=== SnapshotSnapshotShardsStatus

[pass]
++++
<pre>
++++
interface SnapshotSnapshotShardsStatus {
  stage: <<SnapshotShardsStatsStage>>
  stats: <<SnapshotShardsStatsSummary>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotSnapshotSort]]
=== SnapshotSnapshotSort

[pass]
++++
<pre>
++++
type SnapshotSnapshotSort = 'start_time' | 'duration' | 'name' | 'index_count' | 'repository' | 'shard_count' | 'failed_shard_count'
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotSnapshotStats]]
=== SnapshotSnapshotStats

[pass]
++++
<pre>
++++
interface SnapshotSnapshotStats {
  incremental: <<SnapshotFileCountSnapshotStats>>
  start_time_in_millis: <<EpochTime>><<<UnitMillis>>>
  time?: <<Duration>>
  time_in_millis: <<DurationValue>><<<UnitMillis>>>
  total: <<SnapshotFileCountSnapshotStats>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotSourceOnlyRepository]]
=== SnapshotSourceOnlyRepository

[pass]
++++
<pre>
++++
interface SnapshotSourceOnlyRepository extends <<SnapshotRepositoryBase>> {
  type: 'source'
  settings: <<SnapshotSourceOnlyRepositorySettings>>
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotSourceOnlyRepositorySettings]]
=== SnapshotSourceOnlyRepositorySettings

[pass]
++++
<pre>
++++
interface SnapshotSourceOnlyRepositorySettings extends <<SnapshotRepositorySettingsBase>> {
  delegate_type?: string
  max_number_of_snapshots?: <<integer>>
  read_only?: boolean
  readonly?: boolean
}
[pass]
++++
</pre>
++++

[discrete]
[[SnapshotStatus]]
=== SnapshotStatus

[pass]
++++
<pre>
++++
interface SnapshotStatus {
  include_global_state: boolean
  indices: Record<string, <<SnapshotSnapshotIndexStats>>>
  repository: string
  shards_stats: <<SnapshotShardsStats>>
  snapshot: string
  state: string
  stats: <<SnapshotSnapshotStats>>
  uuid: <<Uuid>>
}
[pass]
++++
</pre>
++++
