omnata-plugin-runtime 0.8.2a203__tar.gz → 0.8.3a207__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: omnata-plugin-runtime
3
- Version: 0.8.2a203
3
+ Version: 0.8.3a207
4
4
  Summary: Classes and common runtime components for building and running Omnata Plugins
5
5
  Author: James Weakley
6
6
  Author-email: james.weakley@omnata.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "omnata-plugin-runtime"
3
- version = "0.8.2-a203"
3
+ version = "0.8.3-a207"
4
4
  description = "Classes and common runtime components for building and running Omnata Plugins"
5
5
  authors = ["James Weakley <james.weakley@omnata.com>"]
6
6
  readme = "README.md"
@@ -704,6 +704,7 @@ class OutboundSyncConfigurationParameters(SyncConfigurationParameters):
704
704
  """
705
705
 
706
706
  connection_method: str
707
+ target_type: Optional[str] = Field(default=None, description="The label of the OutboundTargetType selected by the user")
707
708
  connection_parameters: Optional[Dict[str, StoredConfigurationValue]] = Field(default=None)
708
709
  connection_secrets: Optional[Dict[str, StoredConfigurationValue]] = Field(default=None)
709
710
  sync_parameters: Optional[Dict[str, StoredConfigurationValue]] = Field(default=None)
@@ -111,11 +111,56 @@ class PluginManifest(SubscriptableBaseModel):
111
111
  developer_name: str
112
112
  docs_url: str
113
113
  supports_inbound: bool
114
- supported_outbound_strategies: List[OutboundSyncStrategy]
114
+ supported_outbound_strategies: List[OutboundSyncStrategy] = Field(
115
+ title="A list of sync strategies that the plugin can support. If outbound_target_types are specified, theses strategies are allocated there. Otherwise, they apply globally"
116
+ )
115
117
  supported_connectivity_options: List[ConnectivityOption] = Field(
116
118
  default_factory=lambda: [ConnectivityOption.DIRECT]
117
119
  )
120
+ outbound_target_types: Optional[List[OutboundTargetType]] = Field(
121
+ default=None,
122
+ title="An optional list of target types that the plugin can support."
123
+ )
118
124
 
125
+ class OutboundTargetType(BaseModel):
126
+ """
127
+ Some products have APIs that can be grouped together in ways that support different strategies and may or may not support toggling.
128
+ The label should answer the question: "What would you like to sync to?"
129
+ Examples:
130
+ - A CRM system may have "Standard objects", "Custom objects" or "Events"
131
+ - A messaging platform may have "Channels", "Users" or "Messages"
132
+ - A marketing platform may have "Customer lists", "Campaigns" or "Automations"
133
+ - An Ad platform may have "Campaigns", "Ad groups" or "Ads"
134
+ The target type cannot be changed after the sync is created.
135
+ """
136
+ label: str
137
+ supported_strategies: List[str] = Field(
138
+ title="The names of the sync strategies supported by this target. Each one must match the name of a sync strategy declared in supported_outbound_strategies."
139
+ )
140
+ target_parameter: Optional[OutboundTargetParameter] = Field(
141
+ default=None,
142
+ title="""The sync configuration parameter that designates the target object, if applicable. For example, 'object_name' or 'channel_name'.
143
+ This will be used for two purposes:
144
+ 1. To show a more readable indication of what this sync is doing in the UI, e.g. Standard object: Account
145
+ 2. Designates this field as serving as a br toggle for testing in production.""")
146
+
147
+ class OutboundTargetParameter(BaseModel):
148
+ """
149
+ Accomodates testing outbound syncs in production by nominating a form field who's value stays in the branch.
150
+ The reason this information is set statically here instead of as a flag on the FormField, is so that the sync engine
151
+ can have this information readily available without calling the plugin.
152
+ """
153
+ field_name: str = Field(title="""The name of the form field that toggles the location, e.g. 'channel','customer_list'.
154
+ This must match a field which will be returned by the outbound_configuration_form for this target type.""")
155
+ is_branching_toggle: bool = Field(title="""Whether or not this field is a target toggle for branching.
156
+ If true, the value of this field will be used to determine the location of the sync in production.
157
+ For example, a messaging plugin could have a "channel" field to route messages to an alternate location.
158
+ Or, a marketing platform could have an alternate customer list name which is connected to test campaigns that don't actually send.
159
+
160
+ This should only be used in situations where all other sync parameters and field mappings can remain consistent between branches.""")
161
+ label: str = Field(title="""Used in the UI when describing the location., e.g. 'Channel','Customer List'.
162
+ It should completely describe the behaviour when used in a sentence like this:
163
+ 'Changes will be tested against a different <label> when running in a branch.'""")
119
164
 
120
165
  class SnowflakeFunctionParameter(BaseModel):
121
166
  """