blob: 09ff9cfc8ebc96a00859ffc01214dbe6a6cd57ff [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
syntax = "proto3";
package proto;
option java_package = "org.apache.pulsar.functions.proto";
option java_outer_classname = "Function";
enum ProcessingGuarantees {
ATLEAST_ONCE = 0; // [default value]
ATMOST_ONCE = 1;
EFFECTIVELY_ONCE = 2;
MANUAL = 3;
}
enum SubscriptionType {
SHARED = 0;
FAILOVER = 1;
KEY_SHARED = 2;
}
enum SubscriptionPosition {
LATEST = 0;
EARLIEST = 1;
}
message Resources {
double cpu = 1;
int64 ram = 2;
int64 disk = 3;
}
message RetryDetails {
int32 maxMessageRetries = 1;
string deadLetterTopic = 2;
}
message FunctionDetails {
enum Runtime {
JAVA = 0;
PYTHON = 1;
GO = 3;
}
enum ComponentType {
UNKNOWN = 0;
FUNCTION = 1;
SOURCE = 2;
SINK = 3;
}
string tenant = 1;
string namespace = 2;
string name = 3;
string className = 4;
string logTopic = 5;
ProcessingGuarantees processingGuarantees = 6;
string userConfig = 7;
string secretsMap = 16;
Runtime runtime = 8;
// Deprecated since, see https://github.com/apache/pulsar/issues/15560
bool autoAck = 9 [deprecated = true];
int32 parallelism = 10;
SourceSpec source = 11;
SinkSpec sink = 12;
Resources resources = 13;
string packageUrl = 14; //present only if function submitted with package-url
RetryDetails retryDetails = 15;
string runtimeFlags = 17;
ComponentType componentType = 18;
string customRuntimeOptions = 19;
/* If specified, this will refer to an archive that is
* already present in the server */
string builtin = 20;
bool retainOrdering = 21;
bool retainKeyOrdering = 22;
SubscriptionPosition subscriptionPosition = 23;
}
message ConsumerSpec {
string schemaType = 1;
string serdeClassName = 2;
bool isRegexPattern = 3;
message ReceiverQueueSize {
int32 value = 1;
}
ReceiverQueueSize receiverQueueSize = 4;
map<string, string> schemaProperties = 5;
map<string, string> consumerProperties = 6;
CryptoSpec cryptoSpec = 7;
bool poolMessages = 8;
}
message ProducerSpec {
int32 maxPendingMessages = 1;
int32 maxPendingMessagesAcrossPartitions = 2;
bool useThreadLocalProducers = 3;
CryptoSpec cryptoSpec = 4;
string batchBuilder = 5;
}
message CryptoSpec {
enum FailureAction {
FAIL = 0;
DISCARD = 1;
CONSUME = 2;
SEND = 10;
}
string cryptoKeyReaderClassName = 1;
string cryptoKeyReaderConfig = 2;
// key names used by producer to encrypt data
repeated string producerEncryptionKeyName = 3;
// define the action if producer fail to encrypt data
// one of FAIL, SEND
FailureAction producerCryptoFailureAction = 4;
// define the action if consumer fail to decrypt data
// one of FAIL, DISCARD, CONSUME
FailureAction consumerCryptoFailureAction = 5;
}
message SourceSpec {
string className = 1;
// map in json format
string configs = 2;
string typeClassName = 5;
// configs used only when source feeds into functions
SubscriptionType subscriptionType = 3;
// @deprecated -- use topicsToSchema
map<string, string> topicsToSerDeClassName = 4 [deprecated = true];
/**
*
*/
map<string, ConsumerSpec> inputSpecs = 10;
uint64 timeoutMs = 6;
string topicsPattern = 7 [deprecated = true];
/* If specified, this will refer to an archive that is
* already present in the server */
string builtin = 8;
string subscriptionName = 9;
bool cleanupSubscription = 11;
SubscriptionPosition subscriptionPosition = 12;
uint64 negativeAckRedeliveryDelayMs = 13;
}
message SinkSpec {
string className = 1;
// map in json format
string configs = 2;
string typeClassName = 5;
// configs used only when functions output to sink
string topic = 3;
ProducerSpec producerSpec = 11;
string serDeClassName = 4;
/* If specified, this will refer to an archive that is
* already present in the server */
string builtin = 6;
/**
* Builtin schema type or custom schema class name
*/
string schemaType = 7;
bool forwardSourceMessageProperty = 8;
map<string, string> schemaProperties = 9;
map<string, string> consumerProperties = 10;
}
message PackageLocationMetaData {
string packagePath = 1;
string originalFileName = 2;
}
enum FunctionState {
RUNNING = 0;
STOPPED = 1;
}
message FunctionMetaData {
FunctionDetails functionDetails = 1;
PackageLocationMetaData packageLocation = 2;
uint64 version = 3;
uint64 createTime = 4;
map<int32, FunctionState> instanceStates = 5;
FunctionAuthenticationSpec functionAuthSpec = 6;
}
message FunctionAuthenticationSpec {
/**
* function authentication related data that the function authentication provider
* needs to cache/distribute to all workers support function authentication.
* Depending on the function authentication provider implementation, this can be the actual auth credentials
* or a pointer to the auth credentials that this function should use
*/
bytes data = 1;
/**
* classname of the function auth provicer this data is relevant to
*/
string provider = 2;
}
message Instance {
FunctionMetaData functionMetaData = 1;
int32 instanceId = 2;
}
message Assignment {
Instance instance = 1;
string workerId = 2;
}