""" Options: Date: 2026-04-04 02:56:03 Version: 8.52 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://pfapi.pstpf.com.au/api #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: GetProjectContacts.* #ExcludeTypes: #DefaultImports: datetime,decimal,marshmallow.fields:*,servicestack:*,typing:*,dataclasses:dataclass/field,dataclasses_json:dataclass_json/LetterCase/Undefined/config,enum:Enum/IntEnum #DataClass: #DataClassJson: """ 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 @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ContactDetailModel: # @ApiMember(DataType="Guid", Description="Id of the Contact Method", Name="ContactMethodId", ParameterType="body") contact_method_id: Optional[str] = None """ Id of the Contact Method """ # @ApiMember(DataType="string", Description="Contact Method Name", Name="ContactMethodName", ParameterType="body") contact_method_name: Optional[str] = None """ Contact Method Name """ # @ApiMember(DataType="ContactAddressModel", Description="If the contact method is an address, this will contain the address details.", Name="ContactAddress", ParameterType="body") contact_address: Optional[ContactAddressModel] = None """ If the contact method is an address, this will contain the address details. """ # @ApiMember(DataType="PhoneModel", Description="If the contact method is a phone, this will contain the phone details", Name="ContactPhone", ParameterType="body") contact_phone: Optional[PhoneModel] = None """ If the contact method is a phone, this will contain the phone details """ # @ApiMember(DataType="Guid?", Description="Id of the country", Name="CountryId", ParameterType="body") country_id: Optional[str] = None """ Id of the country """ # @ApiMember(DataType="string", Description="A summary string representing the contact details", Name="ContactDetails", ParameterType="body") contact_details: Optional[str] = None """ A summary string representing the contact details """ # @ApiMember(DataType="string", Description="Notes about the contact details", Name="Notes", ParameterType="body") notes: Optional[str] = None """ Notes about the contact details """ # @ApiMember(DataType="string", Description="Area Code if contact details are a phone number", Name="ContactDetailsCode", ParameterType="body") contact_details_code: Optional[str] = None """ Area Code if contact details are a phone number """ # @ApiMember(DataType="int", Description="Order number of the contact method", Name="OrderContactMethod", ParameterType="body") order_contact_method: int = 0 """ Order number of the contact method """ # @ApiMember(DataType="bool", Description="True if this is the primary contact method", Name="IsPrimaryContactMethod", ParameterType="body") is_primary_contact_method: bool = False """ True if this is the primary contact method """ # @ApiMember(DataType="bool", Description="True if this contact method is an address", Name="IsAddress", ParameterType="body") is_address: bool = False """ True if this contact method is an address """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ContactRole: # @ApiMember(DataType="Guid", Description="Guid of the Role List Item object within PSTPF.", Name="RoleId", ParameterType="body") role_id: Optional[str] = None """ Guid of the Role List Item object within PSTPF. """ # @ApiMember(DataType="string", Description="The unique key that represents the role type on the external system.", Name="AlternateKey", ParameterType="body") alternate_key: Optional[str] = None """ The unique key that represents the role type on the external system. """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SubscriptionContactModel: # @ApiMember(DataType="Guid", Description="Guid of the contact object within PSTPF.", Name="ContactId", ParameterType="body") contact_id: Optional[str] = None """ Guid of the contact object within PSTPF. """ # @ApiMember(DataType="Guid", Description="Guid of the Contact Type List Item object within PSTPF.", Name="ContactType", ParameterType="body") contact_type: Optional[str] = None """ Guid of the Contact Type List Item object within PSTPF. """ # @ApiMember(DataType="Guid?", Description="Guid of the Marital Status List Item object within PSTPF.", Name="MaritalStatus", ParameterType="body") marital_status: Optional[str] = None """ Guid of the Marital Status List Item object within PSTPF. """ # @ApiMember(DataType="Guid?", Description="Guid of the Gender List Item object within PSTPF.", Name="Gender", ParameterType="body") gender: Optional[str] = None """ Guid of the Gender List Item object within PSTPF. """ # @ApiMember(DataType="string", Description="The first given name for the contact. Applies to a person contact type.", Name="FirstName", ParameterType="body") first_name: Optional[str] = None """ The first given name for the contact. Applies to a person contact type. """ # @ApiMember(DataType="string", Description="The middle name(s) for the contact. Applies to a person contact type.", Name="MiddleName", ParameterType="body") middle_name: Optional[str] = None """ The middle name(s) for the contact. Applies to a person contact type. """ # @ApiMember(DataType="string", Description="The surname for the contact. Applies to a person contact type.", Name="Surname", ParameterType="body") surname: Optional[str] = None """ The surname for the contact. Applies to a person contact type. """ # @ApiMember(DataType="string", Description="The full name for the contact.", Name="FullName", ParameterType="body") full_name: Optional[str] = None """ The full name for the contact. """ # @ApiMember(DataType="string", Description="A short name for the contact.", Name="ShortName", ParameterType="body") short_name: Optional[str] = None """ A short name for the contact. """ # @ApiMember(DataType="DateTime?", Description="The birth date for the contact. Applies to a person contact type.", Name="BirthDate", ParameterType="body") birth_date: Optional[datetime.datetime] = None """ The birth date for the contact. Applies to a person contact type. """ # @ApiMember(DataType="string", Description="The title for the contact. Applies to a person contact type.", Name="Title", ParameterType="body") title: Optional[str] = None """ The title for the contact. Applies to a person contact type. """ # @ApiMember(DataType="string", Description="A salutation for the contact.", Name="Salutation", ParameterType="body") salutation: Optional[str] = None """ A salutation for the contact. """ # @ApiMember(DataType="string", Description="The A.B.N for the contact.", Name="Abn", ParameterType="body") abn: Optional[str] = None """ The A.B.N for the contact. """ # @ApiMember(DataType="string", Description="The A.C.N for the contact.", Name="Acn", ParameterType="body") acn: Optional[str] = None """ The A.C.N for the contact. """ # @ApiMember(DataType="string", Description="The A.R.B.N for the contact.", Name="Arbn", ParameterType="body") arbn: Optional[str] = None """ The A.R.B.N for the contact. """ # @ApiMember(DataType="string", Description="A trading name for the contact.", Name="TradingName", ParameterType="body") trading_name: Optional[str] = None """ A trading name for the contact. """ # @ApiMember(DataType="string", Description="A legal name for the contact.", Name="LegalName", ParameterType="body") legal_name: Optional[str] = None """ A legal name for the contact. """ # @ApiMember(DataType="string", Description="Any notes/description for the contact.", Name="Notes", ParameterType="body") notes: Optional[str] = None """ Any notes/description for the contact. """ # @ApiMember(DataType="string", Description="Contact Employment Industry.", Name="EmploymentIndustry", ParameterType="body") employment_industry: Optional[str] = None """ Contact Employment Industry. """ # @ApiMember(DataType="string", Description="Contact Employment Role.", Name="EmploymentRole", ParameterType="body") employment_role: Optional[str] = None """ Contact Employment Role. """ # @ApiMember(DataType="string", Description="Contact Employment Geographic Area.", Name="EmploymentGeographicArea", ParameterType="body") employment_geographic_area: Optional[str] = None """ Contact Employment Geographic Area. """ # @ApiMember(DataType="string", Description="The Contacts Drivers Licence Number", Name="DriversLicence", ParameterType="body") drivers_licence: Optional[str] = None """ The Contacts Drivers Licence Number """ # @ApiMember(DataType="bool", Description="Indicates if the Contact is registered for GST", Name="GstRegistered", ParameterType="body") gst_registered: bool = False """ Indicates if the Contact is registered for GST """ # @ApiMember(DataType="string", Description="The status of the contact in PSTPF", Name="RecordStatus", ParameterType="body") record_status: Optional[str] = None """ The status of the contact in PSTPF """ # @ApiMember(DataType="List", Description="A list of roles this contact has.", Name="ContactRoles", ParameterType="body") contact_roles: Optional[List[ContactRole]] = None """ A list of roles this contact has. """ # @ApiMember(DataType="List", Description="A list of the contact details for the contact.", Name="ContactDetails", ParameterType="body") contact_details: Optional[List[ContactDetailModel]] = None """ A list of the contact details for the contact. """ # @ApiMember(DataType="string", Description="Custom Content XML for the contact.", Name="CustomContentXML", ParameterType="body") custom_content_x_m_l: Optional[str] = None """ Custom Content XML for the contact. """ # @ApiMember(DataType="string", Description="URL to the Primary Image.", Name="BlobImageURLPrimary", ParameterType="body") blob_image_u_r_l_primary: Optional[str] = None """ URL to the Primary Image. """ # @ApiMember(DataType="string", Description="URL to the Primary Image thumbnail.", Name="BlobImageURLPrimaryThumbnail", ParameterType="body") blob_image_u_r_l_primary_thumbnail: Optional[str] = None """ URL to the Primary Image thumbnail. """ # @ApiMember(DataType="string", Description="The primary mobile for the contact.", Name="PrimaryMobile", ParameterType="body") primary_mobile: Optional[str] = None """ The primary mobile for the contact. """ # @ApiMember(DataType="string", Description="The primary email for the contact.", Name="PrimaryEmail", ParameterType="body") primary_email: Optional[str] = None """ The primary email for the contact. """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ProjectContact: # @ApiMember(DataType="Guid", Description="Guid of the contact object within Eros.", Name="ContactId", ParameterType="query") contact_id: Optional[str] = None """ Guid of the contact object within Eros. """ # @ApiMember(DataType="string", Description="The unique key that represents the contact on the external system.", IsRequired=true, Name="ContactAlternateKey", ParameterType="query") contact_alternate_key: Optional[str] = None """ The unique key that represents the contact on the external system. """ # @ApiMember(DataType="Guid", Description="Guid of the Role List Item object within Eros.", IsRequired=true, Name="RoleId", ParameterType="query") role_id: Optional[str] = None """ Guid of the Role List Item object within Eros. """ # @ApiMember(DataType="string", Description="Role Name.", Name="RoleName", ParameterType="query") role_name: Optional[str] = None """ Role Name. """ # @ApiMember(DataType="string", Description="The unique key that represents the role type on the external system. Note: Use of this is not currently implemented", Name="RoleAlternateKey", ParameterType="query") role_alternate_key: Optional[str] = None """ The unique key that represents the role type on the external system. Note: Use of this is not currently implemented """ # @ApiMember(DataType="ContactModel", Description="The object that contains details of the contact", Name="Contact", ParameterType="query") contact: Optional[SubscriptionContactModel] = None """ The object that contains details of the contact """ # @ApiMember(DataType="int", Description="The order this contact is in priority. 1 would be the primary contact, 2 the secondary and so forth.", Name="Index", ParameterType="query") index: int = 0 """ The order this contact is in priority. 1 would be the primary contact, 2 the secondary and so forth. """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ContactDetailModel: # @ApiMember(DataType="Guid", Description="Contact Method Id", Name="ContactMethodId", ParameterType="query") contact_method_id: Optional[str] = None """ Contact Method Id """ # @ApiMember(DataType="string", Description="Contact Method Name", Name="ContactMethodName", ParameterType="query") contact_method_name: Optional[str] = None """ Contact Method Name """ # @ApiMember(DataType="ContactAddressModel", Description="Contact Address Details", Name="ContactAddress", ParameterType="query") contact_address: Optional[ContactAddressModel] = None """ Contact Address Details """ # @ApiMember(DataType="PhoneModel", Description="Contact Phone Details", Name="ContactPhone", ParameterType="query") contact_phone: Optional[PhoneModel] = None """ Contact Phone Details """ # @ApiMember(DataType="Guid", Description="Country id", Name="CountryId", ParameterType="query") country_id: Optional[str] = None """ Country id """ # @ApiMember(DataType="string", Description="Contact Details", Name="ContactDetails", ParameterType="query") contact_details: Optional[str] = None """ Contact Details """ # @ApiMember(DataType="string", Description="Notes", Name="Notes", ParameterType="query") notes: Optional[str] = None """ Notes """ # @ApiMember(DataType="string", Description="Contact Details Code", Name="ContactDetailsCode", ParameterType="query") contact_details_code: Optional[str] = None """ Contact Details Code """ # @ApiMember(DataType="int", Description="Order of Contact Method Id", Name="OrderContactMethod", ParameterType="query") order_contact_method: int = 0 """ Order of Contact Method Id """ # @ApiMember(DataType="bool", Description="Contact Method Id", Name="IsPrimaryContactMethod", ParameterType="query") is_primary_contact_method: bool = False """ Contact Method Id """ # @ApiMember(DataType="bool", Description="Is contact details an address", Name="IsAddress", ParameterType="query") is_address: bool = False """ Is contact details an address """ # @ApiMember(DataType="Guid", Description="Contact Contact Detail Id", Name="ContactContactDetailId", ParameterType="query") contact_contact_detail_id: Optional[str] = None """ Contact Contact Detail Id """ # @ApiMember(DataType="Guid", Description="Contact Id", Name="ContactId", ParameterType="query") contact_id: Optional[str] = None """ Contact Id """ # @ApiMember(DataType="Guid", Description="Contact Details Id", Name="ContactDetailId", ParameterType="query") contact_detail_id: Optional[str] = None """ Contact Details Id """ # @ApiMember(DataType="bool", Description="Is contact details a primary location", Name="IsPrimaryLocation", ParameterType="query") is_primary_location: bool = False """ Is contact details a primary location """ # @ApiMember(DataType="bool", Description="Is contact details a registered location", Name="IsRegisteredLocation", ParameterType="query") is_registered_location: bool = False """ Is contact details a registered location """ # @ApiMember(DataType="bool", Description="Is contact details a postal address", Name="IsPostal", ParameterType="query") is_postal: bool = False """ Is contact details a postal address """ # @ApiMember(DataType="bool", Description="Is contact details a phone number", Name="IsPhone", ParameterType="query") is_phone: bool = False """ Is contact details a phone number """ # @ApiMember(DataType="Guid", Description="Email Signature Id", Name="EmailSignatureId", ParameterType="query") email_signature_id: Optional[str] = None """ Email Signature Id """ # @ApiMember(DataType="string", Description="Email Signature HTML", Name="EmailSignatureHTML", ParameterType="query") email_signature_h_t_m_l: Optional[str] = None """ Email Signature HTML """ # @ApiMember(DataType="string", Description="Email Signature Text", Name="EmailSignatureText", ParameterType="query") email_signature_text: Optional[str] = None """ Email Signature Text """ # @ApiMember(DataType="string", Description="API Key from Framework", Name="ApiFrameworkAlternateKey", ParameterType="query") api_framework_alternate_key: Optional[str] = None """ API Key from Framework """ # @ApiResponse(Description="List of project contacts and customer contacts.") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ProjectContactModel: # @ApiMember(DataType=" List", Description="Object containing all details of the project to be inserted or updated.", Name="ProjectContacts", ParameterType="query") project_contacts: Optional[List[ProjectContact]] = None """ Object containing all details of the project to be inserted or updated. """ # @ApiMember(DataType=" List", Description="Object containing all details of the project to be inserted or updated.", Name="CustomerContacts", ParameterType="query") customer_contacts: Optional[List[ProjectContact]] = None """ Object containing all details of the project to be inserted or updated. """ # @Route("/project/{ProjectId}/contacts") # @Api(Description="Returns a projects contacts (customer and project connected).") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class GetProjectContacts(IReturn[ProjectContactModel]): """ Returns a projects contacts (customer and project connected). """ # @ApiMember(DataType="Guid", Description="Guid representing the object that is the project in Eros.", Name="ProjectId", ParameterType="query") project_id: Optional[str] = None """ Guid representing the object that is the project in Eros. """ # @ApiMember(DataType="Guid", Description="Guid representing the projects contact customer group Id.", Name="CustomerGroupId", ParameterType="query") customer_group_id: Optional[str] = None """ Guid representing the projects contact customer group Id. """