domains.proto 44 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147
  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. syntax = "proto3";
  15. package google.cloud.domains.v1alpha2;
  16. import "google/api/annotations.proto";
  17. import "google/api/client.proto";
  18. import "google/api/field_behavior.proto";
  19. import "google/api/resource.proto";
  20. import "google/longrunning/operations.proto";
  21. import "google/protobuf/field_mask.proto";
  22. import "google/protobuf/timestamp.proto";
  23. import "google/type/money.proto";
  24. import "google/type/postal_address.proto";
  25. option go_package = "google.golang.org/genproto/googleapis/cloud/domains/v1alpha2;domains";
  26. option java_multiple_files = true;
  27. option java_outer_classname = "DomainsProto";
  28. option java_package = "com.google.cloud.domains.v1alpha2";
  29. // The Cloud Domains API enables management and configuration of domain names.
  30. service Domains {
  31. option (google.api.default_host) = "domains.googleapis.com";
  32. option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
  33. // Searches for available domain names similar to the provided query.
  34. //
  35. // Availability results from this method are approximate; call
  36. // `RetrieveRegisterParameters` on a domain before registering to confirm
  37. // availability.
  38. rpc SearchDomains(SearchDomainsRequest) returns (SearchDomainsResponse) {
  39. option (google.api.http) = {
  40. get: "/v1alpha2/{location=projects/*/locations/*}/registrations:searchDomains"
  41. };
  42. option (google.api.method_signature) = "location,query";
  43. }
  44. // Gets parameters needed to register a new domain name, including price and
  45. // up-to-date availability. Use the returned values to call `RegisterDomain`.
  46. rpc RetrieveRegisterParameters(RetrieveRegisterParametersRequest) returns (RetrieveRegisterParametersResponse) {
  47. option (google.api.http) = {
  48. get: "/v1alpha2/{location=projects/*/locations/*}/registrations:retrieveRegisterParameters"
  49. };
  50. option (google.api.method_signature) = "location,domain_name";
  51. }
  52. // Registers a new domain name and creates a corresponding `Registration`
  53. // resource.
  54. //
  55. // Call `RetrieveRegisterParameters` first to check availability of the domain
  56. // name and determine parameters like price that are needed to build a call to
  57. // this method.
  58. //
  59. // A successful call creates a `Registration` resource in state
  60. // `REGISTRATION_PENDING`, which resolves to `ACTIVE` within 1-2
  61. // minutes, indicating that the domain was successfully registered. If the
  62. // resource ends up in state `REGISTRATION_FAILED`, it indicates that the
  63. // domain was not registered successfully, and you can safely delete the
  64. // resource and retry registration.
  65. rpc RegisterDomain(RegisterDomainRequest) returns (google.longrunning.Operation) {
  66. option (google.api.http) = {
  67. post: "/v1alpha2/{parent=projects/*/locations/*}/registrations:register"
  68. body: "*"
  69. };
  70. option (google.api.method_signature) = "parent,registration,yearly_price";
  71. option (google.longrunning.operation_info) = {
  72. response_type: "Registration"
  73. metadata_type: "OperationMetadata"
  74. };
  75. }
  76. // Gets parameters needed to transfer a domain name from another registrar to
  77. // Cloud Domains. For domains managed by Google Domains, transferring to Cloud
  78. // Domains is not supported.
  79. //
  80. //
  81. // Use the returned values to call `TransferDomain`.
  82. rpc RetrieveTransferParameters(RetrieveTransferParametersRequest) returns (RetrieveTransferParametersResponse) {
  83. option (google.api.http) = {
  84. get: "/v1alpha2/{location=projects/*/locations/*}/registrations:retrieveTransferParameters"
  85. };
  86. option (google.api.method_signature) = "location,domain_name";
  87. }
  88. // Transfers a domain name from another registrar to Cloud Domains. For
  89. // domains managed by Google Domains, transferring to Cloud Domains is not
  90. // supported.
  91. //
  92. //
  93. // Before calling this method, go to the domain's current registrar to unlock
  94. // the domain for transfer and retrieve the domain's transfer authorization
  95. // code. Then call `RetrieveTransferParameters` to confirm that the domain is
  96. // unlocked and to get values needed to build a call to this method.
  97. //
  98. // A successful call creates a `Registration` resource in state
  99. // `TRANSFER_PENDING`. It can take several days to complete the transfer
  100. // process. The registrant can often speed up this process by approving the
  101. // transfer through the current registrar, either by clicking a link in an
  102. // email from the registrar or by visiting the registrar's website.
  103. //
  104. // A few minutes after transfer approval, the resource transitions to state
  105. // `ACTIVE`, indicating that the transfer was successful. If the transfer is
  106. // rejected or the request expires without being approved, the resource can
  107. // end up in state `TRANSFER_FAILED`. If transfer fails, you can safely delete
  108. // the resource and retry the transfer.
  109. rpc TransferDomain(TransferDomainRequest) returns (google.longrunning.Operation) {
  110. option (google.api.http) = {
  111. post: "/v1alpha2/{parent=projects/*/locations/*}/registrations:transfer"
  112. body: "*"
  113. };
  114. option (google.api.method_signature) = "parent,registration,yearly_price,authorization_code";
  115. option (google.longrunning.operation_info) = {
  116. response_type: "Registration"
  117. metadata_type: "OperationMetadata"
  118. };
  119. }
  120. // Lists the `Registration` resources in a project.
  121. rpc ListRegistrations(ListRegistrationsRequest) returns (ListRegistrationsResponse) {
  122. option (google.api.http) = {
  123. get: "/v1alpha2/{parent=projects/*/locations/*}/registrations"
  124. };
  125. option (google.api.method_signature) = "parent";
  126. }
  127. // Gets the details of a `Registration` resource.
  128. rpc GetRegistration(GetRegistrationRequest) returns (Registration) {
  129. option (google.api.http) = {
  130. get: "/v1alpha2/{name=projects/*/locations/*/registrations/*}"
  131. };
  132. option (google.api.method_signature) = "name";
  133. }
  134. // Updates select fields of a `Registration` resource, notably `labels`. To
  135. // update other fields, use the appropriate custom update method:
  136. //
  137. // * To update management settings, see `ConfigureManagementSettings`
  138. // * To update DNS configuration, see `ConfigureDnsSettings`
  139. // * To update contact information, see `ConfigureContactSettings`
  140. rpc UpdateRegistration(UpdateRegistrationRequest) returns (google.longrunning.Operation) {
  141. option (google.api.http) = {
  142. patch: "/v1alpha2/{registration.name=projects/*/locations/*/registrations/*}"
  143. body: "registration"
  144. };
  145. option (google.api.method_signature) = "registration,update_mask";
  146. option (google.longrunning.operation_info) = {
  147. response_type: "Registration"
  148. metadata_type: "OperationMetadata"
  149. };
  150. }
  151. // Updates a `Registration`'s management settings.
  152. rpc ConfigureManagementSettings(ConfigureManagementSettingsRequest) returns (google.longrunning.Operation) {
  153. option (google.api.http) = {
  154. post: "/v1alpha2/{registration=projects/*/locations/*/registrations/*}:configureManagementSettings"
  155. body: "*"
  156. };
  157. option (google.api.method_signature) = "registration,management_settings,update_mask";
  158. option (google.longrunning.operation_info) = {
  159. response_type: "Registration"
  160. metadata_type: "OperationMetadata"
  161. };
  162. }
  163. // Updates a `Registration`'s DNS settings.
  164. rpc ConfigureDnsSettings(ConfigureDnsSettingsRequest) returns (google.longrunning.Operation) {
  165. option (google.api.http) = {
  166. post: "/v1alpha2/{registration=projects/*/locations/*/registrations/*}:configureDnsSettings"
  167. body: "*"
  168. };
  169. option (google.api.method_signature) = "registration,dns_settings,update_mask";
  170. option (google.longrunning.operation_info) = {
  171. response_type: "Registration"
  172. metadata_type: "OperationMetadata"
  173. };
  174. }
  175. // Updates a `Registration`'s contact settings. Some changes require
  176. // confirmation by the domain's registrant contact .
  177. rpc ConfigureContactSettings(ConfigureContactSettingsRequest) returns (google.longrunning.Operation) {
  178. option (google.api.http) = {
  179. post: "/v1alpha2/{registration=projects/*/locations/*/registrations/*}:configureContactSettings"
  180. body: "*"
  181. };
  182. option (google.api.method_signature) = "registration,contact_settings,update_mask";
  183. option (google.longrunning.operation_info) = {
  184. response_type: "Registration"
  185. metadata_type: "OperationMetadata"
  186. };
  187. }
  188. // Exports a `Registration` resource, such that it is no longer managed by
  189. // Cloud Domains.
  190. //
  191. // When an active domain is successfully exported, you can continue to use the
  192. // domain in [Google Domains](https://domains.google/) until it expires. The
  193. // calling user becomes the domain's sole owner in Google Domains, and
  194. // permissions for the domain are subsequently managed there. The domain does
  195. // not renew automatically unless the new owner sets up billing in Google
  196. // Domains.
  197. rpc ExportRegistration(ExportRegistrationRequest) returns (google.longrunning.Operation) {
  198. option (google.api.http) = {
  199. post: "/v1alpha2/{name=projects/*/locations/*/registrations/*}:export"
  200. body: "*"
  201. };
  202. option (google.api.method_signature) = "name";
  203. option (google.longrunning.operation_info) = {
  204. response_type: "Registration"
  205. metadata_type: "OperationMetadata"
  206. };
  207. }
  208. // Deletes a `Registration` resource.
  209. //
  210. // This method works on any `Registration` resource using [Subscription or
  211. // Commitment billing](/domains/pricing#billing-models), provided that the
  212. // resource was created at least 1 day in the past.
  213. //
  214. // For `Registration` resources using
  215. // [Monthly billing](/domains/pricing#billing-models), this method works if:
  216. //
  217. // * `state` is `EXPORTED` with `expire_time` in the past
  218. // * `state` is `REGISTRATION_FAILED`
  219. // * `state` is `TRANSFER_FAILED`
  220. //
  221. // When an active registration is successfully deleted, you can continue to
  222. // use the domain in [Google Domains](https://domains.google/) until it
  223. // expires. The calling user becomes the domain's sole owner in Google
  224. // Domains, and permissions for the domain are subsequently managed there. The
  225. // domain does not renew automatically unless the new owner sets up billing in
  226. // Google Domains.
  227. rpc DeleteRegistration(DeleteRegistrationRequest) returns (google.longrunning.Operation) {
  228. option (google.api.http) = {
  229. delete: "/v1alpha2/{name=projects/*/locations/*/registrations/*}"
  230. };
  231. option (google.api.method_signature) = "name";
  232. option (google.longrunning.operation_info) = {
  233. response_type: "google.protobuf.Empty"
  234. metadata_type: "OperationMetadata"
  235. };
  236. }
  237. // Gets the authorization code of the `Registration` for the purpose of
  238. // transferring the domain to another registrar.
  239. //
  240. // You can call this method only after 60 days have elapsed since the initial
  241. // domain registration.
  242. rpc RetrieveAuthorizationCode(RetrieveAuthorizationCodeRequest) returns (AuthorizationCode) {
  243. option (google.api.http) = {
  244. get: "/v1alpha2/{registration=projects/*/locations/*/registrations/*}:retrieveAuthorizationCode"
  245. };
  246. option (google.api.method_signature) = "registration";
  247. }
  248. // Resets the authorization code of the `Registration` to a new random string.
  249. //
  250. // You can call this method only after 60 days have elapsed since the initial
  251. // domain registration.
  252. rpc ResetAuthorizationCode(ResetAuthorizationCodeRequest) returns (AuthorizationCode) {
  253. option (google.api.http) = {
  254. post: "/v1alpha2/{registration=projects/*/locations/*/registrations/*}:resetAuthorizationCode"
  255. body: "*"
  256. };
  257. option (google.api.method_signature) = "registration";
  258. }
  259. }
  260. // The `Registration` resource facilitates managing and configuring domain name
  261. // registrations.
  262. //
  263. // There are several ways to create a new `Registration` resource:
  264. //
  265. // To create a new `Registration` resource, find a suitable domain name by
  266. // calling the `SearchDomains` method with a query to see available domain name
  267. // options. After choosing a name, call `RetrieveRegisterParameters` to
  268. // ensure availability and obtain information like pricing, which is needed to
  269. // build a call to `RegisterDomain`.
  270. //
  271. // Another way to create a new `Registration` is to transfer an existing
  272. // domain from another registrar. First, go to the current registrar to unlock
  273. // the domain for transfer and retrieve the domain's transfer authorization
  274. // code. Then call `RetrieveTransferParameters` to confirm that the domain is
  275. // unlocked and to get values needed to build a call to `TransferDomain`.
  276. message Registration {
  277. option (google.api.resource) = {
  278. type: "domains.googleapis.com/Registration"
  279. pattern: "projects/{project}/locations/{location}/registrations/{registration}"
  280. };
  281. // Possible states of a `Registration`.
  282. enum State {
  283. // The state is undefined.
  284. STATE_UNSPECIFIED = 0;
  285. // The domain is being registered.
  286. REGISTRATION_PENDING = 1;
  287. // The domain registration failed. You can delete resources in this state
  288. // to allow registration to be retried.
  289. REGISTRATION_FAILED = 2;
  290. // The domain is being transferred from another registrar to Cloud Domains.
  291. TRANSFER_PENDING = 3;
  292. // The attempt to transfer the domain from another registrar to
  293. // Cloud Domains failed. You can delete resources in this state and retry
  294. // the transfer.
  295. TRANSFER_FAILED = 4;
  296. // The domain is registered and operational. The domain renews automatically
  297. // as long as it remains in this state.
  298. ACTIVE = 6;
  299. // The domain is suspended and inoperative. For more details, see the
  300. // `issues` field.
  301. SUSPENDED = 7;
  302. // The domain is no longer managed with Cloud Domains. It may have been
  303. // transferred to another registrar or exported for management in
  304. // [Google Domains](https://domains.google/). You can no longer update it
  305. // with this API, and information shown about it may be stale. Domains in
  306. // this state are not automatically renewed by Cloud Domains.
  307. EXPORTED = 8;
  308. }
  309. // Possible issues with a `Registration` that require attention.
  310. enum Issue {
  311. // The issue is undefined.
  312. ISSUE_UNSPECIFIED = 0;
  313. // Contact the Cloud Support team to resolve a problem with this domain.
  314. CONTACT_SUPPORT = 1;
  315. // [ICANN](https://icann.org/) requires verification of the email address
  316. // in the `Registration`'s `contact_settings.registrant_contact` field. To
  317. // verify the email address, follow the
  318. // instructions in the email the `registrant_contact` receives following
  319. // registration. If you do not complete email verification within
  320. // 15 days of registration, the domain is suspended. To resend the
  321. // verification email, call ConfigureContactSettings and provide the current
  322. // `registrant_contact.email`.
  323. UNVERIFIED_EMAIL = 2;
  324. }
  325. // Output only. Name of the `Registration` resource, in the format
  326. // `projects/*/locations/*/registrations/<domain_name>`.
  327. string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  328. // Required. Immutable. The domain name. Unicode domain names must be expressed in Punycode format.
  329. string domain_name = 2 [
  330. (google.api.field_behavior) = REQUIRED,
  331. (google.api.field_behavior) = IMMUTABLE
  332. ];
  333. // Output only. The creation timestamp of the `Registration` resource.
  334. google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  335. // Output only. The expiration timestamp of the `Registration`.
  336. google.protobuf.Timestamp expire_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
  337. // Output only. The state of the `Registration`
  338. State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
  339. // Output only. The set of issues with the `Registration` that require attention.
  340. repeated Issue issues = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
  341. // Set of labels associated with the `Registration`.
  342. map<string, string> labels = 9;
  343. // Settings for management of the `Registration`, including renewal, billing,
  344. // and transfer. You cannot update these with the `UpdateRegistration`
  345. // method. To update these settings, use the `ConfigureManagementSettings`
  346. // method.
  347. ManagementSettings management_settings = 10;
  348. // Settings controlling the DNS configuration of the `Registration`. You
  349. // cannot update these with the `UpdateRegistration` method. To update these
  350. // settings, use the `ConfigureDnsSettings` method.
  351. DnsSettings dns_settings = 11;
  352. // Required. Settings for contact information linked to the `Registration`. You cannot
  353. // update these with the `UpdateRegistration` method. To update these
  354. // settings, use the `ConfigureContactSettings` method.
  355. ContactSettings contact_settings = 12 [(google.api.field_behavior) = REQUIRED];
  356. // Output only. Pending contact settings for the `Registration`. Updates to the
  357. // `contact_settings` field that change its `registrant_contact` or `privacy`
  358. // fields require email confirmation by the `registrant_contact`
  359. // before taking effect. This field is set only if there are pending updates
  360. // to the `contact_settings` that have not been confirmed. To confirm the
  361. // changes, the `registrant_contact` must follow the instructions in the
  362. // email they receive.
  363. ContactSettings pending_contact_settings = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
  364. // Output only. Set of options for the `contact_settings.privacy` field that this
  365. // `Registration` supports.
  366. repeated ContactPrivacy supported_privacy = 14 [(google.api.field_behavior) = OUTPUT_ONLY];
  367. }
  368. // Defines renewal, billing, and transfer settings for a `Registration`.
  369. message ManagementSettings {
  370. // Defines how the `Registration` is renewed.
  371. enum RenewalMethod {
  372. // The renewal method is undefined.
  373. RENEWAL_METHOD_UNSPECIFIED = 0;
  374. // The domain is automatically renewed each year .
  375. //
  376. // To disable automatic renewals, delete the resource by calling
  377. // `DeleteRegistration` or export it by calling `ExportRegistration`.
  378. AUTOMATIC_RENEWAL = 1;
  379. // The domain must be explicitly renewed each year before its
  380. // `expire_time`. This option is only available when the `Registration`
  381. // is in state `EXPORTED`.
  382. //
  383. // To manage the domain's current billing and
  384. // renewal settings, go to [Google Domains](https://domains.google/).
  385. MANUAL_RENEWAL = 2;
  386. }
  387. // Output only. The renewal method for this `Registration`.
  388. RenewalMethod renewal_method = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  389. // Controls whether the domain can be transferred to another registrar.
  390. TransferLockState transfer_lock_state = 4;
  391. }
  392. // Defines the DNS configuration of a `Registration`, including name servers,
  393. // DNSSEC, and glue records.
  394. message DnsSettings {
  395. // Configuration for an arbitrary DNS provider.
  396. message CustomDns {
  397. // Required. A list of name servers that store the DNS zone for this domain. Each name
  398. // server is a domain name, with Unicode domain names expressed in
  399. // Punycode format.
  400. repeated string name_servers = 1 [(google.api.field_behavior) = REQUIRED];
  401. // The list of DS records for this domain, which are used to enable DNSSEC.
  402. // The domain's DNS provider can provide the values to set here. If this
  403. // field is empty, DNSSEC is disabled.
  404. repeated DsRecord ds_records = 2;
  405. }
  406. // Configuration for using the free DNS zone provided by Google Domains as a
  407. // `Registration`'s `dns_provider`. You cannot configure the DNS zone itself
  408. // using the API. To configure the DNS zone, go to
  409. // [Google Domains](https://domains.google/).
  410. message GoogleDomainsDns {
  411. // Output only. A list of name servers that store the DNS zone for this domain. Each name
  412. // server is a domain name, with Unicode domain names expressed in
  413. // Punycode format. This field is automatically populated with the name
  414. // servers assigned to the Google Domains DNS zone.
  415. repeated string name_servers = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  416. // Required. The state of DS records for this domain. Used to enable or disable
  417. // automatic DNSSEC.
  418. DsState ds_state = 2 [(google.api.field_behavior) = REQUIRED];
  419. // Output only. The list of DS records published for this domain. The list is
  420. // automatically populated when `ds_state` is `DS_RECORDS_PUBLISHED`,
  421. // otherwise it remains empty.
  422. repeated DsRecord ds_records = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
  423. }
  424. // Defines a Delegation Signer (DS) record, which is needed to enable DNSSEC
  425. // for a domain. It contains a digest (hash) of a DNSKEY record that must be
  426. // present in the domain's DNS zone.
  427. message DsRecord {
  428. // List of algorithms used to create a DNSKEY. Certain
  429. // algorithms are not supported for particular domains.
  430. enum Algorithm {
  431. // The algorithm is unspecified.
  432. ALGORITHM_UNSPECIFIED = 0;
  433. // RSA/MD5. Cannot be used for new deployments.
  434. RSAMD5 = 1;
  435. // Diffie-Hellman. Cannot be used for new deployments.
  436. DH = 2;
  437. // DSA/SHA1. Not recommended for new deployments.
  438. DSA = 3;
  439. // ECC. Not recommended for new deployments.
  440. ECC = 4;
  441. // RSA/SHA-1. Not recommended for new deployments.
  442. RSASHA1 = 5;
  443. // DSA-NSEC3-SHA1. Not recommended for new deployments.
  444. DSANSEC3SHA1 = 6;
  445. // RSA/SHA1-NSEC3-SHA1. Not recommended for new deployments.
  446. RSASHA1NSEC3SHA1 = 7;
  447. // RSA/SHA-256.
  448. RSASHA256 = 8;
  449. // RSA/SHA-512.
  450. RSASHA512 = 10;
  451. // GOST R 34.10-2001.
  452. ECCGOST = 12;
  453. // ECDSA Curve P-256 with SHA-256.
  454. ECDSAP256SHA256 = 13;
  455. // ECDSA Curve P-384 with SHA-384.
  456. ECDSAP384SHA384 = 14;
  457. // Ed25519.
  458. ED25519 = 15;
  459. // Ed448.
  460. ED448 = 16;
  461. // Reserved for Indirect Keys. Cannot be used for new deployments.
  462. INDIRECT = 252;
  463. // Private algorithm. Cannot be used for new deployments.
  464. PRIVATEDNS = 253;
  465. // Private algorithm OID. Cannot be used for new deployments.
  466. PRIVATEOID = 254;
  467. }
  468. // List of hash functions that may have been used to generate a digest of a
  469. // DNSKEY.
  470. enum DigestType {
  471. // The DigestType is unspecified.
  472. DIGEST_TYPE_UNSPECIFIED = 0;
  473. // SHA-1. Not recommended for new deployments.
  474. SHA1 = 1;
  475. // SHA-256.
  476. SHA256 = 2;
  477. // GOST R 34.11-94.
  478. GOST3411 = 3;
  479. // SHA-384.
  480. SHA384 = 4;
  481. }
  482. // The key tag of the record. Must be set in range 0 -- 65535.
  483. int32 key_tag = 1;
  484. // The algorithm used to generate the referenced DNSKEY.
  485. Algorithm algorithm = 2;
  486. // The hash function used to generate the digest of the referenced DNSKEY.
  487. DigestType digest_type = 3;
  488. // The digest generated from the referenced DNSKEY.
  489. string digest = 4;
  490. }
  491. // Defines a host on your domain that is a DNS name server for your domain
  492. // and/or other domains. Glue records are a way of making the IP address of a
  493. // name server known, even when it serves DNS queries for its parent domain.
  494. // For example, when `ns.example.com` is a name server for `example.com`, the
  495. // host `ns.example.com` must have a glue record to break the circular DNS
  496. // reference.
  497. message GlueRecord {
  498. // Required. Domain name of the host in Punycode format.
  499. string host_name = 1 [(google.api.field_behavior) = REQUIRED];
  500. // List of IPv4 addresses corresponding to this host in the standard decimal
  501. // format (e.g. `198.51.100.1`). At least one of `ipv4_address` and
  502. // `ipv6_address` must be set.
  503. repeated string ipv4_addresses = 2;
  504. // List of IPv6 addresses corresponding to this host in the standard
  505. // hexadecimal format (e.g. `2001:db8::`). At least one of
  506. // `ipv4_address` and `ipv6_address` must be set.
  507. repeated string ipv6_addresses = 3;
  508. }
  509. // The publication state of DS records for a `Registration`.
  510. enum DsState {
  511. // DS state is unspecified.
  512. DS_STATE_UNSPECIFIED = 0;
  513. // DNSSEC is disabled for this domain. No DS records for this domain are
  514. // published in the parent DNS zone.
  515. DS_RECORDS_UNPUBLISHED = 1;
  516. // DNSSEC is enabled for this domain. Appropriate DS records for this domain
  517. // are published in the parent DNS zone. This option is valid only if the
  518. // DNS zone referenced in the `Registration`'s `dns_provider` field is
  519. // already DNSSEC-signed.
  520. DS_RECORDS_PUBLISHED = 2;
  521. }
  522. // The DNS provider of the registration.
  523. oneof dns_provider {
  524. // An arbitrary DNS provider identified by its name servers.
  525. CustomDns custom_dns = 1;
  526. // The free DNS zone provided by
  527. // [Google Domains](https://domains.google/).
  528. GoogleDomainsDns google_domains_dns = 2;
  529. }
  530. // The list of glue records for this `Registration`. Commonly empty.
  531. repeated GlueRecord glue_records = 4;
  532. }
  533. // Defines the contact information associated with a `Registration`.
  534. //
  535. // [ICANN](https://icann.org/) requires all domain names to have associated
  536. // contact information. The `registrant_contact` is considered the
  537. // domain's legal owner, and often the other contacts are identical.
  538. message ContactSettings {
  539. // Details required for a contact associated with a `Registration`.
  540. message Contact {
  541. // Required. Postal address of the contact.
  542. google.type.PostalAddress postal_address = 1 [(google.api.field_behavior) = REQUIRED];
  543. // Required. Email address of the contact.
  544. string email = 2 [(google.api.field_behavior) = REQUIRED];
  545. // Required. Phone number of the contact in international format. For example,
  546. // `"+1-800-555-0123"`.
  547. string phone_number = 3 [(google.api.field_behavior) = REQUIRED];
  548. // Fax number of the contact in international format. For example,
  549. // `"+1-800-555-0123"`.
  550. string fax_number = 4;
  551. }
  552. // Required. Privacy setting for the contacts associated with the `Registration`.
  553. ContactPrivacy privacy = 1 [(google.api.field_behavior) = REQUIRED];
  554. // Required. The registrant contact for the `Registration`.
  555. //
  556. // *Caution: Anyone with access to this email address, phone number,
  557. // and/or postal address can take control of the domain.*
  558. //
  559. // *Warning: For new `Registration`s, the registrant receives an email
  560. // confirmation that they must complete within 15 days to avoid domain
  561. // suspension.*
  562. Contact registrant_contact = 2 [(google.api.field_behavior) = REQUIRED];
  563. // Required. The administrative contact for the `Registration`.
  564. Contact admin_contact = 3 [(google.api.field_behavior) = REQUIRED];
  565. // Required. The technical contact for the `Registration`.
  566. Contact technical_contact = 4 [(google.api.field_behavior) = REQUIRED];
  567. }
  568. // Request for the `SearchDomains` method.
  569. message SearchDomainsRequest {
  570. // Required. String used to search for available domain names.
  571. string query = 1 [(google.api.field_behavior) = REQUIRED];
  572. // Required. The location. Must be in the format `projects/*/locations/*`.
  573. string location = 2 [
  574. (google.api.field_behavior) = REQUIRED,
  575. (google.api.resource_reference) = {
  576. type: "locations.googleapis.com/Location"
  577. }
  578. ];
  579. }
  580. // Response for the `SearchDomains` method.
  581. message SearchDomainsResponse {
  582. // Results of the domain name search.
  583. repeated RegisterParameters register_parameters = 1;
  584. }
  585. // Request for the `RetrieveRegisterParameters` method.
  586. message RetrieveRegisterParametersRequest {
  587. // Required. The domain name. Unicode domain names must be expressed in Punycode format.
  588. string domain_name = 1 [(google.api.field_behavior) = REQUIRED];
  589. // Required. The location. Must be in the format `projects/*/locations/*`.
  590. string location = 2 [
  591. (google.api.field_behavior) = REQUIRED,
  592. (google.api.resource_reference) = {
  593. type: "locations.googleapis.com/Location"
  594. }
  595. ];
  596. }
  597. // Response for the `RetrieveRegisterParameters` method.
  598. message RetrieveRegisterParametersResponse {
  599. // Parameters to use when calling the `RegisterDomain` method.
  600. RegisterParameters register_parameters = 1;
  601. }
  602. // Request for the `RegisterDomain` method.
  603. message RegisterDomainRequest {
  604. // Required. The parent resource of the `Registration`. Must be in the
  605. // format `projects/*/locations/*`.
  606. string parent = 1 [
  607. (google.api.field_behavior) = REQUIRED,
  608. (google.api.resource_reference) = {
  609. type: "locations.googleapis.com/Location"
  610. }
  611. ];
  612. // Required. The complete `Registration` resource to be created.
  613. Registration registration = 2 [(google.api.field_behavior) = REQUIRED];
  614. // The list of domain notices that you acknowledge. Call
  615. // `RetrieveRegisterParameters` to see the notices that need acknowledgement.
  616. repeated DomainNotice domain_notices = 3;
  617. // The list of contact notices that the caller acknowledges. The notices
  618. // needed here depend on the values specified in
  619. // `registration.contact_settings`.
  620. repeated ContactNotice contact_notices = 4;
  621. // Required. Yearly price to register or renew the domain.
  622. // The value that should be put here can be obtained from
  623. // RetrieveRegisterParameters or SearchDomains calls.
  624. google.type.Money yearly_price = 5 [(google.api.field_behavior) = REQUIRED];
  625. // When true, only validation is performed, without actually registering
  626. // the domain. Follows:
  627. // https://cloud.google.com/apis/design/design_patterns#request_validation
  628. bool validate_only = 6;
  629. }
  630. // Request for the `RetrieveTransferParameters` method.
  631. message RetrieveTransferParametersRequest {
  632. // Required. The domain name. Unicode domain names must be expressed in Punycode format.
  633. string domain_name = 1 [(google.api.field_behavior) = REQUIRED];
  634. // Required. The location. Must be in the format `projects/*/locations/*`.
  635. string location = 2 [
  636. (google.api.field_behavior) = REQUIRED,
  637. (google.api.resource_reference) = {
  638. type: "locations.googleapis.com/Location"
  639. }
  640. ];
  641. }
  642. // Response for the `RetrieveTransferParameters` method.
  643. message RetrieveTransferParametersResponse {
  644. // Parameters to use when calling the `TransferDomain` method.
  645. TransferParameters transfer_parameters = 1;
  646. }
  647. // Request for the `TransferDomain` method.
  648. message TransferDomainRequest {
  649. // Required. The parent resource of the `Registration`. Must be in the
  650. // format `projects/*/locations/*`.
  651. string parent = 1 [
  652. (google.api.field_behavior) = REQUIRED,
  653. (google.api.resource_reference) = {
  654. type: "locations.googleapis.com/Location"
  655. }
  656. ];
  657. // Required. The complete `Registration` resource to be created.
  658. //
  659. // You can leave `registration.dns_settings` unset to import the
  660. // domain's current DNS configuration from its current registrar. Use this
  661. // option only if you are sure that the domain's current DNS service
  662. // does not cease upon transfer, as is often the case for DNS services
  663. // provided for free by the registrar.
  664. Registration registration = 2 [(google.api.field_behavior) = REQUIRED];
  665. // The list of contact notices that you acknowledge. The notices
  666. // needed here depend on the values specified in
  667. // `registration.contact_settings`.
  668. repeated ContactNotice contact_notices = 3;
  669. // Required. Acknowledgement of the price to transfer or renew the domain for one year.
  670. // Call `RetrieveTransferParameters` to obtain the price, which you must
  671. // acknowledge.
  672. google.type.Money yearly_price = 4 [(google.api.field_behavior) = REQUIRED];
  673. // The domain's transfer authorization code. You can obtain this from the
  674. // domain's current registrar.
  675. AuthorizationCode authorization_code = 5;
  676. // Validate the request without actually transferring the domain.
  677. bool validate_only = 6;
  678. }
  679. // Request for the `ListRegistrations` method.
  680. message ListRegistrationsRequest {
  681. // Required. The project and location from which to list `Registration`s, specified in
  682. // the format `projects/*/locations/*`.
  683. string parent = 1 [
  684. (google.api.field_behavior) = REQUIRED,
  685. (google.api.resource_reference) = {
  686. type: "locations.googleapis.com/Location"
  687. }
  688. ];
  689. // Maximum number of results to return.
  690. int32 page_size = 2;
  691. // When set to the `next_page_token` from a prior response, provides the next
  692. // page of results.
  693. string page_token = 3;
  694. // Filter expression to restrict the `Registration`s returned.
  695. //
  696. // The expression must specify the field name, a comparison operator, and the
  697. // value that you want to use for filtering. The value must be a string, a
  698. // number, a boolean, or an enum value. The comparison operator should be one
  699. // of =, !=, >, <, >=, <=, or : for prefix or wildcard matches.
  700. //
  701. // For example, to filter to a specific domain name, use an expression like
  702. // `domainName="example.com"`. You can also check for the existence of a
  703. // field; for example, to find domains using custom DNS settings, use an
  704. // expression like `dnsSettings.customDns:*`.
  705. //
  706. // You can also create compound filters by combining expressions with the
  707. // `AND` and `OR` operators. For example, to find domains that are suspended
  708. // or have specific issues flagged, use an expression like
  709. // `(state=SUSPENDED) OR (issue:*)`.
  710. string filter = 4;
  711. }
  712. // Response for the `ListRegistrations` method.
  713. message ListRegistrationsResponse {
  714. // A list of `Registration`s.
  715. repeated Registration registrations = 1;
  716. // When present, there are more results to retrieve. Set `page_token` to this
  717. // value on a subsequent call to get the next page of results.
  718. string next_page_token = 2;
  719. }
  720. // Request for the `GetRegistration` method.
  721. message GetRegistrationRequest {
  722. // Required. The name of the `Registration` to get, in the format
  723. // `projects/*/locations/*/registrations/*`.
  724. string name = 1 [
  725. (google.api.field_behavior) = REQUIRED,
  726. (google.api.resource_reference) = {
  727. type: "domains.googleapis.com/Registration"
  728. }
  729. ];
  730. }
  731. // Request for the `UpdateRegistration` method.
  732. message UpdateRegistrationRequest {
  733. // Fields of the `Registration` to update.
  734. Registration registration = 1;
  735. // Required. The field mask describing which fields to update as a comma-separated list.
  736. // For example, if only the labels are being updated, the `update_mask` is
  737. // `"labels"`.
  738. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
  739. }
  740. // Request for the `ConfigureManagementSettings` method.
  741. message ConfigureManagementSettingsRequest {
  742. // Required. The name of the `Registration` whose management settings are being updated,
  743. // in the format `projects/*/locations/*/registrations/*`.
  744. string registration = 1 [
  745. (google.api.field_behavior) = REQUIRED,
  746. (google.api.resource_reference) = {
  747. type: "domains.googleapis.com/Registration"
  748. }
  749. ];
  750. // Fields of the `ManagementSettings` to update.
  751. ManagementSettings management_settings = 2;
  752. // Required. The field mask describing which fields to update as a comma-separated list.
  753. // For example, if only the transfer lock is being updated, the `update_mask`
  754. // is `"transfer_lock_state"`.
  755. google.protobuf.FieldMask update_mask = 3 [(google.api.field_behavior) = REQUIRED];
  756. }
  757. // Request for the `ConfigureDnsSettings` method.
  758. message ConfigureDnsSettingsRequest {
  759. // Required. The name of the `Registration` whose DNS settings are being updated,
  760. // in the format `projects/*/locations/*/registrations/*`.
  761. string registration = 1 [
  762. (google.api.field_behavior) = REQUIRED,
  763. (google.api.resource_reference) = {
  764. type: "domains.googleapis.com/Registration"
  765. }
  766. ];
  767. // Fields of the `DnsSettings` to update.
  768. DnsSettings dns_settings = 2;
  769. // Required. The field mask describing which fields to update as a comma-separated list.
  770. // For example, if only the name servers are being updated for an existing
  771. // Custom DNS configuration, the `update_mask` is
  772. // `"custom_dns.name_servers"`.
  773. //
  774. // When changing the DNS provider from one type to another, pass the new
  775. // provider's field name as part of the field mask. For example, when changing
  776. // from a Google Domains DNS configuration to a Custom DNS configuration, the
  777. // `update_mask` is `"custom_dns"`. //
  778. google.protobuf.FieldMask update_mask = 3 [(google.api.field_behavior) = REQUIRED];
  779. // Validate the request without actually updating the DNS settings.
  780. bool validate_only = 4;
  781. }
  782. // Request for the `ConfigureContactSettings` method.
  783. message ConfigureContactSettingsRequest {
  784. // Required. The name of the `Registration` whose contact settings are being updated,
  785. // in the format `projects/*/locations/*/registrations/*`.
  786. string registration = 1 [
  787. (google.api.field_behavior) = REQUIRED,
  788. (google.api.resource_reference) = {
  789. type: "domains.googleapis.com/Registration"
  790. }
  791. ];
  792. // Fields of the `ContactSettings` to update.
  793. ContactSettings contact_settings = 2;
  794. // Required. The field mask describing which fields to update as a comma-separated list.
  795. // For example, if only the registrant contact is being updated, the
  796. // `update_mask` is `"registrant_contact"`.
  797. google.protobuf.FieldMask update_mask = 3 [(google.api.field_behavior) = REQUIRED];
  798. // The list of contact notices that the caller acknowledges. The notices
  799. // needed here depend on the values specified in `contact_settings`.
  800. repeated ContactNotice contact_notices = 4;
  801. // Validate the request without actually updating the contact settings.
  802. bool validate_only = 5;
  803. }
  804. // Request for the `ExportRegistration` method.
  805. message ExportRegistrationRequest {
  806. // Required. The name of the `Registration` to export,
  807. // in the format `projects/*/locations/*/registrations/*`.
  808. string name = 1 [
  809. (google.api.field_behavior) = REQUIRED,
  810. (google.api.resource_reference) = {
  811. type: "domains.googleapis.com/Registration"
  812. }
  813. ];
  814. }
  815. // Request for the `DeleteRegistration` method.
  816. message DeleteRegistrationRequest {
  817. // Required. The name of the `Registration` to delete,
  818. // in the format `projects/*/locations/*/registrations/*`.
  819. string name = 1 [
  820. (google.api.field_behavior) = REQUIRED,
  821. (google.api.resource_reference) = {
  822. type: "domains.googleapis.com/Registration"
  823. }
  824. ];
  825. }
  826. // Request for the `RetrieveAuthorizationCode` method.
  827. message RetrieveAuthorizationCodeRequest {
  828. // Required. The name of the `Registration` whose authorization code is being retrieved,
  829. // in the format `projects/*/locations/*/registrations/*`.
  830. string registration = 1 [
  831. (google.api.field_behavior) = REQUIRED,
  832. (google.api.resource_reference) = {
  833. type: "domains.googleapis.com/Registration"
  834. }
  835. ];
  836. }
  837. // Request for the `ResetAuthorizationCode` method.
  838. message ResetAuthorizationCodeRequest {
  839. // Required. The name of the `Registration` whose authorization code is being reset,
  840. // in the format `projects/*/locations/*/registrations/*`.
  841. string registration = 1 [
  842. (google.api.field_behavior) = REQUIRED,
  843. (google.api.resource_reference) = {
  844. type: "domains.googleapis.com/Registration"
  845. }
  846. ];
  847. }
  848. // Parameters required to register a new domain.
  849. message RegisterParameters {
  850. // Possible availability states of a domain name.
  851. enum Availability {
  852. // The availability is unspecified.
  853. AVAILABILITY_UNSPECIFIED = 0;
  854. // The domain is available for registration.
  855. AVAILABLE = 1;
  856. // The domain is not available for registration. Generally this means it is
  857. // already registered to another party.
  858. UNAVAILABLE = 2;
  859. // The domain is not currently supported by Cloud Domains, but may
  860. // be available elsewhere.
  861. UNSUPPORTED = 3;
  862. // Cloud Domains is unable to determine domain availability, generally
  863. // due to system maintenance at the domain name registry.
  864. UNKNOWN = 4;
  865. }
  866. // The domain name. Unicode domain names are expressed in Punycode format.
  867. string domain_name = 1;
  868. // Indicates whether the domain is available for registration. This value is
  869. // accurate when obtained by calling `RetrieveRegisterParameters`, but is
  870. // approximate when obtained by calling `SearchDomains`.
  871. Availability availability = 2;
  872. // Contact privacy options that the domain supports.
  873. repeated ContactPrivacy supported_privacy = 3;
  874. // Notices about special properties of the domain.
  875. repeated DomainNotice domain_notices = 4;
  876. // Price to register or renew the domain for one year.
  877. google.type.Money yearly_price = 5;
  878. }
  879. // Parameters required to transfer a domain from another registrar.
  880. message TransferParameters {
  881. // The domain name. Unicode domain names are expressed in Punycode format.
  882. string domain_name = 1;
  883. // The registrar that currently manages the domain.
  884. string current_registrar = 2;
  885. // The name servers that currently store the configuration of the domain.
  886. repeated string name_servers = 3;
  887. // Indicates whether the domain is protected by a transfer lock. For a
  888. // transfer to succeed, this must show `UNLOCKED`. To unlock a domain,
  889. // go to its current registrar.
  890. TransferLockState transfer_lock_state = 4;
  891. // Contact privacy options that the domain supports.
  892. repeated ContactPrivacy supported_privacy = 5;
  893. // Price to transfer or renew the domain for one year.
  894. google.type.Money yearly_price = 6;
  895. }
  896. // Defines an authorization code.
  897. message AuthorizationCode {
  898. // The Authorization Code in ASCII. It can be used to transfer the domain
  899. // to or from another registrar.
  900. string code = 1;
  901. }
  902. // Represents the metadata of the long-running operation. Output only.
  903. message OperationMetadata {
  904. // The time the operation was created.
  905. google.protobuf.Timestamp create_time = 1;
  906. // The time the operation finished running.
  907. google.protobuf.Timestamp end_time = 2;
  908. // Server-defined resource path for the target of the operation.
  909. string target = 3;
  910. // Name of the verb executed by the operation.
  911. string verb = 4;
  912. // Human-readable status of the operation, if any.
  913. string status_detail = 5;
  914. // API version used to start the operation.
  915. string api_version = 6;
  916. }
  917. // Defines a set of possible contact privacy settings for a `Registration`.
  918. //
  919. // [ICANN](https://icann.org/) maintains the WHOIS database, a publicly
  920. // accessible mapping from domain name to contact information, and requires that
  921. // each domain name have an entry. Choose from these options to control how much
  922. // information in your `ContactSettings` is published.
  923. enum ContactPrivacy {
  924. // The contact privacy settings are undefined.
  925. CONTACT_PRIVACY_UNSPECIFIED = 0;
  926. // All the data from `ContactSettings` is publicly available. When setting
  927. // this option, you must also provide a
  928. // `PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT` in the `contact_notices` field of the
  929. // request.
  930. PUBLIC_CONTACT_DATA = 1;
  931. // None of the data from `ContactSettings` is publicly available. Instead,
  932. // proxy contact data is published for your domain. Email sent to the proxy
  933. // email address is forwarded to the registrant's email address. Cloud Domains
  934. // provides this privacy proxy service at no additional cost.
  935. PRIVATE_CONTACT_DATA = 2;
  936. // Some data from `ContactSettings` is publicly available. The actual
  937. // information redacted depends on the domain. For details, see [the
  938. // registration privacy
  939. // article](https://support.google.com/domains/answer/3251242).
  940. REDACTED_CONTACT_DATA = 3;
  941. }
  942. // Notices about special properties of certain domains.
  943. enum DomainNotice {
  944. // The notice is undefined.
  945. DOMAIN_NOTICE_UNSPECIFIED = 0;
  946. // Indicates that the domain is preloaded on the HTTP Strict Transport
  947. // Security list in browsers. Serving a website on such domain requires
  948. // an SSL certificate. For details, see
  949. // [how to get an SSL
  950. // certificate](https://support.google.com/domains/answer/7638036).
  951. HSTS_PRELOADED = 1;
  952. }
  953. // Notices related to contact information.
  954. enum ContactNotice {
  955. // The notice is undefined.
  956. CONTACT_NOTICE_UNSPECIFIED = 0;
  957. // Required when setting the `privacy` field of `ContactSettings` to
  958. // `PUBLIC_CONTACT_DATA`, which exposes contact data publicly.
  959. PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT = 1;
  960. }
  961. // Possible states of a `Registration`'s transfer lock.
  962. enum TransferLockState {
  963. // The state is unspecified.
  964. TRANSFER_LOCK_STATE_UNSPECIFIED = 0;
  965. // The domain is unlocked and can be transferred to another registrar.
  966. UNLOCKED = 1;
  967. // The domain is locked and cannot be transferred to another registrar.
  968. LOCKED = 2;
  969. }