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 datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum


class SortOrder(str, Enum):
    ASCENDING = 'Ascending'
    DESCENDING = 'Descending'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PagedModel:
    # @ApiMember(DataType="int", Description="Page Number to retrieve", Name="PageNumber")
    page_number: int = 0
    """
    Page Number to retrieve
    """


    # @ApiMember(DataType="int", Description="Number of records to retrieve", Name="PageSize")
    page_size: int = 0
    """
    Number of records to retrieve
    """


    # @ApiMember(DataType="int", Description="Index of field to sort results by", Name="SortIndex")
    sort_index: int = 0
    """
    Index of field to sort results by
    """


    # @ApiMember(DataType="int", Description="Sort Order - Ascending or Descending", Name="SortOrder")
    sort_order: Optional[SortOrder] = None
    """
    Sort Order - Ascending or Descending
    """


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class UserProfileSummaryModel:
    # @ApiMember(DataType="Guid", Description="User Profile Id", Name="UserProfileId")
    user_profile_id: Optional[str] = None
    """
    User Profile Id
    """


    # @ApiMember(DataType="Guid", Description="User linked to the profile", Name="UserId")
    user_id: Optional[str] = None
    """
    User linked to the profile
    """


    # @ApiMember(DataType="Guid", Description="Contact linked to the profile", Name="ContactId")
    contact_id: Optional[str] = None
    """
    Contact linked to the profile
    """


    # @ApiMember(DataType="string", Description="User linked to the profile", Name="UserName")
    user_name: Optional[str] = None
    """
    User linked to the profile
    """


    # @ApiMember(DataType="string", Description="User Profile Name", Name="ProfileName")
    profile_name: Optional[str] = None
    """
    User Profile Name
    """


    # @ApiMember(DataType="string", Description="Full name of the contact linked to the profile", Name="ContactFullName")
    contact_full_name: Optional[str] = None
    """
    Full name of the contact linked to the profile
    """


    # @ApiMember(DataType="string", Description="Email Address of the contact linked to the profile", Name="EmailAddress")
    email_address: Optional[str] = None
    """
    Email Address of the contact linked to the profile
    """


    # @ApiMember(DataType="string", Description="Email signature of the contact linked to the profile", Name="EmailSignature")
    email_signature: Optional[str] = None
    """
    Email signature of the contact linked to the profile
    """


    # @ApiMember(DataType="string", Description="Mobile number of the contact linked to the profile", Name="MobileNumber")
    mobile_number: Optional[str] = None
    """
    Mobile number of the contact linked to the profile
    """


    # @ApiMember(DataType="string", Description="Phone number of the contact linked to the profile", Name="PhoneNumber")
    phone_number: Optional[str] = None
    """
    Phone number of the contact linked to the profile
    """


    # @ApiMember(DataType="string", Description="Type of contact (person, organisation etc.) linked to the profile", Name="ContactTypeId")
    contact_type_id: Optional[str] = None
    """
    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")
    contact_type_name: Optional[str] = None
    """
    Type of contact (person, organisation etc.) linked to the profile
    """


    # @ApiMember(DataType="string", Description="First name of the contact linked to the profile", Name="FirstName")
    first_name: Optional[str] = None
    """
    First name of the contact linked to the profile
    """


    # @ApiMember(DataType="string", Description="Surname of the contact linked to the profile", Name="Surname")
    surname: Optional[str] = None
    """
    Surname of the contact linked to the profile
    """


    # @ApiMember(DataType="string", Description="Title of contact linked to the profile", Name="Title")
    title: Optional[str] = None
    """
    Title of contact linked to the profile
    """


    # @ApiMember(DataType="string", Description="Legal name of contact linked to the profile", Name="LegalName")
    legal_name: Optional[str] = None
    """
    Legal name of contact linked to the profile
    """


    # @ApiMember(DataType="string", Description="Trading name of contact linked to the profile", Name="TradingName")
    trading_name: Optional[str] = None
    """
    Trading name of contact linked to the profile
    """


    # @ApiMember(DataType="string", Description="Australian Business Number", Name="Abn", ParameterType="query")
    abn: Optional[str] = None
    """
    Australian Business Number
    """


    # @ApiMember(DataType="string", Description="Australian Company Number", Name="Acn", ParameterType="query")
    acn: Optional[str] = None
    """
    Australian Company Number
    """


    # @ApiMember(DataType="string", Description="Australian Registered Body Number", Name="Arbn", ParameterType="query")
    arbn: Optional[str] = None
    """
    Australian Registered Body Number
    """


    # @ApiMember(DataType="bool", Description="Indicates if the Contact is registered for GST.", Name="GstRegistered", ParameterType="query")
    gst_registered: bool = False
    """
    Indicates if the Contact is registered for GST.
    """


    # @ApiMember(DataType="bool", Description="True if english is a secondary language for the contact.", Name="ESL", ParameterType="query")
    esl: bool = False
    """
    True if english is a secondary language for the contact.
    """


    # @ApiMember(DataType="string", Description="Language that is the primary language for the contact.", Name="Language", ParameterType="query")
    language: Optional[str] = None
    """
    Language that is the primary language for the contact.
    """


    # @ApiMember(DataType="bool", Description="True if an interpreter is required.", Name="InterpreterRequired", ParameterType="query")
    interpreter_required: bool = False
    """
    True if an interpreter is required.
    """


    # @ApiMember(DataType="string", Description="Licensee specific notes about the contact.", Name="LicenseeNotes", ParameterType="query")
    licensee_notes: Optional[str] = None
    """
    Licensee specific notes about the contact.
    """


    # @ApiMember(DataType="string", Description="Profile photo of contact linked to the profile", Name="ProfilePhotoUrl")
    profile_photo_url: Optional[str] = None
    """
    Profile photo of contact linked to the profile
    """


    # @ApiMember(DataType="string", Description="Thumbnail photo of contact linked to the profile", Name="ProfilePhotoThumbnailUrl")
    profile_photo_thumbnail_url: Optional[str] = None
    """
    Thumbnail photo of contact linked to the profile
    """


    # @ApiMember(DataType="Guid", Description="Profile photo id of contact linked to the profile", Name="ProfileImageId")
    profile_image_id: Optional[str] = None
    """
    Profile photo id of contact linked to the profile
    """


    # @ApiMember(DataType="string", Description="Profile description", Name="Description")
    description: Optional[str] = None
    """
    Profile description
    """


    # @ApiMember(DataType="string", Description="Employment Industry", Name="EmploymentIndustry")
    employment_industry: Optional[str] = None
    """
    Employment Industry
    """


    # @ApiMember(DataType="string", Description="Employment Role", Name="EmploymentRole")
    employment_role: Optional[str] = None
    """
    Employment Role
    """


    # @ApiMember(DataType="string", Description="Areas of Work", Name="EmploymentGeographicArea")
    employment_geographic_area: Optional[str] = None
    """
    Areas of Work
    """


    # @ApiMember(DataType="Guid", Description="The contacts timezone.", Name="Timezone", ParameterType="query")
    timezone: Optional[str] = None
    """
    The contacts timezone.
    """


    # @ApiMember(DataType="string", Description="Timezone Name", Name="TimezoneName", ParameterType="query")
    timezone_name: Optional[str] = None
    """
    Timezone Name
    """


    # @ApiMember(DataType="string", Description="The primary address of the contact", Name="PrimaryAddress", ParameterType="query")
    primary_address: Optional[str] = None
    """
    The primary address of the contact
    """


    # @ApiMember(DataType="bool", Description="Is this an active contact? Or an inactive contact (deleted account)?", Name="IsActiveContact")
    is_active_contact: bool = False
    """
    Is this an active contact? Or an inactive contact (deleted account)?
    """


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ObjectShareModel:
    object_share_id: Optional[str] = None
    object_id: Optional[str] = None
    object_name: Optional[str] = None
    name: Optional[str] = None
    description: Optional[str] = None
    reference: Optional[str] = None
    contact_id: Optional[str] = None
    contact_name: Optional[str] = None
    contact_type: Optional[str] = None
    contact_image_url_primary: Optional[str] = None
    contact_image_url_primary_thmbnail: Optional[str] = None
    share_status_id: Optional[str] = None
    share_status_name: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ListItemFilterModel:
    list_item_filter_id: Optional[str] = None
    filter_name: Optional[str] = None
    list_id: Optional[str] = None
    list_item_id: Optional[str] = None
    list_item_is_in_filter: bool = False


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ViewRoleModel(PagedModel):
    # @ApiMember(DataType="Guid", Description="Role Id", IsRequired=true, Name="RoleId")
    role_id: Optional[str] = None
    """
    Role Id
    """


    # @ApiMember(DataType="string", Description="Role Name", Name="RoleName")
    role_name: Optional[str] = None
    """
    Role Name
    """


    # @ApiMember(DataType="Guid", Description="Role Connection Definition Id", Name="RoleConnectionDefinitionId")
    role_connection_definition_id: Optional[str] = None
    """
    Role Connection Definition Id
    """


    # @ApiMember(DataType="List", Description="Contact Types the Role applies to", Name="ContactTypes")
    contact_types: Optional[List[str]] = None
    """
    Contact Types the Role applies to
    """


    # @ApiMember(DataType="bool", Description="Does the role require contacts to accept it?", Name="RequireContactsToAccept")
    require_contacts_to_accept: bool = False
    """
    Does the role require contacts to accept it?
    """


    is_platform_role: bool = False
    can_add_contacts: bool = False
    can_share_role: bool = False
    can_edit_role: bool = False
    can_edit_contact_types: bool = False
    contacts: Optional[List[UserProfileSummaryModel]] = None
    share_details: Optional[IList[ObjectShareModel]] = None
    list_item_filters: Optional[List[ListItemFilterModel]] = None
    contact_id_owner: Optional[str] = None
    total_item_count: int = 0


# @ApiResponse(Description="Details of the specified contact role, including details of the contacts and organisations sharing it")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetContactRoleDetailsResponse:
    contact_role: Optional[ViewRoleModel] = None
    response_status: Optional[ResponseStatus] = None


# @Api(Description="Get details of the specified contact role, including details of the contacts and organisations sharing it")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetContactRoleDetails(PagedModel):
    """
    Get details of the specified contact role, including details of the contacts and organisations sharing it
    """

    # @ApiMember(DataType="Guid", Description="The Contact Role Guid. Records retrieved will belong to this contact.", IsRequired=true, Name="ContactRoleId", ParameterType="query")
    contact_role_id: Optional[str] = None
    """
    The Contact Role Guid. Records retrieved will belong to this contact.
    """


    # @ApiMember(DataType="string", Description="Text filter", Name="SearchText", ParameterType="query")
    search_text: Optional[str] = None
    """
    Text filter
    """

Python GetContactRoleDetails 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.

POST /api/contactrole/{ContactRoleId} HTTP/1.1 
Host: pfapi.pstpf.com.au 
Accept: application/json
Content-Type: application/json
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: application/json
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"}}}