OverviewCopy link to clipboard
This page explains features, concepts, and considerations to use when building your connected system plug-in.
BrandingCopy link to clipboard
Good logos and descriptions will help users find and use your plug-in.
- Add logos to your Connected System to show custom branding
- Add a description that tells us how to use your system. Why would I use it? What is exciting about it?
- For example, our Google Cloud Natural Language Connected System has the following description: Easily connect to Google Cloud Natural Language machine learning models. Extract structure and information from text, including both sentiment and key subjects such as people, places, and events. Integrations using this connected system will allow you to provide a text value and select which types of information to analyze.
- Check out Appian's Connected Systems for more examples.
AuthenticationCopy link to clipboard
When authentication is required to send and receive information, fields can be configured to securely store credentials. Appian supports the use of the following authentication types for API requests:
- System username/password
- Basic authentication
- NTLM
- Digest
- Kerberos
- SOAP request body
- Prebuilt OAuth 2.0 (Authorization Code grant) - storage and retrieval of refresh and access tokens
- Custom - you can configure many different kinds of auth. Below are a few examples
- API Key
- AWS Authentication
Known unsupported authentication mechanismsCopy link to clipboard
Currently, you cannot build a plug-in that authenticates using:
- Anything Involving Certificate-Based Signing
- OAuth 2.0 (JWT Bearer Token)
- Per use credentials for anything other than OAuth 2.0 (for example, per-user creds for Basic auth)
- Secure storage of Short-lived token authentication
- OAuth 2.0 (Client Credentials)
- Workaround: You can configure your Connected System Template to request a token on each request. Be sure to review the policies and rate limits for the service you are connecting to.
File transferCopy link to clipboard
- Sending files supported: How to send files
System wide configurationsCopy link to clipboard
Proxy supportCopy link to clipboard
If an HTTP proxy has been enabled by an Appian administrator, you can build the plug-in to use the provided configuration data when making HTTP requests.
Note: Connected system plug-ins won't support using the configured proxy unless you specifically develop them to do so. For an example, see Configuring HttpClient when a proxy is enabled.
SSLCopy link to clipboard
Plug-ins can use trusted server certificates uploaded in the admin console.
Give feedback on errorsCopy link to clipboard
- Validating credentials and connection information
- Validating a single input (for example, length of a text input)
- Indicating a failed execution
DiagnosticsCopy link to clipboard
TimingCopy link to clipboard
Import customizable fieldsCopy link to clipboard
Use sensitive values on connected systemsCopy link to clipboard
Connected system plug-ins restrictionsCopy link to clipboard
Connected systemsCopy link to clipboard
- Must not implement both
TestableConnectedSystemTemplate
andOAuthConnectedSystemTemplate
. - Fields must have a
RefreshPolicy
ofNEVER
. - Fields must not be expressionable.
- Fields must not be
LIST
type. - Fields must not have deeply nested Local Types.
- Don’t call setErrors(), as errors are ignored.
IntegrationsCopy link to clipboard
isImportCustomizable
should not be set to true.- Fields must not be encrypted.
- Local Types must be expressionable.
- ` @TemplateId.majorVersion` annotation is ignored.
ChoicesCopy link to clipboard
- Each
Choice
must have aname
andvalue
.
PropertyDescriptorsCopy link to clipboard
- Fields that are
DisplayHint.EXPRESSION
must be expressionable. - Required fields must not be hidden.
EncryptedTextPropertyDescriptorsCopy link to clipboard
isImportCustomizable
should be set to true.
DocumentPropertyDescriptorsCopy link to clipboard
isImportCustomizable
should not be set to true.
ListTypePropertyDescriptorsCopy link to clipboard
- Must be expressionable.
- Must not have a placeholder.
- ` displayHint()
must be set to
DisplayHint.Expression`.
LocalTypePropertyDescriptorCopy link to clipboard
- Must not have a null type
isImportCustomizable
should not be set to true.