API Documentation

Here's a link to my Github repository where I've created an OpenAPI 3.0 document for what I've scraped from the dev tools. Feel free to suggest any additional endpoints that you may find.

Note: This will import as is; however, there are several endpoints that require separate scoping that I have had to remove for the time being. There is a potential limitation on the Rewst side for handling multiple securitySchemes that requires different handling for account team endpoints. Everything regarding users and roles needed to include this in your own internal MSP onboarding is already there.

https://github.com/bmsimp/cwhomeapi/blob/main/cwhomeapi.json
{
  "openapi": "3.0.0",
  "info": {
    "title": "CW Home Community API",
    "description": "A community created API document for CW Home until such time that ConnectWise creates their own.",
    "version": "0.0.1"
  },
  "servers": [
    {
      "url": "https://auth.connectwise.com/api"
    }
  ],
  "paths": {
    "/users": {
      "get": {
        "tags": [
          "User"
        ],
        "description": "Returns a list of user objects",
        "summary": "List Users",
        "operationId": "listUsers",
        "parameters": [
          {
            "in": "header",
            "name": "Content-Type",
            "schema": {
              "type": "string",
              "default": "application/json;version=1.0"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "user response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/user"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "User"
        ],
        "description": "Creates a new User",
        "summary": "Create User",
        "operationId": "createUser",
        "parameters": [
          {
            "in": "header",
            "name": "Content-Type",
            "schema": {
              "type": "string",
              "default": "application/json;version=3.0"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/user"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "user response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/user"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/users/{user_id}": {
      "get": {
        "description": "Get user by id",
        "summary": "Get User by ID",
        "operationId": "getUserById",
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Content-Type",
            "schema": {
              "type": "string",
              "default": "application/json;version=1.0"
            },
            "required": true
          },
          {
            "name": "user_id",
            "in": "path",
            "description": "ID of user",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "User response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/user"
                }
              }
            }
          }
        }
      }
    },
    "/connected-apps": {
      "get": {
        "tags": [
          "Connected Apps"
        ],
        "servers": [
          {
            "url": "https://iambff.itsupport247.net/iambff/v1"
          }
        ],
        "description": "List all connected apps settings",
        "summary": "List Connected App Settings",
        "operationId": "listConnectedAppSettings",
        "parameters": [
          {
            "in": "header",
            "name": "Content-Type",
            "schema": {
              "type": "string",
              "default": "application/json;version=1.0"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully return connected application settings, including application roles",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/connectedAppSettings"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/connected-apps/asio_platform": {
      "get": {
        "tags": [
          "Connected Apps"
        ],
        "servers": [
          {
            "url": "https://iambff.itsupport247.net/iambff/v1"
          }
        ],
        "description": "Get settings for Asio platform",
        "summary": "Get Asio Platform Settings",
        "operationId": "getAsioPlatformSettings",
        "parameters": [
          {
            "in": "header",
            "name": "Content-Type",
            "schema": {
              "type": "string",
              "default": "application/json;version=1.0"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully return Asio connected application settings, including application roles",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/connectedAppSettings"
                }
              }
            }
          }
        }
      }
    },
    "/users/{user_id}/connected-apps/asio_platform/app-role-mappings": {
      "put": {
        "description": "Add user to Asio application role",
        "summary": "Add User to Asio App Role",
        "operationId": "addUserToAsioAppRole",
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Content-Type",
            "schema": {
              "type": "string",
              "default": "application/json;version=1.0"
            },
            "required": true
          },
          {
            "name": "user_id",
            "in": "path",
            "description": "ID of user",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "servers": [
          {
            "url": "https://iambff.itsupport247.net/iambff/v1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/asioRoleRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "User added response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/message"
                }
              }
            }
          }
        }
      }
    },
    "/users/{user_id}/identity-roles": {
      "put": {
        "description": "Add user to CW Home identity role",
        "summary": "Add User to CW Home Identity Role",
        "operationId": "addUserToIdentityRole",
        "tags": [
          "User"
        ],
        "parameters": [
          {
            "in": "header",
            "name": "Content-Type",
            "schema": {
              "type": "string",
              "default": "application/json;version=1.0"
            },
            "required": true
          },
          {
            "name": "user_id",
            "in": "path",
            "description": "ID of user",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "servers": [
          {
            "url": "https://iambff.itsupport247.net/iambff/v1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/identityRoleRequestBody"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successfully updated identity role(s)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/appRoleResponse"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ExternalMFAProviders": {
      "get": {
        "description": "List external MFA providers",
        "summary": "List External MFA Providers",
        "operationId": "getExternalMfaProviders",
        "tags": [
          "Options"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "enabled",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful MFA provider response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/externalMfaProvider"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/LoginProviders": {
      "get": {
        "description": "List login providers",
        "summary": "List Login providers",
        "operationId": "getLoginProviders",
        "tags": [
          "Options"
        ],
        "responses": {
          "200": {
            "description": "Successful login provider response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/loginProvider"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/roles": {
      "get": {
        "tags": [
          "Identity Role"
        ],
        "description": "List identity roles",
        "summary": "List Identity Roles",
        "operationId": "listIdentityRoles",
        "parameters": [
          {
            "in": "query",
            "name": "includeUsersCount",
            "description": "Setting to true will return the number of users assigned to the role. Leaving this blank will default to false which returns 0 for all roles.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "header",
            "name": "Content-Type",
            "schema": {
              "type": "string",
              "default": "application/json;version=1.0"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Successful listing of identity roles",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/identityRole"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/roles/{role_id}": {
      "get": {
        "tags": [
          "Identity Role"
        ],
        "description": "Get details of identity role by ID",
        "summary": "Get Identity Role by ID",
        "operationId": "getIdentityRoleById",
        "parameters": [
          {
            "in": "query",
            "name": "includeUsersCount",
            "description": "Setting to true will return the number of users assigned to the role. Leaving this blank will default to false which returns 0 for all roles.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "role_id",
            "in": "path",
            "description": "ID of a role",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Content-Type",
            "schema": {
              "type": "string",
              "default": "application/json;version=1.0"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Successful identity role response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/identityRole"
                }
              }
            }
          }
        }
      }
    },
    "/roles/{role_id}/users": {
      "get": {
        "tags": [
          "Identity Role"
        ],
        "description": "Get users assigned to identity role",
        "summary": "Get Users Assigned to Identity Role",
        "operationId": "getUsersAssignedToIdentityRole",
        "parameters": [
          {
            "name": "role_id",
            "in": "path",
            "description": "ID of a role",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Content-Type",
            "schema": {
              "type": "string",
              "default": "application/json;version=1.0"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully listed users assigned to identity role",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/user"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tools/products": {
      "get": {
        "tags": [
          "Tools"
        ],
        "servers": [
          {
            "url": "https://home.connectwise.com/api"
          }
        ],
        "description": "List CW products",
        "summary": "List CW Products",
        "operationId": "listCWProducts",
        "responses": {
          "200": {
            "description": "Successfully listed products",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/application"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/company/companies/teams/accountManager": {
      "get": {
        "tags": [
          "Account Team"
        ],
        "servers": [
          {
            "url": "https://home.connectwise.com/api"
          }
        ],
        "description": "Get Account Manager",
        "summary": "Get Account Manager",
        "operationId": "getAccountManager",
        "responses": {
          "200": {
            "description": "Successfully fetched account manager",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/accountTeamMember"
                }
              }
            }
          },
          "404": {
            "description": "Failed to fetch account manager",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/message"
                }
              }
            }
          }
        }
      }
    },
    "/company/companies/teams/successManager": {
      "get": {
        "tags": [
          "Account Team"
        ],
        "servers": [
          {
            "url": "https://home.connectwise.com/api"
          }
        ],
        "description": "Get Client Success Manager",
        "summary": "Get Client Success Manager",
        "operationId": "getClientSuccessManager",
        "responses": {
          "200": {
            "description": "Successfully fetched client success manager",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/accountTeamMember"
                }
              }
            }
          },
          "404": {
            "description": "Failed to fetch client success manager",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/message"
                }
              }
            }
          }
        }
      }
    },
    "/company/companies/teams/partnerSalesExecutive": {
      "get": {
        "tags": [
          "Account Team"
        ],
        "servers": [
          {
            "url": "https://home.connectwise.com/api"
          }
        ],
        "description": "Get Partner Sales Executive",
        "summary": "Get Partner Sales Executive",
        "operationId": "getPartnerSalesExecutive",
        "responses": {
          "200": {
            "description": "Successfully fetched partner sales executive",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/accountTeamMember"
                }
              }
            }
          },
          "404": {
            "description": "Failed to fetch partner sales executive",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/message"
                }
              }
            }
          }
        }
      }
    },
    "/company/companies/teams/partnerDevelopmentManager": {
      "get": {
        "tags": [
          "Account Team"
        ],
        "servers": [
          {
            "url": "https://home.connectwise.com/api"
          }
        ],
        "description": "Get Partner Development Manager",
        "summary": "Get Partner Development Manager",
        "operationId": "getPartnerDevelopmentManager",
        "responses": {
          "200": {
            "description": "Successfully fetched partner development manager",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/accountTeamMember"
                }
              }
            }
          },
          "404": {
            "description": "Failed to fetch partner development manager",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/message"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "user": {
        "type": "object",
        "required": [
          "partnerId",
          "userName",
          "email",
          "firstName",
          "lastName",
          "additionalClaims"
        ],
        "properties": {
          "partnerId": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "mfaEnabled": {
            "type": "boolean"
          },
          "emailConfirmed": {
            "type": "boolean"
          },
          "isDisabled": {
            "type": "boolean"
          },
          "isPending": {
            "type": "boolean"
          },
          "isInviteLinkValid": {
            "type": "boolean"
          },
          "status": {
            "type": "string"
          },
          "created": {
            "type": "integer",
            "format": "unix-timestamp"
          },
          "updated": {
            "type": "number",
            "format": "unix-timestamp"
          },
          "userName": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "loginScheme": {
            "type": "string"
          },
          "additionalClaims": {
            "type": "object",
            "properties": {
              "claimType": {
                "type": "string",
                "enum": [
                  "contact_email"
                ]
              },
              "claimValue": {
                "type": "object",
                "properties": {
                  "value": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string",
                    "enum": [
                      "contact"
                    ]
                  }
                }
              },
              "claimValueType": {
                "type": "string",
                "enum": [
                  "json"
                ]
              }
            }
          }
        }
      },
      "loginProvider": {
        "type": "object",
        "properties": {
          "authority": {
            "type": "string"
          },
          "clientId": {
            "type": "string"
          },
          "clientName": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "protocolType": {
            "type": "string"
          },
          "providerId": {
            "type": "integer"
          },
          "responseType": {
            "type": "string"
          },
          "scheme": {
            "type": "string"
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "externalMfaProvider": {
        "type": "object"
      },
      "identityRole": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "roleClaims": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "usersCount": {
            "type": "number"
          }
        }
      },
      "application": {
        "type": "object",
        "properties": {
          "submitFirstUsageForm": {
            "type": "boolean"
          },
          "productId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "instanceId": {
            "type": "string"
          },
          "productInfo1": {
            "type": "string"
          },
          "productInfo2": {
            "type": "string"
          },
          "stsClientId": {
            "type": "string"
          },
          "information": {
            "type": "string"
          },
          "inTrial": {
            "type": "boolean"
          },
          "purchased": {
            "type": "boolean"
          },
          "cancelled": {
            "type": "boolean"
          },
          "provisioning": {
            "type": "boolean"
          },
          "trialExpired": {
            "type": "boolean"
          },
          "launchUrl": {
            "type": "string"
          },
          "hasActiveInstance": {
            "type": "boolean"
          },
          "paymentPastDue": {
            "type": "string"
          },
          "billNextDateUnixTimeSeconds": {
            "type": "integer"
          },
          "allowFreeTrial": {
            "type": "boolean"
          },
          "daysLeftInTrial": {
            "type": "integer"
          },
          "controlDualTrial": {
            "type": "boolean"
          },
          "failed": {
            "type": "boolean"
          },
          "allowAddToCart": {
            "type": "boolean"
          },
          "purchaseUrl": {
            "type": "string"
          },
          "allowRequestForQuoteOrDemo": {
            "type": "boolean"
          },
          "activeLicenses": {
            "type": "integer"
          }
        }
      },
      "message": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        }
      },
      "asioRoleRequestBody": {
        "type": "object",
        "properties": {
          "connectedAppRoles": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "assignedResources": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "roleId": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "connectedAppSettings": {
        "type": "object",
        "properties": {
          "version": {
            "type": "number"
          },
          "applicationBaseName": {
            "type": "string"
          },
          "iconName": {
            "type": "string"
          },
          "authorizationEnabled": {
            "type": "boolean"
          },
          "authorization": {
            "type": "object",
            "properties": {
              "roleAssignment": {
                "type": "object",
                "properties": {
                  "hasSingleAppRoleConstraint": {
                    "type": "boolean"
                  },
                  "forbidIdentityRoleAssignment": {
                    "type": "boolean"
                  },
                  "applicationRoles": {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/applicationRole"
                    }
                  },
                  "getAppRolesURL": {
                    "type": "string"
                  }
                }
              },
              "corporateStructure": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  },
                  "levelsUrl": {
                    "type": "string"
                  },
                  "containersPerLevelUrl": {
                    "type": "string"
                  },
                  "companiesUrl": {
                    "type": "string"
                  },
                  "sitesUrl": {
                    "type": "string"
                  },
                  "constraints": {
                    "type": "object",
                    "properties": {
                      "containerAssignment": {
                        "$ref": "#/components/schemas/constraintAssignment"
                      },
                      "companyAssignment": {
                        "$ref": "#/components/schemas/constraintAssignment"
                      },
                      "siteAssignment": {
                        "$ref": "#/components/schemas/constraintAssignment"
                      }
                    }
                  }
                }
              }
            }
          },
          "accessRestrictions": {
            "type": "object",
            "properties": {
              "accessType": {
                "type": "string"
              },
              "accessUrl": {
                "type": "string"
              },
              "evaluationExpression": {
                "type": "string"
              }
            }
          },
          "enabled": {
            "type": "boolean"
          },
          "clientId": {
            "type": "string"
          },
          "clientName": {
            "type": "string"
          },
          "accessManagementUrl": {
            "type": "string"
          },
          "redirectUris": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "usersCount": {
            "type": "number"
          },
          "softwareId": {
            "type": "string"
          },
          "productName": {
            "type": "string"
          },
          "claims": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/applicationClaim"
            }
          },
          "isCommon": {
            "type": "boolean"
          },
          "userAccessControlEnabled": {
            "type": "boolean"
          },
          "properties": {
            "type": "object",
            "properties": {
              "access_management_endpoint": {
                "type": "string"
              },
              "user_access_control_enabled": {
                "type": "string"
              },
              "initiate_login_uri": {
                "type": "string"
              }
            }
          }
        }
      },
      "applicationClaim": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "applicationRole": {
        "type": "object",
        "properties": {
          "roleId": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "resourceConstraint": {
            "type": "object"
          },
          "roleTypeHints": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "constraintAssignment": {
        "type": "object",
        "properties": {
          "maxSelections": {
            "type": "number"
          },
          "enableSelectAll": {
            "type": "boolean"
          },
          "enableFutureResourceAccessSelection": {
            "type": "boolean"
          }
        }
      },
      "accountTeamMember": {
        "type": "object",
        "properties": {
          "fullName": {
            "type": "string"
          },
          "defaultEmail": {
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "phone": {
            "type": "string"
          },
          "hasSuccessManager": {
            "type": "boolean"
          }
        }
      },
      "identityRoleRequestBody": {
        "type": "object",
        "properties": {
          "identityRoleIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "appRoleResponse": {
        "type": "object",
        "properties": {
          "Status": {
            "type": "number"
          },
          "identityRoleId": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "operation": {
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "oAuth": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://auth.connectwise.com/connect/authorize",
            "tokenUrl": "https://auth.connectwise.com/connect/token",
            "scopes": {
              "api.sts.admin": "api.sts.admin",
              "api.users": "api.users",
              "api.users.import": "api.users.import",
              "openid": "openid",
              "profile": "profile",
              "offline_access": "offline_access"
            }
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "User"
    },
    {
      "name": "Identity Role"
    },
    {
      "name": "Connected Apps"
    },
    {
      "name": "Options"
    },
    {
      "name": "Tools"
    },
    {
      "name": "Account Team"
    }
  ]
}

Last updated