1// Copyright 2021 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15syntax = "proto3"; 16 17package google.appengine.v1beta; 18 19 20option csharp_namespace = "Google.Cloud.AppEngine.V1Beta"; 21option go_package = "google.golang.org/genproto/googleapis/appengine/v1beta;appengine"; 22option java_multiple_files = true; 23option java_outer_classname = "DomainMappingProto"; 24option java_package = "com.google.appengine.v1beta"; 25option php_namespace = "Google\\Cloud\\AppEngine\\V1beta"; 26option ruby_package = "Google::Cloud::AppEngine::V1beta"; 27 28// A domain serving an App Engine application. 29message DomainMapping { 30 // Full path to the `DomainMapping` resource in the API. Example: 31 // `apps/myapp/domainMapping/example.com`. 32 // 33 // @OutputOnly 34 string name = 1; 35 36 // Relative name of the domain serving the application. Example: 37 // `example.com`. 38 string id = 2; 39 40 // SSL configuration for this domain. If unconfigured, this domain will not 41 // serve with SSL. 42 SslSettings ssl_settings = 3; 43 44 // The resource records required to configure this domain mapping. These 45 // records must be added to the domain's DNS configuration in order to 46 // serve the application via this domain mapping. 47 // 48 // @OutputOnly 49 repeated ResourceRecord resource_records = 4; 50} 51 52// SSL configuration for a `DomainMapping` resource. 53message SslSettings { 54 // The SSL management type for this domain. 55 enum SslManagementType { 56 // SSL support for this domain is configured automatically. The mapped SSL 57 // certificate will be automatically renewed. 58 AUTOMATIC = 0; 59 60 // SSL support for this domain is configured manually by the user. Either 61 // the domain has no SSL support or a user-obtained SSL certificate has been 62 // explictly mapped to this domain. 63 MANUAL = 1; 64 } 65 66 // ID of the `AuthorizedCertificate` resource configuring SSL for the 67 // application. Clearing this field will remove SSL support. 68 // 69 // By default, a managed certificate is automatically created for every 70 // domain mapping. To omit SSL support or to configure SSL manually, specify 71 // `SslManagementType.MANUAL` on a `CREATE` or `UPDATE` request. You must 72 // be authorized to administer the `AuthorizedCertificate` resource to 73 // manually map it to a `DomainMapping` resource. 74 // Example: `12345`. 75 string certificate_id = 1; 76 77 // SSL management type for this domain. If `AUTOMATIC`, a managed certificate 78 // is automatically provisioned. If `MANUAL`, `certificate_id` must be 79 // manually specified in order to configure SSL for this domain. 80 SslManagementType ssl_management_type = 3; 81 82 // ID of the managed `AuthorizedCertificate` resource currently being 83 // provisioned, if applicable. Until the new managed certificate has been 84 // successfully provisioned, the previous SSL state will be preserved. Once 85 // the provisioning process completes, the `certificate_id` field will reflect 86 // the new managed certificate and this field will be left empty. To remove 87 // SSL support while there is still a pending managed certificate, clear the 88 // `certificate_id` field with an `UpdateDomainMappingRequest`. 89 // 90 // @OutputOnly 91 string pending_managed_certificate_id = 4; 92} 93 94// A DNS resource record. 95message ResourceRecord { 96 // A resource record type. 97 enum RecordType { 98 // An A resource record. Data is an IPv4 address. 99 A = 0; 100 101 // An AAAA resource record. Data is an IPv6 address. 102 AAAA = 1; 103 104 // A CNAME resource record. Data is a domain name to be aliased. 105 CNAME = 2; 106 } 107 108 // Relative name of the object affected by this record. Only applicable for 109 // `CNAME` records. Example: 'www'. 110 string name = 1; 111 112 // Data for this record. Values vary by record type, as defined in RFC 1035 113 // (section 5) and RFC 1034 (section 3.6.1). 114 string rrdata = 2; 115 116 // Resource record type. Example: `AAAA`. 117 RecordType type = 3; 118} 119