<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="saasservicemgmt_v1beta1.html">SaaS Runtime API</a> . <a href="saasservicemgmt_v1beta1.projects.html">projects</a> . <a href="saasservicemgmt_v1beta1.projects.locations.html">locations</a> . <a href="saasservicemgmt_v1beta1.projects.locations.replicationsInternal.html">replicationsInternal</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, replicationInternalId=None, requestId=None, validateOnly=None, x__xgafv=None)</a></code></p>
<p class="firstline">Create a new replication internal.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, etag=None, requestId=None, validateOnly=None, x__xgafv=None)</a></code></p>
<p class="firstline">Delete a single replication internal.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieve a single replication internal.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieve a collection of replication internals.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, etag=None, requestId=None, updateMask=None, validateOnly=None, x__xgafv=None)</a></code></p>
<p class="firstline">Update a single replication internal.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, replicationInternalId=None, requestId=None, validateOnly=None, x__xgafv=None)</code>
  <pre>Create a new replication internal.

Args:
  parent: string, Required. The parent of the replication internal. (required)
  body: object, The request body.
    The object takes the form of:

{ # ReplicationInternal is a resource that represents the replication of a resource to multiple locations. This is an internal resource to achieve replication before GA and will not expose to the public API.
  &quot;annotations&quot;: { # Optional. Annotations is an unstructured key-value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/user-guide/annotations
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was created.
  &quot;etag&quot;: &quot;A String&quot;, # Output only. An opaque value that uniquely identifies a version or generation of a resource. It can be used to confirm that the client and server agree on the ordering of a resource being written.
  &quot;labels&quot;: { # Optional. The labels on the resource, which can be used for categorization. similar to Kubernetes resource labels.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;maxRetryCount&quot;: 42, # Optional. The maximum number of retries for the replication. If the replication fails from a retryable error, it will be retried for this number of times.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The resource name (full URI of the resource) following the standard naming scheme: &quot;projects/{project}/locations/{location}/replicationInternal/{replication_internal_id}&quot;
  &quot;payload&quot;: { # Required. The payload of the request for replication. It could be any request type that is supported by the replication service. e.g. CreateUnitKindRequest, UpdateUnitKindRequest, DeleteReleaseRequest, etc.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the replication.
  &quot;stats&quot;: { # Output only. The stats of the replication. One key for each location in target_locations
    &quot;a_key&quot;: { # ReplicationStats contains the stats of the replication. It contains the resources that are pending, finished, failed, and the errors if any.
      &quot;errors&quot;: [ # The errors that occurred during replication, one error for each failed resource.
        { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
          &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
          &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
        },
      ],
      &quot;failedResources&quot;: [ # The resources that are failed replication.
        &quot;A String&quot;,
      ],
      &quot;finishedResources&quot;: [ # The resources that are finished replication.
        &quot;A String&quot;,
      ],
      &quot;pendingResources&quot;: [ # The resources that are pending replication.
        &quot;A String&quot;,
      ],
      &quot;retryCount&quot;: [ # The number of retries for the failed resources.
        42,
      ],
    },
  },
  &quot;targetLocations&quot;: [ # Optional. The target locations to replicate the resource to.
    &quot;A String&quot;,
  ],
  &quot;uid&quot;: &quot;A String&quot;, # Output only. The unique identifier of the resource. UID is unique in the time and space for this resource within the scope of the service. It is typically generated by the server on successful creation of a resource and must not be changed. UID is used to uniquely identify resources with resource name reuses. This should be a UUID4.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was last updated. Any change to the resource made by users must refresh this value. Changes to a resource made by the service should refresh this value.
}

  replicationInternalId: string, Required. The ID value for the new replication internal.
  requestId: string, An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  validateOnly: boolean, If &quot;validate_only&quot; is set to true, the service will try to validate that this request would succeed, but will not actually make changes.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # ReplicationInternal is a resource that represents the replication of a resource to multiple locations. This is an internal resource to achieve replication before GA and will not expose to the public API.
  &quot;annotations&quot;: { # Optional. Annotations is an unstructured key-value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/user-guide/annotations
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was created.
  &quot;etag&quot;: &quot;A String&quot;, # Output only. An opaque value that uniquely identifies a version or generation of a resource. It can be used to confirm that the client and server agree on the ordering of a resource being written.
  &quot;labels&quot;: { # Optional. The labels on the resource, which can be used for categorization. similar to Kubernetes resource labels.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;maxRetryCount&quot;: 42, # Optional. The maximum number of retries for the replication. If the replication fails from a retryable error, it will be retried for this number of times.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The resource name (full URI of the resource) following the standard naming scheme: &quot;projects/{project}/locations/{location}/replicationInternal/{replication_internal_id}&quot;
  &quot;payload&quot;: { # Required. The payload of the request for replication. It could be any request type that is supported by the replication service. e.g. CreateUnitKindRequest, UpdateUnitKindRequest, DeleteReleaseRequest, etc.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the replication.
  &quot;stats&quot;: { # Output only. The stats of the replication. One key for each location in target_locations
    &quot;a_key&quot;: { # ReplicationStats contains the stats of the replication. It contains the resources that are pending, finished, failed, and the errors if any.
      &quot;errors&quot;: [ # The errors that occurred during replication, one error for each failed resource.
        { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
          &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
          &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
        },
      ],
      &quot;failedResources&quot;: [ # The resources that are failed replication.
        &quot;A String&quot;,
      ],
      &quot;finishedResources&quot;: [ # The resources that are finished replication.
        &quot;A String&quot;,
      ],
      &quot;pendingResources&quot;: [ # The resources that are pending replication.
        &quot;A String&quot;,
      ],
      &quot;retryCount&quot;: [ # The number of retries for the failed resources.
        42,
      ],
    },
  },
  &quot;targetLocations&quot;: [ # Optional. The target locations to replicate the resource to.
    &quot;A String&quot;,
  ],
  &quot;uid&quot;: &quot;A String&quot;, # Output only. The unique identifier of the resource. UID is unique in the time and space for this resource within the scope of the service. It is typically generated by the server on successful creation of a resource and must not be changed. UID is used to uniquely identify resources with resource name reuses. This should be a UUID4.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was last updated. Any change to the resource made by users must refresh this value. Changes to a resource made by the service should refresh this value.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, etag=None, requestId=None, validateOnly=None, x__xgafv=None)</code>
  <pre>Delete a single replication internal.

Args:
  name: string, Required. The resource name of the resource within a service. (required)
  etag: string, The etag known to the client for the expected state of the replication internal. This is used with state-changing methods to prevent accidental overwrites when multiple user agents might be acting in parallel on the same resource. An etag wildcard provide optimistic concurrency based on the expected existence of the replication internal. The Any wildcard (`*`) requires that the resource must already exists, and the Not Any wildcard (`!*`) requires that it must not.
  requestId: string, An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  validateOnly: boolean, If &quot;validate_only&quot; is set to true, the service will try to validate that this request would succeed, but will not actually make changes.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Retrieve a single replication internal.

Args:
  name: string, Required. The resource name of the resource within a service. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # ReplicationInternal is a resource that represents the replication of a resource to multiple locations. This is an internal resource to achieve replication before GA and will not expose to the public API.
  &quot;annotations&quot;: { # Optional. Annotations is an unstructured key-value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/user-guide/annotations
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was created.
  &quot;etag&quot;: &quot;A String&quot;, # Output only. An opaque value that uniquely identifies a version or generation of a resource. It can be used to confirm that the client and server agree on the ordering of a resource being written.
  &quot;labels&quot;: { # Optional. The labels on the resource, which can be used for categorization. similar to Kubernetes resource labels.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;maxRetryCount&quot;: 42, # Optional. The maximum number of retries for the replication. If the replication fails from a retryable error, it will be retried for this number of times.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The resource name (full URI of the resource) following the standard naming scheme: &quot;projects/{project}/locations/{location}/replicationInternal/{replication_internal_id}&quot;
  &quot;payload&quot;: { # Required. The payload of the request for replication. It could be any request type that is supported by the replication service. e.g. CreateUnitKindRequest, UpdateUnitKindRequest, DeleteReleaseRequest, etc.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the replication.
  &quot;stats&quot;: { # Output only. The stats of the replication. One key for each location in target_locations
    &quot;a_key&quot;: { # ReplicationStats contains the stats of the replication. It contains the resources that are pending, finished, failed, and the errors if any.
      &quot;errors&quot;: [ # The errors that occurred during replication, one error for each failed resource.
        { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
          &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
          &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
        },
      ],
      &quot;failedResources&quot;: [ # The resources that are failed replication.
        &quot;A String&quot;,
      ],
      &quot;finishedResources&quot;: [ # The resources that are finished replication.
        &quot;A String&quot;,
      ],
      &quot;pendingResources&quot;: [ # The resources that are pending replication.
        &quot;A String&quot;,
      ],
      &quot;retryCount&quot;: [ # The number of retries for the failed resources.
        42,
      ],
    },
  },
  &quot;targetLocations&quot;: [ # Optional. The target locations to replicate the resource to.
    &quot;A String&quot;,
  ],
  &quot;uid&quot;: &quot;A String&quot;, # Output only. The unique identifier of the resource. UID is unique in the time and space for this resource within the scope of the service. It is typically generated by the server on successful creation of a resource and must not be changed. UID is used to uniquely identify resources with resource name reuses. This should be a UUID4.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was last updated. Any change to the resource made by users must refresh this value. Changes to a resource made by the service should refresh this value.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Retrieve a collection of replication internals.

Args:
  parent: string, Required. The parent of the replication internal. (required)
  filter: string, Filter the list as specified in https://google.aip.dev/160.
  orderBy: string, Order results as specified in https://google.aip.dev/132.
  pageSize: integer, The maximum number of replication internals to send per page.
  pageToken: string, The page token: If the next_page_token from a previous response is provided, this request will send the subsequent page.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response structure for the ListReplicationsInternal method.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # If present, the next page token can be provided to a subsequent ListReplicationsInternal call to list the next page. If empty, there are no more pages.
  &quot;replicationsInternal&quot;: [ # The resulting replication internals.
    { # ReplicationInternal is a resource that represents the replication of a resource to multiple locations. This is an internal resource to achieve replication before GA and will not expose to the public API.
      &quot;annotations&quot;: { # Optional. Annotations is an unstructured key-value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/user-guide/annotations
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was created.
      &quot;etag&quot;: &quot;A String&quot;, # Output only. An opaque value that uniquely identifies a version or generation of a resource. It can be used to confirm that the client and server agree on the ordering of a resource being written.
      &quot;labels&quot;: { # Optional. The labels on the resource, which can be used for categorization. similar to Kubernetes resource labels.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;maxRetryCount&quot;: 42, # Optional. The maximum number of retries for the replication. If the replication fails from a retryable error, it will be retried for this number of times.
      &quot;name&quot;: &quot;A String&quot;, # Identifier. The resource name (full URI of the resource) following the standard naming scheme: &quot;projects/{project}/locations/{location}/replicationInternal/{replication_internal_id}&quot;
      &quot;payload&quot;: { # Required. The payload of the request for replication. It could be any request type that is supported by the replication service. e.g. CreateUnitKindRequest, UpdateUnitKindRequest, DeleteReleaseRequest, etc.
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
      &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the replication.
      &quot;stats&quot;: { # Output only. The stats of the replication. One key for each location in target_locations
        &quot;a_key&quot;: { # ReplicationStats contains the stats of the replication. It contains the resources that are pending, finished, failed, and the errors if any.
          &quot;errors&quot;: [ # The errors that occurred during replication, one error for each failed resource.
            { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
              &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
              &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
                {
                  &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                },
              ],
              &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
            },
          ],
          &quot;failedResources&quot;: [ # The resources that are failed replication.
            &quot;A String&quot;,
          ],
          &quot;finishedResources&quot;: [ # The resources that are finished replication.
            &quot;A String&quot;,
          ],
          &quot;pendingResources&quot;: [ # The resources that are pending replication.
            &quot;A String&quot;,
          ],
          &quot;retryCount&quot;: [ # The number of retries for the failed resources.
            42,
          ],
        },
      },
      &quot;targetLocations&quot;: [ # Optional. The target locations to replicate the resource to.
        &quot;A String&quot;,
      ],
      &quot;uid&quot;: &quot;A String&quot;, # Output only. The unique identifier of the resource. UID is unique in the time and space for this resource within the scope of the service. It is typically generated by the server on successful creation of a resource and must not be changed. UID is used to uniquely identify resources with resource name reuses. This should be a UUID4.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was last updated. Any change to the resource made by users must refresh this value. Changes to a resource made by the service should refresh this value.
    },
  ],
  &quot;unreachable&quot;: [ # Locations that could not be reached.
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</code>
  <pre>Retrieves the next page of results.

        Args:
          previous_request: The request for the previous page. (required)
          previous_response: The response from the request for the previous page. (required)

        Returns:
          A request object that you can call &#x27;execute()&#x27; on to request the next
          page. Returns None if there are no more items in the collection.
        </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, etag=None, requestId=None, updateMask=None, validateOnly=None, x__xgafv=None)</code>
  <pre>Update a single replication internal.

Args:
  name: string, Identifier. The resource name (full URI of the resource) following the standard naming scheme: &quot;projects/{project}/locations/{location}/replicationInternal/{replication_internal_id}&quot; (required)
  body: object, The request body.
    The object takes the form of:

{ # ReplicationInternal is a resource that represents the replication of a resource to multiple locations. This is an internal resource to achieve replication before GA and will not expose to the public API.
  &quot;annotations&quot;: { # Optional. Annotations is an unstructured key-value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/user-guide/annotations
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was created.
  &quot;etag&quot;: &quot;A String&quot;, # Output only. An opaque value that uniquely identifies a version or generation of a resource. It can be used to confirm that the client and server agree on the ordering of a resource being written.
  &quot;labels&quot;: { # Optional. The labels on the resource, which can be used for categorization. similar to Kubernetes resource labels.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;maxRetryCount&quot;: 42, # Optional. The maximum number of retries for the replication. If the replication fails from a retryable error, it will be retried for this number of times.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The resource name (full URI of the resource) following the standard naming scheme: &quot;projects/{project}/locations/{location}/replicationInternal/{replication_internal_id}&quot;
  &quot;payload&quot;: { # Required. The payload of the request for replication. It could be any request type that is supported by the replication service. e.g. CreateUnitKindRequest, UpdateUnitKindRequest, DeleteReleaseRequest, etc.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the replication.
  &quot;stats&quot;: { # Output only. The stats of the replication. One key for each location in target_locations
    &quot;a_key&quot;: { # ReplicationStats contains the stats of the replication. It contains the resources that are pending, finished, failed, and the errors if any.
      &quot;errors&quot;: [ # The errors that occurred during replication, one error for each failed resource.
        { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
          &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
          &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
        },
      ],
      &quot;failedResources&quot;: [ # The resources that are failed replication.
        &quot;A String&quot;,
      ],
      &quot;finishedResources&quot;: [ # The resources that are finished replication.
        &quot;A String&quot;,
      ],
      &quot;pendingResources&quot;: [ # The resources that are pending replication.
        &quot;A String&quot;,
      ],
      &quot;retryCount&quot;: [ # The number of retries for the failed resources.
        42,
      ],
    },
  },
  &quot;targetLocations&quot;: [ # Optional. The target locations to replicate the resource to.
    &quot;A String&quot;,
  ],
  &quot;uid&quot;: &quot;A String&quot;, # Output only. The unique identifier of the resource. UID is unique in the time and space for this resource within the scope of the service. It is typically generated by the server on successful creation of a resource and must not be changed. UID is used to uniquely identify resources with resource name reuses. This should be a UUID4.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was last updated. Any change to the resource made by users must refresh this value. Changes to a resource made by the service should refresh this value.
}

  etag: string, The etag known to the client for the expected state of the replication internal. This is used with state-changing methods to prevent accidental overwrites when multiple user agents might be acting in parallel on the same resource. An etag wildcard provide optimistic concurrency based on the expected existence of the replication internal. The Any wildcard (`*`) requires that the resource must already exists, and the Not Any wildcard (`!*`) requires that it must not.
  requestId: string, An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  updateMask: string, Field mask is used to specify the fields to be overwritten in the ReplicationInternal resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields in the ReplicationInternal will be overwritten.
  validateOnly: boolean, If &quot;validate_only&quot; is set to true, the service will try to validate that this request would succeed, but will not actually make changes.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # ReplicationInternal is a resource that represents the replication of a resource to multiple locations. This is an internal resource to achieve replication before GA and will not expose to the public API.
  &quot;annotations&quot;: { # Optional. Annotations is an unstructured key-value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/user-guide/annotations
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was created.
  &quot;etag&quot;: &quot;A String&quot;, # Output only. An opaque value that uniquely identifies a version or generation of a resource. It can be used to confirm that the client and server agree on the ordering of a resource being written.
  &quot;labels&quot;: { # Optional. The labels on the resource, which can be used for categorization. similar to Kubernetes resource labels.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;maxRetryCount&quot;: 42, # Optional. The maximum number of retries for the replication. If the replication fails from a retryable error, it will be retried for this number of times.
  &quot;name&quot;: &quot;A String&quot;, # Identifier. The resource name (full URI of the resource) following the standard naming scheme: &quot;projects/{project}/locations/{location}/replicationInternal/{replication_internal_id}&quot;
  &quot;payload&quot;: { # Required. The payload of the request for replication. It could be any request type that is supported by the replication service. e.g. CreateUnitKindRequest, UpdateUnitKindRequest, DeleteReleaseRequest, etc.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The state of the replication.
  &quot;stats&quot;: { # Output only. The stats of the replication. One key for each location in target_locations
    &quot;a_key&quot;: { # ReplicationStats contains the stats of the replication. It contains the resources that are pending, finished, failed, and the errors if any.
      &quot;errors&quot;: [ # The errors that occurred during replication, one error for each failed resource.
        { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
          &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
          &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
            {
              &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
            },
          ],
          &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
        },
      ],
      &quot;failedResources&quot;: [ # The resources that are failed replication.
        &quot;A String&quot;,
      ],
      &quot;finishedResources&quot;: [ # The resources that are finished replication.
        &quot;A String&quot;,
      ],
      &quot;pendingResources&quot;: [ # The resources that are pending replication.
        &quot;A String&quot;,
      ],
      &quot;retryCount&quot;: [ # The number of retries for the failed resources.
        42,
      ],
    },
  },
  &quot;targetLocations&quot;: [ # Optional. The target locations to replicate the resource to.
    &quot;A String&quot;,
  ],
  &quot;uid&quot;: &quot;A String&quot;, # Output only. The unique identifier of the resource. UID is unique in the time and space for this resource within the scope of the service. It is typically generated by the server on successful creation of a resource and must not be changed. UID is used to uniquely identify resources with resource name reuses. This should be a UUID4.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The timestamp when the resource was last updated. Any change to the resource made by users must refresh this value. Changes to a resource made by the service should refresh this value.
}</pre>
</div>

</body></html>