Definitions for @turbot/gcp-dns

algorithm

{
"type": "string",
"pattern": "^[a-z0-9]+$",
"tests": [
{
"description": "valid case",
"input": "rsasha256"
},
{
"description": "invalid - can't be empty",
"input": "",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/algorithm",
"modUri": "tmod:@turbot/gcp-dns"
}
}

defaultKeySpecs

{
"type": "array",
"items": {
"$ref": "#/definitions/defaultKeySpecsItems"
},
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/defaultKeySpecs",
"modUri": "tmod:@turbot/gcp-dns"
}
}

defaultKeySpecsItems

{
"type": "object",
"properties": {
"keyType": {
"$ref": "#/definitions/keyType"
},
"algorithm": {
"$ref": "#/definitions/algorithm"
},
"keyLength": {
"type": "integer"
},
"kind": {
"const": "dns#dnsKeySpec"
}
},
"tests": [
{
"description": "all details provided",
"input": {
"defaultKeySpecs": [
{
"keyType": "keySigning",
"algorithm": "rsasha256"
}
]
}
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/defaultKeySpecsItems",
"modUri": "tmod:@turbot/gcp-dns"
}
}

dns

{
"allOf": [
{
"$ref": "turbot#/definitions/service"
},
{
"type": "object",
"properties": {
"name": {
"$ref": "#/definitions/dnsName"
},
"state": {
"$ref": "gcp#/definitions/state"
},
"turbot": {
"type": "object",
"properties": {
"akas": {
"type": "array",
"items": {
"$ref": "#/definitions/dnsAka"
}
},
"title": {
"type": "string"
},
"custom": {
"type": "object",
"properties": {
"gcp": {
"$ref": "gcp#/definitions/gcpMetadata"
}
}
}
}
}
},
"required": [
"name",
"turbot"
],
"additionalProperties": true,
"tests": [
{
"description": "Valid - base test",
"input": {
"name": "projects/932405488407/services/dns.googleapis.com",
"turbot": {
"akas": [
"gcp://serviceusage.googleapis.com/projects/932405488407/services/dns.googleapis.com"
],
"title": "Google Cloud DNS API",
"custom": {
"gcp": {
"projectId": "cse-legolas-2"
}
}
}
}
}
]
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/dns",
"modUri": "tmod:@turbot/gcp-dns"
}
}

dnsAka

{
"type": "string",
"pattern": "^gcp://serviceusage.googleapis.com/projects/[0-9]{12}/services/dns.googleapis.com",
"tests": [
{
"description": "base",
"input": "gcp://serviceusage.googleapis.com/projects/932405488407/services/dns.googleapis.com"
},
{
"description": "invalid aka",
"input": "gcp://serviceusage.googleapis.com/projectss/cse-legolas-2/services/dns.googleapis.com",
"expected": false
},
{
"description": "invalid aka",
"input": "aws://serviceusage.googleapis.com/projectss/cse-legolas-2/services/dns.googleapis.com",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/dnsAka",
"modUri": "tmod:@turbot/gcp-dns"
}
}

DnsKeySpec

{
"description": "Parameters for DnsKey key generation. Used for generating initial keys for a new ManagedZone and as default when adding a new DnsKey.",
"properties": {
"algorithm": {
"description": "String mnemonic specifying the DNSSEC algorithm of this key.",
"enum": [
"rsasha1",
"rsasha256",
"rsasha512",
"ecdsap256sha256",
"ecdsap384sha384"
],
"type": "string"
},
"keyLength": {
"description": "Length of the keys in bits.",
"type": "integer"
},
"keyType": {
"description": "Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, are only used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and are used to sign all other types of resource record sets.",
"enum": [
"keySigning",
"zoneSigning"
],
"type": "string"
},
"kind": {
"default": "dns#dnsKeySpec",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/DnsKeySpec",
"modUri": "tmod:@turbot/gcp-dns"
}
}

dnsName

{
"type": "string",
"pattern": "^projects/[0-9]{12}/services/dns.googleapis.com",
"tests": [
{
"description": "base",
"input": "projects/932405488407/services/dns.googleapis.com"
},
{
"description": "invalid dnsName",
"input": "gcp://serviceusage.googleapis.com/projects/cse-legolas-2/services/dns.googleapis.com",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/dnsName",
"modUri": "tmod:@turbot/gcp-dns"
}
}

dnssecConfig

{
"type": "object",
"properties": {
"nonExistence": {
"$ref": "#/definitions/dnssecConfigNonExistence"
},
"kind": {
"const": "dns#managedZoneDnsSecConfig"
},
"state": {
"$ref": "#/definitions/zoneState"
},
"defaultKeySpecs": {
"$ref": "#/definitions/defaultKeySpecs"
}
},
"tests": [
{
"description": "all details provided",
"input": {
"defaultKeySpecs": [
{
"keyType": "keySigning",
"algorithm": "rsasha256"
},
{
"keyType": "zoneSigning",
"algorithm": "rsasha256"
}
]
}
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/dnssecConfig",
"modUri": "tmod:@turbot/gcp-dns"
}
}

dnssecConfigNonExistence

{
"type": "string",
"enum": [
"nsec",
"nsec3"
],
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/dnssecConfigNonExistence",
"modUri": "tmod:@turbot/gcp-dns"
}
}

keyType

{
"type": "string",
"pattern": "^[a-zA-Z]+$",
"tests": [
{
"description": "valid case",
"input": "keySigning"
},
{
"description": "invalid - must match pattern",
"input": "key01",
"expected": false
},
{
"description": "invalid - can't be empty",
"input": "",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/keyType",
"modUri": "tmod:@turbot/gcp-dns"
}
}

managedZone

{
"type": "object",
"properties": {
"name": {
"$ref": "#/definitions/zoneName"
},
"labels": {
"$ref": "gcp#/definitions/labels"
},
"dnssecConfig": {
"$ref": "#/definitions/dnssecConfig"
},
"visibility": {
"$ref": "#/definitions/zoneVisibility"
},
"turbot": {
"type": "object",
"properties": {
"akas": {
"type": "array",
"items": {
"$ref": "#/definitions/managedZoneAka"
}
},
"tags": {
"$ref": "gcp#/definitions/labels"
},
"title": {
"$ref": "#/definitions/zoneName"
},
"custom": {
"type": "object",
"properties": {
"createTimestamp": {
"$ref": "turbot#/definitions/isoTimestamp"
},
"gcp": {
"$ref": "gcp#/definitions/gcpMetadata"
}
}
}
}
}
},
"required": [
"name",
"turbot"
],
"additionalProperties": true,
"tests": [
{
"description": "Valid - All properties",
"input": {
"name": "test01",
"labels": {
"foo": "bar",
"foo1": "bar1"
},
"turbot": {
"akas": [
"gcp://www.googleapis.com/dns/projects/cse-legolas-2/managedZones/test01"
],
"tags": {
"foo": "bar",
"foo1": "bar1"
},
"title": "test01",
"custom": {
"createTimestamp": "2017-03-05T13:58:05.590Z",
"gcp": {
"projectId": "cse-legolas-2"
}
}
}
}
},
{
"description": "Invalid - Missing name",
"input": {
"labels": {
"foo": "bar",
"foo1": "bar1"
},
"turbot": {
"akas": [
"gcp://www.googleapis.com/dns/projects/cse-legolas-2/managedZones/test01"
],
"tags": {
"foo": "bar",
"foo1": "bar1"
},
"title": "test01",
"custom": {
"createTimestamp": "2017-03-05T13:58:05.590Z",
"gcp": {
"projectId": "cse-legolas-2"
}
}
}
},
"expected": false
},
{
"description": "Invalid - Missing Guardrails data",
"input": {
"name": "test01",
"labels": {
"foo": "bar",
"foo1": "bar1"
}
},
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/managedZone",
"modUri": "tmod:@turbot/gcp-dns"
}
}

ManagedZone

{
"description": "A zone is a subtree of the DNS namespace under one administrative responsibility. A ManagedZone is a resource that represents a DNS zone hosted by the Cloud DNS service.",
"properties": {
"cloudLoggingConfig": {
"$ref": "#/definitions/ManagedZoneCloudLoggingConfig"
},
"creationTime": {
"description": "The time that this resource was created on the server. This is in RFC3339 text format. Output only.",
"type": "string"
},
"description": {
"description": "A mutable string of at most 1024 characters associated with this resource for the user's convenience. Has no effect on the managed zone's function.",
"type": "string"
},
"dnsName": {
"description": "The DNS name of this managed zone, for instance \"example.com.\".",
"type": "string"
},
"dnssecConfig": {
"$ref": "#/definitions/ManagedZoneDnsSecConfig",
"description": "DNSSEC configuration."
},
"forwardingConfig": {
"$ref": "#/definitions/ManagedZoneForwardingConfig",
"description": "The presence for this field indicates that outbound forwarding is enabled for this zone. The value of this field contains the set of destinations to forward to."
},
"id": {
"description": "Unique identifier for the resource; defined by the server (output only)",
"type": "string"
},
"kind": {
"default": "dns#managedZone",
"type": "string"
},
"labels": {
"additionalProperties": {
"type": "string"
},
"description": "User labels.",
"type": "object"
},
"name": {
"description": "User assigned name for this resource. Must be unique within the project. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes.",
"type": "string"
},
"nameServerSet": {
"description": "Optionally specifies the NameServerSet for this ManagedZone. A NameServerSet is a set of DNS name servers that all host the same ManagedZones. Most users leave this field unset. If you need to use this field, contact your account team.",
"type": "string"
},
"nameServers": {
"description": "Delegate your managed_zone to these virtual name servers; defined by the server (output only)",
"items": {
"type": "string"
},
"type": "array"
},
"peeringConfig": {
"$ref": "#/definitions/ManagedZonePeeringConfig",
"description": "The presence of this field indicates that DNS Peering is enabled for this zone. The value of this field contains the network to peer with."
},
"privateVisibilityConfig": {
"$ref": "#/definitions/ManagedZonePrivateVisibilityConfig",
"description": "For privately visible zones, the set of Virtual Private Cloud resources that the zone is visible from."
},
"reverseLookupConfig": {
"$ref": "#/definitions/ManagedZoneReverseLookupConfig",
"description": "The presence of this field indicates that this is a managed reverse lookup zone and Cloud DNS resolves reverse lookup queries using automatically configured records for VPC resources. This only applies to networks listed under private_visibility_config."
},
"serviceDirectoryConfig": {
"$ref": "#/definitions/ManagedZoneServiceDirectoryConfig",
"description": "This field links to the associated service directory namespace. Do not set this field for public zones or forwarding zones."
},
"visibility": {
"description": "The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources.",
"enum": [
"public",
"private"
],
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/ManagedZone",
"modUri": "tmod:@turbot/gcp-dns"
}
}

managedZoneAka

{
"type": "string",
"pattern": "^gcp://www.googleapis.com/dns/projects/[a-zA-Z0-9-'\" \\!]{4,30}/managedZones/[a-z]([a-z-0-9]){0,61}([a-z0-9])$",
"tests": [
{
"descritpion": "base case",
"input": "gcp://www.googleapis.com/dns/projects/cse-legolas-2/managedZones/test01"
},
{
"description": "invalid - invalid arn",
"input": "i.googleapis.com/dns/projec/cse-legolas-2/managedZones/test",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/managedZoneAka",
"modUri": "tmod:@turbot/gcp-dns"
}
}

ManagedZoneCloudLoggingConfig

{
"description": "Cloud Logging configurations for publicly visible zones.",
"properties": {
"enableLogging": {
"description": "If set, enable query logging for this ManagedZone. False by default, making logging opt-in.",
"type": "boolean"
},
"kind": {
"default": "dns#managedZoneCloudLoggingConfig",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/ManagedZoneCloudLoggingConfig",
"modUri": "tmod:@turbot/gcp-dns"
}
}

ManagedZoneDnsSecConfig

{
"properties": {
"defaultKeySpecs": {
"description": "Specifies parameters for generating initial DnsKeys for this ManagedZone. Can only be changed while the state is OFF.",
"items": {
"$ref": "#/definitions/DnsKeySpec"
},
"type": "array"
},
"kind": {
"default": "dns#managedZoneDnsSecConfig",
"type": "string"
},
"nonExistence": {
"description": "Specifies the mechanism for authenticated denial-of-existence responses. Can only be changed while the state is OFF.",
"enum": [
"nsec",
"nsec3"
],
"type": "string"
},
"state": {
"description": "Specifies whether DNSSEC is enabled, and what mode it is in.",
"enum": [
"off",
"on",
"transfer"
],
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/ManagedZoneDnsSecConfig",
"modUri": "tmod:@turbot/gcp-dns"
}
}

ManagedZoneForwardingConfig

{
"properties": {
"kind": {
"default": "dns#managedZoneForwardingConfig",
"type": "string"
},
"targetNameServers": {
"description": "List of target name servers to forward to. Cloud DNS selects the best available name server if more than one target is given.",
"items": {
"$ref": "#/definitions/ManagedZoneForwardingConfigNameServerTarget"
},
"type": "array"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/ManagedZoneForwardingConfig",
"modUri": "tmod:@turbot/gcp-dns"
}
}

ManagedZoneForwardingConfigNameServerTarget

{
"properties": {
"forwardingPath": {
"description": "Forwarding path for this NameServerTarget. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on IP address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target.",
"enum": [
"default",
"private"
],
"type": "string"
},
"ipv4Address": {
"description": "IPv4 address of a target name server.",
"type": "string"
},
"ipv6Address": {
"description": "IPv6 address of a target name server. Does not accept both fields (ipv4 & ipv6) being populated. Public preview as of November 2022.",
"type": "string"
},
"kind": {
"default": "dns#managedZoneForwardingConfigNameServerTarget",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/ManagedZoneForwardingConfigNameServerTarget",
"modUri": "tmod:@turbot/gcp-dns"
}
}

ManagedZonePeeringConfig

{
"properties": {
"kind": {
"default": "dns#managedZonePeeringConfig",
"type": "string"
},
"targetNetwork": {
"$ref": "#/definitions/ManagedZonePeeringConfigTargetNetwork",
"description": "The network with which to peer."
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/ManagedZonePeeringConfig",
"modUri": "tmod:@turbot/gcp-dns"
}
}

ManagedZonePeeringConfigTargetNetwork

{
"properties": {
"deactivateTime": {
"description": "The time at which the zone was deactivated, in RFC 3339 date-time format. An empty string indicates that the peering connection is active. The producer network can deactivate a zone. The zone is automatically deactivated if the producer network that the zone targeted is deleted. Output only.",
"type": "string"
},
"kind": {
"default": "dns#managedZonePeeringConfigTargetNetwork",
"type": "string"
},
"networkUrl": {
"description": "The fully qualified URL of the VPC network to forward queries to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/ManagedZonePeeringConfigTargetNetwork",
"modUri": "tmod:@turbot/gcp-dns"
}
}

ManagedZonePrivateVisibilityConfig

{
"properties": {
"gkeClusters": {
"description": "The list of Google Kubernetes Engine clusters that can see this zone.",
"items": {
"$ref": "#/definitions/ManagedZonePrivateVisibilityConfigGKECluster"
},
"type": "array"
},
"kind": {
"default": "dns#managedZonePrivateVisibilityConfig",
"type": "string"
},
"networks": {
"description": "The list of VPC networks that can see this zone.",
"items": {
"$ref": "#/definitions/ManagedZonePrivateVisibilityConfigNetwork"
},
"type": "array"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/ManagedZonePrivateVisibilityConfig",
"modUri": "tmod:@turbot/gcp-dns"
}
}

ManagedZonePrivateVisibilityConfigGKECluster

{
"properties": {
"gkeClusterName": {
"description": "The resource name of the cluster to bind this ManagedZone to. This should be specified in the format like: projects/*/locations/*/clusters/*. This is referenced from GKE projects.locations.clusters.get API: https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/get",
"type": "string"
},
"kind": {
"default": "dns#managedZonePrivateVisibilityConfigGKECluster",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/ManagedZonePrivateVisibilityConfigGKECluster",
"modUri": "tmod:@turbot/gcp-dns"
}
}

ManagedZonePrivateVisibilityConfigNetwork

{
"properties": {
"kind": {
"default": "dns#managedZonePrivateVisibilityConfigNetwork",
"type": "string"
},
"networkUrl": {
"description": "The fully qualified URL of the VPC network to bind to. Format this URL like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/ManagedZonePrivateVisibilityConfigNetwork",
"modUri": "tmod:@turbot/gcp-dns"
}
}

ManagedZoneReverseLookupConfig

{
"properties": {
"kind": {
"default": "dns#managedZoneReverseLookupConfig",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/ManagedZoneReverseLookupConfig",
"modUri": "tmod:@turbot/gcp-dns"
}
}

ManagedZoneServiceDirectoryConfig

{
"description": "Contains information about Service Directory-backed zones.",
"properties": {
"kind": {
"default": "dns#managedZoneServiceDirectoryConfig",
"type": "string"
},
"namespace": {
"$ref": "#/definitions/ManagedZoneServiceDirectoryConfigNamespace",
"description": "Contains information about the namespace associated with the zone."
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/ManagedZoneServiceDirectoryConfig",
"modUri": "tmod:@turbot/gcp-dns"
}
}

ManagedZoneServiceDirectoryConfigNamespace

{
"properties": {
"deletionTime": {
"description": "The time that the namespace backing this zone was deleted; an empty string if it still exists. This is in RFC3339 text format. Output only.",
"type": "string"
},
"kind": {
"default": "dns#managedZoneServiceDirectoryConfigNamespace",
"type": "string"
},
"namespaceUrl": {
"description": "The fully qualified URL of the namespace associated with the zone. Format must be https://servicedirectory.googleapis.com/v1/projects/{project}/locations/{location}/namespaces/{namespace}",
"type": "string"
}
},
"type": "object",
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/ManagedZoneServiceDirectoryConfigNamespace",
"modUri": "tmod:@turbot/gcp-dns"
}
}

zoneName

{
"type": "string",
"pattern": "^[a-z]([a-z-0-9]){0,61}([a-z0-9])$",
"tests": [
{
"description": "valid case",
"input": "test01"
},
{
"description": "invalid - upper case letters are not allowed",
"input": "TEST01",
"expected": false
},
{
"description": "invalid - must match pattern",
"input": "0test01-",
"expected": false
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/zoneName",
"modUri": "tmod:@turbot/gcp-dns"
}
}

zoneState

{
"type": "string",
"enum": [
"off",
"on",
"transfer"
],
"tests": [
{
"input": "off"
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/zoneState",
"modUri": "tmod:@turbot/gcp-dns"
}
}

zoneVisibility

{
"type": "string",
"enum": [
"private",
"public"
],
"tests": [
{
"input": "private"
}
],
".turbot": {
"uri": "tmod:@turbot/gcp-dns#/definitions/zoneVisibility",
"modUri": "tmod:@turbot/gcp-dns"
}
}