123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- // Copyright 2024 Google LLC
- //
- // 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>
- //
- // 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 description of what the service does. The summary must be plain
- // text. It becomes the overview of the service displayed in Google Cloud
- // Console.
- // NOTE: This field is equivalent to the standard field `description`.
- 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;
- // Specifies the service root url if the default one (the service name
- // from the yaml file) is not suitable. This can be seen in any fully
- // specified service urls as well as sections that show a base that other
- // urls are relative to.
- string service_root_url = 6;
- // 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 for any element such as
- // a method, a field, an enum value. 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". A wildcard will match
- // one or more components. To specify a default for all applicable elements,
- // the whole pattern "*" is used.
- string selector = 1;
- // Description of the selected proto element (e.g. a message, a method, a
- // 'service' definition, or a field). Defaults to leading & trailing comments
- // taken from the proto source definition of the proto element.
- 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. The content can be
- // used to produce the documentation page such as HTML format page.
- string content = 2;
- // Subpages of this page. The order of subpages specified here will be
- // honored in the generated docset.
- repeated Page subpages = 3;
- }
|