Add support for pubsub to project factory (#3608)

* add support for pubsub to project factory

* remove duplicate data access log definitions from folders

* tfdoc

* schemas

* fix example

* add pubsub topics context to org in stage 0
This commit is contained in:
Ludovico Magnocavallo
2025-12-23 11:24:33 +01:00
committed by GitHub
parent 629066f474
commit fedf90d25f
17 changed files with 1837 additions and 35 deletions

View File

@@ -119,6 +119,7 @@ module "organization-iam" {
project_ids = merge(
local.ctx.project_ids, module.factory.project_ids
)
pubsub_topics = module.factory.pubsub_topics
storage_buckets = module.factory.storage_buckets
tag_keys = merge(
local.ctx.tag_keys,

View File

@@ -525,6 +525,15 @@
"project_template": {
"type": "string"
},
"pubsub_topics": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^[a-zA-Z0-9_-]+$": {
"$ref": "#/$defs/pubsub_topic"
}
}
},
"service_accounts": {
"type": "object",
"additionalProperties": false,
@@ -1414,6 +1423,238 @@
"additionalProperties": false
}
}
},
"pubsub_topic": {
"type": "object",
"additionalProperties": false,
"properties": {
"iam": {
"$ref": "#/$defs/iam"
},
"iam_bindings": {
"$ref": "#/$defs/iam_bindings"
},
"iam_bindings_additive": {
"$ref": "#/$defs/iam_bindings_additive"
},
"iam_by_principals": {
"$ref": "#/$defs/iam_by_principals"
},
"kms_key": {
"type": "string"
},
"labels": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"message_retention_duration": {
"type": "string"
},
"regions": {
"type": "array",
"items": {
"type": "string"
}
},
"schema": {
"type": "object",
"additionalProperties": false,
"required": [
"definition",
"schema_type"
],
"properties": {
"definition": {
"type": "string"
},
"msg_encoding": {
"type": "string"
},
"schema_type": {
"type": "string"
}
}
},
"subscriptions": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^[a-zA-Z0-9_-]+$": {
"type": "object",
"additionalProperties": false,
"properties": {
"ack_deadline_seconds": {
"type": "number"
},
"enable_exactly_once_delivery": {
"type": "boolean"
},
"enable_message_ordering": {
"type": "boolean"
},
"expiration_policy_ttl": {
"type": "string"
},
"filter": {
"type": "string"
},
"iam": {
"$ref": "#/$defs/iam"
},
"iam_bindings": {
"$ref": "#/$defs/iam_bindings"
},
"iam_bindings_additive": {
"$ref": "#/$defs/iam_bindings_additive"
},
"labels": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"message_retention_duration": {
"type": "string"
},
"retain_acked_messages": {
"type": "boolean"
},
"bigquery": {
"type": "object",
"additionalProperties": false,
"required": [
"table"
],
"properties": {
"table": {
"type": "string"
},
"drop_unknown_fields": {
"type": "boolean"
},
"service_account_email": {
"type": "string"
},
"use_table_schema": {
"type": "boolean"
},
"use_topic_schema": {
"type": "boolean"
},
"write_metadata": {
"type": "boolean"
}
}
},
"cloud_storage": {
"type": "object",
"additionalProperties": false,
"required": [
"bucket"
],
"properties": {
"bucket": {
"type": "string"
},
"filename_prefix": {
"type": "string"
},
"filename_suffix": {
"type": "string"
},
"max_duration": {
"type": "string"
},
"max_bytes": {
"type": "number"
},
"avro_config": {
"type": "object",
"additionalProperties": false,
"properties": {
"write_metadata": {
"type": "boolean"
}
}
}
}
},
"dead_letter_policy": {
"type": "object",
"additionalProperties": false,
"required": [
"topic"
],
"properties": {
"topic": {
"type": "string"
},
"max_delivery_attempts": {
"type": "number"
}
}
},
"push": {
"type": "object",
"additionalProperties": false,
"required": [
"endpoint"
],
"properties": {
"endpoint": {
"type": "string"
},
"attributes": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"no_wrapper": {
"type": "object",
"additionalProperties": false,
"properties": {
"write_metadata": {
"type": "boolean"
}
}
},
"oidc_token": {
"type": "object",
"additionalProperties": false,
"required": [
"service_account_email"
],
"properties": {
"audience": {
"type": "string"
},
"service_account_email": {
"type": "string"
}
}
}
}
},
"retry_policy": {
"type": "object",
"additionalProperties": false,
"properties": {
"minimum_backoff": {
"type": "number"
},
"maximum_backoff": {
"type": "number"
}
}
}
}
}
}
}
}
}
}
}

View File

@@ -163,6 +163,9 @@
- **services_enabled**: *array*
- items: *string*
- **project_template**: *string*
- **pubsub_topics**: *object*
<br>*additional properties: false*
- **`^[a-zA-Z0-9_-]+$`**: *reference([pubsub_topic](#refs-pubsub_topic))*
- **service_accounts**: *object*
<br>*additional properties: false*
- **`^[a-z0-9-]+$`**: *object*
@@ -406,3 +409,74 @@
- items: *string*
- **requester_email_recipients**: *array*
- items: *string*
- **pubsub_topic**<a name="refs-pubsub_topic"></a>: *object*
<br>*additional properties: false*
- **iam**: *reference([iam](#refs-iam))*
- **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))*
- **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))*
- **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))*
- **kms_key**: *string*
- **labels**: *object*
<br>*additional properties: string*
- **message_retention_duration**: *string*
- **regions**: *array*
- items: *string*
- **schema**: *object*
<br>*additional properties: false*
- ⁺**definition**: *string*
- **msg_encoding**: *string*
- ⁺**schema_type**: *string*
- **subscriptions**: *object*
<br>*additional properties: false*
- **`^[a-zA-Z0-9_-]+$`**: *object*
<br>*additional properties: false*
- **ack_deadline_seconds**: *number*
- **enable_exactly_once_delivery**: *boolean*
- **enable_message_ordering**: *boolean*
- **expiration_policy_ttl**: *string*
- **filter**: *string*
- **iam**: *reference([iam](#refs-iam))*
- **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))*
- **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))*
- **labels**: *object*
<br>*additional properties: string*
- **message_retention_duration**: *string*
- **retain_acked_messages**: *boolean*
- **bigquery**: *object*
<br>*additional properties: false*
- ⁺**table**: *string*
- **drop_unknown_fields**: *boolean*
- **service_account_email**: *string*
- **use_table_schema**: *boolean*
- **use_topic_schema**: *boolean*
- **write_metadata**: *boolean*
- **cloud_storage**: *object*
<br>*additional properties: false*
- ⁺**bucket**: *string*
- **filename_prefix**: *string*
- **filename_suffix**: *string*
- **max_duration**: *string*
- **max_bytes**: *number*
- **avro_config**: *object*
<br>*additional properties: false*
- **write_metadata**: *boolean*
- **dead_letter_policy**: *object*
<br>*additional properties: false*
- ⁺**topic**: *string*
- **max_delivery_attempts**: *number*
- **push**: *object*
<br>*additional properties: false*
- ⁺**endpoint**: *string*
- **attributes**: *object*
<br>*additional properties: string*
- **no_wrapper**: *object*
<br>*additional properties: false*
- **write_metadata**: *boolean*
- **oidc_token**: *object*
<br>*additional properties: false*
- **audience**: *string*
- ⁺**service_account_email**: *string*
- **retry_policy**: *object*
<br>*additional properties: false*
- **minimum_backoff**: *number*
- **maximum_backoff**: *number*

View File

@@ -525,6 +525,15 @@
"project_template": {
"type": "string"
},
"pubsub_topics": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^[a-zA-Z0-9_-]+$": {
"$ref": "#/$defs/pubsub_topic"
}
}
},
"service_accounts": {
"type": "object",
"additionalProperties": false,
@@ -1414,6 +1423,238 @@
"additionalProperties": false
}
}
},
"pubsub_topic": {
"type": "object",
"additionalProperties": false,
"properties": {
"iam": {
"$ref": "#/$defs/iam"
},
"iam_bindings": {
"$ref": "#/$defs/iam_bindings"
},
"iam_bindings_additive": {
"$ref": "#/$defs/iam_bindings_additive"
},
"iam_by_principals": {
"$ref": "#/$defs/iam_by_principals"
},
"kms_key": {
"type": "string"
},
"labels": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"message_retention_duration": {
"type": "string"
},
"regions": {
"type": "array",
"items": {
"type": "string"
}
},
"schema": {
"type": "object",
"additionalProperties": false,
"required": [
"definition",
"schema_type"
],
"properties": {
"definition": {
"type": "string"
},
"msg_encoding": {
"type": "string"
},
"schema_type": {
"type": "string"
}
}
},
"subscriptions": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^[a-zA-Z0-9_-]+$": {
"type": "object",
"additionalProperties": false,
"properties": {
"ack_deadline_seconds": {
"type": "number"
},
"enable_exactly_once_delivery": {
"type": "boolean"
},
"enable_message_ordering": {
"type": "boolean"
},
"expiration_policy_ttl": {
"type": "string"
},
"filter": {
"type": "string"
},
"iam": {
"$ref": "#/$defs/iam"
},
"iam_bindings": {
"$ref": "#/$defs/iam_bindings"
},
"iam_bindings_additive": {
"$ref": "#/$defs/iam_bindings_additive"
},
"labels": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"message_retention_duration": {
"type": "string"
},
"retain_acked_messages": {
"type": "boolean"
},
"bigquery": {
"type": "object",
"additionalProperties": false,
"required": [
"table"
],
"properties": {
"table": {
"type": "string"
},
"drop_unknown_fields": {
"type": "boolean"
},
"service_account_email": {
"type": "string"
},
"use_table_schema": {
"type": "boolean"
},
"use_topic_schema": {
"type": "boolean"
},
"write_metadata": {
"type": "boolean"
}
}
},
"cloud_storage": {
"type": "object",
"additionalProperties": false,
"required": [
"bucket"
],
"properties": {
"bucket": {
"type": "string"
},
"filename_prefix": {
"type": "string"
},
"filename_suffix": {
"type": "string"
},
"max_duration": {
"type": "string"
},
"max_bytes": {
"type": "number"
},
"avro_config": {
"type": "object",
"additionalProperties": false,
"properties": {
"write_metadata": {
"type": "boolean"
}
}
}
}
},
"dead_letter_policy": {
"type": "object",
"additionalProperties": false,
"required": [
"topic"
],
"properties": {
"topic": {
"type": "string"
},
"max_delivery_attempts": {
"type": "number"
}
}
},
"push": {
"type": "object",
"additionalProperties": false,
"required": [
"endpoint"
],
"properties": {
"endpoint": {
"type": "string"
},
"attributes": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"no_wrapper": {
"type": "object",
"additionalProperties": false,
"properties": {
"write_metadata": {
"type": "boolean"
}
}
},
"oidc_token": {
"type": "object",
"additionalProperties": false,
"required": [
"service_account_email"
],
"properties": {
"audience": {
"type": "string"
},
"service_account_email": {
"type": "string"
}
}
}
}
},
"retry_policy": {
"type": "object",
"additionalProperties": false,
"properties": {
"minimum_backoff": {
"type": "number"
},
"maximum_backoff": {
"type": "number"
}
}
}
}
}
}
}
}
}
}
}

View File

@@ -163,6 +163,9 @@
- **services_enabled**: *array*
- items: *string*
- **project_template**: *string*
- **pubsub_topics**: *object*
<br>*additional properties: false*
- **`^[a-zA-Z0-9_-]+$`**: *reference([pubsub_topic](#refs-pubsub_topic))*
- **service_accounts**: *object*
<br>*additional properties: false*
- **`^[a-z0-9-]+$`**: *object*
@@ -406,3 +409,74 @@
- items: *string*
- **requester_email_recipients**: *array*
- items: *string*
- **pubsub_topic**<a name="refs-pubsub_topic"></a>: *object*
<br>*additional properties: false*
- **iam**: *reference([iam](#refs-iam))*
- **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))*
- **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))*
- **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))*
- **kms_key**: *string*
- **labels**: *object*
<br>*additional properties: string*
- **message_retention_duration**: *string*
- **regions**: *array*
- items: *string*
- **schema**: *object*
<br>*additional properties: false*
- ⁺**definition**: *string*
- **msg_encoding**: *string*
- ⁺**schema_type**: *string*
- **subscriptions**: *object*
<br>*additional properties: false*
- **`^[a-zA-Z0-9_-]+$`**: *object*
<br>*additional properties: false*
- **ack_deadline_seconds**: *number*
- **enable_exactly_once_delivery**: *boolean*
- **enable_message_ordering**: *boolean*
- **expiration_policy_ttl**: *string*
- **filter**: *string*
- **iam**: *reference([iam](#refs-iam))*
- **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))*
- **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))*
- **labels**: *object*
<br>*additional properties: string*
- **message_retention_duration**: *string*
- **retain_acked_messages**: *boolean*
- **bigquery**: *object*
<br>*additional properties: false*
- ⁺**table**: *string*
- **drop_unknown_fields**: *boolean*
- **service_account_email**: *string*
- **use_table_schema**: *boolean*
- **use_topic_schema**: *boolean*
- **write_metadata**: *boolean*
- **cloud_storage**: *object*
<br>*additional properties: false*
- ⁺**bucket**: *string*
- **filename_prefix**: *string*
- **filename_suffix**: *string*
- **max_duration**: *string*
- **max_bytes**: *number*
- **avro_config**: *object*
<br>*additional properties: false*
- **write_metadata**: *boolean*
- **dead_letter_policy**: *object*
<br>*additional properties: false*
- ⁺**topic**: *string*
- **max_delivery_attempts**: *number*
- **push**: *object*
<br>*additional properties: false*
- ⁺**endpoint**: *string*
- **attributes**: *object*
<br>*additional properties: string*
- **no_wrapper**: *object*
<br>*additional properties: false*
- **write_metadata**: *boolean*
- **oidc_token**: *object*
<br>*additional properties: false*
- **audience**: *string*
- ⁺**service_account_email**: *string*
- **retry_policy**: *object*
<br>*additional properties: false*
- **minimum_backoff**: *number*
- **maximum_backoff**: *number*

View File

@@ -525,6 +525,15 @@
"project_template": {
"type": "string"
},
"pubsub_topics": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^[a-zA-Z0-9_-]+$": {
"$ref": "#/$defs/pubsub_topic"
}
}
},
"service_accounts": {
"type": "object",
"additionalProperties": false,
@@ -1414,6 +1423,238 @@
"additionalProperties": false
}
}
},
"pubsub_topic": {
"type": "object",
"additionalProperties": false,
"properties": {
"iam": {
"$ref": "#/$defs/iam"
},
"iam_bindings": {
"$ref": "#/$defs/iam_bindings"
},
"iam_bindings_additive": {
"$ref": "#/$defs/iam_bindings_additive"
},
"iam_by_principals": {
"$ref": "#/$defs/iam_by_principals"
},
"kms_key": {
"type": "string"
},
"labels": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"message_retention_duration": {
"type": "string"
},
"regions": {
"type": "array",
"items": {
"type": "string"
}
},
"schema": {
"type": "object",
"additionalProperties": false,
"required": [
"definition",
"schema_type"
],
"properties": {
"definition": {
"type": "string"
},
"msg_encoding": {
"type": "string"
},
"schema_type": {
"type": "string"
}
}
},
"subscriptions": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^[a-zA-Z0-9_-]+$": {
"type": "object",
"additionalProperties": false,
"properties": {
"ack_deadline_seconds": {
"type": "number"
},
"enable_exactly_once_delivery": {
"type": "boolean"
},
"enable_message_ordering": {
"type": "boolean"
},
"expiration_policy_ttl": {
"type": "string"
},
"filter": {
"type": "string"
},
"iam": {
"$ref": "#/$defs/iam"
},
"iam_bindings": {
"$ref": "#/$defs/iam_bindings"
},
"iam_bindings_additive": {
"$ref": "#/$defs/iam_bindings_additive"
},
"labels": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"message_retention_duration": {
"type": "string"
},
"retain_acked_messages": {
"type": "boolean"
},
"bigquery": {
"type": "object",
"additionalProperties": false,
"required": [
"table"
],
"properties": {
"table": {
"type": "string"
},
"drop_unknown_fields": {
"type": "boolean"
},
"service_account_email": {
"type": "string"
},
"use_table_schema": {
"type": "boolean"
},
"use_topic_schema": {
"type": "boolean"
},
"write_metadata": {
"type": "boolean"
}
}
},
"cloud_storage": {
"type": "object",
"additionalProperties": false,
"required": [
"bucket"
],
"properties": {
"bucket": {
"type": "string"
},
"filename_prefix": {
"type": "string"
},
"filename_suffix": {
"type": "string"
},
"max_duration": {
"type": "string"
},
"max_bytes": {
"type": "number"
},
"avro_config": {
"type": "object",
"additionalProperties": false,
"properties": {
"write_metadata": {
"type": "boolean"
}
}
}
}
},
"dead_letter_policy": {
"type": "object",
"additionalProperties": false,
"required": [
"topic"
],
"properties": {
"topic": {
"type": "string"
},
"max_delivery_attempts": {
"type": "number"
}
}
},
"push": {
"type": "object",
"additionalProperties": false,
"required": [
"endpoint"
],
"properties": {
"endpoint": {
"type": "string"
},
"attributes": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"no_wrapper": {
"type": "object",
"additionalProperties": false,
"properties": {
"write_metadata": {
"type": "boolean"
}
}
},
"oidc_token": {
"type": "object",
"additionalProperties": false,
"required": [
"service_account_email"
],
"properties": {
"audience": {
"type": "string"
},
"service_account_email": {
"type": "string"
}
}
}
}
},
"retry_policy": {
"type": "object",
"additionalProperties": false,
"properties": {
"minimum_backoff": {
"type": "number"
},
"maximum_backoff": {
"type": "number"
}
}
}
}
}
}
}
}
}
}
}

View File

@@ -163,6 +163,9 @@
- **services_enabled**: *array*
- items: *string*
- **project_template**: *string*
- **pubsub_topics**: *object*
<br>*additional properties: false*
- **`^[a-zA-Z0-9_-]+$`**: *reference([pubsub_topic](#refs-pubsub_topic))*
- **service_accounts**: *object*
<br>*additional properties: false*
- **`^[a-z0-9-]+$`**: *object*
@@ -406,3 +409,74 @@
- items: *string*
- **requester_email_recipients**: *array*
- items: *string*
- **pubsub_topic**<a name="refs-pubsub_topic"></a>: *object*
<br>*additional properties: false*
- **iam**: *reference([iam](#refs-iam))*
- **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))*
- **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))*
- **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))*
- **kms_key**: *string*
- **labels**: *object*
<br>*additional properties: string*
- **message_retention_duration**: *string*
- **regions**: *array*
- items: *string*
- **schema**: *object*
<br>*additional properties: false*
- ⁺**definition**: *string*
- **msg_encoding**: *string*
- ⁺**schema_type**: *string*
- **subscriptions**: *object*
<br>*additional properties: false*
- **`^[a-zA-Z0-9_-]+$`**: *object*
<br>*additional properties: false*
- **ack_deadline_seconds**: *number*
- **enable_exactly_once_delivery**: *boolean*
- **enable_message_ordering**: *boolean*
- **expiration_policy_ttl**: *string*
- **filter**: *string*
- **iam**: *reference([iam](#refs-iam))*
- **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))*
- **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))*
- **labels**: *object*
<br>*additional properties: string*
- **message_retention_duration**: *string*
- **retain_acked_messages**: *boolean*
- **bigquery**: *object*
<br>*additional properties: false*
- ⁺**table**: *string*
- **drop_unknown_fields**: *boolean*
- **service_account_email**: *string*
- **use_table_schema**: *boolean*
- **use_topic_schema**: *boolean*
- **write_metadata**: *boolean*
- **cloud_storage**: *object*
<br>*additional properties: false*
- ⁺**bucket**: *string*
- **filename_prefix**: *string*
- **filename_suffix**: *string*
- **max_duration**: *string*
- **max_bytes**: *number*
- **avro_config**: *object*
<br>*additional properties: false*
- **write_metadata**: *boolean*
- **dead_letter_policy**: *object*
<br>*additional properties: false*
- ⁺**topic**: *string*
- **max_delivery_attempts**: *number*
- **push**: *object*
<br>*additional properties: false*
- ⁺**endpoint**: *string*
- **attributes**: *object*
<br>*additional properties: string*
- **no_wrapper**: *object*
<br>*additional properties: false*
- **write_metadata**: *boolean*
- **oidc_token**: *object*
<br>*additional properties: false*
- **audience**: *string*
- ⁺**service_account_email**: *string*
- **retry_policy**: *object*
<br>*additional properties: false*
- **minimum_backoff**: *number*
- **maximum_backoff**: *number*

View File

@@ -525,6 +525,15 @@
"project_template": {
"type": "string"
},
"pubsub_topics": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^[a-zA-Z0-9_-]+$": {
"$ref": "#/$defs/pubsub_topic"
}
}
},
"service_accounts": {
"type": "object",
"additionalProperties": false,
@@ -1414,6 +1423,238 @@
"additionalProperties": false
}
}
},
"pubsub_topic": {
"type": "object",
"additionalProperties": false,
"properties": {
"iam": {
"$ref": "#/$defs/iam"
},
"iam_bindings": {
"$ref": "#/$defs/iam_bindings"
},
"iam_bindings_additive": {
"$ref": "#/$defs/iam_bindings_additive"
},
"iam_by_principals": {
"$ref": "#/$defs/iam_by_principals"
},
"kms_key": {
"type": "string"
},
"labels": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"message_retention_duration": {
"type": "string"
},
"regions": {
"type": "array",
"items": {
"type": "string"
}
},
"schema": {
"type": "object",
"additionalProperties": false,
"required": [
"definition",
"schema_type"
],
"properties": {
"definition": {
"type": "string"
},
"msg_encoding": {
"type": "string"
},
"schema_type": {
"type": "string"
}
}
},
"subscriptions": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"^[a-zA-Z0-9_-]+$": {
"type": "object",
"additionalProperties": false,
"properties": {
"ack_deadline_seconds": {
"type": "number"
},
"enable_exactly_once_delivery": {
"type": "boolean"
},
"enable_message_ordering": {
"type": "boolean"
},
"expiration_policy_ttl": {
"type": "string"
},
"filter": {
"type": "string"
},
"iam": {
"$ref": "#/$defs/iam"
},
"iam_bindings": {
"$ref": "#/$defs/iam_bindings"
},
"iam_bindings_additive": {
"$ref": "#/$defs/iam_bindings_additive"
},
"labels": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"message_retention_duration": {
"type": "string"
},
"retain_acked_messages": {
"type": "boolean"
},
"bigquery": {
"type": "object",
"additionalProperties": false,
"required": [
"table"
],
"properties": {
"table": {
"type": "string"
},
"drop_unknown_fields": {
"type": "boolean"
},
"service_account_email": {
"type": "string"
},
"use_table_schema": {
"type": "boolean"
},
"use_topic_schema": {
"type": "boolean"
},
"write_metadata": {
"type": "boolean"
}
}
},
"cloud_storage": {
"type": "object",
"additionalProperties": false,
"required": [
"bucket"
],
"properties": {
"bucket": {
"type": "string"
},
"filename_prefix": {
"type": "string"
},
"filename_suffix": {
"type": "string"
},
"max_duration": {
"type": "string"
},
"max_bytes": {
"type": "number"
},
"avro_config": {
"type": "object",
"additionalProperties": false,
"properties": {
"write_metadata": {
"type": "boolean"
}
}
}
}
},
"dead_letter_policy": {
"type": "object",
"additionalProperties": false,
"required": [
"topic"
],
"properties": {
"topic": {
"type": "string"
},
"max_delivery_attempts": {
"type": "number"
}
}
},
"push": {
"type": "object",
"additionalProperties": false,
"required": [
"endpoint"
],
"properties": {
"endpoint": {
"type": "string"
},
"attributes": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"no_wrapper": {
"type": "object",
"additionalProperties": false,
"properties": {
"write_metadata": {
"type": "boolean"
}
}
},
"oidc_token": {
"type": "object",
"additionalProperties": false,
"required": [
"service_account_email"
],
"properties": {
"audience": {
"type": "string"
},
"service_account_email": {
"type": "string"
}
}
}
}
},
"retry_policy": {
"type": "object",
"additionalProperties": false,
"properties": {
"minimum_backoff": {
"type": "number"
},
"maximum_backoff": {
"type": "number"
}
}
}
}
}
}
}
}
}
}
}

View File

@@ -163,6 +163,9 @@
- **services_enabled**: *array*
- items: *string*
- **project_template**: *string*
- **pubsub_topics**: *object*
<br>*additional properties: false*
- **`^[a-zA-Z0-9_-]+$`**: *reference([pubsub_topic](#refs-pubsub_topic))*
- **service_accounts**: *object*
<br>*additional properties: false*
- **`^[a-z0-9-]+$`**: *object*
@@ -406,3 +409,74 @@
- items: *string*
- **requester_email_recipients**: *array*
- items: *string*
- **pubsub_topic**<a name="refs-pubsub_topic"></a>: *object*
<br>*additional properties: false*
- **iam**: *reference([iam](#refs-iam))*
- **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))*
- **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))*
- **iam_by_principals**: *reference([iam_by_principals](#refs-iam_by_principals))*
- **kms_key**: *string*
- **labels**: *object*
<br>*additional properties: string*
- **message_retention_duration**: *string*
- **regions**: *array*
- items: *string*
- **schema**: *object*
<br>*additional properties: false*
- ⁺**definition**: *string*
- **msg_encoding**: *string*
- ⁺**schema_type**: *string*
- **subscriptions**: *object*
<br>*additional properties: false*
- **`^[a-zA-Z0-9_-]+$`**: *object*
<br>*additional properties: false*
- **ack_deadline_seconds**: *number*
- **enable_exactly_once_delivery**: *boolean*
- **enable_message_ordering**: *boolean*
- **expiration_policy_ttl**: *string*
- **filter**: *string*
- **iam**: *reference([iam](#refs-iam))*
- **iam_bindings**: *reference([iam_bindings](#refs-iam_bindings))*
- **iam_bindings_additive**: *reference([iam_bindings_additive](#refs-iam_bindings_additive))*
- **labels**: *object*
<br>*additional properties: string*
- **message_retention_duration**: *string*
- **retain_acked_messages**: *boolean*
- **bigquery**: *object*
<br>*additional properties: false*
- ⁺**table**: *string*
- **drop_unknown_fields**: *boolean*
- **service_account_email**: *string*
- **use_table_schema**: *boolean*
- **use_topic_schema**: *boolean*
- **write_metadata**: *boolean*
- **cloud_storage**: *object*
<br>*additional properties: false*
- ⁺**bucket**: *string*
- **filename_prefix**: *string*
- **filename_suffix**: *string*
- **max_duration**: *string*
- **max_bytes**: *number*
- **avro_config**: *object*
<br>*additional properties: false*
- **write_metadata**: *boolean*
- **dead_letter_policy**: *object*
<br>*additional properties: false*
- ⁺**topic**: *string*
- **max_delivery_attempts**: *number*
- **push**: *object*
<br>*additional properties: false*
- ⁺**endpoint**: *string*
- **attributes**: *object*
<br>*additional properties: string*
- **no_wrapper**: *object*
<br>*additional properties: false*
- **write_metadata**: *boolean*
- **oidc_token**: *object*
<br>*additional properties: false*
- **audience**: *string*
- ⁺**service_account_email**: *string*
- **retry_policy**: *object*
<br>*additional properties: false*
- **minimum_backoff**: *number*
- **maximum_backoff**: *number*