@@ -77,6 +77,13 @@ message AzureCredentials {
7777// the `updated` property of Cloud Storage objects, the `LastModified` field
7878// of S3 objects, and the `Last-Modified` header of Azure blobs.
7979//
80+ // For S3 objects, the `LastModified` value is the time the object begins
81+ // uploading. If the object meets your "last modification time" criteria,
82+ // but has not finished uploading, the object is not transferred. See
83+ // [Transfer from Amazon S3 to Cloud
84+ // Storage](https://cloud.google.com/storage-transfer/docs/create-transfers/agentless/s3#transfer_options)
85+ // for more information.
86+ //
8087// Transfers with a [PosixFilesystem][google.storagetransfer.v1.PosixFilesystem]
8188// source or destination don't support `ObjectConditions`.
8289message ObjectConditions {
@@ -306,6 +313,26 @@ message AwsS3Data {
306313// Storage blob's key
307314// name](https://docs.microsoft.com/en-us/rest/api/storageservices/naming-and-referencing-containers--blobs--and-metadata#blob-names).
308315message AzureBlobStorageData {
316+ // The identity of an Azure application through which Storage Transfer Service
317+ // can authenticate requests using Azure workload identity federation.
318+ //
319+ // Storage Transfer Service can issue requests to Azure Storage through
320+ // registered Azure applications, eliminating the need to pass credentials to
321+ // Storage Transfer Service directly.
322+ //
323+ // To configure federated identity, see
324+ // [Configure access to Microsoft Azure
325+ // Storage](https://cloud.google.com/storage-transfer/docs/source-microsoft-azure#option_3_authenticate_using_federated_identity).
326+ message FederatedIdentityConfig {
327+ // Required. The client (application) ID of the application with federated
328+ // credentials.
329+ string client_id = 1 [(google.api.field_behavior ) = REQUIRED ];
330+
331+ // Required. The tenant (directory) ID of the application with federated
332+ // credentials.
333+ string tenant_id = 2 [(google.api.field_behavior ) = REQUIRED ];
334+ }
335+
309336 // Required. The name of the Azure Storage account.
310337 string storage_account = 1 [(google.api.field_behavior ) = REQUIRED ];
311338
@@ -349,6 +376,15 @@ message AzureBlobStorageData {
349376 //
350377 // Format: `projects/{project_number}/secrets/{secret_name}`
351378 string credentials_secret = 7 [(google.api.field_behavior ) = OPTIONAL ];
379+
380+ // Optional. Federated identity config of a user registered Azure application.
381+ //
382+ // If `federated_identity_config` is specified, do not specify
383+ // [azure_credentials][google.storagetransfer.v1.AzureBlobStorageData.azure_credentials]
384+ // or
385+ // [credentials_secret][google.storagetransfer.v1.AzureBlobStorageData.credentials_secret].
386+ FederatedIdentityConfig federated_identity_config = 8
387+ [(google.api.field_behavior ) = OPTIONAL ];
352388}
353389
354390// An HttpData resource specifies a list of objects on the web to be
@@ -393,8 +429,9 @@ message AzureBlobStorageData {
393429// effect when filtering objects to transfer.
394430message HttpData {
395431 // Required. The URL that points to the file that stores the object list
396- // entries. This file must allow public access. Currently, only URLs with
397- // HTTP and HTTPS schemes are supported.
432+ // entries. This file must allow public access. The URL is either an
433+ // HTTP/HTTPS address (e.g. `https://example.com/urllist.tsv`) or a Cloud
434+ // Storage path (e.g. `gs://my-bucket/urllist.tsv`).
398435 string list_url = 1 [(google.api.field_behavior ) = REQUIRED ];
399436}
400437
@@ -585,7 +622,7 @@ message TransferOptions {
585622 }
586623
587624 // When to overwrite objects that already exist in the sink. The default is
588- // that only objects that are different from the source are ovewritten . If
625+ // that only objects that are different from the source are overwritten . If
589626 // true, all objects in the sink whose name matches an object in the source
590627 // are overwritten with the source object.
591628 bool overwrite_objects_already_existing_in_sink = 1 ;
@@ -963,7 +1000,7 @@ message Schedule {
9631000 // [schedule_end_date][google.storagetransfer.v1.Schedule.schedule_end_date],
9641001 // `end_time_of_day` specifies the end date and time for starting new transfer
9651002 // operations. This field must be greater than or equal to the timestamp
966- // corresponding to the combintation of
1003+ // corresponding to the combination of
9671004 // [schedule_start_date][google.storagetransfer.v1.Schedule.schedule_start_date]
9681005 // and
9691006 // [start_time_of_day][google.storagetransfer.v1.Schedule.start_time_of_day],
@@ -1058,6 +1095,23 @@ message TransferJob {
10581095 // The ID of the Google Cloud project that owns the job.
10591096 string project_id = 3 ;
10601097
1098+ // Optional. The user-managed service account to which to delegate service
1099+ // agent permissions. You can grant Cloud Storage bucket permissions to this
1100+ // service account instead of to the Transfer Service service agent.
1101+ //
1102+ // Format is
1103+ // `projects/-/serviceAccounts/ACCOUNT_EMAIL_OR_UNIQUEID`
1104+ //
1105+ // Either the service account email
1106+ // (`SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com`) or the unique
1107+ // ID (`123456789012345678901`) are accepted in the string. The `-`
1108+ // wildcard character is required; replacing it with a project ID is invalid.
1109+ //
1110+ // See
1111+ // https://cloud.google.com//storage-transfer/docs/delegate-service-agent-permissions
1112+ // for required permissions.
1113+ string service_account = 18 [(google.api.field_behavior ) = OPTIONAL ];
1114+
10611115 // Transfer specification.
10621116 TransferSpec transfer_spec = 4 ;
10631117
@@ -1312,7 +1366,7 @@ message LoggingConfig {
13121366 // Deleting objects at the source or the destination.
13131367 DELETE = 2 ;
13141368
1315- // Copying objects to Google Cloud Storage .
1369+ // Copying objects to the destination .
13161370 COPY = 3 ;
13171371 }
13181372
@@ -1328,6 +1382,11 @@ message LoggingConfig {
13281382 // `LoggableAction` terminated in an error state. `FAILED` actions are
13291383 // logged as [ERROR][google.logging.type.LogSeverity.ERROR].
13301384 FAILED = 2 ;
1385+
1386+ // The `COPY` action was skipped for this file. Only supported for
1387+ // agent-based transfers. `SKIPPED` actions are
1388+ // logged as [INFO][google.logging.type.LogSeverity.INFO].
1389+ SKIPPED = 3 ;
13311390 }
13321391
13331392 // Specifies the actions to be logged. If empty, no logs are generated.
0 commit comments