1// Copyright 2020 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.v1; 18 19option csharp_namespace = "Google.Cloud.AppEngine.V1"; 20option go_package = "cloud.google.com/go/appengine/apiv1/appenginepb;appenginepb"; 21option java_multiple_files = true; 22option java_outer_classname = "DomainMappingProto"; 23option java_package = "com.google.appengine.v1"; 24option php_namespace = "Google\\Cloud\\AppEngine\\V1"; 25option ruby_package = "Google::Cloud::AppEngine::V1"; 26 27// A domain serving an App Engine application. 28message DomainMapping { 29 // Full path to the `DomainMapping` resource in the API. Example: 30 // `apps/myapp/domainMapping/example.com`. 31 // 32 // @OutputOnly 33 string name = 1; 34 35 // Relative name of the domain serving the application. Example: 36 // `example.com`. 37 string id = 2; 38 39 // SSL configuration for this domain. If unconfigured, this domain will not 40 // serve with SSL. 41 SslSettings ssl_settings = 3; 42 43 // The resource records required to configure this domain mapping. These 44 // records must be added to the domain's DNS configuration in order to 45 // serve the application via this domain mapping. 46 // 47 // @OutputOnly 48 repeated ResourceRecord resource_records = 4; 49} 50 51// SSL configuration for a `DomainMapping` resource. 52message SslSettings { 53 // The SSL management type for this domain. 54 enum SslManagementType { 55 // Defaults to `AUTOMATIC`. 56 SSL_MANAGEMENT_TYPE_UNSPECIFIED = 0; 57 58 // SSL support for this domain is configured automatically. The mapped SSL 59 // certificate will be automatically renewed. 60 AUTOMATIC = 1; 61 62 // SSL support for this domain is configured manually by the user. Either 63 // the domain has no SSL support or a user-obtained SSL certificate has been 64 // explictly mapped to this domain. 65 MANUAL = 2; 66 } 67 68 // ID of the `AuthorizedCertificate` resource configuring SSL for the 69 // application. Clearing this field will remove SSL support. 70 // 71 // By default, a managed certificate is automatically created for every 72 // domain mapping. To omit SSL support or to configure SSL manually, specify 73 // `SslManagementType.MANUAL` on a `CREATE` or `UPDATE` request. You must 74 // be authorized to administer the `AuthorizedCertificate` resource to 75 // manually map it to a `DomainMapping` resource. 76 // Example: `12345`. 77 string certificate_id = 1; 78 79 // SSL management type for this domain. If `AUTOMATIC`, a managed certificate 80 // is automatically provisioned. If `MANUAL`, `certificate_id` must be 81 // manually specified in order to configure SSL for this domain. 82 SslManagementType ssl_management_type = 3; 83 84 // ID of the managed `AuthorizedCertificate` resource currently being 85 // provisioned, if applicable. Until the new managed certificate has been 86 // successfully provisioned, the previous SSL state will be preserved. Once 87 // the provisioning process completes, the `certificate_id` field will reflect 88 // the new managed certificate and this field will be left empty. To remove 89 // SSL support while there is still a pending managed certificate, clear the 90 // `certificate_id` field with an `UpdateDomainMappingRequest`. 91 // 92 // @OutputOnly 93 string pending_managed_certificate_id = 4; 94} 95 96// A DNS resource record. 97message ResourceRecord { 98 // A resource record type. 99 enum RecordType { 100 // An unknown resource record. 101 RECORD_TYPE_UNSPECIFIED = 0; 102 103 // An A resource record. Data is an IPv4 address. 104 A = 1; 105 106 // An AAAA resource record. Data is an IPv6 address. 107 AAAA = 2; 108 109 // A CNAME resource record. Data is a domain name to be aliased. 110 CNAME = 3; 111 } 112 113 // Relative name of the object affected by this record. Only applicable for 114 // `CNAME` records. Example: 'www'. 115 string name = 1; 116 117 // Data for this record. Values vary by record type, as defined in RFC 1035 118 // (section 5) and RFC 1034 (section 3.6.1). 119 string rrdata = 2; 120 121 // Resource record type. Example: `AAAA`. 122 RecordType type = 3; 123} 124