1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.api; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workeroption go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; 20*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 21*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "DocumentationProto"; 22*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.api"; 23*d5c09012SAndroid Build Coastguard Workeroption objc_class_prefix = "GAPI"; 24*d5c09012SAndroid Build Coastguard Worker 25*d5c09012SAndroid Build Coastguard Worker// `Documentation` provides the information for describing a service. 26*d5c09012SAndroid Build Coastguard Worker// 27*d5c09012SAndroid Build Coastguard Worker// Example: 28*d5c09012SAndroid Build Coastguard Worker// <pre><code>documentation: 29*d5c09012SAndroid Build Coastguard Worker// summary: > 30*d5c09012SAndroid Build Coastguard Worker// The Google Calendar API gives access 31*d5c09012SAndroid Build Coastguard Worker// to most calendar features. 32*d5c09012SAndroid Build Coastguard Worker// pages: 33*d5c09012SAndroid Build Coastguard Worker// - name: Overview 34*d5c09012SAndroid Build Coastguard Worker// content: (== include google/foo/overview.md ==) 35*d5c09012SAndroid Build Coastguard Worker// - name: Tutorial 36*d5c09012SAndroid Build Coastguard Worker// content: (== include google/foo/tutorial.md ==) 37*d5c09012SAndroid Build Coastguard Worker// subpages: 38*d5c09012SAndroid Build Coastguard Worker// - name: Java 39*d5c09012SAndroid Build Coastguard Worker// content: (== include google/foo/tutorial_java.md ==) 40*d5c09012SAndroid Build Coastguard Worker// rules: 41*d5c09012SAndroid Build Coastguard Worker// - selector: google.calendar.Calendar.Get 42*d5c09012SAndroid Build Coastguard Worker// description: > 43*d5c09012SAndroid Build Coastguard Worker// ... 44*d5c09012SAndroid Build Coastguard Worker// - selector: google.calendar.Calendar.Put 45*d5c09012SAndroid Build Coastguard Worker// description: > 46*d5c09012SAndroid Build Coastguard Worker// ... 47*d5c09012SAndroid Build Coastguard Worker// </code></pre> 48*d5c09012SAndroid Build Coastguard Worker// Documentation is provided in markdown syntax. In addition to 49*d5c09012SAndroid Build Coastguard Worker// standard markdown features, definition lists, tables and fenced 50*d5c09012SAndroid Build Coastguard Worker// code blocks are supported. Section headers can be provided and are 51*d5c09012SAndroid Build Coastguard Worker// interpreted relative to the section nesting of the context where 52*d5c09012SAndroid Build Coastguard Worker// a documentation fragment is embedded. 53*d5c09012SAndroid Build Coastguard Worker// 54*d5c09012SAndroid Build Coastguard Worker// Documentation from the IDL is merged with documentation defined 55*d5c09012SAndroid Build Coastguard Worker// via the config at normalization time, where documentation provided 56*d5c09012SAndroid Build Coastguard Worker// by config rules overrides IDL provided. 57*d5c09012SAndroid Build Coastguard Worker// 58*d5c09012SAndroid Build Coastguard Worker// A number of constructs specific to the API platform are supported 59*d5c09012SAndroid Build Coastguard Worker// in documentation text. 60*d5c09012SAndroid Build Coastguard Worker// 61*d5c09012SAndroid Build Coastguard Worker// In order to reference a proto element, the following 62*d5c09012SAndroid Build Coastguard Worker// notation can be used: 63*d5c09012SAndroid Build Coastguard Worker// <pre><code>[fully.qualified.proto.name][]</code></pre> 64*d5c09012SAndroid Build Coastguard Worker// To override the display text used for the link, this can be used: 65*d5c09012SAndroid Build Coastguard Worker// <pre><code>[display text][fully.qualified.proto.name]</code></pre> 66*d5c09012SAndroid Build Coastguard Worker// Text can be excluded from doc using the following notation: 67*d5c09012SAndroid Build Coastguard Worker// <pre><code>(-- internal comment --)</code></pre> 68*d5c09012SAndroid Build Coastguard Worker// 69*d5c09012SAndroid Build Coastguard Worker// A few directives are available in documentation. Note that 70*d5c09012SAndroid Build Coastguard Worker// directives must appear on a single line to be properly 71*d5c09012SAndroid Build Coastguard Worker// identified. The `include` directive includes a markdown file from 72*d5c09012SAndroid Build Coastguard Worker// an external source: 73*d5c09012SAndroid Build Coastguard Worker// <pre><code>(== include path/to/file ==)</code></pre> 74*d5c09012SAndroid Build Coastguard Worker// The `resource_for` directive marks a message to be the resource of 75*d5c09012SAndroid Build Coastguard Worker// a collection in REST view. If it is not specified, tools attempt 76*d5c09012SAndroid Build Coastguard Worker// to infer the resource from the operations in a collection: 77*d5c09012SAndroid Build Coastguard Worker// <pre><code>(== resource_for v1.shelves.books ==)</code></pre> 78*d5c09012SAndroid Build Coastguard Worker// The directive `suppress_warning` does not directly affect documentation 79*d5c09012SAndroid Build Coastguard Worker// and is documented together with service config validation. 80*d5c09012SAndroid Build Coastguard Workermessage Documentation { 81*d5c09012SAndroid Build Coastguard Worker // A short description of what the service does. The summary must be plain 82*d5c09012SAndroid Build Coastguard Worker // text. It becomes the overview of the service displayed in Google Cloud 83*d5c09012SAndroid Build Coastguard Worker // Console. 84*d5c09012SAndroid Build Coastguard Worker // NOTE: This field is equivalent to the standard field `description`. 85*d5c09012SAndroid Build Coastguard Worker string summary = 1; 86*d5c09012SAndroid Build Coastguard Worker 87*d5c09012SAndroid Build Coastguard Worker // The top level pages for the documentation set. 88*d5c09012SAndroid Build Coastguard Worker repeated Page pages = 5; 89*d5c09012SAndroid Build Coastguard Worker 90*d5c09012SAndroid Build Coastguard Worker // A list of documentation rules that apply to individual API elements. 91*d5c09012SAndroid Build Coastguard Worker // 92*d5c09012SAndroid Build Coastguard Worker // **NOTE:** All service configuration rules follow "last one wins" order. 93*d5c09012SAndroid Build Coastguard Worker repeated DocumentationRule rules = 3; 94*d5c09012SAndroid Build Coastguard Worker 95*d5c09012SAndroid Build Coastguard Worker // The URL to the root of documentation. 96*d5c09012SAndroid Build Coastguard Worker string documentation_root_url = 4; 97*d5c09012SAndroid Build Coastguard Worker 98*d5c09012SAndroid Build Coastguard Worker // Specifies the service root url if the default one (the service name 99*d5c09012SAndroid Build Coastguard Worker // from the yaml file) is not suitable. This can be seen in any fully 100*d5c09012SAndroid Build Coastguard Worker // specified service urls as well as sections that show a base that other 101*d5c09012SAndroid Build Coastguard Worker // urls are relative to. 102*d5c09012SAndroid Build Coastguard Worker string service_root_url = 6; 103*d5c09012SAndroid Build Coastguard Worker 104*d5c09012SAndroid Build Coastguard Worker // Declares a single overview page. For example: 105*d5c09012SAndroid Build Coastguard Worker // <pre><code>documentation: 106*d5c09012SAndroid Build Coastguard Worker // summary: ... 107*d5c09012SAndroid Build Coastguard Worker // overview: (== include overview.md ==) 108*d5c09012SAndroid Build Coastguard Worker // </code></pre> 109*d5c09012SAndroid Build Coastguard Worker // This is a shortcut for the following declaration (using pages style): 110*d5c09012SAndroid Build Coastguard Worker // <pre><code>documentation: 111*d5c09012SAndroid Build Coastguard Worker // summary: ... 112*d5c09012SAndroid Build Coastguard Worker // pages: 113*d5c09012SAndroid Build Coastguard Worker // - name: Overview 114*d5c09012SAndroid Build Coastguard Worker // content: (== include overview.md ==) 115*d5c09012SAndroid Build Coastguard Worker // </code></pre> 116*d5c09012SAndroid Build Coastguard Worker // Note: you cannot specify both `overview` field and `pages` field. 117*d5c09012SAndroid Build Coastguard Worker string overview = 2; 118*d5c09012SAndroid Build Coastguard Worker} 119*d5c09012SAndroid Build Coastguard Worker 120*d5c09012SAndroid Build Coastguard Worker// A documentation rule provides information about individual API elements. 121*d5c09012SAndroid Build Coastguard Workermessage DocumentationRule { 122*d5c09012SAndroid Build Coastguard Worker // The selector is a comma-separated list of patterns for any element such as 123*d5c09012SAndroid Build Coastguard Worker // a method, a field, an enum value. Each pattern is a qualified name of the 124*d5c09012SAndroid Build Coastguard Worker // element which may end in "*", indicating a wildcard. Wildcards are only 125*d5c09012SAndroid Build Coastguard Worker // allowed at the end and for a whole component of the qualified name, 126*d5c09012SAndroid Build Coastguard Worker // i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". A wildcard will match 127*d5c09012SAndroid Build Coastguard Worker // one or more components. To specify a default for all applicable elements, 128*d5c09012SAndroid Build Coastguard Worker // the whole pattern "*" is used. 129*d5c09012SAndroid Build Coastguard Worker string selector = 1; 130*d5c09012SAndroid Build Coastguard Worker 131*d5c09012SAndroid Build Coastguard Worker // Description of the selected proto element (e.g. a message, a method, a 132*d5c09012SAndroid Build Coastguard Worker // 'service' definition, or a field). Defaults to leading & trailing comments 133*d5c09012SAndroid Build Coastguard Worker // taken from the proto source definition of the proto element. 134*d5c09012SAndroid Build Coastguard Worker string description = 2; 135*d5c09012SAndroid Build Coastguard Worker 136*d5c09012SAndroid Build Coastguard Worker // Deprecation description of the selected element(s). It can be provided if 137*d5c09012SAndroid Build Coastguard Worker // an element is marked as `deprecated`. 138*d5c09012SAndroid Build Coastguard Worker string deprecation_description = 3; 139*d5c09012SAndroid Build Coastguard Worker} 140*d5c09012SAndroid Build Coastguard Worker 141*d5c09012SAndroid Build Coastguard Worker// Represents a documentation page. A page can contain subpages to represent 142*d5c09012SAndroid Build Coastguard Worker// nested documentation set structure. 143*d5c09012SAndroid Build Coastguard Workermessage Page { 144*d5c09012SAndroid Build Coastguard Worker // The name of the page. It will be used as an identity of the page to 145*d5c09012SAndroid Build Coastguard Worker // generate URI of the page, text of the link to this page in navigation, 146*d5c09012SAndroid Build Coastguard Worker // etc. The full page name (start from the root page name to this page 147*d5c09012SAndroid Build Coastguard Worker // concatenated with `.`) can be used as reference to the page in your 148*d5c09012SAndroid Build Coastguard Worker // documentation. For example: 149*d5c09012SAndroid Build Coastguard Worker // <pre><code>pages: 150*d5c09012SAndroid Build Coastguard Worker // - name: Tutorial 151*d5c09012SAndroid Build Coastguard Worker // content: (== include tutorial.md ==) 152*d5c09012SAndroid Build Coastguard Worker // subpages: 153*d5c09012SAndroid Build Coastguard Worker // - name: Java 154*d5c09012SAndroid Build Coastguard Worker // content: (== include tutorial_java.md ==) 155*d5c09012SAndroid Build Coastguard Worker // </code></pre> 156*d5c09012SAndroid Build Coastguard Worker // You can reference `Java` page using Markdown reference link syntax: 157*d5c09012SAndroid Build Coastguard Worker // `[Java][Tutorial.Java]`. 158*d5c09012SAndroid Build Coastguard Worker string name = 1; 159*d5c09012SAndroid Build Coastguard Worker 160*d5c09012SAndroid Build Coastguard Worker // The Markdown content of the page. You can use <code>(== include {path} 161*d5c09012SAndroid Build Coastguard Worker // ==)</code> to include content from a Markdown file. The content can be 162*d5c09012SAndroid Build Coastguard Worker // used to produce the documentation page such as HTML format page. 163*d5c09012SAndroid Build Coastguard Worker string content = 2; 164*d5c09012SAndroid Build Coastguard Worker 165*d5c09012SAndroid Build Coastguard Worker // Subpages of this page. The order of subpages specified here will be 166*d5c09012SAndroid Build Coastguard Worker // honored in the generated docset. 167*d5c09012SAndroid Build Coastguard Worker repeated Page subpages = 3; 168*d5c09012SAndroid Build Coastguard Worker} 169