customproviders icon

customproviders

Allows extension of ARM control plane with custom resource providers

COMMUNITYBEARER0 INSTALLS
OpenAPI Specificationv3.0
{
  "swagger": "2.0",
  "schemes": [
    "https"
  ],
  "host": "management.azure.com",
  "info": {
    "description": "Allows extension of ARM control plane with custom resource providers.",
    "title": "customproviders",
    "version": "2018-09-01-preview",
    "x-apisguru-categories": [
      "cloud"
    ],
    "x-logo": {
      "url": "https://api.apis.guru/v2/cache/logo/https_assets.onestore.ms_cdnfiles_onestorerolling-1606-01000_shell_v3_images_logo_microsoft.png"
    },
    "x-ms-code-generation-settings": {
      "name": "customprovidersClient"
    },
    "x-origin": [
      {
        "format": "swagger",
        "url": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/specification/customproviders/resource-manager/Microsoft.CustomProviders/preview/2018-09-01-preview/customproviders.json",
        "version": "2.0"
      }
    ],
    "x-providerName": "azure.com",
    "x-serviceName": "customproviders",
    "x-tags": [
      "Azure",
      "Microsoft"
    ]
  },
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "securityDefinitions": {
    "azure_auth": {
      "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize",
      "description": "Azure Active Directory OAuth2 Flow",
      "flow": "implicit",
      "scopes": {
        "user_impersonation": "impersonate your user account"
      },
      "type": "oauth2"
    }
  },
  "security": [
    {
      "azure_auth": [
        "user_impersonation"
      ]
    }
  ],
  "parameters": {
    "ApiVersionParameter": {
      "description": "The API version to be used with the HTTP request.",
      "in": "query",
      "name": "api-version",
      "required": true,
      "type": "string"
    },
    "ResourceGroupNameParameter": {
      "description": "The name of the resource group.",
      "in": "path",
      "name": "resourceGroupName",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "ResourceProviderNameParameter": {
      "description": "The name of the resource provider.",
      "in": "path",
      "maxLength": 64,
      "minLength": 3,
      "name": "resourceProviderName",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "SubscriptionIdParameter": {
      "description": "The Azure subscription ID. This is a GUID-formatted string (e.g. 00000000-0000-0000-0000-000000000000)",
      "in": "path",
      "name": "subscriptionId",
      "required": true,
      "type": "string"
    }
  },
  "paths": {
    "/providers/Microsoft.CustomProviders/operations": {
      "get": {
        "description": "The list of operations provided by Microsoft CustomProviders.",
        "operationId": "Operations_List",
        "parameters": [
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Describe the result of a successful operation.",
            "schema": {
              "$ref": "#/definitions/ResourceProviderOperationList"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "Operations"
        ],
        "x-ms-examples": {
          "List the custom providers operations": {
            "parameters": {
              "api-version": "2018-09-01-preview"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "display": {
                        "description": "List or get the Custom Providers",
                        "operation": "List Custom Providers",
                        "provider": "Azure Custom Providers",
                        "resource": "resourceProviders"
                      },
                      "name": "Microsoft.CustomProviders/resourceProviders/read"
                    },
                    {
                      "display": {
                        "description": "List or get the Custom Providers",
                        "operation": "List Custom Providers",
                        "provider": "Azure Custom Providers",
                        "resource": "resourceProviders"
                      },
                      "name": "Microsoft.CustomProviders/resourceProviders/delete"
                    },
                    {
                      "display": {
                        "description": "List or get the Custom Providers",
                        "operation": "List Custom Providers",
                        "provider": "Azure Custom Providers",
                        "resource": "resourceProviders"
                      },
                      "name": "Microsoft.CustomProviders/resourceProviders/wrte"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.CustomProviders/resourceProviders": {
      "get": {
        "description": "Gets all the custom resource providers within a subscription.",
        "operationId": "CustomResourceProvider_ListBySubscription",
        "parameters": [
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK - Returns an array of custom resource providers.",
            "schema": {
              "$ref": "#/definitions/ListByCustomRPManifest"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "CustomResourceProvider"
        ],
        "x-ms-examples": {
          "List all custom resource providers on the subscription": {
            "parameters": {
              "api-version": "2018-09-01-preview",
              "subscriptionId": "00000000-0000-0000-0000-000000000000"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.CustomProviders/resourceProviders/newrp1",
                      "location": "East US",
                      "name": "newrp1",
                      "properties": {
                        "actions": [
                          {
                            "endpoint": "https://mytestendpoint/",
                            "name": "TestAction",
                            "routingType": "Proxy"
                          }
                        ],
                        "provisioningState": "Succeeded",
                        "resourceTypes": [
                          {
                            "endpoint": "https://mytestendpoint2/",
                            "name": "TestResource",
                            "routingType": "Proxy,Cache"
                          }
                        ]
                      },
                      "type": "Microsoft.CustomProviders/resourceProviders"
                    },
                    {
                      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG2/providers/Microsoft.CustomProviders/resourceProviders/newrp2",
                      "location": "East US",
                      "name": "newrp2",
                      "properties": {
                        "actions": [
                          {
                            "endpoint": "https://mytestendpoint/",
                            "name": "TestAction",
                            "routingType": "Proxy"
                          }
                        ],
                        "provisioningState": "Succeeded",
                        "resourceTypes": [
                          {
                            "endpoint": "https://mytestendpoint2/",
                            "name": "TestResource",
                            "routingType": "Proxy,Cache"
                          }
                        ]
                      },
                      "type": "Microsoft.CustomProviders/resourceProviders"
                    }
                  ]
                },
                "headers": {}
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders": {
      "get": {
        "description": "Gets all the custom resource providers within a resource group.",
        "operationId": "CustomResourceProvider_ListByResourceGroup",
        "parameters": [
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK - Returns an array of custom resource providers.",
            "schema": {
              "$ref": "#/definitions/ListByCustomRPManifest"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "CustomResourceProvider"
        ],
        "x-ms-examples": {
          "List all custom resource providers on the resourceGroup": {
            "parameters": {
              "api-version": "2018-09-01-preview",
              "resourceGroupName": "testRG",
              "subscriptionId": "00000000-0000-0000-0000-000000000000"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.CustomProviders/resourceProviders/newrp1",
                      "location": "East US",
                      "name": "newrp1",
                      "properties": {
                        "actions": [
                          {
                            "endpoint": "https://mytestendpoint/",
                            "name": "TestAction",
                            "routingType": "Proxy"
                          }
                        ],
                        "provisioningState": "Succeeded",
                        "resourceTypes": [
                          {
                            "endpoint": "https://mytestendpoint2/",
                            "name": "TestResource",
                            "routingType": "Proxy,Cache"
                          }
                        ]
                      },
                      "type": "Microsoft.CustomProviders/resourceProviders"
                    },
                    {
                      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.CustomProviders/resourceProviders/newrp2",
                      "location": "East US",
                      "name": "newrp2",
                      "properties": {
                        "actions": [
                          {
                            "endpoint": "https://mytestendpoint/",
                            "name": "TestAction",
                            "routingType": "Proxy"
                          }
                        ],
                        "provisioningState": "Succeeded",
                        "resourceTypes": [
                          {
                            "endpoint": "https://mytestendpoint2/",
                            "name": "TestResource",
                            "routingType": "Proxy,Cache"
                          }
                        ]
                      },
                      "type": "Microsoft.CustomProviders/resourceProviders"
                    }
                  ]
                },
                "headers": {}
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}": {
      "delete": {
        "description": "Deletes the custom resource provider.",
        "operationId": "CustomResourceProvider_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ResourceProviderNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK resource deleted"
          },
          "202": {
            "description": "OK resource delete has been accepted."
          },
          "204": {
            "description": "OK resource was not found."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "CustomResourceProvider"
        ],
        "x-ms-examples": {
          "Delete a custom resource provider": {
            "parameters": {
              "api-version": "2018-09-01-preview",
              "resourceGroupName": "testRG",
              "resourceProviderName": "newrp",
              "subscriptionId": "00000000-0000-0000-0000-000000000000"
            },
            "responses": {
              "200": {},
              "202": {},
              "204": {}
            }
          }
        },
        "x-ms-long-running-operation": true
      },
      "get": {
        "description": "Gets the custom resource provider manifest.",
        "operationId": "CustomResourceProvider_Get",
        "parameters": [
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ResourceProviderNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK response definition with the existing resource.",
            "schema": {
              "$ref": "#/definitions/CustomRPManifest"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "CustomResourceProvider"
        ],
        "x-ms-examples": {
          "Get a custom resource provider": {
            "parameters": {
              "api-version": "2018-09-01-preview",
              "resourceGroupName": "testRG",
              "resourceProviderName": "newrp",
              "subscriptionId": "00000000-0000-0000-0000-000000000000"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.CustomProviders/resourceProviders/newrp",
                  "location": "East US",
                  "name": "newrp",
                  "properties": {
                    "actions": [
                      {
                        "endpoint": "https://mytestendpoint/",
                        "name": "TestAction",
                        "routingType": "Proxy"
                      }
                    ],
                    "provisioningState": "Succeeded",
                    "resourceTypes": [
                      {
                        "endpoint": "https://mytestendpoint2/",
                        "name": "TestResource",
                        "routingType": "Proxy,Cache"
                      }
                    ]
                  },
                  "type": "Microsoft.CustomProviders/resourceProviders"
                },
                "headers": {}
              }
            }
          }
        }
      },
      "patch": {
        "description": "Updates an existing custom resource provider. The only value that can be updated via PATCH currently is the tags.",
        "operationId": "CustomResourceProvider_Update",
        "parameters": [
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ResourceProviderNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "description": "The updatable fields of a custom resource provider.",
            "in": "body",
            "name": "patchableResource",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ResourceProvidersUpdate"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK response. The resource has been updated.",
            "schema": {
              "$ref": "#/definitions/CustomRPManifest"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "CustomResourceProvider"
        ],
        "x-ms-examples": {
          "Update a custom resource provider": {
            "parameters": {
              "api-version": "2018-09-01-preview",
              "patchableResource": {
                "tags": {}
              },
              "resourceGroupName": "testRG",
              "resourceProviderName": "newrp",
              "subscriptionId": "00000000-0000-0000-0000-000000000000"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.CustomProviders/resourceProviders/newrp",
                  "location": "East US",
                  "name": "newrp",
                  "properties": {
                    "actions": [
                      {
                        "endpoint": "https://mytestendpoint/",
                        "name": "TestAction",
                        "routingType": "Proxy"
                      }
                    ],
                    "provisioningState": "Succeeded",
                    "resourceTypes": [
                      {
                        "endpoint": "https://mytestendpoint2/",
                        "name": "TestResource",
                        "routingType": "Proxy,Cache"
                      }
                    ]
                  },
                  "type": "Microsoft.CustomProviders/resourceProviders"
                }
              }
            }
          }
        }
      },
      "put": {
        "description": "Creates or updates the custom resource provider.",
        "operationId": "CustomResourceProvider_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ResourceProviderNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "description": "The parameters required to create or update a custom resource provider definition.",
            "in": "body",
            "name": "resourceProvider",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CustomRPManifest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK response definition. Resource already exists and the changes have been accepted",
            "schema": {
              "$ref": "#/definitions/CustomRPManifest"
            }
          },
          "201": {
            "description": "Created response definition. Resource has been created",
            "schema": {
              "$ref": "#/definitions/CustomRPManifest"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "CustomResourceProvider"
        ],
        "x-ms-examples": {
          "Create or update the custom resource provider": {
            "parameters": {
              "api-version": "2018-09-01-preview",
              "resourceGroupName": "testRG",
              "resourceProvider": {
                "location": "eastus",
                "properties": {
                  "actions": [
                    {
                      "endpoint": "https://mytestendpoint/",
                      "name": "TestAction",
                      "routingType": "Proxy"
                    }
                  ],
                  "resourceTypes": [
                    {
                      "endpoint": "https://mytestendpoint2/",
                      "name": "TestResource",
                      "routingType": "Proxy,Cache"
                    }
                  ]
                }
              },
              "resourceProviderName": "newrp",
              "subscriptionId": "00000000-0000-0000-0000-000000000000"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.CustomProviders/resourceProviders/newrp",
                  "location": "East US",
                  "name": "newrp",
                  "properties": {
                    "actions": [
                      {
                        "endpoint": "https://mytestendpoint/",
                        "name": "TestAction",
                        "routingType": "Proxy"
                      }
                    ],
                    "provisioningState": "Accepted",
                    "resourceTypes": [
                      {
                        "endpoint": "https://mytestendpoint2/",
                        "name": "TestResource",
                        "routingType": "Proxy,Cache"
                      }
                    ]
                  },
                  "type": "Microsoft.CustomProviders/resourceProviders"
                }
              },
              "201": {
                "body": {
                  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/testRG/providers/Microsoft.CustomProviders/resourceProviders/newrp",
                  "location": "East US",
                  "name": "newrp",
                  "properties": {
                    "actions": [
                      {
                        "endpoint": "https://mytestendpoint/",
                        "name": "TestAction",
                        "routingType": "Proxy"
                      }
                    ],
                    "provisioningState": "Accepted",
                    "resourceTypes": [
                      {
                        "endpoint": "https://mytestendpoint2/",
                        "name": "TestResource",
                        "routingType": "Proxy,Cache"
                      }
                    ]
                  },
                  "type": "Microsoft.CustomProviders/resourceProviders"
                }
              }
            }
          }
        },
        "x-ms-long-running-operation": true
      }
    },
    "/{scope}/providers/Microsoft.CustomProviders/associations": {
      "get": {
        "description": "Gets all association for the given scope.",
        "operationId": "Associations_ListAll",
        "parameters": [
          {
            "description": "The scope of the association.",
            "in": "path",
            "name": "scope",
            "required": true,
            "type": "string",
            "x-ms-skip-url-encoding": true
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK. Returns all associations for the given scope.",
            "schema": {
              "$ref": "#/definitions/AssociationsList"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "Associations"
        ],
        "x-ms-examples": {
          "Get all associations": {
            "parameters": {
              "api-version": "2018-09-01-preview",
              "scope": "scope"
            },
            "responses": {
              "200": {
                "body": {
                  "value": [
                    {
                      "id": "scope/providers/Microsoft.CustomProviders/associations/associationName",
                      "name": "associationName",
                      "properties": {
                        "provisioningState": "Succeeded",
                        "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/appRG/providers/Microsoft.Solutions/applications/applicationName"
                      },
                      "type": "Microsoft.CustomProviders/associations"
                    }
                  ]
                },
                "headers": {}
              }
            }
          }
        },
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/{scope}/providers/Microsoft.CustomProviders/associations/{associationName}": {
      "delete": {
        "description": "Delete an association.",
        "operationId": "Associations_Delete",
        "parameters": [
          {
            "description": "The scope of the association.",
            "in": "path",
            "name": "scope",
            "required": true,
            "type": "string",
            "x-ms-skip-url-encoding": true
          },
          {
            "description": "The name of the association.",
            "in": "path",
            "name": "associationName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK. Association deleted."
          },
          "202": {
            "description": "Accepted. Association delete has been accepted."
          },
          "204": {
            "description": "No Content. Association was not found."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "Associations"
        ],
        "x-ms-examples": {
          "Delete an association": {
            "parameters": {
              "api-version": "2018-09-01-preview",
              "associationName": "associationName",
              "scope": "scope"
            },
            "responses": {
              "200": {},
              "202": {},
              "204": {}
            }
          }
        },
        "x-ms-long-running-operation": true
      },
      "get": {
        "description": "Get an association.",
        "operationId": "Associations_Get",
        "parameters": [
          {
            "description": "The scope of the association.",
            "in": "path",
            "name": "scope",
            "required": true,
            "type": "string",
            "x-ms-skip-url-encoding": true
          },
          {
            "description": "The name of the association.",
            "in": "path",
            "name": "associationName",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK. Returns association.",
            "schema": {
              "$ref": "#/definitions/Association"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "Associations"
        ],
        "x-ms-examples": {
          "Get an association": {
            "parameters": {
              "api-version": "2018-09-01-preview",
              "associationName": "associationName",
              "scope": "scope"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "scope/providers/Microsoft.CustomProviders/associations/associationName",
                  "name": "associationName",
                  "properties": {
                    "provisioningState": "Succeeded",
                    "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/appRG/providers/Microsoft.Solutions/applications/applicationName"
                  },
                  "type": "Microsoft.CustomProviders/associations"
                },
                "headers": {}
              }
            }
          }
        }
      },
      "put": {
        "description": "Create or update an association.",
        "operationId": "Associations_CreateOrUpdate",
        "parameters": [
          {
            "description": "The scope of the association. The scope can be any valid REST resource instance. For example, use '/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Compute/virtualMachines/{vm-name}' for a virtual machine resource.",
            "in": "path",
            "name": "scope",
            "required": true,
            "type": "string",
            "x-ms-skip-url-encoding": true
          },
          {
            "description": "The name of the association.",
            "in": "path",
            "name": "associationName",
            "required": true,
            "type": "string"
          },
          {
            "description": "The parameters required to create or update an association.",
            "in": "body",
            "name": "association",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Association"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "OK. Association already exists and the changes have been accepted.",
            "schema": {
              "$ref": "#/definitions/Association"
            }
          },
          "201": {
            "description": "Created. Association has been created.",
            "schema": {
              "$ref": "#/definitions/Association"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorResponse"
            }
          }
        },
        "tags": [
          "Associations"
        ],
        "x-ms-examples": {
          "Create or update an association": {
            "parameters": {
              "api-version": "2018-09-01-preview",
              "association": {
                "properties": {
                  "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/appRG/providers/Microsoft.Solutions/applications/applicationName"
                }
              },
              "associationName": "associationName",
              "scope": "scope"
            },
            "responses": {
              "200": {
                "body": {
                  "id": "/scope/providers/Microsoft.CustomProviders/associations/associationName",
                  "name": "associationName",
                  "properties": {
                    "provisioningState": "Succeeded",
                    "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/appRG/providers/Microsoft.Solutions/applications/applicationName"
                  },
                  "type": "Microsoft.CustomProviders/associations"
                },
                "headers": {}
              },
              "201": {
                "body": {
                  "id": "/scope/providers/Microsoft.CustomProviders/associations/associationName",
                  "name": "associationName",
                  "properties": {
                    "provisioningState": "Accepted",
                    "targetResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/appRG/providers/Microsoft.Solutions/applications/applicationName"
                  },
                  "type": "Microsoft.CustomProviders/associations"
                },
                "headers": {}
              }
            }
          }
        },
        "x-ms-long-running-operation": true
      }
    }
  },
  "definitions": {
    "Association": {
      "description": "The resource definition of this association.",
      "properties": {
        "id": {
          "description": "The association id.",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "The association name.",
          "readOnly": true,
          "type": "string"
        },
        "properties": {
          "description": "The properties of the association.",
          "properties": {
            "provisioningState": {
              "description": "The provisioning state of the association.",
              "enum": [
                "Accepted",
                "Deleting",
                "Running",
                "Succeeded",
                "Failed"
              ],
              "readOnly": true,
              "type": "string",
              "x-ms-enum": {
                "modelAsString": true,
                "name": "ProvisioningState"
              }
            },
            "targetResourceId": {
              "description": "The REST resource instance of the target resource for this association.",
              "type": "string"
            }
          },
          "type": "object",
          "x-ms-client-flatten": true
        },
        "type": {
          "description": "The association type.",
          "readOnly": true,
          "type": "string"
        }
      },
      "x-ms-azure-resource": true,
      "x-ms-client-flatten": true
    },
    "AssociationsList": {
      "description": "List of associations.",
      "properties": {
        "nextLink": {
          "description": "The URL to use for getting the next set of results.",
          "type": "string"
        },
        "value": {
          "description": "The array of associations.",
          "items": {
            "$ref": "#/definitions/Association"
          },
          "type": "array"
        }
      }
    },
    "CustomRPActionRouteDefinition": {
      "allOf": [
        {
          "$ref": "#/definitions/CustomRPRouteDefinition"
        }
      ],
      "description": "The route definition for an action implemented by the custom resource provider.",
      "properties": {
        "routingType": {
          "description": "The routing types that are supported for action requests.",
          "enum": [
            "Proxy"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ActionRouting"
          }
        }
      }
    },
    "CustomRPManifest": {
      "allOf": [
        {
          "$ref": "#/definitions/Resource"
        }
      ],
      "description": "A manifest file that defines the custom resource provider resources.",
      "properties": {
        "properties": {
          "description": "The manifest for the custom resource provider",
          "properties": {
            "actions": {
              "description": "A list of actions that the custom resource provider implements.",
              "items": {
                "$ref": "#/definitions/CustomRPActionRouteDefinition"
              },
              "type": "array"
            },
            "provisioningState": {
              "description": "The provisioning state of the resource provider.",
              "enum": [
                "Accepted",
                "Deleting",
                "Running",
                "Succeeded",
                "Failed"
              ],
              "readOnly": true,
              "type": "string",
              "x-ms-enum": {
                "modelAsString": true,
                "name": "ProvisioningState"
              }
            },
            "resourceTypes": {
              "description": "A list of resource types that the custom resource provider implements.",
              "items": {
                "$ref": "#/definitions/CustomRPResourceTypeRouteDefinition"
              },
              "type": "array"
            },
            "validations": {
              "description": "A list of validations to run on the custom resource provider's requests.",
              "items": {
                "$ref": "#/definitions/CustomRPValidations"
              },
              "type": "array"
            }
          },
          "type": "object",
          "x-ms-client-flatten": true
        }
      }
    },
    "CustomRPResourceTypeRouteDefinition": {
      "allOf": [
        {
          "$ref": "#/definitions/CustomRPRouteDefinition"
        }
      ],
      "description": "The route definition for a resource implemented by the custom resource provider.",
      "properties": {
        "routingType": {
          "description": "The routing types that are supported for resource requests.",
          "enum": [
            "Proxy",
            "Proxy,Cache"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ResourceTypeRouting"
          }
        }
      }
    },
    "CustomRPRouteDefinition": {
      "description": "A route definition that defines an action or resource that can be interacted with through the custom resource provider.",
      "properties": {
        "endpoint": {
          "description": "The route definition endpoint URI that the custom resource provider will proxy requests to. This can be in the form of a flat URI (e.g. 'https://testendpoint/') or can specify to route via a path (e.g. 'https://testendpoint/{requestPath}')",
          "pattern": "^https://.+",
          "type": "string"
        },
        "name": {
          "description": "The name of the route definition. This becomes the name for the ARM extension (e.g. '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CustomProviders/resourceProviders/{resourceProviderName}/{name}')",
          "type": "string"
        }
      },
      "required": [
        "name",
        "endpoint"
      ]
    },
    "CustomRPValidations": {
      "description": "A validation to apply on custom resource provider requests.",
      "properties": {
        "specification": {
          "description": "A link to the validation specification. The specification must be hosted on raw.githubusercontent.com.",
          "pattern": "^https://raw.githubusercontent.com/.+",
          "type": "string"
        },
        "validationType": {
          "description": "The type of validation to run against a matching request.",
          "enum": [
            "Swagger"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "ValidationType"
          }
        }
      },
      "required": [
        "specification"
      ]
    },
    "ErrorDefinition": {
      "description": "Error definition.",
      "properties": {
        "code": {
          "description": "Service specific error code which serves as the substatus for the HTTP error code.",
          "readOnly": true,
          "type": "string"
        },
        "details": {
          "description": "Internal error details.",
          "items": {
            "$ref": "#/definitions/ErrorDefinition"
          },
          "readOnly": true,
          "type": "array"
        },
        "message": {
          "description": "Description of the error.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "ErrorResponse": {
      "description": "Error response.",
      "properties": {
        "error": {
          "$ref": "#/definitions/ErrorDefinition",
          "description": "The error details."
        }
      }
    },
    "ListByCustomRPManifest": {
      "description": "List of custom resource providers.",
      "properties": {
        "nextLink": {
          "description": "The URL to use for getting the next set of results.",
          "type": "string"
        },
        "value": {
          "description": "The array of custom resource provider manifests.",
          "items": {
            "$ref": "#/definitions/CustomRPManifest"
          },
          "type": "array"
        }
      }
    },
    "Resource": {
      "description": "The resource definition.",
      "properties": {
        "id": {
          "description": "Resource Id",
          "readOnly": true,
          "type": "string"
        },
        "location": {
          "description": "Resource location",
          "type": "string",
          "x-ms-mutability": [
            "read",
            "create"
          ]
        },
        "name": {
          "description": "Resource name",
          "readOnly": true,
          "type": "string"
        },
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource tags",
          "type": "object"
        },
        "type": {
          "description": "Resource type",
          "readOnly": true,
          "type": "string"
        }
      },
      "required": [
        "location"
      ],
      "x-ms-azure-resource": true
    },
    "ResourceProviderOperation": {
      "description": "Supported operations of this resource provider.",
      "properties": {
        "display": {
          "description": "Display metadata associated with the operation.",
          "properties": {
            "description": {
              "description": "Description of this operation.",
              "type": "string"
            },
            "operation": {
              "description": "Type of operation: get, read, delete, etc.",
              "type": "string"
            },
            "provider": {
              "description": "Resource provider: Microsoft Custom Providers.",
              "type": "string"
            },
            "resource": {
              "description": "Resource on which the operation is performed.",
              "type": "string"
            }
          }
        },
        "name": {
          "description": "Operation name, in format of {provider}/{resource}/{operation}",
          "type": "string"
        }
      },
      "readOnly": true
    },
    "ResourceProviderOperationList": {
      "description": "Results of the request to list operations.",
      "properties": {
        "nextLink": {
          "description": "The URL to use for getting the next set of results.",
          "type": "string"
        },
        "value": {
          "description": "List of operations supported by this resource provider.",
          "items": {
            "$ref": "#/definitions/ResourceProviderOperation"
          },
          "type": "array"
        }
      },
      "readOnly": true
    },
    "ResourceProvidersUpdate": {
      "description": "custom resource provider update information.",
      "properties": {
        "tags": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Resource tags",
          "type": "object"
        }
      }
    }
  }
}