diff --git a/CLAUDE.md b/CLAUDE.md index 081b6c4..76f5d9a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -19,16 +19,23 @@ The Agentic RTB Framework defines a standard for implementing agent services tha . ├── CLAUDE.md # This file ├── README.md # Project readme -├── Makefile # Build automation -├── Dockerfile # Container build -├── cmd/agent/ # Main entry point -├── internal/ -│ ├── agent/ # gRPC service implementation -│ ├── mcp/ # MCP interface implementation -│ ├── handlers/ # Mutation handlers -│ ├── health/ # Health check endpoints -│ └── web/ # Web UI -├── pkg/pb/ # Generated protobuf code +├── Makefile # Root proto generation tasks +├── go.work # Workspace for repo modules +├── examples/golang/ +│ ├── cmd/agent/ # Main entry point +│ ├── internal/ +│ │ ├── agent/ # gRPC service implementation +│ │ ├── mcp/ # MCP interface implementation +│ │ ├── handlers/ # Mutation handlers +│ │ ├── health/ # Health check endpoints +│ │ └── web/ # Web UI +│ ├── Dockerfile # Container build +│ ├── docker-compose.yml # Local development setup +│ ├── federation.example.yaml # Example federation config +│ └── Makefile # Service build and run tasks +├── examples/golang/pkg/ +│ ├── go.mod # Shared protobuf module +│ └── pb/ # Generated protobuf code ├── proto/ # Protobuf definitions ├── docs/ # Documentation └── samples/ # Sample request payloads @@ -84,19 +91,22 @@ service RTBExtensionPoint { ## Development Commands ```bash -# Build the agent (includes protobuf generation) -make build +# Generate protobuf files from the shared schema +make generate + +# Build the agent service +make -C examples/golang build # Run with all interfaces enabled (gRPC, MCP, Web) -make run-all +make -C examples/golang run-all # Run specific interfaces -make run-grpc # gRPC only (port 50051) -make run-mcp # MCP only (port 50052) -make run-web # Web + MCP (ports 8081, 50052) +make -C examples/golang run-grpc # gRPC only (port 50051) +make -C examples/golang run-mcp # MCP only (port 50052) +make -C examples/golang run-web # Web + MCP (ports 8081, 50052) # Run tests -make test +make -C examples/golang test # Build Docker image make docker-build @@ -218,7 +228,7 @@ Containers must include an `agent-manifest` label in image metadata with: The protobuf imports OpenRTB v2.6 definitions: ```protobuf -import "com/iabtechlab/openrtb/v2.6/openrtb.proto"; +import "com/iabtechlab/openrtb/v2/openrtb.proto"; ``` You'll need the IAB Tech Lab OpenRTB protobuf definitions from: diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index d73ff07..0000000 --- a/Dockerfile +++ /dev/null @@ -1,95 +0,0 @@ -# Build stage -FROM golang:1.23 AS builder - -# Set working directory -WORKDIR /app - -# Copy go mod files -COPY go.mod go.sum ./ - -# Download dependencies -RUN go mod download - -# Copy source code -COPY . . - -# Build arguments for versioning -ARG VERSION=0.10.0 - -# Build the binary with version info -RUN CGO_ENABLED=0 GOOS=linux go build \ - -ldflags="-w -s -X main.Version=${VERSION}" \ - -o /artf-agent \ - ./cmd/agent - -# Runtime stage -FROM ubuntu:24.04 - -# Build arguments for agent manifest -ARG VERSION=0.10.0 -ARG AGENT_NAME=artf-reference-agent -ARG AGENT_VENDOR="IAB Tech Lab" -ARG AGENT_OWNER=artf@iabtechlab.com - -# Agent manifest label (ARTF specification requirement) -# This label describes the agent's capabilities and configuration -LABEL agent-manifest="{ \ - \"name\": \"${AGENT_NAME}\", \ - \"version\": \"${VERSION}\", \ - \"vendor\": \"${AGENT_VENDOR}\", \ - \"owner\": \"${AGENT_OWNER}\", \ - \"resources\": { \ - \"cpu\": \"500m\", \ - \"memory\": \"256Mi\" \ - }, \ - \"intents\": [ \ - \"ACTIVATE_SEGMENTS\", \ - \"ACTIVATE_DEALS\", \ - \"SUPPRESS_DEALS\", \ - \"ADJUST_DEAL_FLOOR\", \ - \"ADJUST_DEAL_MARGIN\", \ - \"BID_SHADE\", \ - \"ADD_METRICS\" \ - ], \ - \"health\": { \ - \"livenessProbe\": { \ - \"httpGet\": { \"path\": \"/health/live\", \"port\": 8080 } \ - }, \ - \"readinessProbe\": { \ - \"httpGet\": { \"path\": \"/health/ready\", \"port\": 8080 } \ - } \ - } \ -}" - -# Additional metadata labels -LABEL org.opencontainers.image.title="${AGENT_NAME}" -LABEL org.opencontainers.image.version="${VERSION}" -LABEL org.opencontainers.image.vendor="${AGENT_VENDOR}" -LABEL org.opencontainers.image.description="ARTF Reference Agent - Agentic RTB Framework implementation" -LABEL org.opencontainers.image.source="https://github.com/IABTechLab/agentic-rtb-framework" -LABEL org.opencontainers.image.licenses="AGPL-3.0" - -# Install CA certificates for HTTPS -RUN apt-get update && apt-get install -y --no-install-recommends \ - ca-certificates \ - tzdata \ - && rm -rf /var/lib/apt/lists/* - -# Copy the binary -COPY --from=builder /artf-agent /artf-agent - -# Use non-root user (nobody already exists in Ubuntu with UID 65534) -USER nobody - -# Expose ports (gRPC: 50051, Web/MCP: 8081, Health: 8080) -EXPOSE 50051 8081 8080 - -# Health check -HEALTHCHECK --interval=5s --timeout=3s --start-period=5s --retries=3 \ - CMD ["/artf-agent", "-health-check"] || exit 1 - -# Set entrypoint -ENTRYPOINT ["/artf-agent"] - -# Default arguments (enable all interfaces) -CMD ["--enable-grpc", "--enable-mcp", "--enable-web", "--grpc-port=50051", "--web-port=8081", "--health-port=8080"] diff --git a/Makefile b/Makefile index 5f032ff..12c6abb 100644 --- a/Makefile +++ b/Makefile @@ -1,72 +1,17 @@ -# Agentic RTB Framework Makefile +# Root-level repository tasks +# Keep the root Makefile focused on shared proto generation. -BINARY=artf-agent -LANGUAGES=go # cpp go csharp objc python ruby js +.PHONY: generate fetch-openrtb -# Go build and run targets -.PHONY: build run-all run-grpc run-mcp run-web test +LANG ?= go +LANGS ?= $(LANG) -build: - go build -o $(BINARY) ./cmd/agent +generate: fetch-openrtb + mkdir -p pkg + ./scripts/generate.sh --lang $(LANGS) -run-all: build - ./$(BINARY) --enable-grpc --enable-mcp --enable-web - -run-grpc: build - ./$(BINARY) --enable-grpc - -run-mcp: build - ./$(BINARY) --enable-mcp - -run-web: build - ./$(BINARY) --enable-mcp --enable-web - -test: - go test ./... - -# Rust build and run targets -RUST_BINARY=rust/target/release/agentic-rtb-framework-service - -.PHONY: build-rust run-rust build-all - -build-rust: - cd rust && cargo build --release - -run-rust: build-rust - ARTF_GRPC_SERVER_PORT=50053 ARTF_HTTP_SERVER_PORT=8082 $(RUST_BINARY) - -build-all: build build-rust - -# Protobuf targets - -bindings: - for x in ${LANGUAGES}; do \ - protoc --proto_path=. \ - --$${x}_out=. \ - --experimental_editions \ - openrtb.proto agenticrtbframework.proto; \ - protoc --proto_path=. \ - --$${x}_out=. \ - --$${x}-grpc_out=require_unimplemented_servers=false:. \ - agenticrtbframeworkservices.proto; \ - done - -check: - prototool lint - -clean: - for x in ${LANGUAGES}; do \ - rm -fr $${x}/*; \ - done - -docs: - podman run --rm \ - -v ${PWD}:${PWD} \ - -w ${PWD} \ - pseudomuto/protoc-gen-doc \ - --doc_opt=html,doc.html \ - --proto_path=${PWD} \ - openrtb.proto agenticrtbframework.proto agenticrtbframeworkservices.proto - -watch: - fswatch -r ./ | xargs -n1 make docs +fetch-openrtb: + mkdir -p proto/com/iabtechlab/openrtb/v2 + curl -L --fail \ + https://raw.githubusercontent.com/InteractiveAdvertisingBureau/openrtb2.x/main/proto/src/main/com/iabtechlab/openrtb/v2/openrtb.proto \ + -o proto/com/iabtechlab/openrtb/v2/openrtb.proto diff --git a/README.md b/README.md index 0bfcc9a..b814596 100644 --- a/README.md +++ b/README.md @@ -7,14 +7,37 @@ https://iabtechlab.com/standards/artf/ #### How to get started -Download the openRTB official 2.6 Protocol Buffers specification from https://github.com/InteractiveAdvertisingBureau/openrtb2.x/blob/main/proto/src/main/com/iabtechlab/openrtb/v2/openrtb.proto to this directory. +`make generate` will fetch the OpenRTB 2.6 proto automatically. If you want to refresh it manually, run `make fetch-openrtb`. From the command line: 1. Install `make` and the latest version of `protoc`. -2. Open the `Makefile` and choose the language(s) for which the Protocol Buffers - object code should be generated. -3. Run `make`. +2. Choose the language(s) for which the Protocol Buffers object code should be generated. +3. Run `make generate` or `make generate LANG=java`. + +#### Package names in generated code + +If you want generated code to use your own repo/package name, set the package options in the `.proto` files before generating code. + +Examples: + +- Go: `option go_package = "github.com/your-org/your-repo/pkg/pb/artf;artf";` +- Java: `option java_package = "com.yourorg.yourrepo.artf";` +- C++: `option cpp_namespace = "your::org::yourrepo::artf";` +- Rust: use the generator/tooling-specific crate/module naming options for your Rust codegen pipeline + +#### Language selection with `make generate` + +You can pick one or more languages by passing a variable to `make`: + +```bash +make generate +make generate LANG=java +make generate LANG=go,cpp,java +make generate LANGS=rust +``` + +`LANG` and `LANGS` are both accepted; if neither is set, Go is generated by default. #### Contact For more information, or to get involved, please email support@iabtechlab.com. @@ -68,7 +91,7 @@ The following tools must be installed to generate protobuf code: export PATH="$PATH:$(go env GOPATH)/bin" ``` -Go module dependencies (managed via `go.mod`): +Go module dependencies are managed in the workspace modules: | Package | Version | Purpose | |---------|---------|---------| @@ -79,55 +102,56 @@ Go module dependencies (managed via `go.mod`): #### Build and Run ```bash -# Install dependencies -make deps - -# Generate protobuf code +# Generate protobuf code (root repo task) make generate -# Build the server -make build +# Build the service binary +make -C examples/golang build -# Run with all services enabled -make run-all +# Run with all interfaces enabled +make -C examples/golang run-all -# Run in development mode (verbose) -make run-dev +# Run specific service modes +make -C examples/golang run-grpc +make -C examples/golang run-mcp +make -C examples/golang run-web ``` #### Docker Deployment ```bash -# Build Docker image -make docker-build +# Build the service Docker image +make -C examples/golang docker-build -# Run with Docker -make docker-run-all +# Run the image directly +make -C examples/golang docker-run-all -# Or use docker-compose -make docker-compose-up +# Or use the service compose file +cd examples/golang && docker compose up --build ``` ### Architecture ``` . -├── cmd/agent/ # Main agent entry point -├── internal/ -│ ├── agent/ # gRPC agent implementation -│ ├── handlers/ # Mutation handlers for different intents -│ ├── health/ # Kubernetes health check endpoints -│ ├── mcp/ # MCP server implementation -│ └── web/ # Web UI for testing -├── pkg/pb/ # Generated protobuf Go code +├── examples/golang/ +│ ├── cmd/agent/ # Main agent entry point +│ └── internal/ +│ ├── agent/ # gRPC agent implementation +│ ├── handlers/ # Mutation handlers for different intents +│ ├── health/ # Kubernetes health check endpoints +│ ├── mcp/ # MCP server implementation +│ └── web/ # Web UI for testing +├── pkg/ # Shared Go module for generated protobuf code +│ └── pb/ # Generated protobuf Go code ├── proto/ # Protocol buffer definitions │ ├── agenticrtbframework.proto # ARTF service definition │ └── com/iabtechlab/openrtb/ # OpenRTB v2.6 definitions ├── samples/ # Sample ORTB payloads for testing ├── docs/ # Specifications and documentation ├── scripts/ # Build and utility scripts -├── Dockerfile # Container build definition -└── docker-compose.yml # Local development setup +├── Makefile # Root proto generation tasks +└── go.work # Go workspace for repo modules ``` ### API diff --git a/examples/golang/Dockerfile b/examples/golang/Dockerfile new file mode 100644 index 0000000..04efbef --- /dev/null +++ b/examples/golang/Dockerfile @@ -0,0 +1,82 @@ +# Build stage +FROM golang:1.23 AS builder + +WORKDIR /app + +# Copy workspace and project source needed for the multi-module setup. +COPY go.work ./ +COPY pkg ./pkg +COPY examples/golang ./examples/golang + +WORKDIR /app/examples/golang + +# Download dependencies +RUN go mod download + +# Build arguments for versioning +ARG VERSION=0.10.0 + +# Build the binary with version info +RUN CGO_ENABLED=0 GOOS=linux go build \ + -ldflags="-w -s -X main.Version=${VERSION}" \ + -o /artf-agent \ + ./cmd/agent + +# Runtime stage +FROM ubuntu:24.04 + +ARG VERSION=0.10.0 +ARG AGENT_NAME=artf-reference-agent +ARG AGENT_VENDOR="IAB Tech Lab" +ARG AGENT_OWNER=artf@iabtechlab.com + +LABEL agent-manifest="{ \ + \"name\": \"${AGENT_NAME}\", \ + \"version\": \"${VERSION}\", \ + \"vendor\": \"${AGENT_VENDOR}\", \ + \"owner\": \"${AGENT_OWNER}\", \ + \"resources\": { \ + \"cpu\": \"500m\", \ + \"memory\": \"256Mi\" \ + }, \ + \"intents\": [ \ + \"ACTIVATE_SEGMENTS\", \ + \"ACTIVATE_DEALS\", \ + \"SUPPRESS_DEALS\", \ + \"ADJUST_DEAL_FLOOR\", \ + \"ADJUST_DEAL_MARGIN\", \ + \"BID_SHADE\", \ + \"ADD_METRICS\" \ + ], \ + \"health\": { \ + \"livenessProbe\": { \ + \"httpGet\": { \"path\": \"/health/live\", \"port\": 8080 } \ + }, \ + \"readinessProbe\": { \ + \"httpGet\": { \"path\": \"/health/ready\", \"port\": 8080 } \ + } \ + } \ +}" +LABEL org.opencontainers.image.title="${AGENT_NAME}" +LABEL org.opencontainers.image.version="${VERSION}" +LABEL org.opencontainers.image.vendor="${AGENT_VENDOR}" +LABEL org.opencontainers.image.description="ARTF Reference Agent - Agentic RTB Framework implementation" +LABEL org.opencontainers.image.source="https://github.com/IABTechLab/agentic-rtb-framework" +LABEL org.opencontainers.image.licenses="AGPL-3.0" + +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + tzdata \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=builder /artf-agent /artf-agent + +USER nobody + +EXPOSE 50051 8081 8080 + +HEALTHCHECK --interval=5s --timeout=3s --start-period=5s --retries=3 \ + CMD ["/artf-agent", "-health-check"] || exit 1 + +ENTRYPOINT ["/artf-agent"] +CMD ["--enable-grpc", "--enable-mcp", "--enable-web", "--grpc-port=50051", "--web-port=8081", "--health-port=8080"] diff --git a/examples/golang/Makefile b/examples/golang/Makefile new file mode 100644 index 0000000..72b6f61 --- /dev/null +++ b/examples/golang/Makefile @@ -0,0 +1,29 @@ +# Agent service build and run targets + +BINARY=artf-agent + +.PHONY: build run-all run-grpc run-mcp run-web test docker-build docker-run-all + +build: + go build -o $(BINARY) ./cmd/agent + +run-all: build + ./$(BINARY) --enable-grpc --enable-mcp --enable-web + +run-grpc: build + ./$(BINARY) --enable-grpc + +run-mcp: build + ./$(BINARY) --enable-mcp + +run-web: build + ./$(BINARY) --enable-mcp --enable-web + +test: + go test ./... + +docker-build: + docker build -f Dockerfile -t artf-agent:latest ../.. + +docker-run-all: docker-build + docker run --rm -p 50051:50051 -p 50052:50052 -p 8081:8081 -p 8080:8080 artf-agent:latest --enable-grpc --enable-mcp --enable-web diff --git a/examples/golang/README.md b/examples/golang/README.md new file mode 100644 index 0000000..f041d6e --- /dev/null +++ b/examples/golang/README.md @@ -0,0 +1,34 @@ +# Go Example Service + +This directory contains the Go implementation for the Agentic RTB Framework (ARTF) example service. + +It provides a working gRPC agent with the same mutation handlers, MCP support, and web UI pattern used by the framework reference implementation. + +## Build + +From the repo root: + +```bash +go build ./examples/golang/cmd/agent +``` + +Or from inside this directory: + +```bash +cd examples/golang +go build ./cmd/agent +``` + +## Run + +```bash +cd examples/golang +go run ./cmd/agent --enable-grpc --enable-mcp --enable-web +``` + +## Docker + +```bash +cd examples/golang +docker compose up --build +``` diff --git a/cmd/agent/main.go b/examples/golang/cmd/agent/main.go similarity index 96% rename from cmd/agent/main.go rename to examples/golang/cmd/agent/main.go index 867a691..9349f5f 100644 --- a/cmd/agent/main.go +++ b/examples/golang/cmd/agent/main.go @@ -32,12 +32,12 @@ import ( "syscall" "time" - "github.com/iabtechlab/agentic-rtb-framework/internal/agent" - "github.com/iabtechlab/agentic-rtb-framework/internal/federation" - "github.com/iabtechlab/agentic-rtb-framework/internal/handlers" - "github.com/iabtechlab/agentic-rtb-framework/internal/health" - "github.com/iabtechlab/agentic-rtb-framework/internal/mcp" - "github.com/iabtechlab/agentic-rtb-framework/internal/web" + "github.com/iabtechlab/agentic-rtb-framework/examples/golang/internal/agent" + "github.com/iabtechlab/agentic-rtb-framework/examples/golang/internal/federation" + "github.com/iabtechlab/agentic-rtb-framework/examples/golang/internal/handlers" + "github.com/iabtechlab/agentic-rtb-framework/examples/golang/internal/health" + "github.com/iabtechlab/agentic-rtb-framework/examples/golang/internal/mcp" + "github.com/iabtechlab/agentic-rtb-framework/examples/golang/internal/web" "google.golang.org/grpc" "google.golang.org/grpc/reflection" ) diff --git a/docker-compose.yml b/examples/golang/docker-compose.yml similarity index 91% rename from docker-compose.yml rename to examples/golang/docker-compose.yml index 8438cee..6e46e59 100644 --- a/docker-compose.yml +++ b/examples/golang/docker-compose.yml @@ -3,8 +3,8 @@ version: '3.8' services: artf-agent: build: - context: . - dockerfile: Dockerfile + context: ../.. + dockerfile: examples/golang/Dockerfile ports: - "50051:50051" # gRPC - "50052:50052" # MCP @@ -50,8 +50,8 @@ services: # gRPC-only service variant artf-grpc: build: - context: . - dockerfile: Dockerfile + context: ../.. + dockerfile: examples/golang/Dockerfile profiles: ["grpc-only"] ports: - "50051:50051" @@ -76,8 +76,8 @@ services: # MCP-only service variant artf-mcp: build: - context: . - dockerfile: Dockerfile + context: ../.. + dockerfile: examples/golang/Dockerfile profiles: ["mcp-only"] ports: - "50052:50052" diff --git a/federation.example.yaml b/examples/golang/federation.example.yaml similarity index 100% rename from federation.example.yaml rename to examples/golang/federation.example.yaml diff --git a/go.mod b/examples/golang/go.mod similarity index 79% rename from go.mod rename to examples/golang/go.mod index fafb3f8..2233a32 100644 --- a/go.mod +++ b/examples/golang/go.mod @@ -1,14 +1,17 @@ -module github.com/iabtechlab/agentic-rtb-framework +module github.com/iabtechlab/agentic-rtb-framework/examples/golang go 1.23.0 require ( + github.com/iabtechlab/agentic-rtb-framework/pkg v0.0.0 github.com/mark3labs/mcp-go v0.43.1 google.golang.org/grpc v1.64.0 google.golang.org/protobuf v1.34.1 gopkg.in/yaml.v3 v3.0.1 ) +replace github.com/iabtechlab/agentic-rtb-framework/pkg => ../../pkg + require ( github.com/bahlo/generic-list-go v0.2.0 // indirect github.com/buger/jsonparser v1.1.1 // indirect diff --git a/go.sum b/examples/golang/go.sum similarity index 100% rename from go.sum rename to examples/golang/go.sum diff --git a/internal/agent/agent.go b/examples/golang/internal/agent/agent.go similarity index 98% rename from internal/agent/agent.go rename to examples/golang/internal/agent/agent.go index 8c20aab..f958168 100644 --- a/internal/agent/agent.go +++ b/examples/golang/internal/agent/agent.go @@ -23,7 +23,7 @@ import ( "log" "time" - "github.com/iabtechlab/agentic-rtb-framework/internal/handlers" + "github.com/iabtechlab/agentic-rtb-framework/examples/golang/internal/handlers" pb "github.com/iabtechlab/agentic-rtb-framework/pkg/pb/artf" "google.golang.org/grpc" ) diff --git a/internal/federation/client.go b/examples/golang/internal/federation/client.go similarity index 100% rename from internal/federation/client.go rename to examples/golang/internal/federation/client.go diff --git a/internal/federation/config.go b/examples/golang/internal/federation/config.go similarity index 100% rename from internal/federation/config.go rename to examples/golang/internal/federation/config.go diff --git a/internal/federation/manager.go b/examples/golang/internal/federation/manager.go similarity index 100% rename from internal/federation/manager.go rename to examples/golang/internal/federation/manager.go diff --git a/internal/handlers/handlers.go b/examples/golang/internal/handlers/handlers.go similarity index 99% rename from internal/handlers/handlers.go rename to examples/golang/internal/handlers/handlers.go index debb4eb..e99b928 100644 --- a/internal/handlers/handlers.go +++ b/examples/golang/internal/handlers/handlers.go @@ -269,7 +269,7 @@ func calculateDealFloorAdjustment(imp *openrtb.BidRequest_Imp) *pb.AdjustDealPay } // calculateShadedBidPrice calculates the optimal shaded bid price -func calculateShadedBidPrice(req *openrtb.BidRequest, bid *openrtb.BidResponse_SeatBid_Bid) *float64 { +func calculateShadedBidPrice(req *openrtb.BidRequest, bid *openrtb.BidResponse_Bid) *float64 { originalPrice := bid.GetPrice() if originalPrice <= 0 { return nil diff --git a/internal/health/health.go b/examples/golang/internal/health/health.go similarity index 100% rename from internal/health/health.go rename to examples/golang/internal/health/health.go diff --git a/internal/mcp/mcp.go b/examples/golang/internal/mcp/mcp.go similarity index 98% rename from internal/mcp/mcp.go rename to examples/golang/internal/mcp/mcp.go index f6f0cf9..97110da 100644 --- a/internal/mcp/mcp.go +++ b/examples/golang/internal/mcp/mcp.go @@ -28,8 +28,8 @@ import ( "net/http" "time" - "github.com/iabtechlab/agentic-rtb-framework/internal/agent" - "github.com/iabtechlab/agentic-rtb-framework/internal/federation" + "github.com/iabtechlab/agentic-rtb-framework/examples/golang/internal/agent" + "github.com/iabtechlab/agentic-rtb-framework/examples/golang/internal/federation" pb "github.com/iabtechlab/agentic-rtb-framework/pkg/pb/artf" openrtb "github.com/iabtechlab/agentic-rtb-framework/pkg/pb/openrtb" "github.com/mark3labs/mcp-go/mcp" diff --git a/internal/web/handler.go b/examples/golang/internal/web/handler.go similarity index 100% rename from internal/web/handler.go rename to examples/golang/internal/web/handler.go diff --git a/internal/web/static/.gitkeep b/examples/golang/internal/web/static/.gitkeep similarity index 100% rename from internal/web/static/.gitkeep rename to examples/golang/internal/web/static/.gitkeep diff --git a/internal/web/static/container.html b/examples/golang/internal/web/static/container.html similarity index 100% rename from internal/web/static/container.html rename to examples/golang/internal/web/static/container.html diff --git a/internal/web/static/spec.html b/examples/golang/internal/web/static/spec.html similarity index 100% rename from internal/web/static/spec.html rename to examples/golang/internal/web/static/spec.html diff --git a/internal/web/templates/index.html b/examples/golang/internal/web/templates/index.html similarity index 100% rename from internal/web/templates/index.html rename to examples/golang/internal/web/templates/index.html diff --git a/pkg/pb/artf/agenticrtbframework.pb.go b/examples/golang/pkg/pb/artf/agenticrtbframework.pb.go similarity index 53% rename from pkg/pb/artf/agenticrtbframework.pb.go rename to examples/golang/pkg/pb/artf/agenticrtbframework.pb.go index bf84f67..ffc87d7 100644 --- a/pkg/pb/artf/agenticrtbframework.pb.go +++ b/examples/golang/pkg/pb/artf/agenticrtbframework.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.5 -// protoc v3.21.12 +// protoc-gen-go v1.36.11 +// protoc v6.33.4 // source: agenticrtbframework.proto package artf @@ -26,16 +26,22 @@ type Lifecycle int32 const ( // Placeholder to Define Programmatic Auction Definition Stages - Lifecycle_LIFECYCLE_UNSPECIFIED Lifecycle = 0 + Lifecycle_LIFECYCLE_UNSPECIFIED Lifecycle = 0 + Lifecycle_LIFECYCLE_PUBLISHER_BID_REQUEST Lifecycle = 1 + Lifecycle_LIFECYCLE_DSP_BID_RESPONSE Lifecycle = 2 ) // Enum value maps for Lifecycle. var ( Lifecycle_name = map[int32]string{ 0: "LIFECYCLE_UNSPECIFIED", + 1: "LIFECYCLE_PUBLISHER_BID_REQUEST", + 2: "LIFECYCLE_DSP_BID_RESPONSE", } Lifecycle_value = map[string]int32{ - "LIFECYCLE_UNSPECIFIED": 0, + "LIFECYCLE_UNSPECIFIED": 0, + "LIFECYCLE_PUBLISHER_BID_REQUEST": 1, + "LIFECYCLE_DSP_BID_RESPONSE": 2, } ) @@ -61,16 +67,6 @@ func (x Lifecycle) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Do not use. -func (x *Lifecycle) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = Lifecycle(num) - return nil -} - // Deprecated: Use Lifecycle.Descriptor instead. func (Lifecycle) EnumDescriptor() ([]byte, []int) { return file_agenticrtbframework_proto_rawDescGZIP(), []int{0} @@ -123,16 +119,6 @@ func (x Operation) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Do not use. -func (x *Operation) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = Operation(num) - return nil -} - // Deprecated: Use Operation.Descriptor instead. func (Operation) EnumDescriptor() ([]byte, []int) { return file_agenticrtbframework_proto_rawDescGZIP(), []int{1} @@ -156,6 +142,8 @@ const ( Intent_BID_SHADE Intent = 6 // Add metrics to an impression Intent_ADD_METRICS Intent = 7 + // Add extended content IDs + Intent_ADD_CIDS Intent = 8 ) // Enum value maps for Intent. @@ -169,6 +157,7 @@ var ( 5: "ADJUST_DEAL_MARGIN", 6: "BID_SHADE", 7: "ADD_METRICS", + 8: "ADD_CIDS", } Intent_value = map[string]int32{ "INTENT_UNSPECIFIED": 0, @@ -179,6 +168,7 @@ var ( "ADJUST_DEAL_MARGIN": 5, "BID_SHADE": 6, "ADD_METRICS": 7, + "ADD_CIDS": 8, } ) @@ -204,21 +194,66 @@ func (x Intent) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Do not use. -func (x *Intent) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = Intent(num) - return nil -} - // Deprecated: Use Intent.Descriptor instead. func (Intent) EnumDescriptor() ([]byte, []int) { return file_agenticrtbframework_proto_rawDescGZIP(), []int{2} } +type Originator_Type int32 + +const ( + Originator_TYPE_UNSPECIFIED Originator_Type = 0 + Originator_TYPE_PUBLISHER Originator_Type = 1 + Originator_TYPE_SSP Originator_Type = 2 + Originator_TYPE_EXCHANGE Originator_Type = 3 + Originator_TYPE_DSP Originator_Type = 4 +) + +// Enum value maps for Originator_Type. +var ( + Originator_Type_name = map[int32]string{ + 0: "TYPE_UNSPECIFIED", + 1: "TYPE_PUBLISHER", + 2: "TYPE_SSP", + 3: "TYPE_EXCHANGE", + 4: "TYPE_DSP", + } + Originator_Type_value = map[string]int32{ + "TYPE_UNSPECIFIED": 0, + "TYPE_PUBLISHER": 1, + "TYPE_SSP": 2, + "TYPE_EXCHANGE": 3, + "TYPE_DSP": 4, + } +) + +func (x Originator_Type) Enum() *Originator_Type { + p := new(Originator_Type) + *p = x + return p +} + +func (x Originator_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Originator_Type) Descriptor() protoreflect.EnumDescriptor { + return file_agenticrtbframework_proto_enumTypes[3].Descriptor() +} + +func (Originator_Type) Type() protoreflect.EnumType { + return &file_agenticrtbframework_proto_enumTypes[3] +} + +func (x Originator_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Originator_Type.Descriptor instead. +func (Originator_Type) EnumDescriptor() ([]byte, []int) { + return file_agenticrtbframework_proto_rawDescGZIP(), []int{2, 0} +} + // The type of margin adjustment type Margin_CalculationType int32 @@ -252,27 +287,17 @@ func (x Margin_CalculationType) String() string { } func (Margin_CalculationType) Descriptor() protoreflect.EnumDescriptor { - return file_agenticrtbframework_proto_enumTypes[3].Descriptor() + return file_agenticrtbframework_proto_enumTypes[4].Descriptor() } func (Margin_CalculationType) Type() protoreflect.EnumType { - return &file_agenticrtbframework_proto_enumTypes[3] + return &file_agenticrtbframework_proto_enumTypes[4] } func (x Margin_CalculationType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Do not use. -func (x *Margin_CalculationType) UnmarshalJSON(b []byte) error { - num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) - if err != nil { - return err - } - *x = Margin_CalculationType(num) - return nil -} - // Deprecated: Use Margin_CalculationType.Descriptor instead. func (Margin_CalculationType) EnumDescriptor() ([]byte, []int) { return file_agenticrtbframework_proto_rawDescGZIP(), []int{7, 0} @@ -280,24 +305,24 @@ func (Margin_CalculationType) EnumDescriptor() ([]byte, []int) { type RTBRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - // ENUM as per Programmatic Auction Definition IAB TL doc/spec - Lifecycle *Lifecycle `protobuf:"varint,1,req,name=lifecycle,enum=com.iabtechlab.bidstream.mutation.v1.Lifecycle" json:"lifecycle,omitempty"` + // As per Programmatic Auction Definition IAB TL doc/spec + Lifecycle *Lifecycle `protobuf:"varint,1,opt,name=lifecycle,enum=com.iabtechlab.bidstream.mutation.v1.Lifecycle" json:"lifecycle,omitempty"` // ID of the extension point request, assigned by the exchange, and unique for the // exchange's subsequent tracking of the responses. The exchange may use // different values for different recipients. - // REQUIRED by the RTB specification. - Id *string `protobuf:"bytes,2,req,name=id" json:"id,omitempty"` + Id *string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` // Maximum time in milliseconds the exchange allows for mutations to be received including latency to avoid timeout - // REQUIRED by the RTB specification. - Tmax *int32 `protobuf:"varint,3,req,name=tmax" json:"tmax,omitempty"` + Tmax *int32 `protobuf:"varint,3,opt,name=tmax" json:"tmax,omitempty"` // Bid request - // REQUIRED by the RTB specification. - BidRequest *openrtb.BidRequest `protobuf:"bytes,4,req,name=bid_request,json=bidRequest" json:"bid_request,omitempty"` + BidRequest *openrtb.BidRequest `protobuf:"bytes,4,opt,name=bid_request,json=bidRequest" json:"bid_request,omitempty"` // Bid response - // OPTIONAL by the RTB specification. BidResponse *openrtb.BidResponse `protobuf:"bytes,5,opt,name=bid_response,json=bidResponse" json:"bid_response,omitempty"` + // Business entity that created and owns the enclosed BidRequest or BidResponse + Originator *Originator `protobuf:"bytes,6,opt,name=originator" json:"originator,omitempty"` + // List of intents the server is eligibible to send back + ApplicableIntents []Intent `protobuf:"varint,7,rep,packed,name=applicable_intents,json=applicableIntents,enum=com.iabtechlab.bidstream.mutation.v1.Intent" json:"applicable_intents,omitempty"` // Extension fields - Ext *Extensions `protobuf:"bytes,6,opt,name=ext" json:"ext,omitempty"` + Ext *RTBRequest_Ext `protobuf:"bytes,99,opt,name=ext" json:"ext,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -367,55 +392,31 @@ func (x *RTBRequest) GetBidResponse() *openrtb.BidResponse { return nil } -func (x *RTBRequest) GetExt() *Extensions { +func (x *RTBRequest) GetOriginator() *Originator { if x != nil { - return x.Ext + return x.Originator } return nil } -type Extensions struct { - state protoimpl.MessageState `protogen:"open.v1"` - extensionFields protoimpl.ExtensionFields - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *Extensions) Reset() { - *x = Extensions{} - mi := &file_agenticrtbframework_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Extensions) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Extensions) ProtoMessage() {} - -func (x *Extensions) ProtoReflect() protoreflect.Message { - mi := &file_agenticrtbframework_proto_msgTypes[1] +func (x *RTBRequest) GetApplicableIntents() []Intent { if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms + return x.ApplicableIntents } - return mi.MessageOf(x) + return nil } -// Deprecated: Use Extensions.ProtoReflect.Descriptor instead. -func (*Extensions) Descriptor() ([]byte, []int) { - return file_agenticrtbframework_proto_rawDescGZIP(), []int{1} +func (x *RTBRequest) GetExt() *RTBRequest_Ext { + if x != nil { + return x.Ext + } + return nil } type RTBResponse struct { state protoimpl.MessageState `protogen:"open.v1"` // ID of the extension point request to which this is a response. - // REQUIRED by the RTB specification. - Id *string `protobuf:"bytes,1,req,name=id" json:"id,omitempty"` + Id *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` // List of mutations suggesting changes to be applied Mutations []*Mutation `protobuf:"bytes,2,rep,name=mutations" json:"mutations,omitempty"` // Metadata about the response @@ -426,7 +427,7 @@ type RTBResponse struct { func (x *RTBResponse) Reset() { *x = RTBResponse{} - mi := &file_agenticrtbframework_proto_msgTypes[2] + mi := &file_agenticrtbframework_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -438,7 +439,7 @@ func (x *RTBResponse) String() string { func (*RTBResponse) ProtoMessage() {} func (x *RTBResponse) ProtoReflect() protoreflect.Message { - mi := &file_agenticrtbframework_proto_msgTypes[2] + mi := &file_agenticrtbframework_proto_msgTypes[1] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -451,7 +452,7 @@ func (x *RTBResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RTBResponse.ProtoReflect.Descriptor instead. func (*RTBResponse) Descriptor() ([]byte, []int) { - return file_agenticrtbframework_proto_rawDescGZIP(), []int{2} + return file_agenticrtbframework_proto_rawDescGZIP(), []int{1} } func (x *RTBResponse) GetId() string { @@ -475,14 +476,66 @@ func (x *RTBResponse) GetMetadata() *Metadata { return nil } +type Originator struct { + state protoimpl.MessageState `protogen:"open.v1"` + Type *Originator_Type `protobuf:"varint,1,opt,name=type,enum=com.iabtechlab.bidstream.mutation.v1.Originator_Type" json:"type,omitempty"` + Id *string `protobuf:"bytes,2,opt,name=id" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Originator) Reset() { + *x = Originator{} + mi := &file_agenticrtbframework_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Originator) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Originator) ProtoMessage() {} + +func (x *Originator) ProtoReflect() protoreflect.Message { + mi := &file_agenticrtbframework_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Originator.ProtoReflect.Descriptor instead. +func (*Originator) Descriptor() ([]byte, []int) { + return file_agenticrtbframework_proto_rawDescGZIP(), []int{2} +} + +func (x *Originator) GetType() Originator_Type { + if x != nil && x.Type != nil { + return *x.Type + } + return Originator_TYPE_UNSPECIFIED +} + +func (x *Originator) GetId() string { + if x != nil && x.Id != nil { + return *x.Id + } + return "" +} + type Mutation struct { state protoimpl.MessageState `protogen:"open.v1"` // The purpose of the mutation - Intent *Intent `protobuf:"varint,1,req,name=intent,enum=com.iabtechlab.bidstream.mutation.v1.Intent" json:"intent,omitempty"` + Intent *Intent `protobuf:"varint,1,opt,name=intent,enum=com.iabtechlab.bidstream.mutation.v1.Intent" json:"intent,omitempty"` // Defines the operation to perform (e.g. add, remove, replace) on the target data at the given path - Op *Operation `protobuf:"varint,2,req,name=op,enum=com.iabtechlab.bidstream.mutation.v1.Operation" json:"op,omitempty"` + Op *Operation `protobuf:"varint,2,opt,name=op,enum=com.iabtechlab.bidstream.mutation.v1.Operation" json:"op,omitempty"` // The semantic business domain of where the operation will be applied - Path *string `protobuf:"bytes,3,req,name=path" json:"path,omitempty"` + Path *string `protobuf:"bytes,3,opt,name=path" json:"path,omitempty"` // The structure of value depends on the specified intent. // Reserve 100+ for intent-specific payloads // @@ -491,7 +544,8 @@ type Mutation struct { // *Mutation_Ids // *Mutation_AdjustDeal // *Mutation_AdjustBid - // *Mutation_AddMetrics + // *Mutation_Metrics + // *Mutation_ContentData Value isMutation_Value `protobuf_oneof:"value"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -582,10 +636,19 @@ func (x *Mutation) GetAdjustBid() *AdjustBidPayload { return nil } -func (x *Mutation) GetAddMetrics() *AddMetricsPayload { +func (x *Mutation) GetMetrics() *MetricsPayload { if x != nil { - if x, ok := x.Value.(*Mutation_AddMetrics); ok { - return x.AddMetrics + if x, ok := x.Value.(*Mutation_Metrics); ok { + return x.Metrics + } + } + return nil +} + +func (x *Mutation) GetContentData() *DataPayload { + if x != nil { + if x, ok := x.Value.(*Mutation_ContentData); ok { + return x.ContentData } } return nil @@ -610,9 +673,14 @@ type Mutation_AdjustBid struct { AdjustBid *AdjustBidPayload `protobuf:"bytes,102,opt,name=adjust_bid,json=adjustBid,oneof"` } -type Mutation_AddMetrics struct { - // Add metrics or telemetry data - AddMetrics *AddMetricsPayload `protobuf:"bytes,103,opt,name=add_metrics,json=addMetrics,oneof"` +type Mutation_Metrics struct { + // Metrics or telemetry data + Metrics *MetricsPayload `protobuf:"bytes,103,opt,name=metrics,oneof"` +} + +type Mutation_ContentData struct { + // Content data + ContentData *DataPayload `protobuf:"bytes,104,opt,name=content_data,json=contentData,oneof"` } func (*Mutation_Ids) isMutation_Value() {} @@ -621,7 +689,9 @@ func (*Mutation_AdjustDeal) isMutation_Value() {} func (*Mutation_AdjustBid) isMutation_Value() {} -func (*Mutation_AddMetrics) isMutation_Value() {} +func (*Mutation_Metrics) isMutation_Value() {} + +func (*Mutation_ContentData) isMutation_Value() {} type Metadata struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -874,28 +944,28 @@ func (x *AdjustBidPayload) GetPrice() float64 { return 0 } -type AddMetricsPayload struct { +type MetricsPayload struct { state protoimpl.MessageState `protogen:"open.v1"` // List of metrics to add - Metric []*openrtb.BidRequest_Imp_Metric `protobuf:"bytes,1,rep,name=metric" json:"metric,omitempty"` + Metric []*openrtb.BidRequest_Metric `protobuf:"bytes,1,rep,name=metric" json:"metric,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *AddMetricsPayload) Reset() { - *x = AddMetricsPayload{} +func (x *MetricsPayload) Reset() { + *x = MetricsPayload{} mi := &file_agenticrtbframework_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *AddMetricsPayload) String() string { +func (x *MetricsPayload) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AddMetricsPayload) ProtoMessage() {} +func (*MetricsPayload) ProtoMessage() {} -func (x *AddMetricsPayload) ProtoReflect() protoreflect.Message { +func (x *MetricsPayload) ProtoReflect() protoreflect.Message { mi := &file_agenticrtbframework_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -907,163 +977,186 @@ func (x *AddMetricsPayload) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AddMetricsPayload.ProtoReflect.Descriptor instead. -func (*AddMetricsPayload) Descriptor() ([]byte, []int) { +// Deprecated: Use MetricsPayload.ProtoReflect.Descriptor instead. +func (*MetricsPayload) Descriptor() ([]byte, []int) { return file_agenticrtbframework_proto_rawDescGZIP(), []int{9} } -func (x *AddMetricsPayload) GetMetric() []*openrtb.BidRequest_Imp_Metric { +func (x *MetricsPayload) GetMetric() []*openrtb.BidRequest_Metric { if x != nil { return x.Metric } return nil } +type DataPayload struct { + state protoimpl.MessageState `protogen:"open.v1"` + // List of data to add + Data []*openrtb.BidRequest_Data `protobuf:"bytes,1,rep,name=data" json:"data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DataPayload) Reset() { + *x = DataPayload{} + mi := &file_agenticrtbframework_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DataPayload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataPayload) ProtoMessage() {} + +func (x *DataPayload) ProtoReflect() protoreflect.Message { + mi := &file_agenticrtbframework_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DataPayload.ProtoReflect.Descriptor instead. +func (*DataPayload) Descriptor() ([]byte, []int) { + return file_agenticrtbframework_proto_rawDescGZIP(), []int{10} +} + +func (x *DataPayload) GetData() []*openrtb.BidRequest_Data { + if x != nil { + return x.Data + } + return nil +} + +type RTBRequest_Ext struct { + state protoimpl.MessageState `protogen:"open.v1"` + extensionFields protoimpl.ExtensionFields + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RTBRequest_Ext) Reset() { + *x = RTBRequest_Ext{} + mi := &file_agenticrtbframework_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RTBRequest_Ext) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RTBRequest_Ext) ProtoMessage() {} + +func (x *RTBRequest_Ext) ProtoReflect() protoreflect.Message { + mi := &file_agenticrtbframework_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RTBRequest_Ext.ProtoReflect.Descriptor instead. +func (*RTBRequest_Ext) Descriptor() ([]byte, []int) { + return file_agenticrtbframework_proto_rawDescGZIP(), []int{0, 0} +} + var File_agenticrtbframework_proto protoreflect.FileDescriptor -var file_agenticrtbframework_proto_rawDesc = string([]byte{ - 0x0a, 0x19, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x72, 0x74, 0x62, 0x66, 0x72, 0x61, 0x6d, - 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x24, 0x63, 0x6f, 0x6d, - 0x2e, 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2e, 0x62, 0x69, 0x64, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x1a, 0x27, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, - 0x62, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x72, 0x74, 0x62, 0x2f, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x65, - 0x6e, 0x72, 0x74, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd6, 0x02, 0x0a, 0x0a, 0x52, - 0x54, 0x42, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x09, 0x6c, 0x69, 0x66, - 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, - 0x6f, 0x6d, 0x2e, 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2e, 0x62, 0x69, - 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x52, 0x09, 0x6c, - 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x02, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x6d, 0x61, 0x78, - 0x18, 0x03, 0x20, 0x02, 0x28, 0x05, 0x52, 0x04, 0x74, 0x6d, 0x61, 0x78, 0x12, 0x46, 0x0a, 0x0b, - 0x62, 0x69, 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x02, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, - 0x61, 0x62, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x72, 0x74, 0x62, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x62, 0x69, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x0c, 0x62, 0x69, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x6f, 0x6d, - 0x2e, 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x72, 0x74, 0x62, 0x2e, 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x0b, 0x62, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x42, 0x0a, 0x03, 0x65, 0x78, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, - 0x6f, 0x6d, 0x2e, 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2e, 0x62, 0x69, - 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x03, - 0x65, 0x78, 0x74, 0x22, 0x16, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x2a, 0x08, 0x08, 0x64, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xb7, 0x01, 0x0a, 0x0b, - 0x52, 0x54, 0x42, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x4c, 0x0a, 0x09, 0x6d, - 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, - 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2e, - 0x62, 0x69, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, - 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4a, 0x0a, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x6f, - 0x6d, 0x2e, 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2e, 0x62, 0x69, 0x64, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x85, 0x04, 0x0a, 0x08, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x06, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x02, - 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, - 0x6c, 0x61, 0x62, 0x2e, 0x62, 0x69, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x6d, 0x75, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x52, 0x06, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, - 0x20, 0x02, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x69, 0x61, 0x62, 0x74, 0x65, - 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2e, 0x62, 0x69, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x03, 0x20, 0x02, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x44, 0x0a, - 0x03, 0x69, 0x64, 0x73, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x6f, 0x6d, - 0x2e, 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2e, 0x62, 0x69, 0x64, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, - 0x31, 0x2e, 0x49, 0x44, 0x73, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x03, - 0x69, 0x64, 0x73, 0x12, 0x5a, 0x0a, 0x0b, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x5f, 0x64, 0x65, - 0x61, 0x6c, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x69, - 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2e, 0x62, 0x69, 0x64, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x44, 0x65, 0x61, 0x6c, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x44, 0x65, 0x61, 0x6c, 0x12, - 0x57, 0x0a, 0x0a, 0x61, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x5f, 0x62, 0x69, 0x64, 0x18, 0x66, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, - 0x68, 0x6c, 0x61, 0x62, 0x2e, 0x62, 0x69, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x6d, - 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x6a, 0x75, 0x73, - 0x74, 0x42, 0x69, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x09, 0x61, - 0x64, 0x6a, 0x75, 0x73, 0x74, 0x42, 0x69, 0x64, 0x12, 0x5a, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x5f, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, - 0x63, 0x6f, 0x6d, 0x2e, 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2e, 0x62, - 0x69, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x50, 0x0a, - 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x70, 0x69, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x1c, 0x0a, 0x0a, 0x49, 0x44, 0x73, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x75, 0x0a, - 0x11, 0x41, 0x64, 0x6a, 0x75, 0x73, 0x74, 0x44, 0x65, 0x61, 0x6c, 0x50, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x64, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x62, 0x69, 0x64, 0x66, 0x6c, 0x6f, 0x6f, 0x72, 0x12, 0x44, - 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, - 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2e, - 0x62, 0x69, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x52, 0x06, 0x6d, 0x61, - 0x72, 0x67, 0x69, 0x6e, 0x22, 0xb0, 0x01, 0x0a, 0x06, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x67, 0x0a, 0x10, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x3c, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, 0x62, - 0x2e, 0x62, 0x69, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x6d, 0x75, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x2e, 0x43, 0x61, - 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x63, - 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0x27, - 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x50, 0x4d, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, - 0x52, 0x43, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x22, 0x28, 0x0a, 0x10, 0x41, 0x64, 0x6a, 0x75, 0x73, - 0x74, 0x42, 0x69, 0x64, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, - 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x22, 0x5d, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x48, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x69, 0x61, 0x62, - 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x72, 0x74, 0x62, 0x2e, - 0x76, 0x32, 0x2e, 0x42, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6d, - 0x70, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x2a, 0x26, 0x0a, 0x09, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x19, 0x0a, - 0x15, 0x4c, 0x49, 0x46, 0x45, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x2a, 0x66, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x44, - 0x44, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x50, 0x45, - 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x03, - 0x2a, 0xae, 0x01, 0x0a, 0x06, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x49, - 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x43, 0x54, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, - 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x43, - 0x54, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x41, 0x4c, 0x53, 0x10, 0x02, 0x12, 0x12, - 0x0a, 0x0e, 0x53, 0x55, 0x50, 0x50, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x44, 0x45, 0x41, 0x4c, 0x53, - 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x44, 0x4a, 0x55, 0x53, 0x54, 0x5f, 0x44, 0x45, 0x41, - 0x4c, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x44, 0x4a, - 0x55, 0x53, 0x54, 0x5f, 0x44, 0x45, 0x41, 0x4c, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x10, - 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x42, 0x49, 0x44, 0x5f, 0x53, 0x48, 0x41, 0x44, 0x45, 0x10, 0x06, - 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x44, 0x44, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, - 0x07, 0x32, 0x88, 0x01, 0x0a, 0x11, 0x52, 0x54, 0x42, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x73, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4d, 0x75, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x69, 0x61, - 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2e, 0x62, 0x69, 0x64, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x2e, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x54, 0x42, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, - 0x69, 0x61, 0x62, 0x74, 0x65, 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2e, 0x62, 0x69, 0x64, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x54, 0x42, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x39, 0x5a, 0x37, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x61, 0x62, 0x74, 0x65, - 0x63, 0x68, 0x6c, 0x61, 0x62, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x2d, 0x72, 0x74, - 0x62, 0x2d, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x77, 0x6f, 0x72, 0x6b, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x70, 0x62, 0x2f, 0x61, 0x72, 0x74, 0x66, -}) +const file_agenticrtbframework_proto_rawDesc = "" + + "\n" + + "\x19agenticrtbframework.proto\x12$com.iabtechlab.bidstream.mutation.v1\x1a'com/iabtechlab/openrtb/v2/openrtb.proto\"\x9b\x04\n" + + "\n" + + "RTBRequest\x12M\n" + + "\tlifecycle\x18\x01 \x01(\x0e2/.com.iabtechlab.bidstream.mutation.v1.LifecycleR\tlifecycle\x12\x0e\n" + + "\x02id\x18\x02 \x01(\tR\x02id\x12\x12\n" + + "\x04tmax\x18\x03 \x01(\x05R\x04tmax\x12F\n" + + "\vbid_request\x18\x04 \x01(\v2%.com.iabtechlab.openrtb.v2.BidRequestR\n" + + "bidRequest\x12I\n" + + "\fbid_response\x18\x05 \x01(\v2&.com.iabtechlab.openrtb.v2.BidResponseR\vbidResponse\x12P\n" + + "\n" + + "originator\x18\x06 \x01(\v20.com.iabtechlab.bidstream.mutation.v1.OriginatorR\n" + + "originator\x12[\n" + + "\x12applicable_intents\x18\a \x03(\x0e2,.com.iabtechlab.bidstream.mutation.v1.IntentR\x11applicableIntents\x12F\n" + + "\x03ext\x18c \x01(\v24.com.iabtechlab.bidstream.mutation.v1.RTBRequest.ExtR\x03ext\x1a\x10\n" + + "\x03Ext*\t\b\xf4\x03\x10\x80\x80\x80\x80\x02\"\xb7\x01\n" + + "\vRTBResponse\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12L\n" + + "\tmutations\x18\x02 \x03(\v2..com.iabtechlab.bidstream.mutation.v1.MutationR\tmutations\x12J\n" + + "\bmetadata\x18\x03 \x01(\v2..com.iabtechlab.bidstream.mutation.v1.MetadataR\bmetadata\"\xc8\x01\n" + + "\n" + + "Originator\x12I\n" + + "\x04type\x18\x01 \x01(\x0e25.com.iabtechlab.bidstream.mutation.v1.Originator.TypeR\x04type\x12\x0e\n" + + "\x02id\x18\x02 \x01(\tR\x02id\"_\n" + + "\x04Type\x12\x14\n" + + "\x10TYPE_UNSPECIFIED\x10\x00\x12\x12\n" + + "\x0eTYPE_PUBLISHER\x10\x01\x12\f\n" + + "\bTYPE_SSP\x10\x02\x12\x11\n" + + "\rTYPE_EXCHANGE\x10\x03\x12\f\n" + + "\bTYPE_DSP\x10\x04\"\xdb\x04\n" + + "\bMutation\x12D\n" + + "\x06intent\x18\x01 \x01(\x0e2,.com.iabtechlab.bidstream.mutation.v1.IntentR\x06intent\x12?\n" + + "\x02op\x18\x02 \x01(\x0e2/.com.iabtechlab.bidstream.mutation.v1.OperationR\x02op\x12\x12\n" + + "\x04path\x18\x03 \x01(\tR\x04path\x12D\n" + + "\x03ids\x18d \x01(\v20.com.iabtechlab.bidstream.mutation.v1.IDsPayloadH\x00R\x03ids\x12Z\n" + + "\vadjust_deal\x18e \x01(\v27.com.iabtechlab.bidstream.mutation.v1.AdjustDealPayloadH\x00R\n" + + "adjustDeal\x12W\n" + + "\n" + + "adjust_bid\x18f \x01(\v26.com.iabtechlab.bidstream.mutation.v1.AdjustBidPayloadH\x00R\tadjustBid\x12P\n" + + "\ametrics\x18g \x01(\v24.com.iabtechlab.bidstream.mutation.v1.MetricsPayloadH\x00R\ametrics\x12V\n" + + "\fcontent_data\x18h \x01(\v21.com.iabtechlab.bidstream.mutation.v1.DataPayloadH\x00R\vcontentDataB\a\n" + + "\x05valueJ\x06\b\xe8\a\x10\xd0\x0f\"P\n" + + "\bMetadata\x12\x1f\n" + + "\vapi_version\x18\x01 \x01(\tR\n" + + "apiVersion\x12#\n" + + "\rmodel_version\x18\x02 \x01(\tR\fmodelVersion\"\x1c\n" + + "\n" + + "IDsPayload\x12\x0e\n" + + "\x02id\x18\x01 \x03(\tR\x02id\"u\n" + + "\x11AdjustDealPayload\x12\x1a\n" + + "\bbidfloor\x18\x01 \x01(\x01R\bbidfloor\x12D\n" + + "\x06margin\x18\x02 \x01(\v2,.com.iabtechlab.bidstream.mutation.v1.MarginR\x06margin\"\xb0\x01\n" + + "\x06Margin\x12\x14\n" + + "\x05value\x18\x01 \x01(\x01R\x05value\x12g\n" + + "\x10calculation_type\x18\x02 \x01(\x0e2<.com.iabtechlab.bidstream.mutation.v1.Margin.CalculationTypeR\x0fcalculationType\"'\n" + + "\x0fCalculationType\x12\a\n" + + "\x03CPM\x10\x00\x12\v\n" + + "\aPERCENT\x10\x01\"(\n" + + "\x10AdjustBidPayload\x12\x14\n" + + "\x05price\x18\x01 \x01(\x01R\x05price\"V\n" + + "\x0eMetricsPayload\x12D\n" + + "\x06metric\x18\x01 \x03(\v2,.com.iabtechlab.openrtb.v2.BidRequest.MetricR\x06metric\"M\n" + + "\vDataPayload\x12>\n" + + "\x04data\x18\x01 \x03(\v2*.com.iabtechlab.openrtb.v2.BidRequest.DataR\x04data*k\n" + + "\tLifecycle\x12\x19\n" + + "\x15LIFECYCLE_UNSPECIFIED\x10\x00\x12#\n" + + "\x1fLIFECYCLE_PUBLISHER_BID_REQUEST\x10\x01\x12\x1e\n" + + "\x1aLIFECYCLE_DSP_BID_RESPONSE\x10\x02*f\n" + + "\tOperation\x12\x19\n" + + "\x15OPERATION_UNSPECIFIED\x10\x00\x12\x11\n" + + "\rOPERATION_ADD\x10\x01\x12\x14\n" + + "\x10OPERATION_REMOVE\x10\x02\x12\x15\n" + + "\x11OPERATION_REPLACE\x10\x03*\xc4\x01\n" + + "\x06Intent\x12\x16\n" + + "\x12INTENT_UNSPECIFIED\x10\x00\x12\x15\n" + + "\x11ACTIVATE_SEGMENTS\x10\x01\x12\x12\n" + + "\x0eACTIVATE_DEALS\x10\x02\x12\x12\n" + + "\x0eSUPPRESS_DEALS\x10\x03\x12\x15\n" + + "\x11ADJUST_DEAL_FLOOR\x10\x04\x12\x16\n" + + "\x12ADJUST_DEAL_MARGIN\x10\x05\x12\r\n" + + "\tBID_SHADE\x10\x06\x12\x0f\n" + + "\vADD_METRICS\x10\a\x12\f\n" + + "\bADD_CIDS\x10\b\"\x06\b\xe8\a\x10\xcf\x0fb\beditionsp\xe8\a" var ( file_agenticrtbframework_proto_rawDescOnce sync.Once @@ -1077,50 +1170,57 @@ func file_agenticrtbframework_proto_rawDescGZIP() []byte { return file_agenticrtbframework_proto_rawDescData } -var file_agenticrtbframework_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_agenticrtbframework_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_agenticrtbframework_proto_enumTypes = make([]protoimpl.EnumInfo, 5) +var file_agenticrtbframework_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_agenticrtbframework_proto_goTypes = []any{ - (Lifecycle)(0), // 0: com.iabtechlab.bidstream.mutation.v1.Lifecycle - (Operation)(0), // 1: com.iabtechlab.bidstream.mutation.v1.Operation - (Intent)(0), // 2: com.iabtechlab.bidstream.mutation.v1.Intent - (Margin_CalculationType)(0), // 3: com.iabtechlab.bidstream.mutation.v1.Margin.CalculationType - (*RTBRequest)(nil), // 4: com.iabtechlab.bidstream.mutation.v1.RTBRequest - (*Extensions)(nil), // 5: com.iabtechlab.bidstream.mutation.v1.Extensions - (*RTBResponse)(nil), // 6: com.iabtechlab.bidstream.mutation.v1.RTBResponse - (*Mutation)(nil), // 7: com.iabtechlab.bidstream.mutation.v1.Mutation - (*Metadata)(nil), // 8: com.iabtechlab.bidstream.mutation.v1.Metadata - (*IDsPayload)(nil), // 9: com.iabtechlab.bidstream.mutation.v1.IDsPayload - (*AdjustDealPayload)(nil), // 10: com.iabtechlab.bidstream.mutation.v1.AdjustDealPayload - (*Margin)(nil), // 11: com.iabtechlab.bidstream.mutation.v1.Margin - (*AdjustBidPayload)(nil), // 12: com.iabtechlab.bidstream.mutation.v1.AdjustBidPayload - (*AddMetricsPayload)(nil), // 13: com.iabtechlab.bidstream.mutation.v1.AddMetricsPayload - (*openrtb.BidRequest)(nil), // 14: com.iabtechlab.openrtb.v2.BidRequest - (*openrtb.BidResponse)(nil), // 15: com.iabtechlab.openrtb.v2.BidResponse - (*openrtb.BidRequest_Imp_Metric)(nil), // 16: com.iabtechlab.openrtb.v2.BidRequest.Imp.Metric + (Lifecycle)(0), // 0: com.iabtechlab.bidstream.mutation.v1.Lifecycle + (Operation)(0), // 1: com.iabtechlab.bidstream.mutation.v1.Operation + (Intent)(0), // 2: com.iabtechlab.bidstream.mutation.v1.Intent + (Originator_Type)(0), // 3: com.iabtechlab.bidstream.mutation.v1.Originator.Type + (Margin_CalculationType)(0), // 4: com.iabtechlab.bidstream.mutation.v1.Margin.CalculationType + (*RTBRequest)(nil), // 5: com.iabtechlab.bidstream.mutation.v1.RTBRequest + (*RTBResponse)(nil), // 6: com.iabtechlab.bidstream.mutation.v1.RTBResponse + (*Originator)(nil), // 7: com.iabtechlab.bidstream.mutation.v1.Originator + (*Mutation)(nil), // 8: com.iabtechlab.bidstream.mutation.v1.Mutation + (*Metadata)(nil), // 9: com.iabtechlab.bidstream.mutation.v1.Metadata + (*IDsPayload)(nil), // 10: com.iabtechlab.bidstream.mutation.v1.IDsPayload + (*AdjustDealPayload)(nil), // 11: com.iabtechlab.bidstream.mutation.v1.AdjustDealPayload + (*Margin)(nil), // 12: com.iabtechlab.bidstream.mutation.v1.Margin + (*AdjustBidPayload)(nil), // 13: com.iabtechlab.bidstream.mutation.v1.AdjustBidPayload + (*MetricsPayload)(nil), // 14: com.iabtechlab.bidstream.mutation.v1.MetricsPayload + (*DataPayload)(nil), // 15: com.iabtechlab.bidstream.mutation.v1.DataPayload + (*RTBRequest_Ext)(nil), // 16: com.iabtechlab.bidstream.mutation.v1.RTBRequest.Ext + (*openrtb.BidRequest)(nil), // 17: com.iabtechlab.openrtb.v2.BidRequest + (*openrtb.BidResponse)(nil), // 18: com.iabtechlab.openrtb.v2.BidResponse + (*openrtb.BidRequest_Metric)(nil), // 19: com.iabtechlab.openrtb.v2.BidRequest.Metric + (*openrtb.BidRequest_Data)(nil), // 20: com.iabtechlab.openrtb.v2.BidRequest.Data } var file_agenticrtbframework_proto_depIdxs = []int32{ 0, // 0: com.iabtechlab.bidstream.mutation.v1.RTBRequest.lifecycle:type_name -> com.iabtechlab.bidstream.mutation.v1.Lifecycle - 14, // 1: com.iabtechlab.bidstream.mutation.v1.RTBRequest.bid_request:type_name -> com.iabtechlab.openrtb.v2.BidRequest - 15, // 2: com.iabtechlab.bidstream.mutation.v1.RTBRequest.bid_response:type_name -> com.iabtechlab.openrtb.v2.BidResponse - 5, // 3: com.iabtechlab.bidstream.mutation.v1.RTBRequest.ext:type_name -> com.iabtechlab.bidstream.mutation.v1.Extensions - 7, // 4: com.iabtechlab.bidstream.mutation.v1.RTBResponse.mutations:type_name -> com.iabtechlab.bidstream.mutation.v1.Mutation - 8, // 5: com.iabtechlab.bidstream.mutation.v1.RTBResponse.metadata:type_name -> com.iabtechlab.bidstream.mutation.v1.Metadata - 2, // 6: com.iabtechlab.bidstream.mutation.v1.Mutation.intent:type_name -> com.iabtechlab.bidstream.mutation.v1.Intent - 1, // 7: com.iabtechlab.bidstream.mutation.v1.Mutation.op:type_name -> com.iabtechlab.bidstream.mutation.v1.Operation - 9, // 8: com.iabtechlab.bidstream.mutation.v1.Mutation.ids:type_name -> com.iabtechlab.bidstream.mutation.v1.IDsPayload - 10, // 9: com.iabtechlab.bidstream.mutation.v1.Mutation.adjust_deal:type_name -> com.iabtechlab.bidstream.mutation.v1.AdjustDealPayload - 12, // 10: com.iabtechlab.bidstream.mutation.v1.Mutation.adjust_bid:type_name -> com.iabtechlab.bidstream.mutation.v1.AdjustBidPayload - 13, // 11: com.iabtechlab.bidstream.mutation.v1.Mutation.add_metrics:type_name -> com.iabtechlab.bidstream.mutation.v1.AddMetricsPayload - 11, // 12: com.iabtechlab.bidstream.mutation.v1.AdjustDealPayload.margin:type_name -> com.iabtechlab.bidstream.mutation.v1.Margin - 3, // 13: com.iabtechlab.bidstream.mutation.v1.Margin.calculation_type:type_name -> com.iabtechlab.bidstream.mutation.v1.Margin.CalculationType - 16, // 14: com.iabtechlab.bidstream.mutation.v1.AddMetricsPayload.metric:type_name -> com.iabtechlab.openrtb.v2.BidRequest.Imp.Metric - 4, // 15: com.iabtechlab.bidstream.mutation.v1.RTBExtensionPoint.GetMutations:input_type -> com.iabtechlab.bidstream.mutation.v1.RTBRequest - 6, // 16: com.iabtechlab.bidstream.mutation.v1.RTBExtensionPoint.GetMutations:output_type -> com.iabtechlab.bidstream.mutation.v1.RTBResponse - 16, // [16:17] is the sub-list for method output_type - 15, // [15:16] is the sub-list for method input_type - 15, // [15:15] is the sub-list for extension type_name - 15, // [15:15] is the sub-list for extension extendee - 0, // [0:15] is the sub-list for field type_name + 17, // 1: com.iabtechlab.bidstream.mutation.v1.RTBRequest.bid_request:type_name -> com.iabtechlab.openrtb.v2.BidRequest + 18, // 2: com.iabtechlab.bidstream.mutation.v1.RTBRequest.bid_response:type_name -> com.iabtechlab.openrtb.v2.BidResponse + 7, // 3: com.iabtechlab.bidstream.mutation.v1.RTBRequest.originator:type_name -> com.iabtechlab.bidstream.mutation.v1.Originator + 2, // 4: com.iabtechlab.bidstream.mutation.v1.RTBRequest.applicable_intents:type_name -> com.iabtechlab.bidstream.mutation.v1.Intent + 16, // 5: com.iabtechlab.bidstream.mutation.v1.RTBRequest.ext:type_name -> com.iabtechlab.bidstream.mutation.v1.RTBRequest.Ext + 8, // 6: com.iabtechlab.bidstream.mutation.v1.RTBResponse.mutations:type_name -> com.iabtechlab.bidstream.mutation.v1.Mutation + 9, // 7: com.iabtechlab.bidstream.mutation.v1.RTBResponse.metadata:type_name -> com.iabtechlab.bidstream.mutation.v1.Metadata + 3, // 8: com.iabtechlab.bidstream.mutation.v1.Originator.type:type_name -> com.iabtechlab.bidstream.mutation.v1.Originator.Type + 2, // 9: com.iabtechlab.bidstream.mutation.v1.Mutation.intent:type_name -> com.iabtechlab.bidstream.mutation.v1.Intent + 1, // 10: com.iabtechlab.bidstream.mutation.v1.Mutation.op:type_name -> com.iabtechlab.bidstream.mutation.v1.Operation + 10, // 11: com.iabtechlab.bidstream.mutation.v1.Mutation.ids:type_name -> com.iabtechlab.bidstream.mutation.v1.IDsPayload + 11, // 12: com.iabtechlab.bidstream.mutation.v1.Mutation.adjust_deal:type_name -> com.iabtechlab.bidstream.mutation.v1.AdjustDealPayload + 13, // 13: com.iabtechlab.bidstream.mutation.v1.Mutation.adjust_bid:type_name -> com.iabtechlab.bidstream.mutation.v1.AdjustBidPayload + 14, // 14: com.iabtechlab.bidstream.mutation.v1.Mutation.metrics:type_name -> com.iabtechlab.bidstream.mutation.v1.MetricsPayload + 15, // 15: com.iabtechlab.bidstream.mutation.v1.Mutation.content_data:type_name -> com.iabtechlab.bidstream.mutation.v1.DataPayload + 12, // 16: com.iabtechlab.bidstream.mutation.v1.AdjustDealPayload.margin:type_name -> com.iabtechlab.bidstream.mutation.v1.Margin + 4, // 17: com.iabtechlab.bidstream.mutation.v1.Margin.calculation_type:type_name -> com.iabtechlab.bidstream.mutation.v1.Margin.CalculationType + 19, // 18: com.iabtechlab.bidstream.mutation.v1.MetricsPayload.metric:type_name -> com.iabtechlab.openrtb.v2.BidRequest.Metric + 20, // 19: com.iabtechlab.bidstream.mutation.v1.DataPayload.data:type_name -> com.iabtechlab.openrtb.v2.BidRequest.Data + 20, // [20:20] is the sub-list for method output_type + 20, // [20:20] is the sub-list for method input_type + 20, // [20:20] is the sub-list for extension type_name + 20, // [20:20] is the sub-list for extension extendee + 0, // [0:20] is the sub-list for field type_name } func init() { file_agenticrtbframework_proto_init() } @@ -1132,17 +1232,18 @@ func file_agenticrtbframework_proto_init() { (*Mutation_Ids)(nil), (*Mutation_AdjustDeal)(nil), (*Mutation_AdjustBid)(nil), - (*Mutation_AddMetrics)(nil), + (*Mutation_Metrics)(nil), + (*Mutation_ContentData)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_agenticrtbframework_proto_rawDesc), len(file_agenticrtbframework_proto_rawDesc)), - NumEnums: 4, - NumMessages: 10, + NumEnums: 5, + NumMessages: 12, NumExtensions: 0, - NumServices: 1, + NumServices: 0, }, GoTypes: file_agenticrtbframework_proto_goTypes, DependencyIndexes: file_agenticrtbframework_proto_depIdxs, diff --git a/examples/golang/pkg/pb/artf/agenticrtbframeworkservices.pb.go b/examples/golang/pkg/pb/artf/agenticrtbframeworkservices.pb.go new file mode 100644 index 0000000..aca57fd --- /dev/null +++ b/examples/golang/pkg/pb/artf/agenticrtbframeworkservices.pb.go @@ -0,0 +1,67 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v6.33.4 +// source: agenticrtbframeworkservices.proto + +package artf + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +var File_agenticrtbframeworkservices_proto protoreflect.FileDescriptor + +const file_agenticrtbframeworkservices_proto_rawDesc = "" + + "\n" + + "!agenticrtbframeworkservices.proto\x12-com.iabtechlab.bidstream.mutation.services.v1\x1a\x19agenticrtbframework.proto2\x88\x01\n" + + "\x11RTBExtensionPoint\x12s\n" + + "\fGetMutations\x120.com.iabtechlab.bidstream.mutation.v1.RTBRequest\x1a1.com.iabtechlab.bidstream.mutation.v1.RTBResponseb\x06proto3" + +var file_agenticrtbframeworkservices_proto_goTypes = []any{ + (*RTBRequest)(nil), // 0: com.iabtechlab.bidstream.mutation.v1.RTBRequest + (*RTBResponse)(nil), // 1: com.iabtechlab.bidstream.mutation.v1.RTBResponse +} +var file_agenticrtbframeworkservices_proto_depIdxs = []int32{ + 0, // 0: com.iabtechlab.bidstream.mutation.services.v1.RTBExtensionPoint.GetMutations:input_type -> com.iabtechlab.bidstream.mutation.v1.RTBRequest + 1, // 1: com.iabtechlab.bidstream.mutation.services.v1.RTBExtensionPoint.GetMutations:output_type -> com.iabtechlab.bidstream.mutation.v1.RTBResponse + 1, // [1:2] is the sub-list for method output_type + 0, // [0:1] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_agenticrtbframeworkservices_proto_init() } +func file_agenticrtbframeworkservices_proto_init() { + if File_agenticrtbframeworkservices_proto != nil { + return + } + file_agenticrtbframework_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_agenticrtbframeworkservices_proto_rawDesc), len(file_agenticrtbframeworkservices_proto_rawDesc)), + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_agenticrtbframeworkservices_proto_goTypes, + DependencyIndexes: file_agenticrtbframeworkservices_proto_depIdxs, + }.Build() + File_agenticrtbframeworkservices_proto = out.File + file_agenticrtbframeworkservices_proto_goTypes = nil + file_agenticrtbframeworkservices_proto_depIdxs = nil +} diff --git a/pkg/pb/artf/agenticrtbframework_grpc.pb.go b/examples/golang/pkg/pb/artf/agenticrtbframeworkservices_grpc.pb.go similarity index 96% rename from pkg/pb/artf/agenticrtbframework_grpc.pb.go rename to examples/golang/pkg/pb/artf/agenticrtbframeworkservices_grpc.pb.go index d5bd6d5..ed4dba2 100644 --- a/pkg/pb/artf/agenticrtbframework_grpc.pb.go +++ b/examples/golang/pkg/pb/artf/agenticrtbframeworkservices_grpc.pb.go @@ -1,8 +1,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.6.0 -// - protoc v3.21.12 -// source: agenticrtbframework.proto +// - protoc-gen-go-grpc v1.6.2 +// - protoc v6.33.4 +// source: agenticrtbframeworkservices.proto package artf @@ -119,5 +119,5 @@ var RTBExtensionPoint_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "agenticrtbframework.proto", + Metadata: "agenticrtbframeworkservices.proto", } diff --git a/examples/golang/pkg/pb/openrtb/openrtb.pb.go b/examples/golang/pkg/pb/openrtb/openrtb.pb.go new file mode 100644 index 0000000..82bac2c --- /dev/null +++ b/examples/golang/pkg/pb/openrtb/openrtb.pb.go @@ -0,0 +1,13165 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.11 +// protoc v6.33.4 +// source: com/iabtechlab/openrtb/v2/openrtb.proto + +package openrtb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// OpenRTB 2.0: types of ads that can be accepted by the exchange unless +// restricted by publisher site settings. +type BannerAdType int32 + +const ( + // Equivalent to an unset value. + BannerAdType_BannerAdType_UNKNOWN BannerAdType = 0 + // "Usually mobile". + BannerAdType_XHTML_TEXT_AD BannerAdType = 1 + // "Usually mobile". + BannerAdType_XHTML_BANNER_AD BannerAdType = 2 + // Javascript must be valid XHTML (ie, script tags included). + BannerAdType_JAVASCRIPT_AD BannerAdType = 3 + // Iframe. + BannerAdType_IFRAME BannerAdType = 4 +) + +// Enum value maps for BannerAdType. +var ( + BannerAdType_name = map[int32]string{ + 0: "BannerAdType_UNKNOWN", + 1: "XHTML_TEXT_AD", + 2: "XHTML_BANNER_AD", + 3: "JAVASCRIPT_AD", + 4: "IFRAME", + } + BannerAdType_value = map[string]int32{ + "BannerAdType_UNKNOWN": 0, + "XHTML_TEXT_AD": 1, + "XHTML_BANNER_AD": 2, + "JAVASCRIPT_AD": 3, + "IFRAME": 4, + } +) + +func (x BannerAdType) Enum() *BannerAdType { + p := new(BannerAdType) + *p = x + return p +} + +func (x BannerAdType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BannerAdType) Descriptor() protoreflect.EnumDescriptor { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[0].Descriptor() +} + +func (BannerAdType) Type() protoreflect.EnumType { + return &file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[0] +} + +func (x BannerAdType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BannerAdType.Descriptor instead. +func (BannerAdType) EnumDescriptor() ([]byte, []int) { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_rawDescGZIP(), []int{0} +} + +// OpenRTB Native 1.0: Core layouts. An implementing exchange may not support +// all asset variants or introduce new ones unique to that system. To be +// deprecated. +type LayoutId int32 + +const ( + LayoutId_LayoutId_UNKNOWN LayoutId = 0 + LayoutId_CONTENT_WALL LayoutId = 1 + LayoutId_APP_WALL LayoutId = 2 + LayoutId_NEWS_FEED LayoutId = 3 + LayoutId_CHAT_LIST LayoutId = 4 + LayoutId_CAROUSEL LayoutId = 5 + LayoutId_CONTENT_STREAM LayoutId = 6 + LayoutId_GRID LayoutId = 7 // Exchange-specific values above 500. +) + +// Enum value maps for LayoutId. +var ( + LayoutId_name = map[int32]string{ + 0: "LayoutId_UNKNOWN", + 1: "CONTENT_WALL", + 2: "APP_WALL", + 3: "NEWS_FEED", + 4: "CHAT_LIST", + 5: "CAROUSEL", + 6: "CONTENT_STREAM", + 7: "GRID", + } + LayoutId_value = map[string]int32{ + "LayoutId_UNKNOWN": 0, + "CONTENT_WALL": 1, + "APP_WALL": 2, + "NEWS_FEED": 3, + "CHAT_LIST": 4, + "CAROUSEL": 5, + "CONTENT_STREAM": 6, + "GRID": 7, + } +) + +func (x LayoutId) Enum() *LayoutId { + p := new(LayoutId) + *p = x + return p +} + +func (x LayoutId) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LayoutId) Descriptor() protoreflect.EnumDescriptor { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[1].Descriptor() +} + +func (LayoutId) Type() protoreflect.EnumType { + return &file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[1] +} + +func (x LayoutId) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LayoutId.Descriptor instead. +func (LayoutId) EnumDescriptor() ([]byte, []int) { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_rawDescGZIP(), []int{1} +} + +// OpenRTB Native 1.0: Below is a list of the core ad unit ids described by IAB: +// http://www.iab.net/media/file/IABNativeAdvertisingPlaybook120413.pdf In feed +// unit is essentially a layout, it has been removed from the list. In feed +// units can be identified via the layout parameter on the request. An +// implementing exchange may not support all asset variants or introduce new +// ones unique to that system. To be deprecated. +type AdUnitId int32 + +const ( + AdUnitId_AdUnitId_UNKNOWN AdUnitId = 0 + AdUnitId_PAID_SEARCH_UNIT AdUnitId = 1 + AdUnitId_RECOMMENDATION_WIDGET AdUnitId = 2 + AdUnitId_PROMOTED_LISTING AdUnitId = 3 + AdUnitId_IAB_IN_AD_NATIVE AdUnitId = 4 + AdUnitId_ADUNITID_CUSTOM AdUnitId = 5 // Exchange-specific values above 500. +) + +// Enum value maps for AdUnitId. +var ( + AdUnitId_name = map[int32]string{ + 0: "AdUnitId_UNKNOWN", + 1: "PAID_SEARCH_UNIT", + 2: "RECOMMENDATION_WIDGET", + 3: "PROMOTED_LISTING", + 4: "IAB_IN_AD_NATIVE", + 5: "ADUNITID_CUSTOM", + } + AdUnitId_value = map[string]int32{ + "AdUnitId_UNKNOWN": 0, + "PAID_SEARCH_UNIT": 1, + "RECOMMENDATION_WIDGET": 2, + "PROMOTED_LISTING": 3, + "IAB_IN_AD_NATIVE": 4, + "ADUNITID_CUSTOM": 5, + } +) + +func (x AdUnitId) Enum() *AdUnitId { + p := new(AdUnitId) + *p = x + return p +} + +func (x AdUnitId) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AdUnitId) Descriptor() protoreflect.EnumDescriptor { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[2].Descriptor() +} + +func (AdUnitId) Type() protoreflect.EnumType { + return &file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[2] +} + +func (x AdUnitId) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AdUnitId.Descriptor instead. +func (AdUnitId) EnumDescriptor() ([]byte, []int) { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_rawDescGZIP(), []int{2} +} + +// OpenRTB Native 1.1: The context in which the ad appears - what type of +// content is surrounding the ad on the page at a high level. This maps directly +// to the new Deep Dive on In-Feed Ad Units. This denotes the primary context, +// but does not imply other content may not exist on the page - for example it's +// expected that most content platforms have some social components, etc. +type ContextType int32 + +const ( + // Equivalent to an unset value. + ContextType_ContextType_UNKNOWN ContextType = 0 + // Content-centric context such as newsfeed, article, image gallery, video + // gallery, or similar. + ContextType_CONTENT ContextType = 1 + // Social-centric context such as social network feed, email, chat, or + // similar. + ContextType_SOCIAL ContextType = 2 + // Product context such as product listings, details, recommendations, + // reviews, or similar. + ContextType_PRODUCT ContextType = 3 +) + +// Enum value maps for ContextType. +var ( + ContextType_name = map[int32]string{ + 0: "ContextType_UNKNOWN", + 1: "CONTENT", + 2: "SOCIAL", + 3: "PRODUCT", + } + ContextType_value = map[string]int32{ + "ContextType_UNKNOWN": 0, + "CONTENT": 1, + "SOCIAL": 2, + "PRODUCT": 3, + } +) + +func (x ContextType) Enum() *ContextType { + p := new(ContextType) + *p = x + return p +} + +func (x ContextType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ContextType) Descriptor() protoreflect.EnumDescriptor { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[3].Descriptor() +} + +func (ContextType) Type() protoreflect.EnumType { + return &file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[3] +} + +func (x ContextType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ContextType.Descriptor instead. +func (ContextType) EnumDescriptor() ([]byte, []int) { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_rawDescGZIP(), []int{3} +} + +// Interest Group auction environment support for this impression. Note +// that this only indicates that the Interest Group auction is supported, +// not that it is guaranteed to execute. If no buyer chooses to +// participate in the Interest Group auction, then the Interest Group +// auction will be skipped and the winner of the OpenRTB (aka contextual) +// auction, if any, will serve instead. +type BidRequest_InterestGroupAuctionSupport_AuctionEnvironment int32 + +const ( + BidRequest_InterestGroupAuctionSupport_IG_AUCTION_NOT_SUPPORTED BidRequest_InterestGroupAuctionSupport_AuctionEnvironment = 0 + BidRequest_InterestGroupAuctionSupport_ON_DEVICE_ORCHESTRATED_IG_AUCTION BidRequest_InterestGroupAuctionSupport_AuctionEnvironment = 1 + BidRequest_InterestGroupAuctionSupport_SERVER_ORCHESTRATED_IG_AUCTION BidRequest_InterestGroupAuctionSupport_AuctionEnvironment = 3 +) + +// Enum value maps for BidRequest_InterestGroupAuctionSupport_AuctionEnvironment. +var ( + BidRequest_InterestGroupAuctionSupport_AuctionEnvironment_name = map[int32]string{ + 0: "IG_AUCTION_NOT_SUPPORTED", + 1: "ON_DEVICE_ORCHESTRATED_IG_AUCTION", + 3: "SERVER_ORCHESTRATED_IG_AUCTION", + } + BidRequest_InterestGroupAuctionSupport_AuctionEnvironment_value = map[string]int32{ + "IG_AUCTION_NOT_SUPPORTED": 0, + "ON_DEVICE_ORCHESTRATED_IG_AUCTION": 1, + "SERVER_ORCHESTRATED_IG_AUCTION": 3, + } +) + +func (x BidRequest_InterestGroupAuctionSupport_AuctionEnvironment) Enum() *BidRequest_InterestGroupAuctionSupport_AuctionEnvironment { + p := new(BidRequest_InterestGroupAuctionSupport_AuctionEnvironment) + *p = x + return p +} + +func (x BidRequest_InterestGroupAuctionSupport_AuctionEnvironment) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BidRequest_InterestGroupAuctionSupport_AuctionEnvironment) Descriptor() protoreflect.EnumDescriptor { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[4].Descriptor() +} + +func (BidRequest_InterestGroupAuctionSupport_AuctionEnvironment) Type() protoreflect.EnumType { + return &file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[4] +} + +func (x BidRequest_InterestGroupAuctionSupport_AuctionEnvironment) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BidRequest_InterestGroupAuctionSupport_AuctionEnvironment.Descriptor instead. +func (BidRequest_InterestGroupAuctionSupport_AuctionEnvironment) EnumDescriptor() ([]byte, []int) { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_rawDescGZIP(), []int{0, 18, 0} +} + +// (iOS Only) An integer passed to represent the app's app tracking +// authorization status. +type BidRequest_Device_Ext_Atts int32 + +const ( + BidRequest_Device_Ext_NOT_DETERMINED BidRequest_Device_Ext_Atts = 0 + BidRequest_Device_Ext_RESTRICTED BidRequest_Device_Ext_Atts = 1 + BidRequest_Device_Ext_DENIED BidRequest_Device_Ext_Atts = 2 + BidRequest_Device_Ext_AUTHORIZED BidRequest_Device_Ext_Atts = 3 +) + +// Enum value maps for BidRequest_Device_Ext_Atts. +var ( + BidRequest_Device_Ext_Atts_name = map[int32]string{ + 0: "NOT_DETERMINED", + 1: "RESTRICTED", + 2: "DENIED", + 3: "AUTHORIZED", + } + BidRequest_Device_Ext_Atts_value = map[string]int32{ + "NOT_DETERMINED": 0, + "RESTRICTED": 1, + "DENIED": 2, + "AUTHORIZED": 3, + } +) + +func (x BidRequest_Device_Ext_Atts) Enum() *BidRequest_Device_Ext_Atts { + p := new(BidRequest_Device_Ext_Atts) + *p = x + return p +} + +func (x BidRequest_Device_Ext_Atts) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BidRequest_Device_Ext_Atts) Descriptor() protoreflect.EnumDescriptor { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[5].Descriptor() +} + +func (BidRequest_Device_Ext_Atts) Type() protoreflect.EnumType { + return &file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[5] +} + +func (x BidRequest_Device_Ext_Atts) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BidRequest_Device_Ext_Atts.Descriptor instead. +func (BidRequest_Device_Ext_Atts) EnumDescriptor() ([]byte, []int) { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_rawDescGZIP(), []int{0, 27, 0, 0} +} + +// The fidelity-type of the attribution to track. +type BidResponse_SKAdNetworkFidelity_Fidelity int32 + +const ( + BidResponse_SKAdNetworkFidelity_VIEW_THROUGH BidResponse_SKAdNetworkFidelity_Fidelity = 0 + BidResponse_SKAdNetworkFidelity_STOREKIT_RENDERED BidResponse_SKAdNetworkFidelity_Fidelity = 1 +) + +// Enum value maps for BidResponse_SKAdNetworkFidelity_Fidelity. +var ( + BidResponse_SKAdNetworkFidelity_Fidelity_name = map[int32]string{ + 0: "VIEW_THROUGH", + 1: "STOREKIT_RENDERED", + } + BidResponse_SKAdNetworkFidelity_Fidelity_value = map[string]int32{ + "VIEW_THROUGH": 0, + "STOREKIT_RENDERED": 1, + } +) + +func (x BidResponse_SKAdNetworkFidelity_Fidelity) Enum() *BidResponse_SKAdNetworkFidelity_Fidelity { + p := new(BidResponse_SKAdNetworkFidelity_Fidelity) + *p = x + return p +} + +func (x BidResponse_SKAdNetworkFidelity_Fidelity) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BidResponse_SKAdNetworkFidelity_Fidelity) Descriptor() protoreflect.EnumDescriptor { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[6].Descriptor() +} + +func (BidResponse_SKAdNetworkFidelity_Fidelity) Type() protoreflect.EnumType { + return &file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[6] +} + +func (x BidResponse_SKAdNetworkFidelity_Fidelity) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BidResponse_SKAdNetworkFidelity_Fidelity.Descriptor instead. +func (BidResponse_SKAdNetworkFidelity_Fidelity) EnumDescriptor() ([]byte, []int) { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_rawDescGZIP(), []int{1, 4, 0} +} + +// Array for platform or sell-side use of any user parameters (using the list +// provided by DSA Transparency Taskforce). Note; See definition and list of +// possible user parameters as listed here, applied consistently in both bid +// request and/or bid response. +type Transparency_DsaParams int32 + +const ( + Transparency_DsaParams_UNKNOWN Transparency_DsaParams = 0 + // Information about the user, collected and used across contexts, that is + // about the user's activity, interests, demographic information, or other + // characteristics. + Transparency_PROFILING Transparency_DsaParams = 1 + // Use of real-time information about the context in which the ad will be + // shown, to show the ad, including information about the content and the + // device, such as: device type and capabilities, user agent, URL, IP + // address, non-precise geolocation data. Additionally, use of basic + // cross-context information not based on user behavior or user + // characteristics, for uses such as frequency capping, sequencing, brand + // safety, anti-fraud. + Transparency_BASIC_ADVERTISING Transparency_DsaParams = 2 + // The precise real-time geolocation of the user, i.e. GPS coordinates + // within 500 meter radius precision. + Transparency_PRECISE_GEOLOCATION Transparency_DsaParams = 3 +) + +// Enum value maps for Transparency_DsaParams. +var ( + Transparency_DsaParams_name = map[int32]string{ + 0: "DsaParams_UNKNOWN", + 1: "PROFILING", + 2: "BASIC_ADVERTISING", + 3: "PRECISE_GEOLOCATION", + } + Transparency_DsaParams_value = map[string]int32{ + "DsaParams_UNKNOWN": 0, + "PROFILING": 1, + "BASIC_ADVERTISING": 2, + "PRECISE_GEOLOCATION": 3, + } +) + +func (x Transparency_DsaParams) Enum() *Transparency_DsaParams { + p := new(Transparency_DsaParams) + *p = x + return p +} + +func (x Transparency_DsaParams) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Transparency_DsaParams) Descriptor() protoreflect.EnumDescriptor { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[7].Descriptor() +} + +func (Transparency_DsaParams) Type() protoreflect.EnumType { + return &file_com_iabtechlab_openrtb_v2_openrtb_proto_enumTypes[7] +} + +func (x Transparency_DsaParams) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Transparency_DsaParams.Descriptor instead. +func (Transparency_DsaParams) EnumDescriptor() ([]byte, []int) { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_rawDescGZIP(), []int{2, 0} +} + +// OpenRTB 2.0: The top-level bid request object contains a globally unique bid +// request or auction ID. This id attribute is required as is at least one +// impression object (Section 3.2.2). Other attributes in this top-level object +// establish rules and restrictions that apply to all impressions being offered. +// +// There are also several subordinate objects that provide detailed data to +// potential buyers. Among these are the Site and App objects, which describe +// the type of published media in which the impression(s) appear. These objects +// are highly recommended, but only one applies to a given bid request depending +// on whether the media is browser-based web content or a non-browser +// application, respectively. +type BidRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // ID of the bid request, assigned by the exchange, and unique for the + // exchange's subsequent tracking of the responses. The exchange may use + // different values for different recipients. + // REQUIRED by the OpenRTB specification. + Id *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + // Array of Imp objects (Section 3.2.4) representing the impressions offered. + // At least 1 Imp object is required. + Imp []*BidRequest_Imp `protobuf:"bytes,2,rep,name=imp" json:"imp,omitempty"` + // Types that are valid to be assigned to DistributionchannelOneof: + // + // *BidRequest_Site_ + // *BidRequest_App_ + // *BidRequest_Dooh_ + DistributionchannelOneof isBidRequest_DistributionchannelOneof `protobuf_oneof:"distributionchannel_oneof"` + // Details via a Device object (Section 3.2.18) about the user's device to + // which the impression will be delivered. + Device *BidRequest_Device `protobuf:"bytes,5,opt,name=device" json:"device,omitempty"` + // Details via a User object (Section 3.2.20) about the human user of the + // device; the advertising audience. + User *BidRequest_User `protobuf:"bytes,6,opt,name=user" json:"user,omitempty"` + // Indicator of test mode in which auctions are not billable, where 0 = live + // mode, 1 = test mode. + Test *bool `protobuf:"varint,15,opt,name=test,def=0" json:"test,omitempty"` + // Auction type, where 1 = First Price, 2 = Second Price Plus. + // Exchange-specific auction types can be defined using values 500 and + // greater. + // Refer to enum com.iabtechlab.openrtb.v3.AuctionType for values. + At *int32 `protobuf:"varint,7,opt,name=at,def=2" json:"at,omitempty"` + // Maximum time in milliseconds the exchange allows for bids to be received + // including Internet latency to avoid timeout. This value supersedes any a + // priori guidance from the exchange. + Tmax *int32 `protobuf:"varint,8,opt,name=tmax" json:"tmax,omitempty"` + // Allowed list of buyer seats (e.g., advertisers, agencies) allowed to bid on + // this impression. IDs of seats and knowledge of the buyer's customers to + // which they refer must be coordinated between bidders and the exchange a + // priori. At most, only one of wseat and bseat should be used in the same + // request. Omission of both implies no seat restrictions. + Wseat []string `protobuf:"bytes,9,rep,name=wseat" json:"wseat,omitempty"` + // Block list of buyer seats (e.g., advertisers, agencies) restricted from + // bidding on this impression. IDs of seats and knowledge of the buyer's + // customers to which they refer must be coordinated between bidders and the + // exchange a priori. At most, only one of wseat and bseat should be used in + // the same request. Omission of both implies no seat restrictions. + Bseat []string `protobuf:"bytes,17,rep,name=bseat" json:"bseat,omitempty"` + // Flag to indicate if Exchange can verify that the impressions offered + // represent all of the impressions available in context (e.g., all on the web + // page, all video spots such as pre/mid/post roll) to support road-blocking. + // 0 = no or unknown, 1 = yes, the impressions offered represent all that are + // available. + Allimps *bool `protobuf:"varint,10,opt,name=allimps,def=0" json:"allimps,omitempty"` + // Array of allowed currencies for bids on this bid request using ISO-4217 + // alpha codes. Recommended only if the exchange accepts multiple currencies. + Cur []string `protobuf:"bytes,11,rep,name=cur" json:"cur,omitempty"` + // Allowed list of languages for creatives using ISO-639-1-alpha-2. Omission + // implies no specific restrictions, but buyers would be advised to consider + // language attribute in the Device and/or Content objects if available. Only + // one of wlang or wlangb should be present. + Wlang []string `protobuf:"bytes,18,rep,name=wlang" json:"wlang,omitempty"` + // Allowed list of languages for creatives using IETF BCP 47I. Omission + // implies no specific restrictions, but buyers would be advised to consider + // language attribute in the Device and/or Content objects if available. Only + // one of wlang or wlangb should be present. + Wlangb []string `protobuf:"bytes,20,rep,name=wlangb" json:"wlangb,omitempty"` + // Allowed advertiser categories using the specified category taxonomy. The + // taxonomy to be used is defined by the cattax field. If no cattax field is + // supplied IAB Content Taxonomy 1.0 is assumed. Only one of acat or bcat + // should be present. + Acat []string `protobuf:"bytes,23,rep,name=acat" json:"acat,omitempty"` + // Blocked advertiser categories using the IAB content categories. The + // taxonomy to be used is defined by the cattax field. If no cattax field is + // supplied IAB Content Taxonomy 1.0 is assumed. Only one of acat or bcat + // should be present. + Bcat []string `protobuf:"bytes,12,rep,name=bcat" json:"bcat,omitempty"` + // The taxonomy in use for bcat. + // Refer to enum com.iabtechlab.adcom.v1.enums.CategoryTaxonomy for values. + Cattax *int32 `protobuf:"varint,21,opt,name=cattax,def=1" json:"cattax,omitempty"` + // Block list of advertisers by their domains (e.g., "ford.com"). + Badv []string `protobuf:"bytes,13,rep,name=badv" json:"badv,omitempty"` + // Block list of applications by their app store IDs. See OTT/CTV Store + // Assigned App Identification Guidelines for more details about expected + // strings for CTV app stores. For mobile apps in Google Play Store, these + // should be bundle or package names (e.g., com.foo.mygame). For apps in Apple + // App Store, these should be a numeric ID. + Bapp []string `protobuf:"bytes,16,rep,name=bapp" json:"bapp,omitempty"` + // A Source object (Section 3.2.2) that provides data about the inventory + // source and which entity makes the final decision. + Source *BidRequest_Source `protobuf:"bytes,19,opt,name=source" json:"source,omitempty"` + // A Regs object (Section 3.2.16) that specifies any industry, legal, or + // governmental regulations in force for this request. + Regs *BidRequest_Regs `protobuf:"bytes,14,opt,name=regs" json:"regs,omitempty"` + // Placeholder for exchange-specific extensions to OpenRTB. + Ext *BidRequest_Ext `protobuf:"bytes,99,opt,name=ext" json:"ext,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +// Default values for BidRequest fields. +const ( + Default_BidRequest_Test = bool(false) + Default_BidRequest_At = int32(2) + Default_BidRequest_Allimps = bool(false) + Default_BidRequest_Cattax = int32(1) +) + +func (x *BidRequest) Reset() { + *x = BidRequest{} + mi := &file_com_iabtechlab_openrtb_v2_openrtb_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BidRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BidRequest) ProtoMessage() {} + +func (x *BidRequest) ProtoReflect() protoreflect.Message { + mi := &file_com_iabtechlab_openrtb_v2_openrtb_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BidRequest.ProtoReflect.Descriptor instead. +func (*BidRequest) Descriptor() ([]byte, []int) { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_rawDescGZIP(), []int{0} +} + +func (x *BidRequest) GetId() string { + if x != nil && x.Id != nil { + return *x.Id + } + return "" +} + +func (x *BidRequest) GetImp() []*BidRequest_Imp { + if x != nil { + return x.Imp + } + return nil +} + +func (x *BidRequest) GetDistributionchannelOneof() isBidRequest_DistributionchannelOneof { + if x != nil { + return x.DistributionchannelOneof + } + return nil +} + +func (x *BidRequest) GetSite() *BidRequest_Site { + if x != nil { + if x, ok := x.DistributionchannelOneof.(*BidRequest_Site_); ok { + return x.Site + } + } + return nil +} + +func (x *BidRequest) GetApp() *BidRequest_App { + if x != nil { + if x, ok := x.DistributionchannelOneof.(*BidRequest_App_); ok { + return x.App + } + } + return nil +} + +func (x *BidRequest) GetDooh() *BidRequest_Dooh { + if x != nil { + if x, ok := x.DistributionchannelOneof.(*BidRequest_Dooh_); ok { + return x.Dooh + } + } + return nil +} + +func (x *BidRequest) GetDevice() *BidRequest_Device { + if x != nil { + return x.Device + } + return nil +} + +func (x *BidRequest) GetUser() *BidRequest_User { + if x != nil { + return x.User + } + return nil +} + +func (x *BidRequest) GetTest() bool { + if x != nil && x.Test != nil { + return *x.Test + } + return Default_BidRequest_Test +} + +func (x *BidRequest) GetAt() int32 { + if x != nil && x.At != nil { + return *x.At + } + return Default_BidRequest_At +} + +func (x *BidRequest) GetTmax() int32 { + if x != nil && x.Tmax != nil { + return *x.Tmax + } + return 0 +} + +func (x *BidRequest) GetWseat() []string { + if x != nil { + return x.Wseat + } + return nil +} + +func (x *BidRequest) GetBseat() []string { + if x != nil { + return x.Bseat + } + return nil +} + +func (x *BidRequest) GetAllimps() bool { + if x != nil && x.Allimps != nil { + return *x.Allimps + } + return Default_BidRequest_Allimps +} + +func (x *BidRequest) GetCur() []string { + if x != nil { + return x.Cur + } + return nil +} + +func (x *BidRequest) GetWlang() []string { + if x != nil { + return x.Wlang + } + return nil +} + +func (x *BidRequest) GetWlangb() []string { + if x != nil { + return x.Wlangb + } + return nil +} + +func (x *BidRequest) GetAcat() []string { + if x != nil { + return x.Acat + } + return nil +} + +func (x *BidRequest) GetBcat() []string { + if x != nil { + return x.Bcat + } + return nil +} + +func (x *BidRequest) GetCattax() int32 { + if x != nil && x.Cattax != nil { + return *x.Cattax + } + return Default_BidRequest_Cattax +} + +func (x *BidRequest) GetBadv() []string { + if x != nil { + return x.Badv + } + return nil +} + +func (x *BidRequest) GetBapp() []string { + if x != nil { + return x.Bapp + } + return nil +} + +func (x *BidRequest) GetSource() *BidRequest_Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *BidRequest) GetRegs() *BidRequest_Regs { + if x != nil { + return x.Regs + } + return nil +} + +func (x *BidRequest) GetExt() *BidRequest_Ext { + if x != nil { + return x.Ext + } + return nil +} + +type isBidRequest_DistributionchannelOneof interface { + isBidRequest_DistributionchannelOneof() +} + +type BidRequest_Site_ struct { + // Details via a Site object (Section 3.2.13) about the publisher's website. + // Only applicable and recommended for websites. + Site *BidRequest_Site `protobuf:"bytes,3,opt,name=site,oneof"` +} + +type BidRequest_App_ struct { + // Details via an App object (Section 3.2.14) about the publisher's app + // (non-browser applications). Only applicable and recommended for apps. + App *BidRequest_App `protobuf:"bytes,4,opt,name=app,oneof"` +} + +type BidRequest_Dooh_ struct { + // This object should be included if the ad supported content is a Digital + // Out-Of-Home screen. A bid request with a DOOH object must not contain a + // site or app object. + Dooh *BidRequest_Dooh `protobuf:"bytes,22,opt,name=dooh,oneof"` +} + +func (*BidRequest_Site_) isBidRequest_DistributionchannelOneof() {} + +func (*BidRequest_App_) isBidRequest_DistributionchannelOneof() {} + +func (*BidRequest_Dooh_) isBidRequest_DistributionchannelOneof() {} + +// This object is the top-level bid response object (i.e., the unnamed outer +// JSON object). The id attribute reflects the bid request ID for logging +// purposes. Similarly, bidid is an optional response tracking ID for bidders. +// If specified, it can be included in the subsequent win notice call if the +// bidder wins. At least one seatbid object is required, which contains at least +// one bid for an impression. Other attributes are optional. +// +// To express a "no-bid", the options are to return an empty response with HTTP +// 204. Alternately if the bidder wishes to convey to the exchange a reason for +// not bidding, just a BidResponse object is returned with a reason code in the +// nbr attribute. +type BidResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // ID of the bid request to which this is a response. + // REQUIRED by the OpenRTB specification. + Id *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` + // Array of seatbid objects; 1+ required if a bid is to be made. + Seatbid []*BidResponse_SeatBid `protobuf:"bytes,2,rep,name=seatbid" json:"seatbid,omitempty"` + // Bidder generated response ID to assist with logging/tracking. + Bidid *string `protobuf:"bytes,3,opt,name=bidid" json:"bidid,omitempty"` + // Bid currency using ISO-4217 alpha codes. + Cur *string `protobuf:"bytes,4,opt,name=cur" json:"cur,omitempty"` + // Optional feature to allow a bidder to set data in the exchange's cookie. + // The string must be in base85 cookie safe characters and be in any format. + // Proper JSON encoding must be used to include "escaped" quotation marks. + Customdata *string `protobuf:"bytes,5,opt,name=customdata" json:"customdata,omitempty"` + // Reason for not bidding. + // Refer to enum com.iabtechlab.openrtb.v3.NoBidReason for values. + Nbr *int32 `protobuf:"varint,6,opt,name=nbr" json:"nbr,omitempty"` + // Placeholder for exchange-specific extensions to OpenRTB. + Ext *BidResponse_Ext `protobuf:"bytes,99,opt,name=ext" json:"ext,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *BidResponse) Reset() { + *x = BidResponse{} + mi := &file_com_iabtechlab_openrtb_v2_openrtb_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BidResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BidResponse) ProtoMessage() {} + +func (x *BidResponse) ProtoReflect() protoreflect.Message { + mi := &file_com_iabtechlab_openrtb_v2_openrtb_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BidResponse.ProtoReflect.Descriptor instead. +func (*BidResponse) Descriptor() ([]byte, []int) { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_rawDescGZIP(), []int{1} +} + +func (x *BidResponse) GetId() string { + if x != nil && x.Id != nil { + return *x.Id + } + return "" +} + +func (x *BidResponse) GetSeatbid() []*BidResponse_SeatBid { + if x != nil { + return x.Seatbid + } + return nil +} + +func (x *BidResponse) GetBidid() string { + if x != nil && x.Bidid != nil { + return *x.Bidid + } + return "" +} + +func (x *BidResponse) GetCur() string { + if x != nil && x.Cur != nil { + return *x.Cur + } + return "" +} + +func (x *BidResponse) GetCustomdata() string { + if x != nil && x.Customdata != nil { + return *x.Customdata + } + return "" +} + +func (x *BidResponse) GetNbr() int32 { + if x != nil && x.Nbr != nil { + return *x.Nbr + } + return 0 +} + +func (x *BidResponse) GetExt() *BidResponse_Ext { + if x != nil { + return x.Ext + } + return nil +} + +type Transparency struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Domain of the entity that applied user parameters. + Domain *string `protobuf:"bytes,1,opt,name=domain" json:"domain,omitempty"` + Dsaparams []int32 `protobuf:"varint,2,rep,packed,name=dsaparams" json:"dsaparams,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *Transparency) Reset() { + *x = Transparency{} + mi := &file_com_iabtechlab_openrtb_v2_openrtb_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Transparency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transparency) ProtoMessage() {} + +func (x *Transparency) ProtoReflect() protoreflect.Message { + mi := &file_com_iabtechlab_openrtb_v2_openrtb_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Transparency.ProtoReflect.Descriptor instead. +func (*Transparency) Descriptor() ([]byte, []int) { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_rawDescGZIP(), []int{2} +} + +func (x *Transparency) GetDomain() string { + if x != nil && x.Domain != nil { + return *x.Domain + } + return "" +} + +func (x *Transparency) GetDsaparams() []int32 { + if x != nil { + return x.Dsaparams + } + return nil +} + +// The Native Object defines the native advertising opportunity available for +// bid via this bid request. It must be included directly in the impression +// object if the impression offered for auction is a native ad format. +// +// Note: Prior to VERSION 1.1, the specification could be interpreted as +// requiring the native request to have a root node with a single field "native" +// that would contain the NativeRequest as its value. In 1.2 the NativeRequest +// Object specified here is now the root object. +type NativeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Version of the Native Markup version in use. + Ver *string `protobuf:"bytes,1,opt,name=ver" json:"ver,omitempty"` + // The Layout ID of the native ad unit. + // Refer to enum LayoutId for values. + // RECOMMENDED by OpenRTB Native 1.0; optional in 1.1, DEPRECATED in 1.2. + Layout *int32 `protobuf:"varint,2,opt,name=layout" json:"layout,omitempty"` + // The Ad unit ID of the native ad unit. This corresponds to one of IAB Core-6 + // native ad units. + // Refer to enum AdUnitId for values. + // RECOMMENDED by OpenRTB Native 1.0; optional in 1.1, DEPRECATED in 1.2. + Adunit *int32 `protobuf:"varint,3,opt,name=adunit" json:"adunit,omitempty"` + // The context in which the ad appears. + // Refer to enum ContextType for values. + // RECOMMENDED in 1.2. + Context *int32 `protobuf:"varint,7,opt,name=context" json:"context,omitempty"` + // A more detailed context in which the ad appears. + // Refer to enum com.iabtechlab.adcom.v1.enums.DisplayContextType for values. + Contextsubtype *int32 `protobuf:"varint,8,opt,name=contextsubtype" json:"contextsubtype,omitempty"` + // The design/format/layout of the ad unit being offered. + // Refer to enum com.iabtechlab.adcom.v1.enums.DisplayPlacementType for + // values. + // RECOMMENDED by the OpenRTB Native specification. + Plcmttype *int32 `protobuf:"varint,9,opt,name=plcmttype" json:"plcmttype,omitempty"` + // The number of identical placements in this Layout. + Plcmtcnt *int32 `protobuf:"varint,4,opt,name=plcmtcnt,def=1" json:"plcmtcnt,omitempty"` + // 0 for the first ad, 1 for the second ad, and so on. Note this would + // generally NOT be used in combination with plcmtcnt - either you are + // auctioning multiple identical placements (in which case plcmtcnt>1, seq=0) + // or you are holding separate auctions for distinct items in the feed (in + // which case plcmtcnt=1, seq>=1). + Seq *int32 `protobuf:"varint,5,opt,name=seq,def=0" json:"seq,omitempty"` + // Any bid must comply with the array of elements expressed by the Exchange. + // REQUIRED by the OpenRTB Native specification: at least 1 element. + Assets []*NativeRequest_Asset `protobuf:"bytes,6,rep,name=assets" json:"assets,omitempty"` + // Whether the supply source / impression supports returning an assetsurl + // instead of an asset object. 0 or the absence of the field indicates no such + // support. + Aurlsupport *bool `protobuf:"varint,11,opt,name=aurlsupport" json:"aurlsupport,omitempty"` + // Whether the supply source / impression supports returning a DCO URL instead + // of an asset object. 0 or the absence of the field indicates no such + // support. Beta feature. + Durlsupport *bool `protobuf:"varint,12,opt,name=durlsupport" json:"durlsupport,omitempty"` + // Specifies what type of event tracking is supported. + Eventtrackers []*NativeRequest_EventTrackers `protobuf:"bytes,13,rep,name=eventtrackers" json:"eventtrackers,omitempty"` + // Set to 1 when the native ad supports buyer-specific privacy notice. Set to + // 0 (or field absent) when the native ad doesn't support custom privacy links + // or if support is unknown. + // RECOMMENDED and implemented in 1.2 + Privacy *bool `protobuf:"varint,14,opt,name=privacy" json:"privacy,omitempty"` + // Placeholder for exchange-specific extensions to OpenRTB. + Ext *NativeRequest_Ext `protobuf:"bytes,99,opt,name=ext" json:"ext,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +// Default values for NativeRequest fields. +const ( + Default_NativeRequest_Plcmtcnt = int32(1) + Default_NativeRequest_Seq = int32(0) +) + +func (x *NativeRequest) Reset() { + *x = NativeRequest{} + mi := &file_com_iabtechlab_openrtb_v2_openrtb_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NativeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NativeRequest) ProtoMessage() {} + +func (x *NativeRequest) ProtoReflect() protoreflect.Message { + mi := &file_com_iabtechlab_openrtb_v2_openrtb_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NativeRequest.ProtoReflect.Descriptor instead. +func (*NativeRequest) Descriptor() ([]byte, []int) { + return file_com_iabtechlab_openrtb_v2_openrtb_proto_rawDescGZIP(), []int{3} +} + +func (x *NativeRequest) GetVer() string { + if x != nil && x.Ver != nil { + return *x.Ver + } + return "" +} + +func (x *NativeRequest) GetLayout() int32 { + if x != nil && x.Layout != nil { + return *x.Layout + } + return 0 +} + +func (x *NativeRequest) GetAdunit() int32 { + if x != nil && x.Adunit != nil { + return *x.Adunit + } + return 0 +} + +func (x *NativeRequest) GetContext() int32 { + if x != nil && x.Context != nil { + return *x.Context + } + return 0 +} + +func (x *NativeRequest) GetContextsubtype() int32 { + if x != nil && x.Contextsubtype != nil { + return *x.Contextsubtype + } + return 0 +} + +func (x *NativeRequest) GetPlcmttype() int32 { + if x != nil && x.Plcmttype != nil { + return *x.Plcmttype + } + return 0 +} + +func (x *NativeRequest) GetPlcmtcnt() int32 { + if x != nil && x.Plcmtcnt != nil { + return *x.Plcmtcnt + } + return Default_NativeRequest_Plcmtcnt +} + +func (x *NativeRequest) GetSeq() int32 { + if x != nil && x.Seq != nil { + return *x.Seq + } + return Default_NativeRequest_Seq +} + +func (x *NativeRequest) GetAssets() []*NativeRequest_Asset { + if x != nil { + return x.Assets + } + return nil +} + +func (x *NativeRequest) GetAurlsupport() bool { + if x != nil && x.Aurlsupport != nil { + return *x.Aurlsupport + } + return false +} + +func (x *NativeRequest) GetDurlsupport() bool { + if x != nil && x.Durlsupport != nil { + return *x.Durlsupport + } + return false +} + +func (x *NativeRequest) GetEventtrackers() []*NativeRequest_EventTrackers { + if x != nil { + return x.Eventtrackers + } + return nil +} + +func (x *NativeRequest) GetPrivacy() bool { + if x != nil && x.Privacy != nil { + return *x.Privacy + } + return false +} + +func (x *NativeRequest) GetExt() *NativeRequest_Ext { + if x != nil { + return x.Ext + } + return nil +} + +// The native response object is the top level JSON object which identifies an +// native response. Note: Prior to VERSION 1.1, the native response's root node +// was an object with a single field "native" that would contain the object +// above as its value. In 1.2 the NativeResponse Object specified here is now +// the root object. +type NativeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Version of the Native Markup version in use. + // RECOMMENDED in 1.2 + Ver *string `protobuf:"bytes,1,opt,name=ver" json:"ver,omitempty"` + // List of native ad's assets. + // RECOMMENDED in 1.0, 1.1, or in 1.2 as a fallback if assetsurl is provided. + // REQUIRED in 1.2, if not assetsurl is provided. + Assets []*NativeResponse_Asset `protobuf:"bytes,2,rep,name=assets" json:"assets,omitempty"` + // URL of alternate source for the assets object. The expected response is a + // JSON object mirroring the asset object in the bid response, subject to + // certain requirements as specified in the individual objects. Where present, + // overrides the assets object in the response. + Assetsurl *string `protobuf:"bytes,6,opt,name=assetsurl" json:"assetsurl,omitempty"` + // URL where a dynamic creative specification may be found for populating this + // ad, per the Dynamic Content Ads Specification. Note this is a beta option + // as the interpretation of the Dynamic Content Ads Specification and how to + // assign those elementes into a native ad is outside the scope of this spec + // and must be agreed offline between parties or as may be specified in a + // future revision of the Dynamic Content Ads spec. Where present, overrides + // the assets object in the response. + Dcourl *string `protobuf:"bytes,7,opt,name=dcourl" json:"dcourl,omitempty"` + // Destination Link. This is default link object for the ad. Individual assets + // can also have a link object which applies if the asset is activated + // (clicked). If the asset doesn't have a link object, the parent link object + // applies. See ResponseLink definition. + // REQUIRED by the OpenRTB Native specification. + Link *NativeResponse_Link `protobuf:"bytes,3,opt,name=link" json:"link,omitempty"` + // Array of impression tracking URLs, expected to return a 1x1 image or 204 + // response - typically only passed when using 3rd party trackers. To be + // deprecated in 1.2 - Replaced with EventTracker. + Imptrackers []string `protobuf:"bytes,4,rep,name=imptrackers" json:"imptrackers,omitempty"` + // Optional javascript impression tracker. Contains