Platform API

<back to all web services

UpdateContactGroup

Update the specified contact group

Requires Authentication
The following routes are available for this service:
PUT/api/contactgroups/{ContactGroupId}
<?php namespace dtos;

use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};


// @ApiResponse(Description="Create contact group")
class UpdateContactGroupResponse implements JsonSerializable
{
    public function __construct(
        /** @var bool|null */
        public ?bool $Status=null,
        /** @var ResponseStatus|null */
        public ?ResponseStatus $ResponseStatus=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Status'])) $this->Status = $o['Status'];
        if (isset($o['ResponseStatus'])) $this->ResponseStatus = JsonConverters::from('ResponseStatus', $o['ResponseStatus']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Status)) $o['Status'] = $this->Status;
        if (isset($this->ResponseStatus)) $o['ResponseStatus'] = JsonConverters::to('ResponseStatus', $this->ResponseStatus);
        return empty($o) ? new class(){} : $o;
    }
}

class UserProfileSummaryModel implements JsonSerializable
{
    public function __construct(
        /** @description User Profile Id */
        // @ApiMember(DataType="Guid", Description="User Profile Id", Name="UserProfileId")
        /** @var string */
        public string $UserProfileId='',

        /** @description User linked to the profile */
        // @ApiMember(DataType="Guid", Description="User linked to the profile", Name="UserId")
        /** @var string */
        public string $UserId='',

        /** @description Contact linked to the profile */
        // @ApiMember(DataType="Guid", Description="Contact linked to the profile", Name="ContactId")
        /** @var string */
        public string $ContactId='',

        /** @description User linked to the profile */
        // @ApiMember(DataType="string", Description="User linked to the profile", Name="UserName")
        /** @var string|null */
        public ?string $UserName=null,

        /** @description User Profile Name */
        // @ApiMember(DataType="string", Description="User Profile Name", Name="ProfileName")
        /** @var string|null */
        public ?string $ProfileName=null,

        /** @description Full name of the contact linked to the profile */
        // @ApiMember(DataType="string", Description="Full name of the contact linked to the profile", Name="ContactFullName")
        /** @var string|null */
        public ?string $ContactFullName=null,

        /** @description Email Address of the contact linked to the profile */
        // @ApiMember(DataType="string", Description="Email Address of the contact linked to the profile", Name="EmailAddress")
        /** @var string|null */
        public ?string $EmailAddress=null,

        /** @description Email signature of the contact linked to the profile */
        // @ApiMember(DataType="string", Description="Email signature of the contact linked to the profile", Name="EmailSignature")
        /** @var string|null */
        public ?string $EmailSignature=null,

        /** @description Mobile number of the contact linked to the profile */
        // @ApiMember(DataType="string", Description="Mobile number of the contact linked to the profile", Name="MobileNumber")
        /** @var string|null */
        public ?string $MobileNumber=null,

        /** @description Phone number of the contact linked to the profile */
        // @ApiMember(DataType="string", Description="Phone number of the contact linked to the profile", Name="PhoneNumber")
        /** @var string|null */
        public ?string $PhoneNumber=null,

        /** @description Type of contact (person, organisation etc.) linked to the profile */
        // @ApiMember(DataType="string", Description="Type of contact (person, organisation etc.) linked to the profile", Name="ContactTypeId")
        /** @var string */
        public string $ContactTypeId='',

        /** @description Type of contact (person, organisation etc.) linked to the profile */
        // @ApiMember(DataType="string", Description="Type of contact (person, organisation etc.) linked to the profile", Name="ContactTypeName")
        /** @var string|null */
        public ?string $ContactTypeName=null,

        /** @description First name of the contact linked to the profile */
        // @ApiMember(DataType="string", Description="First name of the contact linked to the profile", Name="FirstName")
        /** @var string|null */
        public ?string $FirstName=null,

        /** @description Surname of the contact linked to the profile */
        // @ApiMember(DataType="string", Description="Surname of the contact linked to the profile", Name="Surname")
        /** @var string|null */
        public ?string $Surname=null,

        /** @description Title of contact linked to the profile */
        // @ApiMember(DataType="string", Description="Title of contact linked to the profile", Name="Title")
        /** @var string|null */
        public ?string $Title=null,

        /** @description Legal name of contact linked to the profile */
        // @ApiMember(DataType="string", Description="Legal name of contact linked to the profile", Name="LegalName")
        /** @var string|null */
        public ?string $LegalName=null,

        /** @description Trading name of contact linked to the profile */
        // @ApiMember(DataType="string", Description="Trading name of contact linked to the profile", Name="TradingName")
        /** @var string|null */
        public ?string $TradingName=null,

        /** @description Australian Business Number */
        // @ApiMember(DataType="string", Description="Australian Business Number", Name="Abn", ParameterType="query")
        /** @var string|null */
        public ?string $Abn=null,

        /** @description Australian Company Number */
        // @ApiMember(DataType="string", Description="Australian Company Number", Name="Acn", ParameterType="query")
        /** @var string|null */
        public ?string $Acn=null,

        /** @description Australian Registered Body Number */
        // @ApiMember(DataType="string", Description="Australian Registered Body Number", Name="Arbn", ParameterType="query")
        /** @var string|null */
        public ?string $Arbn=null,

        /** @description Indicates if the Contact is registered for GST. */
        // @ApiMember(DataType="bool", Description="Indicates if the Contact is registered for GST.", Name="GstRegistered", ParameterType="query")
        /** @var bool|null */
        public ?bool $GstRegistered=null,

        /** @description True if english is a secondary language for the contact. */
        // @ApiMember(DataType="bool", Description="True if english is a secondary language for the contact.", Name="ESL", ParameterType="query")
        /** @var bool|null */
        public ?bool $ESL=null,

        /** @description Language that is the primary language for the contact. */
        // @ApiMember(DataType="string", Description="Language that is the primary language for the contact.", Name="Language", ParameterType="query")
        /** @var string|null */
        public ?string $Language=null,

        /** @description True if an interpreter is required. */
        // @ApiMember(DataType="bool", Description="True if an interpreter is required.", Name="InterpreterRequired", ParameterType="query")
        /** @var bool|null */
        public ?bool $InterpreterRequired=null,

        /** @description Licensee specific notes about the contact. */
        // @ApiMember(DataType="string", Description="Licensee specific notes about the contact.", Name="LicenseeNotes", ParameterType="query")
        /** @var string|null */
        public ?string $LicenseeNotes=null,

        /** @description Profile photo of contact linked to the profile */
        // @ApiMember(DataType="string", Description="Profile photo of contact linked to the profile", Name="ProfilePhotoUrl")
        /** @var string|null */
        public ?string $ProfilePhotoUrl=null,

        /** @description Thumbnail photo of contact linked to the profile */
        // @ApiMember(DataType="string", Description="Thumbnail photo of contact linked to the profile", Name="ProfilePhotoThumbnailUrl")
        /** @var string|null */
        public ?string $ProfilePhotoThumbnailUrl=null,

        /** @description Profile photo id of contact linked to the profile */
        // @ApiMember(DataType="Guid", Description="Profile photo id of contact linked to the profile", Name="ProfileImageId")
        /** @var string */
        public string $ProfileImageId='',

        /** @description Profile description */
        // @ApiMember(DataType="string", Description="Profile description", Name="Description")
        /** @var string|null */
        public ?string $Description=null,

        /** @description Employment Industry */
        // @ApiMember(DataType="string", Description="Employment Industry", Name="EmploymentIndustry")
        /** @var string|null */
        public ?string $EmploymentIndustry=null,

        /** @description Employment Role */
        // @ApiMember(DataType="string", Description="Employment Role", Name="EmploymentRole")
        /** @var string|null */
        public ?string $EmploymentRole=null,

        /** @description Areas of Work */
        // @ApiMember(DataType="string", Description="Areas of Work", Name="EmploymentGeographicArea")
        /** @var string|null */
        public ?string $EmploymentGeographicArea=null,

        /** @description The contacts timezone. */
        // @ApiMember(DataType="Guid", Description="The contacts timezone.", Name="Timezone", ParameterType="query")
        /** @var string */
        public string $Timezone='',

        /** @description Timezone Name */
        // @ApiMember(DataType="string", Description="Timezone Name", Name="TimezoneName", ParameterType="query")
        /** @var string|null */
        public ?string $TimezoneName=null,

        /** @description The primary address of the contact */
        // @ApiMember(DataType="string", Description="The primary address of the contact", Name="PrimaryAddress", ParameterType="query")
        /** @var string|null */
        public ?string $PrimaryAddress=null,

        /** @description Is this an active contact? Or an inactive contact (deleted account)? */
        // @ApiMember(DataType="bool", Description="Is this an active contact? Or an inactive contact (deleted account)?", Name="IsActiveContact")
        /** @var bool|null */
        public ?bool $IsActiveContact=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['UserProfileId'])) $this->UserProfileId = $o['UserProfileId'];
        if (isset($o['UserId'])) $this->UserId = $o['UserId'];
        if (isset($o['ContactId'])) $this->ContactId = $o['ContactId'];
        if (isset($o['UserName'])) $this->UserName = $o['UserName'];
        if (isset($o['ProfileName'])) $this->ProfileName = $o['ProfileName'];
        if (isset($o['ContactFullName'])) $this->ContactFullName = $o['ContactFullName'];
        if (isset($o['EmailAddress'])) $this->EmailAddress = $o['EmailAddress'];
        if (isset($o['EmailSignature'])) $this->EmailSignature = $o['EmailSignature'];
        if (isset($o['MobileNumber'])) $this->MobileNumber = $o['MobileNumber'];
        if (isset($o['PhoneNumber'])) $this->PhoneNumber = $o['PhoneNumber'];
        if (isset($o['ContactTypeId'])) $this->ContactTypeId = $o['ContactTypeId'];
        if (isset($o['ContactTypeName'])) $this->ContactTypeName = $o['ContactTypeName'];
        if (isset($o['FirstName'])) $this->FirstName = $o['FirstName'];
        if (isset($o['Surname'])) $this->Surname = $o['Surname'];
        if (isset($o['Title'])) $this->Title = $o['Title'];
        if (isset($o['LegalName'])) $this->LegalName = $o['LegalName'];
        if (isset($o['TradingName'])) $this->TradingName = $o['TradingName'];
        if (isset($o['Abn'])) $this->Abn = $o['Abn'];
        if (isset($o['Acn'])) $this->Acn = $o['Acn'];
        if (isset($o['Arbn'])) $this->Arbn = $o['Arbn'];
        if (isset($o['GstRegistered'])) $this->GstRegistered = $o['GstRegistered'];
        if (isset($o['ESL'])) $this->ESL = $o['ESL'];
        if (isset($o['Language'])) $this->Language = $o['Language'];
        if (isset($o['InterpreterRequired'])) $this->InterpreterRequired = $o['InterpreterRequired'];
        if (isset($o['LicenseeNotes'])) $this->LicenseeNotes = $o['LicenseeNotes'];
        if (isset($o['ProfilePhotoUrl'])) $this->ProfilePhotoUrl = $o['ProfilePhotoUrl'];
        if (isset($o['ProfilePhotoThumbnailUrl'])) $this->ProfilePhotoThumbnailUrl = $o['ProfilePhotoThumbnailUrl'];
        if (isset($o['ProfileImageId'])) $this->ProfileImageId = $o['ProfileImageId'];
        if (isset($o['Description'])) $this->Description = $o['Description'];
        if (isset($o['EmploymentIndustry'])) $this->EmploymentIndustry = $o['EmploymentIndustry'];
        if (isset($o['EmploymentRole'])) $this->EmploymentRole = $o['EmploymentRole'];
        if (isset($o['EmploymentGeographicArea'])) $this->EmploymentGeographicArea = $o['EmploymentGeographicArea'];
        if (isset($o['Timezone'])) $this->Timezone = $o['Timezone'];
        if (isset($o['TimezoneName'])) $this->TimezoneName = $o['TimezoneName'];
        if (isset($o['PrimaryAddress'])) $this->PrimaryAddress = $o['PrimaryAddress'];
        if (isset($o['IsActiveContact'])) $this->IsActiveContact = $o['IsActiveContact'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->UserProfileId)) $o['UserProfileId'] = $this->UserProfileId;
        if (isset($this->UserId)) $o['UserId'] = $this->UserId;
        if (isset($this->ContactId)) $o['ContactId'] = $this->ContactId;
        if (isset($this->UserName)) $o['UserName'] = $this->UserName;
        if (isset($this->ProfileName)) $o['ProfileName'] = $this->ProfileName;
        if (isset($this->ContactFullName)) $o['ContactFullName'] = $this->ContactFullName;
        if (isset($this->EmailAddress)) $o['EmailAddress'] = $this->EmailAddress;
        if (isset($this->EmailSignature)) $o['EmailSignature'] = $this->EmailSignature;
        if (isset($this->MobileNumber)) $o['MobileNumber'] = $this->MobileNumber;
        if (isset($this->PhoneNumber)) $o['PhoneNumber'] = $this->PhoneNumber;
        if (isset($this->ContactTypeId)) $o['ContactTypeId'] = $this->ContactTypeId;
        if (isset($this->ContactTypeName)) $o['ContactTypeName'] = $this->ContactTypeName;
        if (isset($this->FirstName)) $o['FirstName'] = $this->FirstName;
        if (isset($this->Surname)) $o['Surname'] = $this->Surname;
        if (isset($this->Title)) $o['Title'] = $this->Title;
        if (isset($this->LegalName)) $o['LegalName'] = $this->LegalName;
        if (isset($this->TradingName)) $o['TradingName'] = $this->TradingName;
        if (isset($this->Abn)) $o['Abn'] = $this->Abn;
        if (isset($this->Acn)) $o['Acn'] = $this->Acn;
        if (isset($this->Arbn)) $o['Arbn'] = $this->Arbn;
        if (isset($this->GstRegistered)) $o['GstRegistered'] = $this->GstRegistered;
        if (isset($this->ESL)) $o['ESL'] = $this->ESL;
        if (isset($this->Language)) $o['Language'] = $this->Language;
        if (isset($this->InterpreterRequired)) $o['InterpreterRequired'] = $this->InterpreterRequired;
        if (isset($this->LicenseeNotes)) $o['LicenseeNotes'] = $this->LicenseeNotes;
        if (isset($this->ProfilePhotoUrl)) $o['ProfilePhotoUrl'] = $this->ProfilePhotoUrl;
        if (isset($this->ProfilePhotoThumbnailUrl)) $o['ProfilePhotoThumbnailUrl'] = $this->ProfilePhotoThumbnailUrl;
        if (isset($this->ProfileImageId)) $o['ProfileImageId'] = $this->ProfileImageId;
        if (isset($this->Description)) $o['Description'] = $this->Description;
        if (isset($this->EmploymentIndustry)) $o['EmploymentIndustry'] = $this->EmploymentIndustry;
        if (isset($this->EmploymentRole)) $o['EmploymentRole'] = $this->EmploymentRole;
        if (isset($this->EmploymentGeographicArea)) $o['EmploymentGeographicArea'] = $this->EmploymentGeographicArea;
        if (isset($this->Timezone)) $o['Timezone'] = $this->Timezone;
        if (isset($this->TimezoneName)) $o['TimezoneName'] = $this->TimezoneName;
        if (isset($this->PrimaryAddress)) $o['PrimaryAddress'] = $this->PrimaryAddress;
        if (isset($this->IsActiveContact)) $o['IsActiveContact'] = $this->IsActiveContact;
        return empty($o) ? new class(){} : $o;
    }
}

class RoleModel implements JsonSerializable
{
    public function __construct(
        /** @description Role Id */
        // @ApiMember(DataType="Guid", Description="Role Id", IsRequired=true, Name="RoleId")
        /** @var string */
        public string $RoleId='',

        /** @description Role Name */
        // @ApiMember(DataType="string", Description="Role Name", Name="RoleName")
        /** @var string|null */
        public ?string $RoleName=null,

        /** @description Is the role a licensee role? */
        // @ApiMember(DataType="bool", Description="Is the role a licensee role?", Name="IsLicensee")
        /** @var bool|null */
        public ?bool $IsLicenseeRole=null,

        /** @description Is manage contacts role? */
        // @ApiMember(DataType="bool", Description="Is manage contacts role?", Name="IsManageContacts")
        /** @var bool|null */
        public ?bool $IsManageContacts=null,

        /** @description Is the role a Platform role? */
        // @ApiMember(DataType="bool", Description="Is the role a Platform role?", Name="IsPlatformRole")
        /** @var bool|null */
        public ?bool $IsPlatformRole=null,

        /** @description Is the role a services role? */
        // @ApiMember(DataType="bool", Description="Is the role a services role?", Name="IsServiceRole")
        /** @var bool|null */
        public ?bool $IsServiceRole=null,

        /** @description Is the role a customer role? */
        // @ApiMember(DataType="bool", Description="Is the role a customer role?", Name="IsCustomerRole")
        /** @var bool|null */
        public ?bool $IsCustomerRole=null,

        /** @description Is the role a functional role? */
        // @ApiMember(DataType="bool", Description="Is the role a functional role?", Name="IsFunctionalRole")
        /** @var bool|null */
        public ?bool $IsFunctionalRole=null,

        /** @description Is the role an auto-accept role? */
        // @ApiMember(DataType="bool", Description="Is the role an auto-accept role?", Name="IsRequestAutoAccepted")
        /** @var bool|null */
        public ?bool $IsRequestAutoAccepted=null,

        /** @description Suite that the role belongs to */
        // @ApiMember(DataType="Guid", Description="Suite that the role belongs to", Name="SuiteId")
        /** @var string */
        public string $SuiteId='',

        /** @description Suite that the role belongs to */
        // @ApiMember(DataType="string", Description="Suite that the role belongs to", Name="SuiteName")
        /** @var string|null */
        public ?string $SuiteName=null,

        /** @description 'A' (Active) or 'I' (Inactive) */
        // @ApiMember(DataType="string", Description="'A' (Active) or 'I' (Inactive)", Name="RecordStatus")
        /** @var string|null */
        public ?string $RecordStatus=null,

        /** @description Object Connection Id, which is populated when the roles are returned based on those that are connected to an object. */
        // @ApiMember(DataType="Guid", Description="Object Connection Id, which is populated when the roles are returned based on those that are connected to an object.", Name="ObjectConnectionId")
        /** @var string */
        public string $ObjectConnectionId=''
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['RoleId'])) $this->RoleId = $o['RoleId'];
        if (isset($o['RoleName'])) $this->RoleName = $o['RoleName'];
        if (isset($o['IsLicenseeRole'])) $this->IsLicenseeRole = $o['IsLicenseeRole'];
        if (isset($o['IsManageContacts'])) $this->IsManageContacts = $o['IsManageContacts'];
        if (isset($o['IsPlatformRole'])) $this->IsPlatformRole = $o['IsPlatformRole'];
        if (isset($o['IsServiceRole'])) $this->IsServiceRole = $o['IsServiceRole'];
        if (isset($o['IsCustomerRole'])) $this->IsCustomerRole = $o['IsCustomerRole'];
        if (isset($o['IsFunctionalRole'])) $this->IsFunctionalRole = $o['IsFunctionalRole'];
        if (isset($o['IsRequestAutoAccepted'])) $this->IsRequestAutoAccepted = $o['IsRequestAutoAccepted'];
        if (isset($o['SuiteId'])) $this->SuiteId = $o['SuiteId'];
        if (isset($o['SuiteName'])) $this->SuiteName = $o['SuiteName'];
        if (isset($o['RecordStatus'])) $this->RecordStatus = $o['RecordStatus'];
        if (isset($o['ObjectConnectionId'])) $this->ObjectConnectionId = $o['ObjectConnectionId'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->RoleId)) $o['RoleId'] = $this->RoleId;
        if (isset($this->RoleName)) $o['RoleName'] = $this->RoleName;
        if (isset($this->IsLicenseeRole)) $o['IsLicenseeRole'] = $this->IsLicenseeRole;
        if (isset($this->IsManageContacts)) $o['IsManageContacts'] = $this->IsManageContacts;
        if (isset($this->IsPlatformRole)) $o['IsPlatformRole'] = $this->IsPlatformRole;
        if (isset($this->IsServiceRole)) $o['IsServiceRole'] = $this->IsServiceRole;
        if (isset($this->IsCustomerRole)) $o['IsCustomerRole'] = $this->IsCustomerRole;
        if (isset($this->IsFunctionalRole)) $o['IsFunctionalRole'] = $this->IsFunctionalRole;
        if (isset($this->IsRequestAutoAccepted)) $o['IsRequestAutoAccepted'] = $this->IsRequestAutoAccepted;
        if (isset($this->SuiteId)) $o['SuiteId'] = $this->SuiteId;
        if (isset($this->SuiteName)) $o['SuiteName'] = $this->SuiteName;
        if (isset($this->RecordStatus)) $o['RecordStatus'] = $this->RecordStatus;
        if (isset($this->ObjectConnectionId)) $o['ObjectConnectionId'] = $this->ObjectConnectionId;
        return empty($o) ? new class(){} : $o;
    }
}

class ContactGroupConnectionModel extends UserProfileSummaryModel implements JsonSerializable
{
    /**
     * @param string $UserProfileId
     * @param string $UserId
     * @param string $ContactId
     * @param string|null $UserName
     * @param string|null $ProfileName
     * @param string|null $ContactFullName
     * @param string|null $EmailAddress
     * @param string|null $EmailSignature
     * @param string|null $MobileNumber
     * @param string|null $PhoneNumber
     * @param string $ContactTypeId
     * @param string|null $ContactTypeName
     * @param string|null $FirstName
     * @param string|null $Surname
     * @param string|null $Title
     * @param string|null $LegalName
     * @param string|null $TradingName
     * @param string|null $Abn
     * @param string|null $Acn
     * @param string|null $Arbn
     * @param bool|null $GstRegistered
     * @param bool|null $ESL
     * @param string|null $Language
     * @param bool|null $InterpreterRequired
     * @param string|null $LicenseeNotes
     * @param string|null $ProfilePhotoUrl
     * @param string|null $ProfilePhotoThumbnailUrl
     * @param string $ProfileImageId
     * @param string|null $Description
     * @param string|null $EmploymentIndustry
     * @param string|null $EmploymentRole
     * @param string|null $EmploymentGeographicArea
     * @param string $Timezone
     * @param string|null $TimezoneName
     * @param string|null $PrimaryAddress
     * @param bool|null $IsActiveContact
     */
    public function __construct(
        string $UserProfileId='',
        string $UserId='',
        string $ContactId='',
        ?string $UserName=null,
        ?string $ProfileName=null,
        ?string $ContactFullName=null,
        ?string $EmailAddress=null,
        ?string $EmailSignature=null,
        ?string $MobileNumber=null,
        ?string $PhoneNumber=null,
        string $ContactTypeId='',
        ?string $ContactTypeName=null,
        ?string $FirstName=null,
        ?string $Surname=null,
        ?string $Title=null,
        ?string $LegalName=null,
        ?string $TradingName=null,
        ?string $Abn=null,
        ?string $Acn=null,
        ?string $Arbn=null,
        ?bool $GstRegistered=null,
        ?bool $ESL=null,
        ?string $Language=null,
        ?bool $InterpreterRequired=null,
        ?string $LicenseeNotes=null,
        ?string $ProfilePhotoUrl=null,
        ?string $ProfilePhotoThumbnailUrl=null,
        string $ProfileImageId='',
        ?string $Description=null,
        ?string $EmploymentIndustry=null,
        ?string $EmploymentRole=null,
        ?string $EmploymentGeographicArea=null,
        string $Timezone='',
        ?string $TimezoneName=null,
        ?string $PrimaryAddress=null,
        ?bool $IsActiveContact=null,
        /** @description Contact Group Id */
        // @ApiMember(DataType="Guid", Description="Contact Group Id", Name="ContactGroupId")
        /** @var string */
        public string $ContactGroupId='',

        /** @description Connection id of the contact in the group */
        // @ApiMember(DataType="string", Description="Connection id of the contact in the group", Name="ContactGroupConnectionId")
        /** @var string */
        public string $ContactGroupConnectionId='',

        /** @description The Id of the Role this contact is connected to the group with. */
        // @ApiMember(DataType="string", Description="The Id of the Role this contact is connected to the group with.", Name="ConnectionRoleId")
        /** @var string */
        public string $ConnectionRoleId='',

        /** @description Order of contacts within a group, the primary contact will have an index of 1. */
        // @ApiMember(DataType="int", Description="Order of contacts within a group, the primary contact will have an index of 1.", Name="Index")
        /** @var int */
        public int $Index=0,

        /** @description List of roles that the contact in the contact group has across appliances for e.g. Platform Customer, Nexus customer etc. */
        // @ApiMember(DataType="string", Description="List of roles that the contact in the contact group has across appliances for e.g. Platform Customer, Nexus customer etc.", Name="ContactRoles")
        /** @var array<RoleModel>|null */
        public ?array $ContactRoles=null
    ) {
        parent::__construct($UserProfileId,$UserId,$ContactId,$UserName,$ProfileName,$ContactFullName,$EmailAddress,$EmailSignature,$MobileNumber,$PhoneNumber,$ContactTypeId,$ContactTypeName,$FirstName,$Surname,$Title,$LegalName,$TradingName,$Abn,$Acn,$Arbn,$GstRegistered,$ESL,$Language,$InterpreterRequired,$LicenseeNotes,$ProfilePhotoUrl,$ProfilePhotoThumbnailUrl,$ProfileImageId,$Description,$EmploymentIndustry,$EmploymentRole,$EmploymentGeographicArea,$Timezone,$TimezoneName,$PrimaryAddress,$IsActiveContact);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['ContactGroupId'])) $this->ContactGroupId = $o['ContactGroupId'];
        if (isset($o['ContactGroupConnectionId'])) $this->ContactGroupConnectionId = $o['ContactGroupConnectionId'];
        if (isset($o['ConnectionRoleId'])) $this->ConnectionRoleId = $o['ConnectionRoleId'];
        if (isset($o['Index'])) $this->Index = $o['Index'];
        if (isset($o['ContactRoles'])) $this->ContactRoles = JsonConverters::fromArray('RoleModel', $o['ContactRoles']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->ContactGroupId)) $o['ContactGroupId'] = $this->ContactGroupId;
        if (isset($this->ContactGroupConnectionId)) $o['ContactGroupConnectionId'] = $this->ContactGroupConnectionId;
        if (isset($this->ConnectionRoleId)) $o['ConnectionRoleId'] = $this->ConnectionRoleId;
        if (isset($this->Index)) $o['Index'] = $this->Index;
        if (isset($this->ContactRoles)) $o['ContactRoles'] = JsonConverters::toArray('RoleModel', $this->ContactRoles);
        return empty($o) ? new class(){} : $o;
    }
}

/** @description Update the specified contact group */
// @Api(Description="Update the specified contact group")
class UpdateContactGroup implements JsonSerializable
{
    public function __construct(
        /** @description Id of Contact group to be updated */
        // @ApiMember(Description="Id of Contact group to be updated", Name="CustomerGroupId")
        /** @var string */
        public string $CustomerGroupId='',

        /** @var string|null */
        public ?string $CustomerName=null,
        /** @var string */
        public string $NameTypeId='',
        /** @var array<ContactGroupConnectionModel>|null */
        public ?array $Contacts=null,
        /** @var string|null */
        public ?string $RecordStatus=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['CustomerGroupId'])) $this->CustomerGroupId = $o['CustomerGroupId'];
        if (isset($o['CustomerName'])) $this->CustomerName = $o['CustomerName'];
        if (isset($o['NameTypeId'])) $this->NameTypeId = $o['NameTypeId'];
        if (isset($o['Contacts'])) $this->Contacts = JsonConverters::fromArray('ContactGroupConnectionModel', $o['Contacts']);
        if (isset($o['RecordStatus'])) $this->RecordStatus = $o['RecordStatus'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->CustomerGroupId)) $o['CustomerGroupId'] = $this->CustomerGroupId;
        if (isset($this->CustomerName)) $o['CustomerName'] = $this->CustomerName;
        if (isset($this->NameTypeId)) $o['NameTypeId'] = $this->NameTypeId;
        if (isset($this->Contacts)) $o['Contacts'] = JsonConverters::toArray('ContactGroupConnectionModel', $this->Contacts);
        if (isset($this->RecordStatus)) $o['RecordStatus'] = $this->RecordStatus;
        return empty($o) ? new class(){} : $o;
    }
}

PHP UpdateContactGroup DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

PUT /api/contactgroups/{ContactGroupId} HTTP/1.1 
Host: pfapi.pstpf.com.au 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"CustomerGroupId":"00000000-0000-0000-0000-000000000000","CustomerName":"String","NameTypeId":"00000000-0000-0000-0000-000000000000","Contacts":[{"ContactGroupId":"00000000-0000-0000-0000-000000000000","ContactGroupConnectionId":"00000000-0000-0000-0000-000000000000","ConnectionRoleId":"00000000-0000-0000-0000-000000000000","Index":0,"ContactRoles":[{"RoleId":"00000000-0000-0000-0000-000000000000","RoleName":"String","IsLicenseeRole":false,"IsManageContacts":false,"IsPlatformRole":false,"IsServiceRole":false,"IsCustomerRole":false,"IsFunctionalRole":false,"IsRequestAutoAccepted":false,"SuiteId":"00000000-0000-0000-0000-000000000000","SuiteName":"String","RecordStatus":"String","ObjectConnectionId":"00000000-0000-0000-0000-000000000000"}],"UserProfileId":"00000000-0000-0000-0000-000000000000","UserId":"00000000-0000-0000-0000-000000000000","ContactId":"00000000-0000-0000-0000-000000000000","UserName":"String","ProfileName":"String","ContactFullName":"String","EmailAddress":"String","EmailSignature":"String","MobileNumber":"String","PhoneNumber":"String","ContactTypeId":"00000000-0000-0000-0000-000000000000","ContactTypeName":"String","FirstName":"String","Surname":"String","Title":"String","LegalName":"String","TradingName":"String","Abn":"String","Acn":"String","Arbn":"String","GstRegistered":false,"ESL":false,"Language":"String","InterpreterRequired":false,"LicenseeNotes":"String","ProfilePhotoUrl":"String","ProfilePhotoThumbnailUrl":"String","ProfileImageId":"00000000-0000-0000-0000-000000000000","Description":"String","EmploymentIndustry":"String","EmploymentRole":"String","EmploymentGeographicArea":"String","Timezone":"00000000-0000-0000-0000-000000000000","TimezoneName":"String","PrimaryAddress":"String","IsActiveContact":false}],"RecordStatus":"String"}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"Status":false,"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}