{
  "openapi": "3.0.4",
  "info": {
    "title": "CloudCockpit - Reseller API",
    "description": "# Introduction \n\n<p>This is the documentation for the **CloudCockpit API**. In here you can check which API endpoints are available for REST requests. Additionally you can also learn the request and response bodies expected for each request. </p>\nTo learn how to call any of this endpoints go to the Authentication guide tab.\n<br><br>",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://api.cloudcockpit.com/"
    }
  ],
  "paths": {
    "/v1/AuditLogs": {
      "get": {
        "tags": [
          "AuditLogs"
        ],
        "summary": "List all audit logs",
        "description": "Returns a list of your audit logs. The audit logs are returned sorted by Timestamp, with the most recent audit logs appearing first.\r\n**Available to the roles:** csp, reseller",
        "operationId": "GetAuditLogs",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "A cursor for pagination across multiple pages of results. The default value is 1.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of objects to be returned at each page. The size can range between 1 and 2000, and the default is 25.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "StartDate",
            "in": "query",
            "description": "The start date for the interval to filter the audit logs. The default value is 1 month ago.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "EndDate",
            "in": "query",
            "description": "The end date for the interval to filter the audit logs. The default value is current date time.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "Operations",
            "in": "query",
            "description": "A string containing the operations to filter by. This string is a list separated by |. ex: CreateOrder|CreateCustomer",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Status",
            "in": "query",
            "description": "The audit log status to filter by. Possible values: Processing, Succeded, Failed",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Reseller",
            "in": "query",
            "description": "The reseller name to search by. This field searches for a substring so the provided string as a whole must be a present in the desired reseller name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Customer",
            "in": "query",
            "description": "The customer name to search by. This field searches for a substring so the provided string as a whole must be a present in the desired customer name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "The reseller identifier. View the audit logs as the specified resellerId.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AuditLogViewModelPagedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuditLogViewModelPagedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuditLogViewModelPagedCollection"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "List all customers",
        "description": "Returns a list of your customers. The customers are returned sorted by the specified sortPropertyName.\r\n**Available to the roles:** csp, reseller",
        "operationId": "GetCustomers",
        "parameters": [
          {
            "name": "pageNumber",
            "in": "query",
            "description": "A cursor for pagination across multiple pages of results. The default value is 1.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of objects to be returned at each page. The size can range between 1 and 2000, and the default is 25.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchValue",
            "in": "query",
            "description": "The search query string. Required if searchField is provided. The search value has a maximum of 255 characters.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "searchField",
            "in": "query",
            "description": "The field in which the search is performed. Possible values: Company.Name; Domain; InternalIdentifier and ProviderCustomerId. If searchValue was set but searchField wasn't then by default the search will be done by Company.Name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sortPropertyName",
            "in": "query",
            "description": "The name of the property to sort the customers by. Possible values: Company.Name",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ascendingOrder",
            "in": "query",
            "description": "if set to `true` [ascending order].",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "The reseller identifier. View only the customers that have relation with the specified resellerId.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "showDeleted",
            "in": "query",
            "description": "If true the deleted customers will be included.",
            "schema": {
              "type": "boolean",
              "default": true
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerViewModelPagedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerViewModelPagedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerViewModelPagedCollection"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      },
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Create a customer",
        "description": "Creates a new Customer with the provided CustomerViewModel.\r\n**Available to the roles:** csp, reseller",
        "operationId": "CreateCustomer",
        "parameters": [
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The customer info to create the customer.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerViewModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Retrieve a customer",
        "description": "Retrieves a Customer with the specified GUID identifier.",
        "operationId": "GetCustomerById",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "GUID Unique identifier for the reseller. When this property is set all the customer info will be scoped to the relation beetween them. If the customer does not have a relationship with the provided reseller this request will return HTTP 403.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/validations/domain": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Validate a customer Microsoft domain",
        "description": "Checks if the provided Microsoft domain is valid (does not exist already in Microsoft) to create a new Microsoft customer. This request is only valid when using a Microsoft tenant/provider.\r\n**Available to the roles:** csp, reseller",
        "operationId": "ValidateDomain",
        "parameters": [
          {
            "name": "tenantId",
            "in": "query",
            "description": "The Microsoft tenant identifier to use in validation request to Microsoft.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "domain",
            "in": "query",
            "description": "The Microsoft domain to validate.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "boolean"
                }
              },
              "application/json": {
                "schema": {
                  "type": "boolean"
                }
              },
              "text/json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/validations/address": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Validate a customer address",
        "description": "Checks if the provided address is valid to create a new customer. This request is only valid when using a Microsoft tenant/provider.\r\n**Available to the roles:** csp, reseller",
        "operationId": "ValidateAddress",
        "parameters": [
          {
            "name": "tenantId",
            "in": "query",
            "description": "The Microsoft tenant identifier to use in validation request to Microsoft.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "addressLine1",
            "in": "query",
            "description": "The address first line.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "addressLine2",
            "in": "query",
            "description": "The address second line.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "city",
            "in": "query",
            "description": "The address city.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "description": "The address state.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zipCode",
            "in": "query",
            "description": "The address zip code.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "country",
            "in": "query",
            "description": "The address country.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "boolean"
                }
              },
              "application/json": {
                "schema": {
                  "type": "boolean"
                }
              },
              "text/json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/internal-identifier": {
      "patch": {
        "tags": [
          "Customers"
        ],
        "summary": "Update a customer internal identifier",
        "description": "Updates the specified customer internal identifier. Since the internal identifier is specific by relationship the resellerId provided in the body will set the internal identifier for that relationship. If the ResellerId is not sent or is null, the relationship modified will be your relationship with the customer.\r\n**Available to the roles:** csp, reseller",
        "operationId": "UpdateCustomerInternalIdentifier",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the update. This body contains an JSON Object with two properties (InternalIdentifier, ResellerId).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerInternalIdentifierRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/account-info": {
      "patch": {
        "tags": [
          "Customers"
        ],
        "summary": "Update a customer account info",
        "description": "Updates the specified customer account info. Additionally this request contains the flag RetryFailedProviderCustomersFromCompanyInfo that if set to true will retry any provider customer that failed due to invalid company info.\r\n**Available to the roles:** csp, reseller",
        "operationId": "UpdateCustomerAccountInfo",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the update. This body contains an JSON Object with two properties (customer, retryFailedProviderCustomersFromCompanyInfo).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerAccountInfoRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/margins/{providerInstanceId}": {
      "patch": {
        "tags": [
          "Customers"
        ],
        "summary": "Updates a customer margins",
        "description": "Updates the specified customer margins. Since the margins are specific by relationship the resellerId provided in the body will set the margins for that relationship. If the ResellerId is not sent or is null, the relationship modified will be your relationship with the customer.\r\n**Available to the roles:** csp, reseller",
        "operationId": "UpdateCustomerMargins",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "path",
            "description": "GUID Unique identifier for the provider instance.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the update.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerMarginsRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/microsoft-customer-domain": {
      "patch": {
        "tags": [
          "Customers"
        ],
        "summary": "Updates a Customer Microsoft domain",
        "description": "Updates the specified customer Microsoft domain. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.\nThis request can only be used in a provider customer that is failed with the customer creation error DomainExists. After updating the customer domain it's necessary to call the Retry Creation of a Provider Customer to attempt to create this provider customer again.\r\n**Available to the roles:** csp, reseller",
        "operationId": "UpdateMicrosoftCustomerDomain",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the update.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMicrosoftCustomerDomainRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/provider-customers/{providerInstanceId}": {
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Retry Creation of a Provider Customer",
        "description": "Retries the creation of a failed provider. The provided provider customer should be in the failed status, this request will fail otherwise.\r\n**Available to the roles:** csp, reseller",
        "operationId": "RetryProviderCustomerCreation",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "path",
            "description": "GUID Unique identifier for the provider instance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/microsoft-qualification": {
      "patch": {
        "tags": [
          "Customers"
        ],
        "summary": "Updates a Customer Microsoft Qualification",
        "description": "Updates the specified customer Microsoft qualification. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.\r\n**Available to the roles:** csp, reseller",
        "operationId": "UpdateCustomerQualification",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the update.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerQualificationRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/users": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "List all Customer users",
        "description": "Returns a list of your customer users for a specified customer. The customer users are returned sorted by the specified sortPropertyName. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.",
        "operationId": "GetCustomerUsers",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "GUID Unique identifier for the provider instance.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "A cursor for pagination across multiple pages of results. The default value is 1.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of objects to be returned at each page. The size can range between 1 and 2000, and the default is 25.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchValue",
            "in": "query",
            "description": "The search query string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sortPropertyName",
            "in": "query",
            "description": "The name of the property to sort the customers by. Possible values: DisplayName, UserPrincipalName",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ascendingOrder",
            "in": "query",
            "description": "if set to `true` [ascending order].",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "seekOperation",
            "in": "query",
            "description": "The seek operation type. The default value is Next. Possible values: Next, Previous, First, Last and PageIndex",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "GUID Unique identifier for the reseller. View only the customers that have relation with the specified resellerId.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerUserViewModelPagedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerUserViewModelPagedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerUserViewModelPagedCollection"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      },
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Create a customer user",
        "description": "Creates a new Customer user with the provided CustomerUserViewModel. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.",
        "operationId": "CreateCustomerUser",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the update. This body contains an JSON Object with two properties (providerInstanceId, customerUser).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomerUserRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerUserViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerUserViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerUserViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/user-roles": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Gets all user roles of a customer.",
        "description": "Returns a list of all user roles of a specific customer. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.",
        "operationId": "GetAllCustomerUserRoles",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "GUID Unique identifier for the provider instance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUserRoleViewModel"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUserRoleViewModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUserRoleViewModel"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/licenses": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "List all licenses for a customer",
        "description": "Returns a list of licenses for a specific customer. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.",
        "operationId": "GetCustomerLicenses",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "GUID Unique identifier for the provider instance.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "GUID Unique identifier for the resellerId. By setting this property the licenses will be scoped to that relationship. If user is reseller this property will be auto-populate.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerLicenseViewModel"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerLicenseViewModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerLicenseViewModel"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/domains": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "List all domains for a customer",
        "description": "Returns a list of domains for a specific customer. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.",
        "operationId": "GetCustomerDomains",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "GUID Unique identifier for the provider instance",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/mca": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Retrieve Microsoft Customer Agreements",
        "description": "**Available to the roles:** csp, reseller",
        "operationId": "GetMicrosoftCustomerAgreements",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "description": "Optional GUID to filter by customer.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "Optional GUID to filter by provider instance.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Optional status to filter agreements. Valid values: required, linkgenerated, customeraccepted, linkexpired, agreementcreated (case insensitive).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "searchValue",
            "in": "query",
            "description": "Optional search value to filter by company name.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number for pagination.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size for pagination.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sortPropertyName",
            "in": "query",
            "description": "The property name to sort by. Valid values: CompanyName, Status. Default is Status.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "excludeCompliant",
            "in": "query",
            "description": "Whether we should retrieve agreements with agreementcreated status or not",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "ascendingOrder",
            "in": "query",
            "description": "Whether to sort in ascending order. Default is false (descending).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MicrosoftCustomerAgreementViewModelPagedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MicrosoftCustomerAgreementViewModelPagedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MicrosoftCustomerAgreementViewModelPagedCollection"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/mca/status-counts": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Gets the count of Microsoft Customer Agreements grouped by status",
        "description": "**Available to the roles:** csp, reseller",
        "operationId": "GetMCAStatusCounts",
        "parameters": [
          {
            "name": "customerId",
            "in": "query",
            "description": "Optional customer identifier to filter by",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "Optional provider instance identifier to filter by",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/users/{customerUserId}/user-roles": {
      "patch": {
        "tags": [
          "Customers"
        ],
        "summary": "Updates the roles of a customer user",
        "description": "Updates the roles of a customer user. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.",
        "operationId": "UpdateCustomerUserRoles",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerUserId",
            "in": "path",
            "description": "GUID Unique identifier for the customer user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the update. This body contains an JSON Object with two properties (providerInstanceId, roleIds).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerUserRolesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      },
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "List the roles of a customer user.",
        "description": "Returns the list of user roles of a specific customer user. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.",
        "operationId": "GetCustomerUserRoles",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerUserId",
            "in": "path",
            "description": "GUID Unique identifier for the customer user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "GUID Unique identifier for the provider instance.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUserRoleViewModel"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUserRoleViewModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerUserRoleViewModel"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/users/{customerUserId}/licenses": {
      "patch": {
        "tags": [
          "Customers"
        ],
        "summary": "Updates a customer user licenses",
        "description": "Updates the specified customer user licenses. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.",
        "operationId": "UpdateCustomerUserLicenses",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerUserId",
            "in": "path",
            "description": "GUID Unique identifier for the customer user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the update. This body contains an JSON Object with two properties (providerInstanceId, licenses).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerUserLicensesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      },
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "List all license sku Ids for a Customer user",
        "description": "Returns a list of license sku ids for a specific customer user. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.",
        "operationId": "GetCustomerUserLicenseSkuIds",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "GUID Unique identifier for the provider instance.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerUserId",
            "in": "path",
            "description": "GUID Unique identifier for the customer user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/users/{customerUserId}": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Retrieve a Customer user",
        "description": "Retrieves a Customer user with the specified GUID identifier.",
        "operationId": "GetCustomerUserById",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerUserId",
            "in": "path",
            "description": "GUID Unique identifier for the customer user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "GUID Unique identifier for the provider instance.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerUserViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerUserViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerUserViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      },
      "patch": {
        "tags": [
          "Customers"
        ],
        "summary": "Updates a customer user info",
        "description": "Updates the specified customer user info. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.",
        "operationId": "UpdateCustomerUserInfo",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerUserId",
            "in": "path",
            "description": "GUID Unique identifier for the customer user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the update. This body contains an JSON Object with two properties (providerInstanceId, customerUser).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomerUserRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Customers"
        ],
        "summary": "Delete a Customer user",
        "description": "Deletes a customer user with the provided GUID identifier. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.",
        "operationId": "DeleteCustomerUser",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerUserId",
            "in": "path",
            "description": "GUID Unique identifier for the customer user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the update. This body contains an JSON Object with one property (providerInstanceId).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteCustomerUserRequest"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/users/{customerUserId}/reset-password": {
      "patch": {
        "tags": [
          "Customers"
        ],
        "summary": "Resets a customer user password",
        "description": "Resets the specified customer user password. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.",
        "operationId": "ResetCustomerUserPassword",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerUserId",
            "in": "path",
            "description": "GUID Unique identifier for the customer user.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the reset. This body contains an JSON Object with two properties (providerInstanceId, customerUser).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomerUserRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/provider-instances": {
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Add provider instance to customer.",
        "description": "**Available to the roles:** csp, reseller",
        "operationId": "AddProviderInstanceToCustomer",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The customer id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "The id of the reseller. Should not be passed if a reseller performs the request.\nA CSP can set the id of a reseller to add a provider instance between that reseller and a customer.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request with the information of the provider instance to add to the customer.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddProviderInstanceToCustomerRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/provider-instances/{providerInstanceId}/mca": {
      "get": {
        "tags": [
          "Customers"
        ],
        "summary": "Get customer MCA",
        "description": "Gets the Microsoft Customer Agreement (MCA) information for the customer in the given provider instance. This request only applies to Microsoft provider instances.\r\n**Available to the roles:** csp, reseller",
        "operationId": "GetMca",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The customer id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "path",
            "description": "The id of the provider instance where the MCA is being requested. Should be a Microsoft provider instance.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MicrosoftCustomerAgreementViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MicrosoftCustomerAgreementViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MicrosoftCustomerAgreementViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/provider-instances/{providerInstanceId}/mca/status": {
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Manually refresh customer MCA status",
        "description": "Manually updates the Microsoft Customer Agreement (MCA) status for the customer in the given provider instance. This will get the latest MCA status from Microsoft and update it in the portal. This action is logged in the audit log.\r\n**Available to the roles:** csp, reseller",
        "operationId": "ManualCheckUpdateMcaStatus",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The customer id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "path",
            "description": "The id of the provider instance where the MCA is being requested. Should be a Microsoft provider instance.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/StartMcaAttestationViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartMcaAttestationViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartMcaAttestationViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/provider-instances/{providerInstanceId}/mca/attestation": {
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Start customer MCA attestation",
        "description": "Starts the MCA attestation process for the customer in the given provider instance. Only applies to MCAs where the status is either not started or expired.\r\n**Available to the roles:** csp, reseller",
        "operationId": "StartMcaAttestation",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The customer id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "path",
            "description": "The id of the provider instance where the MCA is being requested. Should be a Microsoft provider instance.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The attestation data.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartMcaAttestationViewModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MicrosoftCustomerAgreementViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MicrosoftCustomerAgreementViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MicrosoftCustomerAgreementViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/provider-instances/{providerInstanceId}/mca/agreement": {
      "post": {
        "tags": [
          "Customers"
        ],
        "summary": "Create customer MCA agreement",
        "description": "Creates a new MCA agreement for the customer in the given provider instance. Customer must have accepted the existing attestation in the portal.\r\n**Available to the roles:** csp, reseller",
        "operationId": "CreateMcaAgreement",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The customer id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "path",
            "description": "The id of the provider instance where the MCA agreement is being created. Should be a Microsoft provider instance.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MicrosoftCustomerAgreementViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MicrosoftCustomerAgreementViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MicrosoftCustomerAgreementViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/delegated-admin-relationships": {
      "get": {
        "tags": [
          "Gdap"
        ],
        "summary": "List all GDAP relationships for a customer",
        "description": "Returns a list of GDAP relationships for a specific customer. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.",
        "operationId": "GetCustomerDelegatedAdminRelationships",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "GUID Unique identifier for the provider instance.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DelegatedAdminRelation"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DelegatedAdminRelation"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DelegatedAdminRelation"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      },
      "post": {
        "tags": [
          "Gdap"
        ],
        "summary": "Create a delegated admin relationship for a given customer",
        "description": "Create a delegated admin relationship for the customer. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.\r\n**Available to the roles:** csp, reseller",
        "operationId": "CreateCustomerDelegatedAdminRelationship",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. Optional only needed if you want to associate with a customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the update. This body contains an JSON Object with four properties (providerInstanceId, displayName, AutoExtendEnabled and CustomSelectedGdapRolesIds).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDelegatedAdminRelationshipRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DelegatedAdminRelationshipViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DelegatedAdminRelationshipViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DelegatedAdminRelationshipViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/delegated-admin-relationships": {
      "post": {
        "tags": [
          "Gdap"
        ],
        "summary": "Create a delegated admin relationship",
        "description": "Create a delegated admin relationship. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.\r\n**Available to the roles:** csp, reseller",
        "operationId": "CreateDelegatedAdminRelationship",
        "parameters": [
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the update. This body contains an JSON Object with four properties (providerInstanceId, displayName, AutoExtendEnabled and CustomSelectedGdapRolesIds).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateDelegatedAdminRelationshipRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DelegatedAdminRelationshipViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DelegatedAdminRelationshipViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DelegatedAdminRelationshipViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/delegated-admin-relationships/{relationshipId}/access-assignments": {
      "get": {
        "tags": [
          "Gdap"
        ],
        "summary": "Get access assignments of a delegated admin relationship",
        "description": "Gets the list of access assignments on the given relationship. Only the access assignments associated with the configured security group are returned.",
        "operationId": "GetGdapRelationshipAccessAssignment",
        "parameters": [
          {
            "name": "relationshipId",
            "in": "path",
            "description": "Id of the relationship",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "Id of the provider instance where relationship is created",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DelegatedAdminAccessAssignmentViewModel"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DelegatedAdminAccessAssignmentViewModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DelegatedAdminAccessAssignmentViewModel"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      },
      "post": {
        "tags": [
          "Gdap"
        ],
        "summary": "Create access assignment",
        "description": "Links the given relationship with the security group configured in the portal. Relationship must be in active state and must not have an access assignment with the security group.\r\n**Available to the roles:** csp, reseller",
        "operationId": "CreateGdapRelationshipAccessAssignment",
        "parameters": [
          {
            "name": "relationshipId",
            "in": "path",
            "description": "Id of the relationship",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "Id of the provider instance where relationship is created",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/relationship-acceptance": {
      "get": {
        "tags": [
          "Gdap"
        ],
        "summary": "Retrieve relationship acceptance link for a Customer",
        "description": "Gets a link to establish a relationship with a customer.\nIf a resellerId is provided, the relationship is established between the customer and that reseller. Otherwise, the relationship is between the customer and CSP.\r\n**Available to the roles:** csp, reseller",
        "operationId": "GetRelationshipAcceptanceLink",
        "parameters": [
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "GUID Unique identifier for the reseller. If user is a reseller this property will be auto-populated.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Customers/{customerId}/delegated-admin-relationships/{relationshipId}": {
      "patch": {
        "tags": [
          "Gdap"
        ],
        "summary": "Update a customer relationship",
        "description": "Updates a delegated admin relationship. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.\r\n**Available to the roles:** csp, reseller",
        "operationId": "UpdateDelegatedAdminRelationship",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "relationshipId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the update. This body contains an JSON Object with two properties (providerInstanceId, AutoExtendEnabled).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomerRelationshipRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Invoices": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "Gets the invoices.",
        "description": "Returns a list of invoices. The invoices are returned ordered by the \"Timestamp\" property and by the boolean value sent in the ascendingOrder parameter. The ascending order might be true or false.",
        "operationId": "GetInvoices",
        "parameters": [
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "The provider instance id.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "invoiceType",
            "in": "query",
            "description": "The invoice type. Possible values: onetime, usage, license and dailyratedusage.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "A cursor for pagination across multiple pages of results. The default value is 1.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of objects to be returned at each page. The size can range between 1 and 2000, and the default is 25.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ascendingOrder",
            "in": "query",
            "description": "If set to `true` [ascending order].",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "The id of a specific reseller. If you are a CSP you can set this to filter by reseller, otherwise don't send a value.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "The id of a specific customer. If you are a CSP or a reseller you can set this to filter by customer, otherwise don't send a value.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The request completed with success and returns the invoices.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceViewModelPagedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceViewModelPagedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceViewModelPagedCollection"
                }
              }
            }
          },
          "400": {
            "description": "There is an error in the parameters sent in the request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Please use a valid authorization token."
          },
          "403": {
            "description": "You don't have enough permissions to access this information."
          },
          "500": {
            "description": "A server error has happened during the request. Please try again later or contact support.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Invoices/{id}/reseller-onetime-lineitems": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "Gets all the invoice one time line items of an invoice for resellers, using pagination.",
        "description": "Returns a subset of the invoice one time line items of an invoice on each request for reseller. Pass the continuation token in the headers to obtain the remaining items.\r\n**Available to the roles:** reseller",
        "operationId": "GetInvoiceOneTimeLineItemsForReseller",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the invoice.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of items to be returned at max per page. The size can range between 1 and 2000.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "X-ContinuationToken",
            "in": "header",
            "description": "This header should not be set when the first page is desired. For the second page and onwards, pass the continuation token received in the response body.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The request completed with success and returns the line items and the continuation token (if applicable).",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceOneTimeLineItemResellerViewModelSeekBasedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceOneTimeLineItemResellerViewModelSeekBasedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceOneTimeLineItemResellerViewModelSeekBasedCollection"
                }
              }
            }
          },
          "400": {
            "description": "There is an error in the parameters sent in the request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Please use a valid authorization token."
          },
          "403": {
            "description": "You don't have enough permissions to access this information."
          },
          "404": {
            "description": "The requested onetime invoice does not exist. Any line items previously obtained should be discarded.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "A server error has happened during the request. Please try again later or contact support.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Invoices/{id}/reseller-usage-lineitems": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "Gets all the invoice usage line items of an invoice for resellers, using pagination.",
        "description": "Returns a subset of the invoice usage items of an invoice on each request for the reseller. Pass the continuation token in the headers to obtain the remaining items.\r\n**Available to the roles:** reseller",
        "operationId": "GetInvoiceUsageLineItemsForReseller",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the invoice.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of items to be returned at max per page. The size can range between 1 and 2000.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "X-ContinuationToken",
            "in": "header",
            "description": "This header should not be set when the first page is desired. For the second page and onwards, pass the continuation token received in the response body.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The request completed with success and returns the line items and the continuation token (if applicable).",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceUsageLineItemResellerViewModelSeekBasedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceUsageLineItemResellerViewModelSeekBasedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceUsageLineItemResellerViewModelSeekBasedCollection"
                }
              }
            }
          },
          "400": {
            "description": "There is an error in the parameters sent in the request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Please use a valid authorization token."
          },
          "403": {
            "description": "You don't have enough permissions to access this information."
          },
          "404": {
            "description": "The requested usage invoice does not exist. Any line items previously obtained should be discarded.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "A server error has happened during the request. Please try again later or contact support.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Invoices/{id}/reseller-dailyratedusage-lineitems": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "Gets all the invoice daily rated usage line items of an invoice for a reseller, using pagination.",
        "description": "Returns a subset of the invoice daily rated usage items of an invoice on each request for the reseller. Pass the continuation token in the headers to obtain the remaining items.\r\n**Available to the roles:** reseller",
        "operationId": "GetInvoiceDailyRatedUsageLineItemsForReseller",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the invoice.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of items to be returned at max per page. The size can range between 1 and 2000.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "X-ContinuationToken",
            "in": "header",
            "description": "This header should not be set when the first page is desired. For the second page and onwards, pass the continuation token received in the response body.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The request completed with success and returns the line items and the continuation token (if applicable).",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDailyRatedUsageLineItemResellerViewModelSeekBasedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDailyRatedUsageLineItemResellerViewModelSeekBasedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDailyRatedUsageLineItemResellerViewModelSeekBasedCollection"
                }
              }
            }
          },
          "400": {
            "description": "There is an error in the parameters sent in the request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Please use a valid authorization token."
          },
          "403": {
            "description": "You don't have enough permissions to access this information."
          },
          "404": {
            "description": "The requested daily rated usage invoice does not exist. Any line items previously obtained should be discarded.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "A server error has happened during the request. Please try again later or contact support.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Invoices/{id}/reseller-license-lineitems": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "Gets all the invoice license line items of an invoice for resellers, using pagination.",
        "description": "Returns a subset of the invoice license line items of an invoice on each request for reseller. Pass the continuation token in the headers to obtain the remaining items.\r\n**Available to the roles:** reseller",
        "operationId": "GetInvoiceLicenseLineItemsForReseller",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the invoice.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of items to be returned at max per page. The size can range between 1 and 2000.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "X-ContinuationToken",
            "in": "header",
            "description": "This header should not be set when the first page is desired. For the second page and onwards, pass the continuation token received in the response body.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The request completed with success and returns the line items and the continuation token (if applicable).",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceLicenseLineItemResellerViewModelSeekBasedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceLicenseLineItemResellerViewModelSeekBasedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceLicenseLineItemResellerViewModelSeekBasedCollection"
                }
              }
            }
          },
          "400": {
            "description": "There is an error in the parameters sent in the request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Please use a valid authorization token."
          },
          "403": {
            "description": "You don't have enough permissions to access this information."
          },
          "404": {
            "description": "The requested onetime invoice does not exist. Any line items previously obtained should be discarded.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "A server error has happened during the request. Please try again later or contact support.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Invoices/{id}/customer-onetime-lineitems": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "Gets all the invoice one time line items of an invoice for a customer, using pagination.",
        "description": "Returns a subset of the invoice one time line items of an invoice on each request for the customer. Pass the continuation token in the headers to obtain the remaining items.",
        "operationId": "GetInvoiceOneTimeLineItemsForCustomer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the invoice.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of items to be returned at max per page. The size can range between 1 and 2000.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "The id of a specific reseller. If you are a CSP you can set this to filter by reseller, otherwise don't send a value.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "The id of the customer. Use this if you are a CSP or a reseller to filter by customer. Otherwise this should be not set.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-ContinuationToken",
            "in": "header",
            "description": "This header should not be set when the first page is desired. For the second page and onwards, pass the continuation token received in the response body.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The request completed with success and returns the line items and the continuation token (if applicable).",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceOneTimeLineItemCustomerViewModelSeekBasedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceOneTimeLineItemCustomerViewModelSeekBasedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceOneTimeLineItemCustomerViewModelSeekBasedCollection"
                }
              }
            }
          },
          "400": {
            "description": "There is an error in the parameters sent in the request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Please use a valid authorization token."
          },
          "403": {
            "description": "You don't have enough permissions to access this information."
          },
          "404": {
            "description": "The requested onetime invoice does not exist. Any line items previously obtained should be discarded.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "A server error has happened during the request. Please try again later or contact support.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Invoices/{id}/customer-license-lineitems": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "Gets all the invoice license line items of an invoice for a customer, using pagination.",
        "description": "Returns a subset of the invoice license line items of an invoice on each request for the customer. Pass the continuation token in the headers to obtain the remaining items.",
        "operationId": "GetInvoiceLicenseLineItemsForCustomer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The id of the invoice.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of items to be returned at max per page. The size can range between 1 and 2000.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "The id of a specific reseller. If you are a CSP you can set this to filter by reseller, otherwise don't send a value.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "The id of the customer. Use this if you are a CSP or a reseller to filter by customer. Otherwise this should be not set.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-ContinuationToken",
            "in": "header",
            "description": "This header should not be set when the first page is desired. For the second page and onwards, pass the continuation token received in the response body.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The request completed with success and returns the line items and the continuation token (if applicable).",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceLicenseLineItemCustomerViewModelSeekBasedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceLicenseLineItemCustomerViewModelSeekBasedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceLicenseLineItemCustomerViewModelSeekBasedCollection"
                }
              }
            }
          },
          "400": {
            "description": "There is an error in the parameters sent in the request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/BadRequestErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Please use a valid authorization token."
          },
          "403": {
            "description": "You don't have enough permissions to access this information."
          },
          "404": {
            "description": "The requested license invoice does not exist. Any line items previously obtained should be discarded.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "A server error has happened during the request. Please try again later or contact support.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalServerErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Offers": {
      "get": {
        "tags": [
          "Offers"
        ],
        "summary": "List all offers",
        "description": "Returns a list the offers in the tenant. The offers are returned sorted by SortPropertyName. If a customer is not provided in the query params the offer prices will not be scoped to one market. To view the offer prices for a certain customer/market provide the desired customer.",
        "operationId": "GetOffers",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "A cursor for pagination across multiple pages of results. The default value is 1.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "The number of objects to be returned at each page. The size can range between 1 and 2000, and the default is 25.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "SortPropertyName",
            "in": "query",
            "description": "The name of the property to sort the customers by. Possible values: Name",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AscendingOrder",
            "in": "query",
            "description": "The value indicating whether to sort in ascending order. If set to `true` [ascending order].",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "OfferTypes",
            "in": "query",
            "description": "A string containing the OfferTypes to filter by. This string is a list separated by |. ex: License|AzurePlan",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ProviderInstanceId",
            "in": "query",
            "description": "The GUID identifier for the provider instance.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "SearchValue",
            "in": "query",
            "description": "The search query string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SearchField",
            "in": "query",
            "description": "The field to search in. Possible values: Name or ProviderOfferId",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Segment",
            "in": "query",
            "description": "The string indicating which segment to get the offers from. Possible values: Commercial, Education, Government or NonProfit",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "CustomerId",
            "in": "query",
            "description": "GUID Unique identifier for the customer. If none is set the offers prices will no be scoped to one market, for normal use set this property. When the user is a customer this property will be auto-populated.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ResellerId",
            "in": "query",
            "description": "GUID Unique identifier for the reseller. When this property is set the offer prices will have the corresponding margins applied. Only usable for CSPs.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "IncludeDeleted",
            "in": "query",
            "description": "The value indicating whether to include deleted offers in the offers list. Deprecated offers will also appear as deleted in the list.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OfferListItemPagedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OfferListItemPagedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OfferListItemPagedCollection"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Offers/{id}": {
      "get": {
        "tags": [
          "Offers"
        ],
        "summary": "Retrieve an offer",
        "description": "Retrieves an offer with the specified GUID identifier.",
        "operationId": "GetOfferById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "GUID Unique identifier for the offer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "GUID Unique identifier for the provider instance.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "customerId",
            "in": "query",
            "description": "GUID Unique identifier for the customer.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "GUID Unique identifier for the reseller. When this property is set the offer price will have the corresponding margins applied. Only usable for CSPs.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "segment",
            "in": "query",
            "description": "The string indicating which segment to get the offers for. Possible values: Commercial, Education, Government or NonProfit",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OfferViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OfferViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OfferViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Orders": {
      "post": {
        "tags": [
          "Orders"
        ],
        "summary": "Create an Order",
        "description": "Creates a new Order with the provided OrderViewModel and returns a model with the created order id.",
        "operationId": "CreateOrder",
        "parameters": [
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The order info to create the order.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderViewModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateOrderResponseViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Orders/customers/{customerId}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "summary": "List all active Orders",
        "description": "Returns a list of this customers active orders. This includes all orders that do not have the status Completed. The orders are returned sorted by the specified created date, with the most recent orders appearing first.",
        "operationId": "GetActiveOrders",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The GUID identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "A cursor for pagination across multiple pages of results. The default value is 1.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of objects to be returned at each page. The size can range between 1 and 2000, and the default is 25.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sortPropertyName",
            "in": "query",
            "description": "The name of the property to sort the orders by. Currently no possible values.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ascendingOrder",
            "in": "query",
            "description": "if set to `true` [ascending order].",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "The GUID identifier for the reseller.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "createdDateFrom",
            "in": "query",
            "description": "Optional filter to only return orders created on or after this date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OrderViewModelPagedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderViewModelPagedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderViewModelPagedCollection"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Providers/Instances": {
      "get": {
        "tags": [
          "Providers"
        ],
        "summary": "List all Provider Instances",
        "description": "Returns a list of the provider instances in the tenant. The provider instances are returned sorted by provider.",
        "operationId": "GetProvidersInstances",
        "parameters": [
          {
            "name": "pageNumber",
            "in": "query",
            "description": "A cursor for pagination across multiple pages of results. The default value is 1.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of objects to be returned at each page. The size can range between 1 and 2000, and the default is 25.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProviderInstanceViewModelPagedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProviderInstanceViewModelPagedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProviderInstanceViewModelPagedCollection"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/Resellers/{resellerId}": {
      "get": {
        "tags": [
          "Resellers"
        ],
        "summary": "Retrieve a reseller",
        "description": "Retrieves a Reseller with the specified GUID identifier.\r\n**Available to the roles:** csp, reseller",
        "operationId": "GetResellerById",
        "parameters": [
          {
            "name": "resellerId",
            "in": "path",
            "description": "GUID Unique identifier for the reseller.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ResellerViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResellerViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResellerViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "List all customer Subscriptions",
        "description": "Returns a list of subscriptions for the provided customer. The subscriptions are returned sorted by the specified sortPropertyName.",
        "operationId": "GetCustomerSubscriptions",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The GUID identifier for the customer. The subscriptions are listed only the selected customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "A cursor for pagination across multiple pages of results. The default value is 1.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of objects to be returned at each page. The size can range between 1 and 2000, and the default is 25.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchValue",
            "in": "query",
            "description": "The search query string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sortPropertyName",
            "in": "query",
            "description": "The name of the property to sort the subscriptions by. Possible values: Offer.Name, RenewalStatus",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ascendingOrder",
            "in": "query",
            "description": "if set to `true` [ascending order].",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "subscriptionStatuses",
            "in": "query",
            "description": "A string containing the SubscriptionStatuses to filter by. This string is a list separated by |. ex: Active|Suspended",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subscriptionOfferTypes",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "The reseller identifier. View only the customer subscriptions for this reseller.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "offerId",
            "in": "query",
            "description": "The offer identifier to search by an offer if specified.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionListItemSubscriptionsPagedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionListItemSubscriptionsPagedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionListItemSubscriptionsPagedCollection"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Retrieve a Subscription",
        "description": "Retrieves a Subscription with the specified GUID identifier.",
        "operationId": "GetSubscriptionById",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Cancel a Subscription.",
        "description": "Cancels a customer subscription. This process is asynchronous, therefore it will start executing after the request is submitted and may take some time.",
        "operationId": "CancelSubscription",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "409": {
            "description": "Conflict",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictingSubscriptionsViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictingSubscriptionsViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictingSubscriptionsViewModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      },
      "patch": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Update a Subscription",
        "description": "Updates the specified subscription. This process is asynchronous, therefore it will start executing after the request is submitted and may take some time.",
        "operationId": "UpdateSubscription",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The subscription base info to update the existent subscription.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscriptionBaseInfoViewModel"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictingSubscriptionsViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictingSubscriptionsViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictingSubscriptionsViewModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/suspend": {
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Suspend a Subscription.",
        "description": "Suspends a customer subscription. This process is asynchronous, therefore it will start executing after the request is submitted and may take some time.",
        "operationId": "SuspendSubscription",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/reactivate": {
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Reactivate a Subscription.",
        "description": "Reactivates a customer subscription. This process is asynchronous, therefore it will start executing after the request is submitted and may take some time.",
        "operationId": "ReactivateSubscription",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/price-margin": {
      "patch": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Update a Subscription price margin",
        "description": "Updates the specified subscription price margin.\r\n**Available to the roles:** csp, reseller",
        "operationId": "UpdateSubscriptionPriceMargin",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The price margin to update the existent subscription.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PriceMargin"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/internal-id": {
      "patch": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Update a Subscription internal id",
        "description": "Updates the specified subscription internal id.\r\n**Available to the roles:** csp, reseller",
        "operationId": "UpdateSubscriptionInternalId",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The internal id to update the existent subscription. This may be up to 255 characters.",
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/po-number": {
      "patch": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Update a Subscription PO number",
        "description": "Updates the specified subscription PO number. Allowed for the CSP, the reseller or the customer associated to the subscription.\r\n**Available to the roles:** csp, reseller, customer",
        "operationId": "UpdateSubscriptionPONumber",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The PO number to update the existent subscription. This may be up to 255 characters.",
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/azure-entitlements": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "List all azure entitlements Subscriptions",
        "description": "Returns a list of azure entitlements subscriptions for the provided parent subscription id.",
        "operationId": "GetAzureEntitlements",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "The GUID identifier for the parent subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "The reseller identifier. View only the customer subscriptions for this reseller.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SubscriptionListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SubscriptionListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SubscriptionListItem"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/eligible-transitions": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "List Subscription eligible transitions",
        "description": "Returns a list of eligible transitions for a specified subscription.",
        "operationId": "GetSubscriptionEligibleTransitions",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "eligibilityType",
            "in": "query",
            "description": "The type of eligible transitions.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SubscriptionTransitionViewModel"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SubscriptionTransitionViewModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SubscriptionTransitionViewModel"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/eligible-for-upgrade": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "List eligible Subscriptions for upgrade",
        "description": "Returns a list of eligible subscriptions for upgrade of a specified subscription.",
        "operationId": "GetUpgradeEligibleSubscriptions",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "offerId",
            "in": "query",
            "description": "GUID Unique identifier for the offer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "GUID Unique identifier for the reseller. This identifier must match the origin subscription that is intended for upgrade.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SubscriptionListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SubscriptionListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SubscriptionListItem"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/upgrade-offers/{offerId}": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Get the destination offer for a subscription upgrade, with prices already adjusted for the subscription's margin.",
        "operationId": "GetUpgradeOffer",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription being upgraded.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "offerId",
            "in": "path",
            "description": "GUID Unique identifier for the destination offer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "GUID Unique identifier for the provider instance.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "GUID Unique identifier for the reseller. Only usable for CSPs.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "segment",
            "in": "query",
            "description": "The string indicating which segment to get the offers for. Possible values: Commercial, Education, Government or NonProfit.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OfferViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OfferViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OfferViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/upgrade": {
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Upgrade a Subscription",
        "description": "Upgrades the specified subscription. This process is asynchronous, therefore it will start executing after the request is submitted and may take some time.",
        "operationId": "UpgradeSubscription",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The subscription transition info to upgrade the existent subscription.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubscriptionTransitionViewModel"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "409": {
            "description": "Conflict",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictingSubscriptionsViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictingSubscriptionsViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConflictingSubscriptionsViewModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/name": {
      "patch": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Update a entitlement Subscription name",
        "description": "Updates the specified entitlement subscription friendly name. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.",
        "operationId": "RenameEntitlement",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The entitlement subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the entitlement subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The friendly name to update the existent entitlement subscription. This may be up to 255 characters.",
          "content": {
            "application/json": {
              "schema": {
                "type": "string"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/grant-owner-access/{userEmail}": {
      "put": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Grants owner access to a Azure entitlement.",
        "description": "Grants owner access to a Azure entitlement.\r\n**Available to the roles:** csp, reseller",
        "operationId": "GrantOwnerAccessToAzureEntitlement",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The entitlement subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the entitlement subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "userEmail",
            "in": "path",
            "description": "The user email to grant owner access to.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/monthly-budget": {
      "patch": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Set monthly budget for an Azure Subscription",
        "description": "Sets the monthly budget in the specified azure subscription. Since this resource is specific to the Microsoft provider, this request is only valid for provider customers that belong to a Microsoft tenant/provider.\r\n**Available to the roles:** csp, reseller",
        "operationId": "SetMonthlyBudget",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The entitlement subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the entitlement subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The request body with the info to perform the action. This body contains an JSON Object with a property (monthlyBudget).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetMonthlyBudgetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/custom-term-end-dates": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "List all Subscriptions end-dates for coterminosity.",
        "description": "Returns a list of Subscriptions end-dates for the provided customer and term duration.",
        "operationId": "GetSubscriptionsEndDates",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "termDuration",
            "in": "query",
            "description": "The term duration",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "providerInstanceId",
            "in": "query",
            "description": "The provider instance Id",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionEndDate",
            "in": "query",
            "description": "The subscription end date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/migration": {
      "post": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Migrate a subscription.",
        "description": "Migrates the specified subscription. Since this resource is specific to the Microsoft provider, this request is only valid for subscriptions that belong to a Microsoft tenant/provider.",
        "operationId": "MigrateSubscription",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The subscription migration info to migrate the existent subscription.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MigrateSubscriptionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      },
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "Retrieve Migration status.",
        "description": "Retrieve the migration status for the specified subscription. Since this resource is specific to the Microsoft provider, this request is only valid for subscriptions that belong to a Microsoft tenant/provider.",
        "operationId": "GetSubscriptionMigrationStatus",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MigrationStatusViewModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MigrationStatusViewModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MigrationStatusViewModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customers/{customerId}/subscriptions/{subscriptionId}/eligible-renewal-offers": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "summary": "List Subscription eligible offers for renewal.",
        "description": "Returns a list of eligible offers for renewal for a specified subscription.",
        "operationId": "GetEligibleRenewalOffers",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer. The subscription must belong to this customer, otherwise this request will fail.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "GUID Unique identifier for the subscription.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RenewOfferViewModel"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RenewOfferViewModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RenewOfferViewModel"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "List all Users",
        "description": "Returns a list of your users. The users are returned sorted by the specified sortPropertyName.\r\n**Available to the roles:** csp, reseller",
        "operationId": "GetUsers",
        "parameters": [
          {
            "name": "pageNumber",
            "in": "query",
            "description": "A cursor for pagination across multiple pages of results. The default value is 1.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of objects to be returned at each page. The size can range between 1 and 2000, and the default is 25.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "searchValue",
            "in": "query",
            "description": "The search query string.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sortPropertyName",
            "in": "query",
            "description": "The name of the property to sort the customers by. Possible values: Name or Email",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ascendingOrder",
            "in": "query",
            "description": "if set to `true` [ascending order].",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "groups",
            "in": "query",
            "description": "The groups.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "GUID Unique identifier for the reseller. View only users in the context of the specified resellerId. In case of a reseller user this property is auto-populated.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UserViewModelPagedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserViewModelPagedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserViewModelPagedCollection"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/users/groups": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "List all Groups",
        "description": "Returns a list of groups. The groups are returned sorted by Name.",
        "operationId": "GetGroups",
        "parameters": [
          {
            "name": "pageNumber",
            "in": "query",
            "description": "A cursor for pagination across multiple pages of results. The default value is 1.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of objects to be returned at each page. The size range between 1 and 2000, and the default is 25.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GroupViewModelPagedCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupViewModelPagedCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupViewModelPagedCollection"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/users/{email}": {
      "patch": {
        "tags": [
          "Users"
        ],
        "summary": "Updates a User",
        "description": "Updates the specified User.",
        "operationId": "UpdateUser",
        "parameters": [
          {
            "name": "email",
            "in": "path",
            "description": "The email of the csp user to update.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "The reseller id.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The user info to update the existent user.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserViewModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Users"
        ],
        "summary": "Delete a User",
        "description": "Deletes the specified User. This request only soft-deletes the user, so it will still exists after this request but, will be hidden.",
        "operationId": "DeleteUser",
        "parameters": [
          {
            "name": "email",
            "in": "path",
            "description": "The email of the user to delete.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "The reseller id of the user to delete.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/reseller/{resellerId}/users": {
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Create a Reseller User",
        "description": "Creates a new User with the provided UserViewModel.\r\n**Available to the roles:** csp, reseller",
        "operationId": "CreateResellerUser",
        "parameters": [
          {
            "name": "resellerId",
            "in": "path",
            "description": "GUID Unique identifier for the reseller. The reseller context that the customer will be created under.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The user info to create the user.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserViewModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    },
    "/v1/customer/{customerId}/users": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "List all Users for a Customer",
        "description": "Returns a list of users for the specified customer. The users are returned sorted by Name.",
        "operationId": "GetCustomerUsersWithAccess",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "GUID Unique identifier for the reseller. View only users in the context of the specified resellerId. In case of a reseller user this property is auto-populated.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserViewModel"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserViewModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserViewModel"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      },
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Create a Customer User",
        "description": "Creates a new User with the provided UserViewModel.",
        "operationId": "GrantAccessToCustomerUser",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "GUID Unique identifier for the customer.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "resellerId",
            "in": "query",
            "description": "GUID Unique identifier for the reseller. The reseller context that the customer will be created under.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "X-Tenant",
            "in": "header",
            "description": "The domain used to access the portal.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "portal.cloudcockpit.com"
          },
          {
            "name": "Authorization",
            "in": "header",
            "description": "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ0eXAiO..."
            }
          },
          {
            "name": "X-Correlation-Id",
            "in": "header",
            "description": "This header is optional and by setting it you can correlate the audit logs made by this request.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The user info to create the user.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserViewModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "application/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "text/json": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponseModel"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": [ ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AddProviderInstanceToCustomerRequest": {
        "required": [
          "margin",
          "providerCustomerData",
          "providerInstanceId"
        ],
        "type": "object",
        "properties": {
          "providerInstanceId": {
            "type": "string",
            "description": "The GUID identifier for the provider instance.",
            "format": "uuid"
          },
          "providerCustomerData": {
            "type": "string",
            "description": "The provider specific data for this customer.\nFor a microsoft provider instance the json object needs the following properties:\n- Domain (Example: TestDomain)\n- CredentialsEmail (Example: test@email.com)\n- AcceptedMCA (Example: true)\n- AgreementDate (Example: 2022-12-28T00:00:00Z)\n- KeepPrimaryInformation (Example: true)\n- FirstName (Example: Test)\n- LastName (Example: Test)\n- Email (Example: test@email.com)\n- Phone (Example: 921231231)\n- DefaultCulture (Example: en-US)\n- Language (Example: en)\n- AssociatedPartnerId (Example: 6234552)\n- Qualifications (Example: [])\n- EnableGDAP (Example: true)",
            "nullable": true
          },
          "margin": {
            "$ref": "#/components/schemas/PriceMargin"
          },
          "offerTypeMargins": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/PriceMargin"
            },
            "description": "Contains as key the name of the offer type and as value the price margin applied to each offer type for this specific provider instance.\nPrice margins applied at the offer type level will override the price margin applied at the provider instance level.\nIf no price margin is applied to a specific offer type of this provider instance then it will not be in the dictionary.\nThis dictionary is optional.",
            "nullable": true,
            "example": {
              "Value": {
                "license": {
                  "MarginRule": {
                    "Name": "markup"
                  },
                  "Value": 10
                }
              }
            }
          }
        },
        "additionalProperties": false,
        "description": "Request with the information of the provider instance to add to the customer."
      },
      "AuditLogOrigin": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The origin of the audit log. Possible values: User, API or System"
      },
      "AuditLogStatus": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The status of the audit log. Possible values: Processing, Succeded or Failed"
      },
      "AuditLogViewModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The GUID identifier for the audit log.",
            "format": "uuid"
          },
          "customer": {
            "type": "string",
            "description": "The company name of the customer affected by this audit log. Can be null if no customer was affected.",
            "nullable": true
          },
          "reseller": {
            "type": "string",
            "description": "The company name of the reseller affected by this audit log. Can be null if no reseller was affected.",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "description": "The timestamp when the audit log was first created.",
            "format": "date-time"
          },
          "operation": {
            "type": "string",
            "description": "The name of the operation for this audit log.",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/AuditLogStatus"
          },
          "user": {
            "type": "string",
            "description": "The email of the user that initiated this audit log.",
            "nullable": true
          },
          "origin": {
            "$ref": "#/components/schemas/AuditLogOrigin"
          },
          "entityType": {
            "type": "string",
            "description": "The type of the entity affected in this audit log.",
            "nullable": true
          },
          "entityId": {
            "type": "string",
            "description": "The entity identifier affected in this audit log.",
            "format": "uuid",
            "nullable": true
          },
          "oldValues": {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "description": "A dictionary with keys of value string and values of type object that contain the old property values of the entity that was affected. If the entity was created this property will be null.",
            "nullable": true,
            "readOnly": true
          },
          "newValues": {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "description": "A dictionary with keys of value string and values of type object that contain the new property values of the entity that was affected. If the entity was deleted this property will be null.",
            "nullable": true,
            "readOnly": true
          },
          "message": {
            "type": "string",
            "description": "The message of the audit log.",
            "nullable": true
          },
          "correlationId": {
            "type": "string",
            "description": "The correlation id of the audit log.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "View model that represents an audit log."
      },
      "AuditLogViewModelPagedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AuditLogViewModel"
            },
            "description": "The items for this page.",
            "nullable": true,
            "readOnly": true
          },
          "paginationParameters": {
            "$ref": "#/components/schemas/PaginationParameters"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total number of pages available for the specified parameters and page size.",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of results available for the specified parameters. Note this is typically not equal to the Count of items in the Items property, will only be equal if all the items fit in the first page.",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there is a previous page.",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there is a next page.",
            "readOnly": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Helper class to be used on paged collection entities"
      },
      "AutoRenewSettings": {
        "required": [
          "billingFrequency",
          "quantity",
          "term"
        ],
        "type": "object",
        "properties": {
          "term": {
            "$ref": "#/components/schemas/TermDuration"
          },
          "billingFrequency": {
            "$ref": "#/components/schemas/BillingFrequency"
          },
          "quantity": {
            "type": "integer",
            "description": "The quantity",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "customTermEndDate": {
            "type": "string",
            "description": "The custom term end date",
            "format": "date-time",
            "nullable": true
          },
          "providerOfferId": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "BadRequestErrorResponse": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "integer",
            "description": "The HTTP status code that represents a specific error scenario.",
            "format": "int32",
            "readOnly": true,
            "example": 400
          },
          "type": {
            "type": "string",
            "description": "The type of error that occurred.",
            "nullable": true,
            "readOnly": true,
            "example": "ValidationException"
          },
          "description": {
            "type": "string",
            "description": "Describes the error scenario that occurred.",
            "nullable": true,
            "readOnly": true,
            "example": "Validation failed: \\n -- PageSize: The page size must be between 1 and 2000 Severity: Error"
          },
          "correlationId": {
            "type": "string",
            "description": "The correlationId of the request that originated the error.",
            "nullable": true,
            "readOnly": true,
            "example": "685043EA-6D49-4ACE-8BDB-CCE9D3E2DBD0"
          }
        },
        "additionalProperties": false,
        "description": "An example of the API response when a bad request error happens."
      },
      "BillingFrequency": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The billing frequency for this entity. Possible values: OneTime, Monthly, Annual, Triennial or None"
      },
      "BillingType": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The billing type for the offer. Possible values: License, Usage or None"
      },
      "ConflictingSubscriptionsViewModel": {
        "type": "object",
        "properties": {
          "portalSubscription": {
            "$ref": "#/components/schemas/SubscriptionConflictCheckInfoViewModel"
          },
          "providerSubscription": {
            "$ref": "#/components/schemas/SubscriptionConflictCheckInfoViewModel"
          }
        },
        "additionalProperties": false
      },
      "CountryCode": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "description": "The value that represents a country in standard ISO 3166-1 alpha-2.\nThe value contains only two letters in uppercase format.\nThis standard is available at https://www.iban.com/country-codes.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "CreateCustomerUserRequest": {
        "required": [
          "customerUser",
          "providerInstanceId"
        ],
        "type": "object",
        "properties": {
          "providerInstanceId": {
            "type": "string",
            "description": "The GUID identifier for the provider instance.",
            "format": "uuid"
          },
          "customerUser": {
            "$ref": "#/components/schemas/CustomerUserViewModel"
          }
        },
        "additionalProperties": false
      },
      "CreateDelegatedAdminRelationshipRequest": {
        "required": [
          "autoExtendEnabled",
          "displayName",
          "providerInstanceId"
        ],
        "type": "object",
        "properties": {
          "providerInstanceId": {
            "type": "string",
            "description": "The GUID identifier for the provider instance.",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "description": "The display name to set in the relationship. This may be up to 50 characters.",
            "nullable": true
          },
          "autoExtendEnabled": {
            "type": "boolean",
            "description": "The flag to indicate whether the relationship is auto extend enabled."
          },
          "customSelectedGdapRolesIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of ids of the custom GDAP roles selection.\nIn the absence of this property (null), a new relationship with the default roles set in the portal will be created.\nThe ids of the possible roles to chose from can be found here https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference#all-roles",
            "nullable": true,
            "example": [
              "729827e3-9c14-49f7-bb1b-9608f156bbb8",
              "4d6ac14f-3453-41d0-bef9-a3e0c569773a"
            ]
          }
        },
        "additionalProperties": false
      },
      "CreateOrderResponseViewModel": {
        "type": "object",
        "properties": {
          "orderId": {
            "type": "string",
            "description": "The id of the order that was created on CloudCockpit.",
            "format": "uuid",
            "example": "573b2955-f31f-4edd-9a52-0226e0b0111f"
          }
        },
        "additionalProperties": false,
        "description": "The response model that contains the id of the order that was created on CloudCockpit."
      },
      "Currency": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the currency.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "CustomDomainStatus": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "CustomerAccountInfoViewModel": {
        "required": [
          "addressLine1",
          "city",
          "companyName",
          "country",
          "email",
          "firstName",
          "lastName",
          "phone",
          "state",
          "zip"
        ],
        "type": "object",
        "properties": {
          "companyName": {
            "type": "string",
            "description": "The name of the company. This may be up to 255 characters.",
            "nullable": true
          },
          "taxId": {
            "type": "string",
            "description": "The company tax Id. This may be up to 255 characters.",
            "nullable": true
          },
          "country": {
            "type": "string",
            "description": "The company country code in the ISO 3166-1 alpha-2 standard.",
            "nullable": true,
            "example": "PT"
          },
          "addressLine1": {
            "type": "string",
            "description": "The company address line 1. This may be up to 255 characters.",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "description": "The company address line 2. This may be up to 255 characters.",
            "nullable": true
          },
          "city": {
            "type": "string",
            "description": "The company city. This may be up to 255 characters.",
            "nullable": true
          },
          "state": {
            "type": "string",
            "description": "The company State. This may be up to 255 characters.",
            "nullable": true
          },
          "zip": {
            "type": "string",
            "description": "The company ZIP. This may be up to 30 characters.",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "description": "The company primary contact first name. This may be up to 255 characters.",
            "nullable": true
          },
          "middleName": {
            "type": "string",
            "description": "The company primary contact middle name. This may be up to 255 characters.",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "description": "The company primary contact last name. This may be up to 255 characters.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The company primary contact email. This may be up to 255 characters.",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "The company primary contact phone. This may be up to 30 characters.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "View model that represents a customer."
      },
      "CustomerAssociationViewModel": {
        "type": "object",
        "properties": {
          "resellerId": {
            "type": "string",
            "description": "The reseller id.",
            "format": "uuid",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The name of the partner.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The viewmodel for the customer relationships."
      },
      "CustomerCreationError": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The creation error for this provider customer. This property will only have a diferent value than None if the Status is equal to Failed.\nPossible values: DomainExists, InvalidCompanyInfo, None or Unknown"
      },
      "CustomerLicenseViewModel": {
        "required": [
          "isSelected",
          "skuId"
        ],
        "type": "object",
        "properties": {
          "skuId": {
            "type": "string",
            "description": "The license sku id.",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "The license name.",
            "nullable": true
          },
          "availableLicenses": {
            "type": "integer",
            "description": "The number of available licenses.",
            "format": "int32"
          },
          "isSelected": {
            "type": "boolean",
            "description": "If the license is selected or not."
          },
          "totalLicenses": {
            "type": "integer",
            "description": "The number of total licenses.",
            "format": "int32"
          },
          "consumedLicenses": {
            "type": "integer",
            "description": "The number of consumed licenses.",
            "format": "int32"
          },
          "suspendedLicenses": {
            "type": "integer",
            "description": "The number of suspended licenses.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "The view model of a customer license."
      },
      "CustomerUserRoleViewModel": {
        "type": "object",
        "properties": {
          "roleId": {
            "type": "string",
            "description": "The role identifier.",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "The role name.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The view model of a customer user role."
      },
      "CustomerUserViewModel": {
        "required": [
          "displayName",
          "domain",
          "email",
          "location"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The GUID identifier for the customer.",
            "format": "uuid"
          },
          "displayName": {
            "type": "string",
            "description": "The customer user display name. This may be up to 50 characters.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The customer user email. This may be up to 48 characters.",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "description": "THe customer user first name. This may be up to 50 characters.",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "description": "The customer user last name. This may be up to 50 characters.",
            "nullable": true
          },
          "location": {
            "type": "string",
            "description": "The customer user location.",
            "nullable": true
          },
          "temporaryPassword": {
            "type": "string",
            "description": "The customer user temporary password.",
            "nullable": true
          },
          "domain": {
            "type": "string",
            "description": "The customer domain.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomerUserViewModelPagedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerUserViewModel"
            },
            "description": "The items for this page.",
            "nullable": true,
            "readOnly": true
          },
          "paginationParameters": {
            "$ref": "#/components/schemas/PaginationParameters"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total number of pages available for the specified parameters and page size.",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of results available for the specified parameters. Note this is typically not equal to the Count of items in the Items property, will only be equal if all the items fit in the first page.",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there is a previous page.",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there is a next page.",
            "readOnly": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Helper class to be used on paged collection entities"
      },
      "CustomerViewModel": {
        "required": [
          "addressLine1",
          "city",
          "companyName",
          "country",
          "email",
          "firstName",
          "lastName",
          "phone",
          "providerCustomers",
          "state",
          "zip"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The GUID identifier for the customer.",
            "format": "uuid"
          },
          "companyName": {
            "type": "string",
            "description": "The name of the company. This may be up to 255 characters.",
            "nullable": true
          },
          "taxId": {
            "type": "string",
            "description": "The company tax Id. This may be up to 255 characters.",
            "nullable": true
          },
          "country": {
            "type": "string",
            "description": "The company country code in the ISO 3166-1 alpha-2 standard.",
            "nullable": true,
            "example": "PT"
          },
          "addressLine1": {
            "type": "string",
            "description": "The company address line 1. This may be up to 255 characters.",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "description": "The company address line 2. This may be up to 255 characters.",
            "nullable": true
          },
          "city": {
            "type": "string",
            "description": "The company city. This may be up to 255 characters.",
            "nullable": true
          },
          "state": {
            "type": "string",
            "description": "The company State. This may be up to 255 characters.",
            "nullable": true
          },
          "zip": {
            "type": "string",
            "description": "The company ZIP. This may be up to 30 characters.",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "description": "The company primary contact first name. This may be up to 255 characters.",
            "nullable": true
          },
          "middleName": {
            "type": "string",
            "description": "The company primary contact middle name. This may be up to 255 characters.",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "description": "The company primary contact last name. This may be up to 255 characters.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The company primary contact email. This may be up to 255 characters.",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "The company primary contact phone. This may be up to 30 characters.",
            "nullable": true
          },
          "internalIdentifier": {
            "type": "string",
            "description": "The customer internal identifier. This may be up to 255 characters.",
            "nullable": true
          },
          "resellerId": {
            "type": "string",
            "description": "The reseller identifier. If this value is set a relation between this customer and the reseller will be created, if null a direct relation between the CSP and the customer will be created instead.",
            "format": "uuid",
            "nullable": true
          },
          "providerCustomers": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ProviderCustomerViewModel"
                },
                {
                  "$ref": "#/components/schemas/MicrosoftProviderCustomerViewModel"
                },
                {
                  "$ref": "#/components/schemas/GenericProviderCustomerViewModel"
                }
              ],
              "description": "Represents a customer associated with a specific provider.",
              "nullable": true
            },
            "description": "The provider customers. A list containing the info about this customer in one or more provider instances.",
            "nullable": true,
            "example": {
              "cb3cd15b-1d6e-45be-b493-c71549cbfd87": {
                "providerName": "Microsoft",
                "providerInstanceId": "cb3cd15b-1d6e-45be-b493-c71549cbfd87",
                "providerCustomerId": "f574cf12-a7d6-43fe-9663-1af97b04e5ab",
                "providerCustomerData": "{\"Domain\":\"TestDomain\",\"CredentialsEmail\":\"test@email.com\",\"AcceptedMCA\":true,\"AgreementDate\":\"2022-12-28T00:00:00Z\",\"KeepPrimaryInformation\":true,\"FirstName\":\"Test\",\"LastName\":\"Test\",\"Email\":\"test@email.com\",\"Phone\":\"921231231\",\"DefaultCulture\":\"en-US\",\"Language\":\"en\",\"AssociatedPartnerId\":null,\"Qualifications\":[],\"EnableGDAP\":true}",
                "margin": {
                  "marginRule": {
                    "name": "markup"
                  },
                  "value": 10.6
                },
                "offerTypeMargins": {
                  "Value": {
                    "license": {
                      "MarginRule": {
                        "Name": "markup"
                      },
                      "Value": 10
                    }
                  }
                },
                "microsoftCustomerAgreement": {
                  "customerId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                  "providerInstanceId": "cb3cd15b-1d6e-45be-b493-c71549cbfd87",
                  "signatoryContact": null,
                  "status": {
                    "name": "required"
                  },
                  "attestationId": null,
                  "lastUpdate": null,
                  "dateAgreed": null
                }
              }
            }
          },
          "customerAssociations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerAssociationViewModel"
            },
            "description": "The list of partners associated to a customer",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "View model that represents a customer."
      },
      "CustomerViewModelPagedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerViewModel"
            },
            "description": "The items for this page.",
            "nullable": true,
            "readOnly": true
          },
          "paginationParameters": {
            "$ref": "#/components/schemas/PaginationParameters"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total number of pages available for the specified parameters and page size.",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of results available for the specified parameters. Note this is typically not equal to the Count of items in the Items property, will only be equal if all the items fit in the first page.",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there is a previous page.",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there is a next page.",
            "readOnly": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Helper class to be used on paged collection entities"
      },
      "DelegatedAdminAccessAssignmentStatus": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "DelegatedAdminAccessAssignmentViewModel": {
        "type": "object",
        "properties": {
          "accessContainer": {
            "$ref": "#/components/schemas/DelegatedAdminAccessContainerViewModel"
          },
          "accessDetails": {
            "$ref": "#/components/schemas/DelegatedAdminAccessDetails"
          },
          "createdDateTime": {
            "type": "string",
            "description": "The date and time in UTC time when the access assignment was created. Read-only.",
            "format": "date-time",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "The unique identifier of the access assignment. Read-only.",
            "nullable": true
          },
          "lastModifiedDateTime": {
            "type": "string",
            "description": "The date and time in UTC time when this access assignment was last modified. Read-only.",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/DelegatedAdminAccessAssignmentStatus"
          }
        },
        "additionalProperties": false
      },
      "DelegatedAdminAccessContainerType": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "DelegatedAdminAccessContainerViewModel": {
        "type": "object",
        "properties": {
          "accessContainerId": {
            "type": "string",
            "description": "The identifier of the access container (for example, a security group). \nFor \"securityGroup\" access containers, this must be a valid ID of an Azure AD security group in the Microsoft partner's tenant.",
            "nullable": true
          },
          "accessContainerType": {
            "$ref": "#/components/schemas/DelegatedAdminAccessContainerType"
          }
        },
        "additionalProperties": false
      },
      "DelegatedAdminAccessDetails": {
        "type": "object",
        "properties": {
          "unifiedRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UnifiedRole"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "DelegatedAdminAccessDetailsViewModel": {
        "type": "object",
        "properties": {
          "unifiedRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UnifiedRoleViewModel"
            },
            "description": "The directory roles that the Microsoft partner is assigned in the customer tenant.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DelegatedAdminRelation": {
        "type": "object",
        "properties": {
          "relationshipId": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "displayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "duration": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "autoExtendDuration": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "customer": {
            "$ref": "#/components/schemas/DelegatedAdminRelationCustomerParticipant"
          },
          "status": {
            "$ref": "#/components/schemas/DelegatedAdminRelationStatus"
          },
          "accessDetails": {
            "$ref": "#/components/schemas/DelegatedAdminAccessDetails"
          }
        },
        "additionalProperties": false
      },
      "DelegatedAdminRelationCustomerParticipant": {
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "DelegatedAdminRelationStatus": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "DelegatedAdminRelationshipViewModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the relationship.",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "description": "The display name of the relationship.",
            "nullable": true
          },
          "duration": {
            "type": "string",
            "description": "The duration of the relationship",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/DelegatedAdminRelationStatus"
          },
          "createdDateTime": {
            "type": "string",
            "description": "The date when the relationship was created",
            "format": "date-time",
            "nullable": true
          },
          "activatedDateTime": {
            "type": "string",
            "description": "The date when the relationship was activated",
            "format": "date-time",
            "nullable": true
          },
          "lastModifiedDateTime": {
            "type": "string",
            "description": "The date when the relationship was last modified",
            "format": "date-time",
            "nullable": true
          },
          "endDateTime": {
            "type": "string",
            "description": "The date when the relationship ends",
            "format": "date-time",
            "nullable": true
          },
          "accessDetails": {
            "$ref": "#/components/schemas/DelegatedAdminAccessDetailsViewModel"
          },
          "autoExtendDuration": {
            "type": "string",
            "description": "The auto extend duration of the relationship",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DeleteCustomerUserRequest": {
        "required": [
          "providerInstanceId"
        ],
        "type": "object",
        "properties": {
          "providerInstanceId": {
            "type": "string",
            "description": "The GUID identifier for the provider instance.",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "EntityStatus": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The status for this entity. Possible values: Processing, Success, Failed"
      },
      "ErrorModel": {
        "type": "object",
        "properties": {
          "propertyName": {
            "type": "string",
            "description": "The name of the property involved in the error.",
            "nullable": true,
            "readOnly": true
          },
          "description": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A description of each error associated with the given property.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "This class is used to represent the details of an error and specifies the name of the property and the description\nof each of the errors associated with that property."
      },
      "ErrorResponseModel": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "integer",
            "description": "The HTTP status code that represents a specific error scenario.",
            "format": "int32",
            "readOnly": true
          },
          "type": {
            "type": "string",
            "description": "The type of error that occurred.",
            "nullable": true,
            "readOnly": true
          },
          "description": {
            "type": "string",
            "description": "Describes the error scenario that occurred.",
            "nullable": true,
            "readOnly": true
          },
          "correlationId": {
            "type": "string",
            "description": "The correlationId of the request that originated the error.",
            "nullable": true,
            "readOnly": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorModel"
            },
            "description": "A list containing the detail of the errors that occurred in this error scenario.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "This class represents the response which is returned to consumers in case of an error, containing details about it, as well as the correlationId\nof the performed request so that consumers can supply us that id for us to provide support."
      },
      "GenericProviderCustomerViewModel": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/ProviderCustomerViewModel"
          }
        ],
        "additionalProperties": false
      },
      "GroupViewModel": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the group.",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "The group name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "View model that represents a group."
      },
      "GroupViewModelPagedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GroupViewModel"
            },
            "description": "The items for this page.",
            "nullable": true,
            "readOnly": true
          },
          "paginationParameters": {
            "$ref": "#/components/schemas/PaginationParameters"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total number of pages available for the specified parameters and page size.",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of results available for the specified parameters. Note this is typically not equal to the Count of items in the Items property, will only be equal if all the items fit in the first page.",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there is a previous page.",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there is a next page.",
            "readOnly": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Helper class to be used on paged collection entities"
      },
      "InternalServerErrorResponse": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "integer",
            "description": "The HTTP status code that represents a specific error scenario.",
            "format": "int32",
            "readOnly": true,
            "example": 500
          },
          "type": {
            "type": "string",
            "description": "The type of error that occurred.",
            "nullable": true,
            "readOnly": true,
            "example": "NullReferenceException"
          },
          "description": {
            "type": "string",
            "description": "Describes the error scenario that occurred.",
            "nullable": true,
            "readOnly": true,
            "example": "An error happened processing your request. Please contact support."
          },
          "correlationId": {
            "type": "string",
            "description": "The correlationId of the request that originated the error.",
            "nullable": true,
            "readOnly": true,
            "example": "685043EA-6D49-4ACE-8BDB-CCE9D3E2DBD0"
          }
        },
        "additionalProperties": false,
        "description": "An example of the API response when an internal server happens."
      },
      "InvoiceDailyRatedUsageLineItemResellerViewModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id that uniquely identifies a daily rated usage invoice line item.",
            "format": "uuid",
            "example": "A0D0759D-49C9-49C6-83FA-83C92749CBEB"
          },
          "customerProviderId": {
            "type": "string",
            "description": "The id of customer on the provider's side associated with the charge.",
            "nullable": true,
            "example": "F9C5A7CE-EC5C-4DD9-ADA4-F4DE10DE8E94"
          },
          "billingCurrency": {
            "type": "string",
            "description": "The billing currency code, in 3 letter format.",
            "nullable": true,
            "example": "EUR"
          },
          "customerId": {
            "type": "string",
            "description": "The id of the customer associated with this charge.\nCan be null, for example when the CSP removed the relationship with the customer on the provider side\nand the customer wasn't in our system when that happened.",
            "format": "uuid",
            "nullable": true,
            "example": "6BC16733-4A2F-4393-B9F4-89B0AED854C7"
          },
          "customerName": {
            "type": "string",
            "description": "The company name of the customer.",
            "nullable": true,
            "example": "Customer name"
          },
          "customerInternalId": {
            "type": "string",
            "description": "The internal id of the customer associated with this charge.",
            "nullable": true,
            "example": "CustomerTest"
          },
          "subscriptionId": {
            "type": "string",
            "description": "The id of the subscription associated with the charge.\nCan be null, for example when the CSP removed the relationship with the customer on the provider side\nand the subscription wasn't in our system when that happened.",
            "format": "uuid",
            "nullable": true,
            "example": "58F0AA3E-5152-4C1E-8E39-10D20F908C1F"
          },
          "providerSubscriptionId": {
            "type": "string",
            "description": "The id of the subscription associated with this charge on the provider's side.",
            "nullable": true,
            "example": "E896E6F0-9BEE-4F3F-9138-38737037A627"
          },
          "subscriptionName": {
            "type": "string",
            "description": "The friendly name of the subscription.",
            "nullable": true,
            "example": "Azure plan"
          },
          "subscriptionInternalId": {
            "type": "string",
            "description": "The internal id of the subscription associated with this charge.",
            "nullable": true,
            "example": "SubscriptionTest"
          },
          "entitlementId": {
            "type": "string",
            "description": "The id of the azure subscription associated to the charge.",
            "nullable": true,
            "example": "fd666eca-477d-4f30-95ac-9ff265ce22aa"
          },
          "entitlementDescription": {
            "type": "string",
            "description": "The name of the azure subscription associated to the charge.",
            "nullable": true,
            "example": "Subscription-Demo"
          },
          "resourceGroup": {
            "type": "string",
            "description": "The name of the resource group associated to the charge.",
            "nullable": true,
            "example": "Demo-RG"
          },
          "pecAwarded": {
            "type": "boolean",
            "description": "A boolean value indicating if the PEC was awarded on this charge.",
            "example": true
          },
          "subtotalForReseller": {
            "type": "number",
            "description": "The cost the reseller pays for the subscription on this charge before taxes.",
            "format": "double",
            "nullable": true,
            "example": 96.54238
          },
          "subtotalForCustomer": {
            "type": "number",
            "description": "The price the customer pays for the subscription on this charge before taxes.",
            "format": "double",
            "nullable": true,
            "example": 98.015
          },
          "customerPriceMarginRule": {
            "type": "string",
            "description": "The margin rule and value applied at the customer level.\nIf there is a price margin applied at the offer category, then that is the one chosen.\nHowever, if the subscription price margin is set, then it overrides this one.",
            "nullable": true,
            "example": "erpminudiscount"
          },
          "customerPriceMargin": {
            "type": "number",
            "description": "The margin value applied at the customer level.\nIf there is a price margin applied at the offer category, then that is the one chosen.",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "subscriptionPriceMarginRule": {
            "type": "string",
            "description": "The margin rule applied at the subscription level (can be null).\nThis margin overrides the customer's price margin, if it is set.\nWe still show both the customer and subscription price margin.",
            "nullable": true,
            "example": "erpminudiscount"
          },
          "subscriptionPriceMargin": {
            "type": "number",
            "description": "The margin value applied at the subscription level (can be null).\nThis margin overrides the customer's price margin, if it is set.\nWe still show both the customer and subscription price margin.",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "subscriptionPONumber": {
            "type": "string",
            "description": "The purchase order number of the subscription associated with this charge.",
            "nullable": true,
            "example": "8543943821"
          }
        },
        "additionalProperties": false,
        "description": "A model that represents a single charge of a daily rated usage invoice for a reseller.\nIn the case of the Microsoft provider each line item represents an **Azure Pay-As-You-Go** charge\ngrouped by Partner Earned Credit (PEC) and resource group of an azure entitlement of an azure plan subscription of a customer."
      },
      "InvoiceDailyRatedUsageLineItemResellerViewModelSeekBasedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceDailyRatedUsageLineItemResellerViewModel"
            },
            "description": "The items in this particular seek operation.",
            "nullable": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.\nShould not be set if the first page of items is desired.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A helper class to be used by collections where we use a continuation token\nto obtain the next set of results."
      },
      "InvoiceLicenseLineItemCustomerViewModel": {
        "type": "object",
        "properties": {
          "customerId": {
            "type": "string",
            "description": "The id of the customer associated with the charge.\nCan be null, for example when the CSP removed the relationship with the customer on the provider side\nand the customer wasn't in our system when that happened.",
            "format": "uuid",
            "nullable": true,
            "example": "2C741C83-E111-4A77-BC5F-C2F065275FA9"
          },
          "customerName": {
            "type": "string",
            "description": "The company name of the customer associated with the charge.",
            "nullable": true,
            "example": "CloudCockpit"
          },
          "orderId": {
            "type": "string",
            "description": "The id that identifies the order associated with the charge.",
            "nullable": true,
            "example": "569423888785251957"
          },
          "subscriptionProviderId": {
            "type": "string",
            "description": "The id of the subscription associated with the charge on the provider's side.",
            "nullable": true,
            "example": "FA2A91FD-7286-4DCD-9718-20048CCA832A"
          },
          "offerProviderId": {
            "type": "string",
            "description": "The id on the provider's side that identifies the \noffer associated with the charge.",
            "nullable": true,
            "example": "B4D4B7F4-4089-43B6-9C44-DE97B760FB11"
          },
          "offerName": {
            "type": "string",
            "description": "The name of the offer associated with the charge.",
            "nullable": true,
            "example": "Visio Plan 2"
          },
          "subscriptionStartDate": {
            "type": "string",
            "description": "The start date of billing for the subscription.\nThis value can change once a subscription renews.\nIf it renews, then on the next invoice this property is updated too.",
            "format": "date-time",
            "nullable": true,
            "example": "2021-07-21T00:00:00"
          },
          "subscriptionEndDate": {
            "type": "string",
            "description": "The end date of the term of the subscription.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-07-20T00:00:00"
          },
          "chargeStartDate": {
            "type": "string",
            "description": "The billing start date for this charge.",
            "format": "date-time",
            "example": "2022-12-21T00:00:00"
          },
          "chargeEndDate": {
            "type": "string",
            "description": "The billing end date for this charge.",
            "format": "date-time",
            "example": "2023-01-20T00:00:00"
          },
          "chargeType": {
            "type": "string",
            "description": "The type of charge on this line item.\nPossible values for the Microsoft provider include:\n- Activation fee: The amount charged to the customer when they use the subscription after purchase.\n- Cancel fee: Prorated charges refunded to the customer when associated licenses are changed.\n- Cancel instance prorate: Prorated charges canceled when customer with monthly subscription has subscription suspended and associated licenses changed within the same month.\n- Cycle fee: Periodic charges for a subscription.\n- Cycle instance prorate: Prorated charges assessed from the customer when associated licenses are changed.\n- Prorate fees when cancel: Prorated refund for unused portion of service upon cancellation.\n- Prorate fees when convert away from current offering: Prorated charges after converting away from the current monthly subscription to an annual subscription.\n- Prorate fees when convert to a new offering: \tProrated charges after converting a monthly subscription to a new annual subscription.\n- New purchase cycle fee: The charge type for a subscription when using both monthly or annual billing.\n- Prorate fees when purchase: The first cycle fee of a net new subscription.\n- Prorate fee when renew: The first cycle fee of a renewed subscription.\n- Prorate fees when activate: Prorated fees from reactivating suspended subscription until end of billing period.",
            "nullable": true,
            "example": "Cycle fee"
          },
          "quantity": {
            "type": "number",
            "description": "The billed quantity of the subscription associated with the charge.",
            "format": "double",
            "example": 2
          },
          "currency": {
            "type": "string",
            "description": "The currency associated with the prices.",
            "nullable": true,
            "example": "EUR"
          },
          "providerData": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "A dictionary that maps from strings to strings that contains specific provider invoice data.\nIf this line item is associated to a Microsoft invoice then the possible values are:\n**DomainName**: The domain of the customer associated with the charge, example: \"test@pte.onmicrosoft.com\".",
            "nullable": true,
            "example": {
              "DomainName": "test@pte.onmicrosoft.com"
            }
          },
          "subscriptionName": {
            "type": "string",
            "description": "The name of the subscription associated with the charge.",
            "nullable": true,
            "example": "Microsoft 365 Business Standard"
          },
          "subscriptionDescription": {
            "type": "string",
            "description": "The description of the subscription associated with the charge.",
            "nullable": true,
            "example": "Microsoft 365 Business Standard"
          },
          "billingCycleType": {
            "type": "string",
            "description": "The billing cycle of the subscription associated with the charge.",
            "nullable": true,
            "example": "Monthly"
          },
          "unitPriceForCustomer": {
            "type": "number",
            "description": "The price per single quantity that the customer pays.",
            "format": "double",
            "nullable": true,
            "example": 13.11
          },
          "amountForCustomer": {
            "type": "number",
            "description": "The amount for customer without taxes applied but including discounts.",
            "format": "double",
            "nullable": true,
            "example": -7.45
          },
          "subtotalForCustomer": {
            "type": "number",
            "description": "The cost the customer pays for the subscription\non this charge before taxes.",
            "format": "double",
            "nullable": true,
            "example": 50.12
          },
          "taxForCustomer": {
            "type": "number",
            "description": "The taxes the customer pays for the subscription on this charge.",
            "format": "double",
            "nullable": true,
            "example": 7.25
          },
          "totalForCustomer": {
            "type": "number",
            "description": "The cost the customer pays for the subscription\non this charge after taxes.",
            "format": "double",
            "nullable": true,
            "example": 57.31
          },
          "totalOtherDiscountForCustomer": {
            "type": "number",
            "description": "The discount the customer receives for the subscription\non this charge.",
            "format": "double",
            "nullable": true,
            "example": 1.1
          },
          "id": {
            "type": "string",
            "description": "The id that uniquely identifies a license invoice line item.",
            "format": "uuid",
            "example": "7828D90D-2AC6-4F20-A95B-EE850BCD32A0"
          },
          "subscriptionPONumber": {
            "type": "string",
            "description": "The purchase order number of the subscription associated with the charge.",
            "nullable": true,
            "example": "8543943821"
          }
        },
        "additionalProperties": false,
        "description": "A model that represents a single charge of a license invoice.\nIn the case of the Microsoft provider each line item represents an **License legacy** charge."
      },
      "InvoiceLicenseLineItemCustomerViewModelSeekBasedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceLicenseLineItemCustomerViewModel"
            },
            "description": "The items in this particular seek operation.",
            "nullable": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.\nShould not be set if the first page of items is desired.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A helper class to be used by collections where we use a continuation token\nto obtain the next set of results."
      },
      "InvoiceLicenseLineItemResellerViewModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id that uniquely identifies a license invoice line item.",
            "format": "uuid",
            "example": "7828D90D-2AC6-4F20-A95B-EE850BCD32A0"
          },
          "customerProviderId": {
            "type": "string",
            "description": "The id of customer on the provider's side associated with the charge.",
            "nullable": true,
            "example": "CB0A371A-046A-46A9-A299-96BD755E67A8"
          },
          "customerId": {
            "type": "string",
            "description": "The id of the customer associated with the charge.\nCan be null, for example when the CSP removed the relationship with the customer on the provider side\nand the customer wasn't in our system when that happened.",
            "format": "uuid",
            "nullable": true,
            "example": "2C741C83-E111-4A77-BC5F-C2F065275FA9"
          },
          "customerName": {
            "type": "string",
            "description": "The company name of the customer associated with the charge.",
            "nullable": true,
            "example": "CloudCockpit"
          },
          "customerInternalId": {
            "type": "string",
            "description": "The internal id of the customer associated with the charge.",
            "nullable": true,
            "example": "CustomerTest"
          },
          "orderId": {
            "type": "string",
            "description": "The id that identifies the order associated with the charge.",
            "nullable": true,
            "example": "569423888785251957"
          },
          "subscriptionId": {
            "type": "string",
            "description": "The id of the subscription associated with the charge.\nCan be null, for example when the CSP removed the relationship with the customer on the provider side\nand the subscription wasn't in our system when that happened.",
            "format": "uuid",
            "nullable": true,
            "example": "03DE5ECE-EC93-42A9-8F15-9A770AC1F832"
          },
          "subscriptionName": {
            "type": "string",
            "description": "The name of the subscription associated with the charge.",
            "nullable": true,
            "example": "Microsoft 365 Business Standard"
          },
          "subscriptionDescription": {
            "type": "string",
            "description": "The description of the subscription associated with the charge.",
            "nullable": true,
            "example": "Microsoft 365 Business Standard"
          },
          "subscriptionInternalId": {
            "type": "string",
            "description": "The internal id of the subscription associated with the charge.",
            "nullable": true,
            "example": "SubscriptionTest"
          },
          "offerId": {
            "type": "string",
            "description": "The id of the offer in CloudCockpit, associated with the charge.",
            "format": "uuid",
            "nullable": true,
            "example": "A035AB3C-12E1-497B-A7F2-F7A7E31369E5"
          },
          "offerProviderId": {
            "type": "string",
            "description": "The id on the provider's side that identifies the \noffer associated with the charge.",
            "nullable": true,
            "example": "B4D4B7F4-4089-43B6-9C44-DE97B760FB11"
          },
          "offerName": {
            "type": "string",
            "description": "The name of the offer associated with the charge.",
            "nullable": true,
            "example": "Visio Plan 2"
          },
          "subscriptionStartDate": {
            "type": "string",
            "description": "The start date of billing for the subscription.\nThis value can change once a subscription renews.\nIf it renews, then on the next invoice this property is updated too.",
            "format": "date-time",
            "nullable": true,
            "example": "2021-07-21T00:00:00"
          },
          "subscriptionEndDate": {
            "type": "string",
            "description": "The end date of the term of the subscription.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-07-20T00:00:00"
          },
          "chargeStartDate": {
            "type": "string",
            "description": "The billing start date for this charge.",
            "format": "date-time",
            "example": "2022-12-21T00:00:00"
          },
          "chargeEndDate": {
            "type": "string",
            "description": "The billing end date for this charge.",
            "format": "date-time",
            "example": "2023-01-20T00:00:00"
          },
          "chargeType": {
            "type": "string",
            "description": "The type of charge on this line item.\nPossible values for the Microsoft provider include:\n- Activation fee: The amount charged to the customer when they use the subscription after purchase.\n- Cancel fee: Prorated charges refunded to the customer when associated licenses are changed.\n- Cancel instance prorate: Prorated charges canceled when customer with monthly subscription has subscription suspended and associated licenses changed within the same month.\n- Cycle fee: Periodic charges for a subscription.\n- Cycle instance prorate: Prorated charges assessed from the customer when associated licenses are changed.\n- Prorate fees when cancel: Prorated refund for unused portion of service upon cancellation.\n- Prorate fees when convert away from current offering: Prorated charges after converting away from the current monthly subscription to an annual subscription.\n- Prorate fees when convert to a new offering: \tProrated charges after converting a monthly subscription to a new annual subscription.\n- New purchase cycle fee: The charge type for a subscription when using both monthly or annual billing.\n- Prorate fees when purchase: The first cycle fee of a net new subscription.\n- Prorate fee when renew: The first cycle fee of a renewed subscription.\n- Prorate fees when activate: Prorated fees from reactivating suspended subscription until end of billing period.",
            "nullable": true,
            "example": "Cycle fee"
          },
          "unitPriceForReseller": {
            "type": "number",
            "description": "The price per single quantity that the reseller pays.",
            "format": "double",
            "nullable": true,
            "example": 12.27
          },
          "unitPriceForCustomer": {
            "type": "number",
            "description": "The price per single quantity that the customer pays.",
            "format": "double",
            "nullable": true,
            "example": 13.11
          },
          "quantity": {
            "type": "number",
            "description": "The billed quantity of the subscription associated with the charge.",
            "format": "double",
            "example": 2
          },
          "amountForReseller": {
            "type": "number",
            "description": "The amount for reseller without taxes applied but including discounts.",
            "format": "double",
            "nullable": true,
            "example": -7.45
          },
          "amountForCustomer": {
            "type": "number",
            "description": "The amount for customer without taxes applied but including discounts.",
            "format": "double",
            "nullable": true,
            "example": -7.45
          },
          "totalOtherDiscountForReseller": {
            "type": "number",
            "description": "The discount the reseller receives for the subscription\non this charge.",
            "format": "double",
            "nullable": true,
            "example": 1.31
          },
          "totalOtherDiscountForCustomer": {
            "type": "number",
            "description": "The discount the customer receives for the subscription\non this charge.",
            "format": "double",
            "nullable": true,
            "example": 1.1
          },
          "subtotalForReseller": {
            "type": "number",
            "description": "The cost the reseller pays for the subscription\non this charge before taxes.",
            "format": "double",
            "nullable": true,
            "example": 49.08
          },
          "subtotalForCustomer": {
            "type": "number",
            "description": "The cost the customer pays for the subscription\non this charge before taxes.",
            "format": "double",
            "nullable": true,
            "example": 50.12
          },
          "totalForReseller": {
            "type": "number",
            "description": "The cost the reseller pays for the subscription\non this charge after taxes.",
            "format": "double",
            "nullable": true,
            "example": 55.31
          },
          "totalForCustomer": {
            "type": "number",
            "description": "The cost the customer pays for the subscription\non this charge after taxes.",
            "format": "double",
            "nullable": true,
            "example": 57.31
          },
          "taxForReseller": {
            "type": "number",
            "description": "The taxes the resellers pays for the subscription on this charge.",
            "format": "double",
            "nullable": true,
            "example": 6.23
          },
          "taxForCustomer": {
            "type": "number",
            "description": "The taxes the customer pays for the subscription on this charge.",
            "format": "double",
            "nullable": true,
            "example": 7.25
          },
          "currency": {
            "type": "string",
            "description": "The currency associated with the prices.",
            "nullable": true,
            "example": "EUR"
          },
          "billingCycleType": {
            "type": "string",
            "description": "The billing cycle of the subscription associated with the charge.",
            "nullable": true,
            "example": "Monthly"
          },
          "customerPriceMargin": {
            "type": "number",
            "description": "The customer price margin according to the CustomerPriceMarginRule.",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "customerPriceMarginRule": {
            "type": "string",
            "description": "The customer price margin rule.",
            "nullable": true,
            "example": "erpminusdiscount"
          },
          "subscriptionPriceMargin": {
            "type": "number",
            "description": "The subscription price margin according to the SubscriptionPriceMargin.",
            "format": "double",
            "nullable": true
          },
          "subscriptionPriceMarginRule": {
            "type": "string",
            "description": "The subscription price margin rule.",
            "nullable": true,
            "example": "0.00"
          },
          "providerData": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "A dictionary that maps from strings to strings that contains specific provider invoice data.\n\n\nIf this line item is associated to a Microsoft invoice then the possible values are:\n**DomainName**: The domain of the customer associated with the charge, example: \"test@pte.onmicrosoft.com\".\n\n",
            "nullable": true,
            "example": {
              "DomainName": "test@pte.onmicrosoft.com"
            }
          },
          "subscriptionProviderId": {
            "type": "string",
            "description": "The id of the subscription associated with the charge on the provider's side.",
            "nullable": true,
            "example": "FA2A91FD-7286-4DCD-9718-20048CCA832A"
          },
          "subscriptionPONumber": {
            "type": "string",
            "description": "The purchase order number of the subscription associated with the charge.",
            "nullable": true,
            "example": "8543943821"
          }
        },
        "additionalProperties": false,
        "description": "A model that represents a single charge of a license invoice.\nIn the case of the Microsoft provider each line item represents an **License legacy** charge."
      },
      "InvoiceLicenseLineItemResellerViewModelSeekBasedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceLicenseLineItemResellerViewModel"
            },
            "description": "The items in this particular seek operation.",
            "nullable": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.\nShould not be set if the first page of items is desired.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A helper class to be used by collections where we use a continuation token\nto obtain the next set of results."
      },
      "InvoiceLineItemsFileViewModel": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "The status of the file that contains the line items of the invoice.\nPossible values are: Queued, Processing, Available, Failed.",
            "nullable": true,
            "example": "Queued"
          },
          "location": {
            "type": "string",
            "description": "The absolute URL of the location of file of the line items of the invoice.",
            "nullable": true,
            "example": ""
          },
          "lastUpdate": {
            "type": "string",
            "description": "The timestamp of the last update of the invoice line items file.",
            "format": "date-time"
          },
          "fileFormat": {
            "type": "string",
            "description": "The file format culture used to generate the file.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The model that represents the status and location\nof a file that contains the line items of a given invoice."
      },
      "InvoiceOneTimeLineItemCustomerViewModel": {
        "type": "object",
        "properties": {
          "customerId": {
            "type": "string",
            "description": "The id of the customer associated to this charge.\nCan be null.",
            "format": "uuid",
            "nullable": true,
            "example": "2C741C83-E111-4A77-BC5F-C2F065275FA9"
          },
          "customerName": {
            "type": "string",
            "description": "The company name of the customer.",
            "nullable": true,
            "example": "Customer name"
          },
          "customerCountry": {
            "type": "string",
            "description": "The country in which the customer is located.",
            "nullable": true,
            "example": "IE"
          },
          "orderDate": {
            "type": "string",
            "description": "The date the order was placed.",
            "format": "date-time",
            "nullable": true,
            "example": "2023-05-03T21:25:51.6916741"
          },
          "chargeType": {
            "type": "string",
            "description": "The type of charge on this line item.\nPossible values for the Microsoft provider include:\n- new: When you buy a new subscription.\n- renew: When you renew your subscription.\n- cycleCharge: Regular recurring charges for your subscription.\n- addQuantity: Refunds and charges when you add seats.\n- removeQuantity: Refunds and charges when you remove seats.\n- moveQuantity: When you upgrade to an existing subscription.\n- cancelImmediate: When you cancel your subscription.\n- convert: \tWhen you change from a free trial to a paid subscription or upgrade to a new subscription.\n- changeBillingPlan: Changing from monthly to yearly billing or vice versa.\n- customerCredit: Credits for Azure, SLA, among others.\n- extendTerm: When you are given a longer trial period.",
            "nullable": true,
            "example": "cycleCharge"
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the subscription associated to the charge.",
            "format": "double",
            "example": 4
          },
          "currency": {
            "type": "string",
            "description": "The currency associated with the line item.",
            "nullable": true,
            "example": "EUR"
          },
          "subscriptionDescription": {
            "type": "string",
            "description": "The subscription description associated with this purchase.",
            "nullable": true,
            "example": "Azure Plan"
          },
          "subscriptionId": {
            "type": "string",
            "description": "The id of the subscription associated to the charge.\nCan be null.",
            "format": "uuid",
            "nullable": true,
            "example": "03DE5ECE-EC93-42A9-8F15-9A770AC1F832"
          },
          "chargeStartDate": {
            "type": "string",
            "description": "The billing start date for this charge.",
            "format": "date-time",
            "example": "2023-04-01T00:00:00"
          },
          "chargeEndDate": {
            "type": "string",
            "description": "The billing end date for this charge.",
            "format": "date-time",
            "example": "2023-04-30T23:59:59"
          },
          "termAndBillingCycle": {
            "type": "string",
            "description": "The term and billing cycle associated with this purchase.",
            "nullable": true,
            "example": "10K Read Operations"
          },
          "unitType": {
            "type": "string",
            "description": "The type of the unit.",
            "nullable": true,
            "example": "1 Hour"
          },
          "unitPriceForCustomer": {
            "type": "number",
            "description": "The unit price for customer.",
            "format": "double",
            "nullable": true,
            "example": 2.72
          },
          "subtotalForCustomer": {
            "type": "number",
            "description": "The total before taxes for the customer.",
            "format": "double",
            "nullable": true,
            "example": 2.72
          },
          "taxTotalForCustomer": {
            "type": "number",
            "description": "The tax value for the customer.",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "totalForCustomer": {
            "type": "number",
            "description": "The total for customer after taxes.",
            "format": "double",
            "nullable": true,
            "example": 2.72
          },
          "id": {
            "type": "string",
            "description": "The id that uniquely identifies a one time invoice line item.",
            "format": "uuid",
            "example": "7828D90D-2AC6-4F20-A95B-EE850BCD32A0"
          },
          "billableQuantity": {
            "type": "number",
            "description": "The amount of units billed.",
            "format": "double",
            "example": 1
          },
          "billingFrequency": {
            "type": "string",
            "description": "The billing frequency of the subscription associated to the charge.\nCan also be empty.",
            "nullable": true,
            "example": "Monthly"
          },
          "pricingCurrency": {
            "type": "string",
            "description": "The currency of the UnitPriceForReseller and UnitPriceForCustomer.\nThis currency may differ from the invoice billing currency.",
            "nullable": true,
            "example": "USD"
          },
          "productType": {
            "type": "string",
            "description": "The type of the offer associated with this charge.\nPossible values:\n- license.\n- softwaresubscription.\n- perpetualsoftware.\n- azureplan.\n- azurereservation.\n- azurelegacy.\n- azuresavingsplan.",
            "nullable": true,
            "example": "license"
          },
          "subscriptionStartDate": {
            "type": "string",
            "description": "The start date of billing for the subscription.\nThis value can change once a subscription renews.\nIf it renews, then on the next invoice this property is updated too.",
            "format": "date-time",
            "nullable": true,
            "example": "2023-04-01T00:00:00"
          },
          "subscriptionEndDate": {
            "type": "string",
            "description": "The end date of the term of the subscription.",
            "format": "date-time",
            "nullable": true,
            "example": "2023-04-30T23:59:59"
          },
          "offerProviderId": {
            "type": "string",
            "description": "The offer id on the provider's side that identifies the \nsubscription associated to the charge.",
            "nullable": true,
            "example": "DZH318Z0BQJ7:01DJ"
          },
          "subscriptionProviderId": {
            "type": "string",
            "description": "The id of the subscription associated to this charge on the provider's side.",
            "nullable": true,
            "example": "FA2A91FD-7286-4DCD-9718-20048CCA832A"
          },
          "subscriptionPONumber": {
            "type": "string",
            "description": "The purchase order number of the subscription associated with this charge.",
            "nullable": true,
            "example": "8543943821"
          },
          "subscriptionName": {
            "type": "string",
            "description": "The friendly name of the subscription associated with this charge.",
            "nullable": true
          },
          "providerData": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "A dictionary that maps from strings to strings that contains specific provider invoice data.\n\n\nIf this line item is associated to a Microsoft invoice then there are a set of properties that are common to each charge:\n**CustomerDomainName**: The domain of the customer.\n**ProductId**: The id of the product of the line item.\n**SkuId**: The id of the sku of the line item.\n**AvailabilityId**: The id of the availability of the line item.\n**ProductName**: The name of the product.\n**SkuName**: The name of the sku.\n**PublisherName**: The name of the publisher of the sku.\n**PublisherId**: The id of the publisher of the sku.\n**AlternateId**: The alternate id.\n**MeterDescription**: The description of the meter of the line item.\n\n\nThe following properties only appear in some types of charges, see below:\n**ReservationOrderId**: For Azure Savings Plan this property corresponds to the savings plan order id on the Azure platform, example: \"2D0D3389-D0D9-44D2-8BB4-441F5CD6D8CC\". For Azure reservations this is the reservation order id, example: \"8A05BC26-0542-4B6F-B97F-ECA5BAC54E9E\".\n\n\nFor **Azure savings plan** the properties are: ReservationOrderId.\nFor **Azure reservation** the properties are: ReservationOrderId.",
            "nullable": true,
            "example": {
              "ReservationOrderId": "A202A58B-7041-46EE-D5BC-2D0F6FD22106"
            }
          }
        },
        "additionalProperties": false,
        "description": "A model that represents a single charge of a one time invoice specific for Customers.\nIn the case of the Microsoft provider this charge can be an:\n- Azure Plan,\n- Azure Savings Plan,\n- Azure Reservation,\n- New Commerce License Subscription,\n- Software Subscription,\n- Perpetual Software Subscription,\n- Marketplace Subscription."
      },
      "InvoiceOneTimeLineItemCustomerViewModelSeekBasedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceOneTimeLineItemCustomerViewModel"
            },
            "description": "The items in this particular seek operation.",
            "nullable": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.\nShould not be set if the first page of items is desired.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A helper class to be used by collections where we use a continuation token\nto obtain the next set of results."
      },
      "InvoiceOneTimeLineItemResellerViewModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id that uniquely identifies a one time invoice line item.",
            "format": "uuid",
            "example": "7828D90D-2AC6-4F20-A95B-EE850BCD32A0"
          },
          "subscriptionPONumber": {
            "type": "string",
            "description": "The purchase order number of the subscription associated with this charge.",
            "nullable": true,
            "example": "8543943821"
          },
          "customerId": {
            "type": "string",
            "description": "The id of the customer associated to this charge.\nCan be null.",
            "format": "uuid",
            "nullable": true,
            "example": "2C741C83-E111-4A77-BC5F-C2F065275FA9"
          },
          "customerName": {
            "type": "string",
            "description": "The company name of the customer.",
            "nullable": true,
            "example": "Customer name"
          },
          "customerInternalId": {
            "type": "string",
            "description": "The internal id of the customer associated with this charge.",
            "nullable": true,
            "example": "CustomerTest"
          },
          "subscriptionId": {
            "type": "string",
            "description": "The id of the subscription associated to the charge.\nCan be null.",
            "format": "uuid",
            "nullable": true,
            "example": "03DE5ECE-EC93-42A9-8F15-9A770AC1F832"
          },
          "subscriptionName": {
            "type": "string",
            "description": "The name of the subscription associated with the charge.",
            "nullable": true,
            "example": "My friendly name"
          },
          "subscriptionInternalId": {
            "type": "string",
            "description": "The internal id of the subscription associated with this charge.",
            "nullable": true,
            "example": "SubscriptionTest"
          },
          "offerProviderId": {
            "type": "string",
            "description": "The offer id on the provider's side that identifies the \nsubscription associated to the charge.",
            "nullable": true,
            "example": "DZH318Z0BQJ7:01DJ"
          },
          "offerName": {
            "type": "string",
            "description": "The name of the offer associated to the subscription.",
            "nullable": true,
            "example": "Azure Database for MySQL Single Server General Purpose - Compute Gen5, vCore, FR Central, 3 Years"
          },
          "subscriptionProviderId": {
            "type": "string",
            "description": "The id of the subscription associated to this charge on the provider's side.",
            "nullable": true,
            "example": "FA2A91FD-7286-4DCD-9718-20048CCA832A"
          },
          "orderId": {
            "type": "string",
            "description": "The id that identifies the order associated to the charge.",
            "nullable": true,
            "example": "bhhVi9rL4_vCEmrrPdc"
          },
          "orderDate": {
            "type": "string",
            "description": "The date the order was placed.",
            "format": "date-time",
            "nullable": true,
            "example": "2023-05-03T21:25:51.6916741"
          },
          "customerCountry": {
            "type": "string",
            "description": "The country in which the customer is located.",
            "nullable": true,
            "example": "IE"
          },
          "currency": {
            "type": "string",
            "description": "The currency associated with the line item.",
            "nullable": true,
            "example": "EUR"
          },
          "chargeType": {
            "type": "string",
            "description": "The type of charge on this line item.\nPossible values for the Microsoft provider include:\n- new: When you buy a new subscription.\n- renew: When you renew your subscription.\n- cycleCharge: Regular recurring charges for your subscription.\n- addQuantity: Refunds and charges when you add seats.\n- removeQuantity: Refunds and charges when you remove seats.\n- moveQuantity: When you upgrade to an existing subscription.\n- cancelImmediate: When you cancel your subscription.\n- convert: \tWhen you change from a free trial to a paid subscription or upgrade to a new subscription.\n- changeBillingPlan: Changing from monthly to yearly billing or vice versa.\n- customerCredit: Credits for Azure, SLA, among others.\n- extendTerm: When you are given a longer trial period.",
            "nullable": true,
            "example": "cycleCharge"
          },
          "termAndBillingCycle": {
            "type": "string",
            "description": "The term and billing cycle associated with this purchase.",
            "nullable": true,
            "example": "10K Read Operations"
          },
          "chargeStartDate": {
            "type": "string",
            "description": "The billing start date for this charge.",
            "format": "date-time",
            "example": "2023-04-01T00:00:00"
          },
          "chargeEndDate": {
            "type": "string",
            "description": "The billing end date for this charge.",
            "format": "date-time",
            "example": "2023-04-30T23:59:59"
          },
          "unitType": {
            "type": "string",
            "description": "The type of the unit.",
            "nullable": true,
            "example": "1 Hour"
          },
          "unitPriceForReseller": {
            "type": "number",
            "description": "The unit price for reseller.",
            "format": "double",
            "nullable": true,
            "example": 2.72
          },
          "unitPriceForCustomer": {
            "type": "number",
            "description": "The unit price for customer.",
            "format": "double",
            "nullable": true,
            "example": 2.72
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the subscription associated to the charge.",
            "format": "double",
            "example": 4
          },
          "subtotalForReseller": {
            "type": "number",
            "description": "The total before taxes for the reseller.",
            "format": "double",
            "nullable": true,
            "example": 2.72
          },
          "subtotalForCustomer": {
            "type": "number",
            "description": "The total before taxes for the customer.",
            "format": "double",
            "nullable": true,
            "example": 2.72
          },
          "taxForReseller": {
            "type": "number",
            "description": "The tax value for the reseller.",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "taxForCustomer": {
            "type": "number",
            "description": "The tax value for the customer.",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "totalForReseller": {
            "type": "number",
            "description": "The total for reseller after taxes.",
            "format": "double",
            "nullable": true,
            "example": 2.72
          },
          "totalForCustomer": {
            "type": "number",
            "description": "The total for customer after taxes.",
            "format": "double",
            "nullable": true,
            "example": 2.72
          },
          "customerProviderId": {
            "type": "string",
            "description": "The id of customer on the provider's side associated to this charge.",
            "nullable": true,
            "example": "CB0A371A-046A-46A9-A299-96BD755E67A8"
          },
          "pricingCurrency": {
            "type": "string",
            "description": "The currency of the UnitPriceForReseller and UnitPriceForCustomer.\nThis currency may differ from the invoice billing currency.",
            "nullable": true,
            "example": "USD"
          },
          "billingFrequency": {
            "type": "string",
            "description": "The billing frequency of the subscription associated to the charge.\nCan also be empty.",
            "nullable": true,
            "example": "Monthly"
          },
          "billableQuantity": {
            "type": "number",
            "description": "The amount of units billed.",
            "format": "double",
            "example": 1
          },
          "customerPriceMargin": {
            "type": "number",
            "description": "The customer price margin according to CustomerPriceMarginRule.",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "customerPriceMarginRule": {
            "type": "string",
            "description": "The customer price margin rule. The possible values are: markup, margin, splitmargin and erpminusdiscount.",
            "nullable": true,
            "example": "erpminusdiscount"
          },
          "subscriptionPriceMargin": {
            "type": "number",
            "description": "The subscription price margin according to SubscriptionPriceMarginRule.",
            "format": "double",
            "nullable": true
          },
          "subscriptionPriceMarginRule": {
            "type": "string",
            "description": "The subscription price margin rule.",
            "nullable": true,
            "example": ""
          },
          "providerData": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "A dictionary that maps from strings to strings that contains specific provider invoice data.\n\n\nIf this line item is associated to a Microsoft invoice then there are a set of properties that are common to each charge:\n**CustomerDomainName**: The domain of the customer.\n**ProductId**: The id of the product of the line item.\n**SkuId**: The id of the sku of the line item.\n**AvailabilityId**: The id of the availability of the line item.\n**ProductName**: The name of the product.\n**SkuName**: The name of the sku.\n**PublisherName**: The name of the publisher of the sku.\n**PublisherId**: The id of the publisher of the sku.\n**AlternateId**: The alternate id.\n**MeterDescription**: The description of the meter of the line item.\n\n\nThe following properties only appear in some types of charges, see below:\n**ReservationOrderId**: For Azure Savings Plan this property corresponds to the savings plan order id on the Azure platform, example: \"2D0D3389-D0D9-44D2-8BB4-441F5CD6D8CC\". For Azure reservations this is the reservation order id, example: \"8A05BC26-0542-4B6F-B97F-ECA5BAC54E9E\".\n\n\nFor **Azure savings plan** the properties are: ReservationOrderId.\nFor **Azure reservation** the properties are: ReservationOrderId.",
            "nullable": true,
            "example": {
              "ReservationOrderId": "A202A58B-7041-46EE-D5BC-2D0F6FD22106"
            }
          },
          "subscriptionStartDate": {
            "type": "string",
            "description": "The start date of billing for the subscription.\nThis value can change once a subscription renews.\nIf it renews, then on the next invoice this property is updated too.",
            "format": "date-time",
            "nullable": true,
            "example": "2023-04-01T00:00:00"
          },
          "subscriptionEndDate": {
            "type": "string",
            "description": "The end date of the term of the subscription.",
            "format": "date-time",
            "nullable": true,
            "example": "2023-04-30T23:59:59"
          },
          "productType": {
            "type": "string",
            "description": "The type of the offer associated with this charge.\nPossible values:\n- license.\n- softwaresubscription.\n- perpetualsoftware.\n- azureplan.\n- azurereservation.\n- azurelegacy.\n- azuresavingsplan.",
            "nullable": true,
            "example": "license"
          }
        },
        "additionalProperties": false,
        "description": "A model that represents a single charge of a one time invoice specific for Resellers.\nIn the case of the Microsoft provider this charge can be an:\n- Azure Plan,\n- Azure Savings Plan,\n- Azure Reservation,\n- New Commerce License Subscription,\n- Software Subscription,\n- Perpetual Software Subscription,\n- Marketplace Subscription."
      },
      "InvoiceOneTimeLineItemResellerViewModelSeekBasedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceOneTimeLineItemResellerViewModel"
            },
            "description": "The items in this particular seek operation.",
            "nullable": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.\nShould not be set if the first page of items is desired.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A helper class to be used by collections where we use a continuation token\nto obtain the next set of results."
      },
      "InvoiceStatus": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The possible values that an Invoice can go through: Processing, Completed, Failed."
      },
      "InvoiceUsageLineItemResellerViewModel": {
        "type": "object",
        "properties": {
          "customerId": {
            "type": "string",
            "description": "The id of the customer associated to this charge.\nCan be null, for example when the CSP removed the relationship with the customer on the provider side\nand the customer wasn't in our system when that happened.",
            "format": "uuid",
            "nullable": true,
            "example": "2C741C83-E111-4A77-BC5F-C2F065275FA9"
          },
          "customerCompanyName": {
            "type": "string",
            "description": "The company name of the customer.",
            "nullable": true,
            "example": "Customer test"
          },
          "domainName": {
            "type": "string",
            "description": "The domain of the customer associated with the charge.",
            "nullable": true,
            "example": "test@pte.onmicrosoft.com"
          },
          "customerInternalId": {
            "type": "string",
            "description": "The internal id of the customer associated with this charge.",
            "nullable": true,
            "example": "CustomerTest"
          },
          "orderId": {
            "type": "string",
            "description": "The id that identifies the order associated with the charge.",
            "nullable": true,
            "example": "168579460714324057"
          },
          "subscriptionId": {
            "type": "string",
            "description": "The id of the subscription associated with the charge.\nCan be null, for example when the CSP removed the relationship with the customer on the provider side\nand the subscription wasn't in our system when that happened.",
            "format": "uuid",
            "nullable": true,
            "example": "03DE5ECE-EC93-42A9-8F15-9A770AC1F832"
          },
          "subscriptionName": {
            "type": "string",
            "description": "The name of the subscription associated with the charge.",
            "nullable": true,
            "example": "Azure subscription"
          },
          "subscriptionDescription": {
            "type": "string",
            "description": "The description of the subscription associated with the charge.",
            "nullable": true,
            "example": "Azure"
          },
          "subscriptionInternalId": {
            "type": "string",
            "description": "The internal id of the subscription associated with this charge.",
            "nullable": true,
            "example": "SubscriptionTest"
          },
          "offerId": {
            "type": "string",
            "description": "The id of the offer associated with the charge in CloudCockpit.",
            "format": "uuid",
            "nullable": true,
            "example": "607b94ab-27d3-4ce7-a0af-91db5c930ffc"
          },
          "offerProviderId": {
            "type": "string",
            "description": "The offer id on the provider's side that identifies the \nsubscription associated with the charge.",
            "nullable": true,
            "example": "9DBADD95-5F52-454F-9002-C666A8AFF87D"
          },
          "offerName": {
            "type": "string",
            "description": "The name of the offer associated with the subscription.",
            "nullable": true,
            "example": "Hot GRS Write Operations - Tiered Block Blob"
          },
          "chargeStartDate": {
            "type": "string",
            "description": "The billing start date for this charge.",
            "format": "date-time",
            "example": "2023-04-01T00:00:00"
          },
          "chargeEndDate": {
            "type": "string",
            "description": "The billing end date for this charge.",
            "format": "date-time",
            "example": "2023-04-30T23:59:59"
          },
          "chargeType": {
            "type": "string",
            "description": "The type of charge on this line item.\nPossible values include:\n- Assess usage fee for current cycle: Access usage fee for the current billing period.\n- Assess usage fee when cancel: Access usage fee upon cancellation for unpaid usage during the current billing period.",
            "nullable": true,
            "example": "Assess usage fee for current cycle"
          },
          "serviceName": {
            "type": "string",
            "description": "The name of the service associated with the line item.",
            "nullable": true,
            "example": "Azure Data Factory v2"
          },
          "serviceType": {
            "type": "string",
            "description": "The type of the service associated with the line item.",
            "nullable": true,
            "example": ""
          },
          "resourceGuid": {
            "type": "string",
            "description": "The identifier of the resource associated with the charge.",
            "nullable": true,
            "example": "9d6f5dbf-90a1-46bc-85b7-e9c3f92bae35"
          },
          "resourceName": {
            "type": "string",
            "description": "The name of the resource associated with the charge.",
            "nullable": true,
            "example": "Cloud Data Movement"
          },
          "region": {
            "type": "string",
            "description": "The region associated with the charge.",
            "nullable": true,
            "example": "IE"
          },
          "sku": {
            "type": "string",
            "description": "The sku associated with the charge.",
            "nullable": true,
            "example": "7UD-00001"
          },
          "detailLineItemId": {
            "type": "integer",
            "description": "The id of the line item from the provider side.",
            "format": "int32",
            "example": 1
          },
          "consumedQuantity": {
            "type": "number",
            "description": "The consumed quantity of the resource.",
            "format": "double",
            "example": 146.6
          },
          "overageQuantity": {
            "type": "number",
            "description": "The overage quantity of the line item.",
            "format": "double",
            "example": 146.6
          },
          "includedQuantity": {
            "type": "number",
            "description": "The quantity that is included free of charge on this line item.",
            "format": "double",
            "example": 0
          },
          "currency": {
            "type": "string",
            "description": "The currency of the line item.",
            "nullable": true,
            "example": "EUR"
          },
          "unit": {
            "type": "string",
            "description": "The unit of charge associated with the line item, for example GB or Months.",
            "nullable": true,
            "example": "10K"
          },
          "listPriceForReseller": {
            "type": "number",
            "description": "The price of each unit for the reseller.",
            "format": "double",
            "nullable": true,
            "example": 0.18473412
          },
          "listPriceForCustomer": {
            "type": "number",
            "description": "The price of each unit for customer (with reseller and customer margin).",
            "format": "double",
            "nullable": true,
            "example": 0.21082354
          },
          "subtotalForReseller": {
            "type": "number",
            "description": "The cost the reseller pays for the subscription on this charge before taxes.",
            "format": "double",
            "nullable": true,
            "example": 27.082022
          },
          "subtotalForCustomer": {
            "type": "number",
            "description": "The price the customer pays for the subscription on this charge before taxes.",
            "format": "double",
            "nullable": true,
            "example": 30.906729
          },
          "taxesForReseller": {
            "type": "number",
            "description": "The taxes the resellers pays for the subscription on this charge.",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "taxesForCustomer": {
            "type": "number",
            "description": "The taxes the customer pays for the subscription on this charge.",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "totalForReseller": {
            "type": "number",
            "description": "The cost the reseller pays for the subscription on this charge after taxes.",
            "format": "double",
            "nullable": true,
            "example": 27.082022
          },
          "totalForCustomer": {
            "type": "number",
            "description": "The price the customer pays for the subscription on this charge after taxes.",
            "format": "double",
            "nullable": true,
            "example": 30.906729
          },
          "customerProviderId": {
            "type": "string",
            "description": "The id of customer on the provider's side associated with the charge.",
            "nullable": true,
            "example": "CB0A371A-046A-46A9-A299-96BD755E67A8"
          },
          "subscriptionProviderId": {
            "type": "string",
            "description": "The id of the subscription associated to this charge on the provider's side.",
            "nullable": true,
            "example": "FA2A91FD-7286-4DCD-9718-20048CCA832A"
          },
          "subscriptionPONumber": {
            "type": "string",
            "description": "The purchase order number of the subscription associated with this charge.",
            "nullable": true,
            "example": "8543943821"
          },
          "id": {
            "type": "string",
            "description": "The id that uniquely identifies a usage invoice line item.",
            "format": "uuid",
            "example": "7828D90D-2AC6-4F20-A95B-EE850BCD32A0"
          },
          "billingCycleType": {
            "type": "string",
            "description": "The billing cycle of the subscription associated with charge.",
            "nullable": true,
            "example": "Monthly"
          },
          "customerPriceMargin": {
            "type": "number",
            "description": "The customer price margin according to the CustomerPriceMarginRule.",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "customerPriceMarginRule": {
            "type": "string",
            "description": "The customer price margin rule. The possible values are: markup, margin, splitmargin and erpminusdiscount.",
            "nullable": true,
            "example": "erpminusdiscount"
          },
          "subscriptionPriceMargin": {
            "type": "number",
            "description": "The subscription price margin according to the SubscriptionPriceMarginRule.",
            "format": "double",
            "nullable": true
          },
          "subscriptionPriceMarginRule": {
            "type": "string",
            "description": "The subscription price margin rule. The possible values are: markup, margin, splitmargin and erpminusdiscount.",
            "nullable": true,
            "example": ""
          },
          "providerData": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "A dictionary that maps from strings to strings that contains specific provider invoice data.\n\n\nIf this line item is associated to a Microsoft invoice then the possible values are:\n**ServiceName**: The name of the service associated with the charge. For example: \"Storage\".\n\n",
            "nullable": true,
            "example": {
              "ServiceName": "Storage"
            }
          }
        },
        "additionalProperties": false,
        "description": "A model that represents a single charge of a usage invoice.\nIn the case of the Microsoft provider each line item represents an **Azure legacy** charge."
      },
      "InvoiceUsageLineItemResellerViewModelSeekBasedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceUsageLineItemResellerViewModel"
            },
            "description": "The items in this particular seek operation.",
            "nullable": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.\nShould not be set if the first page of items is desired.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A helper class to be used by collections where we use a continuation token\nto obtain the next set of results."
      },
      "InvoiceViewModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the invoice in CloudCockpit.",
            "format": "uuid",
            "example": "a393f55e-8249-47a5-b11f-80c8dc7905c9"
          },
          "providerInstanceId": {
            "type": "string",
            "description": "The id of the provider instance where the invoice was issued.",
            "format": "uuid",
            "example": "a393f55e-8249-47a5-b11f-80c8dc7905c9"
          },
          "providerInstanceName": {
            "type": "string",
            "description": "The name of the provider instance where the invoice was issued.",
            "nullable": true,
            "example": "Microsoft Tier 1"
          },
          "currency": {
            "type": "string",
            "description": "The invoice billing currency.",
            "nullable": true,
            "example": "EUR"
          },
          "subtotal": {
            "type": "number",
            "description": "The sum of the subtotal of line items of the invoice.",
            "format": "double",
            "example": 123
          },
          "type": {
            "type": "string",
            "description": "The invoice type. Possible values: onetime, usage, license and dailyratedusage.",
            "nullable": true,
            "example": "license"
          },
          "invoiceDate": {
            "type": "string",
            "description": "The date and time of when the invoice was issued.",
            "format": "date-time",
            "example": "2023-03-03 18:06:57.5533333"
          },
          "invoiceProviderId": {
            "type": "string",
            "description": "The id of the invoice in the provider's side.",
            "nullable": true,
            "example": "G017942997"
          },
          "invoiceLineItemsFile": {
            "$ref": "#/components/schemas/InvoiceLineItemsFileViewModel"
          },
          "status": {
            "$ref": "#/components/schemas/InvoiceStatus"
          }
        },
        "additionalProperties": false,
        "description": "View model that represents a invoice."
      },
      "InvoiceViewModelPagedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceViewModel"
            },
            "description": "The items for this page.",
            "nullable": true,
            "readOnly": true
          },
          "paginationParameters": {
            "$ref": "#/components/schemas/PaginationParameters"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total number of pages available for the specified parameters and page size.",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of results available for the specified parameters. Note this is typically not equal to the Count of items in the Items property, will only be equal if all the items fit in the first page.",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there is a previous page.",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there is a next page.",
            "readOnly": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Helper class to be used on paged collection entities"
      },
      "MarginRule": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The margin rule applied. Possible values: Markup, Margin, SplitMargin or ErpMinusDiscount"
      },
      "McaStatus": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "MicrosoftCustomerAgreementViewModel": {
        "type": "object",
        "properties": {
          "customerId": {
            "type": "string",
            "description": "Gets or sets the unique identifier of the customer.",
            "format": "uuid"
          },
          "providerCustomerId": {
            "type": "string",
            "description": "Gets or sets the provider-specific customer identifier associated with this MCA.",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "description": "Gets or sets the company name associated with the customer.",
            "nullable": true
          },
          "providerInstanceId": {
            "type": "string",
            "description": "Gets or sets the unique identifier of the provider instance.",
            "format": "uuid"
          },
          "providerInstanceName": {
            "type": "string",
            "description": "Gets or sets the display name of the provider instance.",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "description": "Gets or sets the first name of the primary contact associated with this MCA.",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "description": "Gets or sets the last name of the primary contact associated with this MCA.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Gets or sets the email address of the primary contact associated with this MCA.",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Gets or sets the phone number of the primary contact associated with this MCA.",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/McaStatus"
          },
          "attestationId": {
            "type": "string",
            "description": "Gets or sets the attestation identifier associated with this MCA.",
            "nullable": true
          },
          "lastUpdate": {
            "type": "string",
            "description": "Gets or sets the date and time of the most recent update to this MCA.",
            "format": "date-time",
            "nullable": true
          },
          "dateAgreed": {
            "type": "string",
            "description": "Gets or sets the date and time when the MCA was agreed upon.\nThis value is `null` unless the status is Microsoft.Domain.Customers.Enumerations.McaStatus.AgreementCreated.",
            "format": "date-time",
            "nullable": true
          },
          "customer": {
            "$ref": "#/components/schemas/CustomerViewModel"
          },
          "microsoftProviderCustomer": {
            "$ref": "#/components/schemas/MicrosoftProviderCustomerViewModel"
          }
        },
        "additionalProperties": false,
        "description": "Represents a Microsoft Customer Agreement (MCA) and its related presentation data."
      },
      "MicrosoftCustomerAgreementViewModelPagedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MicrosoftCustomerAgreementViewModel"
            },
            "description": "The items for this page.",
            "nullable": true,
            "readOnly": true
          },
          "paginationParameters": {
            "$ref": "#/components/schemas/PaginationParameters"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total number of pages available for the specified parameters and page size.",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of results available for the specified parameters. Note this is typically not equal to the Count of items in the Items property, will only be equal if all the items fit in the first page.",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there is a previous page.",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there is a next page.",
            "readOnly": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Helper class to be used on paged collection entities"
      },
      "MicrosoftProviderCustomerViewModel": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/ProviderCustomerViewModel"
          }
        ],
        "properties": {
          "microsoftCustomerAgreement": {
            "$ref": "#/components/schemas/MicrosoftCustomerAgreementViewModel"
          }
        },
        "additionalProperties": false
      },
      "MigrateSubscriptionRequest": {
        "type": "object",
        "properties": {
          "purchaseFullTerm": {
            "type": "boolean",
            "description": "The value indicating whether [purchase full term]."
          },
          "quantity": {
            "type": "integer",
            "description": "The quantity.",
            "format": "int32"
          },
          "termDuration": {
            "type": "string",
            "description": "The term duration. Possible values include: NoTerm, OneMonth, OneYear, ThreeYears or FiveYears",
            "nullable": true
          },
          "billingFrequency": {
            "type": "string",
            "description": "The billing frequency. Possible values include: OneTime, Monthly, Annual, Triennial or None.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MigrationStatusViewModel": {
        "type": "object",
        "properties": {
          "isCompleted": {
            "type": "boolean",
            "description": "The value indicating whether this subscription migration is completed or not."
          },
          "subscriptionId": {
            "type": "string",
            "description": "The Id of the current subscription.",
            "format": "uuid"
          },
          "destinationSubscriptionId": {
            "type": "string",
            "description": "The Id of the destination subscription. Only populated when migration is completed.",
            "format": "uuid",
            "nullable": true
          },
          "destinationProviderSubscriptionId": {
            "type": "string",
            "description": "The provider Id of the destination subscription. Only populated when migration is completed.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NotFoundErrorResponse": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "integer",
            "description": "The HTTP status code that represents a specific error scenario.",
            "format": "int32",
            "readOnly": true,
            "example": 404
          },
          "type": {
            "type": "string",
            "description": "The type of error that occurred.",
            "nullable": true,
            "readOnly": true,
            "example": "EntityNotFoundException"
          },
          "description": {
            "type": "string",
            "description": "Describes the error scenario that occurred.",
            "nullable": true,
            "readOnly": true,
            "example": "No providers found for the tenant."
          },
          "correlationId": {
            "type": "string",
            "description": "The correlationId of the request that originated the error.",
            "nullable": true,
            "readOnly": true,
            "example": "685043EA-6D49-4ACE-8BDB-CCE9D3E2DBD0"
          }
        },
        "additionalProperties": false,
        "description": "An example of the API response when an HTTP not found happens."
      },
      "OfferCategory": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The offer category. Possible values: ExtendedServiceTerm or EndOfSale."
      },
      "OfferListItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "GUID Unique identifier for the offer.",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "The name of the offer.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The offer description.",
            "nullable": true
          },
          "imageUrl": {
            "type": "string",
            "description": "The offer image URL.",
            "nullable": true
          },
          "offerType": {
            "$ref": "#/components/schemas/OfferType"
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "price": {
            "$ref": "#/components/schemas/OfferPriceViewModel"
          },
          "providerName": {
            "type": "string",
            "description": "The name of the provider this offer belongs to.",
            "nullable": true
          },
          "isAddon": {
            "type": "boolean",
            "description": "The value indicating whether this offer is an addon."
          },
          "providerOfferId": {
            "type": "string",
            "description": "The provider's offer identifier.",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean",
            "description": "A Value indicating whether this offer is deleted and cannot be provisioned."
          },
          "termOfferPrices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TermOfferPriceViewModel"
            },
            "description": "The offer prices for each term",
            "nullable": true
          },
          "isDisabled": {
            "type": "boolean",
            "description": "A Value indicating whether this offer is disabled and cannot be provisioned."
          }
        },
        "additionalProperties": false,
        "description": "View model that represents an offer item for listing purposes."
      },
      "OfferListItemPagedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OfferListItem"
            },
            "description": "The items for this page.",
            "nullable": true,
            "readOnly": true
          },
          "paginationParameters": {
            "$ref": "#/components/schemas/PaginationParameters"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total number of pages available for the specified parameters and page size.",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of results available for the specified parameters. Note this is typically not equal to the Count of items in the Items property, will only be equal if all the items fit in the first page.",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there is a previous page.",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there is a next page.",
            "readOnly": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Helper class to be used on paged collection entities"
      },
      "OfferPriceViewModel": {
        "type": "object",
        "properties": {
          "termDuration": {
            "$ref": "#/components/schemas/TermDuration"
          },
          "segment": {
            "$ref": "#/components/schemas/Segment"
          },
          "region": {
            "$ref": "#/components/schemas/CountryCode"
          },
          "billingFrequencies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingFrequency"
            },
            "description": "The offer price Billing Frequencies.",
            "nullable": true
          },
          "costPrice": {
            "$ref": "#/components/schemas/Price"
          },
          "revenuePrice": {
            "$ref": "#/components/schemas/Price"
          },
          "erpPrice": {
            "$ref": "#/components/schemas/Price"
          }
        },
        "additionalProperties": false,
        "description": "View model that represents an offer price."
      },
      "OfferType": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The offer type. Possible values: License, LicenseLegacy, SoftwareSubscription, PerpetualSoftware, AzurePlan, AzureReservation, AzureLegacy or AzureSavingsPlan."
      },
      "OfferViewModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the offer.",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "The name of the offer.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The offer description.",
            "nullable": true
          },
          "imageUrl": {
            "type": "string",
            "description": "The offer image URL.",
            "nullable": true
          },
          "offerType": {
            "$ref": "#/components/schemas/OfferType"
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "prices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OfferPriceViewModel"
            },
            "description": "The offer prices.",
            "nullable": true
          },
          "providerName": {
            "type": "string",
            "description": "The offer provider name.",
            "nullable": true
          },
          "providerInstanceId": {
            "type": "string",
            "description": "The provider's instance identifier.",
            "format": "uuid",
            "nullable": true
          },
          "isAddon": {
            "type": "boolean",
            "description": "The value indicating whether this offer is addon."
          },
          "minQuantity": {
            "type": "integer",
            "description": "The minimum quantity for this offer.",
            "format": "int32"
          },
          "maxQuantity": {
            "type": "integer",
            "description": "The maximum quantity for this offer.",
            "format": "int32"
          },
          "hasPreRequisites": {
            "type": "boolean",
            "description": "The value indicating whether this offer has pre requisite offers."
          },
          "preRequisites": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The list of pre requisite offers ids.",
            "nullable": true
          },
          "isTrial": {
            "type": "boolean",
            "description": "The value indicating whether this offer is a trial."
          },
          "providerOfferId": {
            "type": "string",
            "description": "The provider's offer identifier.",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean",
            "description": "A Value indicating whether this offer is deleted and cannot be provisioned."
          },
          "offerCategory": {
            "$ref": "#/components/schemas/OfferCategory"
          }
        },
        "additionalProperties": false,
        "description": "View model that represents an Offer."
      },
      "OrderOperationType": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The order operation type. Possible values: CreateSubscription"
      },
      "OrderStatus": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The status of the order. Possible values: Processing, Provisioning, Completed or Failed"
      },
      "OrderViewModel": {
        "required": [
          "billingFrequency",
          "customerId",
          "offerId",
          "operation",
          "providerInstanceId",
          "quantity",
          "segment",
          "status",
          "subscriptionName",
          "termDuration"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The GUID identifier for the order.",
            "format": "uuid"
          },
          "offerId": {
            "type": "string",
            "description": "The GUID identifier for the offer.",
            "format": "uuid"
          },
          "customerId": {
            "type": "string",
            "description": "The GUID identifier for the customer.",
            "format": "uuid"
          },
          "resellerId": {
            "type": "string",
            "description": "The GUID identifier for the reseller.",
            "format": "uuid",
            "nullable": true
          },
          "providerInstanceId": {
            "type": "string",
            "description": "The GUID identifier for the provider instance.",
            "format": "uuid"
          },
          "subscriptionName": {
            "type": "string",
            "description": "The name to set in the subscription created by this order. This may be up to 255 characters.",
            "nullable": true
          },
          "termDuration": {
            "$ref": "#/components/schemas/TermDuration"
          },
          "billingFrequency": {
            "$ref": "#/components/schemas/BillingFrequency"
          },
          "segment": {
            "$ref": "#/components/schemas/Segment"
          },
          "operation": {
            "$ref": "#/components/schemas/OrderOperationType"
          },
          "quantity": {
            "type": "integer",
            "description": "The quantity of licenses to provision for this order.",
            "format": "int32"
          },
          "subscriptionMargin": {
            "$ref": "#/components/schemas/PriceMargin"
          },
          "subscriptionInternalId": {
            "type": "string",
            "description": "The internal identifier to set in the subscription created by this order. This may be up to 255 characters.",
            "nullable": true
          },
          "poNumber": {
            "type": "string",
            "description": "The po number to set in the subscription created by this order. This may be up to 255 characters.",
            "nullable": true
          },
          "autoRenew": {
            "$ref": "#/components/schemas/SubscriptionRenewalAction"
          },
          "status": {
            "$ref": "#/components/schemas/OrderStatus"
          },
          "createdDate": {
            "type": "string",
            "description": "The date in which this order was created.",
            "format": "date-time"
          },
          "providerData": {
            "type": "string",
            "description": "The provider specific data for this order.\nFor generic provider subscriptions, this should not be set.",
            "nullable": true
          },
          "parentSubscriptionId": {
            "type": "string",
            "description": "The GUID identifier for the parent subscription of this order.",
            "format": "uuid",
            "nullable": true
          },
          "errorMessage": {
            "type": "string",
            "description": "The error message if status is failed.",
            "nullable": true
          },
          "providerOfferId": {
            "type": "string",
            "description": "The provider's offer identifier.",
            "nullable": true
          },
          "orderedByEmail": {
            "type": "string",
            "description": "The email of the user who placed the order.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "View model that represents an order."
      },
      "OrderViewModelPagedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OrderViewModel"
            },
            "description": "The items for this page.",
            "nullable": true,
            "readOnly": true
          },
          "paginationParameters": {
            "$ref": "#/components/schemas/PaginationParameters"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total number of pages available for the specified parameters and page size.",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of results available for the specified parameters. Note this is typically not equal to the Count of items in the Items property, will only be equal if all the items fit in the first page.",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there is a previous page.",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there is a next page.",
            "readOnly": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Helper class to be used on paged collection entities"
      },
      "PaginationParameters": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Indicates the number of the current page.",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items that should be returned at most per page.",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "A model that is used to encapsulate the parameters needed to perform pagination queries."
      },
      "Price": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "description": "The price value.",
            "format": "double",
            "readOnly": true
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          }
        },
        "additionalProperties": false
      },
      "PriceMargin": {
        "required": [
          "marginRule",
          "value"
        ],
        "type": "object",
        "properties": {
          "marginRule": {
            "$ref": "#/components/schemas/MarginRule"
          },
          "value": {
            "type": "number",
            "description": "The value applied to this price margin.\nShould not be below 0 or above 999.",
            "format": "double",
            "nullable": true,
            "readOnly": true,
            "example": 8
          }
        },
        "additionalProperties": false,
        "description": "This value object contains the price margin for this entity."
      },
      "ProviderCustomerViewModel": {
        "required": [
          "margin",
          "providerCustomerData",
          "providerInstanceId"
        ],
        "type": "object",
        "properties": {
          "providerName": {
            "type": "string",
            "description": "The name of the provider associated with this customer. Possible values are 'Microsoft' and 'Generic'.\nThis property is used for polymorphic JSON serialization.",
            "nullable": true
          },
          "providerInstanceId": {
            "type": "string",
            "description": "The GUID identifier for the provider instance.",
            "format": "uuid"
          },
          "providerCustomerId": {
            "type": "string",
            "description": "The identifier for customer on the provider. This property will only be populated after a customer is successfully created on the provider.",
            "nullable": true
          },
          "providerCustomerData": {
            "type": "string",
            "description": "The provider specific data for this customer.",
            "nullable": true
          },
          "margin": {
            "$ref": "#/components/schemas/PriceMargin"
          },
          "offerTypeMargins": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/PriceMargin"
            },
            "description": "Contains as key the name of the offer type and as value the price margin applied to each offer type for this specific provider instance.\nPrice margins applied at the offer type level will override the price margin applied at the provider instance level.\nIf no price margin is applied to a specific offer type of this provider instance then it will not be in the dictionary.\nThis dictionary is optional.",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/EntityStatus"
          },
          "customerCreationError": {
            "$ref": "#/components/schemas/CustomerCreationError"
          }
        },
        "additionalProperties": false,
        "description": "Represents a customer associated with a specific provider."
      },
      "ProviderInstanceViewModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the instance.",
            "format": "uuid",
            "readOnly": true
          },
          "alias": {
            "type": "string",
            "description": "Alias for the instance of the provider.",
            "nullable": true,
            "readOnly": true
          },
          "instanceProviderId": {
            "type": "string",
            "description": "The id that identifies the instance on the providers side",
            "nullable": true,
            "readOnly": true
          },
          "imageUrl": {
            "type": "string",
            "description": "The provider instance image url.",
            "nullable": true,
            "readOnly": true
          },
          "offerTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OfferType"
            },
            "description": "The list of offer types that the provider instance allows selling.",
            "nullable": true,
            "readOnly": true
          },
          "supportedCountries": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Contains all the supported countries available for the provider instance.",
            "nullable": true
          },
          "providerData": {
            "type": "string",
            "description": "The provider instance data.",
            "nullable": true,
            "readOnly": true
          },
          "provider": {
            "$ref": "#/components/schemas/ProviderViewModel"
          }
        },
        "additionalProperties": false,
        "description": "View model that represents a provider's instance."
      },
      "ProviderInstanceViewModelPagedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProviderInstanceViewModel"
            },
            "description": "The items for this page.",
            "nullable": true,
            "readOnly": true
          },
          "paginationParameters": {
            "$ref": "#/components/schemas/PaginationParameters"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total number of pages available for the specified parameters and page size.",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of results available for the specified parameters. Note this is typically not equal to the Count of items in the Items property, will only be equal if all the items fit in the first page.",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there is a previous page.",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there is a next page.",
            "readOnly": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Helper class to be used on paged collection entities"
      },
      "ProviderResellerViewModel": {
        "required": [
          "priceMargin",
          "providerInstanceId",
          "resellerProviderData"
        ],
        "type": "object",
        "properties": {
          "providerInstanceId": {
            "type": "string",
            "description": "The id of the provider instance to which the reseller with ResellerId is associated to.\nMust always be set.",
            "format": "uuid",
            "example": "a393f55e-8249-47a5-b11f-80c8dc7905c9"
          },
          "priceMargin": {
            "$ref": "#/components/schemas/PriceMargin"
          },
          "offerTypeMargins": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/PriceMargin"
            },
            "description": "Contains as key the name of the offer type and as value the price margin applied to each offer type for this specific provider instance.\nPrice margins applied at the offer type level will override the price margin applied at the provider instance level.\nIf no price margin is applied to a specific offer type of this provider instance then it will not be in the dictionary.\nThis dictionary is optional.",
            "nullable": true,
            "example": {
              "license": {
                "marginRule": {
                  "name": "markup"
                },
                "value": 6
              }
            }
          },
          "providerResellerId": {
            "type": "string",
            "description": "An id that identifies the reseller has on the provider instance.\nFor a Microsoft Tier 2 provider instance set ProviderResellerId to the primary mpn id of the reseller,\nwhich is the mpn id that will be used for new subscription purchases.\nWhen adding a provider instance to a reseller for a Microsoft Tier 1 environment or a generic provider,\ndon't pass this property on the creation request.",
            "nullable": true,
            "example": "123"
          },
          "resellerProviderData": {
            "type": "string",
            "description": "A json formatted string which contains specific data for the reseller association to the provider instance.\nFor Microsoft Tier 1 resellers, this property can be a empty json: \"{}\".\nOn Microsoft Tier 2 resellers, this property will be a json with the following format:\n{\"IndirectResellerId\":string,\"SecondaryMpnIds\":string[]}",
            "nullable": true,
            "example": "JSON Object: {\"IndirectResellerId\":null,\"SecondaryMpnIds\":[\"123\"]}"
          },
          "status": {
            "$ref": "#/components/schemas/EntityStatus"
          }
        },
        "additionalProperties": false
      },
      "ProviderViewModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the provider.",
            "format": "uuid",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "description": "The name of the provider.",
            "nullable": true,
            "readOnly": true
          },
          "description": {
            "type": "string",
            "description": "The description of the provider.",
            "nullable": true,
            "readOnly": true
          },
          "imageUrl": {
            "type": "string",
            "description": "The url that points to the image that represents the provider.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The viewmodel for the Provider entity."
      },
      "Qualification": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "RenewOfferViewModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the offer.",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "description": "The name of the offer.",
            "nullable": true
          },
          "providerOfferId": {
            "type": "string",
            "description": "The provider's offer identifier, without the availability (productId:skuId).\nThis is the identifier the offers are stored with.",
            "nullable": true
          },
          "providerOfferIdWithAvailability": {
            "type": "string",
            "description": "The provider's offer identifier including the availability (productId:skuId:availabilityId).\nThis is the identifier the provider expects when scheduling a renewal.",
            "nullable": true
          },
          "minQuantity": {
            "type": "integer",
            "description": "The minimum quantity for this offer.",
            "format": "int32"
          },
          "maxQuantity": {
            "type": "integer",
            "description": "The maximum quantity for this offer.",
            "format": "int32"
          },
          "prices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OfferPriceViewModel"
            },
            "description": "The offer prices, used to derive the available terms, billing frequencies and renewal price.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "View model that represents an offer a subscription is eligible to renew to.\nOnly carries what the renewal flow needs, plus the availability qualified provider offer id\nthat the provider requires when scheduling the renewal."
      },
      "ResellerCustomDomainViewModel": {
        "type": "object",
        "properties": {
          "customDomain": {
            "type": "string",
            "description": "The custom domain value.",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/CustomDomainStatus"
          }
        },
        "additionalProperties": false
      },
      "ResellerViewModel": {
        "required": [
          "addressLine1",
          "city",
          "companyName",
          "country",
          "email",
          "firstName",
          "lastName",
          "phone",
          "providerResellers",
          "state",
          "zipCode"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The reseller Id.",
            "format": "uuid"
          },
          "companyName": {
            "type": "string",
            "description": "The name of the company associated to the reseller. This may be up to 255 characters.",
            "nullable": true
          },
          "country": {
            "type": "string",
            "description": "The company country. Must be in standard iso 3166-1 alpha 2.",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "description": "The company address line 1. This may be up to 255 characters.",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "description": "The company address line 2. This may be up to 255 characters.",
            "nullable": true
          },
          "city": {
            "type": "string",
            "description": "The company city. This may be up to 255 characters.",
            "nullable": true
          },
          "state": {
            "type": "string",
            "description": "The company state. This may be up to 255 characters.",
            "nullable": true
          },
          "zipCode": {
            "type": "string",
            "description": "The company ZIP. Should be a valid zip according to the company country. This may be up to 30 characters.",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "description": "The company primary contact first name. This may be up to 255 characters.",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "description": "The company primary contact last name. This may be up to 255 characters.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The company primary contact email. This may be up to 255 characters.",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "The company primary contact phone. Should be a valid phone according to the company country. This may be up to 30 characters.",
            "nullable": true
          },
          "internalIdentifier": {
            "type": "string",
            "description": "The company internal identifier. This may be up to 255 characters.",
            "nullable": true
          },
          "taxId": {
            "type": "string",
            "description": "The tax id of the company. This may be up to 255 characters.",
            "nullable": true
          },
          "providerResellers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProviderResellerViewModel"
            },
            "description": "The provider resellers. A list containing the info about this reseller in one or more provider instances.",
            "nullable": true,
            "example": {
              "providerInstanceId": "cb3cd15b-1d6e-45be-b493-c71549cbfd87",
              "providerResellerId": "968bd16f-7eca-494d-b29f-440b9ef5cf5d",
              "priceMargin": {
                "marginRule": {
                  "name": "markup"
                },
                "value": 8
              },
              "offerTypeMargins": {
                "Value": {
                  "license": {
                    "MarginRule": {
                      "Name": "markup"
                    },
                    "Value": 10
                  }
                }
              },
              "resellerProviderData": "{\"indirectResellerId\" : \"f94f06fd-dc98-47fb-bd49-63bc98bd87f2\",\"secondaryMpnIds\": [ \"123456\", \"654321\"]}"
            }
          },
          "customDomain": {
            "$ref": "#/components/schemas/ResellerCustomDomainViewModel"
          }
        },
        "additionalProperties": false,
        "description": "View model that represents a reseller."
      },
      "ScheduledBillingFrequency": {
        "type": "object",
        "properties": {
          "scheduledDate": {
            "type": "string",
            "description": "The schedule date to change billing frequency, it is also the current billing cycle end date",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "billingFrequency": {
            "$ref": "#/components/schemas/BillingFrequency"
          }
        },
        "additionalProperties": false
      },
      "Segment": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The offer segment. Possible values: Commercial, Education, Government or NonProfit"
      },
      "SetMonthlyBudgetRequest": {
        "type": "object",
        "properties": {
          "monthlyBudget": {
            "type": "number",
            "description": "The new monthly budget to set in the azure subscription relationship. Can be null, to set no budget.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "StartMcaAttestationViewModel": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "The first name of the signatory",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the signatory",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The email address of the signatory",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "The phone number of the signatory",
            "nullable": true
          },
          "expirationTime": {
            "type": "integer",
            "description": "The expiration time in minutes for the attestation link. Must be between 5 and 10080.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Represents the information related to a Microsoft Customer Agreement (MCA)."
      },
      "SubscriptionBaseInfoViewModel": {
        "required": [
          "autoRenew",
          "name",
          "nextBillingFrequency",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the subscription. This may be up to 255 characters.",
            "nullable": true
          },
          "quantity": {
            "type": "integer",
            "description": "The quantity.",
            "format": "int32"
          },
          "nextBillingFrequency": {
            "$ref": "#/components/schemas/BillingFrequency"
          },
          "autoRenew": {
            "$ref": "#/components/schemas/SubscriptionRenewalAction"
          },
          "autoRenewSettings": {
            "$ref": "#/components/schemas/AutoRenewSettings"
          }
        },
        "additionalProperties": false,
        "description": "The viewmodel for the subscription base info."
      },
      "SubscriptionConflictCheckInfoViewModel": {
        "required": [
          "autoRenew",
          "endDate",
          "name",
          "nextBillingFrequency",
          "quantity",
          "status"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the subscription. This may be up to 255 characters.",
            "nullable": true
          },
          "quantity": {
            "type": "integer",
            "description": "The quantity.",
            "format": "int32"
          },
          "nextBillingFrequency": {
            "$ref": "#/components/schemas/BillingFrequency"
          },
          "autoRenew": {
            "$ref": "#/components/schemas/SubscriptionRenewalAction"
          },
          "autoRenewSettings": {
            "$ref": "#/components/schemas/AutoRenewSettings"
          },
          "endDate": {
            "type": "string",
            "description": "End date of subscription.",
            "format": "date-time"
          },
          "status": {
            "$ref": "#/components/schemas/SubscriptionStatus"
          }
        },
        "additionalProperties": false,
        "description": "The viewmodel for checking subscription conflict."
      },
      "SubscriptionEligibilityDetailViewModel": {
        "type": "object",
        "properties": {
          "isEligible": {
            "type": "boolean"
          },
          "subscriptionId": {
            "type": "string",
            "nullable": true
          },
          "subscriptionFriendlyName": {
            "type": "string",
            "nullable": true
          },
          "subscriptionTermDuration": {
            "type": "string",
            "nullable": true
          },
          "subscriptionBillingCycle": {
            "type": "string",
            "nullable": true
          },
          "quantity": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "SubscriptionListItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the subscription.",
            "format": "uuid"
          },
          "orderId": {
            "type": "string",
            "description": "The order id of the subscription.",
            "format": "uuid",
            "readOnly": true
          },
          "offerId": {
            "type": "string",
            "description": "The offer id of the subscription.",
            "format": "uuid",
            "readOnly": true
          },
          "customerId": {
            "type": "string",
            "description": "The customer id of the subscription.",
            "format": "uuid",
            "readOnly": true
          },
          "providerInstanceId": {
            "type": "string",
            "description": "The provider instance id of the subscription.",
            "format": "uuid",
            "readOnly": true
          },
          "resellerId": {
            "type": "string",
            "description": "The reseller id of the subscription.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "subscriptionName": {
            "type": "string",
            "description": "The friendly name of the subscription.",
            "nullable": true
          },
          "offerName": {
            "type": "string",
            "description": "The name of the subscription.",
            "nullable": true
          },
          "offerType": {
            "$ref": "#/components/schemas/OfferType"
          },
          "isAddonOffer": {
            "type": "boolean",
            "description": "The value indicating if the subscription offer is addon."
          },
          "isTrialOffer": {
            "type": "boolean",
            "description": "The value indicating if the subscription offer is trial."
          },
          "offerCategory": {
            "$ref": "#/components/schemas/OfferCategory"
          },
          "providerOfferId": {
            "type": "string",
            "description": "The provider offer identifier.",
            "nullable": true
          },
          "subscriptionStatus": {
            "$ref": "#/components/schemas/SubscriptionStatus"
          },
          "startDate": {
            "type": "string",
            "description": "The start date of the subscription.",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "description": "The end date of the subscription.",
            "format": "date-time"
          },
          "cancellationAllowedUntil": {
            "type": "string",
            "description": "The limit date to cancelled the subscription.",
            "format": "date-time",
            "nullable": true
          },
          "quantity": {
            "type": "integer",
            "description": "The quantity of the subscription.",
            "format": "int32"
          },
          "assignedLicenses": {
            "type": "integer",
            "description": "The quantity of the subscription.",
            "format": "int32",
            "nullable": true
          },
          "listPrice": {
            "type": "object",
            "properties": {
              "value": {
                "type": "number",
                "description": "The price value.",
                "format": "double",
                "readOnly": true
              },
              "currency": {
                "$ref": "#/components/schemas/Currency"
              }
            },
            "additionalProperties": false,
            "description": "The list price of the subscription. This value represents the cost price for the whole term of the subscription."
          },
          "revenuePrice": {
            "type": "object",
            "properties": {
              "value": {
                "type": "number",
                "description": "The price value.",
                "format": "double",
                "readOnly": true
              },
              "currency": {
                "$ref": "#/components/schemas/Currency"
              }
            },
            "additionalProperties": false,
            "description": "The revenue price of the subscription. This value represents the revenue price for the whole term of the subscription."
          },
          "erpPrice": {
            "type": "object",
            "properties": {
              "value": {
                "type": "number",
                "description": "The price value.",
                "format": "double",
                "readOnly": true
              },
              "currency": {
                "$ref": "#/components/schemas/Currency"
              }
            },
            "additionalProperties": false,
            "description": "The erp price of the subscription. This value represents the erp price for the whole term of the subscription."
          },
          "customMargin": {
            "$ref": "#/components/schemas/PriceMargin"
          },
          "billingFrequency": {
            "$ref": "#/components/schemas/BillingFrequency"
          },
          "billingType": {
            "$ref": "#/components/schemas/BillingType"
          },
          "termDuration": {
            "$ref": "#/components/schemas/TermDuration"
          },
          "segment": {
            "$ref": "#/components/schemas/Segment"
          },
          "parentSubscriptionId": {
            "type": "string",
            "description": "The parent subscription identifier.",
            "format": "uuid",
            "nullable": true
          },
          "providerSubscriptionId": {
            "type": "string",
            "description": "The provider's subscription identifier.",
            "nullable": true
          },
          "autoRenew": {
            "$ref": "#/components/schemas/SubscriptionRenewalAction"
          },
          "autoRenewSettings": {
            "$ref": "#/components/schemas/AutoRenewSettings"
          },
          "providerData": {
            "type": "string",
            "description": "The subscription provider data.",
            "nullable": true
          },
          "internalId": {
            "type": "string",
            "description": "The internal identifier.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SubscriptionListItemSubscriptionsPagedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionListItem"
            },
            "nullable": true,
            "readOnly": true
          },
          "paginationParameters": {
            "$ref": "#/components/schemas/PaginationParameters"
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "readOnly": true
          },
          "continuationToken": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "totalUnfilteredCount": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "SubscriptionRenewalAction": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the action to take when a subscription reaches its end of term."
      },
      "SubscriptionStatus": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "SubscriptionTransitionViewModel": {
        "required": [
          "billingFrequency",
          "providerOfferId",
          "providerOfferIdWithAvailability",
          "quantity",
          "termDuration",
          "transitionType"
        ],
        "type": "object",
        "properties": {
          "destinationSubscriptionId": {
            "type": "string",
            "description": "The destination subscription identifier.",
            "format": "uuid",
            "nullable": true
          },
          "destinationProviderSubscriptionId": {
            "type": "string",
            "description": "The destination subscription provider identifer.",
            "nullable": true
          },
          "offerName": {
            "type": "string",
            "description": "The name of the offer.",
            "nullable": true
          },
          "offerDescription": {
            "type": "string",
            "description": "The offer description.",
            "nullable": true
          },
          "offerId": {
            "type": "string",
            "description": "The name of the offer.",
            "format": "uuid"
          },
          "providerOfferId": {
            "type": "string",
            "description": "The provider offer identifier.",
            "nullable": true
          },
          "providerOfferIdWithAvailability": {
            "type": "string",
            "description": "The provider offer identifier.",
            "nullable": true
          },
          "imageUrl": {
            "type": "string",
            "description": "The offer image URL.",
            "nullable": true
          },
          "quantity": {
            "type": "integer",
            "description": "The quantity.",
            "format": "int32"
          },
          "termDuration": {
            "$ref": "#/components/schemas/TermDuration"
          },
          "billingFrequency": {
            "$ref": "#/components/schemas/BillingFrequency"
          },
          "transitionType": {
            "type": "string",
            "description": "The type of transition ('transition_only','transition_with_license_transfer').",
            "nullable": true
          },
          "transitionEvents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransitionEventViewModel"
            },
            "description": "A list with the events related to a transition.",
            "nullable": true
          },
          "cheapestPrice": {
            "$ref": "#/components/schemas/Price"
          },
          "subscriptionEligibilities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionEligibilityDetailViewModel"
            },
            "description": "Subscription eligibilities for this transition.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SubscriptionViewModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the subscription.",
            "format": "uuid"
          },
          "customerId": {
            "type": "string",
            "description": "The customer id of the subscription.",
            "format": "uuid",
            "readOnly": true
          },
          "providerInstanceId": {
            "type": "string",
            "description": "The provider instance id of the subscription.",
            "format": "uuid",
            "readOnly": true
          },
          "resellerId": {
            "type": "string",
            "description": "The reseller id of the subscription.",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "name": {
            "type": "string",
            "description": "The friendly name of the subscription.",
            "nullable": true
          },
          "providerSubscriptionId": {
            "type": "string",
            "description": "The provider subscription identifier.",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/SubscriptionStatus"
          },
          "startDate": {
            "type": "string",
            "description": "The start date of the subscription.",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "description": "The end date of the subscription.",
            "format": "date-time"
          },
          "termStartDate": {
            "type": "string",
            "description": "The start date of the current term. This will change when the subscription is renewed.",
            "format": "date-time",
            "nullable": true
          },
          "cancellationAllowedUntil": {
            "type": "string",
            "description": "The limit date to cancelled the subscription.",
            "format": "date-time",
            "nullable": true
          },
          "quantity": {
            "type": "integer",
            "description": "The quantity of the subscription.",
            "format": "int32"
          },
          "termDuration": {
            "$ref": "#/components/schemas/TermDuration"
          },
          "billingFrequency": {
            "$ref": "#/components/schemas/BillingFrequency"
          },
          "nextBillingFrequency": {
            "$ref": "#/components/schemas/ScheduledBillingFrequency"
          },
          "segment": {
            "$ref": "#/components/schemas/Segment"
          },
          "autoRenew": {
            "$ref": "#/components/schemas/SubscriptionRenewalAction"
          },
          "autoRenewSettings": {
            "$ref": "#/components/schemas/AutoRenewSettings"
          },
          "margin": {
            "$ref": "#/components/schemas/PriceMargin"
          },
          "internalId": {
            "type": "string",
            "description": "The internal identifier.",
            "nullable": true
          },
          "poNumber": {
            "type": "string",
            "description": "The po number.",
            "nullable": true
          },
          "offer": {
            "$ref": "#/components/schemas/OfferViewModel"
          },
          "offerPrice": {
            "$ref": "#/components/schemas/OfferPriceViewModel"
          },
          "renewOffer": {
            "$ref": "#/components/schemas/OfferViewModel"
          },
          "providerData": {
            "type": "string",
            "description": "The subscription provider data.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TermDuration": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The term duration for this entity. Possible values: NoTerm, OneMonth, OneYear, ThreeYears or FiveYears"
      },
      "TermOfferPriceViewModel": {
        "type": "object",
        "properties": {
          "termDuration": {
            "$ref": "#/components/schemas/TermDuration"
          },
          "billingFrequencies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillingFrequency"
            },
            "nullable": true
          },
          "costPrice": {
            "$ref": "#/components/schemas/Price"
          },
          "erpPrice": {
            "$ref": "#/components/schemas/Price"
          }
        },
        "additionalProperties": false
      },
      "TransitionEventViewModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The trasition event name.",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "The trasition event status.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UnifiedRole": {
        "type": "object",
        "properties": {
          "roleDefinitionId": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "UnifiedRoleViewModel": {
        "type": "object",
        "properties": {
          "roleDefinitionId": {
            "type": "string",
            "description": "The unified role definition ID of the directory role.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The directory roles that can be assigned to a Microsoft partner through a delegated admin relationship."
      },
      "UpdateCustomerAccountInfoRequest": {
        "type": "object",
        "properties": {
          "customer": {
            "$ref": "#/components/schemas/CustomerAccountInfoViewModel"
          },
          "retryFailedProviderCustomersFromCompanyInfo": {
            "type": "boolean",
            "description": "This flag indicates if we want to retry any provider customer that failed from invalid company info."
          }
        },
        "additionalProperties": false
      },
      "UpdateCustomerInternalIdentifierRequest": {
        "type": "object",
        "properties": {
          "internalIdentifier": {
            "type": "string",
            "description": "The new internal identifier to set in the customer relationship. This may be up to 255 characters.",
            "nullable": true
          },
          "resellerId": {
            "type": "string",
            "description": "The GUID identifier for the reseller. If value is null it will be the relation with the CSP.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdateCustomerMarginsRequest": {
        "required": [
          "margin"
        ],
        "type": "object",
        "properties": {
          "margin": {
            "$ref": "#/components/schemas/PriceMargin"
          },
          "offerTypeMargins": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/PriceMargin"
            },
            "description": "Contains as key the name of the offer type and as value the price margin applied to each offer type for this specific provider instance.\nPrice margins applied at the offer type level will override the price margin applied at the provider instance level.\nIf no price margin is applied to a specific offer type of this provider instance then it will not be in the dictionary.\nThis dictionary is optional.",
            "nullable": true,
            "example": {
              "value": {
                "license": {
                  "marginRule": {
                    "name": "markup"
                  },
                  "value": 10
                }
              }
            }
          },
          "resellerId": {
            "type": "string",
            "description": "The GUID identifier for the reseller. If set to null, this means direct relationship with CSP.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdateCustomerQualificationRequest": {
        "required": [
          "providerInstanceId",
          "qualification"
        ],
        "type": "object",
        "properties": {
          "providerInstanceId": {
            "type": "string",
            "description": "The GUID identifier for the provider instance.",
            "format": "uuid"
          },
          "qualification": {
            "$ref": "#/components/schemas/Qualification"
          },
          "educationSegment": {
            "type": "string",
            "description": "The education segment (Education qualification only).",
            "nullable": true
          },
          "website": {
            "type": "string",
            "description": "The education website (Education qualification only).",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdateCustomerRelationshipRequest": {
        "required": [
          "autoExtendEnabled",
          "providerInstanceId"
        ],
        "type": "object",
        "properties": {
          "providerInstanceId": {
            "type": "string",
            "description": "The GUID identifier for the provider instance.",
            "format": "uuid",
            "example": "B8E08E60-19F7-4F95-AE29-A82D3CD53F84"
          },
          "autoExtendEnabled": {
            "type": "boolean",
            "description": "The flag to indicate whether the relationship is auto extend enabled. Must be true or false",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "UpdateCustomerUserLicensesRequest": {
        "required": [
          "customerUserLicenses",
          "providerInstanceId"
        ],
        "type": "object",
        "properties": {
          "providerInstanceId": {
            "type": "string",
            "description": "The GUID identifier for the provider instance.",
            "format": "uuid"
          },
          "customerUserLicenses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerLicenseViewModel"
            },
            "description": "The list of licenses to update the customer user.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdateCustomerUserRolesRequest": {
        "required": [
          "providerInstanceId",
          "roleIds"
        ],
        "type": "object",
        "properties": {
          "providerInstanceId": {
            "type": "string",
            "description": "The GUID identifier for the provider instance.",
            "format": "uuid"
          },
          "roleIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The list of role Ids to assign to the customer user.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdateMicrosoftCustomerDomainRequest": {
        "type": "object",
        "properties": {
          "providerInstanceId": {
            "type": "string",
            "description": "The GUID identifier for the provider instance.",
            "format": "uuid"
          },
          "domain": {
            "type": "string",
            "description": "The new microsoft domain to update in this customer.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UserRole": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the enumeration.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "UserViewModel": {
        "required": [
          "email",
          "firstName",
          "groups",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the user.",
            "format": "uuid"
          },
          "firstName": {
            "type": "string",
            "description": "The first name of the user. This may be up to 255 characters.",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "description": "The last name of the user. This may be up to 255 characters.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The email. This may be up to 255 characters.",
            "nullable": true
          },
          "role": {
            "$ref": "#/components/schemas/UserRole"
          },
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GroupViewModel"
            },
            "description": "The user groups.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "View model that represents a user."
      },
      "UserViewModelPagedCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserViewModel"
            },
            "description": "The items for this page.",
            "nullable": true,
            "readOnly": true
          },
          "paginationParameters": {
            "$ref": "#/components/schemas/PaginationParameters"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total number of pages available for the specified parameters and page size.",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of results available for the specified parameters. Note this is typically not equal to the Count of items in the Items property, will only be equal if all the items fit in the first page.",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there is a previous page.",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there is a next page.",
            "readOnly": true
          },
          "continuationToken": {
            "type": "string",
            "description": "The token to continue to retrieve the paginated items.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Helper class to be used on paged collection entities"
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "security": [
    {
      "bearerAuth": [ ]
    }
  ],
  "x-topics": [
    {
      "title": "Getting Started",
      "content": "To get started using CloudCockpit API you need a valid API Access. You can create and obtain one very easily if you are a CSP and have the required permission.\nIf you are a Reseller or you don't have the required permission, ask for your API Access Credentials from your CSP or Admin.\n\n1. Go to your CloudCockpit portal\n2. Navigate to the Settings page\n3. Create a new API Access\n\n![Api Access Creation](https://stcloudcockpitprod.blob.core.windows.net/shared-static-files/APISettingAccessEnable.png)"
    },
    {
      "title": "Authentication Guide",
      "content": "# Create or obtain an Api Access on the portal\n\nThe first step to use the CloudCockpit API is to create an Api Access on your portal. The creation of an Api Access is only enabled for CSPs at the moment, so if you are a Reseller or you don't have the specified permission ask a CSP to provide you with the Api Access for your user context.\n\n# Obtain an Access token from Microsoft\n\nAfter the creation of the API Access you must have the corresponding client ID and client Secret, these properties are required to request an Access Token.\nTo request access you need to perform a request to the url `https://login.microsoftonline.com/4e806121-ff28-4286-ab4e-3be0a08f9ce0/oauth2/v2.0/token` with the client credentials provided by the API Access.\n\n## Examples:\n```shell\ncurl -X POST https://login.microsoftonline.com/4e806121-ff28-4286-ab4e-3be0a08f9ce0/oauth2/v2.0/token \n-H \"Content-Type: application/x-www-form-urlencoded\" \n-d \"client_id={ApiAccess_ClientId}&client_secret={ApiAccess_ClientSecret}&scope=api://b92a36a4-feb8-4f47-a69c-29a180aa6d0a/.default&grant_type=client_credentials\"\n```\n\n![PostmanExample](https://stcloudcockpitprod.blob.core.windows.net/shared-static-files/PostmanExample.png)\n\n## Response and Bearer Token\n\nThe response of this request will include the property access_token, and you need to copy its value and use it as the value of the Bearer token (`-H \"Authorization: Bearer $ACCESS_TOKEN\"`) for each request to our API.\n\n```json\n{\n    \"token_type\": \"Bearer\",\n    \"expires_in\": 3599,\n    \"ext_expires_in\": 3599,\n    \"access_token\": \"eyJ0eXAiOi....\"\n}\n```"
    }
  ]
}