> Portal Navigation:
> 
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt

# Resource: Action Provider Service Plugin

# Type: Extension Config

# Link: https://dev.wix.com/docs/api-reference/business-management/automations/actions/action-provider-service-plugin/extension-config.md

## Description: The JSON object below defines the configuration for this service plugin extension. How you supply values depends on the framework you’re using:

+ **Self-hosted apps:** After adding a service plugin extension to your app in the app dashboard, provide configuration details in your extension's page. Learn more about how to add and configure a self-hosted service plugin extension with [REST](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/self-hosting/supported-extensions/backend-extensions/add-self-hosted-service-plugin-extensions-with-rest.md) or the [SDK](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/self-hosting/supported-extensions/backend-extensions/add-self-hosted-service-plugin-extensions-with-the-sdk.md).
+ **CLI apps:** When you [add a service plugin extension to your app with the Wix CLI](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/wix-cli/supported-extensions/backend-extensions/service-plugins/add-service-plugin-extensions-with-the-cli.md), the required configuration details are populated automatically. You can then customize them in your extension's [`plugin.json`](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/wix-cli/supported-extensions/backend-extensions/service-plugins/service-plugin-extension-files-and-code.md) file.


## Schema:

```json
 Type: Extension Config | type: ActionProviderSPIConfig
 Description: The JSON object below defines the configuration for this service plugin extension. How you supply values depends on the framework you’re using:

+ **Self-hosted apps:** After adding a service plugin extension to your app in the app dashboard, provide configuration details in your extension's page. Learn more about how to add and configure a self-hosted service plugin extension with [REST](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/self-hosting/supported-extensions/backend-extensions/add-self-hosted-service-plugin-extensions-with-rest.md) or the [SDK](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/self-hosting/supported-extensions/backend-extensions/add-self-hosted-service-plugin-extensions-with-the-sdk.md).
+ **CLI apps:** When you [add a service plugin extension to your app with the Wix CLI](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/wix-cli/supported-extensions/backend-extensions/service-plugins/add-service-plugin-extensions-with-the-cli.md), the required configuration details are populated automatically. You can then customize them in your extension's [`plugin.json`](https://dev.wix.com/docs/build-apps/develop-your-app/frameworks/wix-cli/supported-extensions/backend-extensions/service-plugins/service-plugin-extension-files-and-code.md) file.

       - name: baseUri  | type: string | description: URL to action provider service for this action
       - name: actionConfig  | type: ActionSPIConfig | description: Action service plugin configuration
           - name: actionKey  | type: string | description: Identifier for this action - human-readable action key - unique per app def ID
           - name: inputSchema  | type: Struct | description: The action expects the following input The schema is described according to the JSON Schema standard: https://json-schema.org/  Example - Add Label to Contact Action input schema: { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "title": "Add label to contact input schema", "description": "The schema of the JSON that is sent when invoking this add label to contact action", "default": {}, "examples": [ { "contactId": "a647eb32-c5f4-11ec-9d64-0242ac120002", "labelId": "1e8b5e5e-dba2-11ec-9d64-0242ac120002" } ], "required": [ "contactId", "labelId" ], "properties": { "contactId": { "$id": "#/properties/contactId", "type": "string", "format": "uuid", "title": "Contact Id", "description": "The ID of the contact to apply the label to", "default": "", "identityType": "contact" // can be contact/visitor/user, limited to 1 type per identity. }, "labelId": { "$id": "#/properties/labelId", "type": "string", "format": "uuid", "title": "Label Id", "description": "The ID of the label to apply", "default": "", } } }
               - name: fields  | type: object | description: 
           - name: outputSchema  | type: Struct | description: The output of the action, which will be added to the payload after execution. The schema is described according to the JSON Schema standard: https://json-schema.org/  Example - Output of create task action { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "title": "Create task action schema", "description": "The schema of the JSON that is sent when invoking this create task action", "default": {}, "examples": [ { "taskId": "a647eb32-c5f4-11ec-9d64-0242ac120002", } ], "required": [ "taskId" ], "properties": { "taskId": { "$id": "#/properties/taskId", "type": "string", "format": "uuid", "title": "Contact Id", "description": "The ID of the task created", "default": "", } } }
           - name: displayName  | type: string | description: Actions display name - human-readable field. Ex. - "Send SMS"
               - name: value  | type: string | description: 
           - name: description  | type: string | description: 
           - name: implementedMethods  | type: ImplementedMethods | description: Specifies which optional methods were implemented
               - name: validateConfiguration  | type: boolean | description: Implements ValidateConfiguration
               - name: duplicateInputMapping  | type: boolean | description: Implements DuplicateInputMapping
               - name: generateApplicationAutomationInputMapping  | type: boolean | description: Implements GenerateApplicationAutomationInputMapping
               - name: getQuotaInfo  | type: boolean | description: Implements GetQuotaInfo
               - name: onBeforeSave  | type: boolean | description: Implements OnBeforeSave
               - name: onReset  | type: boolean | description: Implements OnReset
               - name: generateActionInputMappingFromTemplate  | type: boolean | description: implements generateActionInputMappingFromTemplate
               - name: onRemove  | type: boolean | description: implements OnRemove
               - name: getDynamicInputSchema  | type: boolean | description: Implements GetDynamicInputSchema
               - name: mergeInputMappings  | type: boolean | description: Implements MergeInputMappings
               - name: getDynamicOutputSchema  | type: boolean | description: Implements GetDynamicOutputSchema
               - name: generateInputMappingFromIntent  | type: boolean | description: Implements GenerateInputMappingFromIntent
           - name: executionType  | type: string | description: Indicates whether we should wait for the action to complete before executing the next actions or finish and expect a callback in the `actionCompleted` method.
               enum: UNKNOWN_EXECUTION_TYPE, SYNC, ASYNC
           - name: interfaceConfiguration  | type: InterfaceConfiguration | description: Chosen interface for action.
               - name: type  | type: string | description: Type of chosen interface.
           - name: icon  | type: Image | description: Icon representing the action in the UI
               - name: id  | type: string | description: WixMedia image ID.
               - name: url  | type: string | description: Image URL.
               - name: height  | type: number | description: Original image height.
               - name: width  | type: number | description: Original image width.
               - name: altText  | type: string | description: Image alt text.
               - name: filename  | type: string | description: Image filename.
           - name: id  | type: string | description: action id
           - name: supportsSyncInvocation  | type: boolean | description: Whether this action supports synchronous invocation.

```