/*
 * Copyright 2025 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/pubsub/v1/pubsub.proto

// Protobuf Java Version: 3.25.8
package com.google.pubsub.v1;

public interface JavaScriptUDFOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.pubsub.v1.JavaScriptUDF)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * Required. Name of the JavasScript function that should applied to Pub/Sub
   * messages.
   * </pre>
   *
   * <code>string function_name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
   *
   * @return The functionName.
   */
  java.lang.String getFunctionName();

  /**
   *
   *
   * <pre>
   * Required. Name of the JavasScript function that should applied to Pub/Sub
   * messages.
   * </pre>
   *
   * <code>string function_name = 1 [(.google.api.field_behavior) = REQUIRED];</code>
   *
   * @return The bytes for functionName.
   */
  com.google.protobuf.ByteString getFunctionNameBytes();

  /**
   *
   *
   * <pre>
   * Required. JavaScript code that contains a function `function_name` with the
   * below signature:
   *
   * ```
   *   /&#42;*
   *   * Transforms a Pub/Sub message.
   *
   *   * &#64;return {(Object&lt;string, (string | Object&lt;string, string&gt;)&gt;|null)} - To
   *   * filter a message, return `null`. To transform a message return a map
   *   * with the following keys:
   *   *   - (required) 'data' : {string}
   *   *   - (optional) 'attributes' : {Object&lt;string, string&gt;}
   *   * Returning empty `attributes` will remove all attributes from the
   *   * message.
   *   *
   *   * &#64;param  {(Object&lt;string, (string | Object&lt;string, string&gt;)&gt;} Pub/Sub
   *   * message. Keys:
   *   *   - (required) 'data' : {string}
   *   *   - (required) 'attributes' : {Object&lt;string, string&gt;}
   *   *
   *   * &#64;param  {Object&lt;string, any&gt;} metadata - Pub/Sub message metadata.
   *   * Keys:
   *   *   - (optional) 'message_id'  : {string}
   *   *   - (optional) 'publish_time': {string} YYYY-MM-DDTHH:MM:SSZ format
   *   *   - (optional) 'ordering_key': {string}
   *   *&#47;
   *
   *   function &lt;function_name&gt;(message, metadata) {
   *   }
   * ```
   * </pre>
   *
   * <code>string code = 2 [(.google.api.field_behavior) = REQUIRED];</code>
   *
   * @return The code.
   */
  java.lang.String getCode();

  /**
   *
   *
   * <pre>
   * Required. JavaScript code that contains a function `function_name` with the
   * below signature:
   *
   * ```
   *   /&#42;*
   *   * Transforms a Pub/Sub message.
   *
   *   * &#64;return {(Object&lt;string, (string | Object&lt;string, string&gt;)&gt;|null)} - To
   *   * filter a message, return `null`. To transform a message return a map
   *   * with the following keys:
   *   *   - (required) 'data' : {string}
   *   *   - (optional) 'attributes' : {Object&lt;string, string&gt;}
   *   * Returning empty `attributes` will remove all attributes from the
   *   * message.
   *   *
   *   * &#64;param  {(Object&lt;string, (string | Object&lt;string, string&gt;)&gt;} Pub/Sub
   *   * message. Keys:
   *   *   - (required) 'data' : {string}
   *   *   - (required) 'attributes' : {Object&lt;string, string&gt;}
   *   *
   *   * &#64;param  {Object&lt;string, any&gt;} metadata - Pub/Sub message metadata.
   *   * Keys:
   *   *   - (optional) 'message_id'  : {string}
   *   *   - (optional) 'publish_time': {string} YYYY-MM-DDTHH:MM:SSZ format
   *   *   - (optional) 'ordering_key': {string}
   *   *&#47;
   *
   *   function &lt;function_name&gt;(message, metadata) {
   *   }
   * ```
   * </pre>
   *
   * <code>string code = 2 [(.google.api.field_behavior) = REQUIRED];</code>
   *
   * @return The bytes for code.
   */
  com.google.protobuf.ByteString getCodeBytes();
}
