> ## Documentation Index
> Fetch the complete documentation index at: https://docs.runmorph.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# ConnectWise PSA

> Open-Source ConnectWise PSA Connector

<Card title="ConnectWise PSA" icon={<svg width="24" height="24" viewBox="0 0 62 62" xmlns="http://www.w3.org/2000/svg" fill="none"><path fill="url(#A)" d="M9 20h44v21H9z"/><defs><pattern id="A" patternContentUnits="objectBoundingBox" width="1" height="1"><use href="#B" transform="scale(.00227273 .0047619)"/></pattern><image id="B" width="1352" height="210" href="data:image/png;base64,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"/></defs></svg>}>
  The ConnectWise PSA connector enables easy and secure data synchronization between your application and your customers' ConnectWise PSA accounts through unified data models.
</Card>

## Authorization

<Accordion title="OAuth" defaultOpen={false} icon="key-skeleton" iconType="duotone">
  The ConnectWise PSA connector uses OAuth for secure authentication. When creating a connection, the required OAuth scopes are automatically configured based on your specific operations needs (e.g. `genericContact::create`, `genericUser::list`).<br /><br />
  ✓ Automatic token refresh handling<br />
  ✓ Proactive insufficient permissions detection<br /><br />

  [View our step-by-step integration guide](./../api-reference/intro)

  **Whitelabel**

  <Check>
    **Supported** <br />
    You can choose to provide your own set of `clientId` and `clientSecret` for this
    connector from the Morph Cloud dashboard; allowing a fully whitelabled experience
    for your end-customers.
  </Check>
</Accordion>

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { Morph } from "@runmorph/cloud";

  const morph = Morph({ publicKey: "pk_demo_xxxxxxxxxxxxxxx", secretKey: "sk_demo_xxxxxxxxxxxxxxx"}); 

  // create a new connection
  const connection = morph.connections({ connectorId: "connectwise-psa", ownerId: "demo" });
  await connection.create({ operations:[ "genericContact::list" ]});

  // auhtorize the connection
  const { auhtorizationUrl } = await connection.authorize();

  // redirect the user to the auhtorizationUrl
  ```

  ```tsx React theme={null}
  import { Morph, Connect } from "@runmorph/atoms";

  // generate sessionToken from server →  morph.sessions().create(...);

  export default function ConnectionPage({ sessionToken }) {
    return (
      <Morph.Provider>
        <Connect
          sessionToken={sessionToken}
          connectionCallbacks={{
            onError: (error) => alert(error.message)
          }}
        />
      </Morph.Provider>
    );
  }
  ```

  ```python Python theme={null}
  morph = Morph(api_key="pk_demo_xxxxxxxxxxxxxxx", api_secret="sk_demo_xxxxxxxxxxxxxxx")

  # create a new connection
  connection = morph.connections(connector_id="connectwise-psa", owner_id="demo")
  connection.create(operations=[ "genericContact::list" ])

  # authorize the connection
  auth_result = connection.authorize()
  authorization_url = auth_result["authorization_url"]

  # redirect the user to the authorization_url
  ```

  ```ruby Ruby theme={null}
  morph = Morph.new(api_key: "pk_demo_xxxxxxxxxxxxxxx", api_secret: "sk_demo_xxxxxxxxxxxxxxx")

  # create a new connection
  connection = morph.connections(connector_id: "connectwise-psa", owner_id: "demo")
  connection.create(operations: [ "genericContact::list" ])

  # authorize the connection
  auth_result = connection.authorize
  authorization_url = auth_result[:authorization_url]

  # redirect the user to the authorization_url
  ```

  ```php PHP theme={null}
  $morph = new Morph([
    'api_key' => 'pk_demo_xxxxxxxxxxxxxxx',
    'api_secret' => 'sk_demo_xxxxxxxxxxxxxxx'
  ]);

  // create a new connection
  $connection = $morph->connections([
    'connector_id' => 'connectwise-psa',
    'owner_id' => 'demo'
  ]);
  $connection->create(['operations' => ['genericContact::create','genericUser::list']]);

  // auhtorize the connection
  $authResult = $connection->authorize();
  $authorizationUrl = $authResult['authorization_url'];

  // redirect the user to the auhtorizationUrl
  ```

  ```go Go theme={null}
  morph := morph.New(&morph.Config{
      publicKey:    "pk_demo_xxxxxxxxxxxxxxx",
      secretKey: "sk_demo_xxxxxxxxxxxxxxx",
  })

  // create a new connection
  connection := morph.Connections(&morph.ConnectionConfig{
      ConnectorId: "connectwise-psa",
      OwnerId:    "demo",
  })
  connection.Create(&morph.CreateConfig{
      Operations: []string{"genericContact::create", "genericUser::list"},
  })

  // authorize the connection
  authResult, _ := connection.Authorize()
  authorizationUrl := authResult.AuthorizationUrl

  // redirect the user to the authorization URL
  ```
</CodeGroup>

<br />

<Accordion title="Try a live demo of ConnectWise PSA connection ✨">
  <Check>
    **Live Demo** <br />
    Select a connector below to experience our seamless authentication flow and see
    how easy it is to connect third-party services.
  </Check>

  <iframe src="https://atoms-playground.vercel.app/temp/connectors/connectwise-psa?theme=light" width="100%" height="370px" className="block dark:hidden" />

  <iframe src="https://atoms-playground.vercel.app/temp/connectors/connectwise-psa?theme=dark" width="100%" height="370px" className="hidden dark:block" />
</Accordion>

## Models

### Generic

<AccordionGroup>
  <Accordion title="Contact" defaultOpen={false} icon="user-group">
    <p>
      The ConnectWise PSA connector seamlessly integrates with our unified `genericContact` model, enabling you to manage Contacts with rich data including `firstName`, `lastName`, `phoneNumber`, `email` and other key details <br />
    </p>

    **API Reference**

    <table className="mt-0">
      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-green-400/20 text-green-700 dark:bg-green-400/20 dark:text-green-400">GET</span>
        </td>

        <td className="py-1 px-2">`/resources/genericContact`</td>
        <td className="py-1 px-2">[List and Search ConnectWise PSA Contacts](./../api-reference/models/contact/list-contact)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md  leading-tight font-bold bg-green-400/20 text-green-700 dark:bg-green-400/20 dark:text-green-400">GET</span>
        </td>

        <td className="py-1 px-2">`/resources/genericContact/:id`</td>
        <td className="py-1 px-2">[Retrieve a ConnectWise PSA Contact](./../api-reference/models/contact/retrieve-contact)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md  leading-tight font-bold bg-blue-400/20 text-blue-700 dark:bg-blue-400/20 dark:text-blue-400">POST</span>
        </td>

        <td className="py-1 px-2">`/resources/genericContact`</td>
        <td className="py-1 px-2">[Create a ConnectWise PSA Contact](./../api-reference/models/contact/create-contact)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-orange-400/20 text-orange-700 dark:bg-orange-400/20 dark:text-orange-400">PATCH</span>
        </td>

        <td className="py-1 px-2">`/resources/genericContact/:id`</td>
        <td className="py-1 px-2">[Update a ConnectWise PSA Contact](./../api-reference/models/contact/update-contact)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-red-400/20 text-red-700 dark:bg-red-400/20 dark:text-red-400">DEL</span>
        </td>

        <td className="py-1 px-2">`/resources/genericContact/:id`</td>
        <td className="py-1 px-2">[Delete a ConnectWise PSA Contact](./../api-reference/models/contact/delete-contact)</td>
      </tr>
    </table>

    **Custom Fields**

    <Check>
      **Supported** <br />
      The ConnectWise PSA connector supports our `Field Mapping` feature, enabling you or your customers to seamlessly map ConnectWise PSA Contact custom fields to the unified contact model. This allows for flexible data synchronization while maintaining data consistency across all connectors.
    </Check>

    <br />

    [view Contact model details](./../models/genericContact)
  </Accordion>

  <Accordion title="Company" defaultOpen={false} icon="building">
    <p>
      The ConnectWise PSA connector seamlessly integrates with our unified `genericCompany` model, enabling you to manage Companies with rich data including `name` and other key details <br />
    </p>

    **API Reference**

    <table className="mt-0">
      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-green-400/20 text-green-700 dark:bg-green-400/20 dark:text-green-400">GET</span>
        </td>

        <td className="py-1 px-2">`/resources/genericCompany`</td>
        <td className="py-1 px-2">[List and Search ConnectWise PSA Companies](./../api-reference/models/company/list-company)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md  leading-tight font-bold bg-green-400/20 text-green-700 dark:bg-green-400/20 dark:text-green-400">GET</span>
        </td>

        <td className="py-1 px-2">`/resources/genericCompany/:id`</td>
        <td className="py-1 px-2">[Retrieve a ConnectWise PSA Company](./../api-reference/models/company/retrieve-company)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md  leading-tight font-bold bg-blue-400/20 text-blue-700 dark:bg-blue-400/20 dark:text-blue-400">POST</span>
        </td>

        <td className="py-1 px-2">`/resources/genericCompany`</td>
        <td className="py-1 px-2">[Create a ConnectWise PSA Company](./../api-reference/models/company/create-company)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-orange-400/20 text-orange-700 dark:bg-orange-400/20 dark:text-orange-400">PATCH</span>
        </td>

        <td className="py-1 px-2">`/resources/genericCompany/:id`</td>
        <td className="py-1 px-2">[Update a ConnectWise PSA Company](./../api-reference/models/company/update-company)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-red-400/20 text-red-700 dark:bg-red-400/20 dark:text-red-400">DEL</span>
        </td>

        <td className="py-1 px-2">`/resources/genericCompany/:id`</td>
        <td className="py-1 px-2">[Delete a ConnectWise PSA Company](./../api-reference/models/company/delete-company)</td>
      </tr>
    </table>

    **Custom Fields**

    <Check>
      **Supported** <br />
      The ConnectWise PSA connector supports our `Field Mapping` feature, enabling you or your customers to seamlessly map ConnectWise PSA Company custom fields to the unified company model. This allows for flexible data synchronization while maintaining data consistency across all connectors.
    </Check>

    <br />

    [view Company model details](./../models/genericCompany)
  </Accordion>

  <Accordion title="User" defaultOpen={false} icon="users-medical">
    <p>
      The ConnectWise PSA connector seamlessly integrates with our unified `genericUser` model, enabling you to manage Users with rich data including `firstName`, `lastName`, `email` and other key details <br />
    </p>

    **API Reference**

    <table className="mt-0">
      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-green-400/20 text-green-700 dark:bg-green-400/20 dark:text-green-400">GET</span>
        </td>

        <td className="py-1 px-2">`/resources/genericUser`</td>
        <td className="py-1 px-2">[List and Search ConnectWise PSA Users](./../api-reference/models/user/list-user)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md  leading-tight font-bold bg-green-400/20 text-green-700 dark:bg-green-400/20 dark:text-green-400">GET</span>
        </td>

        <td className="py-1 px-2">`/resources/genericUser/:id`</td>
        <td className="py-1 px-2">[Retrieve a ConnectWise PSA User](./../api-reference/models/user/retrieve-user)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md  leading-tight font-bold bg-blue-400/20 text-blue-700 dark:bg-blue-400/20 dark:text-blue-400">POST</span>
        </td>

        <td className="py-1 px-2">`/resources/genericUser`</td>
        <td className="py-1 px-2">[Create a ConnectWise PSA User](./../api-reference/models/user/create-user)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-orange-400/20 text-orange-700 dark:bg-orange-400/20 dark:text-orange-400">PATCH</span>
        </td>

        <td className="py-1 px-2">`/resources/genericUser/:id`</td>
        <td className="py-1 px-2">[Update a ConnectWise PSA User](./../api-reference/models/user/update-user)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-red-400/20 text-red-700 dark:bg-red-400/20 dark:text-red-400">DEL</span>
        </td>

        <td className="py-1 px-2">`/resources/genericUser/:id`</td>
        <td className="py-1 px-2">[Delete a ConnectWise PSA User](./../api-reference/models/user/delete-user)</td>
      </tr>
    </table>

    **Custom Fields**

    <Check>
      **Supported** <br />
      The ConnectWise PSA connector supports our `Field Mapping` feature, enabling you or your customers to seamlessly map ConnectWise PSA User custom fields to the unified user model. This allows for flexible data synchronization while maintaining data consistency across all connectors.
    </Check>

    <br />

    [view User model details](./../models/genericUser)
  </Accordion>

  <Accordion title="Workspace" defaultOpen={false} icon="network-wired">
    <p>
      The ConnectWise PSA connector seamlessly integrates with our unified `genericWorkspace` model, enabling you to manage Workspaces with rich data including `name` and other key details <br />
    </p>

    **API Reference**

    <table className="mt-0">
      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-green-400/20 text-green-700 dark:bg-green-400/20 dark:text-green-400">GET</span>
        </td>

        <td className="py-1 px-2">`/resources/genericWorkspace`</td>
        <td className="py-1 px-2">[List and Search ConnectWise PSA Workspaces](./../api-reference/models/workspace/list-workspace)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md  leading-tight font-bold bg-green-400/20 text-green-700 dark:bg-green-400/20 dark:text-green-400">GET</span>
        </td>

        <td className="py-1 px-2">`/resources/genericWorkspace/:id`</td>
        <td className="py-1 px-2">[Retrieve a ConnectWise PSA Workspace](./../api-reference/models/workspace/retrieve-workspace)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md  leading-tight font-bold bg-blue-400/20 text-blue-700 dark:bg-blue-400/20 dark:text-blue-400">POST</span>
        </td>

        <td className="py-1 px-2">`/resources/genericWorkspace`</td>
        <td className="py-1 px-2">[Create a ConnectWise PSA Workspace](./../api-reference/models/workspace/create-workspace)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-orange-400/20 text-orange-700 dark:bg-orange-400/20 dark:text-orange-400">PATCH</span>
        </td>

        <td className="py-1 px-2">`/resources/genericWorkspace/:id`</td>
        <td className="py-1 px-2">[Update a ConnectWise PSA Workspace](./../api-reference/models/workspace/update-workspace)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-red-400/20 text-red-700 dark:bg-red-400/20 dark:text-red-400">DEL</span>
        </td>

        <td className="py-1 px-2">`/resources/genericWorkspace/:id`</td>
        <td className="py-1 px-2">[Delete a ConnectWise PSA Workspace](./../api-reference/models/workspace/delete-workspace)</td>
      </tr>
    </table>

    **Custom Fields**

    <Check>
      **Supported** <br />
      The ConnectWise PSA connector supports our `Field Mapping` feature, enabling you or your customers to seamlessly map ConnectWise PSA Workspace custom fields to the unified workspace model. This allows for flexible data synchronization while maintaining data consistency across all connectors.
    </Check>

    <br />

    [view Workspace model details](./../models/genericWorkspace)
  </Accordion>
</AccordionGroup>

### Ticketing

<AccordionGroup>
  <Accordion title="Project" defaultOpen={false} icon="folder">
    <p>
      The ConnectWise PSA connector seamlessly integrates with our unified `ticketProject` model, enabling you to manage Projects with rich data including `name`, `description`, `members` and other key details <br />
    </p>

    **API Reference**

    <table className="mt-0">
      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-green-400/20 text-green-700 dark:bg-green-400/20 dark:text-green-400">GET</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketProject`</td>
        <td className="py-1 px-2">[List and Search ConnectWise PSA Projects](./../api-reference/models/project/list-project)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md  leading-tight font-bold bg-green-400/20 text-green-700 dark:bg-green-400/20 dark:text-green-400">GET</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketProject/:id`</td>
        <td className="py-1 px-2">[Retrieve a ConnectWise PSA Project](./../api-reference/models/project/retrieve-project)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md  leading-tight font-bold bg-blue-400/20 text-blue-700 dark:bg-blue-400/20 dark:text-blue-400">POST</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketProject`</td>
        <td className="py-1 px-2">[Create a ConnectWise PSA Project](./../api-reference/models/project/create-project)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-orange-400/20 text-orange-700 dark:bg-orange-400/20 dark:text-orange-400">PATCH</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketProject/:id`</td>
        <td className="py-1 px-2">[Update a ConnectWise PSA Project](./../api-reference/models/project/update-project)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-red-400/20 text-red-700 dark:bg-red-400/20 dark:text-red-400">DEL</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketProject/:id`</td>
        <td className="py-1 px-2">[Delete a ConnectWise PSA Project](./../api-reference/models/project/delete-project)</td>
      </tr>
    </table>

    <br />

    [view Project model details](./../models/ticketProject)
  </Accordion>

  <Accordion title="Issue" defaultOpen={false} icon="ticket">
    <p>
      The ConnectWise PSA connector seamlessly integrates with our unified `ticketIssue` model, enabling you to manage Issues with rich data including `project`, `title`, `description`, `status`, `priority` and other key details <br />
    </p>

    **API Reference**

    <table className="mt-0">
      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-green-400/20 text-green-700 dark:bg-green-400/20 dark:text-green-400">GET</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketIssue`</td>
        <td className="py-1 px-2">[List and Search ConnectWise PSA Issues](./../api-reference/models/issue/list-issue)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md  leading-tight font-bold bg-green-400/20 text-green-700 dark:bg-green-400/20 dark:text-green-400">GET</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketIssue/:id`</td>
        <td className="py-1 px-2">[Retrieve a ConnectWise PSA Issue](./../api-reference/models/issue/retrieve-issue)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md  leading-tight font-bold bg-blue-400/20 text-blue-700 dark:bg-blue-400/20 dark:text-blue-400">POST</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketIssue`</td>
        <td className="py-1 px-2">[Create a ConnectWise PSA Issue](./../api-reference/models/issue/create-issue)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-orange-400/20 text-orange-700 dark:bg-orange-400/20 dark:text-orange-400">PATCH</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketIssue/:id`</td>
        <td className="py-1 px-2">[Update a ConnectWise PSA Issue](./../api-reference/models/issue/update-issue)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-red-400/20 text-red-700 dark:bg-red-400/20 dark:text-red-400">DEL</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketIssue/:id`</td>
        <td className="py-1 px-2">[Delete a ConnectWise PSA Issue](./../api-reference/models/issue/delete-issue)</td>
      </tr>
    </table>

    <br />

    [view Issue model details](./../models/ticketIssue)
  </Accordion>

  <Accordion title="Comment" defaultOpen={false} icon="comments">
    <p>
      The ConnectWise PSA connector seamlessly integrates with our unified `ticketComment` model, enabling you to manage Comments with rich data including `issue`, `author`, `content`, `isInternal` and other key details <br />
    </p>

    **API Reference**

    <table className="mt-0">
      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-green-400/20 text-green-700 dark:bg-green-400/20 dark:text-green-400">GET</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketComment`</td>
        <td className="py-1 px-2">[List and Search ConnectWise PSA Comments](./../api-reference/models/comment/list-comment)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md  leading-tight font-bold bg-green-400/20 text-green-700 dark:bg-green-400/20 dark:text-green-400">GET</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketComment/:id`</td>
        <td className="py-1 px-2">[Retrieve a ConnectWise PSA Comment](./../api-reference/models/comment/retrieve-comment)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md  leading-tight font-bold bg-blue-400/20 text-blue-700 dark:bg-blue-400/20 dark:text-blue-400">POST</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketComment`</td>
        <td className="py-1 px-2">[Create a ConnectWise PSA Comment](./../api-reference/models/comment/create-comment)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-orange-400/20 text-orange-700 dark:bg-orange-400/20 dark:text-orange-400">PATCH</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketComment/:id`</td>
        <td className="py-1 px-2">[Update a ConnectWise PSA Comment](./../api-reference/models/comment/update-comment)</td>
      </tr>

      <tr>
        <td className="py-1 px-2">
          <span className="px-1 py-0.5 rounded-md leading-tight font-bold bg-red-400/20 text-red-700 dark:bg-red-400/20 dark:text-red-400">DEL</span>
        </td>

        <td className="py-1 px-2">`/resources/ticketComment/:id`</td>
        <td className="py-1 px-2">[Delete a ConnectWise PSA Comment](./../api-reference/models/comment/delete-comment)</td>
      </tr>
    </table>

    <br />

    [view Comment model details](./../models/ticketComment)
  </Accordion>
</AccordionGroup>

## Custom

<Check>
  **Supported** <br />
  Can't find the unified model you need? The ConnectWise PSA connector supports your own custom model.
</Check>

## Webhooks

<Accordion title="Events Subscription" defaultOpen={false} icon="webhook" iconType="duotone">
  The ConnectWise PSA connector supports real-time event subscriptions, allowing you to
  receive instant notifications when records are created, updated, or deleted.
  Below are the supported models and their corresponding triggers.

  <table className="mt-0">
    <tr>
      <th className="py-1 px-2">Models</th>
      <th className="py-1 px-2">Created</th>
      <th className="py-1 px-2">Updated</th>
      <th className="py-1 px-2">Deleted</th>
      <th className="py-1 px-6">API Reference</th>
    </tr>

    <tr>
      <td className="">`genericContact`</td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        [view event](./../api-reference/models/contact/event)
      </td>
    </tr>

    <tr>
      <td className="">`genericCompany`</td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        [view event](./../api-reference/models/company/event)
      </td>
    </tr>

    <tr>
      <td className="">`genericUser`</td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        [view event](./../api-reference/models/user/event)
      </td>
    </tr>

    <tr>
      <td className="">`genericWorkspace`</td>

      <td className=" text-center">
        <Icon icon="circle-x" iconType="duotone" color="gray" />
      </td>

      <td className=" text-center">
        <Icon icon="circle-x" iconType="duotone" color="gray" />
      </td>

      <td className=" text-center">
        <Icon icon="circle-x" iconType="duotone" color="gray" />
      </td>

      <td className=" text-center">
        [view event](./../api-reference/models/workspace/event)
      </td>
    </tr>

    <tr>
      <td className="">`ticketProject`</td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        [view event](./../api-reference/models/project/event)
      </td>
    </tr>

    <tr>
      <td className="">`ticketIssue`</td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        [view event](./../api-reference/models/issue/event)
      </td>
    </tr>

    <tr>
      <td className="">`ticketComment`</td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        <Icon icon="circle-check" iconType="duotone" />
      </td>

      <td className=" text-center">
        [view event](./../api-reference/models/comment/event)
      </td>
    </tr>
  </table>
</Accordion>

## Proxy

<Check>
  **Supported** <br />
  The ConnectWise PSA connector supports our `Proxy Request` feature, allowing you to directly
  call any endpoints from ConnectWise PSA's public API without needing to handle authentication.
  Your customer's token will be automatically set and refreshed as needed, enabling
  quick implementation of custom connector behaviors. [View API Reference](./../api-reference/proxy/proxy-request-to-connector).
</Check>
