///<summary>PUT on /_snapshot/{repository}/{snapshot} <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
 ///<param name = "repository">A repository name</param>
 ///<param name = "snapshot">A snapshot name</param>
 ///<param name = "body">The snapshot definition</param>
 ///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
 public Task <TResponse> SnapshotAsync <TResponse>(string repository, string snapshot, PostData body, SnapshotRequestParameters requestParameters = null, CancellationToken ctx = default)
     where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync <TResponse>(PUT, Url($"_snapshot/{repository:repository}/{snapshot:snapshot}"), ctx, body, RequestParams(requestParameters));
 ///<summary>PUT on /_snapshot/{repository}/{snapshot} <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-snapshots.html</para></summary>
 ///<param name = "repository">A repository name</param>
 ///<param name = "snapshot">A snapshot name</param>
 ///<param name = "body">The snapshot definition</param>
 ///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
 public TResponse Snapshot <TResponse>(string repository, string snapshot, PostData body, SnapshotRequestParameters requestParameters = null)
     where TResponse : class, IElasticsearchResponse, new() => DoRequest <TResponse>(PUT, Url($"_snapshot/{repository:repository}/{snapshot:snapshot}"), body, RequestParams(requestParameters));