|  | // 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; | 
|  | } |