Platform API

<back to all web services

GetContactRoleDetails

Get details of the specified contact role, including details of the contacts and organisations sharing it

Requires Authentication
The following routes are available for this service:
All Verbs/api/contactrole/{ContactRoleId}
import Foundation
import ServiceStack

/**
* Get details of the specified contact role, including details of the contacts and organisations sharing it
*/
// @Api(Description="Get details of the specified contact role, including details of the contacts and organisations sharing it")
public class GetContactRoleDetails : PagedModel
{
    /**
    * The Contact Role Guid. Records retrieved will belong to this contact.
    */
    // @ApiMember(DataType="Guid", Description="The Contact Role Guid. Records retrieved will belong to this contact.", IsRequired=true, Name="ContactRoleId", ParameterType="query")
    public var contactRoleId:String

    /**
    * Text filter
    */
    // @ApiMember(DataType="string", Description="Text filter", Name="SearchText", ParameterType="query")
    public var searchText:String

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case contactRoleId
        case searchText
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        contactRoleId = try container.decodeIfPresent(String.self, forKey: .contactRoleId)
        searchText = try container.decodeIfPresent(String.self, forKey: .searchText)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if contactRoleId != nil { try container.encode(contactRoleId, forKey: .contactRoleId) }
        if searchText != nil { try container.encode(searchText, forKey: .searchText) }
    }
}

public class PagedModel : Codable
{
    /**
    * Page Number to retrieve
    */
    // @ApiMember(DataType="int", Description="Page Number to retrieve", Name="PageNumber")
    public var pageNumber:Int

    /**
    * Number of records to retrieve
    */
    // @ApiMember(DataType="int", Description="Number of records to retrieve", Name="PageSize")
    public var pageSize:Int

    /**
    * Index of field to sort results by
    */
    // @ApiMember(DataType="int", Description="Index of field to sort results by", Name="SortIndex")
    public var sortIndex:Int

    /**
    * Sort Order - Ascending or Descending
    */
    // @ApiMember(DataType="int", Description="Sort Order - Ascending or Descending", Name="SortOrder")
    public var sortOrder:SortOrder

    required public init(){}
}

public enum SortOrder : String, Codable
{
    case Ascending
    case Descending
}

// @ApiResponse(Description="Details of the specified contact role, including details of the contacts and organisations sharing it")
public class GetContactRoleDetailsResponse : Codable
{
    public var contactRole:ViewRoleModel
    public var responseStatus:ResponseStatus

    required public init(){}
}

public class ViewRoleModel : PagedModel
{
    /**
    * Role Id
    */
    // @ApiMember(DataType="Guid", Description="Role Id", IsRequired=true, Name="RoleId")
    public var roleId:String

    /**
    * Role Name
    */
    // @ApiMember(DataType="string", Description="Role Name", Name="RoleName")
    public var roleName:String

    /**
    * Role Connection Definition Id
    */
    // @ApiMember(DataType="Guid", Description="Role Connection Definition Id", Name="RoleConnectionDefinitionId")
    public var roleConnectionDefinitionId:String

    /**
    * Contact Types the Role applies to
    */
    // @ApiMember(DataType="List", Description="Contact Types the Role applies to", Name="ContactTypes")
    public var contactTypes:[String]

    /**
    * Does the role require contacts to accept it?
    */
    // @ApiMember(DataType="bool", Description="Does the role require contacts to accept it?", Name="RequireContactsToAccept")
    public var requireContactsToAccept:Bool

    public var isPlatformRole:Bool
    public var canAddContacts:Bool
    public var canShareRole:Bool
    public var canEditRole:Bool
    public var canEditContactTypes:Bool
    public var contacts:[UserProfileSummaryModel]
    public var shareDetails:IList<ObjectShareModel>
    public var listItemFilters:[ListItemFilterModel]
    public var contactIdOwner:String
    public var totalItemCount:Int

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case roleId
        case roleName
        case roleConnectionDefinitionId
        case contactTypes
        case requireContactsToAccept
        case isPlatformRole
        case canAddContacts
        case canShareRole
        case canEditRole
        case canEditContactTypes
        case contacts
        case shareDetails
        case listItemFilters
        case contactIdOwner
        case totalItemCount
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        roleId = try container.decodeIfPresent(String.self, forKey: .roleId)
        roleName = try container.decodeIfPresent(String.self, forKey: .roleName)
        roleConnectionDefinitionId = try container.decodeIfPresent(String.self, forKey: .roleConnectionDefinitionId)
        contactTypes = try container.decodeIfPresent([String].self, forKey: .contactTypes) ?? []
        requireContactsToAccept = try container.decodeIfPresent(Bool.self, forKey: .requireContactsToAccept)
        isPlatformRole = try container.decodeIfPresent(Bool.self, forKey: .isPlatformRole)
        canAddContacts = try container.decodeIfPresent(Bool.self, forKey: .canAddContacts)
        canShareRole = try container.decodeIfPresent(Bool.self, forKey: .canShareRole)
        canEditRole = try container.decodeIfPresent(Bool.self, forKey: .canEditRole)
        canEditContactTypes = try container.decodeIfPresent(Bool.self, forKey: .canEditContactTypes)
        contacts = try container.decodeIfPresent([UserProfileSummaryModel].self, forKey: .contacts) ?? []
        shareDetails = try container.decodeIfPresent(IList<ObjectShareModel>.self, forKey: .shareDetails)
        listItemFilters = try container.decodeIfPresent([ListItemFilterModel].self, forKey: .listItemFilters) ?? []
        contactIdOwner = try container.decodeIfPresent(String.self, forKey: .contactIdOwner)
        totalItemCount = try container.decodeIfPresent(Int.self, forKey: .totalItemCount)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if roleId != nil { try container.encode(roleId, forKey: .roleId) }
        if roleName != nil { try container.encode(roleName, forKey: .roleName) }
        if roleConnectionDefinitionId != nil { try container.encode(roleConnectionDefinitionId, forKey: .roleConnectionDefinitionId) }
        if contactTypes != nil { try container.encode(contactTypes, forKey: .contactTypes) }
        if requireContactsToAccept != nil { try container.encode(requireContactsToAccept, forKey: .requireContactsToAccept) }
        if isPlatformRole != nil { try container.encode(isPlatformRole, forKey: .isPlatformRole) }
        if canAddContacts != nil { try container.encode(canAddContacts, forKey: .canAddContacts) }
        if canShareRole != nil { try container.encode(canShareRole, forKey: .canShareRole) }
        if canEditRole != nil { try container.encode(canEditRole, forKey: .canEditRole) }
        if canEditContactTypes != nil { try container.encode(canEditContactTypes, forKey: .canEditContactTypes) }
        if contacts != nil { try container.encode(contacts, forKey: .contacts) }
        if shareDetails != nil { try container.encode(shareDetails, forKey: .shareDetails) }
        if listItemFilters != nil { try container.encode(listItemFilters, forKey: .listItemFilters) }
        if contactIdOwner != nil { try container.encode(contactIdOwner, forKey: .contactIdOwner) }
        if totalItemCount != nil { try container.encode(totalItemCount, forKey: .totalItemCount) }
    }
}

public class UserProfileSummaryModel : Codable
{
    /**
    * User Profile Id
    */
    // @ApiMember(DataType="Guid", Description="User Profile Id", Name="UserProfileId")
    public var userProfileId:String

    /**
    * User linked to the profile
    */
    // @ApiMember(DataType="Guid", Description="User linked to the profile", Name="UserId")
    public var userId:String

    /**
    * Contact linked to the profile
    */
    // @ApiMember(DataType="Guid", Description="Contact linked to the profile", Name="ContactId")
    public var contactId:String

    /**
    * User linked to the profile
    */
    // @ApiMember(DataType="string", Description="User linked to the profile", Name="UserName")
    public var userName:String

    /**
    * User Profile Name
    */
    // @ApiMember(DataType="string", Description="User Profile Name", Name="ProfileName")
    public var profileName:String

    /**
    * Full name of the contact linked to the profile
    */
    // @ApiMember(DataType="string", Description="Full name of the contact linked to the profile", Name="ContactFullName")
    public var contactFullName:String

    /**
    * Email Address of the contact linked to the profile
    */
    // @ApiMember(DataType="string", Description="Email Address of the contact linked to the profile", Name="EmailAddress")
    public var emailAddress:String

    /**
    * Email signature of the contact linked to the profile
    */
    // @ApiMember(DataType="string", Description="Email signature of the contact linked to the profile", Name="EmailSignature")
    public var emailSignature:String

    /**
    * Mobile number of the contact linked to the profile
    */
    // @ApiMember(DataType="string", Description="Mobile number of the contact linked to the profile", Name="MobileNumber")
    public var mobileNumber:String

    /**
    * Phone number of the contact linked to the profile
    */
    // @ApiMember(DataType="string", Description="Phone number of the contact linked to the profile", Name="PhoneNumber")
    public var phoneNumber:String

    /**
    * 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")
    public var contactTypeId:String

    /**
    * 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")
    public var contactTypeName:String

    /**
    * First name of the contact linked to the profile
    */
    // @ApiMember(DataType="string", Description="First name of the contact linked to the profile", Name="FirstName")
    public var firstName:String

    /**
    * Surname of the contact linked to the profile
    */
    // @ApiMember(DataType="string", Description="Surname of the contact linked to the profile", Name="Surname")
    public var surname:String

    /**
    * Title of contact linked to the profile
    */
    // @ApiMember(DataType="string", Description="Title of contact linked to the profile", Name="Title")
    public var title:String

    /**
    * Legal name of contact linked to the profile
    */
    // @ApiMember(DataType="string", Description="Legal name of contact linked to the profile", Name="LegalName")
    public var legalName:String

    /**
    * Trading name of contact linked to the profile
    */
    // @ApiMember(DataType="string", Description="Trading name of contact linked to the profile", Name="TradingName")
    public var tradingName:String

    /**
    * Australian Business Number
    */
    // @ApiMember(DataType="string", Description="Australian Business Number", Name="Abn", ParameterType="query")
    public var abn:String

    /**
    * Australian Company Number
    */
    // @ApiMember(DataType="string", Description="Australian Company Number", Name="Acn", ParameterType="query")
    public var acn:String

    /**
    * Australian Registered Body Number
    */
    // @ApiMember(DataType="string", Description="Australian Registered Body Number", Name="Arbn", ParameterType="query")
    public var arbn:String

    /**
    * Indicates if the Contact is registered for GST.
    */
    // @ApiMember(DataType="bool", Description="Indicates if the Contact is registered for GST.", Name="GstRegistered", ParameterType="query")
    public var gstRegistered:Bool

    /**
    * 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")
    public var esl:Bool

    /**
    * 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")
    public var language:String

    /**
    * True if an interpreter is required.
    */
    // @ApiMember(DataType="bool", Description="True if an interpreter is required.", Name="InterpreterRequired", ParameterType="query")
    public var interpreterRequired:Bool

    /**
    * Licensee specific notes about the contact.
    */
    // @ApiMember(DataType="string", Description="Licensee specific notes about the contact.", Name="LicenseeNotes", ParameterType="query")
    public var licenseeNotes:String

    /**
    * Profile photo of contact linked to the profile
    */
    // @ApiMember(DataType="string", Description="Profile photo of contact linked to the profile", Name="ProfilePhotoUrl")
    public var profilePhotoUrl:String

    /**
    * Thumbnail photo of contact linked to the profile
    */
    // @ApiMember(DataType="string", Description="Thumbnail photo of contact linked to the profile", Name="ProfilePhotoThumbnailUrl")
    public var profilePhotoThumbnailUrl:String

    /**
    * Profile photo id of contact linked to the profile
    */
    // @ApiMember(DataType="Guid", Description="Profile photo id of contact linked to the profile", Name="ProfileImageId")
    public var profileImageId:String

    /**
    * Profile description
    */
    // @ApiMember(DataType="string", Description="Profile description", Name="Description")
    public var Description:String

    /**
    * Employment Industry
    */
    // @ApiMember(DataType="string", Description="Employment Industry", Name="EmploymentIndustry")
    public var employmentIndustry:String

    /**
    * Employment Role
    */
    // @ApiMember(DataType="string", Description="Employment Role", Name="EmploymentRole")
    public var employmentRole:String

    /**
    * Areas of Work
    */
    // @ApiMember(DataType="string", Description="Areas of Work", Name="EmploymentGeographicArea")
    public var employmentGeographicArea:String

    /**
    * The contacts timezone.
    */
    // @ApiMember(DataType="Guid", Description="The contacts timezone.", Name="Timezone", ParameterType="query")
    public var timezone:String

    /**
    * Timezone Name
    */
    // @ApiMember(DataType="string", Description="Timezone Name", Name="TimezoneName", ParameterType="query")
    public var timezoneName:String

    /**
    * The primary address of the contact
    */
    // @ApiMember(DataType="string", Description="The primary address of the contact", Name="PrimaryAddress", ParameterType="query")
    public var primaryAddress:String

    /**
    * 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")
    public var isActiveContact:Bool

    required public init(){}
}

public class ObjectShareModel : Codable
{
    public var objectShareId:String
    public var objectId:String
    public var objectName:String
    public var name:String
    public var Description:String
    public var reference:String
    public var contactId:String
    public var contactName:String
    public var contactType:String
    public var contactImageUrlPrimary:String
    public var contactImageUrlPrimaryThmbnail:String
    public var shareStatusId:String
    public var shareStatusName:String

    required public init(){}
}

public class ListItemFilterModel : Codable
{
    public var listItemFilterId:String
    public var filterName:String
    public var listId:String
    public var listItemId:String
    public var listItemIsInFilter:Bool

    required public init(){}
}


Swift GetContactRoleDetails DTOs

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

HTTP + CSV

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

POST /api/contactrole/{ContactRoleId} HTTP/1.1 
Host: pfapi.pstpf.com.au 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"ContactRoleId":"00000000-0000-0000-0000-000000000000","SearchText":"String","PageNumber":0,"PageSize":0,"SortIndex":0,"SortOrder":"Ascending"}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"ContactRole":{"RoleId":"00000000-0000-0000-0000-000000000000","RoleName":"String","RoleConnectionDefinitionId":"00000000-0000-0000-0000-000000000000","ContactTypes":["00000000-0000-0000-0000-000000000000"],"RequireContactsToAccept":false,"IsPlatformRole":false,"CanAddContacts":false,"CanShareRole":false,"CanEditRole":false,"CanEditContactTypes":false,"Contacts":[{"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}],"ShareDetails":null,"ListItemFilters":[{"ListItemFilterId":"00000000-0000-0000-0000-000000000000","FilterName":"String","ListId":"00000000-0000-0000-0000-000000000000","ListItemId":"00000000-0000-0000-0000-000000000000","ListItemIsInFilter":false}],"ContactIdOwner":"00000000-0000-0000-0000-000000000000","TotalItemCount":0,"PageNumber":0,"PageSize":0,"SortIndex":0,"SortOrder":"Ascending"},"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}