azureazure-logic-appspowerappspower-automate-custom-connector

Azure custom connector dynamic schema not working


Trying to use x-ms-dynamic-values (which working as expected) and x-ms-dynamic-schema (which doesn't seems to work) I only getting the body param name dynamicActionSchema instead of the dynamic schema. enter image description here

Those are my paths:

paths:
  /api/v1/actions:
    get:
      description: Get lists
      summary: Get's action list you have access to
      operationId: GetActionsList
      parameters:
      - {in: query, name: include_attributes, default: ref, type: string, description: The
          number of items to skip before starting to collect the result set}
      responses:
        '200':
          description: OK
          schema: {$ref: '#/definitions/GetLists'}
  /api/v1/actions/{actionId}:
    get:
      description: Gets the schema of the selected action
      summary: Get's the schema of the selected action
      operationId: GetActionSchema
      parameters:
      - {name: actionId, in: path, required: true, type: string, x-ms-summary: Select
          Action}
      responses:
        '200':
          description: OK
          schema: {type: object}
  /api/v1/executions/{action}:
    post:
      description: Executing ST action - Uses Dynamic values and dynamic schema to
        draw form
      summary: Executing ST action
      operationId: ExecuteSTAction
      parameters:
      - name: action
        type: string
        in: path
        description: Select action you want to execute
        required: true
        x-ms-summary: Select Action
        x-ms-dynamic-values: {operationId: GetActionsList, value-path: ref}
      - name: dynamicActionSchema
        in: body
        description: Dynamic Schema of items in selected action
        schema:
          type: object
          x-ms-dynamic-schema:
            operationId: GetActionSchema
            parameters:
              actionId: {parameter: action}
            value-path: parameters
      responses:
        '201': {description: Executed}
definitions:
  GetLists:
    type: array
    items:
      type: object
      properties:
        ref: {type: string}
      required: [ref]
security:
- API Key: []

Dynamic schema operation output sample:

{
  "parameters": {
    "tags": {
      "description": "List of tags for item.",
      "required": false,
      "type": "array",
      "position": 12
    },
    "env": {
      "description": "Environment variables which will be available to the script.",
      "type": "object"
    },
    "detected": {
      "description": "The datetime for detecting the item.",
      "required": true,
      "type": "string",
      "position": 6
    },
    "description": {
      "description": "The description of the item.",
      "required": false,
      "type": "string",
      "position": 2
    }
    ...
  }
}

Full example: https://github.com/microsoft/PowerPlatformConnectors/blob/070009ba5681fd57ee6cc61d2a380123712a088f/certified-connectors/Ticketing.events/apiDefinition.swagger.json

MS docs: https://learn.microsoft.com/en-us/connectors/custom-connectors/openapi-extensions#use-dynamic-schema

Open thread in Power Apps forum: https://powerusers.microsoft.com/t5/Building-Power-Apps/Dynamic-schema-doesn-t-seems-to-work-based-on-a-body-parameter/m-p/1373866#M357492


Solution

  • Found my issue, schema should be in the form of:

    {
        "parameters": {
            "type": "object",
            "properties": {
                "debug": {
                    "default": false,
                    "required": false,
                    "description": "Enable runner debug mode.",
                    "type": "boolean"
                },
                ...
            }
        }
    }