xref: /aosp_15_r20/external/googleapis/google/api/documentation.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
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: &#40;== include google/foo/overview.md ==&#41;
35*d5c09012SAndroid Build Coastguard Worker//   - name: Tutorial
36*d5c09012SAndroid Build Coastguard Worker//     content: &#40;== include google/foo/tutorial.md ==&#41;
37*d5c09012SAndroid Build Coastguard Worker//     subpages:
38*d5c09012SAndroid Build Coastguard Worker//     - name: Java
39*d5c09012SAndroid Build Coastguard Worker//       content: &#40;== include google/foo/tutorial_java.md ==&#41;
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>&#91;fully.qualified.proto.name]&#91;]</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>&#91;display text]&#91;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>&#40;-- internal comment --&#41;</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>&#40;== include path/to/file ==&#41;</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>&#40;== resource_for v1.shelves.books ==&#41;</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: &#40;== include overview.md ==&#41;
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: &#40;== include overview.md ==&#41;
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: &#40;== include tutorial.md ==&#41;
152*d5c09012SAndroid Build Coastguard Worker  //   subpages:
153*d5c09012SAndroid Build Coastguard Worker  //   - name: Java
154*d5c09012SAndroid Build Coastguard Worker  //     content: &#40;== include tutorial_java.md ==&#41;
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>&#40;== include {path}
161*d5c09012SAndroid Build Coastguard Worker  // ==&#41;</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