| // Copyright 2017 Google Inc. | 
 | // | 
 | // Licensed under the Apache License, Version 2.0 (the "License"); | 
 | // you may not use this file except in compliance with the License. | 
 | // You may obtain a copy of the License at | 
 | // | 
 | //     http://www.apache.org/licenses/LICENSE-2.0 | 
 | // | 
 | // Unless required by applicable law or agreed to in writing, software | 
 | // distributed under the License is distributed on an "AS IS" BASIS, | 
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | // See the License for the specific language governing permissions and | 
 | // limitations under the License. | 
 |  | 
 | syntax = "proto3"; | 
 |  | 
 | package google.api; | 
 |  | 
 | option go_package = "google.golang.org/genproto/googleapis/api/serviceconfig;serviceconfig"; | 
 | option java_multiple_files = true; | 
 | option java_outer_classname = "DocumentationProto"; | 
 | option java_package = "com.google.api"; | 
 | option objc_class_prefix = "GAPI"; | 
 |  | 
 |  | 
 | // `Documentation` provides the information for describing a service. | 
 | // | 
 | // Example: | 
 | // <pre><code>documentation: | 
 | //   summary: > | 
 | //     The Google Calendar API gives access | 
 | //     to most calendar features. | 
 | //   pages: | 
 | //   - name: Overview | 
 | //     content: (== include google/foo/overview.md ==) | 
 | //   - name: Tutorial | 
 | //     content: (== include google/foo/tutorial.md ==) | 
 | //     subpages; | 
 | //     - name: Java | 
 | //       content: (== include google/foo/tutorial_java.md ==) | 
 | //   rules: | 
 | //   - selector: google.calendar.Calendar.Get | 
 | //     description: > | 
 | //       ... | 
 | //   - selector: google.calendar.Calendar.Put | 
 | //     description: > | 
 | //       ... | 
 | // </code></pre> | 
 | // Documentation is provided in markdown syntax. In addition to | 
 | // standard markdown features, definition lists, tables and fenced | 
 | // code blocks are supported. Section headers can be provided and are | 
 | // interpreted relative to the section nesting of the context where | 
 | // a documentation fragment is embedded. | 
 | // | 
 | // Documentation from the IDL is merged with documentation defined | 
 | // via the config at normalization time, where documentation provided | 
 | // by config rules overrides IDL provided. | 
 | // | 
 | // A number of constructs specific to the API platform are supported | 
 | // in documentation text. | 
 | // | 
 | // In order to reference a proto element, the following | 
 | // notation can be used: | 
 | // <pre><code>[fully.qualified.proto.name][]</code></pre> | 
 | // To override the display text used for the link, this can be used: | 
 | // <pre><code>[display text][fully.qualified.proto.name]</code></pre> | 
 | // Text can be excluded from doc using the following notation: | 
 | // <pre><code>(-- internal comment --)</code></pre> | 
 | // Comments can be made conditional using a visibility label. The below | 
 | // text will be only rendered if the `BETA` label is available: | 
 | // <pre><code>(--BETA: comment for BETA users --)</code></pre> | 
 | // A few directives are available in documentation. Note that | 
 | // directives must appear on a single line to be properly | 
 | // identified. The `include` directive includes a markdown file from | 
 | // an external source: | 
 | // <pre><code>(== include path/to/file ==)</code></pre> | 
 | // The `resource_for` directive marks a message to be the resource of | 
 | // a collection in REST view. If it is not specified, tools attempt | 
 | // to infer the resource from the operations in a collection: | 
 | // <pre><code>(== resource_for v1.shelves.books ==)</code></pre> | 
 | // The directive `suppress_warning` does not directly affect documentation | 
 | // and is documented together with service config validation. | 
 | message Documentation { | 
 |   // A short summary of what the service does. Can only be provided by | 
 |   // plain text. | 
 |   string summary = 1; | 
 |  | 
 |   // The top level pages for the documentation set. | 
 |   repeated Page pages = 5; | 
 |  | 
 |   // A list of documentation rules that apply to individual API elements. | 
 |   // | 
 |   // **NOTE:** All service configuration rules follow "last one wins" order. | 
 |   repeated DocumentationRule rules = 3; | 
 |  | 
 |   // The URL to the root of documentation. | 
 |   string documentation_root_url = 4; | 
 |  | 
 |   // Declares a single overview page. For example: | 
 |   // <pre><code>documentation: | 
 |   //   summary: ... | 
 |   //   overview: (== include overview.md ==) | 
 |   // </code></pre> | 
 |   // This is a shortcut for the following declaration (using pages style): | 
 |   // <pre><code>documentation: | 
 |   //   summary: ... | 
 |   //   pages: | 
 |   //   - name: Overview | 
 |   //     content: (== include overview.md ==) | 
 |   // </code></pre> | 
 |   // Note: you cannot specify both `overview` field and `pages` field. | 
 |   string overview = 2; | 
 | } | 
 |  | 
 | // A documentation rule provides information about individual API elements. | 
 | message DocumentationRule { | 
 |   // The selector is a comma-separated list of patterns. Each pattern is a | 
 |   // qualified name of the element which may end in "*", indicating a wildcard. | 
 |   // Wildcards are only allowed at the end and for a whole component of the | 
 |   // qualified name, i.e. "foo.*" is ok, but not "foo.b*" or "foo.*.bar". To | 
 |   // specify a default for all applicable elements, the whole pattern "*" | 
 |   // is used. | 
 |   string selector = 1; | 
 |  | 
 |   // Description of the selected API(s). | 
 |   string description = 2; | 
 |  | 
 |   // Deprecation description of the selected element(s). It can be provided if an | 
 |   // element is marked as `deprecated`. | 
 |   string deprecation_description = 3; | 
 | } | 
 |  | 
 | // Represents a documentation page. A page can contain subpages to represent | 
 | // nested documentation set structure. | 
 | message Page { | 
 |   // The name of the page. It will be used as an identity of the page to | 
 |   // generate URI of the page, text of the link to this page in navigation, | 
 |   // etc. The full page name (start from the root page name to this page | 
 |   // concatenated with `.`) can be used as reference to the page in your | 
 |   // documentation. For example: | 
 |   // <pre><code>pages: | 
 |   // - name: Tutorial | 
 |   //   content: (== include tutorial.md ==) | 
 |   //   subpages: | 
 |   //   - name: Java | 
 |   //     content: (== include tutorial_java.md ==) | 
 |   // </code></pre> | 
 |   // You can reference `Java` page using Markdown reference link syntax: | 
 |   // `[Java][Tutorial.Java]`. | 
 |   string name = 1; | 
 |  | 
 |   // The Markdown content of the page. You can use <code>(== include {path} ==)</code> | 
 |   // to include content from a Markdown file. | 
 |   string content = 2; | 
 |  | 
 |   // Subpages of this page. The order of subpages specified here will be | 
 |   // honored in the generated docset. | 
 |   repeated Page subpages = 3; | 
 | } |