// Code generated by protoc-gen-go.
// source: google/api/system_parameter.proto
// DO NOT EDIT!

package api

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// ### System parameter configuration
//
// A system parameter is a special kind of parameter defined by the API
// system, not by an individual API. It is typically mapped to an HTTP header
// and/or a URL query parameter. This configuration specifies which methods
// change the names of the system parameters.
type SystemParameters struct {
	// Define system parameters.
	//
	// The parameters defined here will override the default parameters
	// implemented by the system. If this field is missing from the service
	// config, default system parameters will be used. Default system parameters
	// and names is implementation-dependent.
	//
	// Example: define api key and alt name for all methods
	//
	// SystemParameters
	//   rules:
	//     - selector: "*"
	//       parameters:
	//         - name: api_key
	//           url_query_parameter: api_key
	//         - name: alt
	//           http_header: Response-Content-Type
	//
	// Example: define 2 api key names for a specific method.
	//
	// SystemParameters
	//   rules:
	//     - selector: "/ListShelves"
	//       parameters:
	//         - name: api_key
	//           http_header: Api-Key1
	//         - name: api_key
	//           http_header: Api-Key2
	Rules []*SystemParameterRule `protobuf:"bytes,1,rep,name=rules" json:"rules,omitempty"`
}

func (m *SystemParameters) Reset()                    { *m = SystemParameters{} }
func (m *SystemParameters) String() string            { return proto.CompactTextString(m) }
func (*SystemParameters) ProtoMessage()               {}
func (*SystemParameters) Descriptor() ([]byte, []int) { return fileDescriptor16, []int{0} }

func (m *SystemParameters) GetRules() []*SystemParameterRule {
	if m != nil {
		return m.Rules
	}
	return nil
}

// Define a system parameter rule mapping system parameter definitions to
// methods.
type SystemParameterRule struct {
	// 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.
	Selector string `protobuf:"bytes,1,opt,name=selector" json:"selector,omitempty"`
	// Define parameters. Multiple names may be defined for a parameter.
	// For a given method call, only one of them should be used. If multiple
	// names are used the behavior is implementation-dependent.
	// If none of the specified names are present the behavior is
	// parameter-dependent.
	Parameters []*SystemParameter `protobuf:"bytes,2,rep,name=parameters" json:"parameters,omitempty"`
}

func (m *SystemParameterRule) Reset()                    { *m = SystemParameterRule{} }
func (m *SystemParameterRule) String() string            { return proto.CompactTextString(m) }
func (*SystemParameterRule) ProtoMessage()               {}
func (*SystemParameterRule) Descriptor() ([]byte, []int) { return fileDescriptor16, []int{1} }

func (m *SystemParameterRule) GetParameters() []*SystemParameter {
	if m != nil {
		return m.Parameters
	}
	return nil
}

// Define a parameter's name and location. The parameter may be passed as either
// an HTTP header or a URL query parameter, and if both are passed the behavior
// is implementation-dependent.
type SystemParameter struct {
	// Define the name of the parameter, such as "api_key", "alt", "callback",
	// and etc. It is case sensitive.
	Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
	// Define the HTTP header name to use for the parameter. It is case
	// insensitive.
	HttpHeader string `protobuf:"bytes,2,opt,name=http_header,json=httpHeader" json:"http_header,omitempty"`
	// Define the URL query parameter name to use for the parameter. It is case
	// sensitive.
	UrlQueryParameter string `protobuf:"bytes,3,opt,name=url_query_parameter,json=urlQueryParameter" json:"url_query_parameter,omitempty"`
}

func (m *SystemParameter) Reset()                    { *m = SystemParameter{} }
func (m *SystemParameter) String() string            { return proto.CompactTextString(m) }
func (*SystemParameter) ProtoMessage()               {}
func (*SystemParameter) Descriptor() ([]byte, []int) { return fileDescriptor16, []int{2} }

func init() {
	proto.RegisterType((*SystemParameters)(nil), "google.api.SystemParameters")
	proto.RegisterType((*SystemParameterRule)(nil), "google.api.SystemParameterRule")
	proto.RegisterType((*SystemParameter)(nil), "google.api.SystemParameter")
}

func init() { proto.RegisterFile("google/api/system_parameter.proto", fileDescriptor16) }

var fileDescriptor16 = []byte{
	// 241 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x7c, 0x90, 0x4f, 0x4b, 0x03, 0x31,
	0x10, 0xc5, 0x49, 0xab, 0xa2, 0x53, 0xf0, 0xcf, 0xd4, 0x43, 0xd0, 0x43, 0xeb, 0x9e, 0xf6, 0x94,
	0x82, 0xe2, 0xc9, 0x5b, 0x4f, 0x7a, 0x5b, 0xd7, 0x0f, 0xb0, 0xc4, 0x3a, 0xb4, 0x85, 0xa4, 0x89,
	0x93, 0x44, 0xe8, 0xb7, 0x97, 0x4d, 0x75, 0x5b, 0x16, 0xf1, 0x96, 0xcc, 0xfb, 0xc1, 0xef, 0xf1,
	0xe0, 0x6e, 0xe9, 0xdc, 0xd2, 0xd0, 0x4c, 0xfb, 0xf5, 0x2c, 0x6c, 0x43, 0x24, 0xdb, 0x78, 0xcd,
	0xda, 0x52, 0x24, 0x56, 0x9e, 0x5d, 0x74, 0x08, 0x3b, 0x44, 0x69, 0xbf, 0x2e, 0x5e, 0xe0, 0xf2,
	0x2d, 0x53, 0xd5, 0x2f, 0x14, 0xf0, 0x11, 0x8e, 0x39, 0x19, 0x0a, 0x52, 0x4c, 0x87, 0xe5, 0xe8,
	0x7e, 0xa2, 0xf6, 0xbc, 0xea, 0xc1, 0x75, 0x32, 0x54, 0xef, 0xe8, 0x62, 0x03, 0xe3, 0x3f, 0x52,
	0xbc, 0x81, 0xd3, 0x40, 0x86, 0x16, 0xd1, 0xb1, 0x14, 0x53, 0x51, 0x9e, 0xd5, 0xdd, 0x1f, 0x9f,
	0x00, 0xba, 0x72, 0x41, 0x0e, 0xb2, 0xee, 0xf6, 0x3f, 0xdd, 0x01, 0x5e, 0x7c, 0xc1, 0x45, 0x2f,
	0x46, 0x84, 0xa3, 0x8d, 0xb6, 0xf4, 0xe3, 0xc9, 0x6f, 0x9c, 0xc0, 0x68, 0x15, 0xa3, 0x6f, 0x56,
	0xa4, 0x3f, 0x88, 0xe5, 0x20, 0x47, 0xd0, 0x9e, 0x9e, 0xf3, 0x05, 0x15, 0x8c, 0x13, 0x9b, 0xe6,
	0x33, 0x11, 0x6f, 0xf7, 0x5b, 0xc9, 0x61, 0x06, 0xaf, 0x12, 0x9b, 0xd7, 0x36, 0xe9, 0x24, 0xf3,
	0x12, 0xce, 0x17, 0xce, 0x1e, 0xb4, 0x9c, 0x5f, 0xf7, 0x7a, 0x54, 0xed, 0xcc, 0x95, 0x78, 0x3f,
	0xc9, 0x7b, 0x3f, 0x7c, 0x07, 0x00, 0x00, 0xff, 0xff, 0xbb, 0x94, 0x2a, 0x5c, 0x94, 0x01, 0x00,
	0x00,
}
