Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
After you finish developing your Microsoft Copilot Studio and Microsoft Power Platform custom connector or AI-enabled connector files, you need to prepare it for certification. As a verified or independent publisher, follow these steps to prepare it for certification and generate the connector or AI-enabled connector files to submit to Microsoft.
Note
This article provides information for certifying custom connectors in Azure Logic Apps, Microsoft Power Automate, Microsoft Power Apps and AI-enabled connector files for Microsoft Copilot Studio. Before following the steps in this article, read Get your connector and/or action (plugin) certified.
Step 1: Meet submission requirements for connectors
To maintain a high standard of quality and consistency among our certified connectors, this section outlines a set of requirements and guidelines that your custom connector must adhere to for Microsoft certification.
Give your connector a title
The title must meet the following requirements:
- Must exist and be written in English.
- Must be unique and distinguishable from any existing connector and/or plugin title.
- Should be the name of your product or organization.
- Should follow existing naming patterns for certified connector and/or plugin. For independent publishers, the connector name should follow the pattern,
Connector and/or plugin Name (Independent Publisher)
. - Can't be longer than 30 characters.
- Can't contain the words API, Connector, Copilot Studio, or any of our other Power Platform product names (for example, Power Apps).
- Can't end in a nonalphanumeric character, including carriage return, new line, or blank space.
Examples
- Good connector and/or action titles:
Azure Sentinel*, *Office 365 Outlook
- Poor connector and/or action titles:
Azure Sentinel's Power Apps Connector
,Office 365 Outlook API
Write a description for your connector
The description must meet the following requirements:
- Ensure your description complies with the Marketplace guidelines.
- Must exist and be written in English.
- Must be free of grammatical and spelling errors.
- Should describe concisely the main purpose and value offered by your connector.
- Must be longer than 30 characters and shorter than 500 characters.
- Can't contain any Copilot Studio or other Power Platform product names (for example, Power Apps).
Design an icon for your connector (Only applicable for verified publishers)
This section doesn't apply to independent publishers.
- Create a logo with 1:1 dimensions within a range of 100 x 100 to 230 × 230 pixels (no rounded edges).
- Use a non-transparent, nonwhite color (#ffffff) background, and not-default color (#007ee5) that matches your specified icon background color.
- Ensure the icon is unique to any other certified connector icon.
- Submit the logo in PNG format as
<icon>.png
. - Set logo dimensions below 70% for the image's height & width with a consistent background.
- Ensure brand color is a valid hexadecimal color and shouldn't be white (#ffffff) or default (#007ee5).
Define operation and parameter summaries and descriptions
The summaries and descriptions must meet the following requirements:
- Must exist and be written in English.
- Must be free of grammatical and spelling errors.
- Operation and parameter summaries should be phrases of 80 characters or less, and contain only alphanumeric characters or parentheses.
- Operation and parameter descriptions should be full, descriptive sentences, and end in punctuation.
- Can't contain any Copilot Studio or other Power Platform product names (for example, Power Apps).
Define exact operation responses
The operation responses must meet the following requirements:
- Define operation responses with an exact schema only with expected responses.
- Don't use default responses with an exact schema definition.
- Provide valid response schema definitions for all operations in the swagger.
- Empty response schemas aren't allowed except in special cases where the response schema is dynamic. This means no dynamic content is shown in the output and makers must use JSON to parse the response.
- Empty operations aren't allowed.
- Remove empty properties unless they're required.
Verify swagger properties
The properties must meet the following requirements:
- Ensure the
openapidefinition.json
is in a correctly formatted JSON file. - Ensure swagger definition complies with the OpenAPI 2.0 standard and the connectors' extended standard.
Verify connection parameters
The parameters must meet the following requirements:
Ensure the property is updated with appropriate values for
uiDefinition
(display name, description).If your connection parameter uses Basic authentication, ensure JSON is formatted correctly as the following example.
{ "username": { "type": "securestring", "uiDefinition": { "displayName": "YourUsernameLabel", "description": "The description of YourUsernameLabel for this api", "tooltip": "Provide the YourUsernameLabel tooltip text", "constraints": { "tabIndex": 2, "clearText": true, "required": "true" } } }, "password": { "type": "securestring", "uiDefinition": { "displayName": "YourPasswordLabel", "description": "The description of YourPasswordLabel for this api", "tooltip": "Provide the YourPasswordLabel tooltip text", "constraints": { "tabIndex": 3, "clearText": false, "required": "true" } } } }
If your connection parameter has APIKey as authentication, ensure JSON is formatted correctly as the following example.
{ "api_key": { "type": "securestring", "uiDefinition": { "displayName": "YourApiKeyParameterLabel", "tooltip": "Provide your YourApiKeyParameterLabel tooltip text", "constraints": { "tabIndex": 2, "clearText": false, "required": "true" } } } }
If your connection parameter has Generic OAuth as authentication, ensure JSON is formatted correctly as the following example.
{ "token": { "type": "oAuthSetting", "oAuthSettings": { "identityProvider": "oauth2", "scopes": [ "scope1" ], "redirectMode": "GlobalPerConnector", "customParameters": { "AuthorizationUrl": { "value": "https://contoso.com" }, "TokenUrl": { "value": "https://contoso.com" }, "RefreshUrl": { "value": "https://contoso.com" } }, "clientId": "YourClientID" }, "uiDefinition": null } }
If your connection parameter has OAuth2 identity provider, ensure the identity provider is from the list of supported OAuth2 providers. Here's an example of GitHub OAuth2 identity provider:
{ "token": { "type": "oAuthSetting", "oAuthSettings": { "identityProvider": "github", "scopes": [ "scope1" ], "redirectMode": "GlobalPerConnector", "customParameters": {}, "clientId": "YourClientId" }, "uiDefinition": null } }
If your connection parameter has Microsoft Entra ID as authentication, ensure JSON is formatted correctly as the following example.
{ "token": { "type": "oAuthSetting", "oAuthSettings": { "identityProvider": "aad", "scopes": [ "scope1" ], "redirectMode": "GlobalPerConnector", "customParameters": { "LoginUri": { "value": "https://login.microsoftonline.com" }, "TenantId": { "value": "common" }, "ResourceUri": { "value": "resourceUri" }, "EnableOnbehalfOfLogin": { "value": false } }, "clientId": "AzureActiveDirectoryClientId" }, "uiDefinition": null } }
Create quality English language strings
Connectors are localized as part of Power Automate localization; therefore, when you develop a connector, the quality of the English language strings is key to the translation quality. Here are some major areas to focus on as you create the values of the strings you provide.
Run a spell check program to ensure all string values are free of typographical errors. If there's any incomplete English language string, the translation result is incomplete or incorrect in context.
Make sure the sentence is in complete form. If the sentence isn't complete, that can also generate lower quality translations.
Make sure the meaning of the sentence is clear. If the meaning of the sentence is ambiguous, that can also generate lower quality or incorrect translations.
Make sure summaries, x-ms-summaries, and descriptions are grammatically correct. Don't copy and paste the summaries. To learn how they show within the product, go to Connector string guidance.
Avoid runtime composite strings, if possible. Use fully formed sentences instead. Concatenated strings or sentences make it difficult to translate, or can cause a wrong translation.
Make sure to capitalize abbreviations to make them clear. Capitalization reduces the chance of it being mistaken for a typographical error.
Fix CAlMel form strings if you want to localize the string value. Strings in CaMel form (for example, minimizeHighways or MinimizeHighways) are typically considered nontranslatable.
Step 2: Run the Solution Checker to validate your connector
Solution Checker is a mechanism to conduct static analysis to ensure your connector adheres to Microsoft certification standards. Add your connector to a solution in Power Automate or Power Apps and then follow the instructions in Validate a custom connector with solution checker to run the solution checker.
Watch this video to learn how to run the Solution Checker.
Step 3: Meet submission requirements for connector actions
If you're also submitting the associated connector actions for certification, be sure to follow all the guidelines in these articles:
- Extend Microsoft 365 Copilot for Copilot agents with connector actions outlines the steps to author connector actions.
- Responsible AI guidelines outlines what all AI-enabled connectors need to follow.
- 100.10 Inappropriate content highlights a section in the Microsoft Commercial Marketplace Terms of Use that outlines the standards by which all AI-enabled connectors must comply. Connector actions must not generate, contain, or provide access to inappropriate, harmful, or offensive AI-generated content.
Step 4: Prepare the connector, AI-enabled connector, and/or artifacts
Note
- Follow all the specifications to ensure the quality of your connector and/or AI-enabled connector before certification. Failure to do so results in certification delays because you are asked to make changes.
- Provide a production version of the host URL. Staging, dev, and test host URLs aren't allowed.
You submit a set of files to Microsoft, which is a Solution generation from the maker portal or Microsoft Copilot Studio. To package your files, follow the steps in this section.
Connector and AI-enabled packaging guide
The procedures in this section guide you through various scenarios of packaging. If you want to package only a custom connector, use the first scenario. If you want to package both a custom connector and AI enabled connector, use the second scenario. If you want to package an existing connector and AI-enabled connector, use the last scenario.
- Package your custom connector and submit for certification
- Package your custom connector and AI-enabled connector for certification
- Package existing certified connector and AI-enabled connector for certification
Package your custom connector and submit for certification
Run solution checker on your connector solution in step 1.
Export the connector solution.
Export the flow solution.
Create a package with the solutions from steps 3 and 5.
Create the final package as a zip file in the following format:
Note
The names of the folder and files outside the solution are only for reference—you can choose as per your requirements. However, don't manipulate the files inside the solution.
- Upload the package to a storage blob and generate SAS URL. Ensure that your SAS URI is valid for at least 15 days.
- Submit your package to Partner Center.
Package your custom connector and AI-enabled connector for certification
Follow steps 1 through 5 in Package your custom connector and submit for certification in this article.
Create a plugin in the Microsoft Copilot Studio portal and export it as a solution.
Create a package from the following:
- Run solution checker (step 2 in Package your custom connector and submit for certification).
- Export the flow solution (step 5 in Package your custom connector and submit for certification).
- Create a plugin in Microsoft Copilot Studio and export it as a solution (step 2 in this procedure).
Create the final package as a zip file, which is in the following format.
Note
The names of the folder and files outside the solution are only for reference—you can choose as per your requirements. However, don't manipulate the files inside the solution.
- Upload the package to a storage blob and generate SAS URL. Ensure that your SAS URI is valid for at least 15 days.
- Submit your package to Partner Center.
Package existing certified connector and AI-enabled connector for certification
Create a solution in Power Automate and add the already certified connector to it.
Follow steps 2 through 4 in Package your custom connector and submit for certification in this article.
Extend Microsoft 365 Copilot or Copilot agents with connector actions.
Export the plugin as solution.
Create a package from the following:
- Run solution checker on your connector solution (step 2 in Package your custom connector and submit for certification in this article).
- Create a plugin in Copilot Studio and export it as a solution (step 3 in this procedure).
- Create a plugin in Copilot Studio and export it as a solution (step 4 in this procedure).
Create the final package as a zip file, which is in the following format.
Note
The names of the folder and files outside the solution are only for reference—you can choose as per your requirements. However, don't manipulate the files inside the solution.
- Upload the package to a storage blob and generate SAS URL. Ensure that your SAS URI is valid for at least 15 days.
- Submit your package to Partner Center.
Both verified publishers and independent publishers download openapidefinition.json
in their artifacts. You need to set the IconBrandColor in this file.
- Verified publishers: Set iconBrandColor to your brand color in the openapidefinition file.
- Independent publishers: Set iconBrandColor to "#da3b01" in the openapidefinition file.
Create an intro.md artifact
An intro.md file is necessary for both independent publishers and verified publishers. You need to create an intro.md file to document your connector's features and functionality. For an example of documentation to include, go to the Readme.md example. To learn about writing an intro.md file, look at other intro.md files (also known as Readme.md files) in our GitHub repository.
If you're an independent publisher and your connector uses OAuth, make sure you include instructions for how to obtain credentials.
Tip
Known Issues and Limitations is a great section to maintain to keep your users up-to-date.
Step 5: Validate the package for structure
The package validation script validates the package structure and helps you generate the package in acceptable format for certification. Download the package validator script with this link: ConnectorPackageValidator.ps1.
To run the script, follow these steps:
Open Windows PowerShell in Admin mode.
Change the drive location by entering
cd /
.The following example uses
C:\
.Go to the path where you downloaded the package validator script.
For example, if the path is
C:\Users\user01\Downloads
, you entercd .\Users\user01\Downloads\
.Set the execution policy to unrestricted by entering the following command:
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
This command enables the PowerShell to be executed without any restriction.
Confirm your entry by entering Y, which stands for Yes.
Execute the ConnectorPackageValidator.ps1 with the following steps:
- Enter the zip file path that contains the connector package.
- Specify whether or not the AI action is enabled.
As shown in the following example, the first argument is a valid zip file path that contains the package. The second argument is
yes
/y
to indicate the AI action is enabled, orno
/n
to indicate that it's disabled.If the package structure is correct, the following success message displays:
If there's an issue with the package structure, the script provides issue details by detecting and highlighting the defects in the package structure.
Step 6: Submit your connector and/or AI-enabled connector for certification
During the submission process, you open-source your connector and/or AI-enabled connector to our Microsoft Power Platform Connectors repository.
(For independent publishers) To submit the package to Microsoft for certification, follow the instructions in Independent Publisher Certification process.
(For verified publishers) To submit the package to Microsoft for certification into Partner Center, follow the instructions in Verified Publisher Certification Process.
If you're a verified publisher, you need to submit a script.csx file if you're using custom code.
If your connector has OAuth, provide Client ID and Secret in Partner Center. Also, get the APIname from your connector submission request to update your app.
As part of submission, Microsoft certifies and/or plugin your connector. If you need to troubleshoot swagger errors, go to Fix Swagger Validator errors.
Checklist before submitting
Before moving on to Submit your connector for Microsoft certification, ensure that:
Your connector and/or AI-enabled connector satisfies all standards set in Step 1: Meet submission requirements for connectors and Step 3: Meet submission requirements for connector actions.
No operations are missing summary, description, or visibility information.
You tested your custom connector and/or AI-enabled connector to ensure the operations work as expected (at least 10 successful calls per operation).
No runtime or schema validation errors appear in the test section of the custom connector wizard.
For queries regarding certification
You need to have Microsoft Teams to join the Office Hours meeting. If you need access, view your options in Microsoft Teams.
Join Office Hours Meeting every Tuesday at 3:30 PM to 4:30 PM, UTC (Coordinated Universal Time).
Tip