All Downloads are FREE. Search and download functionalities are using the official Maven repository.

google.api.usage.proto Maven / Gradle / Ivy

There is a newer version: 0.0.8
Show newest version
// Copyright 2016 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 java_multiple_files = true;
option java_outer_classname = "UsageProto";
option java_package = "com.google.api";


// Configuration controlling usage of a service.
message Usage {
  // Service access types.
  //
  // Access to restricted API features is always controlled by
  // [visibility][google.api.Visibility], independent of the ServiceAccess type.
  //
  enum ServiceAccess {
    // The service can only be seen/used by users identified in the service's
    // access control policy.
    //
    // If the service has not been whitelisted by your domain administrator
    // for out-of-org publishing, then this mode will be treated like
    // ORG_RESTRICTED.
    RESTRICTED = 0;

    // The service can be seen/used by anyone.
    //
    // If the service has not been whitelisted by your domain administrator
    // for out-of-org publishing, then this mode will be treated like
    // ORG_PUBLIC.
    //
    // The discovery document for the service will also be public and allow
    // unregistered access.
    PUBLIC = 1;

    // The service can be seen/used by users identified in the service's
    // access control policy and they are within the organization that owns the
    // service.
    //
    // Access is further constrained to the group
    // controlled by the administrator of the project/org that owns the
    // service.
    ORG_RESTRICTED = 2;

    // The service can be seen/used by the group of users controlled by the
    // administrator of the project/org that owns the service.
    ORG_PUBLIC = 3;
  }

  // Controls which users can see or activate the service.
  ServiceAccess service_access = 4;

  // Requirements that must be satisfied before a consumer project can use the
  // service. Each requirement is of the form /;
  // for example 'serviceusage.googleapis.com/billing-enabled'.
  repeated string requirements = 1;

  // Services that must be activated in order for this service to be used.
  // The set of services activated as a result of these relations are all
  // activated in parallel with no guaranteed order of activation.
  // Each string is a service name, e.g. `calendar.googleapis.com`.
  repeated string depends_on_services = 2;

  // Services that must be contacted before a consumer can begin using the
  // service. Each service will be contacted in sequence, and, if any activation
  // call fails, the entire activation will fail. Each hook is of the form
  // /, where  is optional; for example:
  // 'robotservice.googleapis.com/default'.
  repeated string activation_hooks = 3;

  // Services that must be contacted before a consumer can deactivate a
  // service. Each service will be contacted in sequence, and, if any
  // deactivation call fails, the entire deactivation will fail. Each hook is
  // of the form /, where  is optional; for
  // example:
  // 'compute.googleapis.com/'.
  repeated string deactivation_hooks = 5;

  // Individual rules for configuring usage on selected methods.
  repeated UsageRule rules = 6;
}

// Usage configuration rules for the service.
//
// NOTE: Under development.
//
//
// Use this rule to configure unregistered calls for the service. Unregistered
// calls are calls that do not contain consumer project identity.
// (Example: calls that do not contain an API key).
// By default, API methods do not allow unregistered calls, and each method call
// must be identified by a consumer project identity. Use this rule to
// allow/disallow unregistered calls.
//
// Example of an API that wants to allow unregistered calls for entire service.
//
//     usage:
//       rules:
//       - selector: "*"
//         allow_unregistered_calls: true
//
// Example of a method that wants to allow unregistered calls.
//
//     usage:
//       rules:
//       - selector: "google.example.library.v1.LibraryService.CreateBook"
//         allow_unregistered_calls: true
message UsageRule {
  // Selects the methods to which this rule applies. Use '*' to indicate all
  // methods in all APIs.
  //
  // Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
  string selector = 1;

  // True, if the method allows unregistered calls; false otherwise.
  bool allow_unregistered_calls = 2;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy