xref: /aosp_15_r20/external/googleapis/google/appengine/v1/domain_mapping.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
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